{"_id":"@xdn/prefetch","_rev":"3167-f32cead3ffce2108dfdb3d49a5036201","name":"@xdn/prefetch","dist-tags":{"latest":"2.53.6","next":"2.53.6-next-1641895591-f1d5f1649.0","latest-v1":"1.48.2","next-v2":"2.53.5-next-1641201537-c1cdb4568.0"},"versions":{"1.15.0-alpha.1":{"name":"@xdn/prefetch","version":"1.15.0-alpha.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"peerDependencies":{"workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.15.0-alpha.1","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-41uTiehtkuxGqDOWU9pyvPpMPiEcVbLSuLbIg0hMbN6sz/RaO2fv7Nnv09WvNTFSLTmWSsw63WBfc8dB9Sirww==","shasum":"19aabbd3f7abd1d2580b153aaa5179bc78860c1b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.0-alpha.1.tgz","fileCount":28,"unpackedSize":30534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoDayCRA9TVsSAnZWagAA7g0P/2tbraxMl8BX5xQgfqPl\nica5eR/p7zG7LAn0pHFVjIElTX6vMlenkXOqI8fZ2nB00BZnmPILN0oA6ElW\n19RiUsPejUV479AO3bwXGWFo+sdDTDjKP8KjXALrJcbU48OlYMifRRPLGDrv\n86gEBgF2rnwv+J0K3N33snfImXMkg7pJmm3c6rYxevCjuMxAKgAA1/kBLxij\nIoWINzVH84sbtwA4xngZWap9FepwJaS6JGCS03RneSNjAtddLLQTUzSilj35\nlCLBRPB+Mbcnqi8AktOZBJO7CehtP3Fy99AjjEX9RKL/3KnnjVtlmpPDrz8k\np1xMjuQerioGE/23gCs/OH7ape4EZMF+WUkx7pMoWmolpx4YW8EBGMVuAJH8\n4G0XPEKRuKZvG/mMQVxFsLXRE8BgVanI8WT8sNHEMw01zC0dCsvr3s6GWUsk\nqmRTFVUl3LS5IVat/IdBtbkHABrgLbVTc+YosdkJgSdZtXT6CvkGUgEByaBV\ne1c3tUJLxSZglNTU1D745NxvgsmgvKJ8IunzLchYa5jRwCpyRAHcfypgfcsD\np+W16spn8hPTafygrt41k5WeI88t5IOEosJ1QC21fz0XtCTvdRa5Pbi+UqVb\nG7FoLUlShNZh5GePigWDlAmBN6mT8fsy4Xv5zOe/3s6g9dsubnZvnQwrrqH2\n+/PM\r\n=FQJP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDR28nFfOmAtt8u7OmOS/DU5eGxzqv+e8w6B1j6U9SkeAIgTCWNLUsm1ywfBVlWmB7QM8r4Z2aDiE6xy+d27zQYzlk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.0-alpha.1_1587558066160_0.9896162892426001"},"_hasShrinkwrap":false},"1.15.0-alpha.2":{"name":"@xdn/prefetch","version":"1.15.0-alpha.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"peerDependencies":{"workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.15.0-alpha.2","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-eCJgnZEq8cfXaFVppTDED9ZguPNIp/4HStHbaskHAuFqVZF9AkQa0XVBFvNUmp8RnQH7cvJyTjjc1mwr2x7kWQ==","shasum":"6d5a13b2736afad7ee480bfdf7a7f772db43321b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.0-alpha.2.tgz","fileCount":28,"unpackedSize":30534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoEECCRA9TVsSAnZWagAAFBIP/2xqIie07Y5IhOoFznHP\nbc4LngGYlhKKeAdHSs3Lfe4DoMu/CPG4tRESDHTqyPQOx2OugVHpn38j73iA\n1btnH5l0xYvVYYFsrudwwBU+baU1cAZO71izqjDGVTNKedkDalOdqll6wv3/\nIhQhygWRq5HvWOaEfT0vhP+xStAcWn6G1kUR11VCQYm2c/guVbXSjIMhzIEG\n31rCrSleNTnZqHmkh1jBxlGM6KRkPn7QkBsZ4MjUg+YUpAiHGyqjKBTNiOwW\neOxShcax2yQjPZTHKSi/QmDKMIEnHPO0UKmNaLLlETwn/zizsNvXvwmfL4hS\nOGAtFy3ePZRtZPXQ0qlVH7lyn3DXtb3RQwHc4MlbwkFKJyjvjfx78CU820zV\nUpznSMDqqyPd6uwTjn4Dvy6ShN/AfNTEK9o8XaaSHSk8rg3/ucJ4kWqrsQZZ\nYsMbCouutI8DKToUCQ4WvSdXlWET+kj9IrnfUT9Ni/UohCvvJ82NLdLtNNVF\n4i5nRwspbootL4AIfUMNYjItj4PO93QDkUJrB4wx1UnJQRwHe0eKTY1SPvBz\n8xYK3rLMtdkZeVr5xN1UUNbT1s5HPK99TaNeM+ZVBu6Qr+XussJsQhuYhyxa\npl0kG0Pggc1gupMeiJgr9yp51wd+V8JvsJg+LdTCwMHe2b7cLQiwrX3QqYJM\nKEsB\r\n=PcJS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGDy0JDF56MHyVNq3Oy7CbLidnhPzd7WHkBNWyIoSLQfAiA+CiqscPfw0aaV/4ldcONydqaZ8xe8x5NffIOnN8EB1A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.0-alpha.2_1587560705582_0.5154771048603013"},"_hasShrinkwrap":false},"1.15.1-alpha.0":{"name":"@xdn/prefetch","version":"1.15.1-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"peerDependencies":{"workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.15.1-alpha.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-yanzD2Vjc0q+deC6y3qZ0Am25kYK2BoYRd051n0Ew9x6RnHu4fyzlx3P0Z5oJAULtitbPvrXdvkk46QBPzwVRw==","shasum":"58908a7456d4b029fecaddf8d6d33d3e96c605d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.1-alpha.0.tgz","fileCount":28,"unpackedSize":30534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoIwWCRA9TVsSAnZWagAAxAgQAKMolZxQcES/dmYaBRfj\nqA6TbSpTxYR+O/0bKqch1gG/Qi/elOL0d4ro7qrYgImQGiB43g80yIgzAohd\nI4I85Hs1SGEvbdgGNnfcmJy0ycVaCK80keEQuvIDw38/+7j271Zl4nr31ViC\nx3hSMxtYL+7PHVf0xm4Lsx0sTaWJkeDDwzS9YpKpHvCDYnSaAY3P6ctZIZ5V\neVRzLYDVsvRenJY1+Fd925mg0LgomTQtT6zgTgBBCwMxkLUooMG89x+Z0ND8\n/cvSCHogYJgK7sAcGcYkm2HNVNELrBYLOk99/Qh9Uth3ws+IT1VxzK67uOLZ\nQyGQxQNK2uCSPm7Kym8la1dZtMRJOzqURVAEG65ic8l1nEzjRlv2VMYnphjq\nsc1YpyrVQyKXI9TLvcqI8FfmgRi+9CbkbxEVq7vEiMFVjRB+A/zQNaOU3wKf\n8O7aYfGohSPeogPke/IW0STNKm0y/rKwgCCI9+0j+n74DdkWKOwdEeRaZ2AL\nvzLmCMfVhK8rnegB8DyYRgWKOS1HX4tRhNG/jSa96BknSzqFzXIb2ZbgYx25\nvSGNMhJcetQitJSXujHlAYVPU87if81RTQx5uCy6Xu3Au9zmMWUXZNlQW54D\nVSX3/JwfmPgG/0jxSi9YT/ebZW60SZalqN52iMenJd8ctNhrNe0tqtRH7DqK\nnE23\r\n=T/oc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUlnmXofWQw2NgSwuogLFTeUNvqvi+UWjOuV5MQbfxjgIgRQmi8lRzraUyCQxxE9g80nK3SHJZ1mhiv40UZMGBEaE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.1-alpha.0_1587579925597_0.441050878738926"},"_hasShrinkwrap":false},"1.15.1-next-1587590168-dac37a32.0":{"name":"@xdn/prefetch","version":"1.15.1-next-1587590168-dac37a32.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.15.1-next-1587590168-dac37a32.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-VIQ4MmE5TdarLt97q3dW/uoXyUEQqu3SlaBSeAt/tCBIRE9NHqZcx1SQtuO4LJUFIfnzbuwnfnxflgi6/KUoXQ==","shasum":"37438baeb68712848869ca3af336a2f9367187eb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.1-next-1587590168-dac37a32.0.tgz","fileCount":28,"unpackedSize":33186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoLRRCRA9TVsSAnZWagAAmwEP/01sXK8iCJMjnZeqsHEz\nYrQC17D0zp8ai0L683Zno+gO/KSjOvERBuc0VNM6PJVnBMH2p4ciC1rxes9e\nr65mWBYFgEEHSDdH1QASQjYztmUs8ZSOpdnsF5+jJO8ynNNwW6Yz5dci0SQE\nOwm1AKThBckz/Ml7NZ8Pp3pfhACBgkgxMcOUjFLtZHpdaPNiq8bPcCzXsFZ8\nNeGhWp4UZ5d7r5KnwWkFaYQDrLiSzR0XLDAozpyajeZUAoC59/OeALpenX+o\nQAj0CtXAXHYtTUkl/bQdhtM+jk3XuyqzC7QIaRdcsGDacAaOk5H8MwZvDWn2\nWvG4qRXMGx8VnhAfVrr7kry/3rTGSTo+8iBsJ80g3P8Kh7G3xAmueagT73TK\nNxBNEa41og3Gq3hx7OeHhqYk6N/M86vMjy7q0spNqKF82YoxaKoPBofnvX6O\nsym5mTKsSNA2vvyUwrFo+EZOwJoTsTdUoJFqX3bz1iG9rH9CF7U4z6yw8ZXY\n8iNxbd2onoLpQxDTI+7Uw04XyTOV9teEBSCsAigbigwvQyG+24W1urn7gtzN\n55tOJTY+EIV+2jrHZDjyCyQq+7njS0qOwqCJIepAJbRyZ1sFFSPUXGoieRYu\nP38GPCbCx+thYdY0t+e7+aT0Y3E3I4nxWkdVqIuCiqjLO+J5aoz5nm2A8xCm\neb2e\r\n=CMwL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFFd2CRu+33OFtOBo+sMoD3Z2UO1zFNfWa1itAbJDa3VAiEAwIcZ6dt/KyVl12B1fkr4Bq2NTHGlZtdGnoVL7yJNEvA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.1-next-1587590168-dac37a32.0_1587590225205_0.034939379834371564"},"_hasShrinkwrap":false},"1.15.0":{"name":"@xdn/prefetch","version":"1.15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.15.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-RoueJ1zXNgN3BH+Zi+Hl3BbsZdO3O1Oc2xlRxx44QUexgS4Ej0/wGqd28rSJYintFmfOwLnLW1WLFsjgmFKqvQ==","shasum":"02f137111d08093ada55b3c878b64bb877c7c64e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.0.tgz","fileCount":28,"unpackedSize":33159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoLTsCRA9TVsSAnZWagAAeMIP/ioN6iFNCctCOb5lSW71\nf3TjTs1nG9rUL5V6/HeLdnERnu4CvWgmz536qUvKQTsbj5gaONF2N8opQ28/\nfwOslo1mSvzAsLFjX9JYHoLxx30sk/6k4tKuhoSHlnGLbKWwkngupsWxYNYf\nddmFhr89tJfLITYyK2u1EYG9R54W4PHCiK4MdsAouoA7SYPBrsqREYPIVVA+\nJCbtJhrX20bwMpnxiKkIkse5sO+CmhYIgURFUNjDNsqDHobCQy3VODqNln/E\nTNa16NZlrOTUj9f2W1s0aZWo5MiIqhKPceaP2lBsdQ7pM7u6RuQwzYGZaBC5\n+2ediPvWNx6GZnFz9QDnEjFo/EOZ4IPPjUUIeUYYzf9CP7Rh/NpNRFZda0kD\nRl2imSzdAslgv+aDuOGFjEM8KZnyga7CCRfWEYx+EhQuOW4p5+af+yy2v71u\n7T+abdx5K/jbQL9EbIUHa9pbQLyd9uuwaPKWPFlGSkisyCBe4Lc6/ERINSNf\nsU7Gx+UIMy33+18+kMUkJd9cs/eXrE/810Unr6hanQQC4NCxNtl9smo37jy4\n0+Y3uPqvZpxIcbdwJpcFSu/CaDo1n5zzNLEt7OZxRbx9earsz1SDHXnmsuXN\nR9qaqIQcMBA/fQSKuZKlBTVjzhZrymm2yjOiCBV2geu2XUqKAHHOmwIPIxMZ\no3iE\r\n=UVH+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8nbxWTele8+pOONQIGSxyNj+X/u4lWWtksY6bcAQqTgIhALyYkah5E3yb0zww1c1BaTgLz8FP6vp4AF+qX9m6rMEg"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.0_1587590379768_0.9009317157654808"},"_hasShrinkwrap":false},"1.15.2-next-1587646706-e2a18f10.0":{"name":"@xdn/prefetch","version":"1.15.2-next-1587646706-e2a18f10.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.15.2-next-1587646706-e2a18f10.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-KCufvv3ICyjhcm/DmsY+fDQNVo+6hQ3Zd0BIAud1VUhLrLl2WXyisxK6UboUCPoKPQVewtLfvvSNMLXfR5v4SA==","shasum":"eb3a785f414427422f5b08532ae82c356ec48f1c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.2-next-1587646706-e2a18f10.0.tgz","fileCount":28,"unpackedSize":33186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoZEoCRA9TVsSAnZWagAAiBYQAKJ5+2aCu/gx2DUkBRP7\nyZ19oP3sBl/Vetul6aP4Xb4YaijZjlFSWLjAHvDv58EAfJhtLcsf3srFcMm9\nMjHei9GmI83MRG9zId6+m9TlespuZg0dGXVtR1wzNc3k4K9L6Fa7Cbo4lONQ\nPxRzB8ucrnX4RHZFTgJCP+GTbImp2Eyyy0gvAEe7e/agXcvofDh0kV4D9Uyk\nuRUh+NdJKWxzHcMIwuPJUpjsHQhuV2rlLh3p0Cvv0uNytCnrm7jjuy+M556f\ngNRWmkjNbXpzQw3uJuAroXmM2iNrLFcwyyeGDjX6CcziSfmyiAXcGnKzeB+0\nuFrqutH2gwtAqxvH49+s7vygocGECE19Au27hRVHGSz+YQ77h4g6TYi6Xzi2\n7gD0vrmT5eUQomBD0MLwHQ2YcWSetWhIHSeLbkU/CpiErWaX/8Tx3aXIoR8G\nuFPSxk0fMT5VvBJpEU14PK8f3MVqtWRdQqKgJisjfoQqnBjrXeVvZuWn4esT\nn1ppzcUow4M1mZFCTzTFv2WXjRB1gYsq3eZn3tgFgLYJ1vFFlbahZfhE2DW+\ngB/g3HlUd+UP+5arb/BqM3ff19gMOCfTMHaQj47Xo968YBhr3cvUTRTQBVuV\nn+KQFENVwz0tm9RUPfUj3hi5QjOqo1Zo9jk/gdT7gI00XuhpIP7mWe/OJuGo\nu+WJ\r\n=9lPZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCdl4wI0goEstnV3kKRp+bLkFmcODRH8A5gOYTolDI+QIgKOn5GOddyNh3WsaubH9ygnWfbubN7VNKLLcVBdFyOqg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.2-next-1587646706-e2a18f10.0_1587646760116_0.6008988491962297"},"_hasShrinkwrap":false},"1.15.1":{"name":"@xdn/prefetch","version":"1.15.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.15.1","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-6OC2USv7OhjFeQsvePFJcRcFhX2az82O2+dtWfSCdFIsBL+TCfTcmC0fS0G25t4xxJYxqo5UhehSMq0KYyGoPA==","shasum":"6be8a8a9d4ee56dc44b1dfe7c99288194824a58c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.1.tgz","fileCount":28,"unpackedSize":33159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoZIoCRA9TVsSAnZWagAAzqMQAKSC1cVbncJ49578qx5D\nfCSYQtVIzJXV5iihUjo1AxQWfnykcu4+d+4BZZqm1SCFoAxAItnfEw5eKk7u\n64jPMEfh3/46v2O6WlyM7V8Gv/Bl5XPn2JmM8y4uYSs65mOXv76VrPiGZcyf\n4lo5V6O4a8pSK6U/svjZiX060DbT1wKPmNpjwbc3y2QBaJ/kA/F97W9kHYWf\ni1AwQGQ29+TLCHBP+PPFF5vW0iUwp9wqO7TUMMm7zwd+RkPjtGejLBdDbAqP\n5CrKYhTrJrPcUOnAEL0nrvxwqCndZKAMYqxV0lvY4yDHEgjN4yQbPeRgvOLT\n2M4CEtcJ+rSWQAHV05i1Txeu1Z1in+F4wi8xwWdOrRtUcaah2AEkVGAieI/C\nr0t2K5IoX7ZMU6Rii7jsesIe5k8Hx6BIqgtYzo9fygx2IOURIeVWh6UqQ0TK\nwsydYm+gk47ONdL4MVI9hhmXPUa6WIBwSonGgFhuhuUWUoiqyU9GcaOwU+0A\nE+gf5+KoXlqPvzfbDUim3cxKpnbI5t7PC5P+XzLMtwUQ+HyWGPPnal02CLxZ\nB7Zf6iZ7hI7OM2pKZAdEh7d/9daX8hWuV7ulZz7rtfnsrsGNFyiSmOaZpIPZ\n0TfKO76ulKi27o66CvmVf2Sa4PU70xIOKSEvS4eRsqEJZU+32rDR2fPeIWaW\nlSE5\r\n=bOAn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYaUJz1dmyVADauomh3fqv+9fS8E8XHEl19qrwbywQTQIgZt/XAkkVwJW/ERnUfy/neyiXPKvD3ds090LeFPWt50Y="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.1_1587647015622_0.05379627704130563"},"_hasShrinkwrap":false},"1.15.3-next-1587652580-cfb5090e.0":{"name":"@xdn/prefetch","version":"1.15.3-next-1587652580-cfb5090e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.15.3-next-1587652580-cfb5090e.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-zklhu+ZadZFcs7ULVYtzvbbx17NOAyz++fzsrgdTYIV5UVF6yUu0iJ2zA9B3x5Ygbzd2vvAfCgign7XpbP5Lzg==","shasum":"69d41ae28a0c1cd22defbece3a06cbdfc066ad04","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.3-next-1587652580-cfb5090e.0.tgz","fileCount":28,"unpackedSize":33725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoagdCRA9TVsSAnZWagAA7FUP/R9hjd38JX2VYXN6r3U9\nFAvKXsXZ7SVNYi6gH59rOUjPrR2p/rUzVeS0UO33N6Tzi8gXzXLpfcDMTbxq\nwAVQfLzk1mu38mQZ9AZqGVlai4jdc1crhpwF029PVHCcA20hJRpnvCiGHjNF\nW/qxQI7I4aRdZpx39HwnGt55esN+tsE/qGi769QY2mo+0d6Ny86bhsklr9B6\naHw6uprEk3pH35aH9V1Vni5gJsYjz3kc4ZBaZ1u1NMp1rkyrP4Y9IhK1wUk9\nt6X8OiIWNNua+rl5s5sV7XyftG2TUBqNO8V23t/EMUPxqY3r5uZO9+rerIb9\nvm+CyqRSB4jvRDd8xHLad48/QlTTbPohEMm4cDEuHcuMBRb6tEz0Ti4luxdp\nMORRjtMsDzKsspq9VBzv5Gs0mUswZP7eIdO0Vo8MJz+7YNm7mFDTbyG+5V1O\nqhtey0k7+34o//Vqc/foaFTX0OshLAdXDZe/LgWSVrA1+5e7moAeYxjb5FGX\nhiCjdL8/7B77b7LoALuYnSGcoharBtTkT4EeTAgF8veh4XhXeFpKAHh/aa6c\nKjxAebDXbjVwtkNaLzy8kefhOJDB1Kq5l1Gq9TVKOyH8xNiT8CrTvf08OYFr\ne2MKcK8Iu/4mK56LbOrFvyc5UUVuWe+tya8vg41Ijo/1QpMDqFLY4y8HNsZV\nOYRg\r\n=FuZ7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+l4aRf7ZorvROTQ7jGXKIKbMk5A6rVggItZeB/BkwWAiBHV7M6a6fzuFR8admQshoIHKJ9CtZ5u+n9AafkBoIVww=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.3-next-1587652580-cfb5090e.0_1587652636559_0.26026114694814817"},"_hasShrinkwrap":false},"1.15.2":{"name":"@xdn/prefetch","version":"1.15.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.15.2","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-24PALUX0KFxadCcNdsG+QQQFJgxxLLrKlWvrjX+VfKOgrxDGE+Bfu4LojI9N6Lkm6OzY4XykVnLcBhz75H1ouA==","shasum":"18347f28dcfb89d8ce599ccd9d0531a1a5d27d93","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.2.tgz","fileCount":28,"unpackedSize":33698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeobtpCRA9TVsSAnZWagAAxCYP/iZ1xaRlJ+dZnxiKAfLq\nGfJb/AlQYxZ+uCxCqGk1PK2Vy2aGcCFBMLsTjIr4ef1K7xXsXsHfCvmLaUNo\nwP8udlIzxJm329wAshAaKjPI8HU1OgadSRIbOymYiAsxSLg4wwJTrWqeDwkt\n6l6/QCVyPO9XEbmpuU6GhJYarPfhR1hirM8mrUf4f/W3NzXhzFUhsxCUDTB5\n2jaCfS5SnJBTDE+RgvyKX7Z066+Y8RbT6SYyldIy40Xa5KZ1NUeJwDINDefH\n4UJ401tf+wI3kVfKkS12w52rGU0iWkKyxLrPyKHujeRxPX2JUQZn/VBdlEaG\n+QML9ltGuB0X68xd2uYIki4PmBtdpOm1FCq757jfLvaz1fN0a/mXYzVKLDPm\n7Y0CnEwKcFbNmbJVpAb9hQ2IWoMTCkOpL7YCWR8ZRZbsBoxeSE4h5sWkUS/L\n2ILyo8Q1USRZ3kWAEw1n255ZONqN6JEm3T4mPFOz1qZz6q6zOPVmvAWTW6e0\ncNmJ6o7xxUwMsSZUpH78hbdQrXoZ+33diaEBV6V7COIqga8ob5GLIgGwRbuh\ncs8d35DfXe6mVtp05GahOsHkAvmYG+WYMHs2TYcu0LLEkO7pkRKVxxt0ecCg\nQvL53TlO3Ocl8RN21k+hXv1/py8nstx/UoC4+ycZG1ytxf8sIE1pJYGaPTI5\nVZGD\r\n=ZEbs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHMohAO4jNcVrT+yR6X6Xvyn1Fmyl0BLQPf7cds0lZfnAiEAuqMIncZVXh5x41Y0CLf+KJSl4W6sCcWTf2qB2UcGnao="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.2_1587657577214_0.198990113756758"},"_hasShrinkwrap":false},"1.15.3-alpha.0":{"name":"@xdn/prefetch","version":"1.15.3-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.15.3-alpha.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-nk4x1WjCSyLWuW2AmbSmYKYoyOrqpMEz/WY1BPSWQDnME5YRQkeofb5gFnqMas+xbKpN0ZwgTh1jsjCEtLDCMw==","shasum":"c7149d5fa1576fa6d667420222040e5f60bc9b37","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.3-alpha.0.tgz","fileCount":28,"unpackedSize":33706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeob4/CRA9TVsSAnZWagAAv94P/Rz6WToNhyaj9fSGT+ND\nJEYFZdKhZNgSQ6dEYnksIWgM3eHutdYMO+ajhfcHkWq9+9Ul4vnjwlUe65yY\nkYEK5e5XYjNH4z98IRGl5qSQBV0VXoiEa3fC1GSdWlMbOwOCOC4rmMFFvHFw\nUqtVv9wvjxQgExVfULgaLVPyTxOAA4sWf3Q+vMCqPDLuCkvSCBfxIPIWNcKy\n4kHDARcVUHj5Mzq04D3LNPIPjYEES1vVruKzf8yi/fPtwUDH8uXVby1rdezt\nIbMCEvqVo3BDLBnbEocmB6iyaTbglMShkRAU7z9O3kYbmYKhPt8MloZ6qiqO\ny0fNDdvSh83GZKcV2IgTIjlrNCCyJK7byJAWUysSWvm4fcxh4HB2Vluwmsr2\nVuFg98J062jhosDg2K/i5IsH0if/hEELARqMeX2tczees8m61zK87iJfFeZ9\nnwWHqbNNeezrHUuyEPThtkFUtWQjIuA/wAaEDgyRkE93zi893+PckaigYX65\nRcbYYz+gXuyAkkM5MvZyCx13vxriFx7cCkneh81gUijVACM1mGWFDAfl9P6Y\nk4HN4alxS6lskdfdrBW4JfK7x4OeZFnovpH+qucdacDhTAT9/uEMEwQbsWaM\n6tuO9yJlEkrKXAXGgXAWJpVNuIPZgf4kDjsqGkXNwJ8oj69LxCyk6+W9BJwl\n5huX\r\n=U8p0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDzp2fM9aQJYluyi/k3fChE9z4aW+ibWrgHItdD4ySk5AiEAkUXCsrOAErHNuzdRWfRTEVBLQ+TfUaHtWPaApE7UsAo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.3-alpha.0_1587658302788_0.47673415950639875"},"_hasShrinkwrap":false},"1.15.4-next-1587663083-08c99ea3.0":{"name":"@xdn/prefetch","version":"1.15.4-next-1587663083-08c99ea3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.15.4-next-1587663083-08c99ea3.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-JsjHNjl+8tmJJB/y0npgIvPDUo8mJuhTnUTYZvDbNniFexBzLWIEP9xnQk+3bALdkbPCzwEM9Ca1Ndz/ZlbGgA==","shasum":"5c4417ffa7bd04895a9c2adbadcf23b90eefd6d0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.4-next-1587663083-08c99ea3.0.tgz","fileCount":28,"unpackedSize":33725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeodEgCRA9TVsSAnZWagAAAJMP/ixV2bFMM7riFTtuMo3E\ngQEdIjEkMH4wUERoLtCTwvGKk6p11ayMfiO/ymXR102bjcxeXGVDTCZGEsYb\nomTjn8ZFqF9/vB8nLBEIQZGUS0t2Bz82HX+jo2KrqVlDkWECZXNSt4SN8SUm\neGnK3TASiF3U6nqbAHJ0cQcFj9/8RdF9hxLOKZefmRQbKKiY+rih/dv1jiH3\nnlwW+DmAB8fslJ7q7LJvmjin6Zmtk9oIqHcjCN2gT0P882E1dI23ZYRcvdy3\n5DITglQ9GE7Zbt+7avqzjA+GDxjAvjdGsNzIR7d6FqN+7kbaZhNsLrqR2JLX\ngnDpq8a3kl3t8iLPV7TpScPgaTIrxd/CT/t+VXtMVg77yrGd71QIbuB0q3i+\nArYco2hI6vSHLhDzWFC9lrKY6aTFpka2So6hK1dWY52rSPLzfeGEU10xFGY1\nLak23DLkegWGVwcc1lQkRRl/gB5S2dh8A7cIfSihN8x99UhEMoUhvqZU50+J\nv8UV3BVTQ/sw1TkN3akhtOkC4SVdn7IHK2ZEgGLXyQabzCCW3DhK1i4XESaN\nYjWiF1k+7a6Yqh+RYz0hGlHN9JoKR7chPGnSX07cSJTYE8bVQLkrljwqfFtq\nayp6t9/Unnxjwaw96BZ4cnS3Sg0b2xvupXOEpACzZSflLwCVqD+CTyISQ4+U\n0cdi\r\n=ZFsT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQpkVbF6sldjKhsKW17dDPG3xPO347+C5ubWQ0k6YpawIhAOnuymHxPl1XNjaue+ImnLxJpnGCFxFwEuZ5zO44tOGl"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.4-next-1587663083-08c99ea3.0_1587663136466_0.49269862352355553"},"_hasShrinkwrap":false},"1.15.3-alpha.1":{"name":"@xdn/prefetch","version":"1.15.3-alpha.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.15.3-alpha.1","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5h03t8bZNZvavL4yaKQPNDeqQZrWSiu1JF5Z7/jyiDiSD8dyRI5ElBbNr8IlDF+dg9L3R+0DOFX0qcVUmZDlFg==","shasum":"7e9568f243a94bdd65310993ad7f0519301e93bb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.3-alpha.1.tgz","fileCount":28,"unpackedSize":33706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeofvmCRA9TVsSAnZWagAAG0YP+gLFdjHY5E3jIpCmZkKJ\nc4HcVKvrxxLZtmKYaCaihJ7uncm7JmxPHyZ/hwvmm+d4f1dResLVCNZ972Rv\nkn5F3Te4duAVINMyNWHL/ML7ZKMP4t5hBfsqXW+gmyZv3UQHR+ONcxrrqwcZ\n+beuGbNZklU4qva/U7Bm6Gq99qrR/H4EXX8JClI5a0o/JZzNuKzpn5YYv8Je\nFzZSpAtnn4R05/CP72moCvwKx7deiGeTqbr/w5JMICr4SYTBQFYQHmgTXAWg\nyM16YFLKBhZQbIliGpuxg8rO6HkAUFCUq9x47ISJXA2xGfFCNOQgOG0DLabx\nuEqNVK8PguRfUOhTPXGg+hGn69uai3XkkMmGXsHODHTDNAPrLYtm0xAbU5Q8\n71c9HBn8a5STuCG0Bwf3u6hxESsiSMkgqbJ4KsXFv8b5PtsFUfiVwjdKMuT8\ndSxUVPwcfQ2WbNQQIKOx6iFKWylib7nVW3HuNf5pmweSXSbVnCSpgwxXZLzy\nla1VLpTsHRTswYDs5yI/hJazFx3ZofmgbWpoBkD/588rWNRf0ZZiRx9+D7r+\nluNNDkGkiTN5tjvW4B68UXNHbSxvZOkigx0lujUXCoGh/ElUAjNb/qb0EdET\n0c7U17qjAn/NGI/i1R9jHklBy+jhVtYzKuW4oI5svnBouzuJX12ZyaMtrAld\nEnsL\r\n=HkHf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFu6UqTxPsWmY+Ilekl9sriYnte/XxEr/CIeM+/p0sd1AiBabdn4+NMjhHNl86DIg4IMjcAfvQl0a5HTe2caOPtT+A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.3-alpha.1_1587674085954_0.21319813229644358"},"_hasShrinkwrap":false},"1.15.4-next-1588004033-f4ebeda1.0":{"name":"@xdn/prefetch","version":"1.15.4-next-1588004033-f4ebeda1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.15.4-next-1588004033-f4ebeda1.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5nKlfnauKn8Rv6zYChWk0yVdAgXiOyEjT3VfX1bc5QGKl7R3r73iEnZSgH8RSXYrNTlni08/L6A0SYKNgpW9Ew==","shasum":"adbbd65ff62a7b4330248afbb2be97a80af46267","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.4-next-1588004033-f4ebeda1.0.tgz","fileCount":28,"unpackedSize":33725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepwT8CRA9TVsSAnZWagAAbU4P/0+wEzpCxH+BmNZIV1+Q\nmo43dm2TukaW89MpJK88XaHuSazA0ggGwM5y5npHa7j+Q3rA1pLQgF2oJFJw\nVpLU1hAIQwvu30BtsYnt416XTn85RII331Yh2YNBAovpgq2zhnS9OvCDfR93\n7rmVvhvis0D9e+O9OyWze8IIT8uBLdtBFNrl9dBajQCSdPh5lqLLcu5a/FLj\nbzEw3kZVv4TOzW30CJEZ9fwg/uu4oXCs9W/DC74Uo532ZDTy6cNKgF0RrN6L\nLtgEb3Ixf/bBfhR0rnCYq+357U91ReY/XwhNN5Q2ce428IU/83YtB5dRTk1z\n3zcUf2fbWnp/masKk8p6UYx+H8ehQ0VDtTlJL8YdDR/IgA5+fQsvTyETUWDd\nf++X5hWZedSOnFkOAWaB6xcRZR2n37KNQkxvkOpAqzZo1lySlb2udLzjE09u\nMj8oJJ+/D+ZxZCv3Hib2VWjAhlfsp3kgdGbX0mJf3y8Rzobr+Q02EYvl8Eiq\nbVYmCnMqnGWOEzW5LT4kCLe4jd02FMH9a8GF/quBTDTu+RkRK5Z3m6rfjqVA\nLiqRqA75ql7ont9uDl3KyvzNgQJBaGakOaKofjvysdwwAUuPw7H6m7Yyke4y\nGteRBsHbmV53V/bF6jD0rTgW/arCC1GjqQuF1OZrG+x2AU/pbbwfZCgalhv3\nhe80\r\n=G+fB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrkOC4MNZszHqeEGsYlU6OVjth3TzIbKf7Zn2EUz6jzQIgaoUZAiBElE0Xo4bZq2j7j7e+Ugrkh35EcaqIat+nzTs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.4-next-1588004033-f4ebeda1.0_1588004091547_0.8147017210724639"},"_hasShrinkwrap":false},"1.16.0-alpha.0":{"name":"@xdn/prefetch","version":"1.16.0-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.16.0-alpha.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-v4kDF8V2yEzjn5puuMMq4jGOS2wPYOp9dXp0uGICe7AqPU6Ybk0vJuM6NJhfWswToOu0dPU98OQJ3jqM0Vg1TQ==","shasum":"b775e210b55faf2880efeb3abee615f3917edc91","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.0-alpha.0.tgz","fileCount":28,"unpackedSize":33706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJep3w+CRA9TVsSAnZWagAAc2kP/jE996m5Lx3Fzsr6rz7w\n2DKArf5yhLE+I6kZ/NNRKuudplVo6q1o6AppU5UTP07+z3wOzikzwM+2NTQg\n+7wHTHqB1p0FG0HOEm0oVjukiR9oyW1ZXxs+eI4oMhCVxfmQnM1iMETvmqnb\ncjgQixtbLusKTos4ZTfIHzOj/hUdYc013MJrvpbADVFpaDdvw5RmTkR6p///\ng2OzkJrMFDz6DYXJoIioh5qk9ylhBO0gNWb8+rHFoo1Uy6XeRbU6xLln5asZ\n941sWnqzWg6JnQhw1PPoyEXtxqSKRvE9HZ5ngaxpfXSqWxC1x7bRF36gR0DD\naZ30v7Ya2crynQsBV83u/L6507M92e4O4/iNdW4CjSJoYsreiwUPoBahtesB\n3hlQ57kQqAFSzL+KEAUFFNGYflrh9ya8RziWVAsJ3bOfZiDgPX4yiZvA1or4\nJHz75S8dVoBaqnSbGC8htaW5quiTee7+DSoilD7KyfiDec+AtrjfM7qCzNQB\nfsc4Cqyp8L46NYaWl+LjTMY3G2droEQUsFn3YPk5xvTSfAQqr7IjWdkdS/Ku\nvBvKtSIuUlUSihJ7dthIGBysk5drlq0LKqMeAztYfbdplyOIQPYMyLNN4vA3\nLwNIQOvSaogoKGAh0AEnXpsK2sqKiGLmkQfT6va76qnQVggwQpFTSwQe/N1Y\noLLU\r\n=tF9Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcp0uKkjk1y2eMmWqWoFRm2aPIK9mIZdJWcvQzsHLNBwIhAM8vq00LDa1agaSUTqDpP2cKyPo3TWOm6qxwJT2HxTNM"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.0-alpha.0_1588034621640_0.8737022457301764"},"_hasShrinkwrap":false},"1.15.5-next-1588089497-4078ed54.0":{"name":"@xdn/prefetch","version":"1.15.5-next-1588089497-4078ed54.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.15.5-next-1588089497-4078ed54.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-dl5SOhUjwlcVGadtNG3m8w2fg3dE19Nu1Pn2xKNaPbY7JMfyesJbszGmGUCCWjI+94wfwIKwzdxRe5cQAhFRJw==","shasum":"210605e28a392ef51552bf3d84acd8a9d3a0791f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.5-next-1588089497-4078ed54.0.tgz","fileCount":28,"unpackedSize":33725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqFLWCRA9TVsSAnZWagAA734P/3owftn2jwdG0catjx/J\nnw5Of8xByEIXODNzFMk+okKb8bYpBhz8eW6kU3zBO2pNx4sNv6HmZZYGibR5\nN6XfW0JoZcGChdSMq6MrVkBda1OFMyEHyp/N+3Iv+iTsEJCVI4AF6bZpNjQk\nD9/lA793D0nKic94LZ9gTdsTbs+Jz27S8jCemQX+5SbMCTY/da2OKxUpFHmt\nALYXExzL2U6Ejh75cbMZ7wnL5fQqm8PQjwooVrRutvK7l+5vg77+xK8dzhY4\ng13plbmJbTJaOx8XZTZXz/7oQDdZCLSuQ4Tu354c1POtVrfxHcTJw7L0UpaA\n7ZbZ7nkUTb0t20c4Ksp3MiVzr8KzO+j1od3SbcnXyYq/RDaxbY50jTe/MLCp\nXh+yveRDJn/1UeXdAYw4y5ONdyLkbLLfcsGBkUveTreQ0vjuMeu7SLge/V/M\nMU+LYca403vbBTjBvlgcqeZeopdtq+Kk4u2uYdCeLH8ksKp3Y9//6usKs6sw\nI12kNpFL34RVulY7tG56ws84iQ4Yas+kirp7kQvoRs/D81+Zk8qP76bSgY99\nIJzpBblo9KdBEFHYwG0+nStiYnyqSpYhPkDq1+IlAUAiLJRFj78G+cTKgXlU\nrLgJuTRSOkWKoVnT8XwfqavFwi2sv/YwHS/ms7mZ0WITPtmrZYZ8yHAUl7SL\neR69\r\n=9Uzy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeZlI8S1+RLLg44hc7t+6jxeY3bilK02haJN9MqDjBhAIhANvGWpzMCqjiZwo8YAPi8ojHNQNdNF8gkwNTWDybFV8V"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.5-next-1588089497-4078ed54.0_1588089558246_0.5681039879704362"},"_hasShrinkwrap":false},"1.15.4":{"name":"@xdn/prefetch","version":"1.15.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.15.4","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-CrZCrRXZtfQweyht0oNYENGKIC0xiYQU80AfLHfderdDDriiUGok3kUF3m7v4q7lgNdqbzH8+RKmpnuzsDiMqw==","shasum":"ed4404099c2bca4ff49ec3848d0453e7c404187a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.4.tgz","fileCount":28,"unpackedSize":33698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqFM0CRA9TVsSAnZWagAAuE4P/1tjNFOuZKLa48R2Ta8M\nKEO0sngqhNkVbZBff827lgs0H1iUTsr9v854WzC3qvIJ9K7hbDDW1uYvZEtN\nawpsmvp5NWD1Ae5eYo16TD0wnNqzeaEJNqzZ98NxIDjbmR68S8G1He4WvwX0\nAPJPH386ADoZ27DCnXg7T/JfVcWGkQxm/jzyWbHVgGovo9VTxJ1Xd7NqqpcE\ntwmyaBEk6K6kJCGqlOUC4wSURq2pYTKNx/il6OPXhOmddtC2/u45MyLuYwyF\n8T02kcUEPVRhkDn8/Dkouyu7GyCBn9iIODA2cqSco8xgVOyuJl5rNtwAcSt0\nHZElfa3wpAiQEUs/xOzs/Cm432zSPy9ghMsBIcNYIucslSiRc5U+sTUt204g\nfUQS6RNv/PJ9yB7N7rjpdyc36qGTBldLoTUAEmTBUa5TqSNz320Xsev7HWry\nDR9C9WWJMmOzZnwsmBA7kdlqZZwsOydrNpvlQI1byUUl5bDBs4+8Wu4B2tOi\nOHlSuqt1SZ+U4ZeLrW9EVuuBPIiGvv4MWKQoZ5PgO+NKWqYxtCTA2ftBjvWG\nPMh+4hAF5Mw1YmnQDgMVk2CMvLRSWNWgyVdc/Ehh8kaMxtzrH5FNQ4jnarE/\n5sKQDqEW641kmojbCe/lX+C24H48aL7CwbP9lmWKiwMQsGgxIEwEnqdDKcb0\nHHgw\r\n=qLgQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2/g0bH+kMpnMydlQdTZ8jnQdPWs1kEXw80FURbZDXcwIhAKPWpB7oxCdDq6tCQKeLI2oD8DgzFnzCegInQYT+xJRi"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.4_1588089651183_0.4551368625661951"},"_hasShrinkwrap":false},"1.16.0-alpha.1":{"name":"@xdn/prefetch","version":"1.16.0-alpha.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.16.0-alpha.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-S916TSFejSXzrwcc/sL/irHeRfsGA9Y2NDu4u1BwlXv76Olb1XsWbZCQzYJ7H/Un+Z5NwGdFPBlomuuPQCqLIg==","shasum":"bbd88a06ac6d2d6c489955aa0b98e1483af3cc32","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.0-alpha.1.tgz","fileCount":28,"unpackedSize":33706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqKFoCRA9TVsSAnZWagAASEEP/2eDn1AG81BnJ2JxsLQK\nwbUuVN3Y+3xkknEFZQVmkzPVRHHSn1OjebJdTbqASN73JksVHAE/tXSInUUj\n1XyQugGsGc1/YFJiE+e2BnIVY+oADjiSZH2P5ZyADKypQ9AYWrSHuHt57Pzh\nz1seQ/ffHkx0jFmskvuQGcygpz480pJ/dgnCs0etzwhH31V47vj2vs6DnvI3\n8TI6/zdpAbNhu7uQnIMc6wuKmgM2LOXrPfL6txPDIzV1CrtELNTsc3Xa8zjD\nViwUFXlrHH6inOq6/rDyRQe/EhwwPxajZKiSA+o/M3obX6w7y2zvW2cHzVKF\nfba+rbwGtW9gzhEvNEgBw6GskS2ecPeXvUuaML0Aard03XCDG+HWqHchMuMa\noyQQuAyub0WEhZRjFl7BXpumusiSnWK9aV5i0MNYlobmQKGSqDdIP0IcYnYR\nt6QHBd3BZ8cI+jUbKlHBRhvuJ/zSgNgLd5MQfj2edWO+KR5n5stiKUPEdOTW\ndRgWlFgpoFGv4j/WVBRVaY6YC8Xvq+bzX1zELw65ZKQLcHVf32eyqMNMDbxo\n5VuO3UzBSC+c5ArJ1xdRCkZ1/U4iku53ccGdyD9E9LQHzdtBNTTJ+jN0wAbg\n208eSqZKpbwJD5Bt5O7FtAF8Pm+ZmwsjdPsHH0osITI6wZoWhowL4Bhn5niS\nriTI\r\n=x7F3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC4tv+6S245gYpEYS+c0bKHZuDMKO6Zk/FhjbVzYOQWHAiEA361g/umzgQ8u1rrGPeAbLq/eVo1LXisvfi4zmm+w2Bs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.0-alpha.1_1588109671943_0.8333851072989584"},"_hasShrinkwrap":false},"1.16.0-alpha.2":{"name":"@xdn/prefetch","version":"1.16.0-alpha.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.16.0-alpha.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-GS5NdDEVqYVZs0HmoXJME/8+mv9QXPewaSp3S5kODn6NvQvj6rBnxCOteqmvL4sSwoT1mJtw7ljwhZw+hmY/tQ==","shasum":"3b41fc61a2d25878c90f767fa46251a69cab9948","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.0-alpha.2.tgz","fileCount":28,"unpackedSize":33706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqe9jCRA9TVsSAnZWagAAtq4P/3fujv4Zlk2dj5qKVudf\nkX19iq6tHNGLizWSksPJEnYLrycdZzyDUvttk4bATzIEVJlU2fPXxJgWKiYR\n5yX5ElAiUySU4vtSCCCYqtjbcv5XyuMLXtESumbklqP+Wy28fVSzPpF4pj1g\nq5nOLA7k1nnEkziFlpiMzKRIY3DineWk+JoP41WA27Z+nomRiCprAfbFdzGK\ncP74/XhtYygiOuuV8pl19UfhFuV2uBaMGNaFTgKloiNbFTeNPIq0QQ2ycSc6\niDFH+con7z5ORyMGB1jiRyuctQh81y8Swk30NvAmAO2Vv9omq7+sEggCWRuN\nXDnN7LN0RagQac1ukKilHmXlAbz2s/K/QNGEt/eYvvHmiM5oRQJVz0XAUqsN\nCooC9kxBTFw4h0GRnhAu1lnDOvSZpHdV2Os5kx2Wm7U1TaShlxyViIahA80M\nWa8OgmHl4TdW4kT7R2KQWZjWjJYYTKiilRHfscX0qVluTLTLD99IixP2oFuD\nquGBobECNBvDSNyRPogULiQfPbFbOmQdUt3ipj2meHwM5tkNmUiNa3lqvaiU\n5qYTGerjZLgiRLLuVo4/Cu+wRpp+4maSprHaWDPcNnR+MbNPjeYYAMLkQW4q\neM6t9oIOi2oeHjFHRkC4zibjfJi+b7hh1Vrqj2as8oyV0jogvx1xiI3KlLVr\n4Iyj\r\n=JsH1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiTKzr0M/DEiBHUknVQbxt76b6FjGQMAJiLsnHHAkqrAIhAJjIpt6HjNVsD1kFzNMuKXaf8sXIh8H6sJWRPw+v6I1j"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.0-alpha.2_1588195171373_0.8722079232537803"},"_hasShrinkwrap":false},"1.16.0-next-1588248560-a5ae7aba.0":{"name":"@xdn/prefetch","version":"1.16.0-next-1588248560-a5ae7aba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.0-next-1588248560-a5ae7aba.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-BkNYaUm3x6c/07CEPd5sVxzJ7Bjb6LWwgBWfUscaRpOAYVyLSzyFS0UWzJMVq2o0n5MGvlDdGwSrd+NwUwClpg==","shasum":"e3e3f2580bf83fc7c5547858b7086c9bdf462760","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.0-next-1588248560-a5ae7aba.0.tgz","fileCount":28,"unpackedSize":33725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqsArCRA9TVsSAnZWagAAeMYP/iP1u6K5CpyZdWMnhR1D\nMoiQzqlnOHQTtVoLTIxP2aE6ompxT2AS2aTS3XUbzlDoHr72+C36xbsdJKOm\nNcPHmMCYscC52isc2NiNRr1AUx3owMtFAhtgdMmCnEATI9zNhCg6U1F3Dzjd\nv3eqajn8kTBmxonU/syq28ID5RUhUDKe2edLaqeACXqa23UB9d/lt1ONS9Je\njnMi+qpZzcNr74Nl+OjeB1O/zthGra1LdtTg/AelUyQGjsTKaVTqMMDk0l/L\nzQvoUBc1Khguid//cnDQcm9R2v0uyteXW2JB6lMbQlhsCFdHLX2Npa+X2cFn\nq1RcfR0ZCSnzGcVtM87kF2Dqwb5qGMO7GSqVICF4xAE5MnPufC6IzOkZCv2p\nmGZiJzJHIT7g4rIqegUKUsRFxyx+CJtfYsrTh4J3AM0UKx/wc9KU5iQQKnrQ\n8w+CoheHOFhOAhp2MAaGXRF4u+0w+qOgbNNeCEMK9hTsdRcvcLnRY+Z/DiLj\nxB7p/PwkRl5swaR6/4Mc2fMX4og8pKoAPcSgSstmbUcfO3yB2BgM0ydge4pC\nuw1G8Vyi+Q1xNP3Tb++LHSJvvtuaaD1zxsbpJ3mjuJzBKMKJ6Py5YCkF+Zxh\nhh/F603eMFoFwFRBqgSW9DZFnrPzSr35V6OQ7c5GNDlBgU1wgY1iGTWdw4Gf\nndbk\r\n=5dmf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRP+6HVA5Zere95GVqRyj4h9Ng/lJ6SFsDxLbK15aRCQIgEwDcnFegHh8dp8cDgdS9d0UPyWmwt/V3QLwMkXimiAQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.0-next-1588248560-a5ae7aba.0_1588248619477_0.841983578375999"},"_hasShrinkwrap":false},"1.15.1-next-1588257704-e505d92b.0":{"name":"@xdn/prefetch","version":"1.15.1-next-1588257704-e505d92b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.15.1-next-1588257704-e505d92b.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-BEnEKdlfeLDU/6MKJ79dpLao3kYf5IGWj9DquGBZSlvnrjdzRC92H/tUSascrGSESQBs2yoSN7avZ1gxWRM5Ew==","shasum":"645d04fea4e86ce7cf45a2dcc260a7ad234db7e5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.1-next-1588257704-e505d92b.0.tgz","fileCount":28,"unpackedSize":33186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJequPlCRA9TVsSAnZWagAAr6AQAKHf1BP2zey341DR+Q8i\nk+Uq4JbyMgwYJUJlNmijf7JkC2+ti4oIq8SV9IM9ixC0nmZ1REeuF4b5x5d2\nfIHDwT0Lrs8PCwW0VAeInHgSDsKHmHAxCUnGAOwtmkcSc340z4syx4dQtAzU\nfgw+VndXr/ujIuPYtT+OjtO8XN1gKW8WK4GUkRvQJaADyCafSwvHFYwUotnr\n/vEDhrcCUFWbpkZYj0DIF0anp9O1JMjYk7qB2mKwM50nm0f2iQys+sSLYx99\nMre33QZiI3V2D+Oz/w2aRVqZqKnm+e273+tFet0FEvoWZ0Wjinx8IbID0MTK\nRrHnstRMcXAO8rwxkpazWeoJcP0s0jZ/tmpH8iTajW1liJghY5x7R7UXJayO\nLhJGt91vv6p0iZSF86T9cDMMgvwvdzxgYWTqTuCRNtPrlwmEooaawZVurRjK\nedJ1VgX+jey8U8gEVi7dMCVJiaghFyp3/5Q+JZF9q+/V5InFcIEBl0hGTlhn\nC+L04VBqHS7DkpC+kzXYZiJBl+TH2cNwLkIKbsNLBScyWsVHqQB6f8UilMag\nvlbksjmK2CXwRCc+0jloPgV6kJFsNNflXSiclpSPI4ykx3ea0ENoBlHO6Et9\nHIxMiJI7hJaNHU5xOK826hR7egeWicQmrb7xaUZJA2oj3Et6BgkUNh875mML\ntsy8\r\n=F2OW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF7Z7SKira7Bc7ZQz7tWFFgeABx7Ztqar049GD4lqU0GAiEA5qqgtl9Zy/iG6Ct4CeQ3oWIwnTwHQ24gaCkRi6v/nbY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.1-next-1588257704-e505d92b.0_1588257765357_0.7484181346637697"},"_hasShrinkwrap":false},"1.15.1-next-1588260046-fd645561.0":{"name":"@xdn/prefetch","version":"1.15.1-next-1588260046-fd645561.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.15.1-next-1588260046-fd645561.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-paHDe9l9H9HW3XVbWhRXxgva4bBugctdzge3brsBTVoYbRRrKhySXnPRWN/8B+c3YRgkFKX0OMbckR0Mp6NAlw==","shasum":"35d6ccf951350d7af03dc6431e102aea40029d8e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.1-next-1588260046-fd645561.0.tgz","fileCount":28,"unpackedSize":33186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJequ0ECRA9TVsSAnZWagAAOfoP/3j42xjd0gnpyZ8rGD5V\nytOA+nj/TR31sJU5dMI8kELYSBoEcSIr15+mktlWAhVKxfVI6RB7XJFzvE2s\nnsz4hqiuB1zppcziuUC3u3TkSOFvK5SLaapKLlwLfAE+06DMDN0qxLnPE4G6\n7Cgi9aiWzyupEL3sCmwN8waQn9MaFStoxGPD8WgQfB7gIdHL7xlU3yF20Eeg\nGUn2c68yG5vu9b10b0p3+61AUzFyV7z19ga6GYS4Hjqtm37JcECRZ3jkgCIn\npLQkK6cH7PAg9cI2nZlBt8TOTq++vJdb6uveOL7t2asELXb3NhytANpYjjor\nvWdvsg2kFpNtDPP93shgFDYYKRL4USUucIiAobtTsV348nhSpGz6gaCMii+B\nX0SwjZIqedgCP2TjhUPEHTXxN6D2O0NuS3a3eScg90lpzbB6dYLETvRiC6F3\nrSQoGeqxp28wTfqMtxz13XYVhE6ADuWGJXIUP/NX8wD12clW0nzX+MsOOxyS\n2dtJA/BW3R3UGwjYR9q7Ah2HGcHtTytlu2KGBZPkqdFvwcoL19B3j7fSWTDO\naXCIq5OOEMTvNn+beXOTE9o8v/KpZ8r1mTDjp21smbwBxNrSEheroIPvJaLj\nZd4xbmq1eNQTduOtl5n+VXgcrfDrWLpowbq3mt/7mt2ezCsF8Iv6hgJFpd+J\ns2Ry\r\n=aRMl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBcuEUkgw4m/6d5//qxuFoRqWOyPdFSXnQWYmreFKlpbAiBdWe3DwBrW4yJ3yHHe4EHIJXNzmlWdRBIfEahckI7KMA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.1-next-1588260046-fd645561.0_1588260099900_0.5085945217948953"},"_hasShrinkwrap":false},"1.16.0-next-1588260694-b903a29c.0":{"name":"@xdn/prefetch","version":"1.16.0-next-1588260694-b903a29c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.0-next-1588260694-b903a29c.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-VqkTSGSkL0qsyVefqIHsOfEuzFcoabGpnYimeEbzxoxr+3L6VAt0PJ/fx3FUAOVMDi5oey4OpgVImCyheUv9Rg==","shasum":"05934d0aeae7b53f0fcfeae510b0780603daddff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.0-next-1588260694-b903a29c.0.tgz","fileCount":28,"unpackedSize":33725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJequ+LCRA9TVsSAnZWagAADU8P/2b+GsqAa20D1BKJSz/d\n7Iqqd2FZJnQHD+XhbTRNQ5Lrf016hUtT4UfwM4pHX9312bmpXTmL61/aESu/\ntTOT5yM/3v2JplgxsN74vja2gH9uhclJxQfv8k1RyugJomyELBna6SaLbkkz\nrAv+2FFHdcOLKFGD4wFUqnFAFNhHWu7V79yAPWZ38Us2zwLk588CUgEcl1J1\ngJ6GhHZ8nxIiURX5yWqv6tTwbI/gE2hh08q/XSEWyekNc/kggDBzUW1fyBV9\nHBp1jmD9Ls3ZYeSKVNjkazn2YgM6tsjbkgRi+opT2CpZvBawM1ap/z7xD3m8\nF1cAPxuB4Dk+2rlgDkTc0XE3oKMfhCDFWG/TWq7LW/PctlLVdY791yQXGSI3\n68+Pb4U9/8lK8AUR8cb9gPA4QOMU6+qCiOGvJBfqO2Wt7PaYAIUD023bymqj\n6oElS5xmrOyg9SXfzXdVQkhPRGI3O4pBmeDqKK1NWWVlMi6GS6I88mqfYgFN\nZEuxTe78WJbii53naeEKB84pXIMzjbTr5hVOSD6uAY7CGWTTBymvja/bXpp+\n3U2+K1++KuJ5egL7wACs8rgqdyDr4uV+NFmq0qilbV+VEaIiIk2dqluZe/Dt\nLiiRdy47r9phy45komQs8yjQr0nYAQxWejSJp7g+hEYltHdFQxeVZIcwyLc6\nfKZP\r\n=NGlc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEAZBEbTEAzma5NYfsJjR6q6dE2dlijPLS32M5cvvgFxAiB7PZXId7Q1TqUfshhZX6mWPlZXnBeYBSJsC5idT8tBig=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.0-next-1588260694-b903a29c.0_1588260746719_0.9254540175365824"},"_hasShrinkwrap":false},"1.15.5-next-1588272954-641dd84a.0":{"name":"@xdn/prefetch","version":"1.15.5-next-1588272954-641dd84a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.15.5-next-1588272954-641dd84a.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-BNjeSMasocVvyehggM30eMJuxeAkpb7KhllhteKbKS9LLzudfg8t6slDaCAkd+qUDhzEUJillQdGMF47tWzn5A==","shasum":"fcc13f3c912c028e06b0517f595c145234d13bb6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.15.5-next-1588272954-641dd84a.0.tgz","fileCount":28,"unpackedSize":33725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqx9vCRA9TVsSAnZWagAAH78P/R+6XiThbAIZXI6FO1j0\nC7KzYya9TkP7L43p34RMaE47TrHCl2JYTxUWD0RzmiPMsyLDunliPmECDPqS\niM9BHbLs53dzB0qpUFDmttPx6ZATSZhLFstcmvcK6HUygz0Hi785RNtK32fC\n9VllIoC8r2nLo3QO1FsSkV56CMQLwgVxvd1iRkHn6w6HJPweO+CyIi9ZMAnY\nybNmV/sZr4/DXcjKzMdnkgsq2gCv6mF2FD3yAVf1eSITtR7ZILSWpc0jR0FC\nMkgMRhBRnQfwkGuJG9ih9EdlalO3jX+COsxwy+c0KAAeYtE2Z3c6w06DMMIk\nWR1HgwLvrE6Rf/59GG23MNL2H1j8hcmqo8gjUZLsuYW8lwwWrjkeSQ4Fgg4j\nkcvSigWdcH83ibD+yxLzeOiwzXsuR1O2klpSWzEMW7n2/wgnrTQfnOR/Q3vS\nAkgsEwZMFbz0kH1u9TJZ3+zi7s8rezAYaW4pEaUV4FZb2yWOwiO5KYv7+SnA\n8r2IxeFSHoCHfxpBUq8NP1Qw11gBYfrwTqeEhqTAMgLL48dAysHZ/PN2bVO/\ntymYFjdz3r8G4tvO399HKqZ3hXlN1ygeyzkly0epw9CV2VgaQxjFVNgdlZhy\n1boEIMBn0Jd8Fn5JaVWibMlIX1qdUxb/tT4rfK1lpVVSgkfqT4qhBTp40dxw\n1JO8\r\n=8fnL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjqqmV019VaMuLgYTkJHxm4PmQs8Jqb3WNhjIHDdHYeQIhAKtBYxxZ1aDGXQC1YZcq3KqQwFdJWkM5IOT4w6FUgFS6"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.15.5-next-1588272954-641dd84a.0_1588273006640_0.23159153587396952"},"_hasShrinkwrap":false},"1.16.1-next-1588273241-075e41aa.0":{"name":"@xdn/prefetch","version":"1.16.1-next-1588273241-075e41aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.1-next-1588273241-075e41aa.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-nzwM+yFqLL/Sd3F7I5QlhaeRSs/mRgDWNmv0z5UF8TiH0tssyDiOQTkzCOqnQ7/bZlQ4ruOe6mfC6Ht+DUnpoQ==","shasum":"66e79c67550933554cdbf155ed88e131eb7fc5a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.1-next-1588273241-075e41aa.0.tgz","fileCount":38,"unpackedSize":58413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqyCTCRA9TVsSAnZWagAATRwP/077zpjeDLeN4kky06Ov\nOfsG2Lqa/nH6rb+QyUX7VVKd1s5jiaaZv56LkVvpYra3oavjPFxJZj+iUHZc\nutRMZ3ahzXhAPd0+Pc2tbG320oDNjv6YmjkmXXotxR/X1JcbebCMk0mG9K8S\n3OZkXrytElS5R21+gTJtHC1nObImb3Uom5EEoSLX+4qf1lhbCowrf/6sMrxI\n419W+/G5ixViE8DXjWn/8Ul0jykZDuVhDmZQAZsU15l+XXSPR5QaemMi+L0l\nfWyK4jtirXlA1iNnFgj0EqGxjxvifdVTS6wsO0sjoZJ4M9W3ZN+oGzEApfoh\n/o6cT11OihYcA1wb6/BgbiKVHfWp++jqYAwhURI95iJX6drgzKHj9eU8nxhh\ng8pFsr1wU9cp17sr6fV3KN0QGAIaYqfw8LJAV1wHFqHpr5Vf6mEP4DTm64kA\n5GgbIjAvSrocLPVldkLM4/kROQB9f3TcrjFd1vrRlYJjNfJBzkmDOjCvZEDo\nTm80apTK9Gq8Djqui6JjMRM/SSt9sgEWp+Zs+d7cqh7Aa+NKo2NfEYSq0mVR\nEwJ/Bt30/QAOJX8hu3hcqKrfNHwFwfjdgirle4bNYRzQ6AHA4wrv6O+pOMS1\nU8tQf9Vy2gRBiRU8v77lrOkOcynduMOEIrvkfzm4lVNDp3ljCWvkfEMywPaD\nKjwr\r\n=XpDU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCArcZy+Cj/fGGrg+nID3aIb8joVimcn8IYEcoaKXIFxQIhAL7nb25WSim+pkpTn1+HLAbh6oUHb1GvOrkrSFD7K7ck"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.1-next-1588273241-075e41aa.0_1588273298792_0.8422748126483202"},"_hasShrinkwrap":false},"1.16.0":{"name":"@xdn/prefetch","version":"1.16.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.16.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-oEs159K8dr7xyThjrSBhL263NY+ytsXOf/uFPdzvIb9P1lgK3ABka9z9nXKBpxrkY2apicW+ejhcU1ENX0VDBQ==","shasum":"706b0179fd660946cb87abef41a045baf1d2116a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.0.tgz","fileCount":38,"unpackedSize":58386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqyHCCRA9TVsSAnZWagAA/w4P+wUuJwuhr9aPGwbKWovE\nYP/iN1LZks4USccG/inPbCG5o5HUrxJBm1WzIm4JvyY6PT48IGSpSNC2U2tK\nDvVgEwVLabWxlMgAjk6K2dOll6Wif1ndWQLiFywfBnhCM9uWiNwvTJgys+bM\niYdD7WgVRE3OdqaJYMfUdhNW5ydggbv1pAbWDRt/lETXMOIAUYZKpxL+C55x\nRzY3tleR60Ms8V06YMleMDMEm0x/P/yS+53ISCjZTuiFpIE/55JGxgnNeRY1\n/aIelEKkbaPg4tzzkKikO1jBV0Eb1yeodEabYzwDZk0cwXgLUgjF7oG8SFc1\ndvfy5cjioYXBXeOrvhwmHoQht27aJqSNFqPOasmN7s287L4bVMSoiEFV9g54\n37EzAhu+xSUb656G3+HH7jV0e8RBoDROSWyTZCWY9fGCmzP35eRd3WeJ3Mj2\n9S5qjeihfUB7zb9QtwiXck6lkrHN3qpwkFlw/NI7rta0tm4ZT/fOH3hZK88y\nP+2BnCDcChD9RrCNajK+uQb/b98v1yDEZx4p7FEnV7jP4u2hkmJ4M/zSLAsF\n/UJeHnP7V41g0iOaWOLRVgc41bjO1JzIGl8r5u7RlKK9SotAQczfaZ4HKfwz\nS8MNIrwNR5g/m+KF3nX822AP4UQkFg25QypbVYz5OACCTkK03J3RfAZtpg4o\nBXFJ\r\n=e1qg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnwB30b9zemCDIqKBzaKxAOmkRuGi1UINuFYukEANy/AIgetvkvYqLkQIkSRgWWuGMfoGEpgYpZr9KvN0tPkLEf58="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.0_1588273602049_0.07560759696498298"},"_hasShrinkwrap":false},"1.16.2-next-1588354229-ed743abe.0":{"name":"@xdn/prefetch","version":"1.16.2-next-1588354229-ed743abe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.2-next-1588354229-ed743abe.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-OZYzjfgDQ29lG+ASlpbeH+7WpL+Lq4ZZapuNjDk8+iksEzehsfqy8QwQDWMwmCuwsizNBjTf5V6l67bXSkoM+g==","shasum":"02fbaf5b39f6e347fcd6d6f9e855fdffdb5820ff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.2-next-1588354229-ed743abe.0.tgz","fileCount":38,"unpackedSize":58413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerFz1CRA9TVsSAnZWagAAenEP+wSXpvqirudfljMb98+R\nAchqanfDytcMT+VE48lDiheF9pTfCh5YCLsasPDNNMEz2kiYuZLONuqrBEeh\nlDfpjdMwSiF3rUpSGmxCHm1EwDPDjKVWdiwmxC2ulHZlOl+HIFUzDfm4zZw6\nayc5/td9nLCrdegUPtoyJ5ns5Q62h8aaBNq1IL96d7IOOiDiMHKJhD/lhzs3\ngIwlvkpGlYuUx6FXLl6K6rdIsAqE4W/+qKF9WQMpKozFgtBk+4Pjz7CnYX4k\nE3S1JjSrXMXyQbjMagbvC2IKIquU8riIXQccAgm9ikPKpob6B5DaDK4DXBex\ns0htbjsIbS3G1uHzxd8JW2V3eP8ERx5IEOHqMOfnIemWX01/SbX00jQa28Eh\nj+opMHXLcukzI7zb9aFYGIstwd2WXSH/EY+WUsbnLoEhNJluTPBLzM3W0lw2\nlptItIORZAcTKiHVuaRQxdMJCOV4Tct9etkoK+YYGZIRQvuDCO4NdQCVzha9\ndbaxKEasVPtvqMPWcHOckqK7sV0G+Wax/riBPrs30H+hbqSEaDLzr4h3Xzao\nAMCxyoAGS3cDvK/YuiddnMVH1KR9C2arux4nmFaTRf0RR29PEr2CfgC3/CtK\n25VdRzCiUg0Fm1fF80NCOBjbe1V2D5Y2Kz1G4dJJ3fP7D2dcpGrCZ8nYQdWZ\nt0La\r\n=CLEM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJYO2dVRBIS+9EXEOXrs6B3croPqnx2QmFfHyaX1UPcAiBsVxcMpGKtKY4J+OZQEJXo/61i2e20Vo0V99YE4Nbn6A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.2-next-1588354229-ed743abe.0_1588354292798_0.375336734421609"},"_hasShrinkwrap":false},"1.16.1":{"name":"@xdn/prefetch","version":"1.16.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.16.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-svSsQsE2CMDOQD0oPZSfbgWgVB0uhDUN3APLMGKiDAHzddrDqiOG5/j/HHQtXpQaJoZ99NIX1neX/ALsG7Uq1Q==","shasum":"b446c7c911f9672e21750179ffc3dd31fa51c309","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.1.tgz","fileCount":38,"unpackedSize":58386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerF05CRA9TVsSAnZWagAAyvcP/2194efRybuz0yrm5Gdy\nVdMvqy68Z0l/DTQXy69bh5Mal0tqupi33XsXn7aKUhyzSUb0PLduHXN41L1C\n3gqO818em4gu2EGmYgGKVS9o0X+OfJEVD1oC0OjBDandPDWKI3NPIRN2dNeo\n9Tm6qT8rhZv4QxigegFcA3iIYqtR0EpX8QDWvmPVQB8/wpj3q/DetwuM5o+C\nP2VSKMKPDI90yANWHAVCa6rEBI8uuF0Eh+qUT7V7GP+fiKt+lwgWiD6T8PuT\nve4ayvhUwZTxXQDeiUEi9ZT+LXpWCNYNdPZB0qxkg6bbnRv8RkZPC77EHjLx\n3Yr2HgDBLCcRSfiRVkdalEzNqWSmtvKhXM4kJAlm841eBzc0ih7L7U+uce73\n3ZBCJsStlQaM/0ztZ4dPlkiXRzRNLX6eA3FE3aIc+8/OtftTQIDJO6Dn/jRl\nftzZyF2+5q05kpT3nkfc1F5BgMV2aFgxah21j2miPkJUslistNz60VC//PA5\nddrYn/e9KZTiefw9LTYG0HpyjHFgdMI9KZPcsO4Om6I7JcMwWpCinIwoUcIM\nMXZADLRjgGaQHkrvGC2/E8MNtVR9j+ZHiMfKQcv4JXAgLtcuoOiffbvz2mIC\nuFhasSZbZoisGtjMMDYmJBHqStLUoirG3SlnBcqmRxjl5BFX6kqmTx1Nqstl\nCoTi\r\n=X7uL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDshdFv4kP59wC7017V7VCGxmgi845jlNz8wTA4ORfZSAiAMHTuYTfwWEsAZ/vUlauntqHlmKPs62sP6577OgR1XtQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.1_1588354361354_0.5673239647505999"},"_hasShrinkwrap":false},"1.16.3-next-1588356827-cf7323c9.0":{"name":"@xdn/prefetch","version":"1.16.3-next-1588356827-cf7323c9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.3-next-1588356827-cf7323c9.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-wJy/BT+MbPaO9aRLXOa9Od8Jq9un5qTaaVwb6hvO9bYw9Qck5uTjUlPK1ZJ7L77RhORpCP+tcvi+Wpy2exd9og==","shasum":"dcc5972a2d93d80ddce489664f0da275eebe90d8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.3-next-1588356827-cf7323c9.0.tgz","fileCount":38,"unpackedSize":58413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerGcXCRA9TVsSAnZWagAAhhwP/2dt9JPds+mj9h63qluK\nOWt6iq24x4/Bb1ac7dMyUsePZc4owTc6aEdtzv6rAgNPZhJIvS+nncgONxsm\nRj1zoP4TfGHXT5xZa3PAPxblPGMJTXW0jHOGGY4PPf4K+rkUiHgysAuanp1w\nVW3XVyZjWrIebLxfCfT9YOs1198wW14d5Zcp5IuSOVBehVydV2zweVngfMeo\ngk7qh8gAKz/vOOpTt32+R8ENzd3IiXQ3n1zBNYHiasr9GIwJU38X8LUJ5f4c\nVmVoCZdsFLbRaA7To+9KERTGO3g4uKFr3LJ+ImiIcZX4ewpw74mwu705WOU+\nRjd0tZLJ+vqXFjCQYI8bVlWy4KK+GW7kenNIFHbw4Fwud9eEyQueq7j+jHeu\nc1VVxNjMJYKxhsOpyigLOnRzY4t7cdAH5HK+YR7F56b/QaIZaQY/Oa6E2Jx5\nsmYGL9TBAin6N3jI0D+8DzWQ2NMgbhMr5pjBUbY/tnn1LsLL4ZYpvDh9VC73\nwzdoO/rno49IcwZulyEZ121Zny3bxSfVV7XO/ZyGdaTJ0u+YitudLoeSsGez\nPIbEKKszU7V3gRiiF/em7kQbrhGnRK3IngkEcF2FqK+RMXMWhYFWCUaefWFe\nLEACx/T7sWZB06+FdUqQt0Yhg9DlDN4DncMt8KuzLfjkM0PzKmqX1tcjBrS9\nXlrk\r\n=Voqz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG5CmX0hPL3t3yOrXrH2AqUyNoIxRmMqqLybsq22rCQIAiAWJnF4MMJr0MGQhOUU9TdKrkB/ZvHq2F7CtMmU7MSN+Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.3-next-1588356827-cf7323c9.0_1588356886867_0.24647386596726983"},"_hasShrinkwrap":false},"1.16.2":{"name":"@xdn/prefetch","version":"1.16.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.16.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-C3UCmaeP/MZxHhedhTrdY0Qp/CFFFpyGoWI9Mu3IUL5ZMb8/cEz7bEFPK8KFtrRnInYoCjTxiNupt41U8QiCtw==","shasum":"c7660c9baba6cb82094c2628de47d47e48e548b4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.2.tgz","fileCount":38,"unpackedSize":58386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerGijCRA9TVsSAnZWagAAnyoP/RtH01wUPvOX5yv6TMLe\n0iuDo+kMTonyYHRl5kv7sRjcOAKEgLFtRKj7B9dBKAqP5PzSDh9NGS6UaFfM\n/jfx+jq9AqW0wiwOmWKsG54IfKcqWSV8VACmZj5Xh+hXjP5+r4TU7qUEBJx+\nWnbWbCEmCtg5JdiEtuUFY9RqIuDkGFQMiV3IDQKEwWVdONcYMxk+4sSpxzTO\ngjiLTEllDs4gEG8VY94lvqiLgnBrKgCC8PZOGpvhFZew9Ek3+HPpJjwDR+4e\nVOLrdzk38zV3PhrjL1CvXTDpo0cAF1rwLxBGPszLwgNCMcI4pfizKZ50Elsx\nVj90UeQjpo2UUNJ6kNiAKF2wgRbrilts/ST40gdlquu26JWZl0Z1PpNquFEx\nNcVThaAJFVmczBb1gCKGLsr1VpD6pRnvOFpHqKIxLWTklhyuGdFTojYvSxbF\n8RtpIdosjzaGs2NhKYNZk2l9jIfaWzBUYO+85uNus4PTaAEOwRI2qxXBZTcv\nK6cDDxupk2NBl0K7f3I0s9iZMpqFHdrw6sAHhm3BZYXfIsbzt35CJnC7p/7q\nrX7OaKoNyuijOR5xDhxZSslSorv2KhvIl3UDXAfX3KduZT4j0TAVRsVkXbT6\nX+vBXWzSlVvD30yuoxVIjh8sA/noFooYWD8Qjt9MbDgQWUume48qU9bap/qT\nwC/g\r\n=QRCm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHUt6g8nNoLkkzNbDUQfFsq+uCbOZzi684a7kYK1YhvlAiEAuNm2LkxQt/Vf0J37baEFDI5TV/o2Sqc0qR46iS6iaZw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.2_1588357282791_0.7915344387407137"},"_hasShrinkwrap":false},"1.16.4-next-1588589908-9c567ddf.0":{"name":"@xdn/prefetch","version":"1.16.4-next-1588589908-9c567ddf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.4-next-1588589908-9c567ddf.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-iKZqCxgawbmEwlxwegxryfvD01twDQxtPOYlFcSjGMUVGdapyXNi4Kn9AVCkWV4wGvWB7mhMNw2/R7cUxOEurQ==","shasum":"2dd39cb44400c67c5a879e559cedf7c92a1a8ab3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.4-next-1588589908-9c567ddf.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJer/WICRA9TVsSAnZWagAAvLgQAJBMDGpn+jLa/6QwN4JV\nQSkFTbPfL54e0uNGX6IO8NrXCXQXzCmJGEhyP7UPIV69ET/u2WRFXwWKltmn\n7qVrhqND+h6WDMyEJKzbqAO226HimOfivF6uuKitwlSlVA0Aa9U9cW3COjEI\nJ7IzbLbYf4dTZE8at1H77pOiDTkThlcBTtoc2iJmYbOsYP1iyYfki9xO9qv/\nfRpNwICU2ylN7TqAe7x54x/J9PxEBzmmQkOBfnS0Wz9XgDzdH4b73VQiTsFw\nl26Gm3XDXvQbPBMkYz1d1XHuObyvheEyECyjTE3OlsWVFzzRv3/vkxGvriuT\nmBAQFBBreGp+AfJzOvoRko2qYXtJAwsIkVWmWSI8jEJi0gOgFmlZJErMDP5p\n/SllnOAztomnAjvR1glkmdkYp59Tnfo+iWhI8JrrY1MhOt3UygelNv9f/biK\nNOM4Sp9pRz9JYsxoT/hbwUnl//qHGzxO+GYFKQibzb322wHf202vm14IyZf1\nN3JCmscLu/4ZHEBz6Ei0m8AH/CEsj2Fhp6TcTmxu6AsSWShiSevdfaMKdPTA\nDtlz3mOq0BKqVI7d5nbhkXHHdFzqAz+qcHUa7rhq28dxm9bioxTNMn02c9OT\nDYS0pkEggF1dXFU5lB+Hhkfqsv/Vd3d1ml3ZuFuP9pP9MWSl9Clhcib7bNqw\nw2jn\r\n=3s+0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG8nxiVuAofIoulherVtpxMuNj19lX4JshVQ9gcOCNH8AiEAgP4jW8d1Y+ZEoBmh1Vej2UP3cDYzDRbCWZhMCQlUu64="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.4-next-1588589908-9c567ddf.0_1588589960246_0.4601548161597149"},"_hasShrinkwrap":false},"1.16.3":{"name":"@xdn/prefetch","version":"1.16.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.16.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ZfUBG3UiPl5icb520jEHhmFT9wSDBuX8IU3yfBWrY+UVlLuGSHXiMmtB5XGE0YVlSEv4yYvLauH2ungoNY//WA==","shasum":"a836b6bf7eb14e66231dbd6766f307180b994501","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.3.tgz","fileCount":38,"unpackedSize":58671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJer/sjCRA9TVsSAnZWagAAeL4P/1X4Wtui5zGVrCW8xKKK\nzbfljsTqRGuOQ/f3Xs9XfB9iAZZfeXz3fFFvvShcKgfB8Sm3+F6nZubllJQI\nX1Hit3mRgHiLEqQnTlnGleJMcLqoqBfFpPf6g5JUqfKEkUvFoO7QhXsoxPeh\nI6QIOw8u+zbaMyYhPEPShMhd7WehNBfRvktqrBBRYZ8D0vIHGMZBQnVh5BhC\nFdFNPy3XCgW0wWahOKC830TyyYbkQ/IEI9PPJ/bbO9z7c7ZFV/qWPX60/2Sg\nQYg65z7cJuxUvLI2gNQ4Iuxbe9azzXePFPsJ9R+WT/zim1AiQFMpoHRyVRVM\nhPGnwh41qoo1lVtf4hEGGs5tLyz1z1DiZMTwcVsmLU4cEyvLOwbPNrBI4Gox\nzaneacvnCzgWAg24D81agkVFqD01+o3FBa5GQgFRolb38C0q5xk58fPb7H7U\n0nqJjfiVMcTNwgF21HVDsdGTR52F1CVEwzeNOa+3ROplFi0+njNxF6yI16G6\nuP+xKAkFtqCEuH4r3HSNGFZPZSMlWaBuxWECIkzZnUCNHpzyBSpI4ODn+dNG\ni48Xe8dHJKioZGv2YtHH0bO4FY5UtKjQw7fMyL0npzUfyxe+R7EYYtbTZy+x\nnh+j4LgYjUBfpU0lX0IxMkWB8kV2vDiZuXEkv0mEf8Q3NeMSiFyNb0ggBaH/\nRTi2\r\n=xA3O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRnyvNdBY/4sxSv9i1ZyPGySUb2c5M/4hZpBEoLDcCKAIhALjtHKPcACSCr3KXUmYQDYNUlCleh4uC3gAtYVXyJ0DE"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.3_1588591394950_0.8702271787555653"},"_hasShrinkwrap":false},"1.16.4-next-1588592046-bc6a9bbc.0":{"name":"@xdn/prefetch","version":"1.16.4-next-1588592046-bc6a9bbc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.4-next-1588592046-bc6a9bbc.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Ah4IW4ywI4ctCmOMdnFDFH44vAZzEopsaVLzuSuJ6e9VUazW7t7o1F9f5nf/4aZ6mls4AOYBNgsWvjpIOCU3OA==","shasum":"1320670980cf13ff1c5948a22c655c3309733d17","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.4-next-1588592046-bc6a9bbc.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJer/3fCRA9TVsSAnZWagAAihkQAIyHQ66carR0ufuPsK/I\nqt8HvchLTZP9u06N2XBxqN1+AqxWXsWNSgmPfLz7+i3iM1yGrvyXFXzuadab\nb3fLHqF1Tds7mc2DIGb66McIg0RE+6+lRxnpYpSHoVTnp+n9avmdrMwlpFRr\nE4kDXGTKv6Yp41xP/c4wo1bmA09eeEgLpKTuEHGNP2dgKfSV0y+D3Q9QoEh6\nz2YLL285zTlWJL5EFAqS7ECPalNWDYju8/Zzuny54AY/VSz3ShNIll4z2uFd\n5bKc4Y60QwBlASLOKJtDt6PPGZKcqfkCxFrEQ1hNZr4UrLGy64xZe07R2C2G\njZWB/QlF9kHoJtnDfGs0tyskKhLwpPn+3hCATHCixHL1+O4LdWK9Q1MJw6mE\nA0dCQaX2Aw9+agRX8aq2XaWFUULBc6879gj1JeoK0GI7kRC0n0mZeoTGLwd8\nfl1OcHfQXxnA+9xU1oq4znUslHI2tBaKa4X67drlhTPlfKzdh7uIaLM8hzyE\nYxu2CLk0IvOIuEbSpiTBI1VTy2MavC+HoV0lbWeqXy4PXjgNx1leRhHd6042\nn+1Eu14+Zw9Hn0I3IBgmTAycEZWbBgU55j++VcCUQ+GdwOb6xbDa4dBC+iK8\n++L2zf6COYEQJO6NXBeSXfR3xcYbtHEHp4azsJelngFe8GQk0neEDxOefNYb\nC4qg\r\n=fUfj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEdQdPskQlXAif6E6py9CFAJ2FMTq8d2U/LuU1dIs/+FAiEAoowsHM/lACK2c5iKaM/XYm/p/aP+zttslJx9UNEraMQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.4-next-1588592046-bc6a9bbc.0_1588592095239_0.2850388884255126"},"_hasShrinkwrap":false},"1.16.4-next-1588593653-106e99c7.0":{"name":"@xdn/prefetch","version":"1.16.4-next-1588593653-106e99c7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.4-next-1588593653-106e99c7.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-747xOIQ+P07foZXX/oSzC9aSB97WTFVssH1uO8hR+EGlXklZjC7dZ7bL5KYiTIUa2PIKAFuMPp494Wo6dMPHgA==","shasum":"134ec568f6fadf8e6a625420e6de569f9d5fe6d2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.4-next-1588593653-106e99c7.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesAQoCRA9TVsSAnZWagAABioQAJed1kWqlawh3adB+/LR\nEzvKQ4sDWyuQBdParxr9CzvqStbeO7DXjQeDZbHHyl+Ky/aFofa+6PfSX1UU\nVnz5yzyimvqYTUwj8Flg8rxNV34bZpqYIwvpB11+dYI8afnisDeGYQchZzvF\nkes67drkwRDf29/rzgGeRSapLAb0QQytI8106cbxXZJclwOu0NJbSeBWSGqc\neKDHldymJv/N2AupSLFEfWEfjoBfsFfXVm3cQxtH4tL8woJdrk+sPKqQaJY/\nvdnED6bah3SSxPJRKVaWfLGbH7ixGSYD7NFXEDA58vk/F3oaLEhYr3jorAci\nMBjtodtyUP9AeQeEtRBJC4SfbyDlr4rc9MzESE6IGPHxTTOJf+uPCEHdf1ge\nfbEAAkS5QH4QYS4OB829ovrePk/wO1w+Y5m7cRwNVEv427fIxD/wPILeTlP9\nswDMIp427vakDAi38rOQt/TWsFFnoWirWuioMAXHA3gT/9/2Z82MUtcoHc73\npS1iJo2LAow7jzuzXKGj5uWISUBCXLW2elhavyrcQhExSLuDwOURiyKknker\nSq32HBAoHVrcAZ8N7v+jdHG6kdteQ06t54/JXRmLf/Gob6FOiniNi2tij4np\nEbJT7XTCvSCxKxiYs6Jt29t6kZ4wmyNmUZy7T9eRys0DTvV5YO5W37wgBMNx\nHEZx\r\n=2sxd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGBfmE4ProZes5CKm1qXhSzaP6aibaCaldGUld25xppHAiAu1/GIL18ghq+Ikdu71+2AR92+RuF+c7tSCYaH6puAKA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.4-next-1588593653-106e99c7.0_1588593704028_0.30944016478988967"},"_hasShrinkwrap":false},"1.16.4-next-1588593807-3e0cf026.0":{"name":"@xdn/prefetch","version":"1.16.4-next-1588593807-3e0cf026.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.4-next-1588593807-3e0cf026.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-tN8rlOL7s/0WL4QUMep0MuofwyI7LfaeoibsRR6S1TmSjK4sCvAjxG4jZUurm7ai2SDV6z7mKmgL29Ldq/HvUA==","shasum":"2546765de433700f49c698a70e0f386ce2ff3a52","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.4-next-1588593807-3e0cf026.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesATJCRA9TVsSAnZWagAAOgkQAJz5/nR0rpbQ1TLl4tBw\nVni9STi8UFBnz10x/+o1Gs/1GCxgoQ+XANUmScosGyiLaRSr6F5yH4fTO11l\nkuQ+wDPJWj8BeEAz05cSxfxbw6SPREMW8WCAlo13rjWD8rLwqMbkCt9aPaMU\nTtBhfBUfP66EOMFfccgXnii+a/t0/BqkVRNPllDy+htBh90x647lSQlbB8yU\nI1AZVsg1u0EQp4qx9AoBmNPPG/vS+fhSHyiv2tpfO2c82O6O5ZgUjaHf/4RO\nsM2PtZJ1hciemCMS6TzsiPJhi7RxrnYd7qBUCjMdYv1i5SboS/SBNYDB/PG0\nJrl+nHKSqYt9hXX29DtKZFr+OI7x5TjU398Ed7KxUPB8EOEkylT2DZ7SFkmr\neCQPqtNFHhPzmSWXknt3F/PVtJn7651uK6xhFoIxj+RAq8qRXiETXBRAkdyQ\nvt3BJvvZIOWiB34/u7fdgcZbdmPKp6TcXkhsOKwavPymbRUb5tJA0CYq+6qQ\nx150S0nVeoHBECjxOpU4LetLPJ0ss1ncA/haFbcGLf1q37dT18xAHYAv6giX\n1oYfigCqXoThLeF9TA5ewdrHM6ay+5InTPepElehPHs+u/23Qay0dvnGpnut\nHbiwcWsdAgHLqKB37ghc3tSARE8LydFExblFzhrTSNfOfV48JSY4/L3CQMzb\n/M9S\r\n=NTw2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEnd+OKbGIGnSAOitYZ4XjmXsyaRDgKWkeb2JSp8axyQIgbmzUYbwSJaUW+OVZKG91Ow6KcktkvDWhqaGt5VN0HFs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.4-next-1588593807-3e0cf026.0_1588593865513_0.08203394291328747"},"_hasShrinkwrap":false},"1.16.4-next-1588594276-c5d635f2.0":{"name":"@xdn/prefetch","version":"1.16.4-next-1588594276-c5d635f2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.4-next-1588594276-c5d635f2.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-dqOY82JcXrNvovP6esFDcZBwM6ZI+bpOiIAsYzYX+DHx73gbW31eGoL8ptKLEZ4qvQL1saYOm9EH4pn1x1J66A==","shasum":"161ee6c7926a42a641ee01a00e3671d0e9a04748","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.4-next-1588594276-c5d635f2.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesAaiCRA9TVsSAnZWagAAHQIQAI1N1yhS/hRwRvGIq7kN\no06YM0hQAM2BgpBxTiGSoEecdFKe1iQ+/0pG1RN/T9uoE18Au8ZfUeC3lync\nRligKEedCx5Y7WsvedzptaX6HzzA8xbAFvNGWYh42LzHtxRrbWzaZ6znZdO5\nhJabvt2OSnR4iktQ4SeyRAq0ijbpJ9bksM9UyHQ1TxBdMvaPrR1Zx1UffAgz\nciqP80hQmye8GyHXeaiDYZZLP7moXEjC0C1MtRcGniL0DKnTQVSazW0wJJzh\nGpn40Fx3Gp/eOxdtvsy291bAgtqqscDlk/fJOdS52WiLTOKyv5FXc2bIl9J3\nY22+GHMe+oEbYCl3VXoHDpGQI2tzToR8EUEYb+cCRR4AwY/JcXF4ewBy5cJq\nOM2TbDUAXzyYlqPN2NrE4D7DrsJqQBLANGHiQmH89sgp6M91xVvhD0c5cBCs\n4LHaKiOwNctY4kvjY52OaLQk0PeeSJ4k+/NBtXj4B07SzAM0JMVD+vet/QX2\nsVNuJIp/uLu6z3cI6227Pww//OAtM5J9ODHMFy/OkB3DVRzJH5QAJjTuhz/K\n+8ZMvkXFcv3XVMs8IROSgMRkHENIAAQ7LORK7d4gP5VD274oTTZSYLeznRFc\natCJAkjVRQzg15/n3igqLr92BzAZej5pLeO/H7shGfhAHRLhxH0eV7JcsTzf\n8G6L\r\n=UKeT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDftomQtvlWgmp+8bN7jMOwKNzqxIcN01dpJWcIrZml7AiEA9uFAFKjYCj+BJDHTChuw6zdbCKovSTM3hT5psajXWWQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.4-next-1588594276-c5d635f2.0_1588594338268_0.939514633654221"},"_hasShrinkwrap":false},"1.16.5-next-1588598770-fdbba1d7.0":{"name":"@xdn/prefetch","version":"1.16.5-next-1588598770-fdbba1d7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.16.5-next-1588598770-fdbba1d7.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-G6ZqSbg2oMSIE89ptgH399fsqGXsbO9b3qwHkuQl2Aw6NgnNRL0SP6otS6dSq3PmApVuUlD/XY7Fsfx/dA66MA==","shasum":"f107f2566408c750fce8fc8d7789c0b4ad58a2c4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.5-next-1588598770-fdbba1d7.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesBgqCRA9TVsSAnZWagAAuNIP/2BmopXe6Mt+k0F3vgJg\nqcG3/PD+pYEf/QQb/Wh55Zre+FjDq025dhHO1tsAGkccFLK9OBfWgTA/nMfl\nTwHv0ZO2E11281gysSeYIqU7lZtdPE1wQmKtkuQkgYWgHvSExuHmwDq2hFwd\n3bJOhGx4t+H9DL1tN1ZvUgohTyxQMCQPKDwlekb4D7F4GuvP2Vr7h8NuA+tE\ndIookaejJz35APbIfH76R0lUx87JmEo8np+FiLYIqVEYXrS51dgjtg14+tpf\nq3MxLjkC7WiTSAfvIY208IgskLO7VsZCPlKuFkcn2Q9g/uBMvWR8Fbftx/AB\nBSopl3WMYuXIcqTgKPw0R5Sk8vCmhv+D1pEMBIpo9lXn70DsYXAipaRb9zMa\nAIsI7jZ+4oHbQIr6HjmF2FORRB3X6Rspz9Btu22sQos8IjKttPz4/GZ1Neoq\nlIi5hv2g0dF/GwgWU/yHloX6oR7Ky6R6RdPas8pSF/q6rrmvYrTQP11cFcKa\nVhMWKjzmNReF0GcP2G62smBbyKIpvA6UPG/2rugb1NgKY9vy4tlPDwKJOixJ\naIlyxPTLHtf0W7N2/TnBWsNTiM3wi3unFK6gtQwib3fdkKZWO9f70PAMo0zh\nsT/SvD3vEaYdj/6YeJY9sEFLLB4DSws9ZCjON1pY5oIJjFOO5j76iNC05oLN\noaqF\r\n=ZeO6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGyq71OGVk9VtKLl4t9SRkYCPm8Je4ANvVH1zW2Zs50bAiEAsgN0YhJHo+AoUg/rCLhfRhX+r0HEmoF9ASwdIVFOPxQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.5-next-1588598770-fdbba1d7.0_1588598825919_0.8868985053295317"},"_hasShrinkwrap":false},"1.16.4":{"name":"@xdn/prefetch","version":"1.16.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.16.4","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-6oG8QPCSd2cMU/Mjjvv6KL0HJaguZ0ZPewu19+wpcBOtWQfg9L5or5O+Gyyf3u0WA24kVaahEdYTj91dV+Y9Cg==","shasum":"454fa61e0d984c7f33c520519947f4760a746472","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.16.4.tgz","fileCount":38,"unpackedSize":58671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesCUPCRA9TVsSAnZWagAA4xQP/0Q4GtKAfybyPUPl10be\nCu8Rdb9YoCZFqiVmxeCkpkEY/nhbzca4tEbvX/oz5NlX0pbTK3qIa3gHBjIH\nedddHLQgMRqSIeCQD+5sFni1+20VUGDEgYA6/yukdi9E90qdU4qJmb6pm5jE\nzOCp8VVOH1ECr33nCcAliVsOh9ESMPxZ2WzG9doYbGjoeZwO1vu7KlhLUN9+\n7cyCZp1HmNmIad0ZoRFNAGvTPPdGyuGMRVPOPFFsrzION43zfTOmunhx31h/\n9OiHDWCUSK2O1NjKPVIguPMpLJ/0KjYSrIdnDEK7SCwXKdD8xRCTBPm1XaAW\nTnVXF49nKPBfmN5BE/JL97W1RE67SGOYxLCVRCLsMy9hqqy0j4JQfktlkCe4\nAjomvXsQGRGQizla1Hbmm5xXw/vimYMeNDgfSlTShuqYefxwQsIc6LneelmF\nYOuGAiBFI0+9sOW5w3ytVSxtCyj+U+4dyv+Z3/szRRgDk9Dpqxbxjdo+zIMq\nQmOcum4QJVs+/iWqn7aN744hpz+ceaIke0XKIaUFDPb1sXH2NLJ83ifr1BqI\nf4ZXwRRHx7sDP/gk8h5aDq0KKKKxJzY4aEPuG/bvFZAqKFCZ7+fmey7QvlM0\nbGrYxHwqANfX7JGyd0sHZRGsSN3vzXQac2JO0DvIFdJiqxgBlIG8csUiSpY3\nibz7\r\n=Tkpy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDABFg2QR/siTJF4rfzp5pgKhMbUVS3Q0BEeSE5wo9W9AIgUaxypHBls/Y6nKXrh7QFMhnvIE3TJWcNZmlfAyxR5NU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.16.4_1588602126604_0.4141669986168752"},"_hasShrinkwrap":false},"1.17.1-next-1588602342-9eead474.0":{"name":"@xdn/prefetch","version":"1.17.1-next-1588602342-9eead474.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.17.1-next-1588602342-9eead474.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YE7X1nKBeSidInWg7geCS+u0hq1tZX5uuy1OPkRBxK4D/77ScCxppqKyhgqBVFRztdJ/6Kp2SSF6VBzNvy16dQ==","shasum":"09b09fba2478fe8ad460ec4a0a4363f7d2a89625","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.17.1-next-1588602342-9eead474.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesCYhCRA9TVsSAnZWagAAmcYP/ArIWdZKjvFoCpP9plRx\nrEMH5SUtdMwOrw2Lie+4+r7Z5S7zPXWVnPeDf1htMHl2zOhYTya/e1KGVw0x\n3bHoH9QOPaktQdGIbnoe4twdP+VxuyXNUVxZhs3AQ+n/gvFkJyBwTcoygNpV\nEt3cUIfXbaCyQSm/cxL7NYXPrTtsgWgDFLDHzXQWAlcTgnox9U9YE5vrqt8T\nQusXkmKZuu/MnIhM8TLJUp5j1C0RVuzZULpv9wH8m0BQVd7Zh+SniPWwSvUR\nwzUaJZcJb/uO7dTKwLvxFwX9J0fi7MSArc2jC7tuRTQpjzty745eoTtZv4y9\nLh0thm8sQx/wmBMEXBmueyB0Xb9TB2IFjlDuPEsN7BWo1u+GwZOzypiX5ntl\nmpbM/QvUhlY+Wf64Tdgs6Q8ZWt4ZXqRwBKCl/JNu30gVI/sO3pD70r5kLmmQ\n/PlwZMKSC5kH7YZVM9Y5LK8/1u2LVqLM65IKlJU143Ln8p0IyEPd6fhk9cPT\nUKYyb5pWjn2GvCase2dkAJ3e2VnlNl5hUamHItPbzAN/jJPM6nP8XJia/iY6\nCnb8YqMrp31FR9mGVFNmZhpLZMBCo+03GX/qQLZ6TwXT0ufH+OWm7Qu4j1km\nBlNJd+cIDqX6UU9/YwVASphYqoM0i12JADa4+l+BH39VImN+rWbQBJUxrsTD\nk42A\r\n=PfUx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHtmpjqAe8ADsYaCMk2jKPwlCKu1KSXMWI06dSFvWaTRAiEA3ZF3eJgVbhhcBCTPoCrdv30SMY7Ra4ASx/hR1tfqiuQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.17.1-next-1588602342-9eead474.0_1588602400834_0.6466681497926363"},"_hasShrinkwrap":false},"1.17.0":{"name":"@xdn/prefetch","version":"1.17.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.17.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Pi8n8r8DiNzpfRXaFh7vxHlsUiLonSFW6usXtugQ+pM+0ngO0KNwhM8Lhz/0h0Pp3yaf1P19ZUF7BXVRp+cW6A==","shasum":"ce5d9a0a23434f0243e89b6dd480f2aaae9a8a75","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.17.0.tgz","fileCount":38,"unpackedSize":58671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesCfJCRA9TVsSAnZWagAARIsP/isuw0dzIVSh1/5YDcH7\nUYzKkzcUgewUgFolpvkbUtza4J4lwE4duplqgsWIE/RBi4F3Z30bQvoQQKrS\n1fL9ABx5MEJGDn04SmaVgCPbMxhXrMsjvXKOoGPuPuZzXxIwjtW7/XnhAA6v\n2og6MM5BeplPGhGMXa4vMaZycMK5XkL3fe1eMH/djV2Jip50ILzirIAAqcCD\nqTchMojPoec1zy7Ff8lusUX8AlxGYJbE4cAuFqvI7K8V6NdcR+JOntUm7IfX\nUNE4kknxj8UYlLzsU9kYBh3k8Jg9S3IU2toKLDYfPE14HxEBPDw1zybAT/pk\n5UXap+LMbHx+JqudMsK3cAxidDTtE/h0/5m/NhvkrMhKgwWbFkVeCgYllVQT\nuGS0pr5Sb5CfXmHEBhglYcJ0C5fEfoMZhGYi6jVZ3oAVx6giuLzMc40FyjvZ\nA92mSgtBUNoK51MtLJigi3m+fnUdzaROMX3PPfetksL/IsEX64n3/Nr3CwCI\nyQyPyvDlbf1vFLgV20wj/8oWd4tD9ZIOLQZfgIe+To/hUraq6j05GAih0q0u\nbWscCiyuY0o+d9386AAX5t1C+IQK08hPNaAQHe35XCwsoTE++8xXRzeArNr6\naPq1ovgjOZljdOqIDvrkcXkvgdvDTyGxMsmAf03lZVXUCMw8hlAYrm3HRKk0\nf8Y2\r\n=gEVn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUr/uB8GoMquVwnNqx6zAP6qjgiVRTISW8WS4rTEuRHwIgU2JWGxYi/qVFIYMhGAXz+Z3mdRu7wixqb8giiPTl0jM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.17.0_1588602824940_0.9558296978851455"},"_hasShrinkwrap":false},"1.17.1-next-1588620657-edccecc6.0":{"name":"@xdn/prefetch","version":"1.17.1-next-1588620657-edccecc6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.17.1-next-1588620657-edccecc6.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-J00kU3KszkofKxAzW8MnZ/JKy0xT7S5qW6x9Q6LtEPlWr0R+yy/o3CxzGdwtpJcAdaOD4M7Sk1rK+O7fGOQSHA==","shasum":"7db140b9241eef6fde4aa0b40d748957f53a3ceb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.17.1-next-1588620657-edccecc6.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesG2lCRA9TVsSAnZWagAAhNwP/2YhodW/wiXLH/lsx4a+\ndhkRMURYKn6YGyXH+g+tQ6XFvQ3FWC/96XM2Sb2ANkvpdmBUbiLCiiTv+uck\n0ICEdCw1Gh369H/Edz67i9cjg2VJxEU+BPp13iUJqiFHdMH99WctNkMy2or1\nQXwFVf82D4mza18SmBvXdd22Hz1ZGYWgPYpkZs91K8BT+qQvwkKkkQKVTKUR\nbQ8fZGvWgnw808ngIksJXDOb1sL1UQIOIGn775xtsvzRq2FPC1uCezFaWlaw\nLbk1ckyBIGK/GUtC/LibQNP3ylsAsMR3LbttqtwXDJEEI+ayJgRSyHLBNVXp\n+oyWvvDt2XgAmMaaVuGeIBqNcFeL0SCSV/TYMeKrKZGbV2Qm2l2BUPT89OhW\nu6LSlJhq8GIFtgICoGrj44faqiJi3yBuZzFbCyy66XF1G18C9oHutBXdC/WN\nVgdO1Mxrpt/IIqzq6XQvezZUbGtD3KnVhohNIjG2dZ5RUoDTzwyvHmEmrxYE\nhjGqi2vPve/Aav6FbKu1yFtnnbaU6G+ZXy0+vD/lVonfOEMFuySHaiKeJN9p\ncPxFU1LPrFhWTeysdE7JHGE/NB5jCf2wNTyPgktKLjlxE8h+Q967VFH/7reU\nT4GpSsM/mf4UqJ9viWk5mYR0WxqzgDSSGWyk1Bvg6YXTV7Lsi2DkniKPr9I8\ngE1U\r\n=D9vZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCf9Dw5aC8KBRt4l4WK23vwEzMMGbVbPjjgXSe10MdVHwIhAMzF0G/3LP60/ittBZl6TZf0BV8NJpC4Oppa4kGSqKhC"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.17.1-next-1588620657-edccecc6.0_1588620709261_0.475911753295835"},"_hasShrinkwrap":false},"1.17.1-next-1588670928-da808cf3.0":{"name":"@xdn/prefetch","version":"1.17.1-next-1588670928-da808cf3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.17.1-next-1588670928-da808cf3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-CAN+iWXTvh6Ri13GPOettPZR2eXMfx1CtgLlD2btSQjoP6RtdBYRfJCAndqBjJAoRdYXFN0cayymBar1QoUqvA==","shasum":"16b654836fe349055e639ed60571324f42d46c2a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.17.1-next-1588670928-da808cf3.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesTILCRA9TVsSAnZWagAA1gAP/3bGJi8ka6FLowxxsk+Z\neKf/RYIugb8fqaGcP6ZGkEuP6tjTw7wj9HszugQa5tKaN06uAOLKKFK311Y3\nqvkQ0WZlClMi3w16+9A4nMPOl0Jjga7S/ttz2bBvJcUvX+zUkDB1jVWlZdJK\n07KYZAdzdgSzBTDu/cF/HXsdInfyIa2BvYJS1GtSXHtR8xk4/Qog72NHz1tn\noLEWLLJLPEFZ+qQEAkxUi0xe8Lk31dTGL4UeMtD95oi0CZDQm3807Q1ArLIq\nNNOQY4t4LURHawfT3x8L7kQihbgt33ant61YweFXl4yIS/RTNrfiGhCheKab\n2cS/z+JGg3ALRs+mEeaUJRQaEHq5XTTs0LHnNjUChySlr3L+dBrOJ9QVx1YY\nXZF4WxrXRuLiwcxMROeU92lLIYSfumEjwGuc0H32Fx2Qbe/UcOpjJrSW3CCr\n0Lobnpld3BmmK8Uqc4ZrrZwVq5RPldHk4+C8kczgDKjPU3KDVyVknm1ZJKKP\niQOa+ozvHfsyNKDhr29dRASCybg86CdHWcbdo4JLyVTgZNrXqOvTJvz5BZAh\ncKCkivQjmpY3XW740biJxjk1jSiOi4Fghe0wRI3ruL9/AYRDBqFjmRrny3Ip\nJhRz6W5R0xlnZAiGrzGQbfQWylSn/S4PBr4kYadV0DtytbkAlzFzLv/B7/to\nHMpD\r\n=/2Pl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICdHA8LjrSXPQ/B9HEOaypAtTNOitK56TT+RGzQHpAk5AiBD2mZ3HwuNzBhdtq2VOOejtpiENf/POMyXMkjKHFye/w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.17.1-next-1588670928-da808cf3.0_1588670986734_0.789641756982848"},"_hasShrinkwrap":false},"1.17.2-next-1588676577-415ef4c7.0":{"name":"@xdn/prefetch","version":"1.17.2-next-1588676577-415ef4c7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.17.2-next-1588676577-415ef4c7.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-1/lHkmmhy+l4Bwxck75zVNRF0m9HqbbCtAvYpoOtSOX+vhBmehta9Ghi06rqWhyw7hsXmoURc0xQBe4M/0YIWw==","shasum":"8e434d53a6afa3480d94f0abbb84b2540a01ca2c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.17.2-next-1588676577-415ef4c7.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesUgUCRA9TVsSAnZWagAAayQP/3p7J+BIRPoczvoF4VpF\nHBO7ZuYFSC1K5rJDp/jTqDUXqOBF/xWDXNkEU/UePTzDu5XZtvnPGb50tTxq\nPufKXjTzUPU7cK60lk8EURx5hEDBsEKcOzOySijPKvHxA2ht4rzOJvYY9GvK\nPYM0evyZBz0Ji/IcTpml3/R5+zZ8q6yaFnNemHCTPgOrn+hEScSHW8KPv99r\nlT1XCMRAYtKWAi+eRcazElPiGIVpKCR5zU8FPc+Pqdp2BDy6x3514ASyYTaW\ni7neX1BO5osnHz1xNS98mKOYwDeM8NT709ghO+3wuR4vKVsQ8ieWRvqpw4Cf\n61yPGCXpOz/if5SzAPoneohppiy+NzbSXRQ9t30UOHpdhU+kb4pUrBYOoteO\n8DOm59MNRN2VUtfAIrihJleNApa/xJlzHFBXpW5TY6jMB8EmQLriaAVOCrC0\noYnCxvxmGdEzxovhxwhwc98DPMMpFX/0YTHQF+871IpVCRtiSQBcGe8zcQGc\nx++91Ozdxw6bnrV2WkKgpb5QImYAqDgkbiOz1qrjsFGrg+TLY0raEKJ7288T\nxmA2nwY4+XLyVK2tl55lYiO5GFi+og2Nudkfdi+0LuCzTeZDwMNax+iV8ljC\n87c02J03ZqwE3AYib+u2rwtMAIIwweaS1qE4HkN8K2Q6JIcxflTykPm2zCIR\nrvBw\r\n=au8/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDHn6X2LJI4V766JkRT6VS0mkL1Ajjjgy+t2VjHQivqqAiANa3L9j/uddpKCca+b1YwQecujdrEaLW8qKjDdQste6A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.17.2-next-1588676577-415ef4c7.0_1588676628412_0.40599194405511385"},"_hasShrinkwrap":false},"1.18.1-next-1588677172-e7f92424.0":{"name":"@xdn/prefetch","version":"1.18.1-next-1588677172-e7f92424.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.18.1-next-1588677172-e7f92424.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-MHqUmmvyX4F6ectfN196+xa0cnWh58hUzY+hAEwb9ArdtNjsnWvJfMDup6fb1kThwsIFV6VKhFG43f+XSG1vOg==","shasum":"679194026c62802454ca7f15083483b1108dd83e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.18.1-next-1588677172-e7f92424.0.tgz","fileCount":38,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesUp0CRA9TVsSAnZWagAA5U8QAJZnRYv6l/pdE6SWheef\nQHQbdd/LJkQbogOWsfEFjnw3LEs5kXp2f3+A0n57rVg/mL8x3PLaXAiGAIvh\n38B5xeI+Dv0zAFxmBMzmCNrRVggr7GPbwmkMEiS7FzahjDSiohJfEsNB2ZTQ\nhZI8XKA4hsWDsAcJ71MVjW2Vm0DKGZ5ocylCUA8jsUNdSc8JGRKN8JWquEQm\nNFW3ET7bCFB9YXYRAZAmWKf+wdv/gjj3xhgHsacIR6yZSKGMQugtoKiC7JcP\ngKZ6o3IRJfWoReZeCAkK978JPIJ1viVoQSfh8XLrnaH0Twavdr1YHYd7+5AH\nJjj4eDdjDD44VZa7GIvUNvbWDqZIKu+G7xGlJbq8UhSrxOfppBM0kSxK+W3+\nrXUBgYkIWvydPIQEBqX+oEHl2tTViIOKn2vm3e5qBxXXIolThlMxUN1QiFEQ\nKInKoIupTLnGRgsL/rHu73WMEqxRRcVvnUaGnskf89SU4X2T/fnZzBXvvmLx\nUYQjKb3qiuXZ8F7ymMUsbJvOhF4UtjxG36VDoIXKAx6kfQFS0iTFI6dAnnKu\nOs+jvbrb2Uzud1lY+4Zx0yu2ZPvlfokT4LmrwR/9Uke50UXxa5QSiY4/rLGu\nOp7x/zLtYUTHkb5Ntpv1siMzYkFeZRzH2yH3heVCJh1q+K9jGWGAQNbmK439\nn3fC\r\n=8Jud\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDidClnZsTAkw783eMBc2lzPNUasuQLgRZCnaHaXXrVNgIhAOcrNYHCl7SgniOsJlRxWzQ9qtvX/pe2rOesDv/rpJ1U"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.18.1-next-1588677172-e7f92424.0_1588677235594_0.08327465417468027"},"_hasShrinkwrap":false},"1.18.1-next-1588678598-df36a043.0":{"name":"@xdn/prefetch","version":"1.18.1-next-1588678598-df36a043.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.18.1-next-1588678598-df36a043.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-rSBxng1QMz+Q9I14CP3HLJsY6uaIze4PpckRpIhupaOEqXX2JoB2D/l7j/bxUq00K5wkyIPRrczGoR5R6Uokyw==","shasum":"a8b7d857c89bf05646664fb1ffc0c42fa132d5fa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.18.1-next-1588678598-df36a043.0.tgz","fileCount":38,"unpackedSize":59769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesU//CRA9TVsSAnZWagAA9A4P/js9j3aJlUh+xGioshVO\nNj+HNlz+RI+DY5z5d1VQ9DHfZVxconlM6NPhiqL5e+52lk8DwNg/b3mJ6DG7\nAV3eYyh13krNxzDvEn27qXSVvxBkEFEWnOiXabBqqwsSsopXG31PdBSGw4VF\nqF+Lbfb7mntWNpJy3WrNGzBbZXKmWWoNi4LbJ+GSzxzOg/jtdbV49if7gglV\nlYtRQYKcwaKbIU1M6sEI/BFxAGlOWLmH3JX6zWavvKd20EHkj0uoVgP6GU2+\n8P2U9SIvYCFB38AobjRZW2ez35uBwbssi5mwGEA7ZonSFRHpc/UrNTYA//MO\nDOvUUulucI7eJ56uslWVl87qULHGU6vmXMD/yxz3lsbDEGu9srEX0DNr5f7C\nFQX2sbzRAfBmmXbcXLpIIZwwrAmj4e2gYC9aM36GNBYCnrTkOEUQuSHeXGUN\nUqb5eHnkaDGx3bkSq1E2sIt1fiMQ0Lcgc2XDtCwK0cYswvKURm3Bjm78QSJ+\nAnnXradT9PRoilJyuvS4bYfn6/fx0ExnWT1VdlOOKjR/9t1b6FZSdo2b6uA6\nIlQS/fnRvsNOtgUVTEkhN/EUglG5LzuAROeaSjR5YHDbpljpcqQYM3U4FouH\n2HWfDDZWjczIUtoo2t7r19J5uixMdq7pk+IdmxA3EscDvCKsJ3jK6UH9cFgk\ns6mi\r\n=98GY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyUs2pAcPqKWQgVrVNm5/TCkhvnbcc3l1fKL78X6vLNAIgCAsjgtllDY4vnqML9pHplNk+PbRSjHLPCAUXC2wkXv8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.18.1-next-1588678598-df36a043.0_1588678655427_0.40321849134350285"},"_hasShrinkwrap":false},"1.18.0":{"name":"@xdn/prefetch","version":"1.18.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.18.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-FGBj+i9fyRP07brIlMztZ8VWF8olX2PWlGYOOYtFpCTSFERdG0tP4Vnw0g4zuPwNPap2j7eLYTHwIvAzNr9pqw==","shasum":"7101e7f1994cc8cd08f3a2ddb76bf06a4e0b1df8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.18.0.tgz","fileCount":38,"unpackedSize":59742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesVD7CRA9TVsSAnZWagAAWIEP/1ClHpfB72+81x0oaM2e\n7aZMDxXH2lP8Fus8r1LMi2e4oPeS+lulYHyYknefCy6JF6opBgBI/ux30O/f\nZ2J9P9zbu6k53s5b0P+WYG7Q6/7RtPQlXao5Qqup8tomnQwsfe9pEsUBWrDx\nb4m76mX2A+KdbnGvz6W9EaH7D3Q178H+D8vUuT1GH1xh/cHBtBoIlqQofcxd\ngt10nKtecBTNs0dyD93mqZBLK/KFi8TX8lQBOXR+7ePXwr+PanaoPXDbOszi\nCH7n93LwjraJ3irvW2snSDrq1poyBhubrP84IDMDHxzOF492UaLt4VIjWnsb\n9SJb377wQyqr2ZyDLic/dMw6AGMnYwgqGjAHHsXq7vv4MtKyTGPD6yLxR1m2\n8Ajc1UZYZsLlzS7cv6taoA2EZ0WAw5BzCGx4huSd2HK0V2dQmA3f+0DwDPxk\n4YJo4tmf3q0lino2hk5W3mXvwsFcC5tb23yFYaEmg5HOQ7slzn3Pffi2iVxH\nI/bp1PMlUy+sZ+X6Laz70n3pOL1ULiq4gyxLIOwj+JE4K6Dv060Dzr5K69Ya\nXnbiYnFIC1x1yW1UVwmuvXZ45temKB8MgMufdXcAicfxSzxg8NIk3tSIXVpa\npTVS+wvSbkyTOhhk0o18rOimNnbQ9OAZAL30e5efgF7AKen3fVjjUpxTNXG/\nURQw\r\n=yPsd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnES5l6Ummx0/eqRgy68dUoiysmwv/8SsaV2j1AFrnJgIgOBHuuPxw5QKGT+WnIJY1KZRzj61dcJXY2hRdwygOqEs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.18.0_1588678907435_0.84833782371707"},"_hasShrinkwrap":false},"1.18.1-next-1588689440-43307b75.0":{"name":"@xdn/prefetch","version":"1.18.1-next-1588689440-43307b75.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.18.1-next-1588689440-43307b75.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-gwEcdI8X+Y0DGXseC+qvdn5tLs3Lyds2juNjmWEQBiDYcFf+9eyS2JEnsybZ7NSoTY5dsxf1SSngiiGrkBihfA==","shasum":"07bd879fb17410dd7d17baa2db455903f1641dbf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.18.1-next-1588689440-43307b75.0.tgz","fileCount":38,"unpackedSize":59769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesXpZCRA9TVsSAnZWagAASZYP/i/r55hjkwnZbaadtolo\nYqYzc4Y8eT9NEryQTM808qEKrQMP/VPSIuXicRGWkTKwH8IS61uofS2DEt+W\ns7JO7tzSsUt3GTCW5DZYn3zlTslwNS+OaFSYPyo//+7ufElu9G2zYa5vqZjq\nCmsOwH/xE94CK1zXmVG0/vmVRmZDpWxG+t3bbp8T4LoQ+hpY+ADgu5QiQ0oR\n9Tb2z7dsR6ApJ20eVe/ah07IcI5ygIdDfDiE4ZQ7sAOKSy/ozZZY03Tq5WtQ\npGqbUXao4jt4yDLtOwu+HOlgypBvQp4A0Bdh3KKx1LrNkRYySWlyO8+xP23A\noVyf7iKVnwg8Ra06eY7dL200CoCJIJ2V2aKFawrbWJoGW01SHCZhv0Yctxp8\neQpKbvy3iPUQcKnQ+s0d8jp/4r/f01n0F4mjwtzHIo9GBfBIL7fb3L8LLTk8\nYrcJHz5nDxVPz1LgpeXEs6s+JTnO0dO1XxeP/zol3m/kUW/t3DPygU6HYeAp\ngD/PgysVHdIrwd7dnDVwRb3mPhaoO5ThB9tkz1g5OetbJuy84twNisQ+iy0V\nw3sq5qCeBlgbW3+a7E9wbpLAbkEM4ViT7sYp1ddg432je4osbaWihCbNEcRX\nNYjIF1wyTGRXDJqecw1qbvqiV+jXg0keECSW9pQyi/XdPg34Ch1BASbiW0s6\nz222\r\n=aGDd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTlHnjWw0tEbXo58juvtjJ68LvdOKYMqJaPWqk1Jvk7wIgHVfB6tCrZDl6WY4BRCEX89BTgzfk7b5T60fnGb4VEzM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.18.1-next-1588689440-43307b75.0_1588689497231_0.48149843605060005"},"_hasShrinkwrap":false},"1.18.1-next-1588762242-59d91334.0":{"name":"@xdn/prefetch","version":"1.18.1-next-1588762242-59d91334.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.18.1-next-1588762242-59d91334.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-en/4T1u52Y43unn4lCni/k0CAPW9+mo9y540G3VdKg5kaPzjdrzg7OVHn2l5ImPjjHG1VTByTQ3WqV8k4TnT3A==","shasum":"f71edd4cbbd43fd7baf152d19d1ff33f59cbc92a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.18.1-next-1588762242-59d91334.0.tgz","fileCount":38,"unpackedSize":59769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJespa5CRA9TVsSAnZWagAABrwQAI6IR+J6IJ1cWBDS147r\nG6DLBUseXNMDcT7hYRXO2Da6veL+XE7jCGt/ZuQvlE4yuEibIL9b8IsXwQSc\n582583jSBxYsQNA8ZZ7NsWryvbZwn8ji6TMjZ8Sq5mC9DH0b7V2bgkI7Iu6X\nPLnIHGwn74YGEqTAyrb5oG0bBv7mxhbIoosGHMLcRF2Za/knMwvnOXsPFSMK\nrCkquTfXm6Ad1pwNLuCWRYEcR0u/aI9MO9wkYRojzfR7ohjklloxQl2k4kTi\nn/ljJG6HDLHM39iMYaGWujbU4DJrAcCTZqeR2ot3s59wm2We6ZXBJKLOsFCo\nmUgLaG8Bjj86FMmcIXT/noJ6xNzu2Sj26PnnHvB20ljbanVZyZHJ/UOsGchg\nmpPLu+lrUWFkfON2xgq4vYLm+0NdHw+eCqjft9szfxPpRNXt/VCGzjnzHyb7\nPMVSrhj2dcLqMO5NeYjsq++Wjrmd4ak2qN0HXpWMLY+CHjdn5EYGgxL/aZV7\ndwG6wH+faFMQGjNphvqSzEbl2Knk1oT/1Msj43Xso0vNEVQbfxqNwfQQ9hi7\n/e/FAJl6LuggzbRA0HWYS5xMsc8LFf77Bi2lj+OWUYEeAeDairJB0kByBxH4\nIBHdBfYascNi27uux8FxX7UMniXGIEXIJ/UN2wHOoJvKSHXb8ZVai3Q6hOIy\nobVX\r\n=ftqi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICdbfNeGztG1GInZe7m6vVDpcwhNslh/zPR2o/rj2CytAiEA86ll5j9wTIzFpZ8woQ6XKBPwJx6t1gJb83TypsY21Oo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.18.1-next-1588762242-59d91334.0_1588762297136_0.9126919749613005"},"_hasShrinkwrap":false},"1.18.1-next-1588765756-2ff6c5a9.0":{"name":"@xdn/prefetch","version":"1.18.1-next-1588765756-2ff6c5a9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.18.1-next-1588765756-2ff6c5a9.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-6JPg6Sfs9PJAwNjdjGIo8BtJSBTdLyFd2ZsgiFhwkMeJdFOmtUKCxcIVpOaJZkfLoUmHL7CPFA4KR/BljkKdwQ==","shasum":"25d466765dd1b8ee763b9156a2ffae9496ea14df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.18.1-next-1588765756-2ff6c5a9.0.tgz","fileCount":38,"unpackedSize":59769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesqRyCRA9TVsSAnZWagAAA/kQAIf6Gt3lNzJ23cOyEubZ\niM7bSgGj+eZtoQazwMTL/jn+1uogVUF30K5DVhKrqX2asEtjiQujwAH+hKqj\n6YRH6dXq23L8Yra3YOd7o7GMZU6X9vU1tb/3C2FAfQ94xB+yE2aJcuLMhDp5\nssazuVIMOlKe5tvj1dbVes3EhSr1S5h33pNn4v49wEBIzy97nWRWyXpCUTXA\nJNGRx0MS9F7DFcrRbO0W4/t8sdqLpEeXK/PzRVdcsfu3eYx1IHlCHg3TX8if\nHWz2oFQUdduF55doqjjSHb4jps+jwDxGAQvakPt+K/4JqHZKPT1Rvk8npKaj\nCFP2AZz+8xNBWgoTurWxsCLGaLSVD6M9lGZfcr4OMMDtpARkwPVrdM0i+Ajc\nFtWyV46B/rPFv3u/8j2Ue79utiDFjjp0IpXM7WSw3HbJ1PT8Ac9qaKfZ6W2z\nfzQYbElTvxCzY1S+4RYQ+NEt7ZQUp6WE5RzfP6bYk6zOyj2ZpzF4CNq2BOMi\nEE4oC3KH66ysQRsuXe5Bto//mYEnJ2QYhlVV73r7h2Jw4V7Ky4/v/8MXD4qw\nttIUiLVrPaGSEd6+PoBfRiiJYqgziu66N3utdjqHVyms/oe/E9BkmuYEbkwB\n+kXjK+XoPZXT/El1i9OdnxmRcNJi9eNyuZv9Q98TI/zlZ7p0z/xC0ZqUjGMG\nNOkf\r\n=bCmC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFsqoF7M+m//kxX8kQQ4R0OD0pyl6gb4d2OioRKuV29/AiEA/ZyopyHhQat0gdxbn1Epy3Q6UW54TIsQhpMLtwHjfNE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.18.1-next-1588765756-2ff6c5a9.0_1588765810484_0.22831971493846148"},"_hasShrinkwrap":false},"1.18.1-next-1588772496-66e5946d.0":{"name":"@xdn/prefetch","version":"1.18.1-next-1588772496-66e5946d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.18.1-next-1588772496-66e5946d.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-p+vk00DkqTuEOiqjpGR+9B+tfEBdtsVufYFh7WPdPyKG/xIvzjWXyT+ywamgBZ9recqRUR+TQjZiz+d1LFmnLg==","shasum":"d31f5f912bb7138798c1adc00534686641962d25","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.18.1-next-1588772496-66e5946d.0.tgz","fileCount":40,"unpackedSize":62727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesr7LCRA9TVsSAnZWagAAeQAP/AhIBmDoWSGf+yzHKatI\nMVCR7cJKh49mHZ4K5rGFx6xVp79zfWdfA69CjgyxXEViZLT9eZR/Mo1JscXA\njtxJlkTPaysY6HCWUOdQQB+wpa2leukoK+Fp39iRnDCqfLueWl6YndWU6ug+\n2EcqwfzGYeRbexFq7LCy3PA8jzI2LO1ZJRQdtS6yaQwJhITcUacmC+SbJ3XE\nrt62aLrmXpwtpFk4l8usXK+36X0g6cEcpfstzt8YmiRwxqNGmilcDvznTBEU\n2Qy5wmmbA5Q7nq/z84NKYTqEz3WIuhl6KpKwXMsBcJaoeyTz4TZwhdBji/Lr\nFaX41YdFb5nrdXNcsexfOEjJ3iwQlKIT96rhZMxMGuOLIW1FbWqucWRpqyQW\nqoiQR02ZNmU+sTUiyb7itMo/oLxQoSiKFLqWpzRMEhgF0VmBADEbJurNvdT4\n0faISCVVGZK1WnwSdpgKXdKEwDVDkM7geaBQtk7oLTSfMCaXlVRXB5RFt5Yr\n61KhgJhdKj+Bk0K6erP1n8UvezD49xaLfagmMMpjRxb8MsDw4iwLd8uimXlv\nem5v3dmrdBbzFkcukW264TIBoDG2gBjqP+Yb3kgnhZq/lN1ccC51p5OBV242\nvid1A4GX4vG588jXzLOyEJrgd2acpu+k1g6/q1/TMJX6ONqXvoii7+lbmzax\nCQoC\r\n=OJ9J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdgl/w9dIzoUCU0WNhJBlDdlyezHcaOCkthhnc29lMdwIgWe0BFV1qiOICMnJWD1tr4BybOs/+kb4v1wsg5WOpL8M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.18.1-next-1588772496-66e5946d.0_1588772554779_0.8688256198130007"},"_hasShrinkwrap":false},"1.19.0":{"name":"@xdn/prefetch","version":"1.19.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.19.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-cbX/S/4npnbD3xmZeP5u3/7DnskxIo15xW2f+Z5CWuBHQbH1o7r2T+D5+WceQVVW5cVYgZXp/TeZOWyjeW23gA==","shasum":"c5db59f0c7aa99b3d34a194626432154f4a1e725","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.19.0.tgz","fileCount":40,"unpackedSize":62700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJessK5CRA9TVsSAnZWagAARrwQAIqhcUcul0v/FR0W68GJ\n2CuVXpcZglpuKq8iZT9LHnf8so0ooRZotb3BKlUYGUEyX7GsF2OizBClguLX\n+zYUHOwALr/Uoo3gzQXDsLfmnlem+Xci5tvtBSymfzEFSGoZeN0ePvOcYL43\nw4AYk265crbgi0wM59jmgI2rnNXlg29WF0BwV85vR3bDE0AidNACVf15VXhU\nswQ+/RBCe/2EGNFHrPQqROdEahbdacc5ifGVc/7LsdcJ7BVJlC9KlR788WeN\nnjaDojjcEgzQd3oqN0HGc/iJrUNPk3dl5mowtFaIB4465fo4BxJl13ow8G0a\nDQBkTgGsfAQFedvejD5yqTLK/qcSL9ZFGRNp4wNkh8IXzJSckhAeE7PLtd5L\npBIBnhFuf2Dp5YmA6X/Fkxw1c/c9bXsVK1ZPdOI3ou28FNnWfK0iyFbZfUFa\ny2JrVFAbgT3rIVg0OXhh0R11WPIqkbktuLRX7YPFDTo1bkSnJuiozDaFFsKE\n8wV+2W8hIggxBya55I/Zz2HjcARbJH4O70buJ+gMgwOKlODsEQC5VOaD7Kv7\n1AFztvTcQwCxOog46Yn/75UClu6bdVCrqjx27aPIescAbxLBMpulFszprlHX\n3SM3fHqcPiGFrmmk/Hzgf32CbeHEqnNW5SU5hkfpHUHqIYeOaPKuzYOS9Wks\nybhw\r\n=SiVc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGkMrS/JRJeD8Od20yFTpr7gHnQNqHQnnZo1WVT2zKB7AiBn9E06PnUb43LgahBAV146Cd8wiDAL0H2MkoJpzQfZKg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.19.0_1588773560375_0.22749220459426045"},"_hasShrinkwrap":false},"1.19.1-next-1588774338-5d34acf2.0":{"name":"@xdn/prefetch","version":"1.19.1-next-1588774338-5d34acf2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.19.1-next-1588774338-5d34acf2.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-giiTda0mkkLQfgu/eBGqtcqAPh9UUkMiX3QaIdJhM17Y4bjy6tvlNv3EJgVQFTZGy2Se6xUQIrjtrjjx8zRvQQ==","shasum":"9ea9ca2ca22d933c49a9f5d6fb81a90dfa3989d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.19.1-next-1588774338-5d34acf2.0.tgz","fileCount":40,"unpackedSize":62727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJessX6CRA9TVsSAnZWagAAEx0P/iJUDrtyQcYPlMSZRvZt\nt2GskvlKtRW7u9APWvQ9MIEb7MWF0FnvjKMFq26MRDvBja8vNbfm5V554CSj\nWed+m4JHt/8W42f7gpKd7Gl/Tr8JtC41fYJSFdYZyGZG0UyXD2gq3esEurg5\nrgLF27mWnMP6mGyioeCzNQLjBIaoiFaX2r1lbu4Tmlz9a2wS0zwNq5gyf2mX\np0RRFEjc6b4Vfty6AhLocYiLI5ReZ+bku28oznJsDi3Oek+0sX5k7F8Wjmk0\nyxINfiMLBD4gtu01eORU9+qPJbPPblmfybj3/Hc57rb8KOCu+mSRUvXXe4YN\nQhsiPzXs2/VG2ovQtEO6usmVjJGHgEoMMpUQ327jhSJJv/hr0nJY5tAeciiP\nrhMtLUT0KwchXYxe4GK6W4oXsVVYgzGJGas6M2iFjjOQdGEbn85ST4lMvFXK\nsr6z/qyFYzsCTxIkDPTDwPc+dEtpgXxwS9hQ+U0pfrnyolRJd4N94i2q+aYA\nTfHfkBR2bTpxb/pficzj2sGLGZcy/HzLu3Mcf/NDd2Ziftb0RKb1KCtHSdZd\n9zHFTtwuJUEuynOHa9GkNWdE1SNIKNAY8IhttTXXgarl/ycitLYCsL1QX/6C\nlT5FaMrCWZ7G5kZUIAE01TaDPseAmREil+zYAfm/a2xRkdegM+GvTKmUAxlR\n1ob9\r\n=IeTZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDd2J8YdJH21hquxSFl4qmIhfFXxypPCf7RShqbBLSejgIhAOEyTBRWWpndkd3TytlUmwgKxFu5ecRdJsxeKr+/ooSb"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.19.1-next-1588774338-5d34acf2.0_1588774393680_0.5683505358239989"},"_hasShrinkwrap":false},"1.19.1-next-1588945279-52bc97f4.0":{"name":"@xdn/prefetch","version":"1.19.1-next-1588945279-52bc97f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.19.1-next-1588945279-52bc97f4.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-/nQc8KczxJVexLH6slMfbQoTHnegfysD1jri12xqxpR4oZJ7eEO7H70UbRLne8kNxZHAx4gP2cBJ+PV9IQrTsQ==","shasum":"d27b05d84c2a32459b7cfc474ed2ae1e9c26fa44","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.19.1-next-1588945279-52bc97f4.0.tgz","fileCount":40,"unpackedSize":62727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetWG8CRA9TVsSAnZWagAAywQQAJkRUOGRXsjwyvBwXjaE\nuzsDcLhUfmYDdHL2UrrLO/X46eF2t67bR77UvCYAKvYu77p9jyVueLpz0wx1\n8z2GMfPGRqdCYm7NGn2FXVn+GXfU+3ZSiRgtJwfyPQ9BfU3nRBODnAtzqD7P\nt8xPXx3gZKQgTBaE6BJW5pYR/1Zhr8rXtfxZw2VxYNlawMDDZJk4hTTxTkXe\neN7EH0ZhRVqnORM4T5mcfRoFFvHzRC8Xok1oBx4+pl7yzJWcAn52B7tzopiy\nvFDwXv1Jib96zT628CweXInOuDFcCDOPdDz6YNgNy+JzVdno19Ah4m1sR0+t\nmu9EmlVY/GUFjAWPsvZFlBYl25xPnHLnv6dk1981QTlh0NvSi0RJkp8OouOj\ncaRsGjr9N870NsK2yy9r09aEArJWJUryVwO87zeOBWPEbqtet3RhH5/gcbZJ\nBWKUNTXSU0kok+r7wPQUGU834IqyzqUKuHDTFsxOVWgyQoFuCDrSxImOJLj3\nVSdDdWx5xSGITD5AM3fVsBwvZsiuQ3nzPFr+cGH0FPIPiPot8Rm6uuey0rum\nhDBZci5MV5AVKZeBtDzUCAX8AhA+NtD6p/7PktthRi4bZSUkN1YHbYbPiasD\n+auXFN40czPj8cFvx8OVU+9MRUHFqDmKcS9sV4fWdLR0r5mxFIt32PHHimKq\nHo8D\r\n=i9Kp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtR0LYqZnewG6n3Ze8eseGscbfjC1+MkUzfU3rkttc2AIhAJdaiO0bP/WDXdtBAl5sYgEJz7MrqybsgFZUvWRATDom"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.19.1-next-1588945279-52bc97f4.0_1588945340430_0.22362931000684894"},"_hasShrinkwrap":false},"1.19.1-next-1588945346-7d3df1de.0":{"name":"@xdn/prefetch","version":"1.19.1-next-1588945346-7d3df1de.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.19.1-next-1588945346-7d3df1de.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-CIgfvOpYT7Ft6Nq4mWB2RdueqRjXObKAg3djI+gWziVUAJyeqKExZQO3lkEIn7j/fVveuq07n9TGib11+BWH0w==","shasum":"afbf7372248439473c2123b9f0acb0108d259931","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.19.1-next-1588945346-7d3df1de.0.tgz","fileCount":40,"unpackedSize":62727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetWH+CRA9TVsSAnZWagAAFrUP/iCjel+Fh/PsnJOmULIG\nu5GzJr9raZy6s7TmcGDlBPEdkqdxedNmP7i6KRNKnZ1zX5Jvubnv6lUJ7Zfq\nuxPuy8r6Q2Aya6YjNnlv52/jJMWGcNq3ZgfRiG7FJvcjqcsQDrLoNyEU3Iwd\nQGnsGZy/fEBiG/mgelyCYJMVm7g0Fb0UozHGvIiymoGG04nWTSbr5zYeIGvS\nDt7tUsZe/p4MFQxRXZxiqWwtQsk+tOoV4gZuXmWbm2ojBP3BVIgKllFuLjp5\nkwrkexq7uCG+kGvq0sqkcv08E/A5SVntYKnNZvS4mCnfQPnH2+iTyOq3q70k\nl+tHvO+/aQhAOcateHl1qBlL5mk4hc+l8lXu9/1kt37cf4pGYRWZKdz8X708\ncRU6nMr7relr+vR3nqy92Eo+q4S12Yn86LbskvlIXZ7px9IXucyzGW6kDDlx\nv9Lyu3qKhx6JPsNbcS/8TUBAuu+iv25VAStuyAIluW2QIDqqwqtoYmbEyOdQ\nokwMZlwhi/K0ti4yeul+mCzdxAFLMbhtNWraX63CBwTfjY+u2QNbdNsDi9ub\n6RmsEOjoT7sMF62zFRsUbnYCWFK1O1OXZP8zlVDAX9/47ilrkTrj/t+FG0Ux\nw/C2X0igp6Hn8WRGPA+yR8BeOWADjA/GInuaBmwweWMMYk3xYodo3Ld6/X8Y\nnhFl\r\n=fIXv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEe1glgG6rCrFQmpCU4ZEjPVB9Kf1Kv4Vf1c9/ZF9l2SAiEAk8TA96/ga3iqyfgJWRDBqFdsPogN/sTb042Yehw/L1Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.19.1-next-1588945346-7d3df1de.0_1588945405654_0.39382704579534744"},"_hasShrinkwrap":false},"1.19.1-next-1588945363-9ee32214.0":{"name":"@xdn/prefetch","version":"1.19.1-next-1588945363-9ee32214.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.19.1-next-1588945363-9ee32214.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2/SLkcfxD7LqPsOdl0A1otYt8KPxUtXKSqFbnQDNrSmut17H18e7CVIGPKQPHaVabXroxRi5urdkAyKJBeeAMg==","shasum":"460c8964585ff5f1279279acbe91148af5a97ebb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.19.1-next-1588945363-9ee32214.0.tgz","fileCount":40,"unpackedSize":62727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetWIMCRA9TVsSAnZWagAACOsP/ibsVtBVhtbw2bTYG/O0\nHm1iNAl3zMC6zYx0w2t+HRRRa4Oo5YOx+BAWYxvoShBagWW257uEh/IFDV8f\n6wwGn0SDghdZNTVZEZdo8V+8QKwg2hQQtQJvlgAm4HXu0CVMzNcMx7YG1Ood\nLQW3BnlzTDnxT/RL0uqn6/gW1oqcTde9p13slS7UDAtre/WC7j25h0KbBkzT\niV0fekpsin1K2i2jU4IlVYbSJgG1CG4VmMOmQDGelrqhJnvMxolcFUm+83lg\novysh84LCo/kgM60xUYyH51R7HduSxo6xyXdj32CV/g5RIQ4TUl7k3bjizAS\nOKgK6bQxDAX07kwGXny6uJ4qimBgAVLT9izmjJc10GW3EanK3FdbtIR7AASX\nAXINgLm0gFQKRl0jgUct6Usiy5qPDkqaMDiSMbM0+qe7JNiXCXI5JIj74cVh\nln4quFT/YdLl1P0z4E2MqSP/xXKMnmro2SF/EBnYJizJswhX6cuMac6nAwdL\nq6WeIRSv2FsTNHWTMP/oYT9RwEUpeP7tJDwA4A/rW42HDjFzLuRuxPyXWRLd\nGzDUHL2HDjyOplgMbI6sgDgNvVktVYn0HDAc7tOFOcOiOyG0C3+a9SkoOmTn\nuNcSEqUaowB1gcMW3PipXp823gyxY3Uw34Da+GNiw3jCA56+0sYVCZ0G6WYb\nnkfh\r\n=V8zg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCswpW4nLisaWl2SwIBqLeFCfrM4dBbplE1AwC0KdO3hQIhAPtp8XF19wL/tzdIEEoef0z/ehpWyqPc13b/BKNiSP5r"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.19.1-next-1588945363-9ee32214.0_1588945420029_0.8570223151850871"},"_hasShrinkwrap":false},"1.20.0":{"name":"@xdn/prefetch","version":"1.20.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.20.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2iADdD/OWJ+G8BBbcCIE7qpdx7PkZuW9AugiV8gyL/WGbdMMt+pMEj60YXODPE3y0VAu9fFIEwqcLAUnpq6WxA==","shasum":"8b8ea43ad733fe62bf1df6489a15e0efacfb149e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.0.tgz","fileCount":40,"unpackedSize":62700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetWQcCRA9TVsSAnZWagAAPgUP/1TGYigyiAn2hICnno/6\nV9Uas1ArN4zZgJhOntOUY3U4Idf4cVJN+tK57Hs6A6bbUbJkImY0CoqfwZLk\nJFOxMDGfRogVKC/Lo+v94QSdd3znPl+YgFJK+ozgEjse//YmCgUMtl9GsHfb\nVKljFzX5BlHEWMm9TitDdNV5dw+n5N7UUy5LhE1+2OFnf5CxQEjsADMo6l3i\ngviyUSIetXfnnjeVlqwvmRvf2XMuaYO5fX3bCZ2a5NnOWVOnNKyNYqO0O69h\nJmxYliwWujF8fVYdZopYEcgIWNFTRge1nxH9I5PscFLOAKTwGDWFvVPSFvZt\nuDMfsxwjicZAaRY/qVuFjj/LoERTOenuKADZ0BATDP5b+nhkJ/vIGSYak672\nqDqVOuBeKZJ/f8LJ+s+LEI99Ab70Xw4N1gIqR25+Z2pGgvTrcg48N+dJw0H1\nXof6YU4Jtu6DjkVHC1yUIBJ9yh9ODt3KUeUYXZc7ugxKxQmoiPVg2tNcwzHN\n3xRBJB0CkDWOIuqln+v3+/wt+VaAL+2XxpcxA5JNt19QeM33XTKVsPYj0iJj\nI3rU436PSyhmfhSbU9rSH/BT8p0rK6qrUBOv/+l9wH3x8S/gTsKIsUVEd6jH\nB0Muc/m6OYNH1uzSpzXlrYnO3sH2MBweP1HT5d4et5IopJr3gzh7amvqaF3X\n0ZKd\r\n=LecB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHLxss+tLRREhmAB15Wap4uebSJSqZKBKC3nsHflSBoAIhAKWoRTbR1h6hVboOPJoNlY6GREWksch4q14futPniD0J"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.0_1588945948534_0.7083139524239659"},"_hasShrinkwrap":false},"1.20.1-next-1588945919-afaf5e24.0":{"name":"@xdn/prefetch","version":"1.20.1-next-1588945919-afaf5e24.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.20.1-next-1588945919-afaf5e24.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-X5r6JQ/hjU2EJAnMhQbyVFFCs0Yjn8m1t3OIsVEY71enUScA+ulSiH0zwYx5nqui+VVp1XtehKGn2m6VsOkyRA==","shasum":"77ea2b51a2a7dc96b1c0e3698d43e458faeec1ef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.1-next-1588945919-afaf5e24.0.tgz","fileCount":40,"unpackedSize":62727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetWQ8CRA9TVsSAnZWagAAhHgP/jC0x+SZRM6DjTDCybPM\nqLxbKIJNzOQi62wzqhFeYNcpn9Qx/kB5w9InEPmpJAMK0pu3H56ZUsjG5Iru\nbQw4Zal4D1xHmY4g7YTOj6wVYQYV9mHyiV+1ftYFWvFRXm/AnquQobkNie64\n7u01esQW9DZtarAwnBZ0kX8UtlYjMTw7kJHyG0vRiQiabWC1z9uwWxn50Cn/\n72O9rAvuLPnKAKLvk1lEBDrb9MtRMYz6GZcx245gg5Wv9rOs30VO91IawEqi\nC5qdSzHrrLlB/2+vsrAEmg+3By011QRjicqgmnYhwZ7CbUTQxOXi3rYqFa/S\nw/95MFl/Wfke7+RLkhaRdLuSoOQoFjPqTUG/RmpHcLHaM4TRD75EjrVTgW1y\ng/uO9WOKNJanl8ds4WHGj3rdgtLuJaDSeHi2+B1dNBbwKx/rIcCN5nvjzyig\n+tDbuZJXWuhOLv1HcVs/8r6wUx0ejqc65eetVCZosP+pU/MqNSJH8arFg4zq\nikadrj2Xwp6ApsRUCJTpCNktbv5/9MmzxERqaKvKufYo+x/xHusKPQjQ637D\nVxbcI5lnl3ncyBRpLlzIBmivOPls8xe3M2GDLq7P/fc6TKjHrrmv8UjEym5j\n1P0K0QW5LX+dN+1FqEV8dKnO7Xi/M1QcR9XsMuOAXNKGdYcZUdgQyiVeLWvd\n05Yc\r\n=VcUY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxCGXeeoTaWEb71r7olIq/QINRBTLDszlRUR137JECKQIhAPMWsVO/sT8k4+jtxg+DgjgJGGFnYRtn7t1RUosloBf+"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.1-next-1588945919-afaf5e24.0_1588945980567_0.4575002313053096"},"_hasShrinkwrap":false},"1.20.2-next-1589117911-a22f6e9a.0":{"name":"@xdn/prefetch","version":"1.20.2-next-1589117911-a22f6e9a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.20.2-next-1589117911-a22f6e9a.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Cq85owlBrdkGAqJxgM6QZak+YHS3kyk1AR2ZOhmznzYHRTzN43D1WkS7C4ZWhYiJBUZzy+MqEWyva4Q8qExTug==","shasum":"430751beab365c79ed11be1f5ed9c6da7ca3abff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.2-next-1589117911-a22f6e9a.0.tgz","fileCount":40,"unpackedSize":62727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuAQXCRA9TVsSAnZWagAANDcP/3dVryccNm8zToMjbOTA\nOuia8IlUWcwSjcPVvD4GMip99f5hndQf84ZT6ksbT7olML7yNOm+PcKfG3Vu\nQQlOf1vgtqAfiFnU1gDUFWx+KuDC/ujqZTpYKQk5TZt4kdx1cc0G2KQrtocm\nJkk/XbHttBHDrKzhQctVgzd3IL5kkBqptkL/Hued0bapoX0AToHAMPxQkm5+\nIEUuP9VqLbRPIcfVAk2UoO3JBwj9i53T9Z3tNF4DQSyRwE3hUhEYhq3/Sqzk\n4lrtAO90HxLhlu5tTG7UHd6BuptjqhrKFC8DsvD/1TgMdKoahbLSr0Af/rzf\nBarehyD/HSNp2/GZ2oYXwl7XTDtU60nG/mhttJb/QL1lPLAmWrInzyECtUuR\nAU6DmsTDsDOBckgjgWbqz0VbajPfqZRVled6ba231PRWTUf3UMjAVxHJ//V7\ny6pZmnQQqMl892n0do1ojGYDzQmY3flhg5I4SeX3Qll3bSnG9tG8rmt8ALuu\ngCZVdhT1e3YZr2Z5mkceM9A/BGlHuqfVDpz9hkaRcOXaGxj/gr1EfnJUnigU\nKaJlIsZUOw3aVWuB7V5DKWpfqI5+atgxl0PXMfqV6zDOCvDoOEXvEkuVTCPU\nYEY0eZexhjZi5BQ7zcrJpchzHyq/N9ClNrjTpxdQb30FurhGFBfWFbQl/G9B\nyR0f\r\n=3L0h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiTNd7P+ridDpSzfUTnM07lqW2kCZ4WFyh0XnSUg7BIAIhAJjYfEWfa5NniNIH+NkVZH9swFqXCu90baQISjkhcMUn"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.2-next-1589117911-a22f6e9a.0_1589117974671_0.3349049016017278"},"_hasShrinkwrap":false},"1.20.1":{"name":"@xdn/prefetch","version":"1.20.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.20.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-QsYva/N7KukLaVQo7M7wQVJmwgC7rb3NA2NYVsZyqlmHjS87vnXUzu+MD5lxEGZZjnJB7g4AKG1lkQaL4uFpBg==","shasum":"bb663f51719b2c4da506b8a345b4057311d774ec","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.1.tgz","fileCount":40,"unpackedSize":62700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuAT6CRA9TVsSAnZWagAAhMEQAJqypVQJiLE764NRE3AH\nR8QVIaSTFVctWLJtECjNwnxGxI2HDI7l7eB9fnXvft9YWWwtOdopeHg2ZMHU\nrBYfBlMVb3bSFBC7mdTqpvx4ElciHQxCUa7P+Zrfz1VeS96Up8IJK0kg4tLh\noTZb0uhv6yj6MhEHo5Z2RrF1EJQflbUGrB6lSX9SDzftev08lOO5V45wxjrf\ntbWnzzh9MvhimI9HZLJZdYGTC+1QyBrnOp2ScNQYjN+IV/uUbXAqnDsYm9sf\ngt5whVopL3YN0mWWyPJg0GHX8WJf5Wd+Boa0XsQCtFKsBNuCkvVBc7UEnrQz\nqvQy9f7ybJ7wzIXkuHtpnxCr7gs5AcUvaSHkNOJ8n1TXVZeQB1u+kao6Rjzi\nQ6zA/Xcrrwbh8C02Pj2S0+OuL0oA7ZSmX9zK3sWeg2jq3K/AACL2tuubdbwl\nX1Fk68P+5cLMyhgsctiMOXnlJgGhS74GmaFgFfLT7Ad08ZBfQbkC4y1fahbm\n3TboDuMH49dyac0OuJOJiDzR61ZFs/AZZPUO4TsAFbC2fcH+paTn46mqNb/z\nyJ4JUJqGyX7MtCJDZcQdVA0oGYgHgfTjM+8W6vX19H3AVBT8u7Z9uQqsn8fs\nGdQJ2mYFCcsy2Qrcbri4+5HCCcw2rayZrpnhLkrOIdHFNaZaYJKwGwtlt/TF\nV/Jz\r\n=euQT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAgplnPBdnvokc1X+uinhDzFZ4mCg2SkCrP6FoIuPpxyAiEA4Go5uluP8/Zqgt1daPLtwta/BLDQsjT3q/yy0wME3bU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.1_1589118201720_0.6239923854557905"},"_hasShrinkwrap":false},"1.21.0-alpha.0":{"name":"@xdn/prefetch","version":"1.21.0-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.21.0-alpha.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-qJSloTum/tx4vIPxJqQ9FMg8Gkl1o+D2SWGkVUSK9Bw5cC/A0A8eOF4HeeTpI3CV+6XWAjvuALop/wS0KNYr9A==","shasum":"d90b95e9abfab3a4a9de7e8ddcdb811f4ddf34ee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.21.0-alpha.0.tgz","fileCount":40,"unpackedSize":62708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuTtzCRA9TVsSAnZWagAAEh8P/Ay6uN0AmKrPtiZQL3tj\n17D1v1WWyQrPkCy4Ud1iphjGJzfYUOSnK4dUbS8QqXbDRVplgRNvaeKsNsfp\nRgVsWXvuYXkdJc6GHMpbl5ZroIeTiWW+sac7bsCfg8tSqrpmuoHW0oMJiikp\nWN2MdFoNVsJR2z+A1x3zW/SRzEiqaFyscHrsuFHp0V561UEAJ6w6U8p95i0M\nzT7AuZDMDcFupBkUc5VmXO+GD8CKzDfNdT6FtJKm+gqU7E61cnmGUJPqTOhM\nCHXxZ7xM2UsH4+z7y/TiSIm5UQgL8ftdrOm1m1TR5sZgExAfiM8zSu7J9S7a\n50k8hLin/9/rVTbtASe3RfW4CE+ePYOqtCojBwudIRlnl/czNb60P1KQMj9c\nqbJfWi4FYql8Of4T/y6lueGa4eFfD0pQ2NDXWHARhYUWyX80acPE2Qx/MGU9\n7WWEUc28hUg9qvCa0IQYIf/+O5QjeAmQ4vfQGJc49IYbi+yMc8KmOVmpmRDi\n5Ff0hoQANLzRrnR84QLVb0TTRJxvFcVL8Ew2dTGGcwbYYMPwOtVYp5e3K8SG\nbljb++1sPzqSj4yTv4tuESEJxJTfqXfDfE0sRy6pw2tvoETwAptYIH8e6JXa\n0ciLmceFFMDVyBnzzednXfarWRljwkVA3kpNUXyLofXDUWvoVOL45GOf7BiI\n5Ykn\r\n=sW5r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1EsgVXDDyRDs6HcGB3+KTqKfz1DLieijzZ75zQeEzbgIhAPRva59PGlGkKHlBdlXTYEfqDuuOvRkhBXXOfUGOcFOU"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.21.0-alpha.0_1589197682387_0.17965407122387833"},"_hasShrinkwrap":false},"1.20.3-next-1589201494-1c832d4a.0":{"name":"@xdn/prefetch","version":"1.20.3-next-1589201494-1c832d4a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.20.3-next-1589201494-1c832d4a.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-GW5TRb0Jr3Xy7ULCpXZaXuUMQZHUbBno39ws3+3mkGlwKROyHTA73x5aEC81uS1rF2BLQqQyuNvYLbuMhOD29g==","shasum":"4f345ebb4a587c5e4b24dd52c65caaa88abbea6c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.3-next-1589201494-1c832d4a.0.tgz","fileCount":40,"unpackedSize":62727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuUqPCRA9TVsSAnZWagAAVX8QAJatAl6UtWa5ZLgEhWAm\n1cDG6z8DW2xqpv5QoYrwEBgSgPSWcaaAAqWCJ5DXsCilh4UTqHGsXgF8/2g8\ngM4WwLcH1wyCzaoF702B6MNvR7m+PD83QF8mqKPKTr9mcvGnaB6U4seSgKip\nwCBV8W1251iDKjY9Hv+ZOLhXfTOrm+rO7yiP9JK0kmB87oZNYmb6leElOjOY\nB1AB0tSjuzzlOzeO1tPeW3vM8O8oKV6gJYgXHppqysuSCgQL/6v8I66xo6Ph\n8gFNNaYWvu2Z02+SQVeFVDUJknm8Wfm47GqkWgtegSWndEXSZdzaUCd+LCZK\nSy2e8F38qXyKEmIQW/sNSiUnOXZRjcCR+EWz9CftJRfEUrlTAKa9Pv1V7X1k\nx58zV3LxCtnI2H9NPkykMgNiPlHUgKTl38ZroZqyiFHvo9M/VGubtYusWr11\ndT9LNGZTjc+xlLXidTrnh9BpDNyglH4XAQjBvtxSW1WO+DwXS/Jyq/IuBtTX\nUevLOIkTka7XvisoUroi1/Ln6YwVCeOH+U5xiJVPR53XsNqTYQcMuLIL9UwI\nSrMzfLkda9/fPY2cGiK6cs852hRkfutkA1EBY8XMRDzqPsSQjN26LvTmkzN2\nQQlo92XSkpZn+O1qmh3hHI97kpSAV9+OQKVusasT5sL5KUxhpo1BFe287e8I\nK29D\r\n=1I6U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6TW0S26KS/VaPm3m9o147Taf2t7teUpXNcKhbwuxg8wIhAMBCBzdSEWhGqCoeNaFnD4v1Z/lRhnf69ufaRXsEF8bQ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.3-next-1589201494-1c832d4a.0_1589201551172_0.6867257710332826"},"_hasShrinkwrap":false},"1.20.3-next-1589201539-0a882432.0":{"name":"@xdn/prefetch","version":"1.20.3-next-1589201539-0a882432.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.20.3-next-1589201539-0a882432.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-qWLTCCfcSIkMBLU6/uhn8le8YhWzFl41nqcax1KbzeqWD9xvfwrnn0QTCVuZ/bpcVU4O6XK7mZipbitUC/HD1Q==","shasum":"aa688dced5e050cfb3f43efe3c207fa1207cec9f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.3-next-1589201539-0a882432.0.tgz","fileCount":40,"unpackedSize":62727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuUrGCRA9TVsSAnZWagAA5t4P/RqBLYFp9DEy1yMNuf7u\np4rPjBa5JndkKX7gnFCH9tSJ+EjVlwTqv8QNzvL1F7FGfW4f/Cjnweh/xvj3\nbKwX8mrTbmpGUinPq93m+T92rFvwPk/uIYc5iiru4A4LPmeuzEnRS1JStSt4\noJm2Glv2eHN3iQDzh2zePSqxk4VtGq8t6StZF1VQ0Gt0qrOzcaxvTa46zVz5\nLK5ILvqQZZcZW7oI9KL6uIxcHbzpApR+tzXYQW+0XB0My+tgwyhT1onXtCfo\nbb1OIff6QKuY8/LC2nyD8jjBpRZmpNZHAr2ZXOUpXacPOAEnxURhYRNpbzgZ\nj7aJh/rV0aypu9heWLD8MI3EeK03/shqlQ6sMldtQ9O985a4Tmv8xk+hDfs2\nfbzGQzuJhczSjUKJ1Z1faRa8XMY/H3Q8+/q/f/tc6e2gtAgzgRXIsGqw9sgR\n4FKZJPWHD/EOeyq2m7WI3hrKo2o8nhvuo6wiqVqg1bOpEu5nCtu0iBsg1DJQ\nzynEcaBW/I4BlONq+9Za5CaUb8JEfKGeYYxmoiFTvjw0H8HrCsspcMJ5FBBE\nyS+AvwR8mlQs9NsFyhZTPaLC6zq+ZWaqh9vsn0podGI883A5h3pNeGHOUdvZ\nm2Q193NY8kq6kgTI6qsm0ikuCTuYrLFbh2nh1joxpy1oEjnsc3J/7ycMgQoN\nQpOh\r\n=y+sT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCH2KaBQh1iHb6Mez4DIVHXpuReWxt6vj3FIDBtXorPPkCIQD7xLLKtEOJxXksPTvy/OW0Zm6Ct3tWenMJtodif9jeMA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.3-next-1589201539-0a882432.0_1589201606001_0.8207828630081118"},"_hasShrinkwrap":false},"1.20.2":{"name":"@xdn/prefetch","version":"1.20.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.20.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2M5LPl1f7OUZswr5rxl3qwUGJmqr4Z5tOUGTP4/Ef9pAWE61x8yzqP4n024noHe4kErRXRuA3nblr07OGF1N8Q==","shasum":"8d3cd6eb317824d5baa7325b391c4a8f7028262c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.2.tgz","fileCount":40,"unpackedSize":62700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuUs6CRA9TVsSAnZWagAAPzIP/0KiQz4INAtbUTNYVaY3\n0h4ntjKwHa+uBbkbIi/CQfRt/Am7GUJ3kvaZbUyyUjIV9xBCLs7iTJHjPM5I\nf6SrTv5/kg9OMR8e9LrL7YdvV3zVEncH1UlDvUijVZ0yVRJp+JbAOF79JPOu\ne5HXUvA9M24jrPlieB0R1CCxEUVZS+wWUgJd9psJafl3wwm97QSrnAqOc7sW\nCW5dFKwQCUSH470a2MHxb+DURlwZX5JpAa4FqkPNCNZyD2ZK+TDQrwRENXnc\nLo6kbEaRrINsarYbjy1hDpQoLYL0n1HPZ/CzjNvA47O77+CcggAoSrEAexcg\nnot9GlkM4zIFPXS1xIh9g6M/oGaMkz1jV9rBTg5H3H0jzpbJsG/OpkCzebt7\nsy+j+qdd29//Vi4PBtOi3wHU8LBO4juQf7wsw6PUaY4iNon3hn3xyq5sSX8E\nWRuJ7oKIdL2WRpY7SYz1k1YDUKhZKgQeL/psgaFYE5o1IrAYqQxEPLUw9uus\n8Otgk20wprVVVT2dNxoUOAg3ToV+Wx3jg593yIWBabTbAg74dgZ3rnb5jian\nMU11AJByoGc2bOEue3fRT80hjZ6lzKV1SSVyvNjuAxw6Xvh7G022Vb7Jw5fu\nfyzdLRmvOWnFYbRK3Z+VuZVda10daEcfzyyrxOdDeX3GBHgRuYekznaoZLQi\nXR8P\r\n=T5AY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMAt4Zsh4HK6Y6DXI1LY1WaVrjDt333ZAnZoY/nHqCEAIgRHKITAXoEKRb9A3sKBJW6ioxTCVFPBVgnDmrY9WNNL8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.2_1589201722516_0.613738275748813"},"_hasShrinkwrap":false},"1.20.3-next-1589218968-7f515349.0":{"name":"@xdn/prefetch","version":"1.20.3-next-1589218968-7f515349.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.20.3-next-1589218968-7f515349.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-E0YUzPyG3Tx+sZDHah5MVPSREzk6T1C/9KbW0g3lrQp5wAlOKxGtUam5xYSA0RIJl+cR2gHaziL4H1Sb/D5Bfg==","shasum":"1984ada425d14662db89d7dd2ab6ae9e516a8080","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.3-next-1589218968-7f515349.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuY7OCRA9TVsSAnZWagAAWSoP/2w/UTmmlpccAHDGdn9Y\n7J7+WCEv/bpNgGCfC7HQ/ohHpZrZizseDfi7vUg8xYUog7jyLFQ07QRnlhCP\n0VN5SDaR0OkgcH0Qs/gs904tqoXod3fkO/yIlIkfNE+GLA69K0Hi8sWJ7K9s\nGB5v5JLsB7Sgn/QZqFWjH0jssHF5d0mFExFpTgBHU8Lm4+hekDdGZt9LEu3Y\nRKcyo+ZOgUt6UbOu8jyBQ/n4nuUaXeXNQQKEhqbiuFFtx1ikTVwevEYfzFfw\nafIDNgRMS/auuWfEC+XocFJvlmcBp+o7ORyNE9lyP3f9UIZZ3CCqTwsmDf8Q\n/wowkWZkCYdQfHgOb/hIbyL5phGfCKcHa4/pY416EeMIKY6C0vvnMwpASdtg\nsSQd1wr8R+eyVwm5lvzCGJTr6h7CdOtR30HylD4QntbTChe+rUl3PTlPPOQU\nfWgUJByhMrrFRaDVw0t0MNVy4Ij141VqsXSEE4pLj4zAA9B/Uf3bvIAkyyTb\n8wq0YIlOtBrCSrOQtYBj8NFwo9j5t1hWbBsiZHx8SWkl2GagfpdRGZhKz+C/\n/H63/TOpbs9fr0b3l8x4ZuNJC90xdBvy/IpbWzzvd9hamGpkqk4MTeqzRvr3\nSIlcXFGlVi89zyXNHkAU5f0Lj1Yc2CpTt28LSH9w0ocn6aD4hXNtJKvmG9PJ\nrLNa\r\n=We29\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0z0syFi1mLTU4dRCvdZ8kgUB83u4FRep0KAyee2vLfAIhANNh8V0b9S+DuyqhjcAyzyIDX3++9SBqchv387hYXj7r"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.3-next-1589218968-7f515349.0_1589219021856_0.15164636368416873"},"_hasShrinkwrap":false},"1.20.3-next-1589291190-b110455e.0":{"name":"@xdn/prefetch","version":"1.20.3-next-1589291190-b110455e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.20.3-next-1589291190-b110455e.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-+Mci5j7YFqv83PeGpOHU4lKyBHIJv6m2NlwJ6hT+DlAwoiXJybtLuL+FmI+EmFgXezihK9jlCljJfFXPAHGoRQ==","shasum":"3df961a98a2ba33d6b4987663b074611ab7b3833","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.3-next-1589291190-b110455e.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuqkFCRA9TVsSAnZWagAANP8P/RZ6VY5waFBdxCQFmoaB\n1meQwDQDOg6xD1SvLZCCtR25oFwFJFeVYs6OKNUDAoZoNpPzkW2577cxnfBx\nu2xqGyPEJME8/Fo02hE7cMaAnApI6m9B8ijkDXfUY4GSK2os7fenkWtwTbHc\nlLsKwdrL4MIE4TYYBL7cbikkk4xg8wDMfRAM08jqFKxoEcuIkN/AWsfvr7UM\nY//aYzQ0mGYotCgF8U35vsvchAtUzRVc1u5EqNMsn2Drr4ZG/1UQat1f38PT\nLII1OUKnFjKG4OirmDY/s1Djtute7V2rfWyt7wExc70385O7Q4bpyWwEmkmO\n7mMRuvzZmcgQ1DWH8VPUmZmgR4g2kpD02ecMStuN/ZuDL7XRTsg62/TslUIl\nGeMVEbLMG+HWqzjG2YvRAnhNDHxpYuSq/BGf96LdRYzdNAvwR2sIxHxSSXxs\nw+ktm6HRpIbG4X6U0420yQrgsZgT3zI6M7N4T3y20/Gufy0kTCbLifZ3RBGO\nuf8KcmIsN9C/K6472hK9OAPE+53JgiSFAL13ZcfpX92Zozw4FhCBII9BeYCa\nZLP5Nwh3Q/9pROhzaKpGKRi5LzqwXvUHVwk6tP1Tip9Beuf5CqWjZzse0ON9\nIbFOpJLr6QhLF1XqcT3VpBfxwN55/C9jSy+LJtj66l8wyuSQ63ecOObAeGuN\nsUuk\r\n=CR9t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHk6szVsfcjqxIFDSapZsRANhjhIjo22vr7zmashJ3/FAiBBbHXmEeFLGBOWJ8+M3+/ii5giDie6oqpl4k8qjRAAFA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.3-next-1589291190-b110455e.0_1589291269576_0.9370938105787976"},"_hasShrinkwrap":false},"1.20.3-next-1589293140-d294d59f.0":{"name":"@xdn/prefetch","version":"1.20.3-next-1589293140-d294d59f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.20.3-next-1589293140-d294d59f.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-exuPCTyuKyppK2tbsC2E7B9yxhmP6cjgImx3Uwz76xIKdqnpLswLldI6shKORuMUC86p+d8203IZFFgG/tm8nQ==","shasum":"2531c6982cda3a9c5a5ef916c437416e909e9efa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.3-next-1589293140-d294d59f.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeurCRCRA9TVsSAnZWagAAtGsP/iaxmaHDOndd54zMcuZk\naei+GBk/5NDq/JuwuypMEZUXfRd9jbgTyZnUsZvwIStC/Y/C50wiWnvwOhdH\nrotn10oeN/TbWF/w8s8a0DbX1wJDzC+36dKmKCeGcc9vuwnJo5wOkf+FKyfS\nHjZqmrZi2iXbLVvND/zb+79TdlQklUsTpzLBQEKvUyeZ/+gndadr257JEzOV\nEF+sFZbgsJr2tBXa3egYusU6h5jfvk+5ydK5OsYN1z40Q0xzLxRdoPUkaQfn\n/1BJLwCibYur5xs2ZKjRPxIIDK/nsNJSEhXQ9pLwiVU71QqzseSiy3waRNVr\nLqMR9oKu4IQo81pfhp76WBpyAKPSBErk6YOz+K7mnFzspgeI5BoZoyUT33c0\nYmN4LhyUPHdCsJESOAycW4TsFkhINp2FIPhnY85BfTAnBqKHC9iegIKZUuhu\npVlp4qRTHRnx6Z0dMSFaFetDZw2988cPKrzKubtDCPdFP23LgA45vfqg6oQG\nkEMdGa/Of8BVfP934mKk8XPO/DsxGRu4FyiNpjrzWWax+JrpmqovHjRuUfP0\nw+ogrYew6I/W/gMPHSuIljSZyNtbFXAP1JQP+pgN/lseofLXEptDClkED4oj\nfM1c2IsmRGB/wh1/5ZlURlUBHD24wFifnYQ4/Rbs8lv/k6br24A+WTkb8Q5e\nf1EL\r\n=H0SQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0BilG026bRqht76QsxYBfWU6AO47OFSilXbaJ2rK4DwIgZEDeeGToUHa/WQIlCitmz1LETN9hEGHO3laKD0h9xhY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.3-next-1589293140-d294d59f.0_1589293201519_0.7242188267311167"},"_hasShrinkwrap":false},"1.20.3-next-1589293209-099c3cf3.0":{"name":"@xdn/prefetch","version":"1.20.3-next-1589293209-099c3cf3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.20.3-next-1589293209-099c3cf3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Z0djuRj97xpPLZ7/Hlk77myp87iVnen0YfGkL6GLWBmoh7qg1wsO0N8ACxhNX0MNZBJwL5gUxSutVwCWCJ2RSQ==","shasum":"97d38b8cc7d659c387b8dc27315159189d8db5da","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.20.3-next-1589293209-099c3cf3.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeurDTCRA9TVsSAnZWagAAu34QAKJvwqsOKSyn+qPl7xDa\nulkxzm6/1xYZVtcNBwlKgA8FEDsE6o5CTyBV1D4ugN9XfXL/H1w9JMu1ochl\n8j9v9txfoOu15Ypv1KDn+pVG6zphpgXveKE/mQKu+qZy9s8Nymn9I70GdVmI\nwQWO69jRHl3K8GJCrxrEuyP+J8Q8ZgxO8xKFg0gc9rjrDsNefV2Ji8nuMtUz\nSf/+TeGHLFbgko+rfmOSw6NAy1WXvROQOyO25BmSVUySoiAj++DWq7NVpTtu\n/vrZG4ZnmqDUkxrs28jmccwUWajhG6smTf+Td4QYH5cEZ4E3MqNyTyPPjOrF\nS5BKo6L36fzE1CFtmRv9rZl+WzLFBuaYMnT8WRtHsNgQOdqCU5U0xOjFoF3c\n5JRk6P2880IgR3h58CapDMcFM/R7R0Xw12ABsHgyr/u/CrsKOmTCouTNwkNM\nf7/1xTDIqkT4tMXMKfbUxFae916k5iA0h81L/cBIxaMsdmKIyAjDLxutTrKu\nW/yTBeGpMs/I7mVoDKLQzOZ4dg7nswakOJMWchNwjkCDIrqJtE8wDU7fC2xV\nKqvkSf9TkKFjaaslrHlpVCvdMpsf2esuEGWs+yoKsdwLGgtwXTTCNrMIZTDs\nQ34V5Xp+ESjFsyoZaDOj9AtKmBwddgAf+kHluu6a5gQfmU5alwGyIk3zzsYM\n6xBI\r\n=UJzP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyjBSQJvFRA6Gtt1j5bl+9Ctiuhxx9oIRIDyPX5k1qbAIhAMjAqKK22WMZj5GQbGi4gl/+y8ZZU/ty5o9Gwo53d366"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.20.3-next-1589293209-099c3cf3.0_1589293267078_0.890773864422626"},"_hasShrinkwrap":false},"1.21.0":{"name":"@xdn/prefetch","version":"1.21.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.21.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-85mNJEEmC707D0v+DUtAgouB4B0qVgJFBksVWlSZkyclItWLMRPBfoi9TjMUC042hMfeJ38bkKzGzTftDYwZdw==","shasum":"b122f3e16f83eda55b925b5d736438725943ae25","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.21.0.tgz","fileCount":44,"unpackedSize":64788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeurGuCRA9TVsSAnZWagAAK00P/3a2yXTu/Gel0SD1rfHw\n1i9vMABGeP9NIHGQRoqtxAbK2L0CPVZZ18n+FjaLOH+HiVg75WBukCeHZlPD\nCgkdgHf+CtZU/kHV1TfmCFU/wjVtRs0FmRmHPDCCE6t9vXesWzKJPwTBu7GQ\nKcutCf5Wxc2LasthQDAPdnD54gav8akAOE08rZnb8+Ke310uMKHIW51sT8Vv\nhFUI5cgaXTTYxCiaxnbtMtCO8WVJM//nUXwgJRw0uC/73+QwwyJpCF7EZoqS\n1zJ0L83JuQTzpGEZe1Y6Zo0cwIB5UeWAcZXpf9Q5ltI1VQErmGVhqDkRdONt\n8aBY489Vaw8dmnoGO6obiT7UQ4JQOrhNl2UJNWQRYAnzT5XfiAxYKPgdZNy5\nadZb5eRSyzRsa+bQh/hKjtlmF8xIK28UqgDCJNLnGYwdBI4bc/2t2oLaKIYg\nB+O39EJx/YMiUhWq7fZOPjistWQ3m05TJuRt9bxIR6wFKNGwQZa00+eXbdBK\ntmJ1qRBNGSO/KCZqhPkpdp8TSQ3TGaPNEHFIf1VoO69goG4HJeQO+YrHCbFL\n6f/E0fB/BjxLRtQlhZ/pYNIN3w1ElqplykFib8+Y0nNdzw0mxshWfgAITHpI\nk/xwr1JGKjif/F/zjBq/Uzr+l9Rh2IC/xwEULMQ/yDk9C3g1tnUvaYfUP/R1\nic/D\r\n=ju47\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBL81qU7LEi6djtNPxH/vJv860UGCmi0xiUJStd+ZtidAiAcIwnlFZnX8RT/l/N8wz5SGIJ2fzECUvY0UUU6EB0Xrg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.21.0_1589293486117_0.9907513227566613"},"_hasShrinkwrap":false},"1.21.1-next-1589293456-ade91ab0.0":{"name":"@xdn/prefetch","version":"1.21.1-next-1589293456-ade91ab0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.21.1-next-1589293456-ade91ab0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-T24+63sVXwhO0S5F5UlgbU6g8HNkNSLt7GxVWVFFyYjfHRd9J0S1Ij5i4V8ZAOjyOH440Sd+jCCgJV4M+nshPw==","shasum":"6801e25831b74498e017dc149540ed1ae1ce32c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.21.1-next-1589293456-ade91ab0.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeurHRCRA9TVsSAnZWagAAyqkQAJ377cY7yQFFATdUksm1\nXGeGYrqklTT3HwH4ZHpP/4fwjzF9YaFvwQx1I1CyVym05+IH4sFdCXjQc0ga\nk/7vbvAKj8IzoVmZDCUQT4uZolfESdffuFH3wYIkSFXmDpbl/5YRN+jL0hp+\ncoBVCc79d7KyaXaklnsyHWnzyopKvdIJEU9x+R3RWIGAu/UO3tb9TJ3TtYOx\nzgRNHzVTu7WJPR5L4UpfkZXw4Fn58OCKMIT5wCZZAFE/spUMJPWoQ8vjQqpR\nIWOwFFqd3PyQFBLcAA+44Bwr95wwjmJf4Cwc4+p9PbrfaEGHbhKNzJXoht3d\n7u42vUM6z8XEkD5jlSkwTSs7038HzPmAlCWIpCvHpvj1njEbqwBOdvFI00kG\nB7mxrID03Gg0OntiPI9pHV6E6tGSY81LLxROyOGa4P4Y/sEazdq+9Mw2o71t\n2Yryc2Ku5JWG4D0xY7buwxBtmllQ6pGKoiVJyqLxHjc1jSvphnfrle12dyD5\no1rjV1plQLfgPV1WAsTWS81T0/JYFIfKQM9wsb+ho6VZqM5Kg8Ff8JQOGMjY\ndOsfuz4639yAtAvc6K2NG31cysK02PeOAEAf+IuhXLrPNn8PrOQcfFUoJBy+\nEe4GjlFVDvmWwRmLg1F1tA0lXntzL0frQDLzmlo67HSEZQRHYB9sJKezAhSc\nt461\r\n=hdIF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIExr3LXJuoGs1aLpYsE1iQsCD0qGxj7CgVyqKgsx5HJ9AiEAzPOO995+uZQQZnw8OGs6+lMZuZaPJu4D41nhXgy8xpQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.21.1-next-1589293456-ade91ab0.0_1589293520974_0.26701168417970234"},"_hasShrinkwrap":false},"1.22.0-alpha.0":{"name":"@xdn/prefetch","version":"1.22.0-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.22.0-alpha.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WOvkNeyyC3J6UtQJPJ/JoK5iyqhjHweibUGYIa7sK2qE8va+apKN+hiTPl2vwG10JDIYEHzIM0cFocT6H6zvzw==","shasum":"f53d2744171b7b5deed70642aef317dbc2c4865a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.0-alpha.0.tgz","fileCount":44,"unpackedSize":64796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuw05CRA9TVsSAnZWagAAlNwP/RErraZZqLgxDCMV24bB\ntKjxKlElq9NoHa4jqLE6LMDES5XfWGg2O4r4DqzROZZtmF8W90Qypqm3tDy9\nKjqWpvf1XrYrkF1RXM57dTd0JRb++a/hg/cnsiY6aVTrpE3Yhzb2kNipehTW\nm6PqNAH6ZsS0lYFnDBFWzbUxG7E4EVTXZnYjmUdwzVe7e6MyftOZvNjD+ejR\n1DMtOQHZDbXPBc2i+TAZzlEtsFsT0F8iDujo+r/4N4OTTbkAzK27VLT1FWJu\n4JkF9zDJE+1wGzBq3oteNeKovKMvW91EMaXMFdFHIBRzER6GodmKKmZFNn+s\nnfPSxUoNS+JvXqvo8qqO5bgrmqtfBSVrK9/QfdJgKplc2KC+a6Ds6OJ+ga53\noGNBcG+k/zG7+HsbBtIctEZ5pUdrjx7v2MPaiFUf8DKmEUyPN5G6hJ+BuQuY\nNKUu3DYrRua1rjrY/7zJ7gxHHzj38DIfsIn34oGBnv2E0j+Os06KeGjkejSr\nZiOWFEWT3A3wGfjskuBnTMvhWE+P0Q8GfU0IDrsbAIVSFLdzlwosW3kF8KwF\nRliEouOJgOr/DN4p3npiKKXfiFwxxFv7lCEG2LxgXR1lS1Re2Suka2VduysL\nIYPQsGcDmtNX9cci6MzfGUKGzn/U74ZC3gin89psdOSuE5ONRFPu9UzmZFfV\n6bbL\r\n=A1/S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDV7y6OX3AMU6dj0p/n/0h4XrFca4eAOdp0fjEIp/oEhwIhAOB7v8w69Xoj4KK/b5o+y1+kHIKw3BNy7BjPD0Vqzs+8"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.0-alpha.0_1589316921050_0.22252381634854945"},"_hasShrinkwrap":false},"1.22.0-alpha.1":{"name":"@xdn/prefetch","version":"1.22.0-alpha.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.22.0-alpha.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-AKxAE8hfLb1ZZuhQ1njnlTHtjxhS5ImezY8/eKp0+IZrP0wf3std2pJlhmQiegQnNIUKMGb07BIXmNuHJn224g==","shasum":"24b69e4c4252485f76e3039d5c40f79c2c076212","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.0-alpha.1.tgz","fileCount":44,"unpackedSize":64796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuzAXCRA9TVsSAnZWagAARnsP/jjsgsEcWFvSVUVWQ7VX\nT6dcSArOByoyuF/YOdy3YR+0301cdAFUu92nIDqeehUaewbDsjPNWg5KYol6\nQqGQZCQiyFGzwSXjB50pYkKYk175ryeYaUDWoD+sqagZqKnPiXPAAF7LQi5t\nA8kKOP0YzAv0kiJUcAeAx6ABR2296WCXtOiWLfpS9cysfEaq4n9UtbxohlYp\noxBAO5m5QfGxYgAvSIj+U0XeB9J17thnY1ldkFpVMPPtrI0ENHI+9A87IUtX\npYMixLONXYPtnx2qTAjcxKoIRRcNuplCC+R3PpnR5HHqWPC3MpUpV9AFIfjF\n5TVLmN16Mxr1SYzpaMj2KbGPipP+dti/RtO4d/KN9eSzKaphR+WvDtn8bipe\nii6ADn2383jBfdzbH/Bpv4kWgP5UKOpcSRafb5GGW89f9KLKeeBD50dbTefA\nrRmv9QMWsPI+jNEnq41tVt5wwcIUCc+6295qGjQtEiUQMz1hzAuSJox8MH2c\nizDs2TqV5f9bVBe+MkNHwfpX3G14VoMFWxMdqARdGof70LWpJyj1BXLFb8Ef\n/yi9fCHBEFWrQNZGjWCfNooHilBlDlGJ5nY7wlWJP+jeu+DgDAHU9DzwF4LI\nu/DhVs37J3R/Wbu9UD3UU3IrNl+2y5mDHvjzic7QjSNr1fvy6/diUxDowEEc\nT7U+\r\n=ePqH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAzGMewebgeE4JDR01YZsDvuxFGTHGia3N2Xh48iwKy4AiAkF8UUymqQ5ASnubLJIjWHKNtXQL1ZbPf4QoGBn5huFg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.0-alpha.1_1589325846820_0.20468870376974002"},"_hasShrinkwrap":false},"1.22.0-alpha.2":{"name":"@xdn/prefetch","version":"1.22.0-alpha.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.22.0-alpha.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-hRth9rFg675XaY817i8fpi5ITNZhj6q2+lPEAjg04fqt0K0+m5zf7oz71YrIsHQBRNcFN77nLKz3hwUHcpHxBA==","shasum":"0d50c1396bb1d996a9ffadc0aa10f645db13fbef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.0-alpha.2.tgz","fileCount":44,"unpackedSize":64796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuzlKCRA9TVsSAnZWagAAtF0P/3FkeuZp0Ej+JZRfzNNh\nDPBU3Uoxub1dvpYg0J9ijpvKhOkBzKEqIM/qoyhlTHnU2Hi4wrjOOxiNFwFR\ncZjTvozcv638Tu5mHIEu7nLxpHRwwX+ldRvdirQh76FTTSMaTymyxAm4pgIl\n9IYHDdT+TiXmrRRZiaCzNNV+rvtgOYebqGVxJv0rYLSq4H30HWurvmkv+NOn\n3WJ30gbQYGHlUe9RdqV/4tTkORPP/YTgnJxdLyge6eyJnAcITYaLT++Ue8xT\n8oNkfKHvaIsPCUNBrY9iVdDF6aSopv8pKjjv9t6Q0MrbYzKl8Y6CNZawLGHC\n+RW81IBToTlP0QMvKQPlc8aClz56JpqVt4lHrJovdMBBS3VdKetFzPwgx7Xj\no04FY6gFSzmkq4PJ8AbvsJV4m2QESwTcK04DbnZ4WGDAsrdPHuojPwQL8Ltc\nv6RDlQN52c8gXG5sZfoFwZPv+yr/SGwCv8+1/bkw2eMoatBf6/lkqpSKZeFv\nQpMcZX6yzsohGlsu+s+8w/zq3w6X/7g38tQjTuwEI96ZepBw7JCTAqRDlQqr\nfpZaE3Ll6Dc6tE9isVhAEufTlAb5suBoIfpnM3pxxp+A0HD0s2uD6b44loCA\nuPcDQoKRckjU9W7TLnmiYmTexXAkIakHwx2ieurXlfj65pHXk3rnVxcHrQb4\nEH2F\r\n=/Qfk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIELzqzJAW+x2mdUDO/694v43VLh3dfTGdjrN1+sJ3hltAiEA/f9mmPEn+mIu2HX9DtLe/tK/TBNH32Hi1NkjX3vjAU8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.0-alpha.2_1589328199355_0.9318774487398844"},"_hasShrinkwrap":false},"1.22.1-next-1589385187-faa6c034.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589385187-faa6c034.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589385187-faa6c034.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-yHFq3DCtI06kyT/GBLULy3OsgRapuPr7F5r5Oor/Un3s/AY5a26c5IrYd0eddWZDC59mRBtDbZuh787VJkIywA==","shasum":"b96397501696163865ef2b1b5f408e7c92f7e0ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589385187-faa6c034.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevBgdCRA9TVsSAnZWagAAv1kP/3vaRKFGkCty6+9QgjLB\nMFSmdQkTMSpsf1HrIjFm4WAkg5alxu8ijyfLA7MZJ9encBehXb5UK799A/Cq\nqeYbYCyA3X8M6dhOH8r5Qr4oW+DUky2rsUFzR7DXMMbPOEwJRNZaj6VwImaK\njrMEtpM5GigSJqClR+9qwnhE1t/ZsYA+d5/iHeLbAKaKY9GtbHOkn1Y/0PGH\n7mHDWQ341YNfLqs8wGJqOHZeVDnrWnA1xdKn/TgNZYuq8gnIIAyu+lh61EjG\nh6U7dMEaSkP+/v+hzn5Vlok7sx7a1CthQwYFz0z/YlHayQDfWfmGzHugckCY\n+w/aAvh79AdUEfbEO7Nf3GBC/smdGtC6cS0nVf8pELBT8dbAMpDEmHVi2LC5\nf4U3mgQ0NHgItYH64l9vAnEgIY4mhdB/Tu64M1+fuUe2uR9ILIsY1BHOmO/J\nZSnEzM8o2Q/Gpx0J2AcUc/qZcRqOMqrur/hN+P1CaSxtmEAKaj5kK/h4q7mk\n6/ttBjlAbJ1n7YRbySeZnDG9aVPrZIDyZ2gb3saNMamiq/JCpNwjMsvLImpZ\nEpbOun9QA/83u3k8UnTakJyaINm5e4H9HWAkiV8QXsyaI+rs4jSsgGSRgA7L\nm790CDZd3lBsb+M/jfHO+yWWcO9G+gfHCgndCDmt99CM0dntiqnjgG80CwUs\ny97n\r\n=GJBq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDrMy4FEwZEssKT4Ud51sLqZVFM2XBvj7cDZJHTPpMxnAiBi0emhmjCGD/LJjbUaR7+Mgi86/cGLidcHcBF+jKzl+Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589385187-faa6c034.0_1589385244609_0.736779085077808"},"_hasShrinkwrap":false},"1.22.1-next-1589389614-bcc4482b.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589389614-bcc4482b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589389614-bcc4482b.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-c7/pU5SPqleGudfTwEikueBgawwtW59d8NvhN9jfOKTI1HanisbLRwaJiSjpYwFYaGukfPuZnUzcNVNL5Jwkjw==","shasum":"141c64440b151eee6a609ea89cd70dd2ebf60bc1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589389614-bcc4482b.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevClsCRA9TVsSAnZWagAAi1gP/1xKWH7eZcRdti/80kPk\n6GBakDvM/XWO3a/M9BVo3/bdi2o7EEZ1EFa0SHO4GwfhGN4W2jK0fdzId6A1\nVXV/FrTr/74poKH6kibD70+K/l/B9PrJvPNVgnY1QwKX1kXTtsNKmqLYUDrE\nzqSgrwlcOP99VyvD86tbn94OaO3p50gojPmhYbOnH73OEcysmatBwlQ7eIjV\n9JiwEtVhzdsRei39EtZvz7TDcH0hwBjsqaWlybdBHT9so3KSDwm+8aBqS4vR\nhzRu5R3hPKx0++HfaqQnFkjZaQQcqzkcp2mHOj9NoftZQzEZtKdmLjgXpWJR\n5HHRVJrqZkqbFsXpT2FUj4+drXSlcwyR+c6eNdQohHMlSd8yVC+AoF5LRFHq\nSL3YuIjFc3wOmIWvmmNHtrDfeHyweMzmvvBO/8VMLKHKY4y+OgqhUJQRQZdy\nWcchI20tSU4/THAt68Pkrm4NTWLS7F3amKloPudAlGr3NmIFzNlar82TR6fh\nOgC11I5uOeHnPTYJjD4DY4+v4dFs5er7LC4c3XUTAiyi5tl8syTOoi+E1Hfg\naD1TVEND1BjQ653kMZNcBpMpieKlNd/+/TNoOaWe7OvG8rO0Ar5OLyYZcJbQ\nCGIiSj5Xw/jmCg8XMsqAr4TfyUJy3UcJh7beVGENhbAx7/GHkynYqRKlSIgw\noQcp\r\n=5k6i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCE3WSyj5ehFYFqqAdcrcc2bMD307d6cRiEf7SwIdhbGAIhAIH/KA+64IGLu4xseQMcY3tiJseYRd3jLPH+R/3WfmjC"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589389614-bcc4482b.0_1589389676135_0.004288281160314877"},"_hasShrinkwrap":false},"1.22.1-next-1589389698-9ba6d576.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589389698-9ba6d576.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589389698-9ba6d576.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-0bLkfr7Ppkx8EUzb6IEsmYKnDFotXo1jnWFiRSYDNl0lsUihBGwGN/kRO5geum2Il0uyoG32YjYiZ/7rmNGaKw==","shasum":"d23e9b638bf0da5e01d8bc1999e82aff80c493ec","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589389698-9ba6d576.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevCm/CRA9TVsSAnZWagAAiqAP/AzW6huk80UrAyBTQyB+\nnsSwgo/5wgMP52BZ15MB+G8d4gUmbNSx+QYSSxwFOv3lJqmNKfMgpqIUulSU\n1wO7f9L+Yr7A2Q+NM9OFWOz3o+xpqwl3bADyTfUipC5Iwv/OCPO5PL4OAI7d\nvrz7Jf3MorK9aZTXQaWFmFVPO4GH1xsRAJcEmB8Fc7BRq4vbcNFSHoyJ8U6+\nbSoKLFQsl4Lsl+P2CXAUpB7wpxcXgTMhAdF519kG1qJajZd2dPY5Tccy+Lm/\nuh7YyFYYicdI74Di/YMlOA9GbpDKF/kalorH6v0pnffJ6txNS1h5w40p7InH\nYq/jnmSqKb6Fi8Lx2TyN3FCT/zGF3Vw9z54u9rhVUPAZ/fVlLjjy377+pYcF\nDPlTtZ/2rQgbPYB8DLo3N/tLgtRudDANytX3KUp58szg5+IoVzAmd5cKMlEZ\nZP/v7qh5Qnq3L0Eh+NeT0xIfVKG20thObsLl6lGv2PmAWLgPfSVFjy2JUs+P\nq8bSdfWB6k6MiBUHGPpydrbXJls/gxG60IuaEcxOBh55ZocfZqLoC0bbWFuK\nLw0fh+nD4fTvmUoqmlmWJxLbcUcHJNaR6U/1HObKaSwR/zUp/i9rKGKt7TJT\nV2ifZ24yLyr8+4OGjinHK2AAJLk35bu1tQqIIwVwr7z3F4xK2PQItPw4ifPc\nLP3R\r\n=EcSo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDS7cntvjPqxPz6jHu+CSBEMNZsw0HW5ApL6VtJsk+7TAiBMapKhBbuAlt5Z8r+9H9Psado32YXKEbfzYnsmDMS1ag=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589389698-9ba6d576.0_1589389759131_0.9506377925100695"},"_hasShrinkwrap":false},"1.22.1-next-1589389733-13fc30cf.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589389733-13fc30cf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589389733-13fc30cf.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-eopnwXxrzffrBLpYNH5otXERWoOjDnuv53fGGy+pi5LczxuWj2uN9f0ThBmuOmJC4Wb+7PfKzSUQwWShyk47kg==","shasum":"ffeb9bea379fe6c3a2991b5795fb0d1e5f5fb19e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589389733-13fc30cf.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevCneCRA9TVsSAnZWagAAJCQP/At0boSaN2oNTzsC6m7D\n+YOz/AYpeDQyz/doyzour/3GZp5eOL6d30/rg+x0P2Wj5LqeADfHbkHxpp5V\n4fXYhkJJuTEF964TIQSYX7NsPaoSstUWt56ZC2FvpenFeExBCHN1xBiPJqSg\n6R+LakWRJMwb8vvfu85PHGDQ+fwniY32+qQnKSZwH+tI19WMK7E7khnrbunM\nQ1Lv7hsWT9j9XCAWvSR7wQ2ab4JlEe7Md+hFdUM6fS9MUtYpLKGMGNLGEYir\n8TT7mIl+UqWlWoNhb41z/BZyza728XpWj+pL+iL8MzrIb+PfvWAJFCov32I+\nlucOPjNST4FhIitzaUvuT+VW9MXox1kYMQu1keWnbJGlW6Zhf5ng5PQrQHhg\nl1TNtZiN+Q4YOgBdwUwL55ECLW0ici2ROvyP/RdsTMNNTOrNjFSfiHUZ1Hah\nYi8NweO9qgpbRhcjU1flkI41hli4+56WnoEhuVb2E7M0ZBRWVh4guDTY+lbx\njUX4dDOd8JSkAdNauEPjH4VrWhw3jMyOpWP++l8n8K72aYEfDqVGaAfZbla2\n7j6MepeLic+iXW0YDZ6mMGnkSY9l1ywZzOiyDIcYdKdP3iM+P7v/Wj38nVKb\nGUEwQytNyl5tIb5p1MEB4hRK/hV5oqHqBgCl7Mo6j73gZGgBrHmju11xVgRa\nMgny\r\n=MeST\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZcT4zNWFN8ZyN/bVT1LIQ7SMwsqeLeE0An5sZEOeE0AiEA2I6yWVmfsAGuu6rWNiQURofbaZcYGRXGXWprnjTM6YA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589389733-13fc30cf.0_1589389790440_0.7671221786953295"},"_hasShrinkwrap":false},"1.22.1-next-1589389859-c943ebbf.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589389859-c943ebbf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589389859-c943ebbf.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-kvc0RHLUspSTN5yNDMi4nSzt+VyDIhszkaPOpo2bf3VG554cgKiFdVRXqTurHOcLEdKpxGjwkr8pTwrBPQd8Cw==","shasum":"05cdc4d4ab9942c8dde4ce715bf163cbd9db06ee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589389859-c943ebbf.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevCpgCRA9TVsSAnZWagAAnp8P/A3FN2165ul6n5hLYQGj\nVu1MK0jjKuMe8WAXnzNnT0fKwxI22t+SSSDdP6uN/REU+0mm7bmKA+fdNpXw\nxr8MO6IfIep/KTL/4UbFwZ0L14VtlMVyfiNNqItMRpTQ8PM+qssgFf1H+W+k\nmTfw3wbCx041eMsNlO/0coPmEH25u+S2DlDSLFgF/mboG0djUTRlaodu/ehk\nc6uvJwVpkvLcrguDkhSBgSuDyzp+frqpl3jJFW/LO9EcUWwRQGMg9JlsVFrg\n2ZSje6zdGIQ1GZ52rySmHLS6sr8i39yxiggCOw6NGGqLDwqbFEKIwfROyjbD\njk8ruovLWouALJdgBb0Gn73g9wfF8sO2a3IZewhTXglKEcM1uFgqBnvAgp+Q\nlqzEACrv7ruqm6UNOJS9zM14Q9rmG5HJ1k/+ozlOfDlDSgH+bRH5M6HVx7hW\nhXps57nVkzookqc7zT/p/s9IKGK7IcIdodB3ELtldvDgiaq5jESdidFviL3F\n5VwSc9RIcdSFeOIkkqukBA/+ZuJZdBD0eTFKMh/HIqHrmQuAY4mg+IOTURT9\nZaTY+MUWYqDzNv3P6NIVGdUY6ZVnTPwGEO9bCahuAhTQHtCxg5qMZMe1BJpK\nDZaJhbBAhtH0JYuim3+laeumFAfK8w1WKWxJByg71FcpGgAfPlsGJceD7kar\nUjQi\r\n=RKxV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+EjMq6Nw8rMfoodpExygpTWQj7M/AnPpXozk3+TzfWwIhAJHEYb8am2YIGQ8WjMq8owwkgWINHz8/cOxWIzyGpODr"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589389859-c943ebbf.0_1589389920363_0.8964008471485663"},"_hasShrinkwrap":false},"1.22.1-next-1589389897-1088a822.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589389897-1088a822.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589389897-1088a822.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-kTq9Tl4MV3ov/+36Y/u2zKQi0tuVBkGFrBzyAxdTKGnncVVK7f3HlQwnrTd+ZnNa0NWIqJipd10hmUT69CxhoQ==","shasum":"4355d4103684a23a32be9500d59e38f970d2cf4c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589389897-1088a822.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevCqPCRA9TVsSAnZWagAASZ4QAIVRCUrh9e+C96jZYQAv\n5z3qQK/64ZPI9056J6kd8dOKFVdjfnSsIR1OI0ijuN8bzmH/2HX7OdQxPBPJ\nDuwF7rV/XfCrcGMBnIPraVeewvJwFr5r77AUNDZkvfUS+Q+5YYnPUHN6hQ71\nIbSee4cfIOvCfy4uQD+qBRwqIe+fFYOSUOuKKinfFO15mYq7kdp/Phbmangw\n9QM7okQq0Z5SYlyPqYR92e+s7r7eLR+kwHfMIH9X2dd0u7c8kVBdhAOwvWix\nv/DhRzkP+YJPstM7MS7quFHvgvOz+TyeNtJ1YbCjGP05EiKd1jed+N66V/e3\noy1+3wRKfqZumDo6jc74f75I3+KgrDD9HxNIhEsmtPSDow2m3aZZMe7AIVoA\nEEAnEnD2kFdTI0xE9Ebc79MalzF9UE+XfdTBbMpU5OnLm61iM+orUJkfAvMC\nJ44wTgeu41RdpJHZ4aJ3XQJz5EiJQo5Pug/xh83y0m9DhIlElBPRCZxdv1JT\nGAQhUd9QcLfzJhhvqtrKWm2m6AONZjWOhWmq0MP8ly1BGU8MuTwEFS4zIUCk\n8YuMz355hU1qSC1N6qS1NE3xcwUEY8Zw7APsTkbzvGYzsj18FBQEILWXaPpw\nK/7/dJT9FDZaKjnIQ3sTwakODzjvS+AZvbHLWsVTi4lDsIRsVszBWpIeG768\nbATm\r\n=V33l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0ICM+0JHsO6mbnmjaYkheSPScsNZEz4KFCgAtKPGMrwIgFpHmMK2+gp7quhtoZpPuM4Wt54OyVlSY6nImvx39zXU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589389897-1088a822.0_1589389967098_0.2685884522533206"},"_hasShrinkwrap":false},"1.22.1-next-1589389946-3e06b0b0.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589389946-3e06b0b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589389946-3e06b0b0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-HqaSHvkGGUCg6QI+LbU47QLxYlazdL2UlzGYrFYPo8qvGB9HqEgZ/Oux9IVSuNLzaPCNn1D3z767EbErTHIIMw==","shasum":"bc4e1b5c921465c7b1dc0dc93a3496efc8ab4382","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589389946-3e06b0b0.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevCq4CRA9TVsSAnZWagAAjd4P/0vnWIiyAsFjeoI8SJ2r\njMJoW1M0+tkMo3Xs4SdtPRP7oJWF0hqVqA+wlRU48wtTX27Tz63FKDXXAqpl\npW4aaGYl99GBz+ADjPMHqzOQC4w6UUQppTME3bIvg89S6zhQJ295e+vKLn8K\nUDkMnDV0LCuCzZWglR6/NigO1+DgTpVwR0YTsWCYlO0eq0m1152jwfCerd0q\ncP0IKC0FLr8zgJts5C51fEYCJ7YYa6ATbpvPYaszuqce0Ras9gDI6reTc2x0\nB5gOrBaiNhIdTdSVmh5Hj4zJ5oMiAdB1EbTmT9Br0Qx/Nk2bmLilR0y0IBvk\nqwl1Fr5j4o2c4ZE1pueJO7lOJ+XAdzIqP302HD4tsXI2E0zsZESN8W9nwVvb\nxUmZmbPmqB7e5KEn6b1+CnoBNCyLvRz4ffoHRE+aUjuFJZmo9zbB0iqnMZNB\nHQGPKL1PuwEQoZ/HwroKLunYBADasMqhrpAxwKxDkv1seCBXbPVGPaU8qQuV\nktMXtpi3nMs/FVINCZAYhQo+aeITBXSbnyP/g/yl1DnC0Kxp/42epeoPnYng\nAu/O1aeu7b35TUlVejjmosNJqYYhRA+GATovtIgS5dm3w18xsspij78OIUNH\nu4DBC8pjDqOx45ra6PU9i41QQr9BbqO/Ec2b1zmWKzoVx1Jr1skHVNGDi4aI\nIK80\r\n=R4ra\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoq7w9NxV7rR1ZzecbaH9+gdSs4ltvVIpjXW1kLRh0RQIgVUMZKocVU3z2PMOuWPSoSw7lb/nWjWqYIoxwlq+LeDI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589389946-3e06b0b0.0_1589390007963_0.6315525099283887"},"_hasShrinkwrap":false},"1.22.1-next-1589390100-e1baccad.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589390100-e1baccad.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589390100-e1baccad.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-m7uBFIY1KGptl7dtXBivqjjTZUGcIb/tsYUNRXluHYUGsRlG//9v2rwUEBlZMrAP8JkBjMoZPBHU1OyQUwoUwg==","shasum":"7a9aa2806644004787ecde6a525fdf5a508f3a70","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589390100-e1baccad.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevCtbCRA9TVsSAnZWagAACKwP/iYgGhN/0GZvprn4TZAQ\nRhDdgDmJzx2ZBD6cZlMXQuIjnV+NwO790jq0JrN+62jQmrsHOaREeYL4dHpp\npVKz/hyLheC5xDaQ1PFcJKyj0Npmpl2BblxF5JqB9rB/NMlVT+5BYOL/yIny\nryHUNELnk0OkOWEtUzutGb9myYFGVi+Cx4M0cGYyxLRvRY9jxejrULpICyB0\nvbEGrtY7SnARlwRqEI7Wp1tb44Q50U+oUYhFralyqC9qVccCj4vZJ04KQQJC\nhf/b3sFMCtO1/+sQyA0HCYdJ6Fncmtt4itNbMRgLzwyU1uqtXAiRjbvhBHFB\nyoV6/AXlUu6R3kjKR/c8Om44626SfH9en1yM2eLnoVPEkH20WhZYIYgqivig\nBUfmSdERv49wSEmOigtZg3v+i1GVA77YwfZyLVT53h6H1vXLK+h1ftVZmVNN\np9QZPQTCQNQmwqFt6wj7ReZ2sBMzpeO3UnbsnBaDO7yXmhAH0vmqtj1uU0oi\nfxh8Yp5aGzbUCVgBGb1q1m6bE2cateCG9Z3gDD7JBoLG9D/jeZkCYjdfUk4H\nPqm8xNc5+PG61TY/dLZIBeTNRQPIOh6CDjPJS9rkZEfp5Tdj5ROiFNYe28U9\n/sRLFnwguxUv608m9PgH5V7eGfmL7Ip01xEHt8MktUI4hEJ5ipHvNOh6J7qU\nuss+\r\n=EQzo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID4MD7QJ9lIsq1MICxywDT1V3qWcxvhY691pMUhieEYWAiA/wg6B3qd18JNtpEg0NzHHI/RXu/PagD7VpOGtm/6qIg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589390100-e1baccad.0_1589390168386_0.8672844530183355"},"_hasShrinkwrap":false},"1.22.1-next-1589392925-6273f4ea.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589392925-6273f4ea.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589392925-6273f4ea.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2ssucXBO2/MQp5SOUfCOQCzcJ+T+Uy7mrlbhiDC95NnfR3pU2Pj+Lf9WOnT0CL2yD10KZjBxzNsoFwwKzkaw/w==","shasum":"cf188bf059124b4b2839aefd8d8fe84b2958c9ba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589392925-6273f4ea.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevDZbCRA9TVsSAnZWagAAlGYQAIKPPcnliLANAEyQav66\nZ5GpYBELyQYguTNFYfm33owgNO9HRx0uM1s4joRv3DzIrSKIWXtkv9sXkh0M\nD7p4uMQSAvD5iGPlf9eccdSsUzYV5k1VNDTEM4T7JSCKSkpmk3YTuIwJbaac\npuIB41ZhNaW+K10p+gqQxb5rhgp0QTdCBgZMQdr/ak+VFRJvwCZ6njBc81yu\n9gKgXtltG83MEpMbLBv4Eu62HfDqvtw919hFT+yplrn2dtSWVnYxMsGHZ6R4\nhv2A3IPQrWfTCIt4l4Mbxk1raRkf3UyVorYv9idiWUqTNL7X+1jkrgBVE/+W\n1lnjL1FlXpH5LbHVrn8VLlz0+RGTK/ozIDWGva82PDI78SclnNULKdTF/Rq4\n3iFZWekNxx9SYDOi/BtgOvjL/p//uTn9XjHFtbF1vlME91aU6LbdN872SGMo\nlYBsAeEE+NiB9CGd0s9625hudQQVdja+53C23/t4wuIKJyNCaPaFtkcjr45f\nUL8WTS91Qq1jn2b4OyiD5ALJGLTLaZt+d6ZYazItvPoatMaNrBkV72pskPGM\npjh1rGbgmO5nKGgsMMx184uTEo1GOwXOnDT17bvxCz3VgrS/nuhUOzjk/OhS\n3IWP1YQBjNq3riLQWP8yRUg+lcgkPIwu2fBInGac9Ese95J5HbEPaAaOsFRr\n1BLW\r\n=uo+X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH8xlJdnQKiGdUnROJa735vqSaOZ4DAglADDyP6xzitmAiBPQJX0kXLvqluRf5tBMJafoGSnrgX4/9DmpOKRUmCBlw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589392925-6273f4ea.0_1589392987448_0.10018307788661729"},"_hasShrinkwrap":false},"1.22.0":{"name":"@xdn/prefetch","version":"1.22.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.22.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-gUcTn14hlsNOJXBl8XbX44fAtK6i2brG35eno4FQ3+1ytmlWF5ne4y2wgUlUzs8DiSwINk0uefMVi8CctaeEZw==","shasum":"52ccf016b782052765ca8233d60e9add7f35a04b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.0.tgz","fileCount":44,"unpackedSize":64788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevDhMCRA9TVsSAnZWagAAvTkP/RvaA3jvnRnKCdgrJ8kx\n1QARL9zLQVxoYNsc5GCADg/5Q918DMxlkwaS7TJIUvEqt/Xzq5ZD+2EAJOdW\nsht1Arbn+gaMr0txqcAhJ6BQ+onR19C3Wu4q0GMXpjuMWNmHIvVfBVJM2k/0\nKD+1BoiKWrM5Nmq3/72W7BfsIe5TAJRN8jXk4A+gWCWISrmp38pN4Cd5dKdE\nHhCxozU7nNLPNjUen1eq11D2sr7SxwgbdgOHP8t74HpLioYE2nvSKfMpQn9+\nz8kF3HQAMtHvwzFiqaPsKKgfbdftkw6BcLI9YvFH6B32pQ9h3Ywk3ByU6TM4\nN4Mi2UAImrdp9hhO5Ue7tfpwLG6rrhJXR3o5jh3i6Eblw6vRIqivBF+4ob0R\nTcwvts1TXj/yfYwl5HuttMAZQyIRAJGCU7gBolLKg9e8H82MZKYu/YBJA7lc\nsRFQ/cOvJjoIHhqt+rz4F58isS95bVvBeTnwV0xMFlkg5UjtDlWiyI8Mx7jI\nj1TtW+4K4tD7SzyF0XjekZA+Xo2tn7xbAPPaOTP0VOQhd14nBaPXvkzCLlkW\ngueIRhdb93FD453md69A+WdaRMgwRqgfkVumQQOmXMCyL0dV42TCOxkK/Q9r\nj5TlSXnoC72VG5DvLfdebZrfwRmX5Pno+JXczXHlXgfO1A15FQrqj6dVsFeI\nh9iA\r\n=g5LC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGBUuJlvJgOgVmnXYvrfEPdM0tgWvRpoMyKF6b8DRpBVAiEA63z7OU/+MUrkdpXVu8/nN/WiDQREGQHtKf9kSqcZ7cA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.0_1589393481951_0.8787053213732914"},"_hasShrinkwrap":false},"1.22.1-next-1589462065-a8608e8a.0":{"name":"@xdn/prefetch","version":"1.22.1-next-1589462065-a8608e8a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.22.1-next-1589462065-a8608e8a.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-3H7hEtfkkJJxaQucHsCps4U8JkIFd7n/FSBJ7luZY+034QRrkBV32oo6auIX2Dy55DU1lKztvy73R2ssSsApkQ==","shasum":"3ae4b3529b948658eafb71319f0e6f3fe042c88e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.22.1-next-1589462065-a8608e8a.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevURxCRA9TVsSAnZWagAAQrIP/iOovoHGryIcK6p3fXIe\nKinoI1fXCzHxkhC1wVyYaSoPBW0Gqvw6A/o9IBzypUhIYtUESa05RXKZiEms\n/U4cbjrNr9NVVroK/vnOkxewd4CVqCd/FBIOTK/0Lt6dkSy0RWnGJsLP2vYv\nd3WmFPV6eiStD4osveyW0SqydUMWYiLlyCWXDp4+gThbt5jsPrUzdKHC1s4R\nQ+M7DuLMzombLbztV9kedu1fHSMO+czvPQXd1eo3YFB55BBZbTSswYoTNPaE\nGB3+uhky2AuXsqp3z4Ek/4MNA+Yv8xJKMZQqXc2zy7mAH8LpRtBAk7vXfNYD\nkQ0lSWb4uJ/b2xewZF9t496mijj/xiRRU2rClbTHxG0m0srg+Rjo2QPdS84a\nuq1SGaH55/yUyVE4G+b6Lzh4fL+G4+2VAjGP/669ctE3cZy6+r+XHb+o0xWm\nfvsD2n4Ljx4JKZc3cy2w8FE/y8JxC3V/MYmilGJOvnabM8nLwzspO3nFO2eQ\n0CVwFbkuXs0343ZH2iZ0AaKyHSKlbnuqh9Bi7Sk5aNTPm+wsVjtTVUVHo0Eh\n9bQUiXVi6SpmqCyvyn6Ehmmr8+20mBvTXLTqOluTm6A0Pm5yyTt33oZCMw7/\npJAf2bR12fMhJIeUCGPwI4Yq7QDAa/7BkAhAwWTqsf/TV49IiegcI2hSAZgK\nPk7o\r\n=L94A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBgKXoRvpxu6N6t77pnPkqUr7TPFtzSiuXneuX16PGNgIgcKeCJbY2+QnHhyVLQy7Fmlqeddw3b4whAAKBhPlPzqI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.22.1-next-1589462065-a8608e8a.0_1589462128793_0.9513471537429898"},"_hasShrinkwrap":false},"1.23.1-next-1589462132-2bb55742.0":{"name":"@xdn/prefetch","version":"1.23.1-next-1589462132-2bb55742.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.1-next-1589462132-2bb55742.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-NJHU3O4UfenHDDeVlF1kzb9hXIxkJ7aimR5ak63dcSp352TUk+9DDNVovLZasEsGxS0KRP1f3iUW1+Nzi6ys4w==","shasum":"07afca0d9454e97e8b46318e770be198cd4834b5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.1-next-1589462132-2bb55742.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevUSqCRA9TVsSAnZWagAAxZcQAIEFlzSsYp3jBJVoOU8D\nqAcTh+iokvP/fa0TkwhyXq52FahSPhId84CRzOBbDV6KGOy6rPn9cOmQMgIb\nBucYSoGe1KpMEDitjj/kwSoCMEbJCsgS/3Gle+IgPiFkj7Af2oPJx7hC4N2P\n74x/WvhhDSkS3WtPboq9fXNR9lEdUz0VmWA3hR7leFPb779KLgmK7kFPYNSo\ny+/gDwZO/N4SSvUyaOh9TXoWNXTH8HW2RPLX2vIIJIldyzc9Aq5pnxVceBSp\nTyemH9Q9vwjE9vnU0SWiGF6SoK4iKYtOyY+BCJefr+G8fbsKJdkzgmvis2oE\nNLoqRzLpmlmlRDn4dTTdxwJKVMg0ufS8kl8oBDY0MfG89EFyFXzP7T43pnpC\nbDOa0WOpEyx1mpdDGJ3dwbtvZoA/B8V0cXeXQKjFlc/98w2wRdRmvvMdkwWD\nozFjoSioESOcF/Oz27chNXo3ppVRQyXK9frMLfpluq4nPOC5K/1TrpZbzqw4\nB4lMobm7sScrwF1A0q6uwl4DF1iFB/gCPmnZNFu+VA7vUWhKchom5ygcdMzJ\nkr5+k0fJ9S6wlsE95tF6eMt4jUELabrHOVpPeDh7Jf6i3JP5jhv0Nx29l6Zv\nwMeuGISJ5QXG1Vce2vp3aI3IeEyM4xG9AUGhblyR51RdnqjkxZSqKD8BuVTz\nD7OC\r\n=FMNT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYQdCMpDXxBbX1oDKQUESYxDERVMmhpHV3iFTn9vtbggIhALBykwOKV/hVidMpfXOK8VF4bhrfuzU0jtTtH5aWzgqH"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.1-next-1589462132-2bb55742.0_1589462185811_0.5100381650889918"},"_hasShrinkwrap":false},"1.23.0":{"name":"@xdn/prefetch","version":"1.23.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.23.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-g7ecSIQLebnYitgK8E6ir2MYuyVzPLW4BMuOUeud1SQNCXPTQF/+AMhxrcfp6jjiZvn6QogUyKzTZMjk+3q7Ew==","shasum":"17e71ea714bff73f91538088b61838f26c2a505f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.0.tgz","fileCount":44,"unpackedSize":64788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevUVYCRA9TVsSAnZWagAAeowP/0jaqdLdxVOJEc5fv/7b\nO4RyuRb2/X4s/QVV3faXOz44CP20suPR8Ki72/z7wKfFa6vPAY8NQgalFXxv\nClmhxDTUzTpCd/zjBa3Xjan759zzfCRvXQkKPVDQHkuAWcQun2c/XpcU2TvT\n3HfMZQ1HpFvxgIk0VGnT0+SC5XR/hNWmYLlUr2NHb1VdVtPJddKz/ejRWYLB\nYJ1p8auxi1tw8EurRlVitLrLxBlBrkMGfTpGj4kKzZzacJ6XsJjXocX8xIZn\ngLlInFe279z07hbriZtmJzCr0w3IHuUn/c3CEfXOyKFOUScuiWEG4LgSiimW\nYCCH+4ta8RlntNFgIpOFHQaqMEJtKiXnrJVqg3ovVU9lRc8hfFs9XVFpEutH\nIrLhD9QVpTX4C2ks5dLLFdPpV76z8Orca6+FVJF+0DFliG/IBCirzgLO/iU0\nTWr9qvECpjmgEUNt8ytsKBaFNsdrhTeoNUvJO6QJs7UkajJthtwTS6Gb9f93\nyG8A/jUbXxHn8XZOXiSqPyOqvXwcqoJAjbOR54iWrHS/oyD8KQksh/f3XljD\nghl4Wq3Ghy+bcl4R0xDcAFCEbTj8Mq/slFHnLTOBIAbETcaJ68VLqwNlzKKZ\nkKhK8QBmdg0oPxb35K4MrLq3qEUnDAn7EV43vTEb+WQ4XiZgkwDm60mMZFRB\nci2S\r\n=7zBn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGo0JmGxdOvFIK9+ixHmIO5SlMBsbZG6gybLYyliinBQIhANAfjOjCn77xLdhRVq8bdBTXiCQkFm8XsGSPJ30t2FKt"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.0_1589462360379_0.24126727258870218"},"_hasShrinkwrap":false},"1.23.1-next-1589481036-0bc69bbd.0":{"name":"@xdn/prefetch","version":"1.23.1-next-1589481036-0bc69bbd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.1-next-1589481036-0bc69bbd.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-LuSvTC9uRP7408pQUVEOVyidw8WqdLY1vXxioxv8tcbLvtEe26pafDHOID6y18XlvTabRSTAZbRysc5xfr0Qxw==","shasum":"c84b5a25f5bae49631764863d0b083b9c40515f0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.1-next-1589481036-0bc69bbd.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevY6GCRA9TVsSAnZWagAAkacQAIIfdRHlsxQe4Nl4Vegt\neWfqXY7CG1A6knOzVVoe5sa7Ofn9h5QxNVuaccLIkAz7c1EOwxtigpUzkzcL\nv00JHWH0B1eZJxW9neuuRZCgxyAqzpfH6EHNQ0EUeBl4uNXsPBARzOMCXT3J\nDNU6IowE2b9b6mPI44lxBt/uX1Gyhx7PUydHaGK02BdWezUNSIqzMDiZqHNo\ns9yOGVkNpQpveSyjRIw8CMWL6gGkApiitBFsJ/HZ392OoZJLX1/IFz8tLlYi\nU/JFofKE4CWBpOYEizhqU8QL44ierF0lKaQTJNHpqt22PPQXEyJiiGwE0X/d\nVd406MCKYwyVLAy9wyJQSmp2PZMh27WnjqIlD/zKuO8v9kadIJibJAZQ+zuR\nbVN4Qzdk5GAP0gw9ePVuLYU0VmeUGCOk8hgiD49Cx/FhwLM4kxtStq1v04MK\nLtjo3b+Ep8ROC8C2f90e19Quxc5r5K6pACIuv5rzu0fKH7vwnJQmd/unvZvA\nFNqnLfCKoceRtAjsU5a6Dd0pCIcef7wlaWA/ufcAL3p40hDCSewKI628Ro99\ncPjojzSeqkeCBtZgRO0YXvjgOdXKuD3To4A3Vh+guvCdvwf0fg2d2aR+IDkJ\nkKNH9Pwz7gYcEsadcK9vG++ZGnKVp3izwxrMjRcoUs2/y+j/d3WUUC6A60vT\nzHLA\r\n=HihL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwtXhChfKXQ5uJzAIdVLgu5+5C/DH4rBiuhtbgxzC0kwIgBbpiYN3uXi7U5D6N0/FlTYMcyugr5AM8U6mdwUrpUTo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.1-next-1589481036-0bc69bbd.0_1589481093699_0.16007595260182583"},"_hasShrinkwrap":false},"1.24.0-alpha.0":{"name":"@xdn/prefetch","version":"1.24.0-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.24.0-alpha.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-sQF40oRzPKvPgrLgFvCy0CGqDM0s39fsXKQEH4gP7XcwBJVTqYxY1ZEgMZ/KKVNjIdiJ1eJHzXNmJCEXlLCZ0g==","shasum":"ba962b4800f0fa65328862ed0d7e151c79752712","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.24.0-alpha.0.tgz","fileCount":44,"unpackedSize":64796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevZ4TCRA9TVsSAnZWagAAteUQAKH531IP7lAs9X7mwF3g\n6ZtA4ccDK1++dDidDp8CkUtx0JDkewfj6Zifk1WEi1Hqxhfy/7aELlTXJO73\nY1A+cQm1iygx8H363t9DxpOVb4YvyBG3tcFjwSQl3QR5qsXCbdRppk9evCfY\ndGfNiWasXYOS6+fpuQM7TRpvC4M5LCZbnPP8Nk9LlgzCcte//IUY1t/hGyN2\naFBQg18r9FD//LqtsysG7l2vhlf4L2Y1LETi+yCUsjqvf/aVcLETthfhXT6S\no3wTuZK7ZOc0ha/i/uzP3FbN4LoN1A09EdayFfELecCwdnzauavsQmguKkW6\nIItlZQG+BnVP35vysx06ex3I4/2j+YLqzJqSmX3NAEozbbiTZjTIs6xm98nh\n2XY2tr7xOpe829+WGCpSuyyk7EseVRsqfRPncIrWWa1ZPrc5xmMBJ0YRH+Zc\ntgq9juz/9H6+bW3EEIOmhivycSPW90vzMCOZ54GCaXmPU1yLXT3JF7Jq7Oh/\n1Bq97l50a21seyL3NyTeYhf5occsv+Urk06xJ2+SzBptAWKCu19JDcOz5eWa\n51Lt5FlydVgc1x3blEfDI2VCUPdT3t6BlfnOw0fltYuIANEX6kLKud9AOLl5\nXEaHlFYuU7lJ57DR8IbFjj7V3aDT9M7HpiJa+aqqP2Ote59svi+EVgk3q7tn\nnkBA\r\n=Yz8z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoiSjvBkZDiEyH3IdcjxN3ig7VYO+JiMsMWenz2anGsQIhAKjBYjmGrWIlTIT2hBabH6ajD2i7VJ0jyaCeuM7UopI1"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.24.0-alpha.0_1589485074566_0.6515742935178748"},"_hasShrinkwrap":false},"1.24.0-alpha.2":{"name":"@xdn/prefetch","version":"1.24.0-alpha.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.24.0-alpha.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ZYKcKOhzJHEkHX7pwwKVyoGuuwrapRePKfOsACLPcsMq+RhgU3NDam4kZOfYyMDJdW+5RcLZOe5HqRtsmogwTQ==","shasum":"709ce79306e9a4f8ec0bdf6a98701004f005e3b6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.24.0-alpha.2.tgz","fileCount":44,"unpackedSize":64796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevcnoCRA9TVsSAnZWagAAkbwP/2ymF7QYo0UfKRMsgHIO\n22vyXEcyGEVidZ/MIvECI43+dmk2te1SXzFANunkfK+VTvJGclMj3kDgfHpM\nAm1aKx35J+/HsGVphoeVj8F8CLJ3yvqe8Hh43qkUFu8x665OqJyhpgMmdTVX\nihczmVqaFRG8DXe6p0PPPvEPbYCyw/5De1H89cMUTz6lrl0yXbxluxeGLeBj\n4x1iU7ZyIRBbyxNuS99dBB/HzN13klRL/kg+NGmaDwSp6hgV7OIobO8ne4yx\nbAGD5O4IjAV4K2GHU/UD/FtEkzX6+dkX171uBMcvQJebKJ20siP7RT50HZ/8\nxYQ5ipPzTmJsQS84xX0EJnfFUOSONd4NCl8qbEPo9JbNK8tTCNchFBslOiaD\nFi6iCW/Ve7A4cKpTHRowLm75xnup6R2LITEHjOUiu5XwsuqicJ+FXH3dPYMu\nnwlnsCLgnMLfBeiyKezsbOyYUEL8FPUwTV4tLSg2P952g8yre4zWyhvWygys\np3Ffs6qPHzibYrKXLtRKH3+7ZzZfzyFPp4G7CvU1TS4yXLhSBofIEaXHOeDY\niePs4GN0eAJrvy0e6sID114RmvXujd+6e8XxLssSwo4E5SyB+Pq+xt4SBVs9\niLDD3C9suB2cL3Dx7LuuJjr9RgNicnACOu6aKWCQ4qEdQXBE+UXt64yZx90r\nMQCr\r\n=uMGG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+MbgEhQqDQZ92LRWJr0ef6h+ruD8mOfPBRkQPYnwisAiEA9nEVGWullffntnfE26xAflINThNn+YOxGuy3RIWNCdc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.24.0-alpha.2_1589496295987_0.23899631407419109"},"_hasShrinkwrap":false},"1.23.1-next-1589524507-c42b588e.0":{"name":"@xdn/prefetch","version":"1.23.1-next-1589524507-c42b588e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.1-next-1589524507-c42b588e.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DFpy4n2qR7RvVY2cQik2kFvhXAbvZi1iL8pkqc8oEZxsw7dSDZcHP5jkWAxjr4HEXYTx5x8jaQ51JQGFU9rc1g==","shasum":"2ffc48a8207266cfe79f75221e1253de7194a568","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.1-next-1589524507-c42b588e.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevjhXCRA9TVsSAnZWagAAZgQP/jWQDmFrUgA4p7VfFscI\nRd9RAXlFl7AoV1xqcC2fcWvr3V0tsKnY4+Fr89kbiCtM2tyQFl5E6LY1FrXp\n5q0hTEXkKPtmVZIJyhtllYzuQT+b6+/XskneXcQR5kaMj7Cu7noo5yzUqYCy\nU5yp4fz6QcK9RHHzSz86JxYeZ9qg5TU/HsBHyvrZl/BBnIQ6DG0UdQPqgYnM\n2HQFXuYfE7dANbVScrvikj+g+5HGWj3OeuzE27pOnJyMWcyo42vaoBkNDVMO\npBhikae8iIMKAZGepvQfhXMvJ+X9KREaERNrk+gIn4QFTUy0YrxgfHi8Nd78\ntbqESVD2ke5ZfdqDZYN9o5hzQcSEuAAYoCLvlo8anhdeoO+Qb7vyzlsklQEr\nNxnRCKabRPRAD2watReMsAbvgieTocgKtybPfYbXiLP3LQZVkTYfOPCjhPRW\nA76OATCV99GFFc0cYXj7aLdUxtl88DSGIVLadBDu4iDV3jSRi2Fw7cqxxyNo\nvPt64iC8C7fNvbtHmRaNmRIwkMYaVuk75CU7+clxo5CpPL7I9vzV0+UFuUh9\n+LG2o3CbB2nnsfeQGW1hWkzzwPLSEuX9FzKG7ScmaA6TZTeMYKIawogMFO5I\nREqU+6CZTbS1THJUAUayNViAA3VXuSDCSXUsFFUnzzaeJl9B94Ob5EEA4AFz\npH7j\r\n=xSNz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYvyevC/+HoDDJQkf3qR6+uq3RGikKmiPm1TOD0rPsmAIgUAin+i3+tQajTba1um+e03qC6b+2fL+KKknI/hBJ5UA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.1-next-1589524507-c42b588e.0_1589524566549_0.4741013123763511"},"_hasShrinkwrap":false},"1.23.2-next-1589524553-bb0b9b7f.0":{"name":"@xdn/prefetch","version":"1.23.2-next-1589524553-bb0b9b7f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.2-next-1589524553-bb0b9b7f.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-3y3HhIPe9et/PG3/hRrQ6uVSuHEDQ7QzvVlrMG7D5VoH4t0O814AfHZiO1u57P3NGxFdvkSK2zE6Rb+0sL+ZNA==","shasum":"8e745a211dffde5c47777b9253f605eb628865c1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.2-next-1589524553-bb0b9b7f.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevjiACRA9TVsSAnZWagAAoGEP/iZYkwL3ZxZmcD6rN1rZ\nthyP5QkEnLG/1fwqXZKMcZXg9wGvszd5v3E6yTGDmIiwB3Xk4DxNMzVvlH/1\nTWuqj6PzTkvFCqzh8wLEl0WgH4Ir8n05F/wf+Opn6xv+oz1jNxD1Fbj8n56/\nfGbbjaiDpwvouqO3sI/B1ulXq2WfOTLASH7hpvv1zsAkCHTX9e1LpMxLsZnQ\nCGY73hQWpFD4D+xvAEhaYMYp13NLix4cUL2wNcJRB2PMCsyUY+fWyufxXPQz\njG5hlT2bN6k6l2vd5m+sUg8YOnniIqayvX5Xh+zuDh1JzqRIM4juu/8JajnY\nNbLWG++KHUvkVVjsZfM25ExKx5CaxQeUur1G1ViKmnSWMtrMmORM+nJKR0bE\nZDEGjl/gLWJ/jU8aOMeKOto+hbFy28eqTizgkGE1F6xp8atst7fZkVoLwsmR\nerFVeN43oDAaayDIWxLPvQ8tDyBJgb0Q6bX25cyJyESIApqGlpmOwIp3AfMa\nn5uGo2AUEt4OPvboSWdQ0HxEMio9Eg28YGVy75Z460Z4IfavQbVGhx0M5fKk\nTJq7LAY75CLlyOyW35NFgYjrIKvCKtIVF9DwyqQxEjwPttFp/ONKYWX2dLoR\nukTWdC33nzZWRXhaZTTYkLgKW/EvnolCu2AkfXSICs79oNuecDqSe10GL3nC\n7Q6d\r\n=UM0Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLhtBI+u4klPy8IXFFM6t8w0KgT8BkYs5U3Ruwe3t6EAIgPuGSCRBqXckofU2vJAn0a0QSdtSWwTfLt3JOl1EDXz0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.2-next-1589524553-bb0b9b7f.0_1589524608095_0.6730991356361453"},"_hasShrinkwrap":false},"1.23.1":{"name":"@xdn/prefetch","version":"1.23.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.23.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9Nk9vH4FTnjHDAAlIuF0upAmv6dm6mBg/zMlb75qZ5qTPh1QhC6nY6lDrWSa3xg76WtRQ0TWVkQGu5ZUZCh4zw==","shasum":"a5287b25b57fc4be5cfa48839212b1180917f309","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.1.tgz","fileCount":44,"unpackedSize":64788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevjixCRA9TVsSAnZWagAApYcP/3EmnkrDykllpPCLDWo0\nF+GtN6bNh9/b/OpGX1YQY/5XagEIF5e1FKar0OEYSdwPDWij4szgl3fNHQJI\nGQjr0yugoYdXtpzlUcRnzEI76drrctxSjZvPrgl4ZMSJbLkWTR1lfcaI0N+w\niFoMHF/0dlf2F/iDc95IizPhI/pmXQQ3x3ESAbwcq3KaHVt4zuh0Ik8haCwq\ngh1xZWPM0vKiF0BWJdphuGK432VHyGPm2WAmRaNCQkjDVrWgTLBPJjdK6Gbf\njt4q1B65Ew8HYzH8GrXrkpSheuc/arJXbwK63LpJzJXTJMXNlNF6Hf27aSRt\nmPPNRIXh5FwGRA1QIAn8t6coNiEzFPEqewO/ZMo5LIh2WdjtURgznHhjfjVJ\nGlY1m+c6zspwWFnkE6omKfXUBptFlupU5+hv6k08WQJOn25o5MeUUH/2KzKe\n8or6GDBXWkJDURFK4wULia/QtsUBgvBdlkaHdCKzH/iu7FT34IZr5Tg/5m+x\nuwUYWqi4Bvlf1WYDY4NgXXiGwyF7rzG7J+IxgTyEVjGBMufPd0MyDJGXNE+0\ngo6vA9YvIAwCm/vmQ/QS82AYQepmnAGP1dhP4RGDJCTp9Axv3weNNqlQWFYN\nzA4Pvd00VEp3+rNqa/oyJ+AOF9NsRWpIQT4PWKJfA+1Rc078uak82glKHCuI\ndNyp\r\n=RuHJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYTOEuDTt4KnFFJwB0WE7zZI541JBynU34tmLJxuN3uwIgf/PwONC+7DrZCmvVRPmtRFAuZAtspH9QPRJBpLYE90c="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.1_1589524656989_0.21487125384634265"},"_hasShrinkwrap":false},"1.24.0-alpha.3":{"name":"@xdn/prefetch","version":"1.24.0-alpha.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.24.0-alpha.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-d/r1NhtD/moW08CH647qp9Iw0H+kOFDeijDxltwHentEK1UoOpr16Tk3bKAkNg0Xh0oDFt/fXOhnJLDMqB63VQ==","shasum":"212b138105435f44d65c03bf1801dcd713502191","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.24.0-alpha.3.tgz","fileCount":44,"unpackedSize":64796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevs/lCRA9TVsSAnZWagAAOdsQAJ1kISs7KqMlBNQnF/gr\nW5r1FTTvweKOQHJd0mkqO01GZPz4WVjFcn3VfjA+XzMzWEaMGJSXRIqsvhCS\nZmcNeR7IEKvIn3x7uXbw0Y58cSvoe+dukXDmGSaBc8pb95AOMH8fzsXR6rE1\nERb6lQ6tkPGWqVXX+PfiarLYuJm1IJqUnpgYdGx/G6P4uK6pJH4rAWL1u8DV\nTjQRZAsclgjCfOY8NmrF7iVB15WQiA3flJ2TgbJrWbnGkbMFHdvsIKtLRmcb\ntLLQFCPq3TUI6Vnu8zPjvfDq6bin39/++eon9rMvpxQS3acwGc+eAtezphxh\nHXWhPWSSwPzuA9W1zuVYgrDkFfMvtNzQ5rPPUarW6CMF5O1kRvyl7UiFe2Fn\nE7VfiJpWK3WWW+X2rZ7ms6sfl8b9PGmMwY5zVj1Wff4avTUXjxjQrmV8Vo3/\nE8bv109FmWlC2T9NJ331SiV+3TDvi9rm/i11uK4dgoZivBQ1sCO1Jp7pnWdm\ntMaBWVhG3ihxU2th4L0p0Fayqh2Kr7Pu7YJy86Tvj0JwV0e/Z64juDxz57h7\ni3mtKzXuKBFceiTJLrksDkicsdn5uzv9VeN0NpgJXFx6IMSpk7YoFBVOqxM5\n9PDxr18g+F8vHBOPpQvyhu/k7TiMH1dyu31vRJjl/sTjw/Vx/MpoMsvAybUk\nU2xy\r\n=bhDI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcRZExzUzc7bSPoqCza1r1F4eN3bc20obGkE0zl8mE1QIhAMLhQWMYUxyK1x2zI3I7tKzXynKKIP8A/w58hUDXRQzq"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.24.0-alpha.3_1589563364865_0.5122993847480073"},"_hasShrinkwrap":false},"1.23.3-next-1589570475-f51dc910.0":{"name":"@xdn/prefetch","version":"1.23.3-next-1589570475-f51dc910.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.3-next-1589570475-f51dc910.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ytCBWqFIwzRPPS1DOf6fR/BDry0Ny8vSFkpl3MkBRC534AFPOLrkbR0bT8W/hg5FGyENRziT9hB4LbhxmNeM+w==","shasum":"079ef4379c76417ba464133f790b5c360501066e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.3-next-1589570475-f51dc910.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevuvrCRA9TVsSAnZWagAALZgP/0RpTXS8sFjYh2QAZOJ7\nXDESKfxDKEHOQQV64LFkrdu6K7MfKe/GbJqufeUEsgf0BlxETriwijwtwFiY\njU+N84etg0Zc3Vi4Ayq2h+S5aZKog+tQQTyOU2uusa2s0X4HkFvQCcS6cpMs\n9/I5mkdQ0HR8N1N4LRw4TqnlmpxzBP7cdk01W1JF9UYwVcvl9L7pFQwsj2Or\nJ9Qt4MDSleFaQn4XybqROzk9qQmuX4+W1V8VDUwZIGqTsGNgowfaHQ+LTJS6\nXlqWP+087pgDyhKzCPW5x4wIv6bIRD8I/GZzPcBMfVUPw7qJUPryBnS5+6nP\nyxlOP08eF1ueYsVBItQMz+cmeKLeW8kanmaTZhYu3duYR1hkF0r3uRsK+VxL\nss9r5qtaTkS1KOopzLv/T0mr6XlmEQT5m2sWYVcLNU8P5q2XqK0XlGBIQkYA\nfRSpwHHAsYrmTl8xQNMZa5MhJ59ee1Jx7wxWzSy3zoEPK9KriHzCLuvU/Z/z\nbsL8MIeIrgG6VPjtL9pWc9wZrkzED/exYKUUIb0+3yl5a556jpI5i0Jhczs6\nDqCiTnXFl3Rcxz7ItN5A/svuT+SbxwPyPeT6bnePOE4txZyW7PQWC7xIeMmx\n7qmwtXu7+jrwEBPmFtzzcmKlXpOmIcF1RcPl89yVG7YwHeg/9mCQ4tKoS/l3\nAimc\r\n=ar63\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGTvsM25j+qOOuPgE6qkG7Rf7wP96ahPHFajtOwstPYUAiEAr1dYUalFWYG0oUseJZoU/DVq1NevJqmTqSY+4vNVsAU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.3-next-1589570475-f51dc910.0_1589570538968_0.7076196649311866"},"_hasShrinkwrap":false},"1.23.2":{"name":"@xdn/prefetch","version":"1.23.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.23.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-QmaZa9MHBYaHyCPToKEwQwnYjgstNcyVFuYgysTpC1CyqebqBr6yGSKVXCAP4E3bSiQeGYhrykzx8ArAJOhTTg==","shasum":"7cf4a241a7c2b52edb36be8b86e092b3bf07ff55","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.2.tgz","fileCount":44,"unpackedSize":64788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevvaxCRA9TVsSAnZWagAAFeoP/iAIX3Q82Stn4L4tYCxu\nE0qA0FIZqJT/TN/79PWhEug1mdKmPpfX93au+PwckmUhIKn3o1OLnGS43Gcj\ngmf5/CmugYtSrfoiNfiqNUBKBA7uFxDApPsg/dLbfS/SJRN6uZ0g8qeDczF5\njhJly8ZooHn+eHWs5KcG8/7AWEXNFMMMUqbka2m6fexTdVi8PD/6rGq4pIku\nYFoc0/9CoQPQee7RvrEqco9pRTEyVgUyRPxla1vDS/T37mOVigRRz2soYIeJ\niKvDBwC8bHt56j72qqhx9S6ZwoGvKzTrNmP0j666qtD0NtmKvGf6Zs08gVna\n3fTYpHNKf3s76itmUCm0IWaB98now4NNYWpz1f015y+ArsGRZEYQ/5AMC571\nr5tc0xlCEjGVNEyO1GQBqoIysYanJzKJPsRaCJeiCRtAHVfWWI3oWul5Oi/G\nAionysAPwzHLloH700+hEDXD7LgPegOmJfMGUE2EXvfdtThxOibqEEKvHf6M\nqm1pHsbksuDlymIzGsaK/vZOQTSm2kI1MSDwZE52SZBJ6h6du0ZOHTtFUkHf\nD4ksd/EncVbfB1l1SqRFpG9S3uatZzHRcbo+/Q9o3rVZD0izeC2dnImJM3hj\nozC6iQVab+h2pvSAdSpe81KxTw8azr/2KyNiZoL7tOIlQMloBWSKyN56jbrd\ng9ru\r\n=sfT8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF68+ph6INfPGZHQvOM89t2xxIy+HwB1WcfvizBhJ+lLAiBZWuVjhsfIAjgNt+mjqUI2g7Xoy4DjCdZMmhIov4Ionw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.2_1589573297322_0.5885284330200047"},"_hasShrinkwrap":false},"1.23.3-next-1589578847-0d14d106.0":{"name":"@xdn/prefetch","version":"1.23.3-next-1589578847-0d14d106.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.3-next-1589578847-0d14d106.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-0QlQ5inUwaDDq8+D4233V5VwyOoZULdJWv+4Ar5nco0UDWYkqDkDooIBWinjqIuPqMqIL4K9ReS/X+dLylpKnQ==","shasum":"d64f829685a454a707ec9675b490901bf270659e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.3-next-1589578847-0d14d106.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevwyqCRA9TVsSAnZWagAAj/4P/RuTmx3b/J+LpbV5dVfl\nJ/T0DKGNpR418sqABGx8qxhxLiZZJSZsESPcE2Z/AhkpYGHiGII/eCuuWx0M\n0DJPUQtjRHlWXLW9hvsPXPgld7R97mIPO8GnXZ0erWey9g+FVg07mCSrI7Jg\n9XwKzwhZzGVFrcLtDJL0zNeyUiAqFS+xZizsiF8GtDE4nsf6eYtfdddd2M9s\nkqZD3syBEFoR+1WPCMF5fOI0ixrUhG7aZILrg9ofgBR52gT+zFzScJqjOULP\n+g3mhXQy1jbOo8BF0DqP0hHokASanGjz2QqilFxA7rXUnpLTM1Wn0wrGmiNN\nb8rpw1Sq6tRENdz7PrCrMXwFdr7dC3bPjY/zEN29gI5092/kxL12ASKTZSUn\nGs/nTvc6N9/HmYXKT1XYgk6qbFHaDmi97qwis+U3Bv8EdgBhNPioOVh3Tesz\nUVfT0K6ubp4+xP+JZ19tD9YFWRzU6KOoBwqv7rQ35dD1OpJG8NCeBBBdQAT/\nuWly/Ou6IEaI9XE77smO8rAdQtVE9dEJCI8XrnfrjHLswJFCUFIAYNTnyhao\niPzxKpAhPtHPkCh5puvZ/65C6mw7RG+2o3jBFSQWISTSwyeYPGOu+ZIr8JvX\nrvVMAkapLG07qEAIrF6Ns4YSH9uQJ6dcJ2U5Srvxj7ytyL0JvWzZFCDiIY3k\nmi5z\r\n=Vcdz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIColAT2q7mcfNyKTbIrHHKSQB7tYzDasGwfdtJB+nhoqAiEAkdPBCVAe3yTDroF34J/ypKT/3pQ2mjhwQriXXBSIUhY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.3-next-1589578847-0d14d106.0_1589578921978_0.6586800710244132"},"_hasShrinkwrap":false},"1.23.3-next-1589578947-85d4b5b7.0":{"name":"@xdn/prefetch","version":"1.23.3-next-1589578947-85d4b5b7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.3-next-1589578947-85d4b5b7.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-yeicjd3eSotCtbiPmbWMi+SlJIXWzkdOybst3JUhvk2jpX746JvUCLOJOeDzCd5DNFDhc0NAHnWj/7GkW4Xt0g==","shasum":"391d572d24efef1c35d28fa7eb548b3152d540c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.3-next-1589578947-85d4b5b7.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevwz5CRA9TVsSAnZWagAA1eIP/1f6s37ePwXLKSDOlsEo\nRqGhOwKs5AR/hfuQ2d0+rsBAj9vcEaWUCNZRg6GzoWQE/ES3wjfGDPovwW67\nu/D9Bj6yn0+yXYJdJcOVQuDIcPclvxwxskFu/DOwsZaFat7ZUJ2btuM46ys6\nVPL9VByw56Qe0WSyMr93yI4X/6n+ZtOTPRAHSy78OaZALRI4K37C23TyWW3G\np1VmYiivHc/x8Fdu7akUC1q4A4qMoxvZWA9XVBqdZDJnMA3K9jd1iU4xi+Ml\n1C0LXZn4Ev8/igi0P5m54vMoq+sKJ5LeiEzsgNxdgfjZ6Upht7csoQffJDsh\nkWBKTEjkv0D7NdSQLDWmzdWjMDLBMLo4d67GE1GO9fp0EIeY5lHYTYCLV6Ss\n2tqOzckyohDcj3y1TJF2tL11Qn3rBU60mVGNXqbQclc/y6CFJwMBGf9HlUTB\nvwi9+LENAw9qOoLz7DnoA4W0YosqA+/PvE3DZ3P3JpMjOSLhavY1XwfZ5e9j\nFcSRuKG31Bwo2/L/SVr/mSB4sgPg9bpxxTsGj0qTK6WczBbLCjmXYtGdPWIm\ngKg6ewmJxWyDQEZdoaK6ysiAnP3JRrLh4C0rYD2AW11p0f+hx64+Lwg5tr00\nRbzYLEtsprGyDzcNT/hwbbpPAXzh3wx/R44cln39PfiEgPQIfU/ht49Gzk0R\nW4Ji\r\n=nvYt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHE7C8h+/mbFZJCf5U3TdsmsdTUVQj357888F1i9tgurAiA+7KSTYlkIJVMb0yvoukaBhVtZrAvjp1IA8mOtVw/7fA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.3-next-1589578947-85d4b5b7.0_1589579000944_0.16857534145326314"},"_hasShrinkwrap":false},"1.24.1-next-1589579330-558c1799.0":{"name":"@xdn/prefetch","version":"1.24.1-next-1589579330-558c1799.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.24.1-next-1589579330-558c1799.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-AiNnDtRdSX4MVtFu8DxRNr83PsN3bmzvkaRTXUHLtIgOVSJw28FpAVBkXhjFmt8O2Rf5GJkQXQtrBTWBzsmWtw==","shasum":"125a458488ea19539ebf363edb9cce137197aa9f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.24.1-next-1589579330-558c1799.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevw59CRA9TVsSAnZWagAA/ZYQAKFKSR56f6IwCVz9Ab9Y\nfv+Qmb85s6cSJ95rzQAu2LX2u6GpIJSyXzLN6mYz2a4V8WPEW4qpcYWZw8SN\n/PyKcqoZr9mkNcd+izRVM3WObt9dBZtdubCJKOjhhxQ7+jXuR+9WDenaLPgG\nLA9+6g2EL4TrI5266fVMJcsjFJJkMuTTZx/z1CqM+8tdWJAl5S7GsRqQpktZ\nMlFwsU8qqsyAWxmghAOU2GncJ/0toVcns4ivRCdheZFHKM5fR9+A7fvVmGVI\nyRhWeSRXVkrMjqoMqvvCr2ThyKr9ff0FcZ+NYNPyRwgpU7Arbbp6e2GOWcn/\nQFQwm9hwJJnzShXPmZWEAo72Oje1rgfLeUxb0MNPaSYAJ/kyYuZCRJMY2DFE\nh0DdDn08IPPK/MLinKFyDHXIdgLJ4BHsuXavdDNoYF1qb/IfzFE7tfTZA4ZX\nXi492OvzjTuUpX3uKP34p2IxOJVGEGAlSaChnh24xCYC5ptR6pBC2fO65wBC\nwKQwHy6Wp3bwrcCx5U7HBFexNk/DFMyt+FtVpY+f9ApSP+p5IsvpL804vg6E\nFuxBEEx2WS/7JXGUkr1FYX6CBfsyRxIetAwJ+kkz/WoSDXD9PjthYIV+Ea30\nVsMkxQAm8fJ1RcRh5Xz8iFkl4lAfrzRriBw7XJ+2NPUlZmNrLNZGIXKOrfS0\n3Et0\r\n=PYyq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbUd/mVcuQgZbjVgkhmCRWMMwcKLJib9nASZs2tyum6AIhANFvxhUXMv/BGtdaJc9unzTAN3QW8QkcZcmtpzACN3Fg"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.24.1-next-1589579330-558c1799.0_1589579389058_0.29028490471620705"},"_hasShrinkwrap":false},"1.24.0":{"name":"@xdn/prefetch","version":"1.24.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.24.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-jXc+VD6aKGZZglbsRCZQQ3Kph0L+74lE5TqTO4i7JOVEyosr8SPiLa4mnBDRBKFAtcqWB7PYjw+0QUqcjGa69g==","shasum":"c4bff30fa3ddb376cfe22e81d97f72aad3a6d71b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.24.0.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevw6SCRA9TVsSAnZWagAAO+sP/3Rkjj7H8JlMixdc219w\nCg93mECN0Xvn6l6xEYY5xwyY3WQfypWOvtcVKNk5j1mN08Ls8j/D+BeaDNDy\naI70TYuQxGspeZEZBTutjg8ljzRO30nFBmeyGOmQuEjFzHDnb4/S0uMjkxqQ\nYI9Wd0tJhjhnitVY1yiJ6wvohH6bD1HLqdHYJaehcB/2e++dlIgJIxag1cEB\n/mTobTlXIMXfMdTKZj/fhRBEj9B+dZy/5Mjwv6MPd37mYb0nGvSGgTrjicrO\nceUBKsgZ+2H/ahRO1EKhGUB6HnJannhi0s1oI6S/DHpXmC7EUrW50WVl9kH8\nTu8BG3CIIb2fELOpseWpGa6IugqYe+YrIMdmcJdudpqgUEWc+Ge/Ir2Z8Nlx\n2/WV2P76Aa06UJ8T9tslO3NPDJuI26j1hyirmtEpdM5eU6i8yfQZSNJ6SPgz\nEu0MdZDI2tzLNGLcCEV1Pz9FuN/UGgCnrSwCGLAaQ7KWMIKIIFbHjhevVskc\nKsIXJ6B+oeaWAJnMFxSZyjwxBNsD/1oNpYtlaOp6mw3c/BlSNfC0WUQLIf0o\nL1X30mo4o5uceVUVX3LieKwfmYwPqPZZ166LSkl0fDerb5WSGNKz3Dk1OuhA\n1pcCZTiCyc6bDLwN4vSM8oabavKusLgH0gBwaNVHbfijDYTpvQ4yRa6prRlc\nywfu\r\n=S6TU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsSboUT9tuMu409ivshNGbumq2KFDBC3igAPlEMSJT4gIgaU8B5wXK8gPNcXTkCYES3lB3O7zCTgGlL0EGWexjnws="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.24.0_1589579409940_0.39699801326583817"},"_hasShrinkwrap":false},"1.25.0-alpha.0":{"name":"@xdn/prefetch","version":"1.25.0-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.25.0-alpha.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-PiqfUX3Dsr05+oACMFQOCuCIsNsldKOunSn9FL4eNtDcx7CywpxaCMvdaXo+i4f9DPekRjsP7q3bWxGcixSiHg==","shasum":"910d8f19a75044195f94290a4d631a9545a3dba4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.25.0-alpha.0.tgz","fileCount":44,"unpackedSize":66680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevw9FCRA9TVsSAnZWagAAdawP/17FBH/t7pFfTNyivN/5\naCyjIodu4/4jAAEOmyn8OlRuxPnOoZXRrEp7dagTCuFd/6kZoxAUwBWPo59U\nj+95pE50exUqyLL1W4FPAEbNyZE6kQYOPNjXZvBZzjz3zpJb+xMXU6QeWOCf\nyzcGv1AYZ8YTeCZBzlneaZOyC46IBnbmuL/5DTN8Uh7FlrF4k8wHBtiZVvdG\nvWdb53yPcZyZ5DmpQArf7xz7KkCWyXQokr5wfZr45r8U7dctRnSDZDTQMSYi\ni2f7RLThTMUU224usTsjNZUhCuCFDvFG7VHU5dKxohMnUH+7HkUuDltI64U4\nx+HaKG/Z2Mb6KqfDtyThcLnZyf9buU1aa0KfruWwX4aJoo1TdyXjRpaRMCV4\nxBM687reP8Og+aa0/MhNEnEmHsI+On7iAmE1gLARrxaNRJn4PsNH7whSiYgs\npiMNQ4GFtagiJjWiqyMOZlOKauQe5SR9+heXqXnH3pPTwxl7Obbj31CWuwz6\nczD3jrbDS8K/oP6Ws1t8QbB57Ck0xzNsUugB1qMi6UmbggpiuKT+bLZmP2eN\nsa2jk11kJHS6b9NoRBLQW3/Xx3T3zTxBUW8CD0ek8BYNEkNxeVHamdEvAuRG\nkxwoGP24NjEvQ3BQvHWSPxM99SUJjnP6nwNsYSxw91iIN9JLwJdk7fvFhABk\neW9D\r\n=w8KC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgOvkTuigDJb7zeugOEzP8UQapES1CBccCy+ROULl9JwIhAOxRZcWwjBgxBVBMgwAjv9+kPgYuKOyLsIPQDjp9MIC+"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.25.0-alpha.0_1589579589362_0.3529678377052401"},"_hasShrinkwrap":false},"1.23.1-next-1589792715-8029d547.0":{"name":"@xdn/prefetch","version":"1.23.1-next-1589792715-8029d547.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.1-next-1589792715-8029d547.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5fLhoR5CQEROHA+YN+fhJ94N6N+nU8L77PN6QNdVpKlamwKFisj/Q9OdP7LE2DQJoSDlE8sErtntdTNXup3b3w==","shasum":"e8130ee4ff03d57d1c7c3aafd1f47831db10e360","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.1-next-1589792715-8029d547.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewlAOCRA9TVsSAnZWagAAYnsP/RmH6aSnjwZwg9U+/pRR\nUVPLR67Rm+OBE0k2GZ67VWejf1+YWfznUACAmnizUfJi8YBh6ee+Wonem5+7\nvqdBiLv+64kbNwgYYQHefbf5Lzf2CZ83TDDr5GvNZuTQ1yR7MK+8jQP6JvVV\nbvhAuvOGsBOFo/qV/sC3o/cU7GKlGWghHRWBDce72I5RbsUxPWqxMLOBZa/A\npTiUkLgbRgJ35xPQPXe1Jw9+jCjWl811/cbz2rTlBzF+VHJAKGhYbNYsJDNK\nIc5uAWZ0nu7tIBHyYA66XY0umz5SAv+HNUFqAH9kfATCgV0/257+pMnHovsf\nnE/3whtkLW7Sp6jWwpdvH+g/7bgE98/kIG54uuDnDJPVsWcx5r+NZcamwS8f\nek2vKrdMs4G0PeaBzd4SpPLIS3ltyx47Fv3lBR7VztZqMzL2547Gq3gmOOG+\nBk9iIGPAH0tXF0GchqfClKAoOKEECEH/eKbTtL22EDg8WqJVQZJoL4Ue3kzm\nBeVUplGLo1jJiNOOS+QlTorljwI1zyxGIbUHNN3TRvvKQWhJzeeoB2FvZqIl\nV4ClwTudcFi6NMtfaBTw+xDrLARzL0ynqI4P/pNeMDtugrfDt4ebdCCDrJqZ\nRdAQT+xTQ+vHQ7UW4E67KexaT1VLFJ6bxpFUOwjPNGYdgfvVbSiJnB+jm3FG\nxhsD\r\n=TJyt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8lvf6+x0jioZUy4ajdM1fN0wP/kvnrfHlwhMIUEavsgIhANLirQ3Qm6kG6d0LIUYXCf3kDrWwEESBxZtSOh0LQm0L"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.1-next-1589792715-8029d547.0_1589792781595_0.029693464203214948"},"_hasShrinkwrap":false},"1.23.1-next-1589793637-a10510a7.0":{"name":"@xdn/prefetch","version":"1.23.1-next-1589793637-a10510a7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.1-next-1589793637-a10510a7.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-/ALmNHMHdAXLGv9/ExUXC15FXlLajepDYF9ZVRH4w41HN3Taj+gLP4kecFmWiD4Q/eS8vOqkX+KFTuL4QG8bww==","shasum":"a2a63ed006975b8317258ea7a0958f7bfffcdc90","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.1-next-1589793637-a10510a7.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewlOcCRA9TVsSAnZWagAAKAgP/3X8/s1JH6WM2Vx0LuWB\nkNAYXD+f60dSPq04ObP2Gjfe0PZzMzh+5Psd39evdw6cHTjZq4tcjjFMdqck\n66psnxiJP8v5UAui0yV14NNdBFBqtvVjvYoHrw4CkyVrHp3QXXc5o0SnB0P0\nqFZynUmVP3Tr7I1YCeP06Bj8d6ckyOKUHfAUhD5cKgf3m1qn8XhQvvHEOocD\njVRYUzNow09kqMdep1gT4qMRwEwsF6N8Qlh22R9/pr84tPedpScZdplS8aHh\nxaVw0sXAfmIAPWKwgpXxBMP0Aw4KfHKjxio00e6iv7yr3PhsBzDeFczULf2u\nUwBxQr+z+EIHbuc6g46IqrVkxkivnr4pjGj9rg+85WeYPRhLuV7WWEtJv91y\nOSzmspDcCD4odecWyv6vV1fsGwxWMYwdRpjSK2qTLNCDUm1Ca4ngmAB3I7iH\nDsVCrAGrnQ8Py8ney8cIFDdIZrlgfhtZU6OLI2/TNNIq8P4LxrH5kagx94h+\n2bOrAblMfncnyUvTFlERB43NcGDHMIv7ZNXF0e2DwtqycgDs+i+7IV1x2RbG\nSSK7lCzwN7QOmvnBb+OmFpE50OQjwoRXv7KcyEkGi5vlwjsiuH+xfHLs9NRw\n8ZbT3HUgfU5QySVOnkR6X1suohPKb3h+wvZHfxJEao6K0Z0AAXai8f8J65Wr\nvkYB\r\n=bJEI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAto7SeGUeV1oGchdMcCfxPxULH5QERuYVZ/aYuty5gvAiAhzYRJeQOpVDK/2/5JelAgLWRYeDo8JbJRsrQCpPopcw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.1-next-1589793637-a10510a7.0_1589793691621_0.6227689990005907"},"_hasShrinkwrap":false},"1.23.1-next-1589798825-92958328.0":{"name":"@xdn/prefetch","version":"1.23.1-next-1589798825-92958328.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.1-next-1589798825-92958328.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-I+j8i+hB3F/uE44xYjPSF0pduqNtkBUxu2n8jPtmHjtK7Y06MAtK3FPSroBEjXly1Mpgaxqp1HA1n2rpYak9tQ==","shasum":"3a06ecfa7ac7129fcccf7541e6f43ecd966ad390","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.1-next-1589798825-92958328.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewmffCRA9TVsSAnZWagAAoPQP/3G7yTPW4ntqC6SqajlA\n0DUvxkaq7b8optPtOvb8Qg3mlgo4RX1+6rUkuulAzK+v8kZdyHSG9RrYbmZt\nEzlzFR36DsJCj9wt4IjXOl4Gyt9mNsZZ4jMT+GaBLdcM6ww/xXCdorR6Q92u\nTSRNcVe70N66z0UkEHGrId1dinMt0C2M1atfIfZO6nm9YBQ4z+I6ZcJm21tA\n/Hcw4rKj4XtK0QMdP54PqIzmfqF/EucVvtaaEYgc+LaMXYdtSfJu8i0WaJ+T\nGmKyHS7OScF+KI+ce9/eJADGXS9hyCd9pN4Qonid7ty93Hz0JYtPZkuwu9qw\nvufGfvCPgMR7EUTU0to7TVHiWLw4Yc78j5if2aLuvOl9YYoD5RCrVHMk3Mao\n9KS6EruJkCSLURBZQYYbPvFbTgTU2d3LGVZnZQf9uAIfWFOXWAFq1vafaH/y\nEEwONa46btT3rF1UJYJ1kpdBDsyChITlVjob9sWnvGi2NzB++6NWEzHBjzdo\nKWVgrbtjpR/VCWqE9hlVqkTpdg8Mcj7C1Zj7TD3oOo2xjFbwcM5hriLk7Qd2\nlClDHTAIbNMx8rw9MyH5nsbQonuEAgBNi4e0rrp8KZ89f8Fn7f7IY5oJqY8I\nFpJXQ2hl4VmzwFM22KkEoXbP0j8lzXUA3vkGHLQdfVUl9PYJ99SzMhoVVYHz\nBjo1\r\n=xjFj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHqgP348xwvhXWAT6jD1eGWlquplBADor5ncWrmWonx5AiAkSlUJ/o2GDEsb99uXzZZ0GCR+HUkREzKtPlZgQhDXJA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.1-next-1589798825-92958328.0_1589798879250_0.7429270834009185"},"_hasShrinkwrap":false},"1.23.1-next-1589803777-2427c085.0":{"name":"@xdn/prefetch","version":"1.23.1-next-1589803777-2427c085.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.1-next-1589803777-2427c085.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-BiiIrw3MxgGcsmejIdbSNOSfY6tXp8zgncNBFO6GVN6pyyxp2KD6JWlao6imGCreo2EgzN9buCrtb1DkunbqHw==","shasum":"1389cf3fea47c470351f93a35ef3436ad4239dbc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.1-next-1589803777-2427c085.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewns7CRA9TVsSAnZWagAAQoYP/AkNXJPYEXlgNmrFx4Ib\ncnhjdFmmJsEnVl1TFUic8V94EXnfv4rt6faIAZS9cDNrKP09iKxNUogq5pik\nV0zEUk2vD5dgBrcLqKeG+BB5sbwPT+jJW13DuK2MUrtT/vlALS0dbJNekQOo\nVBoLSvf9hoeyAHxKMljkf6s1a2cXTGqNOfdC+2/p0Tx0TLW8McD7p/YLoLdV\nIkbwFFrO5qsMR80f4zz/NyKwFl2GVxtuzm+jtUJ88O+KyWptXjLMYWGNX023\nzrdWWGC/T4fvPpse5FN3Bh70d6JVvazOiEoK+swGte7Bgz2omsoJik/t5BT8\ncMPLbX6k3U4R91xBbLGg2gguoC4BII4761Yp54fgSi4KTaKMPsGlUl35i5el\nW+IM2+bRzmz/gURg8SwDY6DgnSSriT5YeBxo8+2pcl1ep7Q6UmKg2YLiLNCJ\nvmhi0hdsq+IG1bsDNc6dKQV4mb6Iki+AEdltNLFNney5HxpTpkTvO1uMl80f\n0UcST5HpS+t5CUPq5fp8j0kRxghR65bt3jm0vIOlXbshW1pNg+0kMyHrn5Nz\nlVnam7+MmyQSFndyAS16Qtk1qenILlqU1ohLSL7OHUGNO8F0KDCiK+e+23Hr\nyTboezHmmF13qPAxu3BfEpClOHpr3DihrXNG4WtWUOmPyvHP0W+U1D/SvkBI\nevJe\r\n=QK3u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGf9DqankCK7eQklElHjlL9o4I3aTDpyOEVIup64SqPDAiBA/0MA+ih9nCkz+cmsqQNW2AgQmztPH7gkvsi3hhvwMg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.1-next-1589803777-2427c085.0_1589803834941_0.9420529269051738"},"_hasShrinkwrap":false},"1.25.0-next-1589811012-89e82182.0":{"name":"@xdn/prefetch","version":"1.25.0-next-1589811012-89e82182.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.25.0-next-1589811012-89e82182.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-+UcYYUfui9wSTAcSZWE8olatiyK4fAX+2x4wR45aan2GQCKUXi9EI7EKDAxEgOJjceXVZVHYypuDj5HAbgBbWQ==","shasum":"0c3a906b22b0fcff33f1985998a236b83a19038f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.25.0-next-1589811012-89e82182.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewpeGCRA9TVsSAnZWagAA5A4P/024CcVT/KA/JpSoNJzZ\nVc8oI+s1adR+Q2/FgqRssfcEBlZqyqVMw1ND5J49y5WfP9Uug5eN8DRd6upi\nrp7mDx9mU1kE+hciMiLO8lltt0DsZcEccNjlvU3/Q7uG+BOvBGB4J6seleG6\nmu0U65AuWGwXvc9uz7w9ADLUUntUM3bYUe7FqrwQuWGRAEEvTmSFiMQhcbtR\nVl4/nQPgMDYyit+g2dpBpN56Gs9HjoELW0b1nyKNk+XXIvPz6BrVWBC9cfCv\nfQi7RB6eCTDhWUHEtfgDvflf5lAjWQ0ZO0tvZAXaWglcj3+y+ot9+nu1UhrM\nTy4TAlHOTBNsqByN/yxuQBD+7PcmajRKsKcdlwXuHWV6rEZQtzawESK6OzBo\nBd38SPYKglXKuAWgkjoNyS6GroJ2RuayxoHO3N+ijPbfTx7T8XG6ARXT48xP\nBGc5NHBre0llF9XiEVKIbUeGPiDylLasJhzHSUEaap9KelAD5XtrzVXLDtNj\nTj4/5KHfU5x/+fx/qwKuNO4gBfj4Fse2eyVOnMNw2XWCkdaFx9kAYz2DOQZY\nL17mmYmy6XeGOMvOuH8nCrYbHd4dpswwtkQpKvEJx6DuwJVbjSXIb56R5ZCw\nJkVZSx/8Pn7lWdJwcJupTvAAAoDtLDIXd09ySvLqv1TVeaHY3eatix1MLewK\nbkuJ\r\n=a4n7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgyEJlkLBCbnfayX1ZczpIWd8me9fQOQXYzXTt8fju0AIhAPCbUlXahK4WlZ92+zbTdIG+VcvM6sE1nazXYjPDH3AC"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.25.0-next-1589811012-89e82182.0_1589811078523_0.4950717338022981"},"_hasShrinkwrap":false},"1.25.1-next-1589811313-bbec18d0.0":{"name":"@xdn/prefetch","version":"1.25.1-next-1589811313-bbec18d0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.25.1-next-1589811313-bbec18d0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-N33MOin+IxqSBOhnlnLX3d1Dz54+G3saeO5ZLDoeXH5qTGQaQCr1SNorQJv7zV0E8YR8LgORQlBZTVMqD8WtBg==","shasum":"b87c4fa6b77c1371a97694c53acbb0b602f7638f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.25.1-next-1589811313-bbec18d0.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewpiqCRA9TVsSAnZWagAAcM0P/0MkMlXqMcNHbn0nCdpR\nnmq4k9G/JsLcPrqw5awDjqlKczLBjqfzEzjNTbSl5Qa4fwiruiLa7boG1ZnP\n5P6hceRu+VAWW/Y5LO4G3lthHGlahbbaVHm7H1ietQ1y9WSqxh01Ubr/W81C\nEBUgQB+UpF69oU7EfpFSzJPteihIO2mYhsqPNW9enM2g8dKCCfbwKSbSLd4M\nyzjFqNo1Sdp9rKwt8++Z7FvJZQqM9Tt7V7CDXkXr9FZ+9mtVYmOp1XnXutwm\nKKrYCwS/Pu8i4Oe8gh+wH93uZlTx1DcgNYwxA40OalEYvYpa/akZc5kymViv\nkkgdgUQevEdDmcFnhISCytK0B/wryl+dIh50Qv5eZlLbfbrE+/6jsDoxE2D1\nPlOxcw2YhzOkRllFg3tQ8dy0tGYphC5Aktcv0KGWuiZwZAG0oihTnIE+DQyA\n1Kff3rGyk5XTGNhK4rrZRhtYw5m6ZcoCpb5mV5fyLrTdPDE9cezFFyHYRt68\noWYp1+oFiPb9b5ZUSkUgqyI93PMWlTMZ8mnP8aQtlEg+/Uy08Ya96IBHyVg0\n4OmmcpFeYmUolavYoC7TSnp3i9bV111vBn7HoRRcspzlYaOGI98Y9Xu1+KSW\nIYVW2TrhP/+U2I4FZu8u0RNRo0MciL/VK8Hu5OYZkkVjDA5Uqcj3bJB7nqF5\nsVEH\r\n=/MxK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFethJA9ZBrc990wnj0sqDUEHV0lim2tBE1EdjlhJtgOAiAY0W+2nSs5j/HTPALXHnwlYAt94hZcvlS8rGPsKdX+/g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.25.1-next-1589811313-bbec18d0.0_1589811370307_0.9752428593751057"},"_hasShrinkwrap":false},"1.25.0":{"name":"@xdn/prefetch","version":"1.25.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.25.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-XKOF3HBuF+0fLB8U1jAQ7WBUxd7f8Yp07x61PPvoP9csQYXqr/Us1RDn/JZl5+2ebep7TISq6qfbxTISZWht2w==","shasum":"a24cc8b56299906f14dbcf9591882fc8e07f7335","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.25.0.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewpj1CRA9TVsSAnZWagAAL9gQAJKVR9NmhEqomlGyBccY\nOM1hdzi4KLMpU/enYq2t+Op2lYbHYi9BXvrQCWcCoqEySwsIPJ3SNbN5COYd\nbVKgEMDHprcL+Aye7/ze80zyYoWTDBfefR4kFCXTsOpgnTVIFWs/MvGeis1R\nwPZOc2fnvx0eaUxQDmm6pcS7yXnQazWrrxqq147dt4+ZOKCkbeSqPkmfT2Si\nR54HZsOpUaIpwxr7o66PfgOZ0V2Iy4JHfE3evTCyrdb8phe0IEs3+wPGdmmT\nZYe+yUUvI8yABwr69hIybjoKXVfEUe2K/EK5N0MFCFlI6hntbXUFmC9wO+uo\nfnTwIKbIWh0CYZTF9f1WqoN1EDUwjJqJyHJLFHPcHWYHRnMN5ZjbRYgGrY0o\nAM8mhwuM+ybOtrk6tHEKDY/NEielAtkgAylA1lg1cYLZUmc0xS241VSCPuDK\nQT6UyCClzGGe/n3awfYRIK3c/FFPLpcJAKq25QPEvMR07DlLp2ODpRc3Y3+d\nBSGJjQuh2sCHXlgjuoXaZJOVarYgR9D+zf41Vs9zdaNLwZhCQvsjfmtjhu1S\npNuNh5J+Eo+3D+SlYMDc1Jt0ftxAcgSvQeatY60A9Sy6iqJZNbE1QMAhtbd8\nHl89GmwQMdDV+R7XyAZj/jFILPRWWTsn3rFHRcBIoiYRZM9Uf1JJe31ipZb6\nyzzR\r\n=KYn0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1PYvjgNn0k2ouTC21dGSRTcammXXuiKf5ENFZyPIkLwIhAP/Wge+homG/g5pt+K81icIFiWz1fimdb+NreE6D1BE2"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.25.0_1589811445485_0.1833374464440194"},"_hasShrinkwrap":false},"1.23.1-next-1589878001-633ac722.0":{"name":"@xdn/prefetch","version":"1.23.1-next-1589878001-633ac722.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.23.1-next-1589878001-633ac722.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-V33ON5q0JMHek6u5aAXW10cLKoIqak6CMumYKNHcBYfgVnl/y1ceICSyvplhprsGw94AS9eBynBoLzetOGAfrQ==","shasum":"b7172bef83a50181b04b306b59847adfa5b19084","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.23.1-next-1589878001-633ac722.0.tgz","fileCount":44,"unpackedSize":64815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew504CRA9TVsSAnZWagAAckcP/iXAA/DzutJS2qVSJhKa\niba+/yDfnsh+Osm3SoGLiInJlEkeCrIDFPJANHNoz6kz6BCH54KJxhjXXJLk\nxrgaspyF5o94wKua4fM0vu6OKOsWU7tU3byC4uBoZ0Z/zNtcow7LOA8zIoBj\nRoJlimMH45CoI+V7egCBx787GEXN4FKvOymLwD3qSck3Z4mhgx4nHockRbjt\nDfKPR5vu3mxBZo6xaNPt3ggH3+iXxPl1yU/rblXLWRQ2CxZpbPkJpbFrp3dP\nE+uRuA5T9tHI9vxt64ATWIywAJcO1iQcizuFD3eZ1FS4nMR4Q+LE+m2SAvU1\n9cCX8EyAFs/63saLplO8WCYpjjbo7CmYxwCBMLMt8ADMQrMjowhhMPvMPYib\nTtH4cn9snxyHi46jhPQ4kpKgTuxSfDd7O/g0xbtzWUINTc36Zm8mVLreDKnM\ny/ho7zxDd5JYMbLobva9IreKEBaR2FpeWd/eg9FY6LtA0WlZuOKy5l8afg8W\nFVPlz8P9YqJ70syv635BCqFRRSlB3ZDXiWCRh4QniLEPPlldgzdc87Kkgw4W\nGwDFqyL5S4jsWlzcxmfdwC+jUxpNq7JtT0eGeKkoz0L1z1ULOsl3jZcHg1A9\nrpBYEZe7WmDCYQGBfVgXbxgTNtbeDGknmM5hC9iw5GUfehEQAkjxUTRljeox\nlX+o\r\n=A6lL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEeTDI1NsuVg7dkBVvLk+gxSJAy9GEXm8eid2dsi52IwIhAKfeT0irdcmonX1zjA4hdD1U7kvne11mGI9xphEQqvU9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.23.1-next-1589878001-633ac722.0_1589878072354_0.0545087487236362"},"_hasShrinkwrap":false},"1.25.1-next-1589880716-0dbde70a.0":{"name":"@xdn/prefetch","version":"1.25.1-next-1589880716-0dbde70a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.25.1-next-1589880716-0dbde70a.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-XF1JOQHU8H6MQQ9s9C1aXKgXxRl5Ot5nB0GDgsBVfr40oGCRfMf6v+C/cVGC2yHuIuWZ1FORLfYe8QmxOomcOg==","shasum":"0121ccac93f27f3d54751d9f156a339e2d6d33bb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.25.1-next-1589880716-0dbde70a.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew6fBCRA9TVsSAnZWagAA5b0P/ic0lWBJiAihWn9mQ+Zt\nrfnTWaPnxxEpPC+WUCVQN4Tme8BbdECgRarwe7Gkpk6puqlQWQqDZdUNbN6W\n/PToeBogNTzjZ3AV42ZU4CUjBOGWcw01wg3AaY8QwPm2ryUKHMdBsIBMRpss\nnobSzuvr3CAdYQ7Y1GAhHqt7lxS/BcnVOkdIiTeYJZaevEZ1AEhvTVgV9Igd\nmnvl44EbZhSTV5MAReZTWO6yHJWr8KhZEYqG6PZt8LgcWipYPEDz67MYUe0E\n4JIuW0v2OlzPOiQH4s1rlbO8jxclrr+FHhlPIj9XneDbfBOkdqn5RIQRtqWS\nItKaKrJLs6Sn7Lu+HLHcmcfJCdJOOwBhUmX/pUtwRDH6V41hD6xqEjICLAg+\nThIhWspjgGhVPnvF5seWc26ccXvODc0RogcB0BSiIv8+wck8RcbKoxVVdeZB\nwEZb0mfl5nSTKmiW7wPbjH6gXVW8nydeDf7BBEf+s6HicRao1Ktgn1eb4qTY\nnLee8cr0g4fhp0aFX3/lCceMUcioCW+k+vpnoQwQPKriJ2qJTlT6hbE9/EOO\nzOSAsJ+3I+GLeR3BfAtMidy0xmSXKQ7Mhyj7vv0/Jf8fqWHGeKXHL+NKwcAf\napvZ7A+5ULf/JLWzcevdjcT270JSehb+xGeF/ANHkZNXUWlNwl/yX/JSmAML\npkkE\r\n=n2Vc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2OU1zY7fPv0cY3IdAKD1COI95rdaka6s3LEe4ppg+kwIhAOB+on9uAYpH+ZwkFim2gBAHM9OJojcfj/KHU80MNWwp"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.25.1-next-1589880716-0dbde70a.0_1589880768595_0.7676444128683895"},"_hasShrinkwrap":false},"1.26.1-next-1589880919-c6d2bee4.0":{"name":"@xdn/prefetch","version":"1.26.1-next-1589880919-c6d2bee4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.1-next-1589880919-c6d2bee4.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-97quCkBQzDJHS4jJkfYeZCvm0DoIIVOdNPQC/Jz/V0mKoEonnoOepjJSFc+TAfYCkIA0BDQFdrzqhIic/Nl5zw==","shasum":"914151c22ed187e85edc875b4fe99cd3e87fad54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.1-next-1589880919-c6d2bee4.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew6iVCRA9TVsSAnZWagAA50IQAJNK2D24Y18pK3s/TDk4\nBJlGcGwdBfUvlf6sVFZ6WQwjd1MwsiZeUucaT3rtamr7YpZTZTqhcPIapDDb\nVK2iyB2VrnsZWbANZzBOGmXKvdfe301gUGjFLk4LZBgGDH6JpWJJT1f/eYFU\n8O/fuf0BNAeT+PwU+hns7xqmwpUSqxhW5EC2goGO8r6uB18dVrQLFo46R3qb\nj1JlkibEXd8YktMkZmUovEWs3meRv2KDERUHgx6DxuGqxg4OONDxv9mDH0re\nmyTrpiv8QlwvC5Wgpe+WZ/XzKQq0DAIraWWRqJWc7cPiLMzXexnnjMga76Kt\nA6vrSMR4AzFJrcPLUYRjB+GMYTSjyb8h3HWxoany5W0dv8l0U9QLnrPDKoIO\nYBfSmmtwggEzZzlua28F/jMAz0n/teyJcCY23SZHdwWvFzCnsftmRADRL4bS\nUynN7k5us8jxAIu5azyr7Uq7ivEZamOHSTENggDlgO0C/uTn3GMcmPPEjBEi\nqmSY5E+k7d2ZppuK+3WlxPCTqL0yZYIZj8I/Nxf8nlB8mqlVJ33MLpg4UbBb\ndp/oL7eXkpH5u+plwWTirB35wQqcPqoqx+ij+GkRFO/pU+joSoyalxvImfFI\npxavTE4OWucZNcbvPxN0kLnURYtzRdM7311aIEsRnkBJqIZQ6Ajus1qCBVqE\npBrD\r\n=56wy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXMU1m6yGmTRtRGja7v8RVWV9iQD0JZqfO1+ThQw51oAIgEqc6VHkWa8gg1DDR0nomG9hV4BklZdtxegK0Jhif53M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.1-next-1589880919-c6d2bee4.0_1589880981210_0.16749664188891344"},"_hasShrinkwrap":false},"1.26.0":{"name":"@xdn/prefetch","version":"1.26.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.26.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-SFpKc+/c/YBNS60YuQCl59ddIUqKxmR74qzAjMBdViBbjBYuc7cO7ur00OyU0A1TUc3JLr7lF1TLsZkfv60fKw==","shasum":"ae78a554753bd2a6785326f8e498308ad7ed3288","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.0.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew6k8CRA9TVsSAnZWagAAmrkP/24rscJA6Y9tskdPXh22\nQxP3qOQQ2NiKrR+w/rLXnDr5s6ORmLwHrz68y1WmOyM4IoOi1XNUqLRByVyx\niCl4WWUSurnD2ZwRrGRAP5qFEHOdMamhM1EzvX9BxHJoT3qQZNoGrfVShNCP\nPRiCkt/K8tHW07bujUCCf50+BJLkEO56cZf1FKIuvsfpU3urURMzZiPzJNdt\nrkbFnNlsHAhgfxHUdVXMP6O1A0+DUMmlbCRsmo+j+If7NWdojY6b5HSs027F\naK9Kaq4SRiBZHVl0BikOXo/pK6bKXxfMtqwNNXctRwDRuPIBRXRk4hOJZwCq\no3mLV4aXGj902wGrvFKtRZSqhnPX7xXGFaMWCQ+/oo1ohPtTR6YH1SsnqWwC\ntvYt7oMNl+uXUbWr9J1TKHXiuOxt/Ef++pVb8FAem+7legJoZhksAjZ3uBJz\n6Wux1kVK+2VfFnAFs/Pt8jQF1TmeZ9nqwJ14MhUHFD0an6slnQdbbkuhrsHY\nENf39XYiX5zv2B1zxMFWr5Bhukb5DZzY8RmdM5svMfpUszm7YuArbKQRWp3Q\nsnY0yUuk0rjAVgCvVMM9EwgIjclmYfvNsVzQduxQv/nF5VpwEEFX1GGRiV3e\n+hngqpoPjpH2aE6QN2edRZVPyRrtj6Fw8QbudeOsIkG6wezS8RPXcGnVCEwQ\n4X0d\r\n=U7Lg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICwbxTKvzluA/pKBzcuJ/l5KDlKrnT5Cl/XdKYfBCCefAiBHXCKpThzqo8tXMAFP/nEJOoDBAq8PPWKWsbfQlmtbRw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.0_1589881148096_0.7230949625915368"},"_hasShrinkwrap":false},"1.26.1-next-1589883839-2e2c9df3.0":{"name":"@xdn/prefetch","version":"1.26.1-next-1589883839-2e2c9df3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.1-next-1589883839-2e2c9df3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-c04Y9PBYzDe7PkbRaJ3MOCP48oS33vdLuqWTZzUp6NJ0c9907hkOHlRr/4e2Z+JqTikIk/Bsh5UnuV3fYEVO+w==","shasum":"b7c86a49a6eaa3a38ea3dad75fa9470abf7ab6d2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.1-next-1589883839-2e2c9df3.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew7P9CRA9TVsSAnZWagAAgAEQAKF+zXbX9vPf5WO4v8JZ\n3LhbiKuHDXkOts69fwfoYgBEhUDcuphKKBx6Nd3ys74Z6iLvSXqTaqwPF5B5\ndQ8g9Uxk1I1sRrgOi9b3ZDOKa7HgX1R8T3Rx6Z4HWNCWD9L9gYmRzx4sGtDc\nQ52vneJ0pNmIwZ2JniHYercCiiTAQQJCG3bywtk3ZoVdGFih/FcYpE0jUFnS\nDtkysgA2cFtkmsAXYzQXj5HYmpLSIqadfil3g8b9tquUHgfYyQg6fdPAOuXa\nGdaP2qU4Qy5Uxy2pVxrZOqMeMsW77iO14SzaFbghbqGgKR4YjH/Tw1eiOtG0\nIy1mdC+8A1Pcn8DqhmSF0YGga0dR6COMdg0w5OslcVJPTJopcBJ4bZaKH3vT\nfu/2ekxB51kY4lOMvE3/bO7Izr07dMoeB29pilqPNdBOPaWCPojpfz8ObMWT\nwiiMw4HPJvyAOxKdotEpOTcylxOdWCADo4muNsHmji7GMIb5uZvUc0ZDRSpu\neP8hHeXj18xQ7xlFxBqoWT+LprxsULOXy2jPcPooUYDVKYmSsUj/aHAy1Hqx\nNSGURpESTjVBz288nrkolch69AYXTwSBMN59P1yjg/bWX/geRFrk7GxCoK6U\nmpINY5wrFLQJuZCehIzrOn8Lvp2GRYZWgemt0LORTVujvCkDIZzcsJgEAdK8\n6WZP\r\n=0wYH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNI3Wq2a05KL3TmKqDZLmgTe7O5mNlDPfGI4kqWDtGHwIgJSSkHJ/Nnw7ZvOzfvIWdcGBHZgidriR8ktaLAYFQ5NA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.1-next-1589883839-2e2c9df3.0_1589883901583_0.06571797211822994"},"_hasShrinkwrap":false},"1.26.1-next-1589886107-b1758c8e.0":{"name":"@xdn/prefetch","version":"1.26.1-next-1589886107-b1758c8e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.1-next-1589886107-b1758c8e.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Tduioo79Ro0K+rNQT4dcmRWfPc43TPQ8jTRlgHxp3D5FcYaRDgEo+SGWGmFhVg3EP73/0+2KYr2vtk9xRMg4xA==","shasum":"f75aa686061ec87014f28a73a7fc254a77b656cf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.1-next-1589886107-b1758c8e.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew7zSCRA9TVsSAnZWagAA2hEP/RRexCE6iJLQWs++wlBA\n/zKiEylLYxeZ8X9axWfDdS2Vd7CwyWNHnjKG8RS9DrEAq5Ddz8W+kyztEOAi\nnxfxPUV+YbA4txRXS5rQvkyzVMFkHuIZj3ZncKlAiS5HchmbkpgaIqvL0XnI\nwjZQbDaMkykAvYYRfrQoNaKc5aySPT1QHVC6o2enksgyJ4S/jKBs5HtJBSGI\nKl54yxlOBMSqTauKd45to15a8oLM6AWvkSoISmmbftgtYfyXqjbVinqUwAZb\n+jGzRMSSZVPTmUUumRECtHoCtW8dqySHSS0Uy+NmOoT0p3r3A7NY9etBkztO\n3sk1VsbZY2g/ahbuuaC3XI/Nl43fuXqfGmWEy1DQUD96Xiw5wgAco//v2GxL\nYdUu4C5a+yD58/k8IWoXKfPuEnQ/YOTYw4KjlTbm7Ch74z24LKNbDJ8LPVHh\noQ7brqF2AnggFeiP3vX86BHRj/e5UO2a+YnWBZuHQ41Si5u33VrE9aLDayzO\nKGxiJmmHTtIyV7zJw/LqEJviQy041L3vPS0sWcu+9vOArCeCmrF6NcA8vjv8\nvK/6yGRQJzea0FIanAeLWsTUaF86fNQZPxqa51PuY7BDp9P1+eEpKOtcXM0W\nkMQz7dGiXqD5ksgePtblKaYUHjHE3or66KSqhtb7Z12hImJzKkmggvBnciKy\nY6Mc\r\n=CZsr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs34LEP+pESoa/Sg5zcCWqsmPRrHlujesrKnyAnUTRwwIhAM35StZK16OFdUOv+vgWcChjf9Ligp7f/wiRQKGkwpDt"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.1-next-1589886107-b1758c8e.0_1589886162358_0.8508715541281167"},"_hasShrinkwrap":false},"1.26.2-next-1589886254-26f56d36.0":{"name":"@xdn/prefetch","version":"1.26.2-next-1589886254-26f56d36.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.2-next-1589886254-26f56d36.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-G14D/YxrD7mJ5UNZk8Zy+nSa9tC1iTFqqE+yJHgyazXPcPhXxOS2hEwfjDzeSy4O/twzU1odai52qSOlcYTT2w==","shasum":"67fe60c70ae0cb2059dbf5f570a997babde65507","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.2-next-1589886254-26f56d36.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew71qCRA9TVsSAnZWagAAK9AP/2LpohsquBugFlDcT/73\naNfMtpO4iX0Ot2o04+be9CyPXbWnjUJfRu1MogIhUSICm32OIwoiFkMYnDc0\nlJPrTNVSt3jBf3jVL9GiX1pmsD0zr5YIY642aoRcK/JHkNzTAox1G2OpFh4C\nfaY8eDb9CD9L9379tgofzDOYLR5ef6utTtP0GAvhCD43iyMvD/viPwhvLMk4\nPolxqKG9pwRx3ID38m37IvIvZSPqBUk+KXy0sUTg4WE4Eoy118NlXue+Zh+F\nDdA6mK67BAcbpuQ54i1X9a0kfFvvV+h309141u5Gh5q1q9n/hUNZ3hrKmcuP\nZ6YoDonTwheIGexF5hiMyzSF0Tde8VLI0uld6FYR57HjeK63BLhjngCeJJxr\nepRYVOVMM5n8syALVEjHAQlABDJn4HIMQDQmqLCZgFWrZp5vdA2RNTokcNRB\nUr6i/wWnsB5JzUfjA1HW+DkMGO7wyEUu9O88+pTTa0KL9lrTPB7oGeW8ZmvK\noqTCzub1DmcrV5TRJU9oVhcup0VxJvs7OVkPEvfidtcoPG8oNESK2z8wGzow\nDcoeWIQM4+ZNQqwi1bPTT+fYuPhT1V7OGhyAa75Z0oh/TcigE+167ZS7JztU\nIqC3qAX3IZR6dVFygIkNq6LxO5jO+tadj/Nlxh2H1k0gJ5sgaNHnkTKTLs5W\nUy24\r\n=4pFM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGu67hTf6RXjix5XBzkIKgmpeKg1PvSx6LPO/vi4tToTAiEAsSZ22oo+ZVt7URjE0+y7ikfINU5utY1TugGZJqu+8dA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.2-next-1589886254-26f56d36.0_1589886313749_0.704078145543888"},"_hasShrinkwrap":false},"1.26.2-next-1589888388-7d1a70f9.0":{"name":"@xdn/prefetch","version":"1.26.2-next-1589888388-7d1a70f9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.2-next-1589888388-7d1a70f9.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9FshPQdk5b3vwZWvWBKDp8usosNv8iSAn17IQqgZ4KD98tWOLr+6jBvwuK6k7K0BwKKMbFUxR5BIqh2nKSKcrA==","shasum":"268611eec3a63e70eb65129574987c3bb3d14401","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.2-next-1589888388-7d1a70f9.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew8XACRA9TVsSAnZWagAAgjYQAIv3wyPlkGHN6HFIFc+6\nGyWVctySr1r6SJ3mYJ3Bj364UeOz2jOo6aPm7PjEU7Oud8JDY6SljKjchNEu\neDb4C8IpDw0SEl6D2gcmctPNYwU34TuqOgKp8gQ5Xl9E1aqEudC7DAuNmuqv\ndQ1WBCxz3VW9EpDs4U/1gjjCsKFUztXjx22ZC+Q+fkMRwzsUNmE0MXXDjZ4g\nuRAOGKVSxPz4WYrPwp3loEJCNOgc42Ol6VBXv0mLvjPy63msrixKgTNlETrv\njtMumjKA+w1ffgoioh0oqQJNLtKgewcAXN+wAZb1a4bVEore2v03r/S7hFzv\n91tVxOqW1n3fKCwh3rdjBS2pjyLqlNypAWLXamZhh9AaxMc60OHyG4B9pA+w\nqOhg4a/49jQ8UbyStIIqjyriLKBzJgQWT2/MiZvfyYY2AD9WFL1SxCkpBI/y\nFmhs2qR2cBHJz82mWwPnkgGa5cmMxonee8Mp0iDtzdtyvb56MzDBq+7ZXvGK\n5sN2d+tzxFh8xs9OoI0kAamMo7zTD2hRhCj0WWXbSZZqS17PWrVDa24JJjaP\nrXLArAMx18rbgBAGTkKj5KFpV6EVkMeQ+SDw74O2p9T7VtRXXjGyG59a7b6z\nbjAGhMBkxZXU9WvavEZufyAH9GU66eseBVM/52PEzabxb2TyK2xtoJ6UjtQ6\nLklc\r\n=4EXt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtRa/OzMsO6ql9AlMaLoK9ST3ZK1BBER6/S/0P/9VXRAiBE4kze05nLO2Bxj38quAKJfDSnS78ROLbH+aC36hanSg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.2-next-1589888388-7d1a70f9.0_1589888447748_0.31331200148912064"},"_hasShrinkwrap":false},"1.26.1":{"name":"@xdn/prefetch","version":"1.26.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.26.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-0lE1cDinMPm43F6KiNOwMPr6AADpbf1TX30bpXhX1OWrZwoyrGA7geYuKn+NhZS3ZsMX0fzMt5JRql65yP3X5w==","shasum":"0f8e302f5a0b1a6cfe323d1525a242090b2d907e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.1.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew8Y/CRA9TVsSAnZWagAAraYP/RTb9/sVr5m6D8fQYrXJ\nTj/lDths/q63oipOwpV/kCp8bmdBW8wQaNWXPxAFTMbCU5kI5FMtIZEheTow\n+d3L+NTAPk1CZPZAGWRrfkc+IY/mbqhmDXsiVZs9LQe8B2vLKUF+nTyl1r7b\nywz10v064NrDNBEOTpXgE1AEux27sepuZwJEb+DbJJH9Dd2Fe2YWWgCRbanl\nFu0yPl+E4hzo0+FmlC/HGcRouyn7C4auaM08EKLU/T+qFbrFQmmObsglMJJe\np3VMj0mWl7tctblN5Vr3WYDY+FIvbK1d8j7o/xxQAgoFEu+mcTAg6S3fb0eL\nkMgM8EfdB/Y1ewapHq4MVTKwgSg0HrEh9NMY+6ugZL74n6OQwEs3zO8LGHxD\nKfxJFOBTP+OosMBYS1KyAFrxM98rAdG2Yp3OOkXiEesGozRwNt7kEY8nX8G5\nQYV6SZTvVH9mTG2RUZ1lT7+/GFQlay1F3dFsOUjTVydpGef+OXwnzT0JfnD5\nbh1C4/YDd+kv8OQzzb+n1jDlZvUR3ApsGZ5YUu9/Ya7oGAAqbOZR1tiZHs9m\n+2kXFDrx+Q8ffNdUVoIgk4csPr/1H6nNJw2jxiq5/nHFJQnkX2aQX+t8VQU9\nBI9n0iyzmIcZvDt+WT4ofC/BlpFUEC+pMaQL1VNnX4+nuYEoeJhnYI0i6FRg\ni/dw\r\n=JLJ0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVnKFYeqTjpWgd+4rX69zIcfXHbYxlM/fkiCMcWKmzbwIhALBdokVNzGxi7qPldvnSv9gyHJWyALUUXX97CXfeiXnx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.1_1589888574835_0.3691112093507094"},"_hasShrinkwrap":false},"1.26.3-next-1589890489-c84cac0a.0":{"name":"@xdn/prefetch","version":"1.26.3-next-1589890489-c84cac0a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.3-next-1589890489-c84cac0a.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-CIyCQPhk4uX3Ct7OG+oUWS6XBi7g1gMgmZoE/vqu/NGOyz2gl5Ge/v7qBVSy29PMFyT2f8GVzAewzQKun1aJtg==","shasum":"98f1e1cbb0d266aeedd78bc9cfb5df1d50970979","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.3-next-1589890489-c84cac0a.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew83zCRA9TVsSAnZWagAAIzcP/iE5dtMIcoS7S1Lx8tiH\n3AX3i4UJV9fGwNBCArP9vgbah5OH95CeVwWnwHn5ZwfNE1xgsxX0i3bmtfJU\nnRwBt9stBbafueSjEEG++pZ52BNs7/6eLnoTgWcD1hRXoI2FrP2NnfVSxMwM\nxN/BT2QsEKYxDXdInOjfTb0aeNU/VN0kY/EGqq4TErtmtJCym4SWXOhp+oh9\nlAaLWhblyKqIy2tJGt7r/u+6jG0bb41uAIya1GTiqjMTut0k47AimZPP59Gj\n6Lc5L3mQlqRcNlTjC05dLpdH0XeWNdR2m4NYIoMjMULUa1+pfqTgVgLvFMOs\nFaO7uYQTjn/VUgmIlnHizi5Y3NTuEu39atZRYjKdfSlW8LasiCLumuPr6uUL\nUvgQ8eSJV+LD83A0Td7tRYlwTQ6qH0e5ss/3OPXAQoE8HSUdgK89Nsyg8Yck\nrCfP6/raL5DAV5IzNaGCzmRw7PWsHhRj3nbTvqMQmCCoaO/lod+hrdKNx2LF\nvaNLIq8FP0HDcGEqstvOQdtcQx4Q0EIFfeUi9B5QqmxkG5cthC0tHnf6/PzJ\nLXfSXXOWH8JnUfMTdA/UkAXC2r+jWcHZDNSp6nqUHadu98K1XyBBhbNIlVwj\nkjiVdVeJsxYnPwt2eHBLb52S+VsxaH2p4RFBlb/w0imfjj7lwkUhrr5pIzwz\nh6YU\r\n=k+RS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDoc/R7+WnlbxLempqWUKlTjGMMzpFA7ylxHTqdeMHRyAiBD3vtVcU8MNjDysL81v6QKcZAL2AyOaEGcob5i4uJ+pQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.3-next-1589890489-c84cac0a.0_1589890547190_0.4161803487126863"},"_hasShrinkwrap":false},"1.26.2":{"name":"@xdn/prefetch","version":"1.26.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.26.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ZHXncHJYVCMU2vk1/Wsj4YvDXP2+rD2Sz6VTEnWMGAh4TMZiSnZGGhq/xcv8CbjQtuXY1ldEE21vJCScYMGNag==","shasum":"74b67cbf68677b32194c005dfe4c5fba840ce483","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.2.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew85gCRA9TVsSAnZWagAAvLAP/0nnlrIzMBeXQT8HxP45\nXsN+HEU4A3XFyjL2jOlI4sNnDQqerRS43XWyE8hv9L3RwWiQSZ5Sz0Fa5f1q\ndZifH6WFol4kMTA416zAMrC9swPitUDbxBppymY+uH0ztkbct1gXR/1Vkhn6\nqmzei2Bqjd0yx2Fwo0kA+Ka09koQV0Ycc6wEDXHu0sDrJx0MnX77Xe0Px/EV\nyzFhiubJumg8+E0vox1n2zs6foQX1M98Q0e0wnsYLA7/D1rKxumIlpODKzRR\nMLSQKBHYn0Lv4eZEJFBA/u/2eQv2KN95facJvCf0fSW77FG3VdZAZb6dZfFO\nfmItp5rTHhuBezcvWICeDuxx4QKB4Hv/j5OZTOgWiSsP/y16aBMdPf+a9MNX\ndc3BL/Nuu9oZXE2gePRmM6ZfGAd0cTp8juPOdOP9YaSF0MQmfP9MSp/bOtZC\n5a0GlMdnuuviTW5t5fKuXu5DxfetFEPlKEXBza9ydiU/fQP5ikbGPgCXCSwe\ne3XBaMigA7gTPTTPL2mAsXwOjd7+657eLgOECMSnlCKafAGnMRHPKkbrwJPN\n7UWOg3+kbiZqaUI2QZOchgKNcYJhn9PiSZCnBfgVDtVvip4zz+rpGf9Jl9qK\nH/msrcp+0gAm8t28J3fe0QUHTtDktRExy47CzQQ6I4Uo7bNzhhy7Lb1hGEvD\nuZav\r\n=LaG8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCybTnGt3IEBmfe2HKTOeRSIA4J6nvmmt5l4t1hF2pUFgIhAPu6R8/v5DpTDB2L5BdAieJIP0TKDhlsw2zNZKlmDnL8"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.2_1589890656476_0.1334721057415853"},"_hasShrinkwrap":false},"1.26.3-next-1589890819-a83e32fe.0":{"name":"@xdn/prefetch","version":"1.26.3-next-1589890819-a83e32fe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.3-next-1589890819-a83e32fe.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-JqFadamV2ksq2a4b1377t51RRujsLCPUYNUD8lOvXzkABIlrONtlcBhmxLHV4+FvWKncNlJOPMY8EM/x8Bkevg==","shasum":"3e04c33b2591fc524fa93ddaa4f76b29633d03b9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.3-next-1589890819-a83e32fe.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew89ACRA9TVsSAnZWagAAX8IQAJybAIvH66PgCONcEyNY\nDBOgZZyma1I3dCIFfTS0TWlVEv3TG6BDOWZty+gDKODi6aaGigdE+medNW2H\nRxwegmSmHUgqKDiaY85QIu+8zbT2BrURJuYRkqwElStgV1dEBmTqYz5EBij+\ny1Lcse1ukZ3XMMRtQyOoHOTmVdnw6++XEAyFlI0PqU6ausLyHAjXXGFWrTaA\n+wkZ9cWqL4RXHdEFAodXCdx0iUOq6uqtazau8hM14WDI6KpXqO/aMQqSByBu\n2EixjGgRvUEeGhY/nmBnhm6mlxrsC7tZ7u7tW/b5j9p4dZYpKNLAZsacRW5D\n0dcAQf+EZnZPYJ9+a4weHKZPOcFOTn6uUWuTMPuLVSOPgof4uCxdPXb+IKTZ\nDkurU5FDs/EP2lWDKfFFS4bEH+VOmZ8vqm3JJ7C7xn1FjuST9qiGmzMD3dni\nOoCEettDFl7C55vhWpot8ST2XjXatz61fikJe9JqdKekj24q4klpcFYsflxa\nkP8/CkhgrNsOrhSvMrZtMGt489IIjnQGyK226uKx9hyz3yJz5jijaLsl21+g\nThM28B+XsaxHaepw2Kjq8WYCoNMGb8mdGeVxbNpk8MtrfvgYJa9DsoxZ0rBo\n2ZOCyCAiEBaCvf3uieQDLUcMOBnKw+DQv1A1RbKtowYDn7sjoaPVbfygm9SU\nA8eZ\r\n=MTf8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfp5DW+t54NRWAOLyJjxKl3aE5nafsjgGB6/eva+qIagIgA8wXVcseIr1kCJOHLqu3fMz2ti281OFpkuqB1AqTK8g="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.3-next-1589890819-a83e32fe.0_1589890880357_0.8384833166783541"},"_hasShrinkwrap":false},"1.26.3-next-1589891344-da6ef43b.0":{"name":"@xdn/prefetch","version":"1.26.3-next-1589891344-da6ef43b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.3-next-1589891344-da6ef43b.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DvTxFJdh0o7SIzITSjujCaAKwfxRYciwz37IXHylnooIHnQdcarilTAULAcpseu0JO2rqtb3BqQgUf4U+Sx+cA==","shasum":"b0cd4d09517c4a7125d29f8cb4182f137669cac8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.3-next-1589891344-da6ef43b.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew9FRCRA9TVsSAnZWagAAcN4P/iy3CxtlociXZr+F04Zi\n8hUGXYTg8xYVGFd7GBHfITD8UV+0v1jFUsGuZw9qITEH9jvtW3k2ePM8iS81\n4ykWkSGa2yYAW6DaPxnSDcWcCoNzg2i5zdCSiVvMpEJTy6JSJGkCMXeaOSDn\nL/i7koRYdHf2SvbQ7Ms8/4bErY+C4sFCCw8JEr0P05Yg9h10mGN8sURieGHo\noViheS/XKa4U8AAemRi2Qr96Fp9HT+eE5AKh8GDxcDygEI3HHs7lfh6KL8iS\nZI81of/jnbhrzhOKJ71ksu5mZ6PZaX4Ii0aMA/Ilrnn/pBdKetCR2plH4jev\nkBYyyN/iMpgBd6pAmLicWwVjLQtDN5OQWJX73HhgRYL8zUoaDrLeP41byrNl\nWnQP+zNZnarFU6jw4ixf/MqMMCdsXnyjdTmBzU+Ct1mjpUeEvputlTR0P2R+\ncImGYYeQmm4Qhy/EpPjBpOmJrUwmX9i57arPZmiGXc+p8+pzlJmesQjIS8kO\nTLvxp1ZkpQix3EKenIRM+ObePjdX8+tYuc7JrOAYTxw7fDFufggfL0sSmw+1\nssCKqARNRPRbQ1oasKFlcbVH4J2OotUtDPXVLKWgd0smMzAPY2sLcG7YVv0e\n3fyuoaip8pXkg3MAMosSCYiugA13PS9qbINgXgy/gtolSaFKeVkWBFQ7hvv5\nedoP\r\n=RKd+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDhhaBdhLaPWjCJouVE64I1mWwpcDMDe+g/S//KmpJ+0AiBNzlzhXWuz3sl0H5ObJRrGoDUcYYo/6YhGVgWax7qvmw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.3-next-1589891344-da6ef43b.0_1589891408752_0.18428185358335525"},"_hasShrinkwrap":false},"1.26.3-next-1589921783-6c6160f9.0":{"name":"@xdn/prefetch","version":"1.26.3-next-1589921783-6c6160f9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.3-next-1589921783-6c6160f9.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-IKQkNVcC5XwHfLv5lT8rh/y++ZTOH0g8vzxNyR/iwNdPkLsd0peuQrxtYNp5g8CcxfM7dhISLCQi/3cHC/YpEw==","shasum":"dbd09aa947569185a4bce1950ae9c2e3ed2395a1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.3-next-1589921783-6c6160f9.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexEg0CRA9TVsSAnZWagAA0bMP+waKz53VoQaZiuQmbQnx\nYIkuzDsH3tEFH+ZM6Nisk9j8Ces8kz9rhKA/OEJ+DLhWVyg44GY+VpxMhLsV\nFYZtCx8giRgBlfTKxH9pcve7wBffDZU8HZcYeJ2HC3PEhQQJfwvBI+MyS/ck\nU9ntuMRjDLregB10BzaBurD3k7n4tIbH+2r/3hUBFqpYKTkejl0OwI5qyaH0\nugVjS79E06qMWKSEZymblpz8C/BDkOXGX1TxTW67FmMqcqFG48qLcfEc36C6\nNazxL3ZargkJ0vNPiZ/OQGxvOlPPGPQ5DIrpEXPhm+ZjzmzIr9qCKgUF/3ux\nOyym+29Duz9MUZNkDvLV8o0OqrLb53xtJeHnRFVQjrUpU7fG7+JfxL8yVTkj\nF3CKeIC+bhYoXNyUDTFa3fIS2psbOCbrSm1gBqAz6Z9n2R/IJBlxHcAgxU1a\nnO8rpQgqIYrU3NMiVfkTZsDZeI4hGfTV8y34+Caw5Igj90Y04X1uKaMk8mIp\no0fzC3QqlxB76n92ZR9lHnM0Ihi+jzv/mAf1Uwyh5m8i8wFP+50X9dp0gQnD\n1hR7MKJBRTczQl2g8N/B6fXECsMa6Y5lnZFFQJdhzk0cgBPARhDEL/djhkmc\nvNCLte3Mc5JREsyFKrjV2IPobChDArEr5c79VYHd4zDw26tTLe0ggdRLoc4o\nMKu6\r\n=vGwf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFy/VsUxz7fAgTL+tw1NiZAn+y35uxWODFDJr1Emq8MlAiEAybMLk52H2ilhfWkKl9nw+Ol4lDHyaxSCJOB4R2+TBOQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.3-next-1589921783-6c6160f9.0_1589921844538_0.49088024907936245"},"_hasShrinkwrap":false},"1.26.3-next-1589966072-5a827f9f.0":{"name":"@xdn/prefetch","version":"1.26.3-next-1589966072-5a827f9f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.3-next-1589966072-5a827f9f.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-8kwBeR8ZBT12zUpurjMtThVf+59bN6Jv3jUOYL1sEN9PjCs3KM6WNjo/5NTEI4cqwudsezKi8TbPBNUHvi/05Q==","shasum":"63819d0083646a37edc60ca916b878fae03f6f05","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.3-next-1589966072-5a827f9f.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexPUyCRA9TVsSAnZWagAA5BUP/3RwtXT+A/lZcGJXF8EU\n5Xvq5fAhV8E8GGwMGqdlXRKcIPdTdSROZoMVqP2hgDR4iGFsI2pje6+51bOA\nCtbajLv6bz3EZSttxyurenPphyWWFuS7HY9J6v44VRnbVefTk6/s8ZwapOnt\n6pvB9mON4TnPC7QT7MOlBvaRz0YItobP3h7YPYjKGXnFl/StD7c0pKj0Nyzs\nYgO6rv3MHUv6Vzf43VVmvNr9d6Ib0a5j2/tuIgzEBvLjJq7o2eGuBmmuCVXj\nyP8M11+TOJ8GjYfXuqlnc13dTkRgOKKn0v/Tmro6ZGpZM7p0rUIpjfbHvVN7\nXQySQw/yB3KENTvrVZI/NcITIb8eJkM4mx7W1fyCVI06D+JVzxkbP4CSYWhv\nR1BQiYI7QMjfZoiCZO/+euv3Ge+b/R6xHXSTLvYTx/OL06H5L5GXjZUYKm0B\nEoQit07XrEraFB9MpNsYRxxQ3Wj10m2eRHjPAmRLC/ivdMjWbLnEqXADvpp8\nxljSRAOsNtESlI1ArC1u56GlpfoE4k09eMiQGsDs4DKFEb66wgriWfcjd0Ax\nEFHbCz2MgWBxBOzTVLTJ+6yxHe/08oCC4b+mwd7bYWYxSHoQgQ8uN4Yil0Pa\nMMP15BzOxUQoUmBCVBeTsiY4eFVTHykha84VjJxe2W2QIrSZM9YTYUV9wgD7\n05tJ\r\n=PMgJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEu6brRp5EiA3FrG1MsOiYoof2sSK7VQbJbUMCunwLDBAiEAnMbGCP7MEJeO19ylhpdj80VgbdTCs/mhNhea2sPW0bc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.3-next-1589966072-5a827f9f.0_1589966130246_0.42602494692703385"},"_hasShrinkwrap":false},"1.26.4-next-1589966477-7bfd5b31.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1589966477-7bfd5b31.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1589966477-7bfd5b31.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Cl+FkG5xrF1jym3LsQla1xUc3UgyNgyqaRyHOVqgMhmi23MfxO/X+KWURnVqZIZ+U2OH+Tkov1FIYaoVXQb3fw==","shasum":"53d0ac0a6bf8aecfcbf3d5f156b05278e4141b04","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1589966477-7bfd5b31.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexPbGCRA9TVsSAnZWagAAxgQP/jCy+LaV6XeCoz/+MNb0\nyKKrMeYDdHdZcCYj75ZQBClG8ZZybVaYJaCci+AwKd3/mWl9LuMLUuBAnaIm\nMtpxnKQEhpUW6FfWE4NQwtByoDo/ToXD5lBVj6uDfNtBZMwizMbIFITqMogL\nzOmlrI2bY7+N/bLJ/o0hbeGzGk6Z/PkBXwwmEeJAI6Hc/Mx/wBTx/0h/0g9h\nxq14M9boxkdGFx1Bd/zOejZl+TTKWqsPcXq9eHJtuhSpigmQMSR+mEJK94/E\nFiVYlKpaAV8EQZ53p3kqdIf2Dm3QclkSPoB6tJ2MoyQlvfsS1ENOlH2tH8JP\neOoEcaJ2SVoBBubYwyzcVvyK0PHUjQPgMA6KKTZ+l8/vb0m/S8BV3CjZs70Q\nh2aLX/h+H37yRy4vxY6c2SYqwI3ct+riSmOB90w5nadE3b1j5bezEb91TT48\n/ul0szwHvFph8vJF/u0THbUKlPFv5fsUEDFGPuzFpWhu6tqsjl9AEUEfN0fS\nUS/FG1A+osJB+XKIwab5Ly3+6aubTT6e4PRcPcrdp2qr/NKM4ch+TuTpZJ1a\n8MF17+j3z286MJtzrbgVo1U/ygotGcBSXnmw7tK0FOFTf3vpw4L2KlJHFz5T\nPtv0rmkJzD9b+IYOHxq7brCox5FvEbE2on0bmgBpgX7GAGmZSWL2bKq47RMj\nQ5j5\r\n=muyz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCftB9BLWOPhskB/iZBQaJdos0L0oRcpQFs57eTDWBLEwIgTJsETPDvXpbcnprRiUPb8LqN02i+n1vfWRtSlpFjU2c="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1589966477-7bfd5b31.0_1589966533804_0.6506491268113881"},"_hasShrinkwrap":false},"1.26.3":{"name":"@xdn/prefetch","version":"1.26.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.26.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-6U5367/RzJCOiTbWd3gLIyS+XCiVgGbvPz5LwhcJMG5VzRY834DkgnW0If7m6oIUkEoV9crgU2N5QB2M0EWmPg==","shasum":"7b84ff9a5281c040d7539fa69688d914d50037b5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.3.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexQpbCRA9TVsSAnZWagAAmLsP/RKPV9Ss8hnHpROeSLeC\nAxSgBzEyD5EaiGdmdsxqTUTUJIq100kAHoSt9a0t7Z2gJw+KWOfVVunLAC/S\nm0SEeGOspGFMrLa/mUgVlgh+faAyH+yyREdFYBRkOXtGgn8/qK55b+IVfWlf\nOdOFj87i8ryd8lC6vhCFc3cViEzbdQe3GmtvL8aeHrIbL3QODvgQIsHaLHqE\nzYfdaQtAnW268WQIlOevZX5BM9+NygmBlhUI+IFzM/5NmhM8H0hszmm3NcSl\nclzZ5+Vvd24JdM9jClRc8nSoqj2DGtQCiXXi3QZWxCVzSrfEVj+ErS9841wh\nHAATfQBkqjpGMB/HB/hPCvTfsCqPywiS2usnYiJH7K7hC/9yqdJrLkudSHVG\nvQElWSVxlBwMbipg3Hxkg5/sn9/DDsd8CilgnJ8CjYVLiAbYuYCiOgXYpxYR\n659x/O6tWeZG3qL8iAnI7arNz0V5ckJmalTJde3/Vc2W6P3YPmKnCfWCHlkf\nUa59fGD3Es6bIVASoeM++43Dg/OxCbl7edGWPFDjqP4cS+ZO7BzjiINUy0U1\n8ddyUr0IYelJhS1YPcCMRgb00LMewjaRQLkd/rBP0US5H3rt6MLqawE1xWn6\n/UjVDKy/4+PukakqRWq2S642zAhXusKOyXx/lAI8CZbkplb9j8miBygxiL0p\nDQty\r\n=MMRM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGcvwoWjItk5DGUgqZnIyD8fWLvsX+V5iFLKKlU0txMAIgfXvtD7blHsn2Uy3G6i+Br3ar8UPT/SzYK1qb3lbqN8Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.3_1589971546520_0.5924108359757077"},"_hasShrinkwrap":false},"1.26.4-next-1589978275-ff82b99b.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1589978275-ff82b99b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1589978275-ff82b99b.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-LMoqrCYRBJ1nRxXhHhRkNQsMumujx1KEYQOGLXAA4VbZkv1hJJuCBJYCSX0dAJvS5R4/Bfnb9QYEY8QPSyfZjA==","shasum":"60d56cb4c962ee30131661cdbda96756e8ccbb4d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1589978275-ff82b99b.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexSTcCRA9TVsSAnZWagAAQfYP/jCmuaIVuOOCbqUGzVHg\n6mGsl+qrjuwfDUUfLrkMrhAyXtzZ2NrAE2j7Yv/nRaAMFcoppU/9anSQJxyi\nAvUCMvBz2F7jdmAn7AcFqPL4q7HIr2WT2Y/gZRziiB8SW11ZaBgL7Kxr9l2e\nXZHk66xqGLCxtvHRsOffwVr1jaaBEkVf4cL8YQioItOGD1zbYvgQkxgsBCUe\n+m4tG0uvXqFfyA6/ifHtpQECjvF+PxM45j8ocoHxxaoLfEeZjcP2mhvSUw7+\nOT7sEYba/FXu5GDVGDgxLTZ9rPZ9PZynzf2Qjb2siDKX/6YpX0cQRU1FHAHc\nTxjA+9PwK0X+zz8DcmPqHFe1159a9EsMnYKk7gS53gG5AYlQso664zKMMPtF\n+ldDufr9cM9mHaprgOCsKT3NziPCrB2xIgs+GDl5BObE0DcsZ00LvBTjMnpk\nswA1TQlFk/E/SprAPc9TKQeywrpd9+b2PAr1yp9U4/NoIfMu0cjFD1JCp1z8\nxYL/UeLgz8fs6er9HMWgNIOMsh3t0ivG6VGsvU9/oD71ageXg9kvrWUIXNmc\nz9pVWzduTx9GVmihNGhPrnog4h4HaAbgVR601fPUiKf72/2auOGlnXXUX9mH\nObRv4/PNN4Fmr+WBRp0b3LNKwkU2xOTWb5iNusC3a95C19lUAamLhTZE0PoA\nLKXd\r\n=bpHf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAgs43PH6ixzRWmXOTRTWUOumlIjGKyFHXeYSImAwf81AiEAonaFER7jzECOL13sHJQR2fAntOh9rEnd6ZLdJHk6OBk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1589978275-ff82b99b.0_1589978332214_0.3226020452851768"},"_hasShrinkwrap":false},"1.26.4-next-1589979034-aca67ae9.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1589979034-aca67ae9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1589979034-aca67ae9.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-4OjPXgvoaiBGQxuBu0zDlTcCgrnVh8WWA77VAF/fY3/7fmLe8qg4na5OSejmnFih6o742/r3cQ7jGkba+crFqg==","shasum":"16c0860ded600e2964082ce8d94e30188c72bd0d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1589979034-aca67ae9.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexSfWCRA9TVsSAnZWagAA/b0P/3WhJBG5QXqB675Aw9zm\nTyXl2PdcO9arP5CUEkPZU7g4g+BC41NUAo+/C+Y2JX7S3IB78y7xyXcNkJJb\nrAZaITa34sT6oQB3imraXRXgb6aSE4T2x3OiZcr7yx/Jvr8jDYXpp96/YCJl\n5keR88wg2oS4yLzhbMq9VLSCMkFKyOsdrNF4IAPP8b8Q4L8OcpC2keh2LfwE\nxCCKSW6RrEN3EvUlDuKnqLVzDCQj78aVfGhA822m7G2IizJ00h1ErXbTPFJg\np/NjSeUhKi7YiaygYHpYIoltaBLyIVX8LmutFNoEbeaqzBpWrsp7pmhtYNml\n0wECZiyBMBmS3LOf4Rv5e3pnAcuhrWe5aNfzLdsnHhEjWBffT/D9R5V3IYjj\n4LWhNrqHunoCzfSQNTu5KTSyn2oU+GbxcabqbTeTlEGA4j4h/ysnncconFIh\nVJb1ospw+vxIFAHc0fSdJfBkli1k62JVP+clxaqjpxZHf4I0aHzZE5kN2jVI\nsPHYnDq06N57cx5/7fvZzSnRsrIRA+5+ZUP/CVixtPty05yWqW66CFagYdFV\njdWpzoMPyoNTcGwll+KcFRTPWwUlV07w1KRSYmPvbhvLpzs5WVIrWY7fSQLY\noO7xFsdfPlvzXjROTeSa5pmC2y5WMfQy+NwhIrSTmxSisbqDiYc7T76a1QNk\nrFSS\r\n=YAoq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJURSeWfVyHc9TnJlPbO+z+3HZ3BESh/7dzAG+ksP+ZAIgI7hb9azfasfmZId2d8LS+WL/i4iGP7zqKtrBG7kW0Vo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1589979034-aca67ae9.0_1589979094479_0.10312891156743165"},"_hasShrinkwrap":false},"1.26.4-next-1589985804-757ff339.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1589985804-757ff339.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1589985804-757ff339.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-/upTwUyOWl274yZLv4jpcvR67x42kZrDpIzd9W2+KJNTjbfgkA4SWs2cYhN0pQ6yMG7xhJR1WncXPBf6g8X4Qw==","shasum":"9a01e711656abd06d85829fee93a782888949341","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1589985804-757ff339.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexUJICRA9TVsSAnZWagAAfF8P/jJxs3g8iIf8kNFtiA8y\n6lwvsDo/3ZZZ/84pxIJ+0Clc0BF/cFTqWVS6bGlmZP1krhJ4Cmz9z7HwDlrF\nMc/FLu5YVmZpIDpG2umzqjyYFGv8K+piWwR805RLZKpAepXJLtpSb2ik4cGG\nZnDanBY49fBT2nVeJKHhrqNxn2f/q1dGmL4hEnNLNuHqIznQW9t6++cyejqp\nOzI8N8jGWgHbIZ0Geu0qvXA/DumDSoYdgyJJMQkBfiq/pw/KOvBm+a6IhW5i\nneEsVvrYRcltzWZYUqdePR2vqO9iZO4+RI3ToxyJ/LSaxvR3MoHtIHQ3ZSaw\naIEOb51OnHpPB82fNQEvkJkei6Vvy2mdQQMU78ojnJuqv5cR7g+eHtekoVyt\n3h/vOpLB4WuJOkXwCYoQsckJZfbMx9nMrLeCYVjAm6l/ue1gmcvL12Wfy4XA\nNHRu1F/0fGLDQ2yG+LSZwo9QmAy6lel68Poceds5FMNVmIngitMCY5m0+h91\nWFQv0ZxAi75J1d6VjRvWgq9dE0FD4XNNgcxX49NipBL82+olHsNKsRZmEntK\n7wYUirXpwBdZ0tC9SXp5qDzjwWDD6nr5NqEk+Jmqdh2+QPHiIN+gYBBdgG3l\nbo2QxijfykLHi3cOFREJW5Ile/r6FfYcUjKkxaPE0NwUSwSW9U3cuR+j8p6+\nwS5Z\r\n=hNwe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEEgqYWTmza38xv2+Z4u+un9YcXOst79KPkus1lIV2rTAiBSRb8Uq410t/fSMRdlBtvLFk4S6G7RqWuTtApbsaxyeQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1589985804-757ff339.0_1589985863798_0.3488898094222628"},"_hasShrinkwrap":false},"1.26.4-next-1589988492-4b2f4f3b.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1589988492-4b2f4f3b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1589988492-4b2f4f3b.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-AZyEkArP9Cls3NZKv3bxeMMQB2B60u3v+pzkgq1xd2dpVKWkFa8FIURnyliNqS3O/zTb1VqGMR3+laLiBPYklQ==","shasum":"99ac493648af0be99f1eb4ddc1480fd122760ee7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1589988492-4b2f4f3b.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexUzFCRA9TVsSAnZWagAANa4P/RVn95FLKsO+U/ybo70j\nEROA8dtxlvM9cSToGsH0HETBQKFtDMSAQj4LawUC1eicGk2otxCSI5P3eDPL\nfagGVw3h4PLn6sneT9DBbjJS+ZOIKWviUCrSB87tqaHCDES1Zd6KsWAwiBvY\nmnSwzPUQ57JuY2GeZg7rVv8vTBgMgR89tfq+/aibA/+8+tHtx8AK7p0gAwvh\nkvuIoB/VXTEm57EhrE0hsVQmUSMJi2Q9fS+yNkORQRLfOuzOQNZE524+pOYI\nnM3NfTfLPpeflNciFp18gPdhrDUMZE4G0EnVYVxMrksZFmScsPyzz+B2Yxxz\nqnL63LMDXvVEhnZfoQ+czq4l4derA6RVhsjcQObnzURnDYItPLKdQ7hBYZjk\ngli+khdDjIwPOqpanjhrjftsaylYoh9LqQypdGjlyepbA29847pRbLlUx0V1\nw3pUbrXOgxBCHMdYmioSngAmnTMDd68NabSfXjoEwK5xhSjjDZpUVvRVz1xs\nge6VUkWufmPwAQGC+VjLtBnVz9OmZfbWTbvtnaZ53OxFOaCUkUrH8tLR6LZ5\nWY7KPBvd4FIjJ4tOUudZH1Zdzc7NYAEw8SWpaW83t2XtAZew82CbDbQr9tiF\n0e/RGkS7XGzwl6Af9ChX2O0hWQvof2wTFu1AhUOiAtgUGsDONJeCRynfbdDN\nNfdM\r\n=HhD7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgSCMrUBqdyLeAFlhXNZhVjfVTa9kxoQ68GpFrlNrsAgIgd3a6OeC983WKgHpmWdQYT2LWPPCIufs6e17r6mN7QJY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1589988492-4b2f4f3b.0_1589988548628_0.7386626207741589"},"_hasShrinkwrap":false},"1.26.4-next-1590002479-505efef0.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1590002479-505efef0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1590002479-505efef0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-arWf0nsCXi1goMx8pdjhwy6u3y01KYb9DVubI5wMGxFKPlhV49LEyjuIhYVIEtQvAXCqNJqVZEYUqvoUF8e2Tg==","shasum":"123cd14fd175ce89756bd137dbf5ec66aee1d584","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1590002479-505efef0.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexYNoCRA9TVsSAnZWagAAaLUQAJmRT7mDDgcs2Rt6aCHa\nKzpV8TiLD537NKdkm6DcCpnHvW05ctj4+07QvPSF9Ftml3LRMhkc+RIWWJu6\njZ1IutN7Y/cWsDoGe5IAb7ZsBJeTDfLQtM/3ZqMH45cXKn6iNP8D9z6i3IeV\nEvNauCxEWIGuQYc3BaNdAByMc2xaa3S0WWIWNigVZ4iVMiAbTesbznn/agQs\nfBhfs4ThCBCwfEtSZrAp9ZW30D6N9TLjAdt/qbl67SjndOJAHFCG+vRRq2cg\ne2llgOqkgnNCxvQlD0VKGUsCdpSVUTkhMAE5MahW3g8vV+VU5JUJkTfnT7Am\nQ7hoQ7RlEmS2dtnRqwPjkTgVBd+5kEHeL21tJbtcpqbBtYd+NmHp5TWLeNYz\n0anIOxgE+Q9ur9lMokjF8HiEYbsTRjyB2T/vJ8UziZGLhPlD0E7swgOLgCxn\ngf2HYCvz4MXjJVDm98pEdmBWUDM3X737lmBcE6CM7BjcfEbR4QtKGv+VLz0u\nW17pokw0CtYrQyQGsf+vBTulsDYcOhMChOd5RVn20xfb5rA+crrxau5tbCvq\nM51z+ZaGF7i+uLzd+v+xdX0toCagLYJPO+V7AIo02q+09xUiZnXnROZJaYib\nVW4raEVbI9z9rQO60MU/+XY/i2aY7Mx099tM1+BV3LPrCJUZVWLEkeFD1lhM\n6qzp\r\n=CAbA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD79KMpXpjqEVQnaj+vonTelYuEhQvefbIBNQQ+RTfE4QIhANxhUmRy8a3ak44t6T/nTZTsIVQGJNjbo90hD9vyFtym"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1590002479-505efef0.0_1590002535999_0.9408243554950502"},"_hasShrinkwrap":false},"1.26.4-next-1590005800-9e59a3df.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1590005800-9e59a3df.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1590005800-9e59a3df.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YeSkMQJe/k+amSFkswfWNBk3TkrTFBbW1bQsDxAQTHN9aT3f3vH6/S1L2HTuSPowGnQyjvr6gkiXoJAzHqB1FQ==","shasum":"671dcfafacdc6ac794d8f0ab48d90389a10ef061","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1590005800-9e59a3df.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexZBdCRA9TVsSAnZWagAAwfIQAJ7nZ4Bc/APkRVJhv8Tc\nZwG29SJu98iXux/uh3UUFQbf2/IKbzu30gulpKIGLQ25xV0K7qjJyEqPTMLI\nGdHGvqCIQwpZwjf3OmfYN+dAiyDS3dobHqK8Tg69U+hvqIGs7Sy60LYyPAxM\nr3ojv/DwJmGIaGx0QEt3fRWKo5CV7ZsHjLbSon/ajhE6KlcsjoYPfWrGUjVL\na24vV0aYEBxufQg5/7kcd7cK2OhCaBH2Gu87LEzm+PTU6i7jlIzZqN5wNnB0\nrokEjguHMjY/pcEAjS4LMKOVDYtQoLqSZWQHqVHeJcX9IWA1bv46MYjT8Nrz\nkUekm2htBZUHelXq9GV0HEdaz10SVR7kwjRmPKwLuedvCqhK7o+PQDJvSNGo\nrAexHR7ePsQAagyphIodTQ5SDWhjGf4K6tkaNfWFcFLEa+laXgixdeD1OLC7\no1aCAQJAu+6ebx8OTn7rz1z6sYqFvWiEkUnOsdCg5gW1pBOumk0mXMH9M4b3\nyP3lNKx3PJ3orUx4gzjxIMFggA/Ob597YSEJeRYc0k64I2auzV61owN7ot36\nNr4A0s7aYT5LoK4YJUk37KmxSU3xTpUdOWdHiPxzRb08CI3aKEOrF1v2ndRk\nEbhS0TUQSZNhi0GQ3WqUb6EnRIUKbL0rm+JZDh2MOaO1EUt0LyY8FZeqnu4w\njjnt\r\n=JW2Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICY6I7awJWRnvZYLAUiReyARmblD7DCoD+8iCWym/ndkAiAO/tu2C6WIvnvJYUE+ZsiqmKaZVzoHyrUXW01Iq6gIDg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1590005800-9e59a3df.0_1590005852917_0.7449060013963975"},"_hasShrinkwrap":false},"1.26.4-next-1590018961-f5311033.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1590018961-f5311033.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1590018961-f5311033.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-EQSxYtVeZOnq1oXvkeTGRnKM5X6OQoy20FfF4k5OhTmLNo5z02zZBjm0bcsz84TCnmy7QOKlOK2XVEKwJBgcqg==","shasum":"b30e4376b7f2af2d7f37f24dbb6e128c01f0f77b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1590018961-f5311033.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexcPMCRA9TVsSAnZWagAA+BoQAKTZXG6fcuzCFeDWLz4x\n8jFyiVLuFdk8dunZlkud4R9xjFUEVPlwJFeZp8HKeC1RtLxcMl5rxHoHKzrG\nzyWa2DxKYtODJcumT1ZBtb2lyItWy+4FwvOnrbCFBIsWT4J/Ff8tiDcXEcaB\ncIiKA16WjkgMG6Fyr0iCCczR1CjWLyja49fOwlzedQwlVRfsirsj47axZa6F\nSUDvY8fErR/go1sUJsfc8jPORfBHUirO7vJVXglkukkIg8rjVnPUut1XIpPL\ndRTGR0pdEi3kYqX/WZpRa2989v/RjWhsvSMwa0Sne/TyMOIAumHCTKql8WNz\ni1KuIgBpfi+2bAKw/Ky2QcgG0PEebtrXZ/UsJaHb3qHoge2eBQJWvHhVOSrn\n1Fj5EewIk2BwaWAFRL0eqoh6jR6hbdMzjvmWSZ5Hl/qFhCqLG4IUUs3VewUG\niETxyZvSgSNq/2rDcswJF3M2O3UsEQqSCZhIvtvBOkXo3sByboqbbtOZyNOf\nmTp8ubvgzQibm3RPNS4L9nnQ4DxeENB0On65jSvpNultJpPAi0IJ8rfVgaNn\nm24rmTX3XwBcnR8TJxWE8EqE0wVHMnltIvUxnsoWlWAypYxV8cJ95hq2k9zo\nS7zIWLqQShwoDNbxDq1M4HqstXRk/PpRd1rixdN3HXV7nS42P9yX0tbMYHz2\nbTae\r\n=8oGF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1H1m+DtjUcuUs5vVGhMp/+vu1KrFRiXM+i8++H1CdxwIgPQxyqghXjErPksLPPDzq3Xv4E14eRTII93mpdv8ELT4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1590018961-f5311033.0_1590019019834_0.2695181195957459"},"_hasShrinkwrap":false},"1.26.4-next-1590045563-e831796e.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1590045563-e831796e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1590045563-e831796e.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-m9G+9N6CXtWtNGXxLWKVpz0MXXmyhXkJeaV98MpWlbuk7g+UbhG9763XtfD9k4PlM7xGGoaRDUUl1w5bNqN2/Q==","shasum":"a1aa68e7681ad1c7ef39b71d7a66d1249b4a943e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1590045563-e831796e.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexiu1CRA9TVsSAnZWagAArw4P/1kALXfTRwE5m8NILPYi\npvJYq13E5G5kNYRLQsgUwgSRxBXaR7BO3u4Dp8k2asEV1+xS4w9m835oNM1B\nt+GiHCCeqD8jZBitvtlK4/kz949kD8lNCpzg7kGPCO82M+Nq3jWRBEPUn/gR\nDstTZkP8xGrz7h3i+DTYoVRdB5xK9Aq8EJBkGhQ5bvCa311mBsF6xvZJ5pTj\nBQ5diVTK5UCBpVaLyCF8XwWXOY+IJDu4Pct/+Ii3muSboA5HhFB8Ks0oJnkv\nkpjtcfahK7gVjXFkzEZszWC+Bxx33MnupDa8gi6vcuX6YpZBeN2fuluRgmsL\nVrWnaDfoye9NuZ+QNM83nAT32pocfbIWDuhAUZAZzl/KlIJTFUU1OdUK/rY4\ng+VsWJg0AWtu/KaXaSn327C4ONpcaAySH7zg+vvK1/Va8M4NgXHiHilavJ0B\nMF6sLryD3bkZjc9DvGbKdu2kVhA/F3bwKqMvvdTER3eNnRMstbvXUU6Loca5\nx9PKmEApDQVyXRxiKl+wcdo15p5BQs1gHnCApOfYYYzvr8DPVtpa7cccwjrq\nAuleztdi+KO/pSOI4KgqenYF9OCZ5yK1tLe4yzaCBfTZeaqV6PVWAMUMdQmM\nhr6AoUC4305n1ntxpLhMDHuT/pmxdVIniC8fYV5p3CwId4s/hnnaOWe3eDIt\nm+Zu\r\n=7nGt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZIitLtGzvtqVcA/9kxq4WonhAnEJ129LBrT74ho9lXAIhAKPIN+Ok57toEe2IuMyXEIGEFjUGATPqGQ6iOiIctga6"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1590045563-e831796e.0_1590045620973_0.9735887606316382"},"_hasShrinkwrap":false},"1.26.4-next-1590045758-3ddecc8d.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1590045758-3ddecc8d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1590045758-3ddecc8d.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-C/aPDk/P5PxL7XsT86bDWQRSLWgQ4azjgVPe3VIflPPbeVvenudAhsoy4wGMm4QIlrbPSmsz0x3nHz6o4WE7lw==","shasum":"060f6fe47a713a8148c03f6a0b6f8dba0bf19371","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1590045758-3ddecc8d.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexix2CRA9TVsSAnZWagAA8hMP/RQsfumCnNF8UmYEsYGk\nWc3PozdxrjW6I5vLWoTudcOWHj74e0l/WRso7q61KeLigbazx2ndFgIJAp4j\nI29ZbBJSVUSOmlaV1UBwe8lI5P9IBJKM8YQNetkOJsS5z6PEqCvDrlAMIJk3\nUUypZpT6ONkDR6q3gknI2mMVbZe9W+iJx2uQlo77qDaScqvPb/Bzq4QeqRNc\ng+SjPMZnTbVpnzY7uPqJ7ErynikTpoL0AD1vUQR+QMOuBd4YkEpTF47Z+b3P\nTIYSOsnC784OlPhADZSjPhC/jHZNdxV+OaEUAhUfT8uM6p3sY8D03nu81suB\ngcqvcTZldalsnDfRKnpuRzKsr7bsf9zN+/A8NWdC3ZwclFUXYLNAUTpdseRk\n6nWL+hVW8Rw4yBcwgo/kGLgSekDk9CqWpmMWWBuu7RaqF3Ud2xopykCD066H\nx4pSIX6Z2Z+xpcaRkiHNxfDLOdd6Wk9aRcR9YH+AjQRdqcy+jPOTrisqXbAJ\nw+Ot0Xy7svsU71wnGHC1+KIVay9YJdGMfTW6EzHNll/CrXIKfAZJPbLQFU8K\n+qCh6DGJ0sDgAvza1DCARpcHxD2AKcgeqx3ospTMXKKRLhl/PgDVlCbebk3x\n5gXNLKBG6cfaG6jP0HMGaOLklMldraUAqMpr5ChqanEd864Shtf87K8oYUwJ\nkqqO\r\n=lrIO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPH0dZyk35gRc4Rla8KjgMKgPybTpQ/+wz3P1Sw5sslAIgCTMR35lb0wbPq424cutsXLqQ7LwBd+NhrVJi0peIsa4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1590045758-3ddecc8d.0_1590045813915_0.7750848991086869"},"_hasShrinkwrap":false},"1.26.4-next-1590058605-2c1b89cd.0":{"name":"@xdn/prefetch","version":"1.26.4-next-1590058605-2c1b89cd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.26.4-next-1590058605-2c1b89cd.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-1VpSN3n6lLL2Ke3b8I5aSUN9kCzG7Jw7/tHHRUESofmLoLZINuRkjqxlTQH2i1boN84FjACayJ/jsoC4oVzdJg==","shasum":"4e0b77f0072e1602732eb5c61c1752279623a0de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.26.4-next-1590058605-2c1b89cd.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexl6pCRA9TVsSAnZWagAAgW8P+gIAoj/iMrIh+5RsOguH\n2QDpLNP5AsSSXCUmuN5vhyT0cfPKHh6dkZFi462KkCKQMLcleLd35vQ7Hce/\njKKSRkhZvofkXcsqx0O/Mae1aobjZrZKrtfldyFs1ShIqf2dTJO2OWZbS46A\nJtOzvIIYFGi9C0W0IEYptBNCRMZTiBbU8cwArOdlGxt5XWS/Q1AOMi9pLqXN\n6qcKKJ7/95flRi834PtMIJGug5nzKtBgqND1MKvNiYU05JFJupgT7QuxNDJ+\nRHJ+5bSs1ftMpFsN15tIJ+34cty9mU6byX6R0kxt/QkbX62nehE2ZAqwDdvI\nged3J+DGLuwlrG6FeqThVOR+yzC04N8qf6NivAhh8sd9DlY3ylhLfP2R08ty\nWo9DXyrzWHf0S6MLsQuK5qMGkki41Frxjl3UiEvkIw/trb1ULJ4Yh/m+tyee\neuVhayQpBqiTcpqU9uZvvyooknfIB9NaPRRvuji2nnKq1UhIc9gD4CSlqmTC\nrh6SbZjWzWGLrqAW4cX3BltCIP2L0KGburi1i55ypUO/rshtGpU58U0oB0Bs\nUenilFSH0RUF5CzsosnjUkXilAEmk12FDgdCWeTXOEXYFcy3S9QnxHJC2iR5\nRoIL2oDs7/x86tR7HwJV+mDK3OdB2qUdRx3Vse3I0pVqEYz8bfOsWlJRFiXC\n/Lw/\r\n=FfEt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFeZ63NaYh9bwDZ3FWWIdgok7Juesc0PAAGE0T+XY82GAiBD9/tPUcISRxDcbPSbdIHUexYMJOATUGKo+o/jGNQyZQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.26.4-next-1590058605-2c1b89cd.0_1590058665265_0.719057700562969"},"_hasShrinkwrap":false},"1.27.1-next-1590059385-7692bf45.0":{"name":"@xdn/prefetch","version":"1.27.1-next-1590059385-7692bf45.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.1-next-1590059385-7692bf45.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-spuUm46yHpJPhLC8NqkW49vf0eSE94kjXrq4ZA6FfqB6iRa0zh+1djroc//AVuup9sSDy0mMhfQmVCHKguPYaA==","shasum":"f785457b1c281219278b4365e0bbd6257dfce8c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.1-next-1590059385-7692bf45.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexmG+CRA9TVsSAnZWagAAWWgP/0qnoYLHrNlKuZ7tTl+i\naPPoJ4849UbCbFHZXLWTMqzAICV7xWPzae7wIKWwd1Ptp6O4qrxXpavJBGeL\nZwrQOXHYs9x5SOOeaggDmu4XKLyzbapGrIoY/iFD7Ig9AmUiq50DAudHjkFs\n/0bZ9p4vNFaNf6oxMDHH1JskpvIzyEXWtuS63DBwjjJd3/G6msXTLezCqycF\nv8araACypu8JCQ+lUOKGxTLvm5Z82PUD3B1hWwwMmtCp2v9EO7vFsgfNYVPH\nq9mCttHt16jewpg0O7Vy4i2Tl0urWFS2R6xfvA4khe2Y7L0QjWqDXGwNPT1W\nStnHLUKwTA9nOAjfbPrWjsS9nVbqe7Ri4eJFDr0CkN88lfiuIpjav1B88C4W\nKms2e/B/dswbLCRLBDROp0GGpqvsCPa2NJNUmBxWYl+8fyU0xJ5mBnXIf5ij\nJ887uaUiwxNzTO1WeW0omGZsbTy6eByjiYNeZT+jtDA6gQCeiiEXCW86QGkl\n55Gr5s9tnhQJGgqMH/XV3QsUXgToOaWVfZplogiUfyX/U/cYIOWJ2J4oy/IG\nnwVN57ZB8jcjyAgulHROeo1ep8RnxN8XLmqU2v0Squ1m+ZOQFYlVkBeiCZKw\n2C/QVprZewBvBPwzHKB1/QMpYIzQd3hgViQwBYjeLxEqAlS3n/qdN7F60XEf\nOEK7\r\n=ffkW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPpWnYKCsjkQA37d2dW3/2IOn/gCOC6wUZb4XKRiYaywIgY3PKrYtagUUwO3J/IfMkVY1gui2A39rA7UEoXuYHe8E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.1-next-1590059385-7692bf45.0_1590059453906_0.6367354173441837"},"_hasShrinkwrap":false},"1.27.1-next-1590064035-da1f640c.0":{"name":"@xdn/prefetch","version":"1.27.1-next-1590064035-da1f640c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.1-next-1590064035-da1f640c.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-zfntCmACCK7y+vHTS5jh9UtWWIbeCODsHVv3Z3YuQT2vNnZf7mL07PiMYBdeZC0/fyCy6l0nwHC4zTZ+9de1UQ==","shasum":"e1423e317a0b4a2b0a20a01f845d171f2aac777f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.1-next-1590064035-da1f640c.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexnPXCRA9TVsSAnZWagAA8b8P/2fDW6HyZPUTX0CQdDys\nD5BhlAaZptKu0Mmj/rJOigX/Q/xBemWMIdVaa72RZ474N08iJe8REkTVbwpk\nxsVTJDyt8w3LSaczQe8rIrKkgGy+QvankZ7BKMeXFl9nKWfvGejZhNQBc2UX\n+8+Knqp5Ih/B45NNeloEeTg7vcjE3xm4HEmqZmLLdhtV/Myc7bGzi4DWmZR5\n5u912j1GaCJrYMyn+5GSfBneaAttUgEJcI9HPAJvTBe/DqSFixkz/vRGPLCz\n3h2sAUcyFnpHShuuDA00lswQ+MTTEhLOdGsXVXgsZEZBX8UbplqrfGsD+Kty\nOUpvxXCqrEyggyQfvCDdGtiSdcLZwek8ZEhu0/xlvgxh1BqdCZREt8fPEf7z\nhMwmk+Zx78bjLgk8JdEFLF1Oome7QTEebHbJRMU+0V/R97gL+btzCv3qH+hU\n2h99wF9eVh/VXltpxumYsQ5sqE2JA6s49BC+YG5qb3fzszh7VWH/uYZph57m\nsc3cJgKfIZxgT17veXQdUGD8THY0+OXfjFBZM2FP7Yi7w257rT2ldQioPbEp\n3EEqDcHlMStcKWtwtDmWHLrvlGjmTsaHzXH4bBAg/K/fnsJXXgy3dH3HbV7p\n8hffECQ37LZTh0goOxl5Pzvnrv4r6Pgx8h1fMzH38JPhrt5CCktEVaVl+Pup\n6g+t\r\n=NKue\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmMVA5OR5Bb0ARGGdM+YJrMO5poPM+3mtEzKjXkhIUoQIhAOu0J0HDHyrPh9CZUfD7ipMf+fzMWhtRHjNYa5VvHS2s"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.1-next-1590064035-da1f640c.0_1590064086809_0.6213063680725643"},"_hasShrinkwrap":false},"1.27.0":{"name":"@xdn/prefetch","version":"1.27.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.27.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-1khgEjAh0+PXg8MeJexVYV73VRVma81YeqGjrmbzH4UI+am5oIikLlxWJgFowk5t6MXVoicSHQJtGhiVftV3dQ==","shasum":"de803acfa317e6526087086ac004c28b582bbee4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.0.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexnVUCRA9TVsSAnZWagAAl3wP/0hrcMkxMzBk1cpl3N0i\n3MWeoa5dNv9AgdRB1IHwVYPM+w026s/f6pMQRCH0sAdwq4sq/Z1k80a38LJB\nls6icEU1tzqDQ3UFvsLhs5Zu4ukZvnNT9FClW/gxFpIHz3cvzK59ShqI1Mk2\nPiSVMC/xmVjMbQ6LYuY2mAmAUkjR6KrYcsaUgGB8Qrs42oHJLX6WVYRtS4UZ\nDK2Qm5wWVPqKW9pjMtZDI5qssNArwa02viOnmfh5j2Opaj+G/NjjHr7bMzgX\nLATW7hCXafTTvCOVdIJ/cSBJyRzC77fG7J8roJSF75BTpAInz+z+W3SNzqrI\nUyrhTL3+A6PFror7Qg/W0guijjyxk0NPuja3CQvskzGeL1TNeJapm4pUzlm6\nWkUUJb3qSE833dW5zA08rrIIjAl/lCjiTrs5JEx9J1Ib5v5DXUKMpYXdj/Ad\ndqK4Dk0VEN2W7QyMdIAD+T0guc07uccnGBXyyDtEp/+3+vy49uDv7PZqNA2X\no3cfhN854QZY/4w7ET8tNFgU8Rj/bfUulA18LrGJljiNRwg1DyG8Lm+Y8a5W\nvOqbztH7dCgkjv8GBglOsIBfgwfU5fPnrmoBDYM/aPxM/A7Sqw5yy6STQW8s\nRqqGLozqGTZ3lwYLsNmx2MC2DgVbMBKXgYTH8DmwZKhl3cr6Osp6i30bOC56\nVkzL\r\n=v6MX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSeyOn2zV46VA08fTDAcswi0E0oJZUvwm6LYvqEo6RkgIgIa8pWUWt5hLPKEWuMNIPchicJsRBNCCzVamrkIlhg0g="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.0_1590064468441_0.870020604985573"},"_hasShrinkwrap":false},"1.27.1-next-1590077635-08d067b6.0":{"name":"@xdn/prefetch","version":"1.27.1-next-1590077635-08d067b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.1-next-1590077635-08d067b6.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-3RL13QDG52RZHAxOVELz4uP0YRQXSvSPR9rrhXMkIUPJbC6di0H6XXRYH7neHuq2Yhjxf+5CnHQgB2tNUOGhyw==","shasum":"c036c7160e0c5353fa92caefcfab1553e1ca6ba8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.1-next-1590077635-08d067b6.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexqkFCRA9TVsSAnZWagAAAvsP/A8am33oHyb4KWd2UZHr\n1PvbXS6c1T4zRVHko8ysy+PV/UHep/d8E2Ph/Ai8ASITOT9mZ8hvvjfqt1CO\n25EEk+v6Ydo0gmQ9OC2xJZhhQlBNfMBPeeS8R70VmCYXhQS0UMOINEHY+emI\nVtfnDUtLLC7d36763Hf2b6F+EKAPSLV+LaZ7mfzCCY6ialhXZoE1qe+jm+0/\n4GC6+vKvVSUgJUmybL936HblEu5wlW4v67iRguItTesx55bzL/lbp4zoYxlJ\ntQfbkpw4tT5jj0CE1f/QaZQhJ1YqyMF+mnVjSBTw/+3hBbV57iO/5IIU3QEj\nYG8DpBYObDIIvkNb7gvNthxfFiQhFlsZEtr8322BEmPwgg1qEYwR/OHDYqRo\nAlFLQWJFRvr289jTDXnYMz8cF8ZpzUsRm1L4aP3+w/7GTO+aXmSc4WL3uqTW\nsIfdCoD6PEu2mqHv3QSoVUIiaCIByyr7Y3eNjsWu/DRRKhsSmA/SuzYzVGa7\nCw4OS2tvpLrclFO2oHyzU6Do8mtjbAv7Ynp+xsGRDk+30Yr9IgQVWNas51vU\nyGpwAKaEG3ESHhogld2/Bjw6IBCbES11+/emlJoi+2Tpae9pLGhw/FxeTuIM\nFVr8AnWl6/3M3/KHMNcRgAAMDgGIk7LNoZ+BeI/DzAijeJK+6jDn1+MGHjrj\nNjmn\r\n=66Oi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDp3BYNeA+tjpQbBc+AToPQP/cB5TrJrNDidiNKXA0OsQIgd22jcfUQKuwfKFLKVvIx9B7cmWMH4i3eVu7hBWo8Z4Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.1-next-1590077635-08d067b6.0_1590077701303_0.7213503293655443"},"_hasShrinkwrap":false},"1.27.1-next-1590077877-848f8e4e.0":{"name":"@xdn/prefetch","version":"1.27.1-next-1590077877-848f8e4e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.1-next-1590077877-848f8e4e.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-25IkqqBcC8Gr8DwBo/mXbCKDpqGHCXdviDzX675dlYzDeAR8lXZmIja3ZLaBXLWu+rdM1EVYYksI7FHNOBN4Fw==","shasum":"595150048ac0cf89612642a5728f502b8dc76964","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.1-next-1590077877-848f8e4e.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexqnvCRA9TVsSAnZWagAAS7EP/inDohNirpRITZhK8PQH\nMwbi3Sm64yQNYNXXchAr63uR/rq77r7gOevjTkyOPO2sq99xrLH/kG5C/j4G\niSakH4mkGNs4bMn9PM+tXRilOeAXN0CfkjNrsGZuNZpXzUMV0XnHbwpmlZvW\nt1Vf/YcqDpDGXezQ4T3fwli/F5x05OboneWh3NkcUF2Nb0Qsh5E+sHs+NFuf\nv3+rTruM5aD4ZJYG6BL9aE3ewKOqbJz091s89TF1RgfY5HJOUMZLzAors+FP\nHmlYOqAhP/hrPevQwz7gAWcwbhmBRrMcDSmDqpvzsyWMT6lVuBMRBa3pQXZk\nO9MDAA0gGUEfzZQt85x9QqT5Q6vdsPN0TPPcmolISNPSsuGBCWOD3okJhBjm\nie+622gJwJpoeX4mTvdswbvhBl8kSSXetKzQy9IOCLMJ5snExSYL9tua3ETn\n9/TCq4DE5IB3Gek+eL/cesBIx9xTyXb+VdCdzTXzVvR7UE7j/2SCjUFrVEGX\nAtbfi8ULj+vyYcFyN3ud9LsKhY9JP9TsEnsPTgDFrp5fFKom1dhRBlOAQIo7\ndCNgPgcKYdnlp8QKWUk+EfDkZzdBDc/6t7WEOsrLRxOh2ZtGiNz7aA7mWz1R\ndDjvs2jhNN64EwL7liyagMe5+Msq6wHjRMMH2FRGS4UGjqITESZo1edfNHD8\nZdUM\r\n=Es//\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJMyQAkhJpm1XoEKTqR+2cMDhIK0GvHFjkzD5W2ojtIwIhANt5YMrXlljeM1B7I5XrK2kDLNCY+x4iAaMsS8kMv1jX"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.1-next-1590077877-848f8e4e.0_1590077934971_0.8375618646038907"},"_hasShrinkwrap":false},"1.27.2-next-1590077984-844e6fcc.0":{"name":"@xdn/prefetch","version":"1.27.2-next-1590077984-844e6fcc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.2-next-1590077984-844e6fcc.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-JwB60uuIhpdfx+MGJaJvjCpWeniVInKqyOZd9BBlA3nVgHAH4fWQKNNY+WfsuQJ6OHycHmrtRSiOX2fxWWg9MA==","shasum":"203eed6989fcaffe31de65517d1ba1d913c90217","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.2-next-1590077984-844e6fcc.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexqpaCRA9TVsSAnZWagAAOQgP/1kUiceFwPWYQpRoQod9\ndv9QxddypP/3vHtkw42urgtsJsn0VsiP53p/1WiAL6l94sL2rsYKYPgUGmMC\nnW3/6tSs15mwuWB+da1xLV9jNcONKtkeIyDa80Xzko0FWOpwEsgHB3sQAIRF\nZwXm4bzDc5+XVa0Y8bsSJLekiiEHeRiLjnFOX3qdyRRq/0+ycNWJyrKY00Us\noa+gi7wSpvppZn1mLPjRCsb+JCxJWeUExHcKUvn7v6bW3ApW9Hpg2JMGDjTw\nLfPsrxtzH3xlWtKdWrMLRDsKU3D+snfbUwCEIUGdUhFXNQdIuFZAi5aEiAYe\nzyGtJyS6T/kifeEprna6I7WvPzTuWZ6r6xn22aD9+vqnsTUAWzV0aO58XEKg\nc0xLxcpOQnUyQR96xdfZESFvQUqGgtb3mYILSDJc73hJKwDC9M2X/vdBQBpn\nZoTt/l9K6eQQ/sj87Ob6j2HCg4EsB7A15rgjxqvO+MB/sA3CNFLB4pBxB9nO\nrKt5jBnW4/8hd4Gfs+7Aobo08pYmhcD0qniWykLrViGYgrnOQNh9/ixKwa1D\nUVqg1W460o7k2oT83LXuQm4cz7NN5fIN6bbTK12FRh43dLKfOa9fFfqdelEN\nqcfXxMVk7WBA7RWr1NMvmXbSAordO1zdjQ6ZcniGnNfcuMTeM0sA5gvmB7WN\nrZbW\r\n=LR1D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmiZM8WR1+Ppn8uP0Ch/UyDFyP7IVir0vZzicfOpkHTAiBSzZXbPzhULR38q9Gk73QBSvjyrhYe+gC3MstsW8qLdg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.2-next-1590077984-844e6fcc.0_1590078041829_0.4043379418862387"},"_hasShrinkwrap":false},"1.27.1":{"name":"@xdn/prefetch","version":"1.27.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.27.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-man+RSuVrz9NPmGyv8YSkPO8bEpdfytk86Sv5+6bwqzKANzWBvps5BJGvBgY4DKLMBJRSTlzXK6AK/Lu0o42pQ==","shasum":"9653c7065b0e7c54620fc08327737fe6cd08a8e1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.1.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexqr2CRA9TVsSAnZWagAA1rcP/3jk3CCvZMu22Iy9BN1A\nVF3kuofhd00e5QrHBF16rUqW4fYZzKT2m4QW+5pSNu6gADelrAWMcDwFlRdC\n0oL4h+epbUXBZhMzgYkVanlkC8Zfw3DBcV+SQNBZYio2uK6mpAh76sw2kDHH\nZigsKtGuirFJJIz1hv+orfHgR5AxC0OjtWayQerQnvJzZBVtgxsFoZ+K7mVA\n0cGRi1JLiUjr3joZJB64sA615hUIlRgAz0EhSiz2/8Hw4ipKYKD34aZGgLQ1\nKkUqD0QEqcAFWh3zj1JcouShBMq6Kx+xGDkewSsUmuJ727txOKv7sPyAEpaA\n+2gOuiEZvcH2mjsXo2DftHO/SB8hPTS61+VwS87BL/1Z+ccNljgz6f+1E/Vd\nYeRIWm19F1oy+EGgISns7KRFRejJnXR+hFcBvRYV1P8XbdkE2uQScoHWldWk\nsPSPunLE1+Ko6tRY9IqLLwnyoWHhYnKJ0DDKEXVgVgaC90tO/wbClTd2Wg4C\nYPwP+hF+QCFpYOmjEMEHuzNoc/ya1VZU3AbzjJipBPu2OPMOKljLjy5NCkd4\nq73M1FjhUqwNz8RbVLy/JAfl6hKww3V+62hN9Hi6zvXND4QtDv2IMZqCXE05\nwpxtDikZTb2WT7Z8TdDzyTIUK6Mh5Os4J9LktoKrFZ1wnY9lYzu8u9Ci6o2P\nPEGi\r\n=by5p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC7up31oGGL5VgqV+uMKv35N8+v0J2kltvkxSXK+xR26AiBPmnM9MAwA2xNIxqGPaujzhMZjZf3Xir0rx1BEbcHnWA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.1_1590078197724_0.9750931820383419"},"_hasShrinkwrap":false},"1.27.2-next-1590081909-aeaed87d.0":{"name":"@xdn/prefetch","version":"1.27.2-next-1590081909-aeaed87d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.2-next-1590081909-aeaed87d.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-rAm2zPaEMQ3giuBbvh67g5/VGq6d2t4EgWqB2SBbUJVYfL3jYHEY7VwxaXnKMZl7o16dXHbqZhTDWz9tf+g09Q==","shasum":"1037ed5676a9c6e198074a66028a5784bfb12fc0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.2-next-1590081909-aeaed87d.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexrmzCRA9TVsSAnZWagAAe0AP/jZB/C3kLIVeg7l5yCiE\n/GamTWwc+YqvPKo2+WYAdaMqXL4XBLo8Cy9ue2KNYZrajIzuMUyXCGgxO1Wx\nHnFuESx3KsG3k62mE6iWa2A4VMrUDeNcR/uZAATTRpjxZvlSb+CTlrfzOaPv\nCdWuLJj28fVbnM1YOoJG23HGS2rjdWedCUaCzpxVCMlRBNLhkhxnj/i7VdDp\nJJIV5FMGcqvKyuMtUPOGn6ArifEPK7Z1N/uuQKVTfX6CjGs6s99I/qbY0kzg\nFLGeArZFBYsRpDOsCx6O8hjrKTSddshwzmMtZlWGJbl9rEeplEQcUz6VxeRE\notfb98OMp5maWP/CZA4Z6B/U3sxVdY2W47PX1VwKYZGAzar/qBdIBEXBQeNg\nKNQaFOorEIWg7LXv2v0LtNlyHXtIAg0xJAJ3IUzXof8sW4sSloRHX55ci1Sz\nZ2pl+91hvY8dXfXELbFH6d5iTp+hI8tin0lqc3lpIivJIjfVopooQXo8MOEf\nxslpK7drh7E75GBDO9omet2+Eg/J0AVSOl5PzOx0itsnJqs8yuWP+tqZUine\n5PX++57O8ujea/dOQjihPasSToI3d87d4c4re5vAoafDS7lprbW+WShkJxQc\nboyVTT2BapCvPaqqTUiE7VgwlMhgA8tb0jvre0cZ1nkBh4pyEA0ekUD1F8f/\nLv6H\r\n=zlye\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDSAWmggFQraaK1Lqe6vXD0vYYXj8hNmLGBprQ6WivoIAiEApTZnr1uiwQf/sUMZMdf8DiWJBXQIEw20xhLcz2wqDGE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.2-next-1590081909-aeaed87d.0_1590081970799_0.3082903458731545"},"_hasShrinkwrap":false},"1.27.3-next-1590082002-28f676a4.0":{"name":"@xdn/prefetch","version":"1.27.3-next-1590082002-28f676a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.3-next-1590082002-28f676a4.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-NfGFUaoF4g78+6BbUmY3jlIWrKyxGOsCFpn8zPsh6ynqBBPFgo54wb7XVm1VNNPGFdjReNf31qoQWIEBOTcdIg==","shasum":"2977f0fef96e8d27f0b8eb3064211729bace7f32","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.3-next-1590082002-28f676a4.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexroMCRA9TVsSAnZWagAAEaYP/jrmNkWysA85eNcGQU+Z\nacri7Ox0MvHG7BpdDokUefTREplEP7ErAMnQ74IDti2nNjgx15LCejHOBiHg\n9tNmSLoKEsKwNjQD/RCue8I+2LQ2DpkYFp5Ckb0qZtJHciwFkbxlynac5XlQ\nN+WLCudm2Jy1BWvzlbk3G8cBkSSboqSR0G1haxSeW6DEhL8V6pVmwmOUi/1C\n6OzxU0e2vlIdACCxjN6vFkHWX0nCkO+sC/3KvysdlDYZoh5z3yvxjaWrRiah\nDise1i8MzN8dE7Fd/MAZiKrak2oH3RJ6rV0AprnyAIMNVa3FOPZCoKMFCc7x\n2j7IM7WDbymEjCXbKFcTrvElPRodlC5DTn+MSVQxyr1kRbaLMvDLGMs8xWcl\nxFco596gsxN+S/zwczsacq6OS/u8hJPdABnYYZ1uoSXkdLJeIBHISfojnnBA\n4Il2sUdcz6yWblHi4st8nrewgf8zSB7xSjNjUysnXAg82Kzx5raWJFczl22S\nUAUkTmLXQClN/TqaxKrTLRpODsLoZ9CkhSA+yp2V8ErMaT15yl+MzccMw1TD\nDYGb8gNz30Vr0W63XFUtAZgdDUxUVbbI5HrO4yAfRIBapRVmc2O2GwUqnkBi\n13hBiWvamjVK+rN01PDkH4lIOIN/zYllD4nWzVwWwIaVMgFU7mst8uw1Yr1b\nDNhg\r\n=DdQM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDF8xti0oRkZDuuj1KLJNynjdw/ADnugltPFicp1dswLAIhAI0F/NtQF+/iA0uEzdKxnWKfeasE9/5HO0EXpVbzIml6"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.3-next-1590082002-28f676a4.0_1590082060456_0.04620906377296996"},"_hasShrinkwrap":false},"1.27.2":{"name":"@xdn/prefetch","version":"1.27.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.27.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-/fyzcHnISgAQKTIyovE3l2XGQEKRwv19BQ4cyQUUocGQcqZRQ0gqLkltsbjzGaRakljo6ovwBIPI6e1bnCqwig==","shasum":"cfc5ff76f5d7877f62f59a73bc9a646d4a5432a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.2.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexroaCRA9TVsSAnZWagAA/vAQAIoROXBl2AVjOUOz7lgn\nkdj/69LqCPzDPsyZgl6hZu6+lPpwqpAqNlC57U2B3cKns7TexVBd+F3yZ7nU\n/PH4x2tfhUgUwwbc4rvqI38b0wi2fWnt2HWlBCQ9kpFUwZNlnjvCdsOCaNbY\niK2hGZVMUd9JpF1Naa3QSgW+xkOFcPe2vGqGkbNAjpz2UFJAAZtOHJW3WM+B\nl+uk9Oae4DEB6jLAwaTkjScBdtuv9usv8LjK1Th+SRa8NSL7mxehFebrLGZ4\nUw3XDdL60EyRcmJ7e/YhaUKQ9YlL3S8bL9eDqLPgd1cKpeHDdUN9cAFgK94/\nH9IkQGHN38p8Ls2gQvtNT6BVH04bOpStGYnfViDts0i8GQ9H3WLaYVD/BMAm\nCtB8lgEu4OUiqYXsdxPrei0cGepx5Ls69kOhF0L+zm4Zd8IOtUQrYntvClgj\nXpkkJQZSWTCbH/Gvn2vmfnFCP+gWW3JRG2JgdHKIrYlqfOOc+z1cldSYffF4\nWoPJvMySh9qGkza7J9m8DKwRHNXdqVWnYFXimnG4o9SRUPYnEDcdQwF4P1aN\nf3/F/azBeYzbBCieZmhjOqB2uzh+F1Kvz+bfJty2aDSip39nUQPJRGxAlewO\nGNoWGqvLqcO9x4KXC6CbFqJw+Dl/f0e49pQufJdPsIf8R8lf1wTXDWjDt4YO\nP4bV\r\n=c7nM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJzHkHrIp++kiJ3TXfPV3MetJFmzP61ov8KfLCPFtTqAIgEwypLUM7Adc2uqPLXAR55NsEPIrMGWKhHge7zFwJBmA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.2_1590082074333_0.6696552142423056"},"_hasShrinkwrap":false},"1.27.4-next-1590087390-1c468893.0":{"name":"@xdn/prefetch","version":"1.27.4-next-1590087390-1c468893.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.4-next-1590087390-1c468893.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-MirvUfoa+POW2a7FSSg7+oHXUfqrcHwvAKnDE99GBLrcCMJAsJ182lMbxyfdy/eSh4f14Tf/YvwmQaTtckbzvw==","shasum":"3a8e1f14204dd57cd8583c5866bb05c16fe5d7e2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.4-next-1590087390-1c468893.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexs8UCRA9TVsSAnZWagAAMs0QAJou/fcNJOHX+3Yj5Zuh\n1PlCxmbbIt3bavVyntFxWteVpa5ME1h1S2AGbBxAnriKpGmoiEYLeeoctj1z\nXXUY75FeAGbV8Ah5a//MU3CZzZspObc0FnAj8RMkSSl7++W3nXK3v8+FrcPw\nLNOR2A1zcEK24dAuvREFWWsI3xnZRNOYiry44Hh3Nirl905DWb/YblgkQoLb\n5NWqLwSCtXjq0aga/8yyLngG2lMzooFOZjCUL8py7JtVhK46kNsz8leFNvPo\nGoiDWxq/YFtGIzmSHbKKFKCvIKqJ8Vt8zqw9cqp2rZZgwVMj7YJupn7exP0Y\nFhCRQ3XjpSUWMM3U7W9oEQ5CiFFWqzyRLyshR72ybDlvZ9HhVKLIBKxku994\nGJRnENH90CgZYSxXgfsI8frYP+eIf6fafoqb9Nfh4pQmAboDyuktsv/IKneX\np2GfNbe3Rmdf1erPiEXMEHGJhbdWalKVDCfbTpMq5Lsk7c9Ow3oOWe43rexO\nMndPGFBrzhC1DWpdxRRDhACy3LL0alMnxjHgCjUqOwZB+DlxYGQb6kkB5N7a\n0gZCA99jqhn6aAkF9gu4Z5f5AoGBzlt+5UYpH7UD0I1ym27mnTed9YR6X1bn\neLr7T6SQVrd0qXu/OK5z1Jw7F8H2ji4aI6krFvVIcXgjZYm3iP8SoqFzWwnh\nL9d2\r\n=Ptmp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYpPiVE3Dx+VmnSIKD97inDsSoBh1YaFS0Qf6y7W4nHQIhAMQ4+LtlGmifRDLhJmKSPvFVxHpzXwpkdo3Sl4yRdNHe"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.4-next-1590087390-1c468893.0_1590087444484_0.004790397507179689"},"_hasShrinkwrap":false},"1.27.3":{"name":"@xdn/prefetch","version":"1.27.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.27.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-EcIcFCn9Q8UB8TYtz6c1CldtBIuPivPnSq/+bjwfY8P4VI5l+ZeKbKwSbSqEB1vjb9BGF4fX5Qlk9Us2qaE/Sg==","shasum":"14b436ea58a7b86681d922e1b03cf15e41279912","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.3.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexs/xCRA9TVsSAnZWagAAsEwP/1PoQWaxFmXjG9Qp4xbJ\nzzok1nm277W6hZnK5FHhD/ZF605HbuuGBFKhGVV/11CPS6B7EaqnTyK5DSXY\nL9nQFqljCaZJVy+fU0rlX0GlRqDYY3Xr0eL1l1MfM986o0bs3V35C0h0MnVP\nYWBasy/fEUiAb6030NWCiypDsM2JS5yyuDmDVHOw9/XPsfPIXewIvc8ilTk6\n5+1MAw9QORcwxPYMiSVC1TGJ9rE87eU/CUHu9nFUyql+pJ5yESo7vmcb8ijl\nNbgnxndFypczFdPrlz0G4snmmSOFLpY38rC+iWE1aDKFEwwPNh5aTsRO3tWd\naXRvOolmcEqUBh2zfTBKX4jswTSwHBRgD9uvtEtB6fiC+4bztRFnGG2rja3X\n5hPylv9h1rRWamhlTfiCzIdGBopcErc8Z5MCI4hcw6qfgRipB5FDSruk7Xi/\nYhjBMctOORblSZlCa4CbdIw9UgV2hKxP/La4tUPDI+u+qyWqDUTx6E9jmKQT\nfQhjNuz2RyXtEXR78ppQWKgBtUwt+Fv0258w9mjB6YAT+aQPa97fuKtLgnN/\neuvA38HFES1h2R5FfybzeHIPw1ylgnSLxnzFAYU7tBu0I3HMhEYyxWZiYXNl\nqvbfqWDd+zTnmgbtsCjmo6r/JvBnN5SSkl1vSZutMSL0tCDTiEDH6PkDIDZL\nv0VE\r\n=gf/V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1ESWLz++7ZV9850LAJqKdylot1SnMdUSqcPsdAgAi7gIhAKrQqp4iEpvS49/Dw1/yLTT9U8WtA2OEfHZ0O6ZuqvHW"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.3_1590087664709_0.8511471240321702"},"_hasShrinkwrap":false},"1.27.4":{"name":"@xdn/prefetch","version":"1.27.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.27.4","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-qFcCtXVjUwwF7KPC9TNbTfJMR8XeDaNqSoxm9v35VvYprtf8v1/61mfMfU7A4pA60AUTFxq1jTyCDaIBNQcG1g==","shasum":"8749a8ca57e981b38b3e0a86fe1bda089f918b6f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.4.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJex8YJCRA9TVsSAnZWagAA6QIP/jDiFNQRG7GIlyTIxzb2\nfpcvpafUEC54faB4BWDZk3Jrl32UflLdtf3sStC0abfSYlRpgSpg3hGdHRfh\nx1lj1cr4NzNj93QOgpi4w5LrAwoA2N8ksJ4s15BmqQJoeJQtrt7Ovc0/pgVo\n0IEl1fP9fDgmBq0vpKWhMk6wD3SXTFbKpXC83nTxcayb5+/l4ILFCGQ4U5jp\nZsDXzTproOMUUENyxSS6W8k/q5h2xaYGWgsyR8fn7aCeB7MaKNH+xOqJxr2f\nWA26VXsK4dYjKBw3FsPMrsCws9o25RU//ByJaX920Ze3xWJY+jx7I18E5mOi\nWq+N4Jcar2ljEDd3tvk7+/ph5BpjigjsAlrM9wv8ic06/lS6Wg/NtmOgU8x9\n3WUmf5STabfmGk5QdvNE171r3QV/zz2cacK3twEykkQ10CrssP3sfByekyBQ\nclGJftidyGZQvnrAm0lY+mF4HrxnYwZlhMQbIhRPmi/rUzL0J3TW3ktKTl19\nmx/TtgH26KlJWhQSPz0RxDxkJ3BRXJ0sTfbhpt22XIJ1Qs20awn9bBAnqV9y\nmiRyHg1nLrkDNX8ZbdjJ4pgntZIUCDAWnM7FW1xAHR2rnFx8QPx125mRaMnb\nKQa+VYI1ymrHpn11GFTv5IsnBM7TpNIzHgEnEJEIkrT00cUIo2S8HiDt4Uey\n2TGi\r\n=6r/r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDyDqSv1Jmk6S6X5D6XkN/8G7+r71281D/WNOYOvVBXtAiBXwItrn+nv6flYFP7omMgeKe9WDiFkRQw1D3gjX3GOBQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.4_1590150665249_0.08063754564545289"},"_hasShrinkwrap":false},"1.27.5-next-1590157290-6f474bee.0":{"name":"@xdn/prefetch","version":"1.27.5-next-1590157290-6f474bee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.5-next-1590157290-6f474bee.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-NN+Bp5lPQJRgffAu2MxhHoziAHN+Lpbuvf9xyf82XxszRyuPA8QUgrRlJHncn6lpxNs7lvX39VgMHuhGAUJjgg==","shasum":"a7b401247d685126d2538de0220e9c4b0796c23a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.5-next-1590157290-6f474bee.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJex+AfCRA9TVsSAnZWagAAlAgQAJnFoEf3kN/LypmiY9iV\ns9zwYuJ/Tgje3s78fx2aTexRn/jVivOEOTVSACX61JgGPb8b2HWc24IlXA8t\neUFgWYG9ns4JlAqgaDFmtP30V9NwiAAjvnttcU3Fi2k00LobIbCaFWiHwLbA\nxtyjkZzaaW6IBWCMV7KxjhC14Q/Ywn9JX3BIZVidN16QsdnCa0OuOsRzZm4I\nqDEWDWttM0+FzB67KXJbk4bCuiDO+6mYhX2/gNR2kfazlYbyD6XuH9eTJoQ7\nZwPkkKI7jkyhsRr3/O0+3SaY5fsZd+8fEbmL9HXi8HIcP/qAprHhRLMsJt87\nTPzZ2jrV8u5J5Kw/gMbDlNR/sVvtCO2A3t4ZTp2nGQcbNcmPEPXz1ZKyiGFj\nLNEQjQYGKsTBwjmCiofWIILNopESckw4HYycTPXZIrt6XcAlgtXCo0Rr9gfI\nOyUXGZewkR2L1iYozO2I3JLKNpjM/zpdFOdQ4v8OW8aYp1ITo85+IaiBL81S\nT2X4x8c/8068DxlKVQXBMhsKWz/rjBuMlf5voYAU9LiQqemmJz5mFG8p8ML5\n/1lSj0aG+xJV8HNcpRhnTzqP5V5Ax3DItF416ypPbtnmhoQgCWY1TE/3mv+u\nW1bAHAyN9+wWpRnGA7z3UYqXUOJo4aq60zIMLp0QUSkUndiw0Ti5x4ShUHRR\nO7j/\r\n=4ZcU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICf1dEBB0VTgMalTMrLxOtZjWfKY7NQqSzmjlUZFhP41AiAlkgi6XYBOLU1EIXjfcRgEhjicIqRGavE0xqsjJhUF2A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.5-next-1590157290-6f474bee.0_1590157343017_0.3049979065420323"},"_hasShrinkwrap":false},"1.27.5-next-1590160837-01d1da34.0":{"name":"@xdn/prefetch","version":"1.27.5-next-1590160837-01d1da34.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.5-next-1590160837-01d1da34.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-FvPAWC2J7QW8MW7+nnBvvAqK0yeJCVtO6kZFe/+8PDC8xbfLD41BNsEz5fTHI5EKyrt67gKO6gqP1HWh/suGKA==","shasum":"3cd61c6f518648b3ca88b0e1b6cb95acd11165ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.5-next-1590160837-01d1da34.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJex+4ACRA9TVsSAnZWagAAIlQP/R8lJeYlfVYe4dPRh9B4\nkeMlZa0aavA/jL1DqauiauJdZX2684FYEs1ppxhX/dGr4wuv75PcHozmqKox\nRbhIxiE0R9ABRkXiA2KqKVw/y/UpQzxSiVaEh6elDkk7kLslKOkHjnxk2eo0\nY2pGVv9vF0DX19SZOxJSHOGC3Re5j9grDkyAx4iwss8rmyoYiMBgaUTuWdH5\nxuKi7mfMPbIluIL3BlfrH/v/3XN86kTQP/gKsK6xbuJoGb03IZkbbBvAudvG\nF/I76p9I/oJYC9+s+tfZ77J+6JbzJ3IW0UXte4KtfYZdoOEpqJ9HMMF6esnT\n6D/WjvYLiEdhlspRCRjo0LbY2rWPlwp8mhZFN0RBoEz9oPBpyf6rytWePu48\npKDc77kULgseEfgnnYtqdGuHStoqVkiZzOxXJ94fpBuu+Y9Iu9MynlmhF6NZ\ncEcEsP4/4tfI4Ic1MTGwxkwfd+hrSDwGEM6m5Qo7hkvNbJ35ERInoVXo0S3a\norYOOZqjxbahUIYG0ExWVBmX4crirT6evGaokKFK3dkeBYNOOxF+XGytJ54Y\n9OwyN/W5563kx8LSxgaUA3UPwfi4GLYdNQu5k3uqX4DRpphPv9ZkNyKCSD1+\nVMBKlQ4kTnB5wr8KgKRdHJAYEwjwiaLOqX7Mca+Z5kSWiJ39BA17qGZ6U+gH\nsEr8\r\n=6UrI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGVQyCIV6+rUkfmXjO6BcgWUNdu63gvoXiwIVHS2jHnQIgFC9nAn0DUNWnGuLJWPqVfXGZLPO11BCe3JitfX3R3HQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.5-next-1590160837-01d1da34.0_1590160896316_0.9769165073134884"},"_hasShrinkwrap":false},"1.27.6-next-1590161219-ff3615f3.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590161219-ff3615f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590161219-ff3615f3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-wXTQP/NM2lUTx+JgFhwBA+W4jLDs8jJuqA2LuRkE/Jo/vXn9vNc5Y1HES7QukTBqoq7ndn0lB8S2ZjrhBwhNow==","shasum":"3e5234c120079deb3b75fa3b93fd968cf99dd7fe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590161219-ff3615f3.0.tgz","fileCount":44,"unpackedSize":66699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJex++ACRA9TVsSAnZWagAAFvwP/ighZz+uvB4w+IycmUAc\n4A/hS1SRuU5iP589/W2oKS3ogl9gLMOwheccLljItXBQQrIxv8ok8DrIMZLo\ndGPXP1p6eMZcbzYjVv0Eet63Oxpumdw7X0wMwbKQeDQPpqcqUpJuPVlFT6+/\n6lqr5hxxkbGO9Zmy477mU5tKPheMkViyXYgjd9yQDJOYGLe5md+YrH2tp43E\nnQEQoo6gCnrCeA4fqqTQ3wSlTTp4zvMcKsqufiqMUKq0crTZxV6NpTJS3xWO\nb8gYiXZKq1hU+lhYDJMs/Tlt9MYpFl2g+Rh7jDIK6Dpc0/XSe21g+vhzewLS\nk3mUTOqKeVi5ILLOVsCJbhGeEo8am8yLzaCrMvtfJTtCX62oOy6nDbCe47Bm\n1ABOyuMJDIVhAVZ/oAWAuLfe1d0P64DgAdMwpVF+H/ezMTpfrZ+J85oBgGcy\ncpWBssLD6RV1imeBokjd8j6Srj5OvhJ/mE0fK2Cq+k+SYeST0b+QBLkCaPSE\nYORKw8Fe3IJGQHgzSys6OiVC12NZTFkEzmbYl7bZWpfJEjCVnZH0C2APrpo7\nWS/b/+sYBjXsOqAw+OSQh890pS+F7wybI5UwUDxpx5R02424pQ50QHjGP4XS\nXqFpP06ZPr7y7O8AX4h0o7at7gaSyQaxI9QKHEGuqjS0q/eDw/c6KEUfq2zV\n7y7F\r\n=q9XL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbjYQYX5pyLBl6srq4f3zuTuTEV8qKSkt4Er+SvG6lFQIhAPx6TtTQ18rWL3SpAwjpffpCdyrBBMh7sDpT+K98DxVV"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590161219-ff3615f3.0_1590161280006_0.8388106454330198"},"_hasShrinkwrap":false},"1.27.5":{"name":"@xdn/prefetch","version":"1.27.5","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.27.5","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-O5ljxA3RmxdrDGRRM1e5vGT/fEN4LZjUc5U1In8gA+c28lG/Z6oAV78ROPBhqNenVZ41iv7brN6Htoe/SdYDbg==","shasum":"b2ac709e39fd12ea4d85421630102a1c4bed4fc2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.5.tgz","fileCount":44,"unpackedSize":66672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJex+/HCRA9TVsSAnZWagAAQpAP/1/Yv//iOdA7S7xj75Bq\nXLl57VJiAJqRs09h8bNCEVGMDT9lMY/PqQ+oS0Q0GIrQ6xjgWa2/mQ68GUQa\nYoPWyD8e39T0NuGHvAtMi2qdoFEMU4eV0Gtx2C82N2KThGZlZuTUusF1rX8g\nfE49I9DOKIdXUfA+LYx09MxrVnLypwjxTaVukWl9Vaz6xPfMJhLEQx+gyoE0\nJuPaerK0os0NowPQRmA5H1GV+1HboQfBZdIFG18EbGCmzy75FRg39hyXPAMo\nqqM/51DdaQNqCULRktOksr76irECJFEkdRE5F3ByDxBYeWnw8M8ebzNFkAi3\naFG89W3mzMQG+X5OBUOdvEgW2F8bczaxIufc0FiPERPYiyZrZQOOp1zsiQBT\nPl2VgOL6m0DKBPAeNwvsTh+LCBXygxxQiuo2PK2QyepK3EDbrpUEX4MaXKd/\nsBUedvUlJRCCHo41Kfz1FOJANZ7xo0U/CGwMqPZeAfpjO73ORvH4qOFG9FEG\nvFC1iS6HmYMNsbtQZGd10De5qPH9XXXJeYtEuAYVjAMENw/KiA8YyncdF02V\nYuj4BFQkVTVvxQ0kuTDbfeRxPK5A9FmAkn2LS4XtArObtnwLbHwvOnV57d/O\nR5c5y/gNLVVNmEJOKpYz9SpWdy5EHsIIQEzfXgYMINVScWqZV/g3qWYl87yJ\nKw4j\r\n=CGn+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDF/bGvtSkHrKT4y1iV4Tx3DQNhVsO+SFg1KxRLwmSBiQIgJMKzJPHKHXJWUDCAAAWHrdGUgSl44JyLqeVpp7t/0rs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.5_1590161350743_0.71298846672653"},"_hasShrinkwrap":false},"1.27.6-next-1590415848-8205dcaf.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590415848-8205dcaf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590415848-8205dcaf.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WYszmxv8rBunwsXJ8R+1JzxWrHyO0LzIOJZr2jYvuM0zymBNK83EsjAGWX90e4BSNNIYk3HqIZBSR9/ek/WqXA==","shasum":"7d775d64f2f4aa0ea41e262aeedcac320917f84e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590415848-8205dcaf.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey9IiCRA9TVsSAnZWagAAE1wP/3t15mGN7/JUOm3TRkia\nPXphHID1bL4mzG99kvE5zoks52x4hER1QqEhWX8jqSdgK5cxuslBe3NrHupU\nXMXvst5aNLq3vS4MdxXJqew4TtX6vNffBn7FPPvAuH7FkPEmPii/qX162Dvv\n2nzMQ5aHM7wX6MMO0pbdzk4OfjqL40u3UZOjsI+6u06lrvgaZVd3bwEV5JN6\nL5vx6dCkjQcFIJ+ig5qC2O153Okh07ER3W5gpWH+K5abGngwcpisNPevejS9\nvc0kpbM9C9Ht3Bb/BpWNVEG4fmdZuNckJaDckrp5dULT/b/f8/OUyshx9dyU\n/iGCJPcYH003HAjgp7CXeoo+krFxPvu1ZIYjPYbs9J9OFLrZRDMvB21HpiiB\nA5D1WdNoF2Dlc5wfjcNnR0FvErNgExCnP58VhemcyFvxhBr8ituTRvoRxBU2\nFf9gLuboaqVrX00pUda0DzQealQ6raGO8oe5LMoj4D/14I7swLSXnFELSjW5\n9g2cjX2uhysrS2IsjuJzDmE3DGLRAlSPaqN8OWVzBhDXkaxSQF3Fm+QcZ+RF\nnvFsF3a4S2rwHfiVQk/dG+Z5JiC0R+UvbgfPzIrHgZFQK0MyN4eRzWQCf6qT\nkFOW4Zre+fxe7pXKTRS57Ii0MnHCZ2R1vJWilg/Gqd1tOZ6MpYweuxoJ7wzR\njlN3\r\n=xrXZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDx02oiiCiAQUeNmG2pAW9kHZygj0O5FP97q3uTdgkhOAiEAygj630euvpX47X6Ze976DXaH+AwmLTfVxncJZGpfQtI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590415848-8205dcaf.0_1590415905833_0.7744381704300329"},"_hasShrinkwrap":false},"1.27.6-next-1590428158-f3675a8b.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590428158-f3675a8b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590428158-f3675a8b.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-CpI9pq4hp6jJWDEUe6eLbIHBeA5Et3zYc/uQDIejLGWr+kLpoc/0Rk1IqjhmVMSKS5HEuPGMTDGjTpFuinsGYQ==","shasum":"59bbb6d25142c05a6c23d5aad9d4d393756b4271","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590428158-f3675a8b.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezAI2CRA9TVsSAnZWagAA1IoP/Asiqw5k2xMz4K50ThxK\nrfepgdmqJ+wF/Rlau1sE8t8WgplSDdq6hqZlWPWjVgyvcTR4S3X2fINWyTHO\n7e0vfd5/e0md8zDTwyI4WMows9VjLWlMOR812Cpoo5Rhsap29Up1uuTyF9vJ\nlVha5QXCzox1RDdTdN4iANGDXRrMrfWw0CorktpF5i4yk4Zf/QEbAgFVenDa\nwWHkfAbjWd320M4wBfJjpmDIhCj2Fpm8I/3BW2a+PhMZT4dFWYDMQOi3Z9Wm\n6kfPIzdmQ1JVvbohNWJ/Oow/9smfC9xUCZtXisw8Me42QKi5/E/HMBKGQvr7\n7tmDjoapt/pOdosaJlau6C7Cg1/vmULAENoyR71i51fuBDfaF19dxbY/Abf0\ntxFLFl4HwxlLtpJb6KmrvhY0Mjwh1FI6s1lBQw3aEX6VjG71oLSGgIkpLeWT\nu4xsONcDuQ+8WvB3EdW6Q1fED+gGnOerlZF20AbSyNSJVV5YkeKhgtr0pkWc\nEMmyCdWgxIlMhNZ4memOeWoW148PzXXnVa1VfyNqNyCxECQMCRSQljw50r7r\nLeI97IzOiyCXv1abUomkjbSBQGKxd7C9MGuabNDD0bMPai+YGOfgG70NL9vL\nbfOjc69anCLb9d2DP2RV8VnLIqX8SJ85dPMuS2SfAKDAzBRA8pwfx1SN/KNm\nx0+G\r\n=i2ew\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGIWSaCwosVzVXklY1kqySWEheFFbSuqlX0Z4PH8+6oAiEAhYt382GpkKyystTh50IR0sg24C2ViC4LkWoXhlN5qUg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590428158-f3675a8b.0_1590428213763_0.5390372318415195"},"_hasShrinkwrap":false},"1.27.6-next-1590437485-46f258a0.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590437485-46f258a0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590437485-46f258a0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-lBqdGkRkrQVaYN8umV3sVlLkdkUPi02jtBW3igW9qiEk8y1F4h8sgjL8y4rAwaL7tGfODlgqxKm6zoeHgjV7rg==","shasum":"319e66aef8eaa74b05fdf656046392353b06d2f4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590437485-46f258a0.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezCaoCRA9TVsSAnZWagAA2pkP/047TIHdSRdVvYkmiD98\nvO+fxhDbzo71y9/DJfttsFaP7Eb0wS5JpQD4SyEPZH1Q+0haK1Rr9F+6fnw5\nuToRG5qhLX644fQiYmEVYXrffdHEU/dzBXGyxFp+sYNCVAZCUz1TJ6Ct79Tk\nasTJmxEGQZL0NFMVSXnWoXZFx5LzSVyntKVqLQxSUu4/OnDKB695I6sdEvi6\nUvtGRExZzX19RSby5rayU4EAYlvHYa92Z3Yb/UvFu3UEg0bD2uDpZwj8aHvs\naDf19lZzxOj5OY+rBwqHTlD5HSE6T4+hGza/jKsxM9ATXmVgdr7GceZt2Qhq\nUYKzK1DxtIsx8q9XOz3jmznyfGZY+f4ni3MC5XGczuaK0rsZIVY5C61OHLsc\nmgQZUiwUpOOd6PgzcR/TwedwKst1JnM9JRgilUx8+IwgyIu33o62jApYKKDo\ngYC8T/N+tLKu6ldbPh+E/3o9RnbxBTxtKlAtcBXv4U4b/xZcj89xz5MuCJgq\n6+vhttxxkN0uzunCSb8e06sG78hwy5jLFTwDJoadDnMLRA3BfAjmPEuY875V\nSazXOScoJiaSznJsXV3+2aPAEr5ES91J2ahz/03suS+5zdzvYL8nnOzGsLRK\nXi75Y2U1/Lx1TX8IgEA7+Z94q1/G1cTLek4r+mup9l8BBD6MdQ1stGCGl3xy\n87Ht\r\n=0c5l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICVgq5snmHiorP+fwh6OWMkH2/XK4fO2X/l2qSDFXNU9AiBFdmNCAQOVaSSR/KI7V/lGCA/RTyHRdh9FBTbJJHojCg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590437485-46f258a0.0_1590437544122_0.4658383324026649"},"_hasShrinkwrap":false},"1.27.6-next-1590441025-3e80e0f3.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590441025-3e80e0f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590441025-3e80e0f3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Ajk8X6298HJM6jqjBDrxX2781Plunnvt6z21lCLUnZPDs7D0Kx60HirNHHEkWGr5O7j1Ry6KFCfZC13KUiKAeg==","shasum":"2be36fd9938726ae510ef933ce9f87f961f016ae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590441025-3e80e0f3.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezDR5CRA9TVsSAnZWagAAAIwP/jgvA9WgLx6PEMxd6Hq6\nkocjSQOFWn9CVsjPHJe5toPdFi6lbV1NUJCHn/WZ1veZbiYbQMRySMYzs4Bn\nPgw1xag67uh3V6GevnEjIduKy9oYVmRSAH0QRjHzIuqHwPYZZIecz//unoQc\n3jeYiM82QyiLf+2z0FpdYDdkgoUcMWyu5bV9WiDJ91XinPS1oU+t+ty/ctIs\nCAohM5YOQtg97RuR8ddU7zMEmDhDd2WDbQ2daD/QZVWIiLUXI+dShBoNdhfZ\nITDOg/wrJUA8pTapvzTUn7LLnhxaWoIAq65vyIFlA1C0tOCLuMiFZwtWhzyA\ntqhMn2cdB9MGLRjLzq17GHa5CJrb8UAayQkDyZQsmyKo2xtLPCqP4SusaAKP\nbKzLMWac/HIYVJGVMhtgBSd3n1U3954pZ9lX657tIFzuH7NKzLfcPz5g8GJy\nlZcpbqPyszyemN3dEVFWfgLtw6nojZ+fy85+x8ZpuAkqB3q/iOTnd4UeAXhg\np3VTpmBd4eUzo9Cgo7HyqyEL1veUczjQdNDg3CFNbpqa/jPcctkVn2Vt+hyF\nmaDm1/Gmk9Mm3EMN9IvpsbcZdX4ZdsGd1MLbL+aIziaA1/+VC/znTNwjfKYi\nBks7DyFsVB60w8eHVGwL1ru+B/L3fmfrxHpjBfnd9x5J6qDd0KQ8ord9acmh\nYzBn\r\n=BiuR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG4WvSm8tXVPzARPuKtctDgcNoJ9/LidbfMxdhHkvaFTAiEAxajDKuLdfjYC8WJHsC1NQFkznyiRNqK/TWExPR6wYDY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590441025-3e80e0f3.0_1590441080927_0.5216063757133764"},"_hasShrinkwrap":false},"1.27.6-next-1590441134-b822c2d3.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590441134-b822c2d3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590441134-b822c2d3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-LW+7DbpBfCg8+Es1RGEzFptsOopqEBTRuNnJudn5Ld/vtGMU9We5EPcb9X3BjpdN7XdW8xXtjxxxXy2hbtFzrw==","shasum":"4dce17caaa0122f16afbbc79690d719125cd7d40","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590441134-b822c2d3.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezDToCRA9TVsSAnZWagAAUDcP/RARvob6gAiOQl9wXDsG\nVbVxmbW18PiF4+eMH3mj6QjBaLGrfodkmkb48JxsV8X7mt9vloTs807nPyav\n3m4TBCgMsPtJJQCHHStLZ5EoeGoWfmAxTPIS7LjD5D5Qw9mvMUmtG+RxBJf7\nUEfUBL2u2ci6oOooKkx5xVWhJJxgeiRkyk53XfByLwazG21BQEo5e529pqJ0\npSsxNtt2amKM2FYhdhvKrstPkHYVxZu0A9LhHQTI1+zvE2oh6wINMXaePvvf\nar0ajxYdYMk2KpdqkChOnexCLzgm8v4Z8L6CW2u7J331DqULdkMIqB2AFz9C\n3q/5AfMC7pJWctgDwxCciQRR7lpEBy91vSifP4UbMzjc1Ayq4EOigdHkuSP0\nWoU7SQ84H14tBr4+Ptbe3z+XSCmjGoQfuqb8ablVqwNx8GudOEbENDHp9JUY\neFFdDYacctOxChiN5/f0drL3s9B6SQsHUN0Q9HKvmGFUCXtWPhAXHMENa/0L\nFq7OJeteYhKJn+lEsQjQrtJ4WtvD1jyEur/WpxmNiy5OhgnwcT3Xc4pyDeKD\nawSp3wxD7KXkdgtCM16ZS7jtyqpde0C+qR9fka2eoWJOpWG8TnB4fIv9qQfK\nikFVgXubkwRUBw2jJVvmA67gMat6KgoHkQrgXOz791CEU17zflY+sMyoCB7g\nwWQN\r\n=KxSw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICdR8yhDrJGSXm5mvkbgwZs1FGBPHhKJ9ed/LtDtJtQDAiEAy/mG+L+o0yexq2rJ5U+3pc1kBNMpzOCCIviJ6Az0R/w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590441134-b822c2d3.0_1590441192109_0.6561398026795788"},"_hasShrinkwrap":false},"1.28.0-next-1590448226-1ae089b3.0":{"name":"@xdn/prefetch","version":"1.28.0-next-1590448226-1ae089b3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.0-next-1590448226-1ae089b3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-IGyajr/pKC2dA2Nwu4850aU4ZCHUgA5gerS2jHG3Avt1BLIhCnodr24bjkhxdK6BHWNUjPAxPRrcJ9x8WUdpbA==","shasum":"1462be8d7ea3f44d366fe744fcad2b23dbdde585","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.0-next-1590448226-1ae089b3.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezFCSCRA9TVsSAnZWagAAbdAQAJPFs/ngum8O5mMzY5xz\n2cy2Q43lRWGHCJ/ppLtPnHO3E5Vxbwe1ay0ZqHVm/XHu+jBGfWDRViUIN/1H\napmrI04dH9SJVO1xpXDMZr1cMMg6xWjBwz3qhsa+zJgZ/PtBOo+12ZXLrZn+\n2Z30KYoOrgD6zBSZUH6+Xa1zkY6e67U/dmWlieg2ZWYrjUDV0oVLFuwYxBNG\ndjcRUe/KkikeD+ra/HhkjR0Gjr8gA8aWAnABkOab6VTKMvrrGnaZTyBuOCgF\nyRMQGeAuTDH8WCGCfDjOLkQeekPwr0SlRvS+aCuiAEezey4P7P4ERy0jszTx\nxocf7/mOGHmRhgHlzxCU5MXURHTOhqE/8FwGrcLUijeibrxmGiV/Uy0StyYq\nSgQ/LSRPk8vkKWfK2E1nNdfaDI1bfbJlnuIYgcKozJxPAp+p6KMu+p7N8I/w\ndiXDGxcKroYICMAW6cbw42TX5WvJitoTjYd0FrqTshTjeneNpJOHSS1FlhiB\nvCIhuaIi8TrRbtD+V4FfuC/zcgpC45f17CvM65iwyJeWRpfP7df50CA1e8fl\nzvKY+aXS+hw3EaxBHKczxE6eIg7/kSD6Aq9+3ADd7gunr/VsQKOe0q7NLy37\ntSE1F31pu2/5gipabHdXxU4yQhysZhwyp/pNnBs4qKLCsGB0FvejvApi4WTp\nGtqe\r\n=oQXm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDS7daNmXvAIENAsSo6h21wOFwVZ91pX5a7beOPOcf5mAIhAJ2XJ3rINBKW5EFOBAMP3euHrC3FHauStAWMcar1jrVk"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.0-next-1590448226-1ae089b3.0_1590448274151_0.708435508649288"},"_hasShrinkwrap":false},"1.28.0-next-1590449006-2b6f9305.0":{"name":"@xdn/prefetch","version":"1.28.0-next-1590449006-2b6f9305.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.0-next-1590449006-2b6f9305.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-iZikKlIfRgo36p/zWjC7yxHbBerVO2T1NYGtRApOsXF+oISsDD90FFeO+FB8Ef5OaBfzauLKUUKrhgKYnBv8fw==","shasum":"06d2808182f36f0c7913db855f84daa77e42eb24","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.0-next-1590449006-2b6f9305.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezFOjCRA9TVsSAnZWagAAICwP/jRTy+05GYYSrCJ3ECJv\nkrqB5KYnZzleq10BDTMh9EXTgK0UMdJjh9pUQRGtKuOoBGF6VePK2OTbILBl\nJh+Z5nNjTMbrisRL6uW1tBh6P/WCrtia2S5r0akYA5eKmoGzGf2/wDWwQbGd\nShmIWswNekGkDLfWBLkLBhx0f6t+gmZyC18Gv5BN4rEVPRYk0nx7t1mNhTla\nMLXuyjtHNlqKwsDefNsePbS14S1Gxl3UJObteZmUW0BFoyeijDLk0Ev/YDiB\ntshODkEXhHP2fxrPmRHq64/CrNvQIeXYkMz/0c89HUxoiXBhZCL0eLEVF0eA\nglXviTjgYrja10+eF13meGov6+BptkIiX6Qs7gm765fUyaFN6Wc+HeQJZNHk\n6Q0udAlvfIQovOoE9iZWL0MpJXcFZpEsfZmtuXNJy5VvWtpRHk+aRlGBfb7z\nQKJc3PDtUGBu96NxykR/PIS/7FzDYDALCpCpceLVEcHmUl5ZACxY9cDoB39K\nx0PW2RGJAixpp9Rfgikw8EEOTevWXEg14ugxS/mvR8CihkZ9P2SsFiAl7JmD\n+YW6QCi92DFWfX2sNjcs2YHH7KHSGIlmD7WYAOMrRAkx4sMezSMwW8wMSn72\nEIhS5YxCmo379ZnDHqxinqJZzIorZDE2BMJcsEHjgnT0gH2HU5TtkpUlRr79\nxgRB\r\n=zjKv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkZvn2SJoA8Fm/V5YxUIuUfju+z58meqTl3sSUajn+cwIhAMNQVOeGmhLdfBf4vIboPG1ctA84x7VLALll9D+qQpWe"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.0-next-1590449006-2b6f9305.0_1590449059102_0.4992828566106169"},"_hasShrinkwrap":false},"1.28.0-next-1590449071-86e37db1.0":{"name":"@xdn/prefetch","version":"1.28.0-next-1590449071-86e37db1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.0-next-1590449071-86e37db1.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ZXGJbPU7qLSEToF24rodFpqHzm3WXvbFO6GkW1eTo39J7jF8XdVoEm6ozATM+2RL+nr6ggYcZ5hdMM1J6o7Cbw==","shasum":"dbe3a2fa7c7cac29d12290613da3f61a312b4725","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.0-next-1590449071-86e37db1.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezFPhCRA9TVsSAnZWagAA8QAP/3hQvZX4ZCeyxdm7yDvC\nA1Tu3xTcGay4GoPGZSVfyBJSgsjjLFCbOG+Qi3II3eFXBtwaOI6BEFOjmtAU\nYftQ6GhYM4p1zO/cj+IK2AE8maB9a9d1TeslE1uqmmH86JjNlBVgTVlqxoM/\ns8MCDIE9PCHHavtR8blesntLsvRzF764i5suPz8VRVrl9uVM9nJBbXk8zh5v\nHytkZg7H5BJ6jxuvV7IQ+UQcpLKHq7YJPx0gxg7jL8HMxObC1skDjMk/G828\nBr+47ZeQcFvPT3psAMzmq2UWPQBT4lg8Z/B6109K3kzAEKurvhnw3Xt8M5lf\n4dpYhDKU9by3Pwf9ShwrieTK9a/ajmCoVMtIBKGeK33bbyyFCFo6VEoUrhIV\nE8an4lZewR9VRotJ1RtNKVi7eMGYxAf1qZ3Vb52n7qhBo+30zTEEH+jj3Tq0\nafkG56dLJn0I1xq3mMeX6ibhyfAjLNTl69+rxoIUJuzjtp3BY9HJb8qOBruD\nH+iTaj/J7JGxsKjN+9422qI8kx6I34kCbBNFwe12LgyKWfjkIBGAulM+7jum\n+7VLp+fjCNsTiWYCCLMvTmjRwDEfcCaTQVek3WKTFJ3ppMflo+m0mR7yisua\n5cvHx1UyeVw+9xC2XV+iVlN9G3HXZEE5L0jmJcxB+rl7OlXJgAz87UCJcRaX\nW8Wo\r\n=XaNL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQB2owLSosqNi/tAF6bVZkBZmoR/GXwrXwYTUG6JKprAIhAI/9lmNkADazst+JGp5IAjzHdP0RgD4XWELNZB+B9Q1X"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.0-next-1590449071-86e37db1.0_1590449120716_0.12879232164619525"},"_hasShrinkwrap":false},"1.28.0-next-1590449481-04cf5664.0":{"name":"@xdn/prefetch","version":"1.28.0-next-1590449481-04cf5664.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.0-next-1590449481-04cf5664.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-3KskPh+yZSUh6+15r1YMvAtTguxow4cnKkzpbTMrWU/2oB8CO0SHqdHV2ypVi39pkDK5jre50BiqWyuIiKG/tw==","shasum":"cf2504ad3d52caa5ff54e24d3a2cc0c37122b31e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.0-next-1590449481-04cf5664.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezFV/CRA9TVsSAnZWagAA78oQAJhdiYtXaJmjwiHJWhxC\n8mHvGer/72BB3ROiSqSrfUcA6UMD5uCtPQMagptj+NKK574ONhwadgkpPDUO\nzZRTWT0quF9xTky1koSot1H/VyFwrD9LuA1K2M4wxUkaHmVYqZ8o4DZ1ZhfG\nMT1GstYLKAZVuIJnMP8Kh3m/WKThNsJqC6ng+SZ69HqdrOBgXftTbslrFXPY\nCd7KH6O56FA+EqpjscHeTfP94YGCxzcKJEif1ESIPwG3WaWaiin/P/radpI+\nM3vxgzXNVuLh12OOEwFUIhwfqi77RBPLWIuZD/0QVpCzXcgMISfRy8HCrDje\nrWdPNF8c97GTsjF2KsDgNpEcQwpLpreXGfsu3XBdzx5K9ug4ZxVFNoEibOdy\n80IwR54G579KnHc0u5O1BHhv0DwwbMK5+l4olN9rdXpyQpt3qFvwhObQqmlC\n4QDHJ6bAKaR2S/153F8ztNpAqo06l+rURBcZaw+NMVy5zoAI+jViVBSn/VE1\nM0YUbzPjIHewrM+yfs5CzL71bmNRtgkAxMh20R7mk38dZUUhxL2mDX6UtcVW\nQSHbpSzLsie/xSktZi5+gJuZdFB2KUT7YpiNWpWmbkpYxxk0EWPmL1Wuqlfw\nioKH6DAR6febEky6RzdXtZmSnq9PLroM9y4FQ4jm8INJLpQFB1mT/HKiP6wv\nPYBi\r\n=za/f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgj6LOTIWfxRCPQkrt6nkTEUIvgan/tC5PF0tSmAN0xwIgGzjBAbEZqSUxqWxbaVq0lpYfEfBRCJhHrWDcC03qTpo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.0-next-1590449481-04cf5664.0_1590449535524_0.4418442005961387"},"_hasShrinkwrap":false},"1.28.0-next-1590449949-895e7338.0":{"name":"@xdn/prefetch","version":"1.28.0-next-1590449949-895e7338.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.0-next-1590449949-895e7338.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-UBgdw3v3sB7kZaGvy76pwI1xYKfdohugtXsDg9IgvJgetkmsQcsqup5YJW981e8QQTJlsWTjt43wyZj/6NtKNA==","shasum":"96df24b5cb2df090acc2a9162cee34ef0df70b1f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.0-next-1590449949-895e7338.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezFdTCRA9TVsSAnZWagAA4WcP/03rpzq5JOlRAEK3jNdB\n77YA40Z2Q9MDzn7xy+TuSY/pPjK/RybAhh2tdDOyiIbVR8ryaYV/HLiDMLBX\nDPhJUPe+m9spBhIjACcDsWg3dispHsfUM6cJN1YijUhBavBx6AQf3kOPT5gK\n515oZ5toyMHadB81dzWUnWuYttiRYoE0v/tpe8BqgpaqJgr7V2uem7fXrIQn\nUiZPP9dBALw146bUzDfvLap//TT12PSHOziV0jPXvbcQGlo30Qx9WFaXsjT4\nfp+wwJIDa3nRQ1hqdzLMYrnGnw2JOL+MRZDRg77Mg7Xu4AhbiJjMiAjo1+1g\nqdg8LOh2mvFM640kFCAL4VHUoo3/oaX5Vd8z0p9PpSaLFGg3noKmoKoRHhA5\nRbfrkMKvsmXqA2otX7mH6jzG2goLz/JmLa3ALUIo0wawxvL+n/3ShfeRMBL2\nzBlrSWesaUrmrmQ2eQ/Cgx9OtFApwMLenaTKLF9g+7m7ikh5gKowOY/e9Bgj\nS0iNAMhUpLdNK6nRaDl7uRpYPPZFtK7kFWRRtBOMOFAE5/7PdgPZCgyvT1Dq\nVhiQ4525Np4ayVrStsEc4v5vph4pBK2+uCb9rC5wg+WqMNk40Y9DwCU30rTA\nd9sEuRP2wzTnbKFFawPq4t8U4ASQquFQ+unHTGX7JrYFBMAz5rEkkU7Fxo27\nH0Zw\r\n=GiLw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGnInA391Sp7a0gasV+FCYS71datvLbgib9Bl7HN9l/JAiEA435byINMx59J5FYs8132oZ5iaBgS4iXVNhUvQH15meY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.0-next-1590449949-895e7338.0_1590450003435_0.2548882911379715"},"_hasShrinkwrap":false},"1.28.0-next-1590450972-a672aa2f.0":{"name":"@xdn/prefetch","version":"1.28.0-next-1590450972-a672aa2f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.0-next-1590450972-a672aa2f.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-jPJItRDzKfk1nX6fCeSVrYTWPvoynKu3qFKD5lvx+I43p/EdPfJt7sckGuLUKvr3N0ANxl+/JIf/rjhyWBk8vA==","shasum":"f32517e1e815c329aa61df28d6c3451d2c60bc8c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.0-next-1590450972-a672aa2f.0.tgz","fileCount":44,"unpackedSize":66790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezFtQCRA9TVsSAnZWagAAwI4P/RngUeAhNsu5WcVD87pw\nYlcQYAuDeoM3CerBGSyzPD3y6TAksU1+PeqN+RrxLBccwaqwb9poizzA9B9S\nF7A+GnSDyNgBbgBjUJ+Nt2GEu9AV9GlixUdFFbgyMy1gGTuYzmieIR7Fa35Q\ngD+6Ra3zwNx4JpRrbARrPCaQarWe0xK8+t+cxNXua64TyygxR0yifbzCBKLN\nYjH5GGH6Kn9F2qeQsz4sNZKSIaz8I4qPJIXLrCbTMGMxoY2lFOeDCQVlTc2F\nUOXPaikabe6DegAIHDQV/CH02lbMqStbTULHLm9gVMfirs2nGKA48B70LBq4\nOqABkLQpnDjV5CNMIVFErZt4R4o5t+5VmUOCjDkahQVeK1N8dYTy9p5yhKlc\ntWmug7kaOVbWTahcKMcpSix72oZSQ19w1ocmxgup9O30zVqUoDZF8NtjxPsS\nxMUl77embf941Cikv/pLLIZ4XO1tjEm0dbiuCels5Qcp1oh6KCcMnys9tSKy\njqW2MMwjaZoupSsMiF/dimD23+ZEXTOL8Iqzjbp4cyBmfWl9JbzevyXEETuP\nCMvheATUzh0o29dFXX/mJalEHmKKfrwOliQVmal9ReqTJEcGda1JOpQmqcDM\n1kQ6Elhc/5aWzLnh+3hP3w7rbe6wxfQj5Zxs/NxRsLXGQwpV+fyOCvRapSDs\nNri7\r\n=pn/w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCd3HWzQcbYohzRHPsiiplbJCyRGgCZR0Oth0FjoA09uQIgPI8yyDFUUv2Q/WC0J4H8EeAc36bajLVi+nbbcCcUY9s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.0-next-1590450972-a672aa2f.0_1590451024034_0.6877446246702859"},"_hasShrinkwrap":false},"1.27.6-next-1590492763-7bd63ac9.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590492763-7bd63ac9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590492763-7bd63ac9.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-pmBXJB+8//SPWyioOBvO+WXIghtWGEzBdLT8E2a+yFsb0xnvA6gMPgLnjukVMuyqIxdZCRsKZJrHAvQJo7lZJQ==","shasum":"ee8a7a3ecde941fd602bd1f706fbe998b20c3eab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590492763-7bd63ac9.0.tgz","fileCount":46,"unpackedSize":75696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezP6cCRA9TVsSAnZWagAAf0sQAIgjTE4V5E/M6iXJmtvY\n1NHfbvu/100DypVULb0z0JFoAwokGWTD2aZIcoNH3T9n+Wn0B1i3vUOSru23\nXbvQvGak3K4HPbJ87QFawFhaq9Dv/cX+kgT4CRpdUnLfgLFegqbk05uXYymy\nIx7iuo/6Ye/OZtBejJQocxLQp4mxNYtE2zSdzsOhVlXbCljRJ9GJSzfGvxRJ\npHTG0h/CdjZHVx71fiTLGR9jzsAhVBKhfj4SAXMM0hlbqHvG0rCEp6VpwuAM\neMM4WbgCzOVRlG7wqutC2t6HFSF2UOK7E0VV4bfHxOcXXyDVPLyz+0xnsXYY\nuDA4E/ZUVeqEA89tYQhgMzNUvDjuqoQAxNvUxvu8vmd/ulEAvZTDAVB5gzNZ\njG/nRI/L7YnfBtadkoEBhn1EqQon2ka5irJmjgzWqbQNxArzq3C4T+FECDQV\nhe7JsLQmRNnbfjNfrsJEtUhGYNJzdZkSVjZjzfe4DtKOS0p1EcOpLsnIr0VL\nKYkzwVAPLdxbD9d/ElSmoqt7ctqreDichcBHnJMqxnrDzVqk6K3202tJivn8\n3NfEn3fiF5I9uumjO9K+J/3Z6U/pEGaJquo76nHqhOiL3zmTSte4fvQ8QFzP\nt3BQHoKzKCvxD4HA51QLO0OsUpqLzFwqsrXl62niCDBPc/TTrP7oVd9JU6AQ\nmtrf\r\n=+K7v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF3HVcZD41X4LcaJW46PCxbMG1OmDT18YoxvJoYoNgk2AiAKSx1lcPabtjW67VSwDXF0zFgVR/TK96PsxE7YUrodOw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590492763-7bd63ac9.0_1590492828455_0.6981351901537258"},"_hasShrinkwrap":false},"1.27.6-next-1590493206-7896d0ae.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590493206-7896d0ae.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590493206-7896d0ae.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YMpjv9ID1N5apfHslteAgcn+/0g8qD5gzETC+o0zJy08ZBfPBi2h1ezkzm2RtbUeHKId/cWqEoacerVLNQi/PA==","shasum":"72838fcd1ddecf0dcfaefbc76126b08ec4fd42b8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590493206-7896d0ae.0.tgz","fileCount":46,"unpackedSize":75696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezQBOCRA9TVsSAnZWagAApjoP/igEHCjOJzdUXD7rLJSK\ne3sbKlw9iD9s9LWzTCNa8axTMxwvYVwmqh+Uq3yPM2MGpkD6ABbe6UjUwzGt\nh74njS1RQLP3OzitVQz3Rmhhd+FBnZnNCI/ab9W8bVB4ajbruwhc3AM/hfF5\nPZwRqKZDM0dn8g7wPpl+YvTqwXeD1n5suZcL+VgRN8sNX/t7iIO7fIIFv0T2\nPC2DBDZBLRrFoUKBxy1eDhNwiI71HMW5SoEWNvEy+BbKYlzIVlxtWMLutazM\nJF6+urWlOSSANrUylbOGY/on0fDEUvPVgRtZFRWIZp7DfKbnyYSBgT0HSzYp\ny1lST6IhYS159gSsiXxJNMNQEM/ARuonGr7/xmpJ3x0rXOCscFfziv2JQpmU\ntrySWexFEpAiBVfI0bBRlg44cMoF9W97Ftsn05HFd3zsA7U7cN15T1blaEWO\nDd5Y9thS//qnmn9qmGDzbBC/SllDwCo2Lk5Is/0NatnZphzLoGXHUe6Mb4zP\nIo1ds949ZI9MpD+pNrxCYdLrzZPREoyI7G7wHl2iJK+YNMgOZdWpJHkGL0ZP\nnmj7DQUoAXiIMuV1AJCqCk74yiRze/DVsP0j/SfXLIKcnlbqpfQZPoKxjPkN\n/jrXoTR8YrAaQ2yrtIJ5Sbl/NzC2S4//u7xfIn6NfWNZ7QO7s0m2wCV5/kME\nBUkw\r\n=+pHx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF/nmQupJapalvG3XQOKRuDd7DsJN21nBwual6YHBi9/AiBgAiPb6Pa9zdMm0cErr27Lr036+NXfCb9X8SAJtZ2s3w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590493206-7896d0ae.0_1590493262280_0.5853736417156183"},"_hasShrinkwrap":false},"1.27.6-next-1590498104-a5483cf0.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590498104-a5483cf0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590498104-a5483cf0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-NCakbPxbOJjbpOtuS4RN9Pa2Lol3CF/eh3N/MZnYt6Yse3KbRnanF3YcSY1U2gEoilWsMhzr8KXPLWsUa0qSeg==","shasum":"e2492354a1cdc7ca515a614a6333fc8e21465c57","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590498104-a5483cf0.0.tgz","fileCount":46,"unpackedSize":75696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezRN0CRA9TVsSAnZWagAA34YP/jufqKwdyOqQaNQ7F3tn\nO7uFKuFgynRcdqcYRiz+0lQacoglsSulRg3CrVF5FFL/bw3v5jrCJKvcz/t2\ndjYSV7fdTTt0C6qvw8xFDwzwXCgui86Djq72TNk1ILKqSHhPWfavDmg4/0wd\niM5flT4TofJNksiyEYj88qTi8uCKdJdLWEeEvQTOPbBf2SsVcoV72+BPX4dM\n8p1EPO64g68bS7u0kNFv2bIKdPuOZsPpRyZMKo7uUPAGes6yRLa3SfYX2xJI\nceebLFlvkU8SnYT6VNrLGv48quQKJMjBINhAzPLhCmmxG3s0jUGtc4JOw/DG\nreiu0wugTWQZGoLcXHl2umkJiyE89p8/Lq2b6S1Y+3SzNyk1FGslpQUhNZyz\nqaqD+HZj5DQZnBslR3kablH/3YyZysimrnnlJjyIHgteLtXMBR/ykHHxdH6V\nEI/ISLvl38BHQAJjDA5fiXDB+/R+Eplki1SaQf/zKgbBzQC6C2sC3z2XQ5ti\nR7YpcBIwxM4/4pkSYA56bsJy47DriMo06qrj9cJo931UpU53DlAwqqaZuc7g\nqeNckqD+jzDK0shGuo+ShVfIDHuxnPdkDnjuZaEFoZvfEM+IAzcDFsXeVSmJ\n34G9GGIb27catw90U/Z41HTg6xRCzamL5EQiBS1fXTiFpnUtdToGIKE5Ohry\nZvXP\r\n=jPh8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+OufEMtz1piH14N0sA9EER8Gha4jHfu/zvqAWZ28bZAiB8pJ/BgBlo16elYaMIFbyM3W4oG+ZuW7Fl/wbxcYSQ1Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590498104-a5483cf0.0_1590498163584_0.3326350414227712"},"_hasShrinkwrap":false},"1.27.6-next-1590508839-da525856.0":{"name":"@xdn/prefetch","version":"1.27.6-next-1590508839-da525856.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.6-next-1590508839-da525856.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-IQcbCYSzBgI6Lb0nQL361TzPV8qNb99QldQMHeoQlCvOcqWpMLxtnaCzVL+3hF/KBefx3LOFuqx5fceRmq/3dQ==","shasum":"e21dc27787782653d134fb1de98a8108f242baf3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.6-next-1590508839-da525856.0.tgz","fileCount":46,"unpackedSize":75696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezT1mCRA9TVsSAnZWagAARR4QAJ2YzpHjQ7UxyLj8jibz\nzF4jOVRANZFfdIPk8sAoPmN9d7+dhGWUFrj58QJylNL2dS4h986FKZ3N1fi4\n1GK1HJ85/dZCW3+dWEP9+1W6lrRTpKSFSeEimP0QUU9I0fwVixtv+3c6JQIw\nO96SvnpuPsFm/iuLmB7dUoLQ+33CSy2EsFACBwESdQp16yV6juHXnZXHiGY5\nvSrCmNIAyMU0Z9wSNCPCxNgy4/bEM+xTA7XI7dIQnQzVCoDw9iySW7P1dBpf\n6AuaH/n/zJsLz12iWii4qMQv/2CnQy9cAX6IiHe2TPhMyWt7E6PdHJMR83ue\ndIEFC9/nHRwRUoTtmA9VvgTGKJ+LgJLhSmQl5DIyXNWSr1XZKDR4W0fq3Zmk\n+R+rwds3pMrsiYmy5LSduafke/K5VUHjj9TvJyrcN9DtJyccXXQ98wljjtDu\n/EpaixCgbFmatRPpmIZ0lBIuJFWP3FM4KBUn7RlESoWLRH+nu6DUh4rDHH5G\nXehXE1WzO3d3bRNP06Q8OcH6NXA6s/M6QjnYj1xW1Y5V7VrVGK64XXi/vF9g\no8QOs/LAt/TPzGWVypsJ5ZM+lAekJ7dZh4TQvtDRymxxh+/wt6bY8PHmUWMM\nRLFPy+n44yWrFWiCwTItmj6QSzyOT0XuR/cq1ybZX3I5XhHaIAOY+dJ7Xhxy\n7nCM\r\n=Nv5U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIERO3i7VUzNjYkUWN0t++1T9IAZHWU2+dU9GulUlIvq6AiBVokmLBaLOVMYaiCrGKuggUlek8S094Zi9bq1NxrN9OQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.6-next-1590508839-da525856.0_1590508902141_0.48820146437807166"},"_hasShrinkwrap":false},"1.27.7-next-1590508927-36f5b9fb.0":{"name":"@xdn/prefetch","version":"1.27.7-next-1590508927-36f5b9fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.27.7-next-1590508927-36f5b9fb.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-iM0ZCyfEZDQOxRDlA4X9pvn9iUtK8BP+BZAcuiBNlWsXgO6Qv2YZcqD+jqndBJ8mHALT0sw4XVH+N7fJ4qTxVA==","shasum":"32696abe7486ce527a94f473e1d9ac5f4d030eeb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.27.7-next-1590508927-36f5b9fb.0.tgz","fileCount":46,"unpackedSize":75696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezT24CRA9TVsSAnZWagAA6HoP+wdXOk6nJi4slAnUAFXc\n8b2irTE+Pt0E1Q770P9jEmo4Fc4varI9Gdi+3c/IILWpI6Cp0VUuNDb8P6iL\naoVxphBcmPSQpnoDk/uYy98/5rsQB2XGAmiCxazvce3XmFFdA7VBQVkw6pgf\nshoFVqbdiJjw1DhJtm6VRAdDZDUdDtCbDsvCwT1fXeeOkLQZtxzf1m2NX+M1\nZ7YBPMM9G5Dr3bbRIz5GwOsmNZqSk+8n++UG2AMq0awzzaFdBDW4qUpCtWVz\nF5aLZla6tX0O3iHOnAfElvuXKPngGILhEp0qAdrrcooCj0uro0eplJ91mKcW\nVGK7WP1qPs/eNvZNlkFQKwIQnp9oCKXxA+b5aHCeVF3Tk7octBqKIIJYu/xT\nNo7fXs9H+s9/bthrcDvTgtZdVeqiaK5zZQjjRmDQSxtHYFdspFJt4lXqIbm8\nPmp+D1n+P92KISWHM6kVDV0cUzijYP1a/sBDBFaRBYdJn/2nA/SXQzcwOY01\nUyGHxHmp+wlp821ha6he/MmyQmLHKPmwo3Z8TT6Qq3O2Gi3OVRYrANljlX3Q\noy2L2gPjpL8Lcynql/LNSv1EhlH1CIoo6LxS5HfFIo6vrGAS9GiWEf/rI+9g\nPshSge6kF4CKtwBnyEikSv1KQdaaGYxpmgfAy7jXHrw1s0FlMQNWTaGTrVNG\nQ0EX\r\n=V/De\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCw9hf+3tcPpV3RJb2TiosJ8RCx8DJ3dEEN3ua7NmPDqgIhAP7Bk+6w25IQ1RPUwHqImyVKZaoL4oZXO9brpJW4GGaG"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.27.7-next-1590508927-36f5b9fb.0_1590508984041_0.25048957528475047"},"_hasShrinkwrap":false},"1.28.1-next-1590509032-6ba1c4a1.0":{"name":"@xdn/prefetch","version":"1.28.1-next-1590509032-6ba1c4a1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.1-next-1590509032-6ba1c4a1.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-JY+7+8P+GZowuM+2uHtTECmgnZFGrMhQBz6lfA+GvAFnFMr17QTH/J3n9Ue8M72TICdnF8rQ+8f87Mipa07Etg==","shasum":"b6e20e1dc2f4447f608608328530befb55600b51","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.1-next-1590509032-6ba1c4a1.0.tgz","fileCount":46,"unpackedSize":75696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezT4jCRA9TVsSAnZWagAAG6kP/1UtAgs4HhpQ7QpV57Yg\nyulVJpxzOtZ/jBWpeNcuUfZj2+3u5HXdx82WWHWGsT7Fm4M2xAZ0Hq0x3M/3\nQRE+xIs+ZUfpC95nb8EHTI38Ym35sDRBTtduxt8kc2gM1K3+AiauZX3mnxa3\nacprfvjSd4edjC++F8/GjTkrsQ8h0u+7w2Ejg5zRSYARIfKDH8mjdEfeDCwQ\nWqrwFrbZ8uGaohXpd9V6f30aeYRqECkZYgRMsJlEotISGfjzT/VZTA2e0DC9\nXaB/wKDaHrr+/xHyDU0kgchAuZKeGwLzE47739JquHtzSn4M9g5XSpWtVe0x\nbyn2k0jiyQZKdRXk2mzlByZW4B0U1w8joqgcR2E/WYt0KpbKHma2CAWYb8wp\n0CEZrc+HOtTimL394vRhec/rgh35FkfxTZFszZiV98KSgxKffSP7amFjd5sl\n+3p3cO5gXElmd9Igif2/dkf5STAB97ltfqCc/w6uulMxq78uuHQx2rpRRKlE\n8QdtrG/JmMCbquJ7P7sNA4rV4XnuHqzL8V2gtdht5JZzYAz8Rvf9xoetn8hT\n913pwmqH654R+HYTTfByO+ts6zeGW0yiJPWXSwxE4bPbFdfSGZG6FLR3rh5g\n7BN587CcwseoedUmWi4sMRL6ISjVcJwRuuJiKEWoC2+EnXU+WGAuJ752Gy0S\n4dw1\r\n=JTRH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrfFUs+kPQSR/8AN8RrW6UWu6BcQ3KMKst4+z1drMSnAiEA7Sj9k9IcH7ckC/egdBmRUDa+e9IQVYhiXJ/4gW1czDE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.1-next-1590509032-6ba1c4a1.0_1590509090844_0.5516355355797096"},"_hasShrinkwrap":false},"1.28.0":{"name":"@xdn/prefetch","version":"1.28.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.28.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-49RgH/vAGnlU8/Wm4wdACUts1haEw1KruOUCMRmD1Yz1zhr+2cRjnoQQK/ji8hfB/lV/EBmeQAF+Z5Ey97xTcA==","shasum":"65c4935193be8dae1073123482198d3e1467854d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.0.tgz","fileCount":46,"unpackedSize":75669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezT9uCRA9TVsSAnZWagAAk/8P/j8H2zdMzi8TEuQWt0je\nh58qFfig4cXQ5Fo16r2QUYerp0ksAxx+WXLrkMtrFpEuqHqFofm8CvG4VojI\nvTrTticupY0NL8vB+uI7/FSjQTcgUUQOLdcXK5wnpSabR2Vj+qqH9AcBll3x\niuClhduVQaaDnEcHES0VEwEUopniANBCRGQuAcbtQQ8KyfeJxog1xkeFa/Mf\nLDMakk5zcs+Ll3NDnKD3AAi4L1lcNLHodj0KmGz5dW96AY3YoonVXa4789Go\nQydT13DKMOBKSodx2OmtSoZlJNgbB7BaWlHcwSQeDRPefE+5LMjz9F3iDmzw\nx3hvo/QA8Z5+WeTq2wiBiq6Zb9yE8Y/EybZ5aBjDxX3vgku9zQwTksQkvW2r\nY3fmbIMu0B923QhhvpgOc0Zv/56iQkeRDxh3HOwJSvjJykY1g6R/MWyk07O5\nFyFrY0Bi/CkFyBiL4WCyXILI2XDReybX4YqfiLctVZKg0y/tMKP9iEs+p7vh\nIYv+8SY512/TdudIGKwM+h36wIy0Vq2VU1XTg3s1qF6Aw3bqpE/F6HlAW0c+\nYZdEgvr/Ow/Jfd/CK3IRK8PruisMB5QwX2t+Y3pZFkOzIq/dYPrjuODezHc9\n4qz4EXx2Gj1R+4z1QuE5AEPiU99cO+/k+NEkkHqh+IJ+12ViwEkCxV1pR7f0\nWV6V\r\n=+Mva\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyfKV3NaYZxsTRQMHeKhSu+e9aWPYtAsBab3rM1AKAWgIgLF31J8jbVWZ1ea/UNGP/7B63QKt4+RuJGUjkRqjB1/I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.0_1590509421985_0.17713144014464954"},"_hasShrinkwrap":false},"1.28.1-next-1590511415-ea9f7e13.0":{"name":"@xdn/prefetch","version":"1.28.1-next-1590511415-ea9f7e13.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.1-next-1590511415-ea9f7e13.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Kv+skmEqNYCYxbcl3/KyDkCPp7SUVd+YIcO8ya4XkoPhagNtya/qWjE6dDpTtmJ2VTrt52ev/Bt9e9J67QD3hA==","shasum":"c7617a0683e499c35a1c6fbe55aadafde78717b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.1-next-1590511415-ea9f7e13.0.tgz","fileCount":46,"unpackedSize":75696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezUduCRA9TVsSAnZWagAA9LgP/3tOnOuon1N5qqHeVnb8\nxIsIO+o/7qgEfIfY3/J+fGODtR1B9Xd24DeG8FZo/qw7jZwfebc8ufGpA2xl\nKUywCOCLna+lfZ26UirDmEFWttMJZOYCsxIStxQ5lbL+yaHh3BIMDKwRFIit\n8fSd4cmETOFEDeM2PZH14MFpuRELsR1oidgiHt7JXe0bnFCk6wEkxPuzMfLF\ni4Mqv1SOV/DsRZNPCDi6sC1iJVRWgQcZGlBAUM4oEOLc5ks59jLfz6RRd6A2\nCNWVAzU475tdjs00SxfeMstVapGNhW+spibV9hF19jfsqXKlEt4wGX0w3zeu\njpnHLjcnT4Nb1w/7A5FXvN5OFhXbsSgFtj5ZY+whyaE1UeUVgLTbfDe2vx2Q\naEr76jcqKEP9nU+NQ6MtK7962V734m+eTp+PP3b6In7rlRrJK6st4ENAKJPJ\nUOKtjSTdEzA5Q2NPndFRwYeoBPc5hVx2/WPoqT3hXBDlPgXSkLA5h6rpoAi0\njJ/Bj17ZWhn57xAUTJW9vvSnd1lsVZ8v7Z/hEzShaS0KCoLXd7+P4PaXl6Zs\nFCVJds6X8ZaKTl8dLBvGrsSEVSFPIagsz9K3EDXenwaI99d/4URpNy7q1E75\nF8QjW8OUPSvdaQzj1WwvGZxFCNzCrf9zxdEkS3nqZgd4UMcOufUDV9OK/F/C\nyuO4\r\n=FAUJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICmAWKPnW7m6EqxFmR3JrhRUw2N5AnBVjL0jmNjhjflmAiBQYZaux6oyKsNG+as1aQDNhSG4N0yg6CCOx1rTrz2GFQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.1-next-1590511415-ea9f7e13.0_1590511469849_0.5372127406083771"},"_hasShrinkwrap":false},"1.28.1-next-1590514632-ac064b8d.0":{"name":"@xdn/prefetch","version":"1.28.1-next-1590514632-ac064b8d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.1-next-1590514632-ac064b8d.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ywcRdONDMeU6JHt1Vx67ac+WGggbKYL6NJrd/fDvEYAvbKZyYz52WNUIccONKN1szHWYbgAuqeY0rtqiVPzinA==","shasum":"f4fb967c65b2e90e73f1e74dee2a6fae16acf1ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.1-next-1590514632-ac064b8d.0.tgz","fileCount":46,"unpackedSize":75696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezVQHCRA9TVsSAnZWagAA0eQQAJHXXHWtxMZBbRyudtyB\nHol6N5fbAVMzVfacgticsa1L1DBX3PRrGjC0iphBGHAffqkRN+jB0BZhf5r9\noPkyiYVN0DwJPrJXnCFygs5xtaVMosWKd15X/hkuVPKFkjAr45aRJuuAZExW\nU3Qt+mPFjDV0QfJ0F5dEpORneuQ7OqFN//0wWaaPpuDMqhDfcfmtdAvbjGs0\nuGcNOGYtllxsFKm0aRkPDYYYjQTNEm/1viimS7FvM+f3AmtTHY3r62K97CdD\n4zi/Vzy6d8P5rZmYYEWDM95GS/yVy2XMM/aLSjauugJjHCYu9RevTEeouM9S\nD0NsLDvivLic11lbXf+iENL901FCCcoXKOu2OpU+RBcmhzd2Z5aBOW2gLoyG\nFz/dHzZIu3zc24A1xrVyaN4f4aeoZ3pYlH+ySrmc9an/M78SEjmK9+mhWgp8\nXW2LSxayRW69lezN/FiAlAIp1INqidkQf4aHKbiReUoZIIC6/1lZjKK+Siak\nQoVoRMpZkYNnYedZ9CclFqpZhHntkLbdb/dCWwkQO81cJXRrOlc7wgXEnQxq\n5Re2e/ailCxT+hyCSC7dqcZSDlcUhV2O0g1y0nq7U03Gsn5uyKGDt7ent2U2\nd4p9PLZ2CDBwHDVbLSDNfQxVU3Nj18WPtROKhTGnYJwwkQjxPy34RjJp0DBa\n/qt9\r\n=7IvH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBhe+2Fw9CntY2iZX/5ZU4TY33xWaJeeAebN8x0EOPugIgNNuXqOohwC4JJSNDYjkGTEehAgaY9JYrmZ+BROQPI+c="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.1-next-1590514632-ac064b8d.0_1590514695296_0.2717107936842986"},"_hasShrinkwrap":false},"1.28.1-next-1590517398-ffad5d29.0":{"name":"@xdn/prefetch","version":"1.28.1-next-1590517398-ffad5d29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.1-next-1590517398-ffad5d29.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-T3e/bQNarkyCwRmbmQDoZ7cJaJzSgBaZDXh9uj5BOmO66ecdqG+pUqrK5ymK9B2aC5HC0vAomNMvJ7gEXoKSfA==","shasum":"b6be959cf57e26c47e0c684b021c983c93850f47","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.1-next-1590517398-ffad5d29.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezV7QCRA9TVsSAnZWagAA7wYQAIxTabqWBD56uXxZ1nWO\n+jiIgiNNcdXLLJPIwyid0aQCD1DIeYiXKgS9w9al7zwKgOW+WDc2vQIp8h49\nkd0RvDmOwppY9ThCsqNWl0CnaS/Ru8eXJ1wR/FejePwBJAtA3RqsqL/7QKmq\nJz7uTCqYzg9aVz3NYHUuyVfYiy0tdGd2kiv761wIfRmD2jbKMU6N+ae5MF4k\nFBmttHs7Cel23ek1usyQtZ/HZDMG4WJY7twJkVZlN1dPEE+Yq3AZym6NW+yo\noNS3qmO/gPMXtv67jwLUf12H2PgItGZWqaTW7xsWI3hFh3kZC1yOOL+0dOg9\nS8p1tLLdKlPd7Eaj4ghrd1/tedtEaVr4fN3ImJ1BiHZbNt/UT5RPT/4YHP7y\nUSEVHExG5R16CHSOVWULZyWu8N3/Y5aa7Rja/p7OyLWx0CGKr6dpQfragZGk\ntThq45RuLbxSGbrqfIJtVGX7UNxtfXpzOTGAfPqrPE8FQNfEVZdBNBaDRgpd\nSwncEJresS2B2oqtHiQ9iULBBKa72hAU3fuyEyIYlEz8a9qfGB2gpPcTH9jQ\nF2JfFvKogyMDa8Dl9l+0s6xtPm5H13nYC7oESlLEmUCTOyPmCEwmUbVYrdFU\nCXKCNeosULymiebsqMx6G/CYk5vnS30jUcUPo+jIsSmuXYYI3ElMub9KlkTO\nZRmu\r\n=vwiD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbnBKL0wrD8O4/mwCx8B50h+0K3iMCAVGuXeOJVPd/nAIhAP4GYVMKw4jiSAJnw2zsFPCI4PLrIiDiXt80A5yf8jY3"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.1-next-1590517398-ffad5d29.0_1590517456250_0.6413186445228409"},"_hasShrinkwrap":false},"1.28.1-next-1590517451-70eda305.0":{"name":"@xdn/prefetch","version":"1.28.1-next-1590517451-70eda305.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.1-next-1590517451-70eda305.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-qAd7ePPDVhcTHZ/1Wuj1FIk95O7wxkaZ9REfnLWuEgZQh3IHVk/rECC8yulBa/EgJkq4S9vaHXd+FdI02zrpJA==","shasum":"1b7129b8aac983911acb57fcf96d0735f8f9a7ea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.1-next-1590517451-70eda305.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezV8HCRA9TVsSAnZWagAAsYsP/13Mvrz0Qqs9q9kBO+s+\n7567fgdnPck1E8mquv3yK3h0SqY5cLSPl7BkLM7UImUMUVyAsuxrLJvhamRs\n8piSVcfYIqTzT1SVGgSqF6dkUHaFs2kWF9DfsS3YT2OQoyZeL6lPT7VNfXgc\nKChc9xUqBNp8VxakxBYMSnQqn1JKyaED/kZ/riWJ8/YiRcn4uOvtpK/Z230W\nE582xYl2IgCcYOoKhjiIXu7btu455IbUtLKTr+73Y6Ja7Iomkjb/2iQO38hY\nC63XTY/fvw0IPXAePbCKV7q7aE1ZsqwI5bPvkzMBmLZLk9J8P1MegKRSjKSI\nOPM7S/M3TvaQXpk5f4ZjUqtIxUtWz4yzquF8S61QaFkXcV9i58KGb/OUwDtk\ny0eSQHow3JHcgXQddOclUd1aBYK0NyZMwwh9xCZFd/oElHATHjO09ABAXBRT\ncQ+yERUhqBvUSQXLa8uvPwAsYTDQrPSOKLFAHKwT594EFtylCcaA+c8oAiQ2\nZvGkgcC/ZXm70QAOrfvQYM9fvBlT0K5oFHWLzJsOx56qQ2/XxiB3+VZkqu6h\nTnowBo2TSxfJrHW3bBnRmAm7jDduQ7Yaz9Edz1Za6y087Fe8y2bWL+z1OR41\nHSp0EJiSYLlAJs0GMLWhVC1ky57m04MHXL0b6qJgytyWU9WkkAIspYMF2Ovw\nHItW\r\n=I43M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENDcR7oAFhoEr5RWbj7NVoCboO72OHr2mE403XMkhY/AiBJcRGSdw8p3Qe4g8c1y4AwM64GHvBWVQPRl3UFZL3LVw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.1-next-1590517451-70eda305.0_1590517511085_0.3785024876331824"},"_hasShrinkwrap":false},"1.29.0-next-1590530036-0a284992.0":{"name":"@xdn/prefetch","version":"1.29.0-next-1590530036-0a284992.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.0-next-1590530036-0a284992.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-H6CpDUycHGBQRRvq9tzJlLn88SXZFvaqEDOTMMOS5It6ogYw+7Fz+/1GGgP2qTog90PGx9DruQO1nged3a8XIw==","shasum":"e8eb228b0aa9194785d56b4e9d5135b593088d6c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.0-next-1590530036-0a284992.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezZArCRA9TVsSAnZWagAAMAsP/1hfguRl+1J6AsDATf22\ncbHipt1km/7MWdm2QIQ09XybeOJj8QqhcyhxiODkdORow74leKPxQYnyo73p\n+rnTOk2mB7RUXOTummiLzw8MIEFYuTCP3Qpz3dOcK5Afoc1kLLSImo8SK3dK\n4BziBQamNHFiMiPnJSRuM/G9fUIM6fg1Nrj6vM0NkmwX4GMQuhtwVYOsvbOG\nZ2V3DcRpZWLVQjHomauSvcj81YQlXXsuVLc0biTPECTUARKhDNICP45USCRl\ngyp9IdPwR1FxHtyMpdVMnZpcaD8uQtEDOicAJk+G0yK2DonYQiXHbM9V1Wp7\nn3gK0j5DZ4I+7LNwCu/sS9SnthtyZ9z3IcuqkRw2h8M9TvR2x/Cu3D8PzpxR\nnjeQnrjvBCOR7UDl6MaNU9o0QGMX0HVe9+Ri9BvnwXOY7S1pFJw9Ox5ytrGP\nD3lk6AbrnNnx4R0Y08sR8fwHZBAXhLZM8nzuFk2mK/OJXC9dxcuVVObt2aq0\nQQkD+5OJCyASvvcYTd4S/juki4ieqgR4QBT1UvV2IYrRcUmd2ne9lwCPwZRT\n2iD5dW7LngrKmJDHETK58w7rLnbFCTHktPyfLU4oHJUAOhoJ/kZ6lE8sKGVr\n3IltAxC0BImwUhdk3b3TSg41jnF+nagOsLmJcWy5F5mAQzCFPvSZHA97xl7/\nPG5u\r\n=akkJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFp1ZxOHgZlGrQpS7+UwuMRDYd+Qyn/EH1gNxPA0jrwqAiBNrAv8McIY6p0WHpQDIh5VWCCUkI5At1YTPbLc1WifsA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.0-next-1590530036-0a284992.0_1590530090514_0.8966410773401428"},"_hasShrinkwrap":false},"1.29.0-next-1590532441-70a3b072.0":{"name":"@xdn/prefetch","version":"1.29.0-next-1590532441-70a3b072.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.0-next-1590532441-70a3b072.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-8EoArZJdN67+zKYVEyXKSj8vBG/eAd2JUqjwkDitwAYQ/8v9LrPnLq1yrBzg5hUYZSawkGU8cXAkdFbwDps13g==","shasum":"dacb3b6684ff6d5b3b881568732abfa8ba443fe9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.0-next-1590532441-70a3b072.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezZmVCRA9TVsSAnZWagAAutsP/2TDGEDIqMdCRoCulj01\nYxGC4O2n1b0dprysgnS9nb7uWIdwbgvCiMOnHh8D6gTX6vANe+IRaziAtt6g\nx6win+p+dsUCrt9YiVxIsV/V2XPx17xO3Kx5LdmuSqxu2+igVWJNxnGwYihh\n1SC1Gws/QWKlv6UGJjTn4U6OyPtiCuDB6z4gwFC5Dh97S8l4zbzwyVSNGWmu\n8M278yxmY5hQpTYTx51k5IXD5r4LOYXcv+gB1LhZE9KwefhZzO2YKlxYwBT2\nk+VD9+rGgVtI18aPQBHMXzJn3ApUyGL7Nz5NdrzyTYUQsC/zr0gt6Sc7ENRe\n6kNtrqfpPvpRo57qnW7juN5rlc6VsZDDV9RJHCLEiecNL8tdsEPMjGq5+ubc\nh4EZzp9Zi2pO41Vwb3Ukv9qhCevphCPLlI57Pit55gd8FxoIBDXy2xzQzb3R\nyNSu3L0KncZZzyrL1+tAccmg63F9m4QK3J116sjKF7JupNH9KqGKiuC2b1VS\n/3xMjVPSNFZGmMiI8tHCi6BlVSdhDjgbyTvCOv0koSYOt0tIGDXwMdgb28tW\ndMyOXABP8C2Rj3Tjv1ovTP81AmoGQhM5I0RmJhX1JOMB0hWz+HQJ8TD9lI+X\nhHC+ZeVt6kofSqhRkR394LN9NFvlwpHoNtZmo7t4k49xkKuaytvPcNybqLHZ\n0MuK\r\n=IEDR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/dmUDDci6HDPmeoEh/m7OvnVEZ2kqMmbXamZACjc45AiEAhAa+8k67zVdC0ssOtrdcW0NLEleMbG/OG2GF8rnPndo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.0-next-1590532441-70a3b072.0_1590532501020_0.7950461205658943"},"_hasShrinkwrap":false},"1.28.2-next-1590579745-33aeb253.0":{"name":"@xdn/prefetch","version":"1.28.2-next-1590579745-33aeb253.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.2-next-1590579745-33aeb253.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-rbkeHtuk3isXm9P58te3MEVLbrP2ToVuZ5GR6sBSOx2mVnG3bxtrMzWvTxZ1HLTdwZt9Y1MIAuI9lGlZ3LkOTA==","shasum":"0077b4a5fefaebcc76206629a5463109b5799c50","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.2-next-1590579745-33aeb253.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezlJjCRA9TVsSAnZWagAANSEQAJGJUrLM1HVZXzzdVKOk\nMSiEE+nUOpqITssHxnCB8lF4Td7gWiYABwC+QCAZ4btWXTFt0SqvbmKC6dbM\n6VWuIj/QhOAS0CUtgh6Q9p6UtTPDRq36oE2T2jC2IM+t9AWnXCp0V3QiDUL3\nhup4+1GNisKTLFQsA0X4QueMGblxyDX7xMBWWxaORTun1HlhDna7aYwi9wfu\nWGSPCwbn82sj/liB+s2dnRhqmTethHiB2EFrGecsa5GANyeYBG2O76IByDDD\nNvZBPnwpNRtgPqR5VbPg1IlCxVrmipWPev+qaV3KVaAbRu4zmpuryPkp5HKO\nT8cXbiLRDs4AMG4y8ghdvcbhWfht/2Cfn4m7r+JH1gPnXSKAzIJeFel61DYC\nXxhy/6FFGm+EHB2wqbWKjF8R6YYfwmS1q9Y4oQOisktlwcY7otTaXdp44ugM\nwt0KZCiThfl6miHgP2OSd9F0uoblvRLPRPqfbs4G7EkVbYen/8YyS12RgyoO\nVaMmCzXaFQOW6mxe+CTNABYb4aUOB06YM21xmEEZxTQ8xSYTQs6DIo+Er5Hn\nEl3/CUIOLNe3QopqnCn8UgTPbiw7CUp4CsCXmA3l98WP5jluCAFozh9gsG7+\n1Mxj7Rdyo0wjuae5acsgSauToIkj1XNxWxVaKwvIrTGgtNsoiN8BhS2lmJTc\nfEAG\r\n=JCRX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDZqJphUI8Rm8x2vUVFt0cnr9YLkZ1otUBJTkvORvfkzAiEAv2oDPIGcBZNg7Z4T/Pt/WYjHp+pHGHeSZJ4rmt1N8lk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.2-next-1590579745-33aeb253.0_1590579810703_0.15510760192282302"},"_hasShrinkwrap":false},"1.28.1":{"name":"@xdn/prefetch","version":"1.28.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.28.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-VH+cW2h3icRI1pQfwrbxkDtN3ELipBrrLwXkDpT1c2UUrKwJlizAUQfvsJgbBqHbHpuVW1Iy9BNlP0uDGFO8iA==","shasum":"dbb1f2990e84863ca0cffd7b627cf4d47953a335","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.1.tgz","fileCount":46,"unpackedSize":76565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezlORCRA9TVsSAnZWagAAm7sP+wYzVM1JK7+/9ODbXkwq\nyeVp+GHztC9pg76tTK9yyN/FZLrrgpRqoa9FX+D/kS0rzuSkCW2rwqP5/bhB\nnqCMy6kbDMul3T5WujyPl7zaBGDm/nS+h0qnULVh26a0UiE1kgHHtqLLoBXo\nGs7tUodwYXBQjwlRfk+0EU1fy45Tvg0EC3jQQMuOBUDhel+Irmj/tIJDPBdT\nYg6UNodEFOsjxAHpb8kMCUS6dppaQMXQKhIM9kvkESd3R0Rq6Fx8HlcPYoIs\nT+OparjJZVcMhaTVL7t10/UJv6IFIizTA8+X3F+cXdWgEE5KSqH6lk4mwquu\nBPND6U7A3+b7dAeQ724ZCnIEXwzaKIMZd6SSHjixK+nnmguK1O37v5/Cr9X8\n6XMvrh200MpwDpXdmBp5k9yCEpuK+AMGS+Mi0dzo4zmDldzESyg8ue4s6pD/\nxsRCD7sdGxm4J/FV4MZqtY2KW1fqOfCuoUVkDs4ZLT0SKgYsBEdPlCHXbqi2\nTQKl7kf2k0uzJIuU2QBKiRVwH9Mg2Nr2im46coTs6Ie/0XeGoON3MUM3BcKR\nISpwDn3LWIKT2vUuVgHVCGo7KRKbnoue9duj+VDndFL8Gbd+I/ZBumyepQwE\nAkEwa3qvqrqIQRXcROzrEmXx7htcykadIRE1ay1b9wQoJzUZBSbYbF5Rp0qi\nNc+4\r\n=znJs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfKrJ5OOe2mEP9vEDAKJdbbQza06R0X6utevk/W/uhhgIgIuijaUD/Ci6eFIU5oerdx8EA/2vmCXnapZz4QC8R4qw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.1_1590580113037_0.7317146352360848"},"_hasShrinkwrap":false},"1.28.2-next-1590597417-c9023c63.0":{"name":"@xdn/prefetch","version":"1.28.2-next-1590597417-c9023c63.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.2-next-1590597417-c9023c63.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-96d5+mJuDTzyeE87fSe2PdzPXvUPQYHLCAr1ULttgsY9RspLj6eMN3AQFkBC3r5zXZGJR/5J3BHybAo9kU7eIw==","shasum":"078edf11cd17780834a855b592efe70bd3ea8dec","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.2-next-1590597417-c9023c63.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezpdnCRA9TVsSAnZWagAANK8P/2GWODyKnILUNAmL7Miw\naPnC/NlIRekbNTYyCIutS5hJqlheR7DcOrFYGkZLVAyWuGVu/dKmN8ONui+X\nSB+9nsIN/174smSWzbnY1IntpkUW9rX76d9maL2NE6jkLcHJUlXw1MN+ctL/\nRGSyXUyyEXtNgeTO8GgqDIp/u/E9dTKkql+c4ARX8KXlx3it69ySND/nXlHd\n8U8k7VIpF4ueIYY8WavhtrChJASj4p6GKLx4zyelM6X/wJcxiLQaBfolYRp/\nzSJ3FIVRhWretskQfDJRpcPflPI1teS30g5b+c55iiwtbqNwO835jlScv0Ud\nSQSrcD23f3rg09pO2zQcnZnJ6icbkX/TZ7XBvQ54/jepR3HUcItkfrVS/pKd\nW7ZFrmusrGbu+Z973/cZ03Rwk6D1ky56fuSGTY4sqGla5cOfgDmmgfPXCDAH\nKD+E7ATnoJvuGJdJZT4UcmwkOEjPR+2T3kiPAcdl37lfcoku60QBUI3OUg50\nbH6NWF6l6ma4A4eEH43mg6XJdV4YKm54lnCtgAGOM/pXC9o7AgDrdwD6rz56\nlajNa522kiwxl6OrCGxVpIZrYI3gWaEdvh+K7ls5hZJ4bfFQyhmhoW8ZxuBa\nN2URg/RRXwg3udHzt5CY90P5k3j7yQWWsI/Kq2Qy8478cr/WqEe7xBdqs4Pa\nCV1N\r\n=DPsR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB6/sWnorjmUA10dkGqkPmFG50mZtCGH3BLUt26PTaasAiEAkG+uvAxEFb6epAepRQLDv+M06avmfPc7ZMmyrL0pI00="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.2-next-1590597417-c9023c63.0_1590597476707_0.8701336938983957"},"_hasShrinkwrap":false},"1.28.3-next-1590597421-ce388866.0":{"name":"@xdn/prefetch","version":"1.28.3-next-1590597421-ce388866.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.3-next-1590597421-ce388866.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ouxd5bBuLPzpPDEgL3hC0VrpXuoozbpUPFcbIGqtyU9SptNj7sZ3J+VzfjBWjoCTYx+CIF5g5K7i4HBx8i141w==","shasum":"be3f06900c2e29b5940c115914051b3077132dc6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.3-next-1590597421-ce388866.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezpd6CRA9TVsSAnZWagAA1tsQAJ956tXKfGbaR35B9E1y\nPXl1e/jEpOkYa0RZCnDOjiIHC/5nLJ5zncbxWcejZWqq+yTJ/Taz3OR/b8Dq\nQdu15yQQOEHTOGxOIhpLrDmPZg+ulGDRNBrvFsoSHhCp1tk8SZBAMQmcci82\nVWUlObbO8E15VGx5p2M83T7YSnkLj0LHmteqqgspXokxbJo4k6sNZPoT1kVx\nvByQJbsQRLERY15+H8IXnxJWOctOZMIORZi3MhEY+b3N0VfiExt9/tyRj6p1\ncTTVKFyQqsgNdNdnbzMTuJOgqr0pQj1zfOhVJnfpeBV9LI8jPpdt7A3HjWWP\nsBdOyD6PkLa5Lkln/rL+ljacaf/J/h5ucrc9YjX16VCNSkhfvgG4Vt1ERdz8\n5SoojUMWf5fSCrTvLEx5iF36wySdTQzypS1+lSKavp2TmYkmMtculFst66jV\nAuDh3ZbuO8LG6+gBWVv/4yhTctUMPX7WNyvKiPnwEbhNhqUWg3X/kp03r0Yi\n6YjY90d8jHYw5ZPoislCw/fwD5GPL0Xx0TZeLXsxg0+ILsnPSqSnLmhGnCil\ns74DDw+kmahgVXcyrL+5lU7sRyT9cqkeyIkqKfiBGH0RoizMuEVBhblpVjHY\nlAMsTYpkS+ErkHbemnJsjLcXBKXBjvzqncSVvbZTbfvFlW/fZT0oXf77Lpf+\n0a0a\r\n=LkCk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF6Ko4WPmBy+g2V4LncDVRYFsOT3R8qwEpc4QgvVMyYBAiEA8bHLZ9IlNBK+VrBS7fII/1ci1yByvzQiNjfOJMlLmVU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.3-next-1590597421-ce388866.0_1590597498198_0.3993584030742361"},"_hasShrinkwrap":false},"1.28.2":{"name":"@xdn/prefetch","version":"1.28.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.28.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9Ubyk6Jgvp++GVhSCLBb90ep40B09hQdQzbwD9UdZSJwjA+ZewGHFxEcNSJej3pOAmLywwM3ypPC3GC7KNTdpw==","shasum":"4346a23f31ffb91ecbddc2d385a5169251ee561c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.2.tgz","fileCount":46,"unpackedSize":76565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezpiDCRA9TVsSAnZWagAAy8YP/0VKpd6ssA1OFegyxaz0\n3k/HgIbDJ95MO7drRwSV+IOEcTzfVieo29LPFwid9awgdZPnWgMYjf6WTDbA\n2ZVgWYpJJr5S8FVUfwc2B4JHyO5JV6iHk3hPbyp/v7fserEYJtmc0RxrKaNV\n0vc4i9RYBCF7463f0iJruyXQ/LMLlZp5qPp4TeMdtJzmIYZ3h7XdeiFGJX3x\nXric4l0GvfsfrG6M0PHIDev38q1/+P0ZL7MNdenkUxuT2Wv0Y4JB4Y4S3IAc\noztLXzWV5JylLncQLmWW2HtVZZXsZJ4ixrvw2FgtdCFdEpi3Y+nZOYaskcLQ\n5XN451U1hLY6BvxTtlIzOJG5pRutXolLs/guVZF/9M75uRT/uzHHv1GF5BZB\nvALulKPmClmAj1Pz5LBvBJUvsHlJhJq2WycmZPsCdQHOB5kOgi2zPf61tMuu\ntjI3woHQ/rz8Pf0Ui7lGXOReBj1yyFClPc8WUIUArs6dWrguMv7w0NJSCbk9\noSTk6wif2EVSHPB4bHSS0nl2dRpPMfeC6AI4Ga/hCQxR3u4UiZKfyXPOSAOS\nsBab3ewNREss4StCHPQSFNH84vOCPYDI0/rBH63ARmC8pNSGIW7qidH1Uorn\nRrM/WbuLOivn/GT5TJfcyj1/fwsKlR/6hQ9uYsHhCP1F7nCpKEwQ6uqdEeg2\nUupd\r\n=1b4r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0xMlH2JBJVXBKIL8YPpP5YPVRTLNc/yw02bkbjZiNHAiEA3ufl2uRMoiIaofJuuVze20oCy9aA0dytJAs4rSmw08U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.2_1590597762806_0.35245501255924494"},"_hasShrinkwrap":false},"1.29.0-next-1590600687-db417949.0":{"name":"@xdn/prefetch","version":"1.29.0-next-1590600687-db417949.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.0-next-1590600687-db417949.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DQeuJnTuxQJq6U0JR3JueWtxPTRvREX8ET17bBZEzp96cquaXcVZHBkINzYVmBkllxCWrpyR6uRPx9aEqBIqew==","shasum":"64d8e2840f17245bc120801c7e54cf5329631774","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.0-next-1590600687-db417949.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezqQnCRA9TVsSAnZWagAAo8sP/10sdigka1unvqDt45NF\nzgTBEwZ++U2BUXbC3v5euk7KGp+FzimVhqZNpG4OpOWpG9tXqeGgzz23+uYL\n1BILOEAbEuUUZmbmeZqT/OCNkzZaqsMtKqEHD/kKnofFheyc9xd6HygRhfGK\nO2rCaBIlgajPiPewKlKUIOjIM46OZaDhepzQ67G/avmWN7iyMEWm02Jk/4QV\nGa8i7xHwgBojg0o9eFE+H/jjTJTHnL/6q0CDmdv+FkVxtfjdjrUYselQUbPM\nZa5RP0ZJStYV7Ix/Zs62+ySDi5f+bkQ8Yos//IWvAU0BexO+3B0/3ZtQCBN1\n5bve2dvCJhUcXLa2JHZyjBJNd9LXsms0eSS9s3D7ANEqL1xEsad2gNC6ddnb\nYucHh7We0Yi68X++ZlUyE0EJCevcq5TEXUDmpKteGifJSGD7bXv8lWMrd2sQ\nN/xcEqwxVe9SPvm39vN2BDc65UA1sgVfUxaOzh1qv2s7dsoo4pVlaVenZxuj\nltXM0pD9bL9kAkgLYKz26l2MMK8zAEiwWBrgJe57zIdZmoywoccXzppkdFJK\n/uOe0vc3VDF+jZfibKqxJPw9Ja9sAxng4i0dMQWqAwf01nax9JPAQwGiuSsA\nUlmf11MXHbeTbcRTXidv7o7rreSIMdFV2pNRdBaxdwxU41vCFBISHsX8HZqz\n5GjD\r\n=fPU4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjjpHfu+FTFrSxs5ACaUcSLFRTU2uEvUR2QgeIVYAzmAIhAIiAi3gtM3nt/qFx/NGe8RjKiNAD2Xi5V2NuWYqlerHu"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.0-next-1590600687-db417949.0_1590600742872_0.2103014523484943"},"_hasShrinkwrap":false},"1.29.0-next-1590606876-385dca94.0":{"name":"@xdn/prefetch","version":"1.29.0-next-1590606876-385dca94.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.0-next-1590606876-385dca94.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-rhlGwG2l4X/UomtMwCzq9UACU9FkvrTB3ZMs761FYVt8o6AnuZOWNMpWTXwZeCMpMtvGbxfdPF5Ak77t9YqiNg==","shasum":"7af4fb2aadcd3c0a4026d517098e88648cba0d19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.0-next-1590606876-385dca94.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezrxdCRA9TVsSAnZWagAAoyAP/2OgnPBWBOmT5tpqwfd8\nuVHXv+UYDVoQrSjBr4jSND4+NBnAei0+y9viRk3ty4iZRXt+JgsOjZR/1qVS\n/d9vZuRmkHpzuy640c20UqxGlVc73P5zqqGczGPyBT84uMl+/A/zsginW0YL\nZJuwaNLjU0PHzhQGlgV5C3CAa/oBaKTnvplKH5sfE423/5NeFzHuhJzPrNvh\ny0oqcBOLo308sZw0WfF77os7a1T9gL5c/gDKNeZtRSjjHuyv5pd+PyvH7fOr\nnPQgu/xoHQStbpjPu/F3ZOilQpTHYwLEc41UloXPuDTfjYfh6i+4t6CATchh\nhDxFDYltIRT6SDInDNkwZ6ngw3jh5aC9cykyy/fxrAMFZKnw9AzUF2BZF3uC\nlghEgTGNDO4ddu5e1agqUc5eCO83lLaMMRqcloOBd/SUgTb9LywjmxAjSXSy\n5cvWXwWbFSwhUbp1UghSddHRP0lyIPb+5pHHwjIhGLf4LDV1J/bJTAeuz/SU\nka+get4MY/XSh2lyESjrPuxTL1tGEYuBcBQmlJPp4uspovddgbQMyA1cMLdL\n4IFNhynFnq0OT0SalTZCCyuqegZzWqj02PIC+j7vvZgucCzwYDCq3JOg1SCc\nScJdOQoKc2Hk8gcZpsVELkudK7NwsVEMYtxK0pMOQJID5yeYKcGL4H58vQy4\njn0/\r\n=pACT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBSLxn91pTmIsTJY4Vu763bruUNhEg+/WZ53eUu4NVHAIgS0EswigGSTZPoowwbsp1e0b4I4GiuMiD+vO1n+EZKDQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.0-next-1590606876-385dca94.0_1590606940561_0.2955876536575137"},"_hasShrinkwrap":false},"1.29.0-next-1590613190-2c3e1e10.0":{"name":"@xdn/prefetch","version":"1.29.0-next-1590613190-2c3e1e10.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.0-next-1590613190-2c3e1e10.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-6GkCm69tknZdZvgMInWT4RoU3g2ZRryrX/FkPI+ztXFfcGUO3u2ZNXd0JtgRXSssfiPfCNmweJz3Ugqs6n33tA==","shasum":"8223250af5f60ff95fbc423a93550d4b2e6592c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.0-next-1590613190-2c3e1e10.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeztT5CRA9TVsSAnZWagAAeywP/RalxPxXcV5CmBBa8VPf\nkRiroNQzZ5I5I8EXprsQYkXWgC5jpHOde6d+Ep1P2o5l3ibkV6RnNyUGbBWh\n97q+1gyGKRY+KbqlexJVO4grS1Zyxq5vxyjQ0G30odaSZCK1grGHl0DIrPD2\nsI+W4dWVliBrGIkrim1gR84mZHAevy22VLZ4WW88fi1zugttprs5GvfxBX+v\nuLAPMbBXC8TQYnaRDJQHCEJalNBTQ69/3fsaV37vMysaRm98XxDoiExWx7zg\nttUljohUbNeYyslAAxmJ1HYPJ5Hnsclz2gAtNKLsVT/eEyAmnIIxvZk58RF4\nAD3eTUK6Tqk+OfqCVqNeoONy9R2Tpu9ig1XvAXkmJr7kBs5uX8Y+/no0CDHq\nhz5dzEKrVe8tDwNpikHw7dZtp1ziyzbKmN9vSYu/BGCh0lHr/M+FjmSsm8wQ\nk/ubhkjaSD934TBKlIaV1kgPlVh02um02I6lAB9iAmzDQMpRlDPZmPB79pL9\nTDzjUqjQoI1wW+/kJd9u6LQLW6V6DINuG5WgtX4BU3P1y88W/w6ts+npjEtP\n/s5BYGY6+ZMCbt19szpFWNJk24ljR4d/o2Z1hZt9wP6x+9/sH6vf45XgPFNR\nR6vZuCemCX803/2w+vSDd4VMD4lsl6GO75WP5SHNqA8bNhN9+ph4LS0ZbblN\nuGo4\r\n=eoBU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICW7YsyWn9xhe03u1rWvCED9Ept7V+UNe1cNFbbsob+iAiEAzqQPjEwlYOFrjbuFFYuWwJQVx3d8YAxVu7c2ZRBOLdU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.0-next-1590613190-2c3e1e10.0_1590613241358_0.42903614297927395"},"_hasShrinkwrap":false},"1.29.0-next-1590641329-5c9e58bc.0":{"name":"@xdn/prefetch","version":"1.29.0-next-1590641329-5c9e58bc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.0-next-1590641329-5c9e58bc.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WPNecbAgLS/MMc9kqA93ZeFEqXa/zMiEmcjz9oAOKFYAiNX6LMP6JMiuG8HDpkDWgU+vlybS5F2kk/XBZHdg8Q==","shasum":"13ba07c612496c707489479fd3ad35a1300df859","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.0-next-1590641329-5c9e58bc.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez0MECRA9TVsSAnZWagAA+WIP/1SOCwACvc6Nzuvxr2OM\nlz/P2m5R96DFxELvisSi42/vs7GKsCrP/D3mEfJOm3icJGrjNaVXHYSb3LGR\ncjHUN4h5fEJWo16fk87t8XxcrlPdXb32OBzTjODcBhRPB8mvcafKvKWihEFg\njHm/kqJhnAONBuAUWq1FxI7OBvhDotNF3pOx9sfy0IoD8hNxnboPnriiFoHK\nH2fNgzEqhZsgoGHVJfbs2YjJsEpyONpSxAU7cbJ4ta11CoBAXeYwOUlyTaA+\nPzH9fyh5ArNwmTLZCFQLEwwiJsGBodArVytzOQOdIo8Ma2dxfOxbKoeUaK1b\nqsroHmmO3lBAF0jihipYCOLZrY6IIrDlh/H8UrrlxmLSFCQw4aXHOiZua9fY\nk0kUEwUfV/CEy8aarN7LrN9vBiWRly/TUjRCRV1kjeA4OuBMxxXh9yG3E6dD\nP8/KkEgaeh9IWB5F4kNmMawbFQ8GiaqD8DjqS9Mx+UF8YrFcqAs2wTha7C4X\nm2LnE9ZgTg/XaxO04/7FZLLVpSZPCxFv+jP0bsKaDF9BzAW25PSLYYni1b7n\nFuVZGCpt8066PhTvVjsoQSf0FnQf3mH5nvrVsz3q5uZK/uZLA/mjn7QioHG5\nt1Oly16jDqvuc5IugMqzM0TXK/hP6v6dQ1eq4oMpWPGvM2l5+nKYuW0Nltb7\nZ4tZ\r\n=bm+j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNjeN2IWwdYq+LPrqD51eDsmL0ydLNFnjfDT1Zu/FEjAiEA1YAeCqJ1NA5LZWKTl/3HWCjU4+S3ESV85NrW6R3F79I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.0-next-1590641329-5c9e58bc.0_1590641412152_0.7118128872549345"},"_hasShrinkwrap":false},"1.28.3-next-1590642401-5950c000.0":{"name":"@xdn/prefetch","version":"1.28.3-next-1590642401-5950c000.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.3-next-1590642401-5950c000.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-cOrxSRI1a1tsFHLsBYhScfmkfg21mYfzKFj43sJxisB/JlrH511+q4/1N+ASL8CdQWoYx1HXo4Qt8adIAGzHGg==","shasum":"c33f1e5bc688218732f3dc84a97dfda7d6eb8388","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.3-next-1590642401-5950c000.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez0cWCRA9TVsSAnZWagAAXL4P/2kVNo6CJghI4QEXoNgB\n1nPZlsyeHsumKYFMM7IQKSvJZcyXQ7PCt5+QPy7gvIOUCtUxJr/WbXFCiy6L\nI6XVuqSYoyccXINb9ar2iVmPgO+E39RzaMF8XXn8h35ustCnB27mdcIh7VzK\nq0IMmZC8MENvWE7yWqhyak2yUh1YCuF5oPMhl9wcK2xq2cxCasCGDUfr7/S+\n+FrdOLmt/dE90t+O05vyM7XIhdFImQYEttU8PR44w46VqSk21c5uAVnmQaAJ\nim2yU60nYTih379jFRQS1zBfTIeZag0zXhFT+u/KZZ7lnf/sgStjMQqTmoPp\nleP7eH98JGRUs+MUvpFssn5B8nmRLXQg8zn+38VphAO82I6uAbRaT3JKXzkm\n+5YYvUzxd9GLS1348wnWZ3r+F0zsocDHLj/Hubr1INY/JgMCOASNajDaZjSp\nLen+LuqW4LoJOwwGGaSii52TMSqHeekenmQgzi1rCbuUORGIe8V8Cd5Gk9rd\nFnNJ4Lwxa4I3eJTQgsCTT19ioNP3swSZWw8RtgMb9Af2UICXvpnFTqVBqBog\n05XQayUuUSsQoE5rb8t/OPHwg7wcN8oM0qXd42Bj6F64Nc9dGuiZybjTwMgq\nGvKeM2VNOMD9TtJurS6RU4kNqPv1TlBPFr0oE8AvMZKGGiznpDuN4Hg6JHYn\ni2F1\r\n=BY5Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9Ld5Chn02JcF1MJyKycI7XgIqQH6DwRNvCzniefZXNAiEA5GWNyoCpC3wrN3NLMe4WBrTvNuvF7mHZ8lQF7a2vVUE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.3-next-1590642401-5950c000.0_1590642454459_0.2760348992657369"},"_hasShrinkwrap":false},"1.28.3-next-1590663854-6033b96f.0":{"name":"@xdn/prefetch","version":"1.28.3-next-1590663854-6033b96f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.3-next-1590663854-6033b96f.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ImwlwNJunA8rRQlKU1lMFHJpJJhkCYimy7HtbuA3iYzBigxDNtyh1Y/BRyCoiJ4U5ONlrK/ntHrBeSc+O5ykFg==","shasum":"6b1393bc99f2f64b2ae34a596ae6e6d57423bef6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.3-next-1590663854-6033b96f.0.tgz","fileCount":46,"unpackedSize":76606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez5rmCRA9TVsSAnZWagAAmNUP/jj/jaEWoypeLd4IvdPU\ncSX6ns1zZajJM66X5bPvN1VaUj+YxKXGF2ADwz9+8vUjiYc/i1qTxx7W9BrY\n1DLLEgGypWXKAXXbHmSh+04ff7RyqNZsYaqPqOegjakmS3N/42beLgV1eA3z\nrVjnKLXwUNo2C8Byb4RUWeDsJ5zQfI5jxxeYnVEu4a5qBqjg3INd3r4/cwzV\nDvP4BZWUzlww2KokWcSUOuuLBeBdRWqXY8Fv+iHwikfvYDHA5xfIUREmaeah\nAEjXBrq8m8h9uUw9awdaIfMKeB5OaiZKoFsebtqYj5KRU+yZ3OFkATrIiY1q\nL+CgnsKdXS9WjfO7CxjDnhwipDVtq0/DF6s0YJG5KzIB9ZuCneqWboo3jidM\n9M+/Q3Fz0QZIHXSX6TJCjKse3/CilYTzhmLnhuBT0iPXItBctYDtS+k0wMly\nObW8VnbyKHjO7J1ZDAJiWBHjag82FuFbuuxdaUiGZyftKm2Oi7J/2SeJ7+Mc\n/8dNhrH4AXqyDgu8pRMgiEopbX1pRYThtEWyL6idke7jtXKw+VRTXGT8S26W\nNbeLEBFcCXYXOD6gjOXCtO9mLvgR4Mqs4T5GSxOWkdJVWpV1CkOMpXGfGF9x\nog5Q9V9ddf2lc6KjvFc+Wq0BbUC9Ef4EgPTGRWer4i5ZYfuFJft+LoaHzaYg\nidza\r\n=EulR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+MPvt6rAdJJkuj3Mhg935fXEtYjyMXmkQD+qHO2daCQIhAKDw0vL2w8W0+NAIrKLZuuE5oGwdtM5MS76OENBPYEwM"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.3-next-1590663854-6033b96f.0_1590663909931_0.07062337610700475"},"_hasShrinkwrap":false},"1.28.3-next-1590663861-1758f911.0":{"name":"@xdn/prefetch","version":"1.28.3-next-1590663861-1758f911.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.3-next-1590663861-1758f911.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-1iqPCY+oo/t67QcAGy+TX+9iZotNM3vXDfYAtw+tFyU4O755BKrW2W78+Yh1nLP+Ea+PUDzk3lINbTrmPyo6RQ==","shasum":"663e378e05dd0cce5d5973b53aabe70361014b14","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.3-next-1590663861-1758f911.0.tgz","fileCount":46,"unpackedSize":76370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez5rrCRA9TVsSAnZWagAAQeIP/113JfPQgHNtqB4iEOYT\nvDh9KWAtMWjdSrp6V4wwyFQHKgYfhpxndKqzKrEJA6ee82drbCtmzIjaAGbP\nfeY8+ZVEdmbut9qF/8bD24RNkyy4CloLL7boofVYCYtz+UbSdkZaet4+VCT0\nsWC/OGFu93aEEscvnyGpDm1Wm/yKP0BlanLLKtvL4sRm69FyYxvuSTtieWSv\nfutC8K4Fnrb1zKRj8bkOtN6eoWzgQQ6MA5f5iHQsR56mBQUFVFjnGbeBdTAq\nZZYU5q5KUVPyFPZ5lfLFcQACmxubmh4zvA7G0ZbeUD/nUVXJsQ6zI2sQ72b3\nF6kqDmI0op6+6bIl8k9G3fw5+Uc7w0yPEKZiUYO8rzVnERlR2jxMdEgJXgGw\nOi18iByQUHyRea8WcfaHCkMy5WyM3OFBsMr8ZhFOqncrYydHPwTfX9ZTK+/k\nOLQPCtu1YUbXKNrBvuAI/ufT/HrQOBLhdF5WLj+NLtYMz9zMSSQj/5/L0ziC\nmGGaGCsY3xpK3+nXGE/oyJj8SYo2bzNuoaK7KVL7gQydfb52xJu8aoEnXmWP\nsOY7850NstQn8H1FUqzR1MfScbjxv0p6zg4Mh+dCFhIUGZofiQcaaNmS8Hhy\ntW5lgWfRYC3uE7YlGhYQfGMlLAnyanIU/rGMoM3hVj3SFmKgb1N8Tp1sHffl\n8x7P\r\n=a62z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXkwrt86WCcIwUs8Gg4MhxB+r+ckrLSV3GzWVaYXUuAgIgcZEMjdUj99T+swxA5/7LzAALPj23hstmroniFVwNK0k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.3-next-1590663861-1758f911.0_1590663914660_0.4469350215944419"},"_hasShrinkwrap":false},"1.28.3-next-1590664692-3d77f6cd.0":{"name":"@xdn/prefetch","version":"1.28.3-next-1590664692-3d77f6cd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.3-next-1590664692-3d77f6cd.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WdX/k8GFrfqySJYx+viFDVlJMmGC7z6Y8lLbxjztxvxjmz0lSMho4tEJS6PPx5x9Cb0J1FttIM1fChkhI+jtGw==","shasum":"0538bc897dc2ef77497b7fb8611e2876eeb2faf8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.3-next-1590664692-3d77f6cd.0.tgz","fileCount":46,"unpackedSize":76948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez54qCRA9TVsSAnZWagAAsRYP/RypMWw+xXe5FtZOLlMF\n7kB1ZWPuKL1Uhc8INOTndprcJG1LwG7Dk/R275HtpTkwfXIg8y5qEeZUSlua\n7/seVO08INudiApL1grWN0GyQ2l0kLKXjkGZmHl1SI8HG39oLlJkqEbpglzX\nTuHLkmZDshV8b8mRDGAApFQA8MJGeS502goCb8df+FBgWnG4sXdvHL2HElJ1\nCB+h2gBV6W+yJUbJaA5iMB456+t9VBVcFafR95jCjqlb8xIUqEa/9zHDPd04\nX8p41O5bC+xinkWhFJJkvrMAYs7+dtOyKIV70YaHHkI4J/WTS0XkCWa9pnqT\npwhsh6ealzSQ5McP5dnYs71+hVhW5CKhzaQBgc5loeU6To+8HJ0J9zmbcu81\nLijzYuw4YA/Lfq58I3BFx5TR225EUjMU5H1JQy0rJoiBcgOIH9ZWGHdwc+Um\njjtbadod+ob7vG0hOaRofVVeFxvjh4cKqeEHJHGbvLQfgBA/sShu9RUu8weG\n/dBx5p+4ZsbBcD8As6FabZUPpzVzyxvP/m1vOyEuMGfBZ2gEQuGI2XYQRuOj\nr+oQWGt/o5Uzq1nng9EPL0CubIqlXRfX7+8n0RmnPKu0cTV6N+Sf+EGDLN5x\n9cqo6NJ4FjFW8sV1bTBdaEZZZGy7O/7KJe3lVkUoQFWx6b4W1loI5wR5XeB0\n9gW7\r\n=2ND0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYw6U1lnT0S11DplDLWceX/xPDnjbMJvrCzuo+e2rGhAiEA4kOHtpzgTnRIqXy53cvbEgZe0PAyU4PDOzhfFD4ILrM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.3-next-1590664692-3d77f6cd.0_1590664746377_0.779365406561108"},"_hasShrinkwrap":false},"1.28.3-next-1590675419-db473b15.0":{"name":"@xdn/prefetch","version":"1.28.3-next-1590675419-db473b15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.3-next-1590675419-db473b15.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-rt57x0yTqtwfABdrxeBv91bYAuGB9656YOe3SLY1cTS5iAx3r2y+zdE3qzreX2tG6xWDnmoxrMzMenolSUO7fA==","shasum":"c9cf583fed552f864a4c66ff9fafe40e21e6def5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.3-next-1590675419-db473b15.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez8gPCRA9TVsSAnZWagAAklAP+waADwmro1rMGJrWJTp8\n2C5YDqYcoTo0DrOU7BQva8gNk8E4YrdcLQj+TweQPWl1JyHO6jxGV2Qlrr6G\ncygq7BGrhkK0ecKMAlNpkpWUk/oUaBTrWDsmzPOkFlmGMBHEL1GWAM2kCI2k\nGQ/yqQX4xFITk7XDkUnYp+LGPTGYp/TKiWGPhhp6n05ArPbKyIW4xww4gyD6\n1zF0BuGMiAskimvlytW5HYhZygSn99kFwVsgGIQWTnGZa1zgmXypv6BmRizK\nWHe9nlC2WdSnsFKj2OWIFhBFh2ZytrvQAm///Wbghl/Yi6ugcYPcSUhTV+8J\nwG7w+MEk/jrIuomG4nQzEmq2Yx/Z+qhlz/dGN8C9ff1OMnE8CGQG2oqVjAKn\nLhNTKmt996imn2UEcr0Y9ZGVMOCBrHvqRxipg8Gt3uoRPopSZk13A9FLhCCz\nvjaOyPDwwfbofKZ+S/RdP56PolErY8coF5oLBzX7eOWoV30RlHCJs6Dd/1ou\nTdNSCn2L7UhqC7zbCMyaX4H2GD1c6bVf1QYkXAjvtTeHpuQQ2v08bT/QmbBX\nJDDXY5qejZZQTHIiTIFbQU1+WUEcTim+h+a2bRIxYwaHMxjEIV8kvvevXxAQ\nqzLXDU9Q13JEPe0EOTdp2MSVcjVgqcAWT/cFwzzRoCwrZZEd3GYg2hG5dZvK\nFA1z\r\n=Zpcs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCH2zje33df07sCZ6WJVQ8a4ozGBVzWg6O3jc6J9bwv2gIhAMfwqQxofN4NiJ+jJkQcEy7oSF3/pC1HjPUKyzlJo01X"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.3-next-1590675419-db473b15.0_1590675470885_0.29865998317309206"},"_hasShrinkwrap":false},"1.29.0-next-1590688452-314d2cdd.0":{"name":"@xdn/prefetch","version":"1.29.0-next-1590688452-314d2cdd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.0-next-1590688452-314d2cdd.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-7eDk526O45JebbjJx2/kOGM6mS0YfjsLmpQGJwTUZHnHSbquBmf++3lD4+AgmuBTlT1tFS/dSWdX7ecabbQNLQ==","shasum":"2cfe751b909e3663b161bea3f3f48b6ce0147981","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.0-next-1590688452-314d2cdd.0.tgz","fileCount":46,"unpackedSize":76592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez/r8CRA9TVsSAnZWagAAGv0P/1vgvuADRHH0QBurAp3d\nBBi8pbyTSrqkfFeRGFhRs2hDXgHRAZTw8uuaLEW1SrDqGOLrrjl008ibrZd1\nci8faVEoN+ZOupQ4y2i0KatjvBhaDWvQSxb5m8fqu+coHeKkQyCx7TbTBZPl\nysq2gddU5MmIypMC9VqG/avumqv5W1AZfRGXBJhB0OUMOSnu+ADQmW7L5gYq\nDyDG2g1NKrg1+W4jASAHeaYE5qIEF+PFAQXU8R5DmNyQTKu02492f09C6WD1\njScqC6XAlW851QagU8mg7ISq+yEP5XIz2z5ynFurP7F7Xh4tnoVYaxTknxLL\nOaZJKl2zJmHrd3FT20Vj4k7jCMU0g644caSHNImI2PSV0hztRFRYa38DDxDY\n0RqWv1rWCcMy05sseFuF61mGqv2KFyjwvmh/G7HyoM1ko+5RByme5XeF5LO9\ndO/LTtpFZVmcX6/6tcoyTSx09Sui4QMA7tsNnMPQ0zCGDgoXcKj6K5qSTzkP\nnBEcLfidCQjlU/43gyCuKn95qkGNng+q7JhhEYeVm0+yrVtZURGufPcc0+r7\nv7SLNGryol+Fgn4jYwESRErcItEQJgSVNqOEPUw5yddhiBiks1AlXH1Z/cH5\nl/ta9VkHFNiy32JtdaNZ/EDkZEwbzhOdCJ/5Yei21pECELvOcxhAIr00w6b6\ndcBM\r\n=m4S+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnbNz1RLCQ4OB4nRYyVUR2GqpzeqzN4aeeZgMJO3zYYwIhAMPuQohoNiUcB9E/Kwhehik9KePzMuz5g/X21PuYhNME"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.0-next-1590688452-314d2cdd.0_1590688507929_0.790446660558759"},"_hasShrinkwrap":false},"1.28.3-next-1590704463-5359c1c5.0":{"name":"@xdn/prefetch","version":"1.28.3-next-1590704463-5359c1c5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.3-next-1590704463-5359c1c5.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-6wQnzgfRPNiB9VtlEOzioluuS1F49eSBjLF2CwWAG7PDRC6ExQC9H2PiInPWXkXJahnTMpwm6vJWN11QgCMaJg==","shasum":"473ba1465072ce7410dd33263e73bb54b17e054a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.3-next-1590704463-5359c1c5.0.tgz","fileCount":46,"unpackedSize":76948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0DmKCRA9TVsSAnZWagAAMxoP/0Yr0YQ9uEdiKckTKhQF\nJjcyTEujqYxj93MfY/03Z3teKUkni191aT2NiZEwEXuwGlANSLXjL8BwVjvJ\nEyCWhgmgBYYabLTZSnZ7tf90A6KRdRDCWDUCYN3PwBjom8s8mba+2NcNGvS3\nPokyue61HI5OFpS38ZPqrZ2PtdDg5NJRHTeE9udbEPA6+ZzAb2Js3/bHx1lB\n09gAHzQIb8BMuR78iqdMMfP/8FwMIe8D4fIiPEL95Gje9IKKifpUd1SOuZBm\n9tpgivbN45wtrcp7u55ZAVHVOb5h+Kb/AqKVWcLF9X7MnljLZm6xshSR01TJ\n4WrgV7WGuNWUeRxF0zpw+yRIxkO73N9yD+lMmRa5DEWD4mw0fOAaMDk7W+bQ\nTUZ7qhYeSXjyO/JPgVwGUg1CTXdOQj3v1PJ1iYCjh6XLLF6w751JTyq3SIV/\nlXxF47Du3L2YMmXqysnWOqMdXew4VFQJ3BP2eBWVKarry0evTHdgPv4yD/0A\n3RhjzwwdlCqqtzS1CbYuXlTJjFcThM1wpH3OrVILOftw5eo3kiex54Nl7kce\nBxxxhsfm7+PxxgkRHW1n0FP/Wvg8pJSiUxHcnkZNujLPuF1OxpoggTMu4Tef\nMs2Cl3Jt/WZvW326SVW5He2dOE9VFlqngJ1RmVD6dyOVAbLjjHZExWuJhvvU\nTtvI\r\n=LGJr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCK+exdOtUDgRGUgxjQbOlK1irZDrFelHbA+7XXegQewwIhANxPsi0W/YJsmgw23eOmUPMp7lGALyxHRhYALOZIhUGj"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.3-next-1590704463-5359c1c5.0_1590704521934_0.17412015882746168"},"_hasShrinkwrap":false},"1.28.3-next-1590756444-f050cca6.0":{"name":"@xdn/prefetch","version":"1.28.3-next-1590756444-f050cca6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.3-next-1590756444-f050cca6.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-M/Hjd6tqmnlJBx7AvAPvtiFBHtxM+eY8qVl4ZebWv5H5hezodk34xYS1aBZMpuU6Kha/LrhdZrHPwPsdgy3KQw==","shasum":"915c3181b846e8cc2196ad50cfb88c5530239997","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.3-next-1590756444-f050cca6.0.tgz","fileCount":46,"unpackedSize":76948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0QSbCRA9TVsSAnZWagAAeY0P/3TRT4ME3jJndkJz6fEr\n8p5AALSZ5XBLvy53WfN2RAqPp1D55vKFlOKK2vBgiiDCNVRrkEzW91bG68dJ\npPCU5QSmN5M8Rwo/343nLHmJEsuSKpPKZ8ichxA/1Sen22mn3ncE4k2ijXH8\nzkKFdRKm1yMXLgeRb5NXBis6bzMPnGfR1e9yx99sCI/+r1J9E6A4de2R/TkO\nxsUoUx1eT4abYkph/s+rP8nNCfTJScHoHnu3u6nkSH4lL5ase5Xu02tyrgAb\n2TKlu0D1L4rl+H0HZ9tCb3Wui7vVUWSSrQf35QUbVwtzie8hIUctN2RuVHwK\narigpJk2Mz26yuQ4OTCIpgrBQqb1ijtUr1LCHj5Aw2BbcYuXXljh8H37vrMP\nNb2zQrTBqdvDcdrGyXMRqMnf/uSfLXmm3XBKhtwOBbFJGmsjAakAhCnT62kR\nzcVhRR1yUyKBtov/zf7Q/jsHPLi7E3eaaaV2Dyfn67rsTKb46VP09zjq5DgP\noMP1RjVc0qtaWT3SQQoYmAznRHnT1xDDvCx5FrAoMH7uTeyMlkeYjrqzc3FK\nGMJF+o+7alXruwDhZ2iNP1sjmsHh12GmhnvN64kx9T79ibcuK32VRAPwh2a9\ntt5D0cvBhyPgDijfhoCxa7rJ0wzc8KBlLklaT2zheCr8sti3bxophRka/Ddc\nlcJD\r\n=JwRr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFTTWMTI8dqx6tZSWtW4pFAzl0caY5EUi7ExahUEsVNwAiEA1zNQVf3+DBGYRHZntQi4I+dBb1m8RNXCAtUY6Be0EPI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.3-next-1590756444-f050cca6.0_1590756506698_0.8222399303825121"},"_hasShrinkwrap":false},"1.28.3-next-1590756692-46e13d75.0":{"name":"@xdn/prefetch","version":"1.28.3-next-1590756692-46e13d75.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.28.3-next-1590756692-46e13d75.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-/BHgw05vVdvk/NjQWS4diLMLtnhgpzo+l634/b+ovH2CrlRLrP0pErlItnW9wNTCt8IHxgrzU1+p5ZUSuKdZ1w==","shasum":"758a40da3310269c132da5bbc07af8e713b4cdae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.28.3-next-1590756692-46e13d75.0.tgz","fileCount":46,"unpackedSize":76948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0QWNCRA9TVsSAnZWagAAdkQP/RrELOohOnNo5DI1m89w\n7FqC0Fi2Oga2pBl5KADS6ztzxms4KvfADjvcPFMdfbW1QQb8T/xcqA9nOVuL\nelCFPDVpigZcc4O5veO3cpt31VBp0PRXmJ+dkQ1myn5+8U9sGDruQ3SYJPNc\noIwnWhtHZMHuIEyc3Xc22MGxZvb+61sH463E1nzbBkFSOwvb5X3POBteIdom\nctsWRrjHaHu/5lsgBG4sf2YjOfvXhAFffHt6zlRzzQz2xzQahGwxLOCnsPgZ\ndJFHCaW0D/XNDSTtHKEYgboeZjlcczLyQAQe09N3yeMr+47MY5on20rbLNnm\nMoHuwFs/LOqLPGD7tz9Na0kCC/dg5YCVcv6n1gvmLmRrzo8gushiVIcMnQQU\n+xxXRnx2VZn/HFCkfY1hIIfYzvW2XLtYGKqTgHzUHeZLT23iKZRKDg2i5igj\nnRKApfwZF0ENGSl8VAUc3iHiOfcRT/bMAZB2+wd60LtxcHvbCZ9u6JvlsKVd\njHWqPMNJCprOts+IX6n0IrrrB+3nwxjAMfnUPA9L9gC41qOvqkpsR3vqbUR0\n6C4FpsdZfHcRr1/q8nUX2nWK8Cx1k+bAPzPRLbWmL2Fi2hbNCPMi6NoQyBaF\nTjsP7j7yHVh68qNatbwTNiQznWwSpGpW6RQ3y44CDcBFwK5sV0mfY21scqrT\nAwPU\r\n=iOb0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH71F9gVkFSZj0iGrFl+W6nEPC8SOMizQQU5n4/7HLO5AiAAwDKIii2MMH5s0KMNFRPJjP8tyQNJXoz6pD7Dz3259w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.28.3-next-1590756692-46e13d75.0_1590756749105_0.756426770992751"},"_hasShrinkwrap":false},"1.29.1-next-1590759925-ddbfefbb.0":{"name":"@xdn/prefetch","version":"1.29.1-next-1590759925-ddbfefbb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.1-next-1590759925-ddbfefbb.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-IB2+8Ytu4GmqvTGyIK264R6X4FJyX/ilNsQZkjPNaRHqDtj8UQ/buYEOz7YdsYgszY/3AwRWlwgbJXjPjyhrTg==","shasum":"db4c99292a50217629dcb8bec336f0c64aafea94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.1-next-1590759925-ddbfefbb.0.tgz","fileCount":46,"unpackedSize":76948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0RIyCRA9TVsSAnZWagAAdnsP/Al2nW0VcWjh2D0QfvNP\nt7fmWl2UZEah+FK9PQ1s1paXxBIrNZytkPcpbhO+buTtxrkyrdvuQVmvmohk\ngFEyulc3VwuWdK6sNLSZxyUyo5NZHIrASXuUiXVXMbAQRsviDQuf+aWb3kNZ\nseNr08IPP/nyDmkqO38omDZNhZZVjrBSYyXK6HXR0a7fs6d0QS1bfhzOoJv/\nZrUW9ksRWCn/hV28KSpLdnPwUhaf1WxDpc2gDBY9hk8pUI9VCGR6XV3wxgK5\nI6VLQUkGs/PyX75QH5vCnRwCFvHO47wEXGAUMdaI97crH6JdIqzXUwBnaiBS\nROA851e1fnpv9bkItY2w4DoJDpA2KRwPh+ZGb56Ah/0JNUUwRHlwmRvogjHo\nZGietQSGArNWNG+D0pv8UpjuWWaQ429WefYPY184QH8aWD6bMX2cEZnYpr5E\n0i1KfAv4SLx1JTQuNAVPL0JOrpYW+b9lwMvu81EMg1+ZpFXZKqK5CFR8qEAj\njDRxbdSXc5RvvSJ99P+NiLB1Xpg8xoP577CFWfd+a1z3Ke8OaiLI8gM7GN/A\nMBlBnxhIpa0rAcD6Mek/nVYVkqocJVNzC5XjjYzvfy5j5msz9ncyB1vAV0Tu\n4Q3tiVtpP9xMRleKAPoG3X6fwnDAYKiDejxQEpI1Ru4hQx3IBhWMySngWt5Z\npDQe\r\n=Ya9q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFCjxK30pKeAnylHZoWEAn/BDvkQAhnCkf3rO2RheLejAiAXu3lCddWEd2/wlHANadQ/ay6XoGoVXzvuV0/HXT77Hg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.1-next-1590759925-ddbfefbb.0_1590759985113_0.6312802222182992"},"_hasShrinkwrap":false},"1.29.1-next-1590765685-e5eb9caf.0":{"name":"@xdn/prefetch","version":"1.29.1-next-1590765685-e5eb9caf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.1-next-1590765685-e5eb9caf.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-qTdYf1FPI9N8x+mvmCDPm2WZLOLrR1VX0KnWtFDTIpo7rfGVWKSFaef8HfCURUnfiIJycHVP44Xqyeq4JYuoCw==","shasum":"13a7e07fa3f02f27a093238a0c66f34cfd63dc9d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.1-next-1590765685-e5eb9caf.0.tgz","fileCount":46,"unpackedSize":76948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0SizCRA9TVsSAnZWagAABsYP/ixFqW35DIOviA4ApWC1\nWazEIsWg4sFbBGaxrwIjNXL60ynhBVWSd1ZRP2t6h3/a3RewjDyNVDxi8GZg\nRFrKDWZjjQC6638SC1EG5mIsTpk2ktJyD0iE0vL+KdSO2y4ezoBiOvFwsGhV\nVmwPxl+rKI6EEuqb0aOLfVl4ox0C1xvu2RYrQ0FJ4x0IQrnys688cQgmrGZf\nAfQbaWF5R6dDnlfGvh/g6eQs9sQApNOfDIgzE+hBYJIgMp/tFG1IqIPlADJl\nOdV72I8Y70zW6IQ6VSIMFloUi+fyRSFFV5vSnTf276wx42eSmuRi9kY2ltc1\n5PPFdL579pNiGNqDoZzm0a9J8fARCOQWDeoengFW0hJ+r5dxPtkmbjg0W6g5\nEI4puuBm51/sfhM80zAKSzp+p6VxxE1PYe/eAshku/vm5RorzQKw/jGK/Wa/\nRYmKsIr4zwYqLbtqssR1xDOetktF1oagB5JBy0CAx8dU9Qh5MUJHksRp5UL7\n2xM0np8aifAPAm0wGt/02tGS3TLyhtjZN4fTaFToVj2HGhSb6k0o8Z5Hcj1r\nfYrbVFBbJfr9XxyeeZNCB5/s+ssxzP0wdp1hB3sQ1jC+y0kOS6ueW7ZvXqde\nPQmguuOOCwACYStqMO0NHxsTwrP8eq2p/+pkFJAMBTxdu/OBjA0wGcg4db2f\nFt9n\r\n=i+RX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEZHcr4x9jmeQNS76t9qMdW2+tnrKaQ5uFt8Pj35txTJAiAuN0gTnWbwMczuxPFTnDuSLrMVjUVJRIodkNE1hnearQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.1-next-1590765685-e5eb9caf.0_1590765747355_0.07098444143390625"},"_hasShrinkwrap":false},"1.29.0":{"name":"@xdn/prefetch","version":"1.29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.29.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Q6A543Dw2IVgNiRpslzZ8dm22FUn3wgfGHupl38YP7Hf5BdCmT697KH749BYoBPv5pqC0RLjkE/KBYmk+OvQSA==","shasum":"f96616d6ecc90c0c70f8bb62ce1bb9fdb624c3f2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.0.tgz","fileCount":46,"unpackedSize":76921,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0SmwCRA9TVsSAnZWagAAB9cP+wVfl172r5tL8M0JYC91\nZKy7nt+2uMv1GJDSqoFzJfJiZGldBV9aIH3yCTPOzp6N6XyYoIZG0ToSozRE\n2qxt42ZVpN7rDz4YwmFpRedBciesSNwrPWxY3UsBkExVWLR8zTgOUtZwGs5L\nVMsyzlcymgUEui9r/yiWBBP4xrS4pFm348EL8owXFVq4n0gu3RTGwCgdZSpJ\nmWxmmOnuLgG1Eco8XhVd9Qg2pFH93iI8QDUUkBOLxs5dMVUN4YLWxJAfnS6W\nIZoPgXnU7o/T8hO52b+93mbaWJaU1AsmdHAvvJ9L3VSw0k/ao2yCKnsbJGNZ\nvFCQslHLx8dfs/tPhNCtOD/5HfKDkO0RKs5OLyWh8HLRDWER+0CXEdncRNDc\n2gzTtDrs/+zWItVbupa1BXevyOdIwx37hNB6g3kaPUbcQbKrhAkWbrBRwQlr\nqzGYVw0HQji/SjYxugF+R62vZZay8p+HrN3cGD7pR1MU7l4KVK0LhJ0KzbBW\nDeiz3ZZ31LItJ1pi2DDrJArIc5cnuw61lfS4SJ22Rl1WEmqhO68wwe9V28x+\nRMOLef6vIymTmt6JOK25j4LgWYrGaIfKgBORqQYysjIRxqc9YeetnK05JiL7\ndiiFIN+GPrf+DAYlTMdEGjsgtoGuhVJIbZ8PLGoAow3rWaMM6gE1PnV0zc8O\nVYjm\r\n=RpJa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDJVcDqyM55nfqLRcdkt5d/ku6nkmqQ9uza61eIxNqIHAiBMcDmhw5cEbkbKnyq/K12afPIA9ce2yT2GqPQIbtxqlw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.0_1590766000066_0.18350065118712466"},"_hasShrinkwrap":false},"1.29.1-next-1590770489-d78d36dd.0":{"name":"@xdn/prefetch","version":"1.29.1-next-1590770489-d78d36dd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.1-next-1590770489-d78d36dd.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-akpeIoFFGxgB5Oe/l6NUo3BsKu9AOnXalkF4FuViu9mLRrr6bKj5zasoLgcEbJM+KglF8vM1jdEzP78uQchKHA==","shasum":"a5eabbad6f1434f34e7edae74f3a93f1a24be131","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.1-next-1590770489-d78d36dd.0.tgz","fileCount":46,"unpackedSize":76948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0Tt2CRA9TVsSAnZWagAAmXMP/j7oyA9t9qPOt0+MAi39\nWwclGm7xRJ4l7TmzPiXoPQk1WHdbM59yIgAP97HtNCv+gAh04GU3HQfNWzfO\nSmwcKfzax4HMm73XSWEbM8mL6Lz3Tla1oMr8xNJfhB9Lo5iSNWAvPqxVWG2l\nX3uruKYL7hwTxRYTTZAQqvWiLBYV4Z7QfXZpZyRY2NOUDoLkyFzko50r1etj\nVcQ269ISCX25w5j+jJb9p6jdezG3pkaGvaegG7+axOWiAVpCNX2HYaVq68/D\nk8tXrcJnXgwXfenfDb4JvhSWEaDrh+ZEs6VbDYLpwaD22VE6rS/gErao0tGj\ndSxtyV+YIuD5+r9OhxXoUM22evC2LuA2vFKYI9Mv6qGayMHDFmCvOfldoav3\nDaKwM8yl1WtVU142sblCafZY7LPRS5yMtgS8M3Kv0robPmyLR/wxPl8jdATx\n9+eCui7lD9ithc6JPhhcya0Y+c/E0rdCjEZmhqAKW9ffdld0HA+TKzYCuzL8\no3UQATsZN8F2T6dLFmFYkz0v/rqx63FcFXuOz2PzwzWE7iLmLpyneAR+aKJ/\nJpcygaWlzd/CkpyKJBsdc4kuZwedYXJEIqb/upda2QNCa/7OD2YGT/HYbxJT\nqM8XbFY85/9rVc8Q3FRc4RDlzLWVekyB1h+WrPdna5R+Lh43mDu1rq7yoAVG\nEN1F\r\n=wi7/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYQLYpDR/czehz4ksVyxzOCMmsjcYBpB9zlJ5tsjjg3QIhALnJQKCeWIfpHGzBR928mnZGC6w5Y4A/3InL327vsq+h"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.1-next-1590770489-d78d36dd.0_1590770549971_0.32201968359621325"},"_hasShrinkwrap":false},"1.29.2-next-1590770536-04047cfc.0":{"name":"@xdn/prefetch","version":"1.29.2-next-1590770536-04047cfc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.2-next-1590770536-04047cfc.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-X8QYz6gORVK+3ERxfEAg1epMhjTzqTGD8QtJtFx54wzQT7xtZ/j5jybD9gt/ZarNtiA/bFJGLmaYTm5K39opHg==","shasum":"ddfaf1e1c82c534a2f793f27c92fb166cdc933e6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.2-next-1590770536-04047cfc.0.tgz","fileCount":46,"unpackedSize":76948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0TuoCRA9TVsSAnZWagAAZwoP/2gKP/LhwpY3DYXA3yYX\nXV3/SPEhl2TDVUMNKoEnEYH44DdesXXxnZgXCcdUCny0QWKsj27AsbS6zC8o\n7HE+UiGTKzx26bgZB5s43J5lLiE/GfZWVWNMAUhu/oSjsYVYLaRVr2zdbtv2\nayKr81JsHKuVOh25tY0qYdn5atyxSNhaLejLvjBQXaOmdGCrhZLESr3AXaXJ\ntLVBC223YZfthLOQOuliDhzhJr0cLGCMrOt1EtZs/8b6RBX0d08GtYRW0wgJ\nAi0CZvdawFdm4nuWMM7KCstkVLHflqSHU1+psyUY+b0nu+rOVwX8viZcI3ed\ngXQbipRk2U71HaE7+xoOGnJezOJH1apReA8ZGui7zqtChjlabbUgd3fF/UWo\nX0gFjFtluwHaM9rh1RsCf7DcOzF8FwTX4j0VKEFJ/lJACGNVB/pzoDHZmFzx\nEOIeqcICUWwEFaZTMrBjr52p5c9v3iLkD1cwNxmfC/Cdh9GCrg6oYuK+a57f\n1jNNipI++eziHXSl1spKjl6wleoAjth1KpBq3R2mxS51B7yakUqKIRSItqSz\nh1opc8MQTnCWqUqmITBJsW2lsuwPAghCZKyS+eGIDJIThbNCDJge/nhQA0EU\nfNbwpwa8II4uo6Nf07zRFy617vuM2jrMMlUQJMmkiF8NG5yAqSVxtQynBEwJ\nc9u4\r\n=dXJY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE7x7/yKiojJ5fw2pUb0DMSN2FUX2auCM5saov/avS6mAiEAkg7GMXh8uR/aQuWqtMT4FagEl83rv81lwMfW8yAC2o4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.2-next-1590770536-04047cfc.0_1590770599310_0.2957018668115763"},"_hasShrinkwrap":false},"1.29.1":{"name":"@xdn/prefetch","version":"1.29.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.29.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-F0pwKQUQptDagzZ601zMCNP0aOBN/92Tti588MTZ4YIOJLwqVeo/dZw5dPi98j8yKEz5J6a/kE0n3YMiKyPhLg==","shasum":"2bf57db9bec9dc212edf2efbd217c47970212c51","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.1.tgz","fileCount":46,"unpackedSize":76921,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0TysCRA9TVsSAnZWagAA+c0P/iDoqYX42NpYpgCZo8pp\n/L3Lg+ChirMtMxCEkJFZ+mWXPU12FEi2SGpSQtmftU3VYN7tz6BMlP+YOgtw\n7ZYJZlU4EIp1OC2iL54XelsBIL5Dbchwl1MWxysFKsRATURLTJfFfbNv2kt/\nsG2luIXfmqG23ymur6jCUPC0BgUJbANpdH0HQwps02KJslNa0YmBTyn/Kpej\nvjutKxoszTcZ647jNa1mDgqV6A3hygtPMgn1SBSXF0J40hgc0kDgrr3zISvy\nm/2O/cWxphQ89nTGFItaMfGvpKkTooighdUQfLOVBvX3aQ6ofZmmVi7xHImH\nU3n+Inux1WzTP7MEtj1XFf7TLFpJb6TxcuZRKNwWt/cHBhgp4pTVOdwFULrr\n14HcwJnYlMWp7BNrS/zyyV36IOlryEIhRb2oW70LK4PhGevvFoPyJb9gIFYz\n4wBjEr60LflfO5mKgK+sRfk50OiUHHW9Pkg+cH+vxiW15j7aBmgL/J8/vDwH\nh7kAok5ftgNx6QgSOg2oh0uGvE/d/UWYMy2Cw5eWanJHKwwB9sJHvffDTEYD\nkAT23+QHynkPWKtQDqTZus/QAfhYXztFAHW8cSeS/W8TRtw8/ytWGHmOCvu7\nsPRoRaOtK/Xz+mUHH2F5NDQZKJ5LbpGtAs3unq0XFMhleuDducyrv7cMw3Du\n/tg4\r\n=ot7h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD89WjQqwVt24WXgLThmz/d3om0yr2xAfa7VVa6JKdcqwIhAPvhBlYEZrDdNt0gK27rKWVK7GicF0U2wlmLN0KvWt2B"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.1_1590770859992_0.39729468564727677"},"_hasShrinkwrap":false},"1.30.0-alpha.0":{"name":"@xdn/prefetch","version":"1.30.0-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.30.0-alpha.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-XDN+85uvYPSjGdJO07oRGuN37VI8USm4A/oDxn8ieaE7z2YiiQT70xObtlklPW7tec9mN47oM29VidDXU+jk/g==","shasum":"410afa08548a1023240a1559c2f255136a3c0cdf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.0-alpha.0.tgz","fileCount":46,"unpackedSize":76929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0ssQCRA9TVsSAnZWagAA9ccP/ilGGFHdaR+6lzpAJlDG\n4EmSj3kMVDNWGHmEF/6yFM/NkSJ+PGojJ9H/agSDi3p0XACnN1WHUT6mbDA9\nHCNe1XdzcN+p0TMVwQ/Pd+AtEm9b5WzioAKXPIImKV62dwvKuBDynYpPcKL/\nAd1fPaoVlOu2k+ixm5IbfUzI50FMP+ewEl2Hhucg+CMlvRkwU1M89OmS8mWq\nRk+4FokPsDHkA1H3NfqPvsri2r6GasMgUMBGlWHDjh/eOcTEYcQCiuaNfW6s\nZ98WBXvLmCu22j7647ZGXXI5HOzVy0q6Lw2U5zwvPXXHUz36y059qqd2Piqm\nVZ5GZ9MYN8jy10E742ckCd0RIaUpoR0b3uCIkxppwbbIs/b93JNpXzSudhdW\njwQpcH0rA7mBVNDesBgC8LkXolUsdA1bldNL8RY08MCDZRX1TPDUlr2Fml8Y\nCoJNmU6n4L/QNDaslgU+1kyGT91Ju6ZPWMbiJtuZjXC0cW4FGU8BBVKm31Eh\nL7NBCmeEYMj4d/ZAKRxAZHyoZmoPR0hTQeZFIAvL9vwKOFTnXvkR2B42CVPm\n/JRwNLtZSfmPHAcXka+ad8LF/Ra9qsP6s5j1J3eu2XaYwFoJGXl0S0TzogGq\n2Gfe1A0TJZs5VPpv+z7CWNoCPLSK5nzWXVyCL1En6ntxgJm8ZEV+Cczgmopn\nE7mf\r\n=Byyu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXbNGjiO7iVxaqiL1cRj4xeFr66rrxwF8cmt3HqUHf7QIhAKs9ocXRPTJzfyZaB/3RNEfZ7N1R1WgJUap36WnS2ZeA"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.0-alpha.0_1590872847973_0.6694895174301596"},"_hasShrinkwrap":false},"1.29.2-next-1591044917-93126d54.0":{"name":"@xdn/prefetch","version":"1.29.2-next-1591044917-93126d54.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.2-next-1591044917-93126d54.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-X691B7pw+yfkSgD/5Yvx24maApEk4dGr/XW47HpD55ATCb7HnmWHJ2Qk7qhvJ7j6d479TG61jSXj1hUJx2O/Gw==","shasum":"06292cc1de649d0c3b2df86d0123140cb3d2619d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.2-next-1591044917-93126d54.0.tgz","fileCount":46,"unpackedSize":76948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1WttCRA9TVsSAnZWagAA7cUP/A8FywwlzH/b4963MCi7\n6KRLydvLARGN2bGxPJHC8au8hzZpgaosL8tBo1tg+wg2dJ3VwmfVLDcJQ4zh\nHPiHbV8BU/EjL+BNhSjlBuDMY6mUX9z7GZ1C0LVhWPXEl0q/hk6nw4yO8csq\nKEFZ6F7tBRW+LmDKBjM9LSo9Rvfh5kmdu7TZCemiv6IFcVjui2yJ7rSXsk/v\nSBZDKvV8x3pNtsXFPqBv2UfRrWMGVPGCOT41msJi0XwnlOPJcIVm0663h7Gs\nJ5OBMsLtdv/nOoPd/rsRXT/vMqpyKbs3GWFFL9jOweBrErfG1LXzAXwKx/Fq\n0GNT61SS0WS0WYpzp0fgMWsbXk968YPUACyS6mCBD9gV4jT7rfswsKHPNQLj\nwyjmO79gZIUVE1O2LamUcU7UaTcQnRhiPLV400Q1kqQsCRiKDTqkPL2MkDlo\n97BoAhGGjf9j46lg1p3b1A63TWMhw+LOp2Pv818jEr3rCWw+hlhCuX3n50Cy\nbarTq/gJppEnaeHMqLsOkTugTIy2rs9XNbeVrEA/mWiXOQBW5shnVtQQac1Y\nlk8GEa4HKdN+byN7XOjtVptn1HmcF8I/vOXoEmP8xzfcwuwVI6yAW5ZY/r7f\nRnB6CPRNwoataId64dAWocukJAGSgSI6jP4Zn54SC2KFKmkHz9PNkhSIxln6\ng3mn\r\n=AfRA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7wncqM9En/Drhy/qThAAE5Zje+OwTMVtu2Yw0ioLFCwIhALKDupsadKCqL6qFOxqhV9G7mE/XAHqINFvFMlx4j2FI"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.2-next-1591044917-93126d54.0_1591044972638_0.2709732094278525"},"_hasShrinkwrap":false},"1.29.2-next-1591044990-d74e8653.0":{"name":"@xdn/prefetch","version":"1.29.2-next-1591044990-d74e8653.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.2-next-1591044990-d74e8653.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-8TseyKzghidfWscCtsj9yCutSmmbSfHB3vy5l/5VcSqSUedF4tEAHFzxZ2h3UJX6ew8N+sjhHd268XQqzIGZxg==","shasum":"3e979be00b43abd58992593add40f925aacabbfc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.2-next-1591044990-d74e8653.0.tgz","fileCount":46,"unpackedSize":76972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1Wu9CRA9TVsSAnZWagAAIE4P/jMRU9shyrFAZOwOqosJ\nSX57nSycAgxLlE0zbHbcdGMryoxBhT+JwO89gBtGaoG+pEX8tAxvxiDz8gL9\nreL56xg9RZakmMVJnNV4/kGvmNy659RDoVqUvBO3zLNIyQJy4Zvp+UDmalD4\nwOzfBYt4wrY7DeHK2ijwWZmvq3d0oKR2TrdT45K6vn+KB+seXMTydGHZLZ6p\nkJDp+d9vEf/aS4lLdQUelYAyF5kaOBShX44YgC3DfqBmLNiNFNky6lyrTgbF\nw4Go3SfHi+Wq6sLpBn2hYsed+LBsGAchYGWCAC5PC8BOZx3wBIyQu5z57S+u\nBfeR9kaEwCoIlfy2xUpxXvNSdNWTaz2B/sWmjm1LawO1FBAQNZx5ObkuetpX\nGa/67jRfx6DfsJEe98c3ETPx5CLgQS1PrDRIvlZ+CbnnLtbnuFduYBRXACbN\nlrksMIqsbkdt/NhWABkkSsM+9a6MD49w8lf8Kcrw3Apss7j3frcUVrcp04ko\nvp/TzVaSAFXqtFMKA2n8c9alu96/Bb1b0EyGfJoAfFZcLRW1uhl3K1Kjl0NR\nmDKgH85e5z7n9YGDgVrjq3i63pg1LJymSc0TjPk1WGB7d0hl8PB79JHXTIJB\nJA6AVhWp0Wg1/Wry5eSjWgIPXTv4gb0iNAExydEQ/o5ts+7eleyP8DP42+wK\nl9ea\r\n=SUbJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICII8bXSqs4apIaNM6JyTH+cP1TapNTy56W+9k4vBdzVAiEAvBVrR+FX2ykvl/WensE74E5sJGfFwBysKme7QoyVjdE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.2-next-1591044990-d74e8653.0_1591045052930_0.2969831810662147"},"_hasShrinkwrap":false},"1.29.3-next-1591045435-55b9958b.0":{"name":"@xdn/prefetch","version":"1.29.3-next-1591045435-55b9958b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.3-next-1591045435-55b9958b.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-diII+Rkbu/yZ2x0ijkMknDEwkWEZtdu0+8pTuBKNxhisAqVWY1ctC+fbStVm9GyeuwRoMOEvvJhxgTUucfO2/A==","shasum":"0e3ce6eeb2276f9d20cba029184146d0317ce77f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.3-next-1591045435-55b9958b.0.tgz","fileCount":46,"unpackedSize":76972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1W11CRA9TVsSAnZWagAAflcP/37eFV1jjAX+CcA31RZX\nx/3xQX+3/u1MSds9OeeeoKBIEBBe0EPe/TKjCG/qJDJvX0y2KAS8XIgbwKRd\nxIJARiPkPvR2I8QXuOhpJy3fxYeiVf7ns3MMwJ2A0wIUYpqebUbScci7xFuT\nZefNMAtHo0mQVN1ee9XEP5Cs7TY6yAr/rMOo/ldIIPsIEcpRHvcZdc2uBTwK\nxf3bUbUqENL75HpuhUIElOPVT3NTp8Xjvnqf5IUBtH/y9OoUWt7TA/R4LiJe\nC+o1B8vcz2E3cwUuQRzR/Mle4ytz3m5oY/fIAggHtNsHuo64wgqhKGkXCX2Y\n/wsqGhxMWz9EDdD7RmYWuKzXYmLUn1xlqQ6izBX1Z4ZWVNRaanEbmz+RvsIC\nyhfsNBVfQePIFbAaLF5Mbx67iM8mZ4e2GpPdBmSl3vz4Nu3dvw5Wm+c7nTkn\n9SSlzhDDGQShXVK/v/rK4/aevzGWiuBmBy1dcnZMkzRHCdSJCp9Uzn8ryrgu\nKECJDJGJ1oy6xLc4IXSNeMu3npxn8glFw6+migg6xpsTB5rJxeTHMK77K7VP\nZUx878KuOR6EHjeZNsQJL8x9tiuKS0ImtilLg3CLpwoHLK3P5kMN5gITXUTM\n5ByTUMs2UpcFF4pBLLPUnmjNQZ8mlXC9gxerN/6lOzcC0JrL51RnzhItDKfA\nof5Z\r\n=5lsV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDuAxqS3icB+83SpiIn3X/SCgU7lA3waWV1EZJ4lUimbAiEAwJNQhxauitCeo6SNeEM9KHE+Ngrt3a4u05Q/2oMz7jM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.3-next-1591045435-55b9958b.0_1591045492952_0.4188381776913541"},"_hasShrinkwrap":false},"1.29.3-next-1591046165-cdd6f1cb.0":{"name":"@xdn/prefetch","version":"1.29.3-next-1591046165-cdd6f1cb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.3-next-1591046165-cdd6f1cb.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-cdWG9g2ZnJh+EL7b4R0a4nC2bcIqjHtPyWxQOUCC96SWqcsYxfOh/qAhuM5DFey7hChpC9z9WtpIypotb3Zt+A==","shasum":"6189c6916ca491eb32504b8d7d0565b040cf5f78","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.3-next-1591046165-cdd6f1cb.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1XBWCRA9TVsSAnZWagAAHkkP/2FA90WIsyn7vF+l5Pzu\n0Dmzfk2UZnddUwTcVWJvaYA5/vOcWhtCyLbR4AxLtZf2u7jZ/oU2EbD8+s4K\nO2zpzalHPJTVHYogilKnwUo8TLWH308n/Vyt4gON52hcMO9MJuCikZ5VPmQf\ncjHK2BGyEcIGsQQ9nu0X0SeMTvW5zDRc7nctWojTWdenSrCvydAL1f/5iMcp\nDO1jLLls3ytwTAZP/p/+lz6PGpumzHnj1A5OVH4nxMmtlAI5arBPAwdKltrN\n5Rft4IxREy01SN9hcLKwuH/9XnZM8eFWDG/0VJPnRbaO8PQU4Y0dArmZSpZF\n6jvuG3FiLiSPEsK3IVEG1PYHj2mEW4qVCrU0t03GIm3X2h+uAZT66agyEn1L\nXOfaOBo9UPkjZE9Rj79Zi3P0M1mhN/csTJdctAywyuYYuCceWHeTXHkn7MZT\nM1EE3LGV034FVuy/H3p3QYMlJBqp8wQgGpfDvetTiH50lwsYNc8Q0+2KxUB+\nyKl4IAg9HTwItRKjL9zqlbOPT4cgOcMcDobWnz0aQohV0jav+4STpQZxJzdE\nk2jcuP0Ok6W7baxeq7hQGmcVxz4l8AyMJ2Fj/GbYRcQkAlCeLaZcOjuqBWWO\nXu3Iz3Ici04DQGJ1wgtX92fhiBByRNgJYXLvjDDwcD7+aKfmhmoLWZNCsk8h\nO9dA\r\n=eA9S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGKhds8XARbBjuS53E/ICP1/gUNo2WwnT2jI4KgctX5iAiEA/QGehOMVIZ0UJcHnil6wQLg2M3LeE15/CN5Hc7rGthw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.3-next-1591046165-cdd6f1cb.0_1591046230492_0.8823720270319166"},"_hasShrinkwrap":false},"1.29.2":{"name":"@xdn/prefetch","version":"1.29.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.29.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2JmgPXeBZlKvbeoeLg18eciBkN2JHmmd8YmMWPaOXsaICJ8mElkfGBpiMmmwdbMcJYn1EyAqJpb6fRKk437vJg==","shasum":"bdfb88d96863dfe0aac97f512acd0ae4b7ab6a33","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.2.tgz","fileCount":46,"unpackedSize":76965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1XCzCRA9TVsSAnZWagAAS7QP/1/XlLY39/bR8RHCYq01\nj1mq9JkZUzVbACWTMOMDIc0eVM6atURMLW0qObHxHgiP35Fb22v4QLXAWQGr\nWWI4UEY2c7DypJT/+qhurYSbQLXi8OOBZwZJynUCcOR5WTI+acNfz6Vok96v\nv0g2DT9A5rp36Nggg+O6dFQIaRRDlSsab/QkzXkRXUJA8C+lsedlAluvgiU+\nSWZXxd5Z2+lP6P0amxcpOz2MWxcYSdCbVJz4zChUrLDKf3i/1KAFNwhK5BZJ\nAXFa8xTOtTlSY4fFtShWrfjcdiSuZgoyvZABCLfXjQqY6VfkmIeDA8g2onjr\nsWWu2GpA6SIOiqvJvsdXs2xpMqOTZhDPamtbVGd2b/4Go0VMo++KUvbzK05C\ng5iT8dx+AsSyf4JJu9v3N+Gp+fkxEGMrW9+P1z5zEmJJkI5KMp+sEa2cSDHj\noPm4WH23L88L+QBy+Z+mbFhyoDJT7H1yP+qiomfnDprbxzipWcq39m8ccCG3\n9NzO+w0r1U1XQL8jd0bpzz9U/UFMUVUgKEd3lBvHUCuqu+VjCS/dCOL/nXQp\ngMVClDNI2U5Y+ChW4I741JJtNaQrxa8SgdlQ+M+HEU5CXGmGeljy10yEG491\nG9w2XmwePQpFLA+jP5QVui2J+Og9I8qyTwaec1MZiXXtgUnfteLce7xycYrl\nGBqR\r\n=pRJc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICs+IZwk1B3pa+9RN9W/XvQJ6hZu3N5V5qJTnLpY/LOXAiEAtEczb5zofSE5P1SIlheHWUAU65tTKVAfuTStldsYwio="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.2_1591046322415_0.5883994254660592"},"_hasShrinkwrap":false},"1.29.3-next-1591100487-18281a77.0":{"name":"@xdn/prefetch","version":"1.29.3-next-1591100487-18281a77.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.3-next-1591100487-18281a77.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2rXBeQQqEkE+fhUzoDEPdzMNyAd0cRnF/g1LRIZLLxaCNDFjXeEvsbkmJ6h3Td9EjhEzE5BtzCAk+NHTcEGVNA==","shasum":"f376dc6dc6b4e18bfde9ce46e0e266e25019bd65","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.3-next-1591100487-18281a77.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1kSLCRA9TVsSAnZWagAARcwP/RSoXWAiArqyDISUE5m7\nxcdwSX+vU2sl2GLe9Lat9rfifZif1bgJ1n//tQMVn8r7jhTwHTMT7WWuSRrN\n8eWNLoKCJLiCSf3jsCPMigkuLYo/dxfYaJAX7V5MBbXHLvQ+V60I0yhyM6vY\n8FIW8y19uF7WMR+DQYYnWo7c/C9nPB8r4rhC6cCS8SvRNe/CM3DyHht6pp9M\ne1ixx2E98ZwaJsw6Uoiu4djZ4ctrmnazVg4rJqKYvJUIVQ1O4c4B91rJIx5Z\nnNgG3yuzQa8jPhcMRgAQzkz/uHCk0fe7ZXn3qp+MixgVaU6dZXB73Ror2j+B\nITRgIeKpys15csYxbw3nRPX+xkEOI39D5MEzWNUETIFBaoMNFItenBLtqIxz\nAt7ib2r8i0AKuAHPZhBy4aLr7uQoxUTHU7qSQtjKYSmTrUGgxC4I8UFbrVrP\nNtPnaF2sIPumf6tjsmPaiaMogB7nQ+y/ofqKkbUtwG13JJHWl9bm8Rmu0PuR\nwJZXlcVLRczE3OcddRSatvb1kg0FQbgScqbLddJ0yN8Qdok+bOKGnPbnskJL\nc8Dbra6j00m/lnPQZRfEUFPm1v/vTeEtmsQaGGZS/a2U3DPVMhy/+BBo+4Tt\nniewdWOFLsHo3CCGRB4d1olMuVSWV5o9CwEyLhyjv4jVnowKcAG4fEOrLBcl\nyDOc\r\n=k/w8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGvMaUAMAsrP5Zn9aOzBVVpqTsNaOmyBs/LleEklz+4AIgETrh3ULGb74iwvAGeyPOAI0hDtmhXzeD4h8Naerli3M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.3-next-1591100487-18281a77.0_1591100554830_0.935778490799452"},"_hasShrinkwrap":false},"1.29.3-next-1591111600-fbb740aa.0":{"name":"@xdn/prefetch","version":"1.29.3-next-1591111600-fbb740aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.3-next-1591111600-fbb740aa.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-y+/H0BNypTD6SPDFITLGiHvmxz9DYZnzU6Vl5MPhXsPkntM0RSGDuRhfYRjmaMduf+rXVXNHfAT5gq+hKiJyUg==","shasum":"d6d07e8145f5f05481fb9f5600db3cc2faf48723","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.3-next-1591111600-fbb740aa.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1m/oCRA9TVsSAnZWagAA+XcP/2OxmTw+9pskj/BXGw6B\nmc9WbQx9aZjl4u7JcTa6EueCFXUgMVjO5rsi8dSFAfyZ8u3sbKMlMcrd6jqW\nTMiB9XrOxbavTpw8ABj/b+y5vKbRACb8j0lwxvenQsuqY6ro2RZ529FY0Lry\ndmv/JHzgjzcKlXOvHkq19qCq4ioW+mu0iC/9rq7Fn3dZ1ELVBg2IW8knAxl7\np7dLd4iPLiXzVDZ3BetCQo5LGe9US+iogvhzBrlp0Jo8jJqEQ/psWaszpRUZ\nKhC9J+8GL7FkB5hBmA79PwgfW35riX8skCCRMHBlKKt4zGBwsAFwaMGbF4Xv\nIt1Cf1P7qPZES5PYQHPJ/n5rAKUJhecWom9ZHnkwgqwy//ymN+Vu4qzKryCg\nJduLVD+J+2fLS0/6/dAWp9QM4gYHEmcZLsz09Ii6wkzlhIHRJNT54LeIPzyv\nT0+NY3RoikcY1L8UWk8PaDLr+yOfDK//li18ybjVxWHrdpcrdH7V+DdZ178t\nPzjbWOQop8RpSJ2znapl/Umc4C43Pug9sBcWrupSb/DFr9ryMaZaSSK6KHMy\nE4D5tJNuYWg+pqv+xlBFoUZLbCowMzJGGhpzmjIQEe6WrWRaBe3S6XJmvmRh\nbhV554lMZJqkU2Y41CcALIbzfRFpu+IhChOhiPxaqqES5Hm/E4x5ezlUO06a\n7mxX\r\n=wFE0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHCBIMknv6Tt7L+fet3VmNYdG7qTVbb+s8pPiwPKRLKOAiAFsRcKZBvSgogXDLBXyqLVgLCBX35EPNVAByMHMtuLjw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.3-next-1591111600-fbb740aa.0_1591111656019_0.013201726657199764"},"_hasShrinkwrap":false},"1.29.3-next-1591113492-9f6a12ba.0":{"name":"@xdn/prefetch","version":"1.29.3-next-1591113492-9f6a12ba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.3-next-1591113492-9f6a12ba.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-NMiYznPQLL/+iZ12dPYXoNj0KHzpN3KSBxa6QfE6s9g0VOxlpZ62ZbBjrwtVyVX4eWOPTF8dRN1X3ZdBfwKdEA==","shasum":"e76785213dc103a619ccf6fcf1591091011ac055","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.3-next-1591113492-9f6a12ba.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1ndPCRA9TVsSAnZWagAA/mAP/04uIav3j0SlyQo4upZf\nNi79zLBAY2lCtof/Pb00AKmHPfSGVfb8ZHuguwE9Ea4h5Ujvnv5i7wSZDpcS\nmzJznzLYbgMDP8dfeZrXovEQ1/384s7WZu3uT6B0br4tLxlKn3rfTrsYpLMz\niXG7ehh06axEOWgzAxbkWui0D7LkBzrDBdIElWC20PXOjKaIO/7qY06E7QhW\n81T7qb1vS0iGw7riScENQzr+bpmYdt/n04zlFpRg+4uUtEkm/0ZX3zp7Wy0d\nvFpRtMRVOm+34muSHB6ENPLwxhkThjuSdW8r6IrCcXq7nf5QqA3BPjXNtd2O\nmVkLkdI1TfYml1O5KzKiZnaACtDON3YWlSLS0EnrInypyPclm2Q5HF1fnGni\nvGdML+jq3MZNM2A0XZHFpW84SQqZU9Heg3vo865vTKL3vcM7++M+cMc7AzMI\nNxtxUm4evAhoE2bbivAyTDWamod60AIPdV/PjL1533z5Mw+1yCpJ8lJr/zuc\nUmPcg+2RSaz7Y1/njUAA/PRRhfOGsL9aOgKFaLSEcX4b3o+xzOh4qJAGNNvY\n0D8jBXetfh04MStIhgEzI8D9fJREvxsQmAVjmUfRtmh2bWd6LCUAb2NMeJC8\n6KarlmD93KKXLw3OlA4L1YUSffydrrNNel1nTM6GXnFO7bd/xyBzERB0nWvu\nODSt\r\n=ltXx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBlwPB0NUWh5181YepxLleQd2QXxWXc/xXEq425nvYmSAiEAxG+BIBBJd0USND3IOLuJI+31etzq/y3uiku0hJoh9ZY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.3-next-1591113492-9f6a12ba.0_1591113550859_0.7705019218388975"},"_hasShrinkwrap":false},"1.29.4-next-1591113534-9b6909f6.0":{"name":"@xdn/prefetch","version":"1.29.4-next-1591113534-9b6909f6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.4-next-1591113534-9b6909f6.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-33YpvropggRbyPRHxSUhIQeQeJB7ETNhbbaSYCwXx2/B8oeM1Rjqocq4WdMoOjTE12CHv3k6NslX6FSDk4y2vg==","shasum":"1cb2de4090ca275e0a4234bb18ebddf014ec91c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.4-next-1591113534-9b6909f6.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1nd/CRA9TVsSAnZWagAAXwkP/3l0DmZnYMf/jPiLYKoh\ngOY5MX7T3pA8SCaQoyIdzdkaM1ohgNUkwb5x3HadNjR7Tfd3Djk7exJR5hrT\nPAT9hR+w6hCEukiruw7IPKxhhDPaMlcfMJrM05EkAZkuowruE8MA86Of82ik\ngwQi9M+xM5r3hGkggwb2sJSpqNqiRsGIQTFHolmTEhKiHej9AbRpD/RFvyMF\nBYXRC6ywBxGE8/augYO0WxUNvWTto+UpO733RqkQ6Hn2cu1ulfHpaCUNfP4m\nRjoqENZa3TPgPA/wiuz0FuDTJh/DMM5A2wFpJ06ILVkaIEg1IFPL6Cnq/cGy\nue8NWcyX7TQ6dsQA2rS2qYcscTwWMJ/2WLJpam7rFyX8twNvrpusBxYlrhJg\n6XqEGyKSUF/Yi458gH/JEX/oz9S29rvw8RcPh1Ly/agQLqqH8XmPANQKdhQj\nSETnuehnaxf361e3ax1+GTYNRJ5FJNJry5yA883mSgQGz4B2uskmI0brsXxy\nJRaxsWJz7NPNAUymgf0OS6HVXPMtK+bVZiR4oCaIWz2FXV9iS4in7Ss6/6fp\n+dYdHl9SGYvWQq8RIBzvSIAcGg4mgvOxtOt0mEXEtfNjTbfox1JTVdhV1cWr\nWiXICaQBEeXDqRoByfUEC4HcNjEPINuRwakY21Si5D8sz0mgi7j47tfUL5In\ncj8C\r\n=4GAX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDPt/kmh4cr1kEcqeEmpUS6fHjQZPLGCMFtIzm+peYNyAiBCMcAcmUuSpT5six8q2flBZMLdQZeuezhUnI9MyaU6vQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.4-next-1591113534-9b6909f6.0_1591113599068_0.8426534237381342"},"_hasShrinkwrap":false},"1.29.3":{"name":"@xdn/prefetch","version":"1.29.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.29.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5ekiMtMfYpE0ddyXffFUh5AOupEJ8Gyxu6j0ZdqVSLsZCnI1lXbDbEH5fz4edzGHP77NcxzRF55TottCCblZSQ==","shasum":"a9d9a8ba035419e23f024b73f867736372878799","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.3.tgz","fileCount":46,"unpackedSize":76965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1nkQCRA9TVsSAnZWagAAF9AP/i0OFtZkfiaAnE4nttFF\nQ1qkKSp8js9dDZzsiaa4JztYTccUS4SxGat8x2icFBvdHobHap/VzQU+WUno\nKjSNTZGFsrjcF27p5wpZQJNxM7l0DMybjyohjxneheZoR6hHsWYOW7lBgqJR\nRflee95+YgDBi4+C1T7fmoA7QUEhXj06HSFu3GHDxb0KebF5Mnr23kIEy942\nI4ln2SKswrKlT5Y40Vma3FDhVvShTdUJ+2wcsRXOfJbJ1JX4qWB5nq2fOf0e\nzrzuXKPMceEcXh/AtGttDg0+tjB8to8uVa5ODPM22oguGQ67Z7qXX4f3/Ynj\nF6NfxQyNgJfBCfDoElIwrsdZ9UZIdDzQfb4KcXnbT1mBrGGc7nMN9fuz6/0W\n9f9JL8jZeJecoNsDTyxKrt9hWvSO8u5Te/YlvdjmF5iLV/e739wpKQrEx0kA\n+9Y0Wd080TrfgcL9zi370v79RZ66mP2SDr+XfPNTMKLiOpysIYg2pOnU0oeT\niyBDgerGpCFCGz+HsovMZkwFfL9Y4oMso78bH3OLPjDl/dHlhgVBzi/yc2zE\n1SDBk51r3v8sAV6gMST0qXmurWfzHGGu8BrKGJ1d7ufUvmP/7yKhOQy1+nQS\nl8qUp57HeVlenOdrk6oC9Yb0+F2zXVoCNTbagYrdD7DXMVhth1jHDUZWn5wD\ncWTM\r\n=uD0p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC2vf51FWYwVwHVJhn3Ju9ZrcuwOK93xBMO4YxdD1LHdAiBqL1fS0ARhKUnI+x4ofAJnLPUWLDtHua2ZjGvJMuitSg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.3_1591114000281_0.3783005879160535"},"_hasShrinkwrap":false},"1.29.4-next-1591114215-1efef392.0":{"name":"@xdn/prefetch","version":"1.29.4-next-1591114215-1efef392.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.29.4-next-1591114215-1efef392.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ji/Plbe2H6/P1gb2s3YFMMdbZFL7PzJZVdRa4RAFivA89DcKAJioSAL1vzTRGcMUXzw/rwjgn2JZ+Nzap3vcxQ==","shasum":"ced2da8edd54a33ba30e153f813218981a28b2d2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.29.4-next-1591114215-1efef392.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1nodCRA9TVsSAnZWagAA3bsP/2MOF834WPUqVffMct/H\n5h7OaeOGxTi0D4Stq+BODmAE7vLbnMd1tkERaQzLEd58pQFxsdq10+AM9MXU\nQc4dlhIdpM0Sxm9fIt3VFnwlJET8Qg8YPQEwTB6VN1pQLcMrpYwevZk6jHCK\nNkIiGV2W0lnh+hBfUtey739FgSVAgw+c42rMTJiJwtLTkAibd5MtnZPum/Dm\nZBSmQW57hma7db5kmGRFwcD3dxIrLd91EQnikhpbR5d4IfysBFzYzFOCdouJ\nNNippCDvvTXLkTFpjtIsg6w9RVfQF2k4bRGSkOKsKdJLpzLzK74NVkmj+kPk\nuKfmX6KdxmmsWJVMRpewDrxBt/vm2eoL9n4vhS7eiT82TY41ZWwqyZCvDQx9\nMOKOTR1fo8W5F4C7o/t7y+/mWe3QsMEr1sh4Xbjr1Y7v0SrX9EEET049fccf\nZhQ3It6MQT5WAYT/rcnZJQn/MD6dUwkAelI7Z1pIpZNc+CyT5eOJ6LFIMd75\nAvfr4gTuHj7m55NqZzKAqM0t7QR8mmDVnWey9MjhacD1mevhVYFxE47kBOg6\n6gk+YGf9SCMiOwbcNWQEfKXAFQayiZttezrGsmozGBIoQsTZMQFpIDjYZVbR\ndVNbOmieBIRR76NXmuywaLyAFUjRGzWyVSwKKqQV6rtbTA1ThKrtDWgVCvoE\nPZMI\r\n=LYyg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQo9K2Fnp96vJCWqcFS7NJdK9YmAhRhYWoucRlnDu8KwIhAKAfbEXYNdl6xLzRqZ97dtcxFOqNhtNGPY5YGBHydooP"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.29.4-next-1591114215-1efef392.0_1591114269307_0.9863292661223033"},"_hasShrinkwrap":false},"1.30.1-next-1591114463-c3a3f4ce.0":{"name":"@xdn/prefetch","version":"1.30.1-next-1591114463-c3a3f4ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.1-next-1591114463-c3a3f4ce.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-MvrbwMIozJG1plMfAEVxo0+UGXDwvT1LUqpR7uVWq4OjPIMm9qZ6VEK6gZjIKWoEZeee6YvMWUUKBprT7Z3/pQ==","shasum":"5d2ae199b88a7d5a8a97b8a93e2c7b087ab62e89","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.1-next-1591114463-c3a3f4ce.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1nsWCRA9TVsSAnZWagAAvY0P/igyXdJSq3CVWfg3tpz7\nuKXpTMQIkfmMGsCLUTwuRdsy9KR4mBsJ3sqoJdK0dfsrqVlFUkGiJgZH+kl+\nec2TJ8XoL6KBEKRmLY2JlW+GBVUaNWDzfDdmKqPXqWt74YEmSkpGFxo4RiUR\nC/HSqLU38HcC/ybiwWjuUIS9/VlVEjTNZmb7UcmXTbvT5tP1i9JGMwf8PraY\nRB6CgYa0hZAEqAKJCU15YUylvqXqG23V7jXPxHhhngH5rDolMvtX+p+gX38m\n/ZQJuGECx4+YHqgsHCn/9gFIFImIsP7OukV3UWw1aI29Fm/tx2Xv/8ACR6h7\nRnGBczLhrkdDQo8pCDwHag2h1tZ5g7J8oJERnVsZyBZNWbWkdsFnIt74KpSb\nTYIbXcYiCZ0xmO+71UD8ZSwK1bhu/LXRwUPikTib/9LW7HCez4SpXf21mwua\nH43cLH547F2LB1EwW2peXIKP5OuGz8R3Ou9mEUSceGAWtUM5r9LsWoXRlpAW\nVw0O7bjxxgTCDdx2ulipX5kkFavjb1fyoloa0eWtV9w4A1b1QG86nzMj5+Q+\n/CRdM5s/VwZV4Zv2tdAMrhQZtf1Ih0S8eyK5/t0/GcZNGnxgdNjM+PgpKhkl\ngePK19D5Fd4GJ0ndJdpQDj9ygzYL/xxEtO9i9feKJIRPcbeiJCSa+FI9mTUG\nmrji\r\n=8aQj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWCxwP765xNlwkkq4trCpqzOkCUUPk6lC5+0C9BAXpbAIhAJsNTFlV5D+2NUKJ8hAjGgNdCFCsZoGYpt1j9HjOvLdG"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.1-next-1591114463-c3a3f4ce.0_1591114518257_0.8076845207768333"},"_hasShrinkwrap":false},"1.30.0":{"name":"@xdn/prefetch","version":"1.30.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.30.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ZjSCzQgxEUvQtsovkTRjRiSofxnAQkWRKSlKUQAP0NlkuIC3V5kiYSZPujIVCL98//erESyAQTsbtHYg15/3Iw==","shasum":"5fa91a96bb9dd6fd36a76fac69d600d181ead4b2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.0.tgz","fileCount":46,"unpackedSize":76965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1nw9CRA9TVsSAnZWagAAZv0P/jjHFUhFC9R3wTQ8HtoQ\nqRZFHj6iKg49RwEUxHm/jAilOtRjJp3hlM7+WJBmHE9nKJRBJyhSj8kw1OE9\n//7ggjPmH5x+cgNY9VbzZJlfWKvaXGaJnqUjJYQynpvI4gyeOOwqgpfLhdxp\nQY9JyfgFBA/398Ng7NhajJ9l6kJIl7szu3GnqM5cw5o6Smj6uFRGKzXtueDa\nrI9H7D8y2uFkcOFVd3Q1DGTnf6ZrFO/bEV7Wmcc5dMQzvIsOHRl5Iu4h1pz6\nBMUXF4JSoRaz/Ke9Z7hnFL/V1wKPDYMcB91sOmKuk114syOkdehsYlxfV5A9\nt8MUDvwt0LLTpsoCEYWahkZ0RBNmWJ3UM15fbRaNfEdnPSfXrkWRYJNzEI2F\nYDubbTYdpMqPR8W6N67AxAU5H51LULzVbyintLyXi4ZhGbiF4dNfhsKnFRqp\nldm0ELxp2EaZAo41JuC2yy7yJKLf/cmDe42QIBCHxR2hLQK4T5WXTUphkxBW\nCORB1PDpxDCSZckof22YwjERrQCC+OGmFaso7c4nhegrCR6NkyAyIeyYtf7O\nKyuelsA+Trybq5KZtOp/+87M1xvf3Sw8VoaWUfRjQ4qA+u4BMjsk2gOqW9c4\nHMteaxKH1Kc99PInFW58QUdrV6VYMdaQ8DofGd7G6xA0ROCfR/8oemXOcxRB\nNIqQ\r\n=1BAz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGslfPT1SPREY/OjgpL+vnRALXippARIFBRfeWg9oASNAiEAxVbSs/GJwVE5Fs4oO1Tc2aNQCGXKoifYJtmIal4P0/w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.0_1591114812912_0.3125317319390617"},"_hasShrinkwrap":false},"1.30.1-next-1591123259-bc695512.0":{"name":"@xdn/prefetch","version":"1.30.1-next-1591123259-bc695512.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.1-next-1591123259-bc695512.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-xqV0EWeeE1XXIrZaEhpDeTJDKPsx0opJ1X9l7m9BZJ7/Mzq7cDfGpn3zJ6uT//Oj7TQkZKYZfhUzYOJ4T3DlVw==","shasum":"163751f059ab560b4810af59e96198ad5969c1fc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.1-next-1591123259-bc695512.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1p10CRA9TVsSAnZWagAAIeYP/A5qq4CufG8j6JbHq+vN\nEjBkSP2yvJCm+JAIxMyjupVaWbsWFxPdyhCw3a23xIBx2olOV6sgxtG4kxRv\n63mFMfJm6HDOwrXVkLyI6PO8UKoCVJTs60B37NujzckWd5oKXxTXCn4QTV2t\np0ACRf7ADEDUtzDY7FhTJyMHEX57cusl13yQo1nADryafFXTHd6WnwQoO3LH\n94ExPni7D13dUZHL7ySH6/MMZetp/QglS+JCjY8YVhnxlfy3y45skX3LDxqm\n3bEko3GWN/qggxB+FfB/fJA4FIOnyuDYxmAWwP/Aww1JIGNzhfn//Q6tRXy9\nhDC0xNlsecGeeWQczx5M0z4Lpp/b608hxpW62BBLXmuWweXTQri66H82fSz/\n87FJrCmhh6urv/7H+nLWmVxUgl0ZRQS6CsIQ3r9b2jdK3O4OdnvaEZDcBK1+\nY4ck0bAeMgHYaJomuUsfw9V2V6JAMKVB8D/2vAFuHU1gLK2S9Lfa7p+ckVGx\nwsz2TBB7x794YFEJjHmDAMGjb4TenddzwmOPtTJdVwFE/esa7QbR5VHHl4pd\nNtwPcPd55boZNFbRjfwhmDFXWAqLcM4BacT45x3620GLev2kcbvsVtsAS1wp\nKhu5/6AUnSlfo754icZ9rZ4RVVpn7OSBktgYAZFlWt921YciQkSEgoaZBLII\ne02H\r\n=n9UH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhDcgVkVa0jxdiMcvXUo3OMZmvphkUg/iHggDL56zFWAiEAkfu5jPDifw9c96tpybANFOOzCtGyeqgKDQNU1dF/jIU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.1-next-1591123259-bc695512.0_1591123315538_0.951462459145362"},"_hasShrinkwrap":false},"1.30.1-next-1591123469-9f0ca633.0":{"name":"@xdn/prefetch","version":"1.30.1-next-1591123469-9f0ca633.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.1-next-1591123469-9f0ca633.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-V59q8NVleBKv4bl0xLInEHtgLzK2RLAfFAC50Bp+Q6lwaKY9R2jOjEB2X60yVqLw9iQZbxuvuXsACE7ezVLxDw==","shasum":"527f1289bca9356d59bab052eefb8123c6b55cf5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.1-next-1591123469-9f0ca633.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1p5DCRA9TVsSAnZWagAATIUP/3jksjdhqKfn66R2k08O\nA6Ko8HoUFsbkOSxdOVGe02I5u5yO7lPciQ4Su+h+exqKIEn9GPX/ta7/fECp\nECWPZKfo5OJ9BLTtMXL5F+LuYttbaQMsx7GX5vsDpcUkj9a/dbWUNlNomKnP\nghfPYRUGISFtLQUWJbfc7C/c2E7J7vom3nYDcvfSaeJVseo/q9DhITuCSqDi\nW7oCUUtNmopGTcHem43++4VmUsqC4XQJYq0N1g14mQHdJdpBTKNgq+V12Wq4\nXgGKLIe5WY/fjMFiV+X5oFKnBmZKzw4TKMYAiY0kBPQy0qK99xaJTrb9RL3h\nPA94ITOl86OEHnZ6cVMjXAr+IqLh1ySPlCHu3BKHDC9hSB7U4jzhT6vHoOfu\n75aKXvdCibDM0f2e287UYqzvlobJN02x/ld2ptWfbWoxF9PFc4Jkx3gi0FKJ\n9j25Q1Zm8LDOSlgEk6XWcAQPYcKLDTMSrpeE+kPTzgm/4VdIlx/Ip7QIxmZU\njYRT3PAEkt5VR2FOLT1cO+OAuynKsaeo1pCnQmxxfEh090KyTirFDCQSbT3o\n+BYOr55XUUuVR7IFBS2ZXJA+CeutKlvo1mI27gNWP32xVikwqcH71G8qptEH\nu9Fqc2UwixPe5TtsF+PQW2UT189DZpaIVg4YtLER5x0N3ArOv3H7dFe2KLlH\nsg9v\r\n=zwA3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHAkloYIDOsnzJzNMwUAMuohxjhl4RRmli3kTnPVRSKqAiEAgX7z0SvrQXitrjFVy7Y2sAVpij7xh4rBv7dpEJ1lOec="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.1-next-1591123469-9f0ca633.0_1591123522628_0.3583496583394794"},"_hasShrinkwrap":false},"1.30.1-next-1591194650-d93ce825.0":{"name":"@xdn/prefetch","version":"1.30.1-next-1591194650-d93ce825.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.1-next-1591194650-d93ce825.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-kq0FuYWCVafCiR0e/zO4qQpjUmGWu53NuoBTGVCqPiD2c4zgQUS9kw0CBMQ+AFf1sa884lN40GPIolQPq1qKKA==","shasum":"23ea3dc7975f4cac5d8c04211bc344939f9dec04","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.1-next-1591194650-d93ce825.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe17RWCRA9TVsSAnZWagAACxQP/2F688nE8yGuwtl39fiy\nKmEQw3CxIhWfzJX6W6MrtlSHVhDOI9ZqhymyspQ1MzvGikKRHdqMM9RdJ5Dz\nUW9Tmy6lSqa44Yr5PVMLIFHosB6gzXbj4axFHkpS/Zv/RRcxSrYU4fkJPFRU\nsmtYw+qLiQ3f14T3PrqB3O0bxEuxawTuFtwK2gSbEe6LnCueympomdfCBw7b\ndz6hm6LuyvHb+f74GEEndUMe2nxDmvqwphmO2C3L1TSbqp5qxiuCKSFLQ1Ad\ngYSOzcVDI3o9tk+N2QZYhGYGduhUnvhpqcOLtgFuYiveafvOzPuPxi6/HZN9\nuqVM09HCndkbM7gj7Ync4yQFneNPJvkVN1tyDyP87SNgOdW2vNS3UF40XqFi\n5IF6xxDbkIF4AjBRGCenyEtryWUiZEbYoicQtr2MaUpn0clqE7zxwcNlD1qC\ng8rDt12qjxt4EaF+OFanxA6t3ThAOemcFMAE8Zn5lMfnoiOHBK4X9cN0R55w\nEIk9xhAvjqHh9JUtNOnibTDZqG+sI9Tq4a35UyWIUiTlZnIwiabbIOztKBDL\nSJH04VkFolk8Wm6Jsn2ErmYLJLeX+rMTDREs6kbb1NuWOOzHJM2oUNrT4skX\nL40OZ1BLuDjivmRmP3GoDQOzOzR5I+m2KOwiyyudn4hI9obHu9PThViqZbzv\ndneq\r\n=JDW3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAode/xEL3z8PtzwoOI7kWXCbynVlJPAGfOKUqv9TFtOAiEA7M15G9lXkLiglEmBGsptYjekbut850E0AqL+CbcDmvk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.1-next-1591194650-d93ce825.0_1591194710575_0.48643858843133914"},"_hasShrinkwrap":false},"1.30.1-next-1591195356-f90a9ce6.0":{"name":"@xdn/prefetch","version":"1.30.1-next-1591195356-f90a9ce6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.1-next-1591195356-f90a9ce6.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-o7iZtPtA0uP8F2FNlDqCJTnALxVUh+w1VkJbAxBqnZ4NckX2Xf6f+pfrsDaYGPKDOJ8l7o9beqc5AlZyLBK/0g==","shasum":"296d41f2a2438b9d81eecac203bbe588887ca9c1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.1-next-1591195356-f90a9ce6.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe17cVCRA9TVsSAnZWagAA4Y0QAKDHhk4PURx18FH/0L3z\nJvqbJLLbPkzL22q1mZpCWvZhNcoAZ1Zt/QWmighi+04ukhax/3BIGsE3g89J\ng7W3ITEkMCvak/lDkfsfN+7PpsTuUnpMNCoVd/xQF5SxPZSQcRCQzDLCGNkX\noP7yDxCNRYdQRdDEI+ShMUNECYtA/6kaCTynGtLQxdRjkcQi0W8CZEjA3vSE\nPxC+5plLdc41iak/KwqiVTuAY36jEQQXqZQmKm3gh9zuN4HpPJXnkSnHd/wz\nVg5L72Jp3AdSSSArYXKQQRdZZTzSEbglwhPt9509JYPxtNIiixfNokT1wkIR\nc1Ztsb9iI3x4XcH8aTL+Puuhe6sm1PTrgyNBvs4pQJzSZyN+3JrOsliMbUws\nqziyIQugGD2icPlYqZhf1fBgWnlmBGK4/OTZMBONAVEnByjQKUDZLOxBgKxt\nHf43DtmtFOUiH2MNUh8ppfXsZBYTE4NEC83S6OrZ0VxgnSQAHq7Trwgt8AIH\npUXtjjuChdiimLjhi6QciJYNUuKVDDkKZD0WI03fBJtI3nNd3vRD8elBt6e0\nkWnxsm9uAPfZX5k+E4C2IdelafKQFChxzOkcX9LdIqlM3wtkW2WM64k0ZDjT\nlwt2SfJgAES6tZhLXCD7gegp+Hjwfhq3tvtI8MnVesHMgWEcglJTMonENQkm\n+YId\r\n=Qrk3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6cEG4TrmWViR/OrQygHrAdgW57evK4lTjOxnbb0+BTwIhAKaxtztJvaLaRroQ16OPokmk0CmW0lUidV06iNYFCvaQ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.1-next-1591195356-f90a9ce6.0_1591195412568_0.09013394676431119"},"_hasShrinkwrap":false},"1.30.3-next-1591196000-1d9fe5fd.0":{"name":"@xdn/prefetch","version":"1.30.3-next-1591196000-1d9fe5fd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.3-next-1591196000-1d9fe5fd.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-U+qOFt1yCwm0xsooHm+tVBwvTDJonLQUS5v11RUA6uRRh/GiH+nF+Bjy/twoL3QGOzw2h7lQbiN9oUrmDl6aoQ==","shasum":"191bf451e7e30f7a5c4c6b2ebe5579c1f3e41a62","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.3-next-1591196000-1d9fe5fd.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe17meCRA9TVsSAnZWagAAMpMQAJo4gOYi+aUP9bRWuoLn\nQYq3k2A0hFnSaFxvGYM3edH4OV+xHlbhdbwdgfxmTOCRtwhBwDC2aHTG8leO\nHlZ1io+ZHA/P2KoFIrbSDDfzzbQh/fcUp6xP30yPfMyzQo6gYFvs7qWTSD2b\n9O+G7gk7k1KO0UvyLyLaDZoHk27c23jNGfqEZv0WM2iCuH6gXEvSTIy6yNmW\nxY3LQbPaJ/sM8Hyzf2krC/JIOUBXPAzkcbLB7Ir+wKsb6aqOB/37H0T3D5aw\nYdwZgzBPsjB4u2gk56tzsFyA5YgnyaPZEt0r6R0l1s2OeaZ8a3ICoXfJ4wMw\nHif1ztd6ymmyNDxQnAiVwtlX4J5OSTYNYC/gY32Aa6vqmxw9W49Xd9TOEZBc\n19b49Ju86MMkM2qcIcqDLlhtfeWj612AFqxXbCu4vSioZOAqsrmNhvEYomRG\nPZbgQYrZH5dArM2hMmFF74qTlt3A3uGf2hWmKB0WgifcL4gVRFb4qSyJ4L3E\nIHTl4rm37SycWqxxQX/QbZCZwmCy+eut7IZBYswNeezjgYrQnnkrHdep6WGV\nYo7uNd1fwYvANnAGp2BfiUi4SjpBbWQ+48qhtKzj2XIbZOcBmnVkIvBCR+/W\n6/nlalDcg5M/irJptOBsaIOLWSrF8ap4ce5dhnmELE+DeiIh4Ie4JeFTm3LX\naHpq\r\n=aDu1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICrTWSeMUykPzCQg3JFVbRh5ErjJSPwjB2CleninNJ9RAiBU2YyrU8Nx4SJLhtoItKz3pxcKe1dM7hIm5T3jBkawOg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.3-next-1591196000-1d9fe5fd.0_1591196062205_0.13375192482935772"},"_hasShrinkwrap":false},"1.30.2":{"name":"@xdn/prefetch","version":"1.30.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.30.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-jW/l1GshFtcVOkzRA4MhNzZqyuXNTpEo9qK8VQzgKjS5N1Sy5hf8bmJsq5C+FIeZDakgdLdsS+773VwKqdIV4A==","shasum":"5a2201d68eecbb600929c88798bc8a97f0ff6da8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.2.tgz","fileCount":46,"unpackedSize":76965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe17rlCRA9TVsSAnZWagAAG7AP/2SZWdFAn0Bz3BJT++DE\nhcNO5reMv5z+VCkvEE4BlzX+9DDu8FBVxfZ0pAAMpFklxBsEYsfjtflw4eeW\ny4+SxLJFU062S6aihEEmEW2I8N0rjS273jLdmWUSMRt/SdA/dWDlGo+V3jVm\nd9mTCDCHIXJ+rIy6YwJQTeeusfy9OxOOYYjdcNq4JG/YiHhBty1XdLje4nPu\nR/6aAoGcUXVw9xDvclSSNK8RXu8setW0wvUVFuMps5nLebBNIEUbPCa2PKk7\nW3AJ/tgBjxOUBi/BFpa0SfwG8aH4fJY6zZ3sYHTSrfGVuNGM0g2pdo/ekcNj\n6cMBWE48qbG21TH81EbyRP16HrqHmV2K6UbsPdSfLGKBeLq0GB7UpvIG5JSF\n+6jISUxB1ZRmVVaKT5Hc7NIRqlRqEaFakdNEtNTh0jN/bAMbVvb80yieqU0p\nwOdIjAukNmt2pRfJfzJ/0PeBt8Opx3H6rsh3ldom3ELp2Tr/wXEIrq6IwKkJ\npHKoCzG4/Ze65ozVWEHCknvKC96N42hV1gcbNqd+LUlpfZvMvZP5yVjVPCrV\nUpYZBemfn2LSwXmyaZoNef4HqZtdv0S06zDCwTL0u0NN4KHlN1QAY36bGwau\nD8RijxDvMy0K45hKG3F1dDOFrjZDe4Vb6WNLfQ3iVcs7gm+6q/m8ZS/rkH4Q\n2hno\r\n=htiw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcQtgjGwVow6MaPVWIJYm/DvyvbAQ/CrnQNflAjKdLFwIgUppeNNves1lbHawWki13cSNr25EHRRZCda5+wnWfyNc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.2_1591196389542_0.9355967547450161"},"_hasShrinkwrap":false},"1.30.3-next-1591269758-7bbf765f.0":{"name":"@xdn/prefetch","version":"1.30.3-next-1591269758-7bbf765f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.3-next-1591269758-7bbf765f.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-h+v4q5QNWvlWGLsfBeIcQycsl0ppI3ut6llsOD0i7HpSIECtU3SYQCgusK9tsPWX34iykkNhkGsL6fI4mLg6oA==","shasum":"1c571b79b2661bc45e9b0a53c1c01b2b8c8a10a3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.3-next-1591269758-7bbf765f.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2NmzCRA9TVsSAnZWagAAh3IP/0JueXqePah3pLzYOKuz\nsEMZumMIE/zkZGZjHvnGWND/DGiS8SOpfK0dnluZqdxXHfSjVFViKFTciwoK\ngtdeIlC8e9rYA1nCIrIT7wVqvm9zx7sSZA0qUE8IlgjtsEHIgwn6TnxkrCT/\nC9Zu1cOZBtIk4JfRVxtcUNNLMffVobm8kYUv8E8OERRJmQT2J7qUyLPtJymZ\nOWp7jdfh7QCnVYl2GVUi+7dftbDL8hBPgsCbrBmoCrAr/R7N4gSm7fPkO49g\nIagbCVJY7F2fNO5qx9cYpVmGamMihjmaLZZ65UL/9cfVrguEpYBSWzvMRhqM\n4eD3lUc8LQ78TaHUUSHEKEpHUyS3fio5rL9ykSBvD/ESojbMrWPVVkMQa9Kt\n+vyD1N6QmS+GZbHJsXaYmKsZYVen1GjmG0yve0vbUivm4/deZALx5u8K8WUb\nzeg3EtJ6gag9PlF7sP7UzaiEyFDEOElLRVnqP2INk6jqUwXQQ2fxGloqoRNK\nuPCnwNMD54pXxP5Cj1lZZ+DLkX29QtREnM6EjaGgO7tsQFMO0ZzS/5PHo/2/\nM9uTH4hPeDis9cYCAAsycvN/oTPUonI0rEoOtTrVCt2wArSqIIiBKW5OFCj0\nSueYTgQKh74Z0B3OiKCNQDHU0k84HY6Vk27SAeGm93A5/FU50+9szKk35oKA\ns7/f\r\n=s4Ry\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE1Bj1mQJMxEpfbtazqshmiXZRMA6vlDOym6Yr1kHgliAiA3IZZX/zcVgy6aO0Xjf1M9Dw04I9sOGGkwOUpr3fE91A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.3-next-1591269758-7bbf765f.0_1591269810834_0.9863699937501096"},"_hasShrinkwrap":false},"1.30.3-next-1591269972-f47e3a29.0":{"name":"@xdn/prefetch","version":"1.30.3-next-1591269972-f47e3a29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.3-next-1591269972-f47e3a29.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DdMkutGz7kDN96BSFrh9nGmn7xMkDefThi2yY3tqMg7gJLwf3L/pmq7J+dAviZAdNR55cOAxA88lEtUC4Yahxg==","shasum":"fd4884e1501523f7ff2fd83a974cf5a3642e0145","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.3-next-1591269972-f47e3a29.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2NqOCRA9TVsSAnZWagAABkYP/A4BNAIn1I7vsBWW86CV\ne4I05PHMrVq0ahhGM7rzU5mTRo14vT5J13O+qcJ9Yfm1e/VzeKayDeCLA5tL\nABPUuqVdblyy6mMQPx2d2iItxiM7hHc8+Vg8kC5J+HIkZ5Q7h2Fz5OrYzGn/\nhmvDLV1EVWzLu+O8KBZPJOGjaH4Q3TU1FOOyLigG5TT99gldWowZO47t0B1w\nR0TIOGiOmoSAyOBtbYrZ+ZWEZHi8ehfWlB5mYj1qKOYHomyW2TA/9FSMFm6X\niAxVYDPbsL6azYAi1TBjGql99V84oYR6WU7Yp8gb1ZCf5yPdEjebUMRGst6i\nQY6NwQxdn3A8zQab99l9mZKs/hemqlwGEaYijnZUp99NyCWPYfWJG9zrgBjV\nv3o7Bxf6/p/qcIsMpOcmtJMqJ4Nr/Pf2N0Ax9cMu862jYHcxwuz1E7XSnsQa\nqvkSXHSRRtSPsHKlKXgy1McPQ55fqsQNoUHlg0uFKXGAJnaIrd74YzOMeVy3\nilhOs92ZWfgVDUN5CLSOqRTt4ENaoCbtAGhtdtG4UYAES7c2hnpfNIkG6hgo\nDrWxGyygNKG+p1SZcKxGedvhALxskoPBMjYyh1WuX5mGzaEYRy3pSIC9na/9\nnqohpWtlEHonRnobLGJAqkEBDDG+0p7xLxc1r8v3LRKYfdpY6X2bXkdqrkKX\npNUk\r\n=cEeA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBzp/e58tY/c/VPuuQo71c75hk/vZhL2jXLf0hICCV17AiAwnyNWeQrZM4jdw/RuTqKSJtdncVx/liVq0nc/1prSwQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.3-next-1591269972-f47e3a29.0_1591270030236_0.44328896057229605"},"_hasShrinkwrap":false},"1.31.1-next-1591270216-d49d051d.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591270216-d49d051d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591270216-d49d051d.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9jSFyZeJLpt1mjbttXq+xnyDKa6kvQjhKqHw5RBw1Xi7wo16R8hrklAIi9DgOmID4e9zGViqhagP/1ZGABqZ9A==","shasum":"cb70a4df2fc9dd97548db5bb870c01da977c7f58","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591270216-d49d051d.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2NuACRA9TVsSAnZWagAAdKwP/0RVaZWwJoyC+B8LkdC+\ng/3+RLY8+e/eq/mx9oT8oZK/Zt+nNvK93A2bmnZiN8sAAvX+jCSkHkegstDM\nmlGC8AQ+Tk/qa9n/m3wDcd4m60/dF+Va4Qhad00cAq2btloRZZX8bVPkiXYI\n97vaNs9p+nFWkykKvyu2XVUx9wUkqso8ZtHSphHpA07JHzDF3Eg0BTrkd3/3\nwL29MBKfr2KKdPbPmxM7dXjDXYq48Cfh4cy/7RUI8y0Uv/Ixg/+XdmnTVhkL\njE6gRh93Pu7WsFA86ud/W7ySK40qSwQu/5xyEzWRnCZjtfUzvZfx0ool35J8\nJRcxXwLywb3ewB3eNhLvRalt5GNUDcaF+63oMmrEfs0yJYVy4dnzaoq4mrTS\n2h0n6umsIgb6I1gkht8CNUgTonfO9yQXWq+ISuFwuXrt9O0OH8JYy76VGNtq\n5tbkwiNqqo9uSMJwDH9A3Xc04jhf6g1DpE+0I10vnPprJdIBj3jCtChPKC+G\nG3UA+l2MqIvOn0dsoGHaZLmv8RvbHMBZcCIgTstDlcggPeNNQOZDKEisHCHg\nmPmoSsDI4Bs2WbSNH4imvVCfjoIW1OvwfW1/ymj8QfokCWnBsve5BpuWxRAm\nRfEjtBcKb6UShW/ZJw1wAkaVeFkVta5xa6kZatpm0OqqYtGAjII2JVO0W5gv\nZC4l\r\n=/lWA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqjF+vRmp41+DmzFMm6JgPQ9KiBwYGDgz6JPhMyAYOQQIhAIEpbZGIquDC0syGzWRQ6r97Rt2FfTGSKqgEiJhKZO78"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591270216-d49d051d.0_1591270271594_0.9924299209946765"},"_hasShrinkwrap":false},"1.31.1-next-1591271175-b78bc971.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591271175-b78bc971.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591271175-b78bc971.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WBpbQLZ07BKuQqW1XocKCSeGOdnqtzOjirpfkX9cqCGYHWS6ydNrUL/ep3JxjAlVVzqUph4yMRvTArE/G+vb+g==","shasum":"78c25c6f8a411258c4064ddf63bcb78045d6989d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591271175-b78bc971.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2N9BCRA9TVsSAnZWagAAmGkP/ReBPrZgA90WyJpdxZHz\nbhbKQKGB9hvYElptwIgr/kUO7vFxF31rj4xKEA+eQwLlIqQuXWQx/h+rFg70\nvZTkKUbZuwi/3KYnu6YUQAWs0TipNdW5A3ycNPxU9o2N0wP2gduuzhSKS/zU\n8nDTHDU6Ky3IX1WIuQn20DRC+qNCzs6UY0TWEOJW/NGipYO9zidfAyIxyLj4\n+eIFcIy9EgztRvsAnprk3iFbUKmzcFeOxao4v+JRsDUTYG6bYiQfjeSaDNf1\nzikq3scBse/68M7jhBWQ5Qnb5hK7Fy619zfcEZItXYZ+BaA9Ne2caLYB6/JN\nG0t+sgBIcKBhODJ8lDWMcF41Ln1Ao5kIjcJeaVifK4c5i5oVoV2JW/vdRF2D\nGoDf8MmNQooPzMPWiS4xAxm3GZ9owtZ924W7iKJrFUGlDTz3nRiCXBpmTGPK\nwBW4BSM1+/IdJztdE7AoUgP0WNPYu5SfR4Lq1fsbPe3L5n4D4mTyCQOlHuec\nv75XNmQ1ya1sag/w9SeHxvK7pQUDeyfk8nt7pG72V4JNmjxON333c/cD+E9a\nlkFzZIniMxQ9vhNUGpJBrHD2RWKVCsT47dLpt49Cx+Ovjo2iDOddtwnBF+Wl\naqc4nzc9gTVm78HeI2AO4NdjzgRkyPXZee3YSxB3VCPDbfsUhpjDxumI4BY7\n8qvo\r\n=TaWk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDyozy1v8ytys0+xH4JdCgh4UUxSeUvIR/HvvOTJr0BmAiEA0uG7dU4fEP/ImFyOPfhbDYyufmKlxjS9MBQ4sSNUv80="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591271175-b78bc971.0_1591271233409_0.0418517828102527"},"_hasShrinkwrap":false},"1.31.1-next-1591273893-3e905f3e.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591273893-3e905f3e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591273893-3e905f3e.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-buT5izOCXNe0MLUg4mM5D/7vRVrTiZUljsr8gQ4NX6JPvDcIP254n8qtI1rVKv4WqK7gsIkkVW2b/rDEL9V4jA==","shasum":"8094e741604bc7ffa2667907881e9b6292641278","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591273893-3e905f3e.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2OndCRA9TVsSAnZWagAAElMP/0Z+bn25v1K6zLFyawsh\n+L+w2myBDu5UUE/msLq0KTLuEyJrrdgRoPy6KsEChPVOtf4iKlrd1ImxcsAi\nq7FWZSPuKrlqgJulYfG+g9kPQwriwBXsngPhCrouBNIUoZLPv9OEC4JR/C1a\ngvE35rER33yrU1Xhft2P4btiMKEp+XG9LSOJXlqZFpP2mvLtFCkjzYXInz5X\nnP6rmdVyRjc02Uvzig+4DhTgBxBmAbHK9yzV7dASjBU4uo1DE9elV5w8Hnay\nqrXgHpAzQlEXQcmtvb87YAqsnF5nkTghMk/+rmGmFOhRKf5ZL0oEgXQoLS3k\nc7D+GW4MqsOeb9ad6uHc+DDKu4lRWBD02WNrvMZtJ4e++NQAptxpvCV6zYE3\nRPrr8QM1Sb02DWTLt2QgjjK1WUO60KSJ/Gi90rNcr1Il3J7iSm7kKZCFDS7s\nKuyP1/uTzbIG9jskicDzeroGum1jW0vYhI2sjoMchdKZvP+UyAZS5rw8Xdw7\nxkqpuYNfLOEvRKqj2W+Ev3BOF8QV50a08b3o5yeYpQRkA+BRLyQKJeGZ1mND\nd2K6p4S1fsCGE9gF01fXsSq3eOFGiXxDyJAJl8cenCrweyN8iNfNwvmXiSMZ\nZg/+gXeG2wywzCp7Z9jqe6yT3pdAFbkJxmT0EiYItQ1d3kgt63/bMvXGzE8O\nuIEo\r\n=P5n1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBeSaIxyADJlQ/W05SONlFenmMbPVsmJXuWYlWTtI3BcAiAT93gX7bozncEy5HgXcwIJ/TSA9SAZXpzrLKOkruB10w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591273893-3e905f3e.0_1591273949240_0.4084522220492106"},"_hasShrinkwrap":false},"1.31.1-next-1591274461-8468c460.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591274461-8468c460.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591274461-8468c460.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-oaS1Lb90Vgjxa9cXmeg7Wkg352Oo+oYBq4vpx7rUy9166LNIjSatef3zboUB5fiFDunMgb0JHJM+UbOIRjPDEA==","shasum":"0de5650ad52bffccfb574565973fdf5c087cce7f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591274461-8468c460.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2OwVCRA9TVsSAnZWagAA8loQAIN9hhkPZAeGygu4MYl5\nbpnPntMaBBmVwxefhZOFXG1VVDj4ZJnYNd/cKVrW3GwKzNFwuCc/qWuYcx0p\n4/LWU+OC2R+5Z3UQRl/OkH1X2bR/DRYBn4aBZGfItoEO99TREu5Ae/VFZ8j/\nJ4zpYMnW0E2AehYtl3DujyR9tmGcyX51v1vSE6X1mummS2HJQYjx3P7RgqPm\nVREK6BxtI9KmzyBWXEQYdEkkMPP4+6muvlLNXt0iTEKA7bh+R/jsq4W+FiPX\nloZwkIKm13x673akB+rR+ar9r+JrTkIkE1DUZn0/kjYCyDfzD1EF7AafHk4o\n/zbAbMFuHmuWrxsxTci0AE+jb45F79cI9f9BxjLSxvIVe1GgCQHyOP1HV1rP\nef8ITlnP8xcD62LiUxYmaQXoX/85JogG5dOYcdaIjlXVKU00r7OyJxbgpijU\n30bjQ5XURfS0M6xhR6cOdVqPBBH6TpLfy18JlTA+JkeRzWSFl1PiCF/aGkux\nXQBh+6gbnbdFP7h//ZPRwoBSVwVt70blfFQHFSkB2UFOWriXoxnJWMOgjChD\nEJBvNIixlZlQf4qS5mEK1e4cQ4mzf5L9zQKgxYOjOTZp61g8KNr+6+NTcJ/h\nK3rOAANpyKqyHHu+wTPOss1Jvbo/xTcJhugHWljnv4EHMd348zTf1WsUjLAi\n6fRU\r\n=Ji/g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEcFw/j+cvblvv1mFcDDWXsjGeuJp8tuQiZAE0/IsYnwAiAJANHtzWuTTiBX7yKD8UZilUvrsLnUohoy9MK4g+/jIg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591274461-8468c460.0_1591274516956_0.48911930494095346"},"_hasShrinkwrap":false},"1.30.3-next-1591274725-6465e8df.0":{"name":"@xdn/prefetch","version":"1.30.3-next-1591274725-6465e8df.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.3-next-1591274725-6465e8df.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-K/Q0+OtY6ZgbeU5gmzo+OGSel056SlNNXRCZFKhXk6/qB8TAYdMBeAdRBdWBegTwy2HJ9ZuWVLwGM3nzPiCQkQ==","shasum":"be65e3974e31607f59f5c42a007ffcd58c77c77a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.3-next-1591274725-6465e8df.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2O0sCRA9TVsSAnZWagAAX54QAJQ5r3zOTSUhYM0cGCq8\n8OEUHqbwkctTOw9gEXfDkiF5wXhTfZuq5OPMn83C+2+zNjRZJywsjxRFPR68\nWt97XdFdgvph7SVHPOZ8WCOITMUXK/MGFE/1xvbzh7is/idQCziljm6+YK+W\nchC2prTDZkq+5IknJRSGdUwHiNLhbMlTURDv69Se/PCBX+opfnID8w9bx4Xp\ncVBG7h65FlkfeBVtE+UyndYxCTNAA+8sKla0XSP58IJvZ/MddhkDFLtkeyen\nZStgWSe6/ncxIeBw/CZ/6PTniNSl8G20pb0+dYJSdf5kVU8h3eLtuq7F28PG\n1zx+vDp9AAocGDkczdQLgCVZJb9/q6EG5Wy8iOz/lU6P3CrHOetMXCQKY8qd\nIBSzzCCfqwf9L9V/yLAgE7zma6KEv/40MMxbqhBH8ANW6x+tz2nSU2HOwfK1\nb8L/rtLOlb98FfgaHnibZcT/2aG5n4jyE5wXwSC0LeHGrISSzFVv28CgUbfl\n9ZaB04yGQHLQMX4wtwwYyYmT5j04JKbrRbdiRhIIVYerQ4FfOQFiA04QQra0\nECWn/5h97/5ONaWBP3Hgnl3k3dUsXYrTIvBak1nsvFeuzok2WzAGKND4iMJq\nGMwolNbZdFtcG2Qc1NeVSezZadeCCZ5MivFk57tqvKBygakQSE44BCGDTGBF\nKveB\r\n=wcYH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBrrcbxesagQSJFkHRVuRn7/eYxzlugPMHRSxHhQIDWDAiEA7HIspeK3dl+lHtnxCxJLFs5AZxTZKNRDtwNdzYnstTA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.3-next-1591274725-6465e8df.0_1591274796498_0.5648003455274595"},"_hasShrinkwrap":false},"1.31.1-next-1591275371-c99481f4.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591275371-c99481f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591275371-c99481f4.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-F9OXj2qhg6fBTCJ5BdHCVZ7RFPjjdgezGpTeeuy765xOOyRtRcrdQacn2GHlk3UIFRbpNQF3zAUXGAUBDZJMAA==","shasum":"8605021269d7573498ef5dc33563dd83a6257e7d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591275371-c99481f4.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2O+lCRA9TVsSAnZWagAAK7UQAJwFmh78PKYZyNpsVJHV\n14zCKfcsbjYY1oqko9GDeIBnDqUp8pOkbBG9VqOvfg5wgCqgdZhPX2CcIHzs\nUegRwToNCuWgT/JsaTBe62WikhK7nQ1548CjCVou165Iq9W0vW3HZ+vLDGMP\nPi2IzkPSSRGYc3zkUslne2gHvCGr2SJ0qQeRgdBSwqa87y4bjKdfvjGX1M12\ntCOb6Ted7NA+phQqGOe8ch75K/3lZUl+mfD//t1mjBVOLAHC7SFSBqZBp92H\nLfbUZD0QGBnQvF2yzPloeJqFiFHqjXHx44i+PjHsKeh9I4jIDGY8l8/VPFHV\nj4hWwLgyDbq+f3jLAwjjJ7izofWUKaTFBRh59rM7lkEuHgrzQZoLajXTZ2/l\nzELQMjmW4UK9jYe+i89JCgAMe/u/GzOJ0Vmt+L9+vn2YuyHQlKkkSAk/C6Ql\nXL9gtJ6BxhzstYOk8KVkvMTBSGziKOAPKC+9YFmtfvBtC7yEW2BtPRw+vsqQ\nZQUBKWJtLRpveEnqOd5PB40hoe730ZWz5PIbQJdPnkjdCSIEEzQ7EoEN66IQ\nzFPaPqTSHTkd53xYa6GVMfDoglCwT+2XlEhzUNtOJW8vMgnhrm/Xlkgw07fb\nZmc6w2BJAq6xz/uAqHgebL0R6lc4DDTb9CQllni2+CtLk6Uky26zVVNjlpgM\n0uk8\r\n=tDZM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDM5oknt3QLbhHgWyjxdxmqPoj6sYih5O9RvOXjlwomMAIgFSz4VbWyDg7HMazpy/2pr/tS7Rcsd+NcQdVxLX5cAJc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591275371-c99481f4.0_1591275429134_0.800196671160784"},"_hasShrinkwrap":false},"1.31.1-next-1591276545-755bf3a2.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591276545-755bf3a2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591276545-755bf3a2.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-NSTt2t/AOJihjYn/2pB2gT0ftvZ49H3xI2J8qb1e3QjSmL3AXyHKsom09dB7UMnxCaN7ICKWlGgWVRV5t7qeyA==","shasum":"ca5c643336cba2a8898da8cd14b74e41d37e9320","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591276545-755bf3a2.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2PQ4CRA9TVsSAnZWagAAs/0QAKJh6NUL6vpz/9jpCKwT\npwxgtxvUjywFRJE2wa5XU0kuj42zKiRheFCOX/MrDYFeGK+vRmoVOoA69q4s\nbYQ5NgGzbTUNIaUAMlSCcqFcVi7roBj4FrnBclc7G4fpY3vNeYwJZ0LM8Qb1\n69sNVuWaRkgsOdUmKBa1VhdTeGb/0A1t7RkQPnnSOSWCY7Vb1Ctfb7HrvlgJ\nYHoDmb5YiKcBd0imK0vzzoSwbANEgSUjIEeEvYPZXn2LE6VhLw4aYq5idZFv\nolPAhCZY9E6JDPd5pqm2AhKegOaaqYP4kgtosumz9+U9yhV+jFAcfXBq+ESV\nMBREV3I7Zg2Rww+/n6tAMCUrJPyPU4S1PUpqsYJF9yIEZZMvdjuSyHRx7xkZ\nSHeX4Z4wMFfmrtk55n2IoSN7rhRESsNv/M3AqEQhm+5ZFIWL21Iks7oTPpWf\nJC2ATK9xQEPO+KajWeEmA+L5/0265LQLU6LImfu0Zd+gLEXYe6AYYzbg6EXm\noKNHk8qDCCM+ESzsCchXlkRHsCMDRd3DNXHRnPuWQMcnBpx+OoXvEuQaHGcC\nRta5RcyciLOMQeqX1Y3QvZUW4jM2pGDeZr66NvmiIjvcUw4mddGeQLmg1RpY\nDFKvIK9ccuX0aq64LOSjstJLgu/P34QqsxC15SwWqMi7ELnjy1BWNEeQfXim\nmiul\r\n=D0O9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTt3I5NYOHhtWyiQAvXqowSAHWLsnUwn0lze5S9Y7VSwIhAJw4Bobd23KlMmZhFRSGx1Xil8MyjHqjc+Rbc7xFOLDu"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591276545-755bf3a2.0_1591276600493_0.7981323109061855"},"_hasShrinkwrap":false},"1.30.3-next-1591277622-d6c14e49.0":{"name":"@xdn/prefetch","version":"1.30.3-next-1591277622-d6c14e49.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.3-next-1591277622-d6c14e49.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-mZR8vhfbFBGQ9wWp6zH/ngMpol235QCGIFn3BV6AFWDvnbvigZ2U1mn5J+f5C8kUSaeK9W1IaaDYTgxTCFpYEg==","shasum":"154dc1ce35a5bdbc1e3597bfed3bb65141ab3e03","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.3-next-1591277622-d6c14e49.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2PhqCRA9TVsSAnZWagAA8OcP/jmutn4wrI60IAyMJuoj\n3RtlNuZZDp4hvtslZvWgi4LtliY2I7Q4YLC5zf6AR2HifKMrzfb9NWlC1sQF\nNT4GVqkIki8vkI/U4SdM5d7iVmwGmjiqE01XwZ59PWyq6a+tmPNfGJeVGkvp\nfsPeTu9l6B44BiDf+kAw0JqndKeXkasMu8uG5GSIx/dVza1cKyyhXzbAfnTy\nehQO1S4DOV44ynLR3Th4yKiWdFONwOPeu+MbwBYjo6KfKzr+T+IU6/1Vk4Ab\nZp4tDihIgckPHtJ0IVm//V2n6QLDo3Ju7SK3yr621Dm5XgUE4zP9CB8QGTGJ\nlMlIRfifCWOImCC76On28XYrNAR+wgcaG25n31juZChhH86rOxtwrmxxHrGH\nmqHKN7O4fOSi3UW0xyqNwFGSB5Qu7MubkSbZYjEx5eSzdofr08PPrGLCi8A3\nuNv3vDtyjhg1jltd6GS5iaiYQ7nj6AlAuTc1U6qXxgE79ULbCeYE7W+aYV44\nTmAo6K3wKbIeHqqkB0yLXwTZ3tjyeuF5CNQESycJJm51MgxriVw2kf9KE+4X\nfPqGeMqJwmMqg+4z7/rSUWYwWSaqQrCxw5CDS1cB72LRTSFrsxQOE9zgfzs6\n74rVLb6dMpkRdkZB3wlooXorT7Nrp60d87ZgqbxHM/c0vOkYXv2exZJaf3r9\n2BLK\r\n=OcUw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBYB3THfMHCANAgMDeOVr/ygArFwuWAHRXBLgGk3NxHQAiBJTH2XbzjY8JqutdDS8amI7OgvRruB09jKyED4OoBz6A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.3-next-1591277622-d6c14e49.0_1591277673713_0.9721481205326472"},"_hasShrinkwrap":false},"1.30.4-next-1591278945-a98191ce.0":{"name":"@xdn/prefetch","version":"1.30.4-next-1591278945-a98191ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.4-next-1591278945-a98191ce.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-tkr+vWSSCJ2L+Mp1/fUAhj2C8kIfsEzAE9JEvhrpl+vLf3p9jlcyQdH1zijo0vMnAZVYvAia+HpSagi7zJC4fw==","shasum":"369205f3a39daf99e95747bb997decc887ebf23d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.4-next-1591278945-a98191ce.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2P2fCRA9TVsSAnZWagAAz0kQAI8/kD43/OqHdKoJyviU\nZjVnRJEOoEKXkVnNbG5qi4/rAzz3EiR9j93bavhkm4+q8iSkk10RAd5fRc37\nY6m+htZ83ZdF+Ol4Ov6j2ECyn6AIk2q2cy2ZQ29buYhZ0ibofaeeXVHQ1dqP\nBV9RBlE0zzjDyhN7sZqgQTzUZuUQGbryTFGACWkNbHBugLUGueRXnQgjs/W6\nWeXfgLFCLE5ECM6vcj6buVHOhiDUbplJgAjY0ucz2fTbNNOdtR6IiTUB+7hs\nAuP10B+Ft07nIT4M6VWqNxBa3EIXmetL1HuAOEKLNPjmIV7863KuPMgre5jT\nupmgvtoIkq4gox5AhXjwXDpsdtBrdV7//KElTlbC35qdIvqc80jLxrMoOFrc\nmF4us8Le7vNcuf0nQlLFtvKj/2qfPIBHdXsrhVLQkOm6M/GInArEHU1j8srX\nzazNtSafbjUSZx8LaF3DAnKUyrKH9UTxfXFAEodq6LAAP3zNA0Xq49t5YCZl\npeIKkdXBgPb6Ump2WUbE5Tcc9I/oN2WgT4kZYRdpty9bN4lSowuNXaU0SaVv\ns6803BaNN/HKJQ4rjA8FD6treLX9RXJouWwfv6Q+X9ec+YtuafRhJBwuch1w\nMJ1rmXuztu3EgdB57ATktdkxqYWpJTdRpfGd1EXtSw+Tlom11Q9dAjLHR3oX\nRzdL\r\n=2EjJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBbaV+Xo+Herloo5a0WLyaFDCQ5PS+PMNHS+5B9y21jUAiAVrPCm+QPbpf2OwHmGxJc+I3uun2f0SWef724mwCcOaw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.4-next-1591278945-a98191ce.0_1591279007106_0.8183023640155205"},"_hasShrinkwrap":false},"1.30.3":{"name":"@xdn/prefetch","version":"1.30.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.30.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-aUG3oUmwfmgapAeaFm1/iWNn3cjNVHdQW+6KPXivWd87NoQN5oY4brxqTUSYdNnExLr0nJZ8dx6HdxsU55rUeA==","shasum":"521e5ac97ff08a16650d0898314525950b926510","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.3.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2QJhCRA9TVsSAnZWagAA/iMP/A5NU8bN/ag648l0c38z\nnaH6sdHEFfJLwknEi/bz35J6rbjfGG8Drfl/CIZ7X9ZgyzZ5y9ZKom+TsHq1\nJ+ABAxMtfRECI0cLI39MH242+NxYQXKlKUKXfhLega6jIYEM63jmcHvuNQM0\nES8s2ibWUKQKCs2CjZjSUcbFzGONbNF27/q1b8xxAuplenr0x2qhOQLhC3dP\nAyxP8AYcUODAfv81ZBCanYIx0QL0eRxec24EeLq7RK1XGBkv+J0inicjbAya\nQkgQ5er2BM06vZhsesvPHZn7671GC5gdd71ZmB2XFXivvvYkVf27PiOiVoiC\nxN06ivq8XQH20fozHypR/c1WhtfPqQ3h96SF1CVvpINizgOeZChGuy6cl3F5\n5BxXwcAO+JCHhqb4otDq71ZFszdtCRQrZPjymrRkPHfRQKsGUzWeqxTj9dp3\nlERCIwITW7k5kTd4Y0wk7jPF8tFlAFP3AB2XbMT9lG1LzIazu+GviaFhkqQ5\nV1r1XsT0LMr9OgnurpxAeFg3ukBeTosv78GzZfO56Y2C0nyPdj2x2Ch8qXXy\n8sqVXmuGaWwwZDSsYH7I74FKoUKSiluWBIgZ1j9R30M1BKQbHIxo8xPQyEzJ\nyh9eGU89ZwyLFpi6XLhNg8zsNFjaw605absd9twd22nwzC11OXq7DIS8qKGQ\nXGMS\r\n=nEpx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+KYxQ6sSTV6hUg5yOQyhaX0N7J0Ci6U7vaPZk5MH/OQIgXuTj349nqzfeUUCDICXIrUx8v6ffiGP4g4s/8C0lHio="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.3_1591280224704_0.2568119884363762"},"_hasShrinkwrap":false},"1.31.1-next-1591280492-cba2eb54.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591280492-cba2eb54.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591280492-cba2eb54.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-vHJrFd4Z++iO1+PGQJ0TVbf6LZAyPyh3oDa+PUkqoYpjrcBQQYHS1LwWIT43kQaGUkuKyB18v21Vn+8nAIuBDA==","shasum":"35774eb50f894af13a9d63b52149cce5793ee60d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591280492-cba2eb54.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2QOdCRA9TVsSAnZWagAAEx8P/0s+LbHR0MsoprO1BUVI\n5rYimvwp0Br5oHQCvNPorYPx/P+5egBRBRmCJekyNkkqw5cBMB7B/v4lJr8f\n4rC4FcuYFrCL01E9cLSn6+1AXXsT3TEyY0WnhL6MriMs0jGE6uGKop10zOwH\n+Qpfp+skIupQds63XDmsntPp574OFr4VrIi9yBT48BiZtdnAJTcsucneRY+7\n06bsLp2NzEZbzttfB7Imm2fI+HQFd+Dy8BN5Tm2t3MOO1tWGrI9E+ocODGHH\nDKbbd/rXh3wELgIQkPf55jsKTMOkZxmFOD1/9yVkf3+L0TYvMwOuP/91aVel\nK4p9OuxyQkI0N+LVJIBUIXP0U10rRoudiRRPC3y6acuOaA/WaygvZ1dtPyP+\nWSDzIg6pSnKY9vJNjacnq1Hybiy6hwlnbnHUCPs/DTOOgotol07xXHf+ES+R\nB8IaAV31cfsj9ilGnCS8a4vjT2KX0aa1WhH5Bi/A0ELG68Nb8tZE1jK8C0iB\nVimMc3gpOERIodFz81y05233SG/gu+vLsZ0Cdo+2XhvRYjP5QPg2o1CvkEIC\n/DiP70OECMhhia1VDhU6V2OzSDw8uPDcfz3hKxUTSm80dTUFlf7Kv+sKnM5I\nnLYuPUMxrQb/0iUL+K4JebT5IwP3zKUAi5EwlrlDJvR1V7cZTkEuNw8XDTK3\nPWHI\r\n=0G/V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDjBKYTXziOLeTNEeuDOPGATo90hKarOTtNw3CJOAbxOAiBsKXbhhTgHYWE6pmQV1wJdA8ZChO6A/YQtJdPbaGtXew=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591280492-cba2eb54.0_1591280541025_0.7264250161054335"},"_hasShrinkwrap":false},"1.31.1-next-1591281064-cf89689f.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591281064-cf89689f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591281064-cf89689f.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-vwrDhawpT/LmYUfe9bGYPqTm0EcG2d8la0TuuyMlEh3/sh8nEQnzBdbvDYQMGgsAd+U8KChLgigTOSvGl3YhkQ==","shasum":"73e95242dca4af6a6730d3b32eb42706ee00300e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591281064-cf89689f.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2QXvCRA9TVsSAnZWagAAFgYQAKTslwFNCVBF/p0szXVW\navxA+f8PZ/0LMMiEgDhKuwsvzH4sjq4vsC7rC7aUnDqX/79Tz5a7iAxNNQKj\nyjrgeAtOfTRuBCEZQw0OyyrnzKv0htOvLKDPmtdHimMkGJ6JztCWWKE5aHl5\nRgo2xCx7XdxT76XCVHpHMzzm2wSoXVb/mLTLwS0nPsasHD0923DSA3JraxoC\nM126Nnoljk+v//iK8tcuCWSo6RU6NQYWcWdoh5XUEAVYBFTL5mjvrCNRHjS0\n2aYfhoUPwWHBAI+BUnLhGuELoMb5PkPU58gCV9Gi+Nm4kIHYpl4a+wnhsYJD\nZCsf6g+XFmWS8qLF4dRxrFzh4Q5+qJGM/JWB16j23QfRQYcKbY8OO+9ZEd16\nGHLIRe8LzFEADyvY8IEk+2MQLgqqxTyzrII0607yaRevBtFZjxgkxq5DeAmD\n7/CbcHcvLUNYTgub0uxjIkBrB7PQeQ+juNekw4SSg6+T5wrPuiN5FW16Yh2K\n07nxPeJOkWe8NL00Sspk/YLT4Jfk6s2EHmwoopNP5Uv2cqEdPUPiNk1atIe5\no4gLXHbJePRV0e/ajT8Qa+qUFTiVnSjB5OhAE2zANMQ8mjHq9dCufOssy7Ww\n05RrFK7+YqPOQBVTpv96hlB7yHdpagPCYvsFj8QdqLGL5r8rpyHoL8wODf0h\nidNM\r\n=yai/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC99puCwe9JopBnjqPEIM4jEEXiRIpX8iXy4l1blp4DkQIhAJ/tnBJNxi1ODe+Tbvzh2b/K7hUUoJOf1+jaeyMRKMZ3"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591281064-cf89689f.0_1591281134726_0.9559974375779108"},"_hasShrinkwrap":false},"1.31.0":{"name":"@xdn/prefetch","version":"1.31.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.31.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-zSvMA/dqz3x77rG4QaHAcSyJYE2Kly+v9yE/oQs4Yeh5b7DV7GYIzhmK5NNx8QW3/sFuIfpirbZWwa8QS2lkIQ==","shasum":"673b43bfba7dfe8f55691f60eb0109f2a5da92a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.0.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2QdZCRA9TVsSAnZWagAA8UsP/21zuv3Wd8+tPUM9YKsQ\nIL1qpjncvGDw3lAfkF3H58JOVR9VTQb45a/xdQ+K97FQbhMYRHtWRbeFdyUP\nxEfOiTeeb/hh7WqKnNWDE7tqGcXsgIDNAD4en3oUaEf+pwIf1LClUDYhoaqC\nlB8Z0+Yupd1Z8x1oOyOSI05e+3ZSkcKl1LGHYXxmX4n6I7KDxHMSQPotB8Cj\n6gbOYRdOUqBKZr6ZPT6ZGRuRWFMN5c3vTR5yJOtixHwOFZ7Du926jbLgTWMJ\nOwS9QkxyGaqbu/mIpl6YpRUAx0z+5z9381N/FNiUXbL8T45FGGLqKFz/fvz6\nMP8wvYE97UnbZLyq5fa7eU4NJG38ri7LeJBD7wYtB9elhZFJze6WRxgMGVW5\nAidgAFp73lYoCYJA6GYRz4Jw6xKsQFWVzIIEhkb5DJuavuAWy1cAKQyN7U9S\n8i63AhMXPcs34bqASDKBLjTEZSGgmIOL1g1ygcsxvwk2wfLK4Pzn//CuPZvr\nCpXbR81IqzTanD1a2z0qbxLvMGnBnmNgFPe5LkZRazph/B8FuwD2EEARLrYw\nMU2ma4Gf9zvBDA7PR9mPwaKaSeMPvNu5Xx+quRnWg94JZjpbFQf9RBjKlNUd\nTL2aoXXExvJ1iiNXdJJmP/CuzyDdsW1U6kiqKU584LqcBSVHXPjRMFVjH5FB\niGZ4\r\n=ppIS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKx+VcJ6//+yOfVGvIZEjPCALqDAjqqBQWViqrfH8++wIhAK6ecl/nWDovkAiJZSWIg+PxB11Vq88gjjUGsomS/3qn"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.0_1591281496971_0.062368276929700706"},"_hasShrinkwrap":false},"1.31.1-next-1591344635-6c092169.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591344635-6c092169.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591344635-6c092169.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-l0NLYkHLWMS6RstxUEmFGPP9CB2TRR4RoZL4qvBkeCB8ijl2L1ZIG4L4WEktWE4P0c/SD0WCGuKCH+S0TJp9KQ==","shasum":"3e68392e058b21b96e1ce8686732a8c3560cde38","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591344635-6c092169.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2f4+CRA9TVsSAnZWagAAdCQP/3kJnRjO2hOtnnBf7QKs\nrPcmmhX93mBs/gUhUInrF1u8iWuuMXeNlV6LF1o5lGr5GdIWrDd5IQlD7Emy\na4uhxVusvKWF1g+fJHcqbwBO+R1rXd6WgP1fg8jrcwMBn9c//akEopDmsTJn\nZ+ikqRBMPe0Gz0u95i3PXP/v3ptXiQbptlciE5llUlI6OvqU2hwA8rczTPED\nC1tNmOVHO01j7m7cPAYFEKwwz2UJ1iQHAFblOJ2MklvOXsFmXL40Rne2q9fb\na1a6NssTMhcORBHvvzh/XFE1nbBxD4Y+zvomPSFhENS2+vjU9bkT7LW65vVB\nub2UxUHYnNsCnTtigFVwrVZhthDiJjFRAHIMPNBwJ4NDJizJO4A1Lk5+7mYA\nT+0iCs3vi06zBX/Ug6+BPg/cZtSiufoxw+mORVJYP/MPpcUfOdwQHMSqLtmj\n92gMf/HymfbSbqTn20BfXCNQf3K7jxcZaFzG5+T6uiV5x9D+6Jk/6AT08Crw\nQ4RrqCYqur1c91rl+JdoTRX2iaFXgNFnX+V+itpmcP8FAyTEk5R+4tkL/y6T\n+uCoGpwGYPe3bvrCmFLk83OtYvTXe74rULCXCvokSk5zWQ9jLbs6Qju/Ylm+\n3pt22E1Q+HRDgOXfEDdZNpfl79ivTUnljtqkt9e61Q81TUp1YvP32yw128hL\ns5ne\r\n=aD3Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPSTL0UKU69a32rAuPkgUh5kNw10gqMUxAF0pF8bsF2wIgDOYzkSqKc4E5bYxfRf+4JRjaicVeIsAY+ziYkdz3By4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591344635-6c092169.0_1591344702237_0.9521737947994826"},"_hasShrinkwrap":false},"1.31.1-next-1591351320-1fdc5205.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591351320-1fdc5205.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591351320-1fdc5205.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-n9mg/C9njC7yjNHxz2MYmztNJafvroQXR8FZQgs5VMYCwTdJjn6p7EqhJsdxU1n0nHctssxVs0wlO508EQxaZA==","shasum":"177957e1b5f9e7bcab654c750aa65da3525d3b61","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591351320-1fdc5205.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2hhUCRA9TVsSAnZWagAAQScP+QBH1O9KijK0inswioua\nSD2cBr9iTuJgAoLSRcN6UAcdK8+G/4Il+Ny5kZarEArBbdroWuWF8TiVaDhi\nfDvdY4RRwTwt9idPrLS28ZRpHs4xODLDUs5sDP4pnmUtMnTL2CplPa0NzmFO\nCj+G4LGsgBwrPWsQ3XnNppNMfQjS0A82h9eSMfQaf6Y6De1xqTXA5bhbJgqI\nlVWfibecfga+dQvuRJWwnTD7tNsj5E/rCaEoi1Gerx1lfKzI4oxT4AVcmXaN\nItmnbivF5U1VryLbMLudZ29fO9w4z8ALRqP4paKkwdJCAXWQsFkjEgSXlMR0\neKXcSDEwDyu+xZ3u6aQ5xpECjqlOeWilobRifFJYkY9qF3bzqiZAQjP7KN6m\nvqnhlD9/+tLXm30C9tI78GAoSFKzOiEQaY+ktwKsEgkXMQb/K40mlyeou83u\nWPKvJgX5f0ZRpbbdBqQ/MJ8D6BcYJgbdfn5FcmqoR/MUC+9Q+FbEXcF7Mm8a\nNnMlHECkUEfkKiG0ajhhBWA4hsS9tPiV4XracrirKMy79Ua/L1KaGQpUsOxK\nb4ox0bgxL0Snzy7HgDqqg3sIHGQ2Bh3QAO56ffHIvQqu1B8lGrthv4lXLYRq\n7MCXYS39Z/BaLyXEjZAhLgThyBfdgZZC9c8yMnno+eSefanNLDtoxQJt9+/T\nulPb\r\n=HWxB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2yO5PulgC27Mbo1NVrb5gf/OCs8ymPqCii/o3gQ97rgIhAN0T4B9oSqw8BvdIeV21rnGM3EsKctFUwOQ4xyivlTAo"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591351320-1fdc5205.0_1591351380426_0.4771738815483857"},"_hasShrinkwrap":false},"1.31.1-next-1591356427-150ae696.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591356427-150ae696.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591356427-150ae696.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-M1kwm+kcASoQCJ28KNHuhzTV6rfEdaRV4qamCbS8CQjGx6b/IQVTGIzPhCzk3/08NkyAuPxO1DOR15UwRxLHvw==","shasum":"b2de7c63ca9883d45ce449dec8b15f129d353f04","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591356427-150ae696.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2ixYCRA9TVsSAnZWagAAzl0P/1rUEosPMK2oPeHsSLtb\nVsueSNocveM8+JK1InlwJPatzQ/edaOO7dYFhsiz3TRXwlaEW/YC/ebBSD38\noNiIL9aTMVJxLeqMcBixcPcYFWkwMpVW8SX4k9iTbZFTKHQSbBV0o/G6Sj8q\nWHpUrd5ZX9BpNRVMOqUGYs1RsmWxQK3EMka+cY5gOXsFa/IjCs/c5c+TZoGl\njkCwrVD5bT6LMeGnBIe3K80k3sK5+WrGb+qRQkm5D+rp9IUPrrOCcpbVkK1q\nPr9+DBfRGVjW+B4UTaCWm53EauVm7eYz15ElgAJITtOVwmPFOwUQJGFGNyJt\n9zZO+50tYtevirRMxx7eW2o/6sdUJfbDj6D7/9Y3nqNAW4/hXgRdUo+CriaP\nPIukjwV/tGIvTRBTvug/9Sb662TccEXVRxHs42D/7ZxTznvsXxlBvg3Ku/5v\nM3WJLabGG46hj5V+9JM8DKI6SubYF4iPsXEb5BjRO1eN2icroXNikmjYlXar\niS3CuqFbObYGX44QhQYmx1y7ym5iZlrLANICG+nsyAPYrbf3rlzwpMUeW9Ih\nQllDP8OxJIkkH1DhDY9qFjMHtlabBLuhFUDsH61RMQ3OVgQ+J6K9GtypbeS+\nyuM5RWb5WmH1XOKh6tW8hXfghRlenA0/zYCOR9VFhTeHFduBT9mKPDBWM3sS\nsWuS\r\n=6eAM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAg/X+0FIbInxSf541mGHk0JXWXJ2gmdTpVYlpRzhaV+AiEAz/sAJBrRdYiCQoOX/QsBnVpZ+pknTo8f67QiV5j/aHk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591356427-150ae696.0_1591356504406_0.4000679877429463"},"_hasShrinkwrap":false},"1.31.1-next-1591356454-10b61648.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591356454-10b61648.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591356454-10b61648.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-3orS59DZ41LOn8e4zTZot1g+gzbBVT8E4baUpkFYnLdE46NtDqugmWSAqooamxOlTLb+9jjRLsiyLlGLuAOLXA==","shasum":"9af003d86c8f8f86031ee642679fcd2cb0f3a264","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591356454-10b61648.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2ixmCRA9TVsSAnZWagAAIjkP/3iGvDeONfFiOaNaEWv2\nXy7T014GpuabzFVNQHfAg7fs7XUmtIdtJ6OfIrKYhkK6b/2BN6fdfj467ST0\nOAabTqG4Y5oXzeZuH29ZLDyVWmoyUJY5mlrnX0TbcOTGhY1ZzON/zyPGInJd\n0lPcOpKwbfcoBmkxYg5+6XUJCXsthEcPwYroXfAIVcikf95L6/VgTWgjrs87\nVMyrPeFV4m2+vxv1pXwG87DL5yyCg+SS+uXy9nNU8P5gaCQDxlrvk7rJT2Zm\nFfQ1wNRv37ePigINaYS5tmjYbMw1h44FAjj4li5j6DkN/TtQlq+bDj147Z4x\nmojJkFewM93G+trZLWEfd6ktnuvaiALNogm0YGEDTXAn8e5RIgdBuNFY2hi6\n2x4nO8iKHNZl64AMS+qQRqz1r9y7tXhWUKjqUhmA1MtRL78XdIV+MmluA23m\n6oyvMbD/UWgYbZI7DA1ZEWGBEg8Wtllk62P2T2TFldknhUvQ/aUVn1pzZ1aC\nrkkZyDUeElDNeCscb8Jm+tl2RMhr4ykrZ8Bt+lPObwEg4vmKWj0o7RCVekMo\neN0jPqjmqaO+W+N6+jVXjWlTEDQULGaUrGAx613C/iBSLOJyyBCOBUrikEJQ\ny9K+0f3EAFT3xDC7JwzOd2CQ0x/T8NSvR3J0Zlos1bAE3DrtOXt7XnY/N9ws\nkSIF\r\n=ifzH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsmkUN7y9lLbXvBn7yNxqOqKgvYde/jc65NjafHi1nQwIhAM085wzmTsym+GJGqU/hIacbbguyuXH0AjTkif3m9ubU"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591356454-10b61648.0_1591356518187_0.632358698395113"},"_hasShrinkwrap":false},"1.31.1-next-1591357570-40a48007.0":{"name":"@xdn/prefetch","version":"1.31.1-next-1591357570-40a48007.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.31.1-next-1591357570-40a48007.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5DYEi7OcVrOjd/KGQBdBLR3O6aPpQhV2FJf5h8UPCF2hQ4dFgqi4xvv2q9dvholI1dp8uDQ4JbQknY+PhGisOg==","shasum":"a2023974f1985e0593338f8d1e4d1e7cbd13fa59","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.31.1-next-1591357570-40a48007.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2jDHCRA9TVsSAnZWagAAvOkQAI4sT/WJ1rxksnNH6+iU\nEPf55KDoNP6pF+uj35x8QPg6tTWrKtyyfpKRVhON9dbETpoPo4msf0d6vcrr\n7WkVPAUXOkSXsITXqim6SAVj+sGy669mhW9Bk+Roz1xZ5y7+8pQGfclW24GF\n4FKeXEoF64jmh5z1hu9JMVgRE0Jmaz3Fwi0J197h50SmZl+ZlGL21E39V9Rc\nYClNRbJ222qB5xHqso5TFiOrJgUjtOLs4TxJt5ZvATUpkg4yTEv4uzNueuJw\nAH0HPrDVqZ3OD2Sl2zUuf4+6ZvHzJcpwlcP+lkC0OkKIgWC/bYDyqYbpfrJ9\np1BpmNiWtpNlRKW42IgSbuSKdxEPDcP0pnFDpuP7iL20CYAMnNkQjUE5iter\nbAw1j93QqOexDgb+8vjJvvwMJYcjg20QDktSRTQ6ZKEMaFVJ3sL0Yy5dC8mn\njOaaeoypBnIGmSaAzYUOZQMvodE+I8+qSL5TBCw6Gs+aelZrWPPNh/Xz00Ml\nd4bL5V5NMJ36um/jJ19KUWFYb5MmCLZ+wWXw724gCrmC5INliM/UUP0JU34u\nT/mjvuLvMoKtZoHxHUFDZCvBNQeXRcHBO9YUADBuUBvzPwQWphjhZSP1vYI9\n3LToUUtGLM/EPqpJ0nMJF+otOJtJXI13o8OSZygP81QerhfUkHEYI0VL2iNY\nLu5w\r\n=QvDp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHO1nPXlD6ojgt/Z5OgUygum9rd+zdIxQXY4q0hnaSrLAiEAnNdkAAO0LARJT6ICru4EDhgd1nasYMVo0Wfg1dB3Cvc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.31.1-next-1591357570-40a48007.0_1591357639104_0.2816792802855681"},"_hasShrinkwrap":false},"1.32.1-next-1591357781-8f136de9.0":{"name":"@xdn/prefetch","version":"1.32.1-next-1591357781-8f136de9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.1-next-1591357781-8f136de9.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-j1g0+ukA3ephOUzBBHgXywOjJdMWTodPDk8JVKO4cF7Z6hPpI0NYJNRXPIYcaNERQRMa7Q9OwnYbR7WwLh4ZHg==","shasum":"4eb27f4ee88a835deb5ab7da553d0fc404d10a8f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.1-next-1591357781-8f136de9.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2jGYCRA9TVsSAnZWagAAKuEQAJmNSPGwN6ZgSCA885eF\nZuHhlWEY3AjDHHMjl7PM1DTg8m5+2Fa019h15xpWl52mlPBIHZzbALpX3eyc\nwgDmCl/NsJsohC6JCtbTBIks7DzCXLF1nMPpquDe/wmHg8FLeYCJIDozzo3F\nAJGrMIUsnFTuiqHCHM6Ck1uyFjV6U2Np2hCXsPTNLRR3EMqZ2cimE8p1VmNn\n5Ivvcv/tSfUqwf6aoIM9nqYUJ5J9nf8jqsk0ZJeh1+bpmu3s4r9Khm4mwZL7\nDmk/dcc3au0fTq18xeVtlbKsJwgLBBg7oYx4ydFYh8/8um2EIJkvXdTCqvhe\nGVgPKw4pv7d5bdlYCgD5RBm9G39i2zFNvWU49PreMl+qKre7eNV7Y9sTLMrh\n0rq2LhkV0/dXILm3coLhoVOJl9KX3HeTWViE/es48hRiDAJwDJRB+VmGiQNB\ny7Qz4L14PUIhhZ4fTtVRC676q0crVY5yx6y2jcAeUYIuZ/RZGYm2gloWRP/D\nGrLnN1q2zxyrUKkfdtDZwwIYw5vFqhiCnLHQBJeQhJs1KJLK5t3yGac/mDwc\nkdkw1hYiB22/mJ5WxEWJ0oxuBvKgrM5cs3uA/uBEH2+Lueo61e+390ak+OnW\npFlmBjRxmKTwhIMMZ4/bMEM+bd21/P2FLHb9D08VxnlmgF1eNqLqO8JMCPcf\nb/qu\r\n=S9Tx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0mhgngXtqp486lJjPngN8iUiEbRNXD5r8fkLj6X/gCAiEAoKuCYT9QSxDNxT8ao25mKUwdk1ehHdgrG+PL9qkMjUQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.1-next-1591357781-8f136de9.0_1591357847888_0.2695572865673903"},"_hasShrinkwrap":false},"1.32.0":{"name":"@xdn/prefetch","version":"1.32.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.32.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-FzkewcyVCPRdstGPqZkcIvUz3KvNcsTeUED7tL1q4ZLt9eD0yZkW9Mq0NoMaKNwtI6sSnoJJ98YCVZpBLmhYug==","shasum":"b36f6bb656ede4c951538c9083fd904d7cf27491","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.0.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2jJLCRA9TVsSAnZWagAA/YAQAJKSTaZsExZOtxIOYK9B\nvTYmw+M+EajfHpd+xF2hmb46ofb1FANCcTZQFGde0BvipuGMXfpR8l+dSBZC\nXxApLoZ65jyV5lFA9doTGdujOlUFjvqu0bHJBCjGa46/SpoZEd9R1ecjtFmp\nef+9GmH1xdDJihFvDVZ44hFHqDh4PG/asNSiQ2N8aZr4Dd27RvSQETXHAwWc\n4irb9a9s4bK8Xbk+Vt8VVapb+jfCDRTvDYVLWpCQpWnldO1aR8/STkLUpgD1\n/u2OmX3bHqa64CEfA3x13+40YksSXK21FUXILEN04Rjd88FiPkJ+qhSDm7yQ\n5vQK4JpMSozOsBiPKlAI0XBwj2+ODNU4CYuwsxX13yl5ZxHqyMNzQs75J7I2\nX0qAx0Z5fyGE4OPNDHnqme7HWD6CYEbrG3iCRy5LZIWWDMMLqx6qHUrnfEMm\nxmbMxNksuwXv2jNffgw5wtsaOwnGDJjQUiTWdfO68nMiyvuIUPwNUtZbXOs2\n+/goUY0rvW6JhC0O//xdQlEVx4zDU9yPSsAipwH9sjGixnhcp74JO0w4IKZQ\npvCXMzPPVA4GCi/+EeQCCOtLRF6aFh5Z8mtCejNVK4On5A6fp6NuTSYYoTDX\n/la+pXNbq2WfKlR5BhV61s+yASmZKEGDO6cuTc9pQgTnTE3w1Cg21OgxV009\nnSF+\r\n=z/sO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHPhc1CDQa5R+DZK+RaNjDMQTwF9pgpVkliQbbF5epVVAiBEX3BVKEqWJB8hLUNr604jnOVvIZqifaG4G2+5amYsiQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.0_1591358027322_0.21645556710119052"},"_hasShrinkwrap":false},"1.32.1-next-1591362528-372d9914.0":{"name":"@xdn/prefetch","version":"1.32.1-next-1591362528-372d9914.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.1-next-1591362528-372d9914.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-TRnDuG4yIdpE+iWOPNea5P4YxdPFexPFTBr/E6hzWuu1q+6AeT39L72rjhWHMYGkii7C1q+0VElh4BIqWy/QRA==","shasum":"e8f73cb53b1f420239a2e451c3ada464b1516b40","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.1-next-1591362528-372d9914.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2kQlCRA9TVsSAnZWagAArrwP/AissRelqnqHLtzgbi+J\nGFeIO9vnO9h/iedj0uFNKxLaD9lMaWpkhrsC89Vn4k4k9eXa+63jv0tYOK8d\ni75nXLdLJPXW86ZJOr+9PCMlHfUVVzVZkfQ5F0+i2VldRE4C+Fh6ZDo3wTRZ\nHE7ZKaZ6UhUE1dzRiDgZd3ZtMwRpaVcpQdUCH2/Fn8V1WMUH53JGP8DF7NOF\nkyDHg/DyQ3xJbuG3XythEIbIYhwzWgQQCOyGVLM9OxuUyMmOuYX9ECSnBLk4\nIdd938fR62kHZ3rgcXtkNLs9fS8jeUTBVi1HtzSCyWjXP3YiINxixavm2+2R\n2i7rWkVp36xfV+GLv+jn7tmrJwz+ZoT7yv7VMof7zrg3EBedyVq+f1FtDOjo\nvbzRgiHW1MWInBiXBVXUsle3Len9ulAqe705iIxcbxhQJqnYDHKBhgJkA5vQ\nakqBXscIrxjDdAiHdhA1dMOJnadIDEN83L0wxQBt23fTa1NEZmM3W59cFqkv\n6Hf5WDq4WIKe0dsHcemLPkuKOz1Xm5W945IShVM9BDimS0crdW1FDOTtX7Vw\nlMq/Ko82kO6DaWETkb1ZQBSWqYbZtJt5t5yU0il0fh98tQ4XBJjsTpmssleB\n1WNIbIw+Jw+Wv0AgSubAsxLEsqafBkvoFtMA2+ZLcvDvAJG7oJRek265GtTo\nc3Zl\r\n=qWdv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC49VnGw55phWXI3lPr6knWRZ7vw6EwHGhY4sV6gIzPjAIhAODqgzpUugRT8jfSNfG4maKoTaTnMcU38DhcAKQq5pRy"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.1-next-1591362528-372d9914.0_1591362597153_0.949568900670154"},"_hasShrinkwrap":false},"1.32.2-next-1591362632-ea5c8d75.0":{"name":"@xdn/prefetch","version":"1.32.2-next-1591362632-ea5c8d75.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.2-next-1591362632-ea5c8d75.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-4poWElYFUVXh/yUCUOg+RuI4qzg48G5OoL6izy7n6QVKORZshcMP6rEiJV6e/2JzsNxTUR7HgWNYvp4w+HGt+g==","shasum":"e7693d370fed06c2deb3ad773b8ba0eff9e96d02","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.2-next-1591362632-ea5c8d75.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2kSNCRA9TVsSAnZWagAAMrwP/2168pCSOKUgTHIZhJe5\n37weybPbf7YM2VHPcGcs2C74l9717tq15bEdFcDKYaLyvtZOFdktTc5wAfy7\nVpGbcWTC1w1bJC29NS2KdGRS+qQTvV2rbvNEotVB/gWs6KOl3kYAtvE6LcGj\nb/cFxaQsUJr8j++3i//O2R/q7Ajr2LDJyEOBDRKVmTs2IQu+MtcB/9a8lW4N\nlurHtQvApC0+djkvWpMEsj1wxMV9TfI4qIc2CiHDXJ+zuQ4VDIILUKPQRA/7\nKmj0HtjOoVT6pW9E/I8YgK/Cx2Fjw9oK0zDcvuTfZ2JT4NCC9et3dl2mrMzm\n37QG4/QHdTmsAVwUI+9DHyJd3E5ybWGvv80aeL0sxiq5nGxXpk+CYzC2DkAC\nBfKK2olc/P1hZ+YO16QTfrLx3QKiegLvLEl4EN/0iUmsCdXVlnbBwd0ULeJf\nO/iVgBPZVrYImC1a8VRTVW3xkx8PsBMZt8UKOEW7o1ePs3y52bHaEwI884dy\nZ517H5Lnlxi744PG2qfOOsx+4fsE+1JA4dNIhjFvSH4zHsxTv9wU4L0gqOKN\nkVdsJX3NPriBfiyKUpilszoRhJH7Buzksu6DGrxEbIHjjAqYMMnMHITH/el4\nJXzX5E4eEwLBzR4ZBuQdmqNPv7zR3yyaXRYF2vNLiK7yaR3cEco3qjrcecQm\ng6Ki\r\n=h8fT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPaYxvieKFdfeMDyytH7nr1+3oVQVdwe2bYWGZSvW0EAIgOgoaN3dfhIUHXgkbxzE8jLmugYnT3UjW4S1y/vQgGec="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.2-next-1591362632-ea5c8d75.0_1591362701509_0.7900031117181348"},"_hasShrinkwrap":false},"1.32.1":{"name":"@xdn/prefetch","version":"1.32.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.32.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DhrslnbvSuk38ohO4Kw+/Ef9JTuU8/bRhk755xiSoe8BAW1z2K1VPi66v/3y0+tcsHVl/NGkHO1AOiJUKcKa7A==","shasum":"9aee60ceb747101ac3b8fcdb846f2e1e7e8e96de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.1.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2kkkCRA9TVsSAnZWagAAvLgP/RUUzxXAgf013H8HEtlC\nc+HrahcYiWj1UHqbzOapjZ7Lb13/qs5iPA39zHborBv1mSdea9FOK1iHkG0A\nR8Mc2UIGma6RROWDmjHEUcp2YlxSGLuLIxXnY8naEmdG2wwjJG5EHxdp31XK\naINQZdrzQj4P7RIfjN4utvPq1La3VzqkH2KjoSKSa+w/CPXTSc0dJxjTV2r3\nYyzvfu4agXAe/D2UpihN3+DRkq3FWlzNB8moycVJswfR37SOaZxiuSP0W1CL\n23b+EGw8TfQhq7UMeWmRsfoOzWIbMijIA5ha/lrRQ7Lv8sCwpm/PpXH1/tTF\nYr91I8ttto+soWXt8OfrBydn6C8fasdodNyOUXUJvu4EYk5cjItlAflSRxaB\n9LEMlzBS51WCMR3GNK07hbcVLDHS30U5ePeRiNgV/kPYVeUbB7BlWJKThLjl\nQBk4csEkAX2qMB4wU3HCyJX+5b8gicuN2DujdBiVrXwBzvhcWcMruRaV/jxi\nMsR0kWF66Keea2l1eFHolMK/AbePoYxEBsG+jUubFFNvyA6lQzS4ih37MRZg\n1zHNozrCclReaokagJL+6vL+TZ0UGsoDuqbHNLFAtbT7MxfLXmdKuRCbfgfh\n68UredzEEGZd2XjS1nzclD8Io6iNxgj64zdEX1DQcF2AdIvybzoc7yt+CBmo\nFhwA\r\n=wnDD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBj9RwXTn19aYbmMeybH6Lj+cGj/1tdXIS6rHw4Oo6ecAiEA7O4GPKYCDKGw/i1ZSKcmePEHhUQes2f9xpay4XW4+ZE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.1_1591363875961_0.9042639821273679"},"_hasShrinkwrap":false},"1.32.2-next-1591365315-aa6e26f7.0":{"name":"@xdn/prefetch","version":"1.32.2-next-1591365315-aa6e26f7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.2-next-1591365315-aa6e26f7.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-sTcMXgPh013jp1Up+bp4gVzUBx8N/14nRg1dbxYaJKFRAGLi67XI7ew7qW5mEkBaZ+f30QM+sooK8LxZLOg7cg==","shasum":"f439a837cf2f5a2b6d286b8249f5ecb26b211fa8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.2-next-1591365315-aa6e26f7.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2k8HCRA9TVsSAnZWagAAQUgQAJ4haLcSqS6iYJCrHX+m\nulq8jkRr+CuphLru82neL4HpLopY9mp1Jf7DxB2ScrdQl5V0yKgpnW7hwB0s\nkeTZ9zFkI7YfW2CY/dIE9MnqKNdBPrXyt4q6yGsCRBNvcKfaapOeY+kE0sOd\nqW6Jp8ibjBGddQPzQF+vzOAlg0Gc/40p6A7uG+wbBJVCgPUWSjnxubrnasXt\nfK4DX4l19wy1tKvBD2WfIskvp9VbV9yPqYVoV0xPIVlbgeOgXY1gArIkwDsz\nZ+s+a10HoNxxPvcG86FyI9E5Go5RzoiGPnSnnJBRBzaWTyvwC8TKpfdhvGHy\nbNRb48ITcR+9lhoDbzhRtC6Fs1wpgkg4fqsJP+7jYrt1sQRgZ10xbMmsT2O+\nHIH3/kYtGR+dubpPlJ6byzxIt0KHxhx/asno0GcMtVohHqAqSMnxkXd106uU\n/A/kCP/LnUwOyW6KKnkvw9xKuK8nPSPUyM+a5VSBZTnKmtmoLt8h8NGBytrt\nmW3gY/GWm7TWAcv+JbE4i8pbvIzW51I/FyMMhOrJ/astjuLNBq1HfnfPTsEf\ngWhxJpoPkpKXmDJ7sWHPwRuDIQWH5ntBj6OZgJaPNKOYWBd7EXY38BH5GfD8\nbzJZx90oqBJkks5UlQHywk2qoEW+PyUS5mHSL5Je3PXZCpEZQgifjKDzEt0K\nXOXO\r\n=R4Vf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC54PWbYkIzZdOfgX/RAoxEcDsGTF3Zvd05R0bX77KseQIgc/CQskc1TMOVAHYmTinJ4bsthzaHK6q+SqsYdqsCc6U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.2-next-1591365315-aa6e26f7.0_1591365383173_0.08279062908893442"},"_hasShrinkwrap":false},"1.32.3-next-1591365909-4545c691.0":{"name":"@xdn/prefetch","version":"1.32.3-next-1591365909-4545c691.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.3-next-1591365909-4545c691.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-yBjgEEGmpJ6YqFHw4gBBk0KTqInH4ERt/oejH+EV8Zl5Q3ECgAY5Ad4cARjeTzUX7Ii0d0tbYXxoEgEfzdxXYA==","shasum":"7568d9b9f4d0f43707a0e92b0ad461893b1b9e34","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.3-next-1591365909-4545c691.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2lFbCRA9TVsSAnZWagAACVcQAJZe1ZQD3SaXYnz1EqTr\n2UCNcbo+XDYZKphPCoNXmNVFf/VRmTft5Ptwg8/4HQsWE3vM6yrF2uzWQ+yJ\n1BzAFimhUE/g6+IyyCDYcHcobMqw9h0nJZ/nukVhyuLFiwtUiZRxW4QLufda\niaeobwaM+zMXWhjVD3wPnTLsMCVePm7gL6/Fq/6sXwNqe3HKiPoj/KreqApx\n8N4ujr6FcIq5V3m189EZgLXU0KGxD6SWkGrnR/Knr14Ro8Dr5RqkTrzAT/15\nx1bV1hxNV8bEfzvcR6VH34hXoq7ohcjtvEVsb/g0A1i5dqQMMMehV/2/DFe2\ngPUQg9QV+CTTnNA1x69Dg9LBtKAodegtYpmX5/9dJ5tgk/mEIFSxh/C5DYYW\nQ5syuRlDnjx5PKLrj3IQBFLt8W+WTS5rE9wfnl66vvaCDlokt/i96eD/eG04\nOyoReKS4i8b8RkjZ0hlnPQN2ndJ+Olf3mXPxtJqIz8XdCqpZjbYoMlEq4pHF\n9F0sarc0UGZF0gyyxF6mwVN62Ppf8OHnqK+ILma/jE8o45t+mxDAUuY33NdH\nxzjYhwLqZcGwgSOGhwCLxoCP+5lFv4oruL9o1M4+gEMYbIgLd/jO6/XM5ZQt\nys2ERTWVIIZf2rhiN8qb2pxoWNjpH8AhwcNraDaD/j1TutChhWV6DxXDwz8s\nq+uR\r\n=mv64\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCy/16Ho6HdRKlNQvSREw6Vu0JE8pryrKbCQJ80A2V1wQIhAPODAhj+mtmhafYQrJWDM9NKAf5zWA2sE/Er9jExQLnf"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.3-next-1591365909-4545c691.0_1591365978636_0.5300166557248231"},"_hasShrinkwrap":false},"1.32.2":{"name":"@xdn/prefetch","version":"1.32.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.32.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-hYeKa4d47RMzNWgG/aTEVHOvlXGXsKrU1/Q8tsmAiDtKfktugSshL71mYOiHryHAtUPXyjtUb8ccHDunBgTwKw==","shasum":"75764c06a06fdb439759c51c8133cc036cbaef29","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.2.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2lN9CRA9TVsSAnZWagAAgGkP/RBl8zb7Zc8NuznR8KJP\n2BxvJHdz53/iZobcDQPp+DcytPtOmG7EUhexFmL0QbzSGe6RhVkfvq/JpP5Y\n2skN/0Mrq+pO1edFikYtusJZChCdUI7dqr8h4gPEFF0FIFzmjOwagW4Uv+9n\nFA9HKE8yYPZz2DQnGxccgHzdYc9wYsOmlMxsWVDaq0m9k8S3v/SLIkxezTyW\nMe2tcFky0OYd6JTfzSdSFCF6cRAndWXig5CAsiwYSc4TudSY+yVSXTzfcA6V\npVdEQClnmJBYV8eJpFRRfLQ8T4KeoE3pr008yAJIRWy7sYcnX2p/wtgR12vW\nXCxFDARRw88fdTfO7TaVRuAr5FOX16m1Zo2j+0ZCT702+buxvcY99OrQctIe\nWFcOML7/nasxiOYlquzO5UOKORMb+V5eNqJqI9iUz/sQNrgdsWnu5oyllV2K\n2b94jXn4YD4Nuc7ChZGafaljQIsgFWRm5iuoPEifF1Jm4QeGrowvxrD+QW69\nTe/LGy38jHq2FCaCJ2mrNwZYThrRzphw+lrE4u7EntO0eTXnMIYcimzh446t\nNlDp7acIz/y0OVX7yo103cS5eFgH9ub9ulyK+NDuttaBBkXJlTNovL4o79sc\nqXzciJktBzwwuzWb99TEN8d8hCwrfuYOW+LV5aOPzfjQIqaRvVg7OF9ES9jd\n9VUv\r\n=GgUH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICSomqcC98KNYR8dU6mE2k+Fy3jGNIjeaKXi9me6EzLUAiALETNN9UYM6czz/aRuKbBMY4frckum/YHISeRAdMCkIQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.2_1591366524838_0.0351593682375666"},"_hasShrinkwrap":false},"1.32.3-next-1591384132-b7f29ade.0":{"name":"@xdn/prefetch","version":"1.32.3-next-1591384132-b7f29ade.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.3-next-1591384132-b7f29ade.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-T9Jk7dsAJje330rY1k2u4I5jNYZvmCxRtzvP/cxWmpj30NxVClPY27/hojFdSy8m9ilaunD5SLhidBx93OEUJw==","shasum":"0653ac1cdcc4135939c3421a1cd11eab91c5dbdb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.3-next-1591384132-b7f29ade.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2piQCRA9TVsSAnZWagAAdQQP/jFIaXvMCxf/trSc+JKA\nM3NecpuINqI8l68bi8JQIRo8i88Vm8N99kiJs+u/GQScuHOl+Z+YDNZ9hNFB\nvJPjcrOW8hxhPNF0GWXH+jBezGUw6qHPAk47oAOlHBFFkr6AbmDwvZ0NrEXY\nMiKix7zzKf/vUb6ud8EK5ogFQYhmTchYoYp+YdOhyAQXu8/F0+yNVEJGPIkc\nDb6RNRjRbvkA5DtXKtBzuvRyQjo3mo9Jx3hX5lO4jPCchMecBuinF82JVl1k\n1/v18n6T3H0k4s/9WiKsGXhqxrdnLzuXKIcI/6dXYrB9jQ3cjL634z7d6kk3\n4mnjsEUrnAcw5ehhJnr1z08FbF+/pNh9V2GB1QnvdKnq9wEhc/HfNcjJZiKL\nlZn+PSpy9H6yAKLLXMqpqZkwhpxcattJMygWlRjtPOMhcN8jocWT0hFSrZOF\nU6cS2WAzy/z5koe3lF3+Nc/ABrxx8ZohVrqHyNrjDP6ijBbtjiSLfa0WqgNm\nOH1EVbG947GkLbnw3JrmDSR4qOHh0LhS8RM67h6on5LAbmaDNiC/siF0qvoX\n1XXdAsbtX01uHw5L03oOfmGQIgMwEZEDq9FOgbZar84119oI6p+CqxEXurvQ\nfaIQBX11SUW8e6KP68ny9+vEK8bMxuHG7C+KmEC3BnDqpgjJfMHmWiK1s/7c\n2E04\r\n=RTPy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/aYQbth8LuLIwryMlxxeWGGmmuw9t8sEF5lXnx3LHswIgN0XDglJLbzgy8hYOFBud6tMsoNm3bRGSONgnfkOygOU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.3-next-1591384132-b7f29ade.0_1591384208270_0.5154810989298904"},"_hasShrinkwrap":false},"1.32.4-next-1591384237-2e40e89b.0":{"name":"@xdn/prefetch","version":"1.32.4-next-1591384237-2e40e89b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.4-next-1591384237-2e40e89b.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-jOeadyo8wwJVpswXXax59gxoJGUmpG3cI14tR2RwXCiQgqrs2quZD0ci5jOPsSsDQEfaejDio1BSnK/JSVYlZw==","shasum":"fe96326a6e4fd431041f9394656f1e53dece3f86","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.4-next-1591384237-2e40e89b.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2pjtCRA9TVsSAnZWagAAofQQAKPFHyOO5oT60FXSuwlz\nx6SAN86bWelEE1GA61Ez29n7hvjS7HAAApyYcYhW1rM5LpcRnNAE/NlkKSBB\nNlcyyx6rfWo32DK99zyWdMVWLFeYJAb6w9CWsUKlyQFCTXlVZzhnQvsYHIyN\nXtydn+nR0fluEvrjtQXK2L0P/7PSxjgLC+gDy73W5AugGMXsPQZAYoalJbIi\nOnvoTIGwY9Sg+oMjCeL3vKNptrDcLlhSqOJxUKfm9UKpSyv+ZfePixtnxa06\n0qhM8AAukOrvqPdsjaCYEmoi+IssrntKRRvc8b7tmuKhgmuc1XqSFR3/puYD\np5czTykew7sWi7+rIlNN0ixZmr8DfTD6QOmOSS1x7pRMnTYe/lMEADve5agN\nIhlOozg6FcJHvmkmvw4b23o5vU1yMmV/xljmBSPEZY8q8zCYrE/HGpbI6eoy\nIRqtgrm1QSOnNxXqbkHDYJYiKmrK975/sy90h4hRcDcX0nFV4Ne6CaXOiyYu\nrMUcujULNvnrck6IuEWtVUO1qTI9FWteRd5DbP1Fz9HTwQYCSa1gZtKOgDOs\niU1PnnsNfUA2e6AgqrMf1RPsFXeHZsLHPausGs+VX+NXahNkOpF5S1RRYJ0u\ngboTFBgmq7dw6JbNX9sVTmjcp42idKCFWSh3mmG7yzGYS7DXORe1LgrZRcsS\n1Qx0\r\n=ASNZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5Bb0T5chqDh1NKB95oES2WKCvI9HAxwqrRRrEooD/OAIhALxOPu7ozvtAL57RxctB+lSnDg82hwP0aB9JQ10Mu0D9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.4-next-1591384237-2e40e89b.0_1591384300994_0.8176164028275406"},"_hasShrinkwrap":false},"1.32.3":{"name":"@xdn/prefetch","version":"1.32.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.32.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-8msc0PFhdWsL5vOftW5XJU9qRaniez6p3E+VfwE6SPFnPHSLx7qpxDXJCuAxwE0QFXxXxaBTFH4DbVO5ntkedg==","shasum":"d70c4e1bf035022af09a8867ae4b90ad5e0c6cd2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.3.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2pkhCRA9TVsSAnZWagAAH0MP/Rhtxty21xfOokjOfiqG\n5Fkl6W5N4qecASmK6+45bUuIkcQKz7Lnj1+wOVrA6lEtMgm+cYBSexl8lBgW\nHm7vvLJ3Gtlf1MtfoQbfTqFRS0sDa4hOT6SDrXfbBzXAELcq+AlTb5gboyiz\nWEORbqOinotRMmsZR/BQZnPnW6h/HD8PIVw62617uPIjmnxdJQyiPW2mk3Y1\nQkhH7eNGzJFObTxgxP8B2tOVPsTTeefCkCt9v/Ukx1AtEl5uVD6FOORPSGSp\nNEu81BRz0mWeIiYnFK/R5jMDR4WlXysgSGOQIldIwUovXF1P0KCqqVJV7iEY\nKDAEEB+kOMJvs6P1NODRsrwVqJTRJcVBzQNzaxTSHs6ECoMmyENTaARac7AM\nhiyqgMphW9r/QF9HQjGDV2Grv5Bqg92/Kjg4TgSJWrlC/hqv1Iuqg7x/VZ4K\ns5h3jUmit1zx9h2nIAFdF59bMkNd+VRsYP69zZHWnlweRUo+eS+TpI4D0wIh\nTqsFXNBh1j2BSb6uJd2ui/Lw/0VJ2kihS3blaC1ry5rXLl01DMDZPoyzjIrD\ngnh1no+z1O+bo/ttRiK5FzED3Cb7a10Rn0+NmOk03DP78aLB81zhtuSIpLZT\noztJsU85z2/pJHc4TTW12aY6Wego9eaE+BAubhlNPsw9Udb66khZtxPrv7aW\nj/KF\r\n=lnud\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7XaaUkJMWQ41yCi4MDB67A/sdlb7QK3VS+u1mmpQU/AIhAIJ7n3OexYgn3wqvS98FluxMGqqxFCCzhGly4z0FtV+n"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.3_1591384353361_0.9784105836347352"},"_hasShrinkwrap":false},"1.32.4-next-1591604924-0c44f6b1.0":{"name":"@xdn/prefetch","version":"1.32.4-next-1591604924-0c44f6b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.4-next-1591604924-0c44f6b1.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-GxmQqhoJFD/r19u7igZJWzBxGw72/YboJX0xbamGR+eqRBGtNGrtpeYCemQVFBWkgiNOs18FpjaH4vAJ6g+r4A==","shasum":"4ed5ca1e7efcb3a1bf6b0708f150877193ddfa64","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.4-next-1591604924-0c44f6b1.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3fcBCRA9TVsSAnZWagAAr/wP/jYGkU5EFfL/CPRVHcm3\n6u89Kjn/1V0vtp7b1Ms3A3yBuHlLb+UwKA6keR9ScaQcF4jmx5r8dmLkwuUc\nraUDbdK/KuLvHVnD5T7kpk6LzD5MKM9mo14HO0uhSte6CAS0/NDvWv7Lq4po\np0U6m2lY7d4ttk6oj7BRDrY+2etQwm9YS61KEEVrtfU/Vd+2jgafUT9LcYEZ\nU0sgEQbvySc5gu/lMRexd+uUGDShVOGI4HdIg6rEfnZvQXnu+NMw+2RchfEZ\nbF7gakpQivrmVLKST4gs/bj4Uu7VUYSxu11ZrvpzLPS9TmVTSGw7daNvTzpB\nsLc92azJTS4VhIVYT1oximLYme5k1RVTzl6+XZvMTLuT9i0mCC9TKKrIzqb2\nQNrs7C6UTQj+WqSHS6dOyjvawB7vHs0bIm1O8neIoTnBOqLONJXfSGwbrml1\nCDiuz+HB6iXIuB9wFsdaIzV3hWO0vlyZPEqjnVgPr0QXpzz+vMWMdD0czRIe\nDZL99OknUPeCbBGdM9PHZ5o+7u9UUbLTSXLwGDVOcHFB7wprDr3ycOePSOmH\nRPc2KQHPB9aCRggzG1mUMsu7lq9UjdHs+cCZCgaSPTFmnndjLiJHXRUDEl45\nVKnaIBBhBhmf4XiAJ37KGrP2bmZ2jPVJmclCXYNrQqBHhqhXD0PNu/2cXb3y\ngqud\r\n=1F5t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHq0nXg82uUlqQBVBuGhyxbaQt1Nb9F/Lek8uwEzS+OuAiEAhYTXBZ9R27ZtNixnNDxvMFo6l2TnaR654j5BkiWDqKM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.4-next-1591604924-0c44f6b1.0_1591604993348_0.17626416039895454"},"_hasShrinkwrap":false},"1.30.3-next-1591615549-03794b94.0":{"name":"@xdn/prefetch","version":"1.30.3-next-1591615549-03794b94.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.3-next-1591615549-03794b94.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-rGJB/gMGZ0/pdeJ/MbwX+dCK0HA4doj7GzSkOSgcWBbPLEs6BlAEmEnLwc5/noiCQuWpcbfia2GR3L2F2rkgaA==","shasum":"a1775cc336a2e1d2a584af6548f5b164021f7892","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.3-next-1591615549-03794b94.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3iBzCRA9TVsSAnZWagAAENIP/284CFtJFnfcgfsuXT9G\n6zdhb4PHys9IOWSwkwsdFQFqa0vNnNfHVQZtdOlzvdBXbAExuxJD03Uhcl6p\n18f/VenEqwrV7COPA5G5w5MAfrEYmp7alxRIm7WitY5g4hdcdNBcPTqHECcD\nidzqx3ad1huop6iQy0nCH/UugaLJ3VJdhjzartSTXY2XIGJHTaXcBTbGXA5i\ndt8DfKzNVJEfo7PksRbHTIuA7H2eJuLaGRhbuOxEgZRO3YujFiKLxwrs32jE\nz4PchAnoLTCnmiuTBanvec+IsjuycgoN+cCh1pATOWEvuRxHaH7QMdVBR0b8\nIcWKUBCpPq+fb22cXrbs9svvn1oY/12MrM9jc2tyshDdvHqp25NLOWi7gvOG\n7MAyncE4QGLmO7PEUq/iACXLq84M5t7cIrQSi1QhTYqF2jehQJS19A3lK2w5\nLRkfltSyiEaNbnwYiXyFhd/PN8qCDojJyPfnol1d89QUE5r6IJS8S/xjzJoG\nN7AYjwuXdcsZOMkSmZwUY0Lo8mw6eHpfmFVifVEzVPaDdfi7AvIZ9AQhA8lB\npPj0mDPRgL3EuKS9YHo0OzT33tMGb5niUCkxHyd/4SXRgbKV6UHTEMG9KY3y\nOsvrsB71WKqAqFzIopXOhMSTtxop9JG/IIzyuQhdWc7uqvJ+1o6noUDwN03O\ns2yL\r\n=zUWc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICc77PvfZMEv3wdu821dkAIZUQWQphqOfLRDjnwFFIBVAiEAyObsNzS2lF1ryt/YLUmetUS/GRwcVcrNnTUGElYsOv4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.3-next-1591615549-03794b94.0_1591615602941_0.5662758250088624"},"_hasShrinkwrap":false},"1.30.3-next-1591616664-dbbaaf44.0":{"name":"@xdn/prefetch","version":"1.30.3-next-1591616664-dbbaaf44.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.30.3-next-1591616664-dbbaaf44.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-K2XYpTVKKoFWbiJPqdh1vheXXuxheQeZGGX/a+/Agc/PWFQiVpk2TKwxiSH0I1++q1vJY2alThiatiPVTj/zKg==","shasum":"214a6829623001cacd13769be7806338192fe749","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.30.3-next-1591616664-dbbaaf44.0.tgz","fileCount":46,"unpackedSize":76992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3iTWCRA9TVsSAnZWagAAYBQP+wTOnYHDMcGfKITYdJXg\nQrFNPLFx24C/rhs0n5/ae8pLgymzAlJw+NzaIQDE/TCVfcfZSlSNkaK5x+BR\nj6EddgEEb3qB3rI71CJ/knxACTKGm8AcLd++Q9nqWwEHUry0hVOqkXgOrpCD\nG4bTojW8iJolKQOmv7Mb44hdOnglN4Xj4CpspDgCk0CbdnFgiBz5D6KwrEXa\n035qr1oNtvvYHH8JDZlC7l+iiovYvGsb4kRxv1nJOdBIDP25nLVWFG7AdG+B\nzno0LcUktAu3lOfGha0Sz/pKKlaY7SyKN1uOCdUNTSNpN3/72cy0LRs7XI+b\nJMkQBBv4oKW1LdpwMYGehmALuwAbvT2ddOv+FDCK9dIP7/XhFYFdYINRuU5h\nRDPhXszjokTSlmkqebKE502/+CBTvH/VoBWFz3uDP0b8yjQGCz5E6mILDYiQ\n9bRwJg2219N5muGlZTowGWQohh4n3OUToC7RVHP1xVgOzkpPUBbKscGuA8qk\nJ3qMqQ+yOlvs7L/xtwuckncoHE/9Jki2VYxo3RQYaf0dMcBlb8otttOGSEHG\nSgxo1V3YvhiOEEG97R0eyxVK8kB23fkkyfjOYb7EiON/wygWqFqhWVslFq3w\n1HTNaSteZRfqTQyft9ioDk9Q3Az0dT0NHRw+2oglrzMKKohhfhzs31yzTKKG\n3mWe\r\n=q1Vf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIErN5qyQsSBLZw/Zq8eg4zWcb5rx+hNN11jpPJMri3KJAiAnuFhnvP7D3rCSIA3xVlZO3+srzQb9X/DFVTpgtnUycA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.30.3-next-1591616664-dbbaaf44.0_1591616726572_0.14516602630254338"},"_hasShrinkwrap":false},"1.32.4-next-1591617441-66aafce1.0":{"name":"@xdn/prefetch","version":"1.32.4-next-1591617441-66aafce1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.4-next-1591617441-66aafce1.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-LJeUj2+IbNIxBCQknUWHb+3g6JOzOKh8+tDnB8a6jLb5tjTwsw/tSpCTqd1f7DKdTE2A6RHEsAcoK2ciXUGFig==","shasum":"ce6ccc991a556cc59acb188c86e2147a6e8f6784","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.4-next-1591617441-66aafce1.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3ifpCRA9TVsSAnZWagAAzzYP/0SeO6QRqK9DPdRiCEo8\nHzBkcaCDgYYMFM9cPiB7IlF8lPVw1TdvVCbhdqqE558Blxtg2jiimLbIX9hT\ncwPrbHUe33kYyENKwzPFCqLVGhIT3SGpM553WwkITh8fpdphO72nOtq4Dp56\n+U9slKMEcuBMQb5N2NxrRoTW7LbmIfrF8HEr5A+9hKnuneyv0XSgaWunREc1\n32LFANUMxZiyIqOY1439UB+UgesNHNlzbUMiSgzGxt07Qk2RwZntc4bL3oWe\nQb0c+EAyY686FNFjy/slfAMs/0hro9ICbyA4JWqfbcI3/mrIapzidUftkGCC\ndtT00kK7X6usbyt0yl4AbPx4G4DSUNrlcPPuw9UtipFCsj6GYbYqieiwQ/OW\nVl7rKbKs9bOiPmXSRPBaKyjNd1Ha+FKxkwRNE40qh4OXSfsNq1xpxj+dF77Q\nvxP/KSXBfs8+u1SFkK1vyIVdhlMJVJXhikd2y8nlVOOv30zM6aEvRH1Zx+10\nlYtYard9w7cIv+i6JtUT3wx6OT+eqBBQiU8EctxM2CPjxtZepiSG4DxZthz3\n639KcHSsmo8JHZpv64HxQdd3LBHex5ERAzG3WJ5J8ws0z+hnF+N7qG8HycBG\n/aMkVXDXsxShwBGg4vdM2W2y0l0HFZHlZpVw/1Ip04bjuyr6ncUF0Jbli6GV\nb1c+\r\n=UeMs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC8974gjgPry50fcVLvIfkIlBCItc9zXRRRkkG6XHtaZAiByTDazJaJytJTqBWOgL4lMrQw3hgHdhMpBX2EOfRDkmA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.4-next-1591617441-66aafce1.0_1591617512769_0.4782770053890064"},"_hasShrinkwrap":false},"1.32.4-next-1591617746-af2a6a42.0":{"name":"@xdn/prefetch","version":"1.32.4-next-1591617746-af2a6a42.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.4-next-1591617746-af2a6a42.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WteSkFGXRaM778wE+nmM6fzURpwZjWLbbr6rAko820YyyT0nOHBmDS0sMkYtmDqz89FyUv/UXu3mpMkqE9007w==","shasum":"6faa951a90babe3b3f002abc3cd9fe81c3bf6de3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.4-next-1591617746-af2a6a42.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3ikSCRA9TVsSAnZWagAAHGIP/3tW5GhiQMmOsBL1kp/w\njSbJkm9G4cD3qslE87ZvCk/s9qBvcaimw5XkN9AyzWFUP0Tc/E3NJ+cXmZx4\ngBXJ2NkZa5ck7y18KDkHFzof+mHfpTgzegKL5Vll3lqT9WPcYJmRx5XEPpGq\nYS76muTSihI0T2swY9IsI2S3JEUBRNPQiNMled3HFMJ+ExLctOBB1bof9IU3\nXcuOAsms2su9UgGCrDko5CtLMrK1yR2n3cAX+neZ2A87hqifYqlf0l+bAIcw\nWGzdeyPuDsJRmhhOTpDx6Q6CFHvNm7V1jqYjQjrSVuhhVGKsRY8vwKtvW6Nb\nFBBiUjAAGaktqd8u5V8lEsH2IlN2132RrdWWBo54Eb6Gg3ZcqwtTncMIYkBP\nxPxoT11L28GgEwN1VtY+dlEahjXzG66mr0WXFBlpJ+nq9pXzS0G77ZJiNiWJ\nyEL4qtg5Xe4wtTRMX3qIRxa/t0S9rxCaWiuHY1Ras9qR3YOov0v8XW5NXnjw\nl23HICBLoBeEtjcvlu+YwBmGyWmuFI9SZV65KAq9zgZ/eDgNpZO4iyZlyxZh\nE7w7hlyT/nGE2jKVpxsRw1NLaxFtW2YYle8My1cxOjpNGtEJKa6dlfm2UZn2\n1Ps9vZw9ZPKBNjmGupfDLcZg8nGQuSZ1bK2JDg35vapSCLnsPbHCqbZrYPNk\ngt9j\r\n=3Wkb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAI4+L9MsBRpAeMk1IVbo6VI1+/TBS9ZiN4TEkJOVRzuAiEA6XCRmS2XvyvES7ertPoXtfF3A7urrvIn9qYt5UDas4Y="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.4-next-1591617746-af2a6a42.0_1591617810194_0.05199515249179476"},"_hasShrinkwrap":false},"1.32.5-next-1591617841-57ead78d.0":{"name":"@xdn/prefetch","version":"1.32.5-next-1591617841-57ead78d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.5-next-1591617841-57ead78d.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-kkxHYhG2x303Bz/WCJzXMvmaljFyxcd1zqf4uVCg39ZZuSiXt7nZ3TBp6tQxMBpOgbrUfPiHD3pTdjvtz9Y6oA==","shasum":"179171115aed066d6cc7c9baa383287c383630f2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.5-next-1591617841-57ead78d.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3ilxCRA9TVsSAnZWagAAhMEQAIe93Qg4KG4ZzhpOu6Xl\nyZbv27nR/TwoKWPpEe8POv9CYAGjqAXCDwEgmv5T98PSTknu8ezrml1HPweK\n/K7vxgjOXDQVcV5Ed5TxqLjL/TbZmJvmuVBHRbDoB97ciY/wn/KWocadeaQQ\nLyWjAJamFxMJeVjhMCbORdm0m7orHrB6jVBtOQb4Ltlof+BWejYW2QTuuuuS\nACw9PU/08ZRi7+gzAK/xzlWWp15muwDEgv0qA1n9bLo78KL3nrkMTd3xZswr\niZ1HhOD6TvU41FdoOLW5q+003rewCutC7fJ7tGPwdvdsiFjiabb0UaufENM3\n/x45yVRe0bQkc79oIgBO7IoBbul6GuIZKr6+XunmWWZEqynutiIw3VNfcADg\nxOLxqm0tsp+LVQvv1T4ehozbKrIBgX5QfnO5EsB8n6Q/QgCYVk6XUq/C9LLq\njJRkqe122gkwZXr96sstXZ/2AMLSoxYcDr9nyUjT53Bfa3rDUl3hbXoLsJPw\nvk/vv0fvz6IuMyE3ElJQ/HQXWGLWUjs0blKYmAzzrnQnLvhhpXyX5V1DhGrF\nHi5T3FBhXWgy4H9Zk0NA+FEIouQNz9si6UUXr4mlzjBpAatfPmU5YCD7wXAC\nnU/SHv+6/+uqvGNyI7rkvyDrmmyBVGOL9ZdNbfMGkXSAJXT4h4xG77LXEQle\n2u5Y\r\n=FzLk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSCArBdcJUPJMAHsAmK0beu4sBqGtWuSSMmTVIbA1mdQIhAJBeTaoaFT0Nrww6ItPAKfRtAZ0ZwUCsBaOymoAE6Dpc"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.5-next-1591617841-57ead78d.0_1591617904949_0.05767888044456693"},"_hasShrinkwrap":false},"1.32.4":{"name":"@xdn/prefetch","version":"1.32.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.32.4","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-X8g2Jcsg3TW5kI0/oD4T/D2mTfJ5GrKie7acYSyQctZMzuGr1qv0c3hdjXpXsvGfZdOAlicDkkCARougRKT/vA==","shasum":"9b5fb1d009b420ea30b0a62c3a3f751ca255e8dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.4.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3iutCRA9TVsSAnZWagAA/RwP/3ueA7p/Ykft0sqoi+xa\n6QSnIRQbaY/sEMREkMCnIYGnGneODoyqGZ8JvMQMsmHur4GHCUAY/ZFna/aS\ndxT3NMaGyKvE+pa+jlVjh9Y2v1Yy6cC9UYgmaUIeZQ4PU9Mp4JXMFwi3QIIn\nQNvTwA7mY5mfzb9STdCfHqGadKLBLKnENa3mfTRB0cgWweqsH9PTOzeQ1Uek\nuYvSeelFk/PTt58neoCwSS4Xz9OZQj0a9s13RPPfdST/FzEqM0ruMo3mLl0V\nz/bkPLXFCQh2/srpEE8BNqWsIWPJC7mTB2+I1uFJ3hu1FleCCKRbr7mBW/R9\ngra+k7Y3HSLpTyEsJ2EzaJ2C3AbsRxK8z6ymtZ1rDAeHREsq0CD9Nd98c8de\nrzoWzeg8bfDkewyO238h1n9oJzBNAiSX9BiyLRc0RikOnzPxtr+9nvXey0C6\np3S4ynZrK9bZWOQWznsZfBKLXr2IsQE7oz+cEPsF7z0uIp/cYwKC0D9X50PQ\nRyKZShkad4e9FRRwloRX2vxq0RboOd/7CshCnGn1ENWPNJO+1u6NDWjPimDk\nlZ7M1XqWunWoV8SQ9aMF+vpXFPptf5RcradDA/iZuKFo2/MLxiwkZCHP6QaI\nF0z6Zt/WOCOn+5uS7UtJk8aiOZkz7kCB9irR1oT6mx5dBtsBmn7xTXKRQNKK\n4eG5\r\n=uk7f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4EhtOO/c0Re/40xbmwtCAFzrLNNHFtIeGO3znqKVHLgIhAKPygOH5xvxee63eDswDGbL1pnupJGExL31hjhrC8ySo"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.4_1591618476706_0.7880265762693452"},"_hasShrinkwrap":false},"1.32.5-next-1591620669-d62f2e70.0":{"name":"@xdn/prefetch","version":"1.32.5-next-1591620669-d62f2e70.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.5-next-1591620669-d62f2e70.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-EJsFaqh8Q6ao2xinMra+fAVFn4zjwXDsZ+zA1cVLpP/Bq9SNNU2rrgvCLqeRZVHntyH3xq31VbIX2v5oJ3spsQ==","shasum":"ff0086525394b0222b7be02f3d5beda005a4177e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.5-next-1591620669-d62f2e70.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3jR9CRA9TVsSAnZWagAAKhcP/AiEu3bxlnRRjxOlDRMi\n7sVADip6EcQmlZQ6yGh2jWnWpUpuwq3EupxtBcGct7Q1t+f+SnG4j+xLGybB\nQsEIp70nusxtF5ZRMxZ8iW2DoajPY73hYu7kygD3+r8UNlMAFu1PxSIqdPNG\n4B4YZcxEEO275hqxmRHDYqf+mzKvKc6UHoNy2X3VDAoXbsZ/QL3tQlh1LQ2Y\n2sdlI4bDBnEjGpLeJXMeDYwTbA4Fw3biYMyHklnlIcCnMUy64fSoNBpb0z1d\nqlQRtGPYwSeC52zMlKw2nLlxGpDEPZ7/Tjcdh91/OhzsZWErDtuoVCQ6qAk7\nKsZG/owYLwNtLKidV2NkKI/wVA1fKzVtOqSuM6pt7lo0ucK5jcwKZ9UXxz66\nnIpq3FoRf7vXMFOqE6PaS7eMP/WFo0DQpJM7A6A55cSvqNgxCxUU3xDcLcGa\npp6e53BG5tJ3J9ukoI2yf5zf+PIuG/vW90L+QI7OOiTJo01I9RWEsQgHzI3h\n+ASWjjaA6AOMWC55Xqzk8zpUwns9Mg/V85mLn8kKll57qkvRFPx+bpLCrmPR\n/3Suf01VE/SyLT8qGEGpl+TurMLYhUDaLnX73pxfPYAvrZDHCZ3C9/qx4plk\nmjkXQc8bpE1h3JuVzBDcU9ENWFLL41UEJjWUzlLxSdQKppK4IXhHHBhM+eqW\nKwa7\r\n=23TR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFo01RWcO9aRLZugKw88iWP9r9jjJ7NAQt5dBgSlG0m1AiA9M5r+4ufCrDTD83IzWDgKwG6xUlG2MtC8XgAa+d8D1g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.5-next-1591620669-d62f2e70.0_1591620732940_0.10966055735663982"},"_hasShrinkwrap":false},"1.32.5-next-1591627086-47750462.0":{"name":"@xdn/prefetch","version":"1.32.5-next-1591627086-47750462.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.5-next-1591627086-47750462.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-nMCZxb13dLmKt9JgFnMhG+xA0VjMAE/QyyNUyr0D0X2KFFrpGUBSFdcnibBwsQ4P4cxEBryaAQssyLFsvcUvcA==","shasum":"1ba63289cc9c3a0efeb9bc18758a31d7b61906f5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.5-next-1591627086-47750462.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3k2YCRA9TVsSAnZWagAAddMP+wb5AGvAev28iSQm3Qua\n3N+80/Z8lVcMY5TNGZ8x5F8HfXUa85oCW8I2UHs+iYG/IJ0snZmro/SbSIFm\nhviZKICtnJ2ut5HL4D5xQUvmpvpW0o+Ce0N2LGnAsQxFvmxeqwLM781MiEGx\nDyOmmzVJsR6dpznz890BiaxeHaYyD/6cJUIdJMZboNU6ImB+6yCh69fVpI6c\n89Hq3XWLyX4Y9NuP4dCDCwUeLZwxUUgp2n30bY9uOM/UGzmNUtAYTrC5hxhb\nXr+WUfnIri4rH6VFQvA+HbqP4X/i7jSJZX8Xlgzxb8WOTtDQ8Qi3wQeVhISv\nI9qT2NPlY5xxSUiW17HSBv6XeVYioSvbHnzkr/AdlewSpFRamG8/AsI+iDbN\nI9trsn/hjA+RQyQ7KGnzG5K8q7jsKLnmOqr2dbnZV1Hs/DqZ4WlaqOQbWuH6\nyaPmTVrvtX3rQ6NecKAAYlQLgQL0pkLrr76OLeso/5uLy1C7CKza/r+3uH7u\nqaEHueGTtw8GUV+Azyi4pXttwVkOlU2VOsoJNb8NVCiCoZHlg5UyEjwqsnmw\nVGgoNFdEmVdV2g+So3pnfJfbqmpjCEEFVKSNf8lEA2eOmmu0dKj+ehinFDGI\nxPTZpGGyOkbCOVZHgTgMYlExxBKcZhhHUoqxie7qKLmpADw0NewqlumFbCXD\nusLu\r\n=PzuZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHYByyht+LVbG0vH8BMcTQ5siq99YMYY7y4P5b2bAZWfAiBm3Y9v7a8BoZYprG0nx78HFVwb4dfSfyHSYTtriDFoDA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.5-next-1591627086-47750462.0_1591627160127_0.5755268999086374"},"_hasShrinkwrap":false},"1.32.5-next-1591629014-b4ad35a6.0":{"name":"@xdn/prefetch","version":"1.32.5-next-1591629014-b4ad35a6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.5-next-1591629014-b4ad35a6.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-mvFQbS++YIMMgpLXvJNoElQ9bKTmSbKpozhqs8X0l1rTd2uTsXgqoXDn5RoOjoalSHOVVp5Qe7lmZaXk4lV61g==","shasum":"20a18a4929ca86fa6b5dd20fa496e3ce27b3a562","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.5-next-1591629014-b4ad35a6.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3lUdCRA9TVsSAnZWagAAPWMP/A5xTRgJi7z+iL2O0qwA\nueBs9WijWxUcPBqgDbdy8fJ8ovNECsY8anp0blgVxoHoWbUaItlv/7vmErLI\nTLhP5ZxFMfdPnz3t9InPfLyoTJ/1ZAsgC2yarPoC3L+9crYVibqtXYekynOF\nz0XpsxUdlO0VxuJP2fJz0LnsHIz5X/9V3GFiIlo0GTNU6WJN09oYEppqLCev\n6vS2LADBJFOUXCpvPjzfPWRMcjum7Iap25jjlUlJFTl4KWHytv3QQ4UwI4Ee\ncW1GCM48Lak927tDMOB2BgzOuXWIYPVXiz6y7TSfj7I+Z2UONe+sZJu/an/u\nLf14xHfgsW1oD+oCFqlyVvAVsJxCv2Ys+N2UIkZ9kAzGYkmYIlGs3/iegCkb\nOZEjYHRWs3rDdu8LBPj/HiO8StyxVatO5yvhpjDQb/OzMa9pqyh4a/Ka3dDB\n5od0NSag4vWBdEvgmY8mWahgk1gfBPv4nHR8hcWlEWnMytKE8gLiuXRaOg2X\nWtm8P5zJbVgFZLX0ahn062/t2+QmTlRSBajeHvttdPIPztYEExinlKOcAKW6\n+WK7Z2Ttkejsb+0zKHcTv/R97b3fJFDg69Bp3bXKHas/FwpLa4zhHUkwTJkp\nMBhfDNCo3tIoLXxBibS8q4/v31wDxWwiXirwEvIuIBo9p0XZYxj+63tIEWgp\noq46\r\n=blQH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNo4QYKCOO0gQypK8vTF2vhnT+VUQ9r6MDM9MJygS0QQIgSwuzgMpTwHoJxe9W7Kj8OmqueTxkuAdR7K+FQSOwUfA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.5-next-1591629014-b4ad35a6.0_1591629085195_0.23182231328712466"},"_hasShrinkwrap":false},"1.32.5-next-1591702415-542797cd.0":{"name":"@xdn/prefetch","version":"1.32.5-next-1591702415-542797cd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.32.5-next-1591702415-542797cd.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-B63QY7Tx2kXSG5qcMsUAx1i6PVTkR9LUl4tQIcvTrzXYjgBR8dd1po3AlV03K9Af9ed/eB7klCkAtIhkI4TOwA==","shasum":"daf61bb9160125c9fa8f77292b82f4c0aae04376","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.32.5-next-1591702415-542797cd.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe33PUCRA9TVsSAnZWagAABdwQAJfwrCXTorPtf7SCgkF+\nPR3ToO4idKs3dh4QAlmQw8aW49MpJoHHWH84O95a7S9oaEGkadIl2TQJj7dg\n7spiS0ZzOOl0I0ye18S6BPKZYhegL9taMjn2WbopmplcC7ZTv3zA8gPLBQRJ\nGdd7HUBgpLNIMAFsbf9f38hwau93d/yOQqdOK4cjiOmhyQIuf29VuwFt5g7i\n6bIRaChnlqdqwWdszwAC9+avkagKK4wEbVrAzmgXrm6D7lmoayywbYeBYJWI\n/EH/EQTen2SMPOEVvMEP4OeeHW10NvRaY9hl3o4IB9fSUR1wwHNN4HVRU6OI\ndisPnitniwlh53Nj+Se9T1C2Z3TgOix/vRXWRppCGV1yAmwREBj9ZlUoeJ2l\nL/BqRTr4PBocEFwJnoXFNqn0nM57OSry+0/MHXKLw8EdNM2/vkbdKT7I14Mj\n94+Wg9ikBFoZ2U95M7Rn5r0izS+Y1R1n2/nQyIHEhLyjXNW1eSSpqcPprntV\n2TwzugbvDWwtHn0jnqPTA3Mju6WLqGdgDu7GGim0KfZQpbYxiYNe9yn4Lttb\nIYx9ayUSms3rYesnWreVCAWeuZM4R2AMk9TB78tx6YabTw6RZ53/f1fKmRQQ\nXf9r6j/Ak4SXELbEyqe4wyxLq3cMysOcDRkGG1bdk9Jv1GWKb7E04CfYrVWT\nj5J4\r\n=pj4U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjz74NRpmDlX2QCKQH/zCqj29GclNIgMe4OHOl7VgMHgIhAPpLZowxPiKtdnLAP4xUpbur5yJ5VDQDQZqhdvefl5wr"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.32.5-next-1591702415-542797cd.0_1591702484252_0.896874184598085"},"_hasShrinkwrap":false},"1.33.1-next-1591703336-2f6fc8a1.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591703336-2f6fc8a1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591703336-2f6fc8a1.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Cvv3b/oukKG4fsX3stPTUC5PWyESE0J2WtES+VqcMiV3W1LKGo6Efuae9DjbJZ/cHO1ICYcgp9byifcXT/JFog==","shasum":"91fd59e68384099dc489d88f7cc6236f2dac5254","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591703336-2f6fc8a1.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe33doCRA9TVsSAnZWagAAf2QQAJK+V8vN0tG+zJmOOR1I\nU4N8u2jY1c8Fr/b5Fny5FYX0kY+a7ToSJqK85IZJuCMSdCk/pIRJdx9fCZGP\nyN9of9nPhMxgmz8KecwZMF95zKRZuim1eX/qaOtGWHzweVRgD5oR3WgKAo+k\nrzuxyrqJ89xdk2Od/L5FKRMC5DxpnCI0prvHr5PI7CXvcoHcDWzceaoYgGui\nC76jm1sPZoendgQD0lY8FeAVouf+tp5u9fg8UXA5c3cRnLCx9POBMmwh/EP+\namWgQ7eraA3VOhufAGeu+ClhyCdR1V8yBfHqtj9k/slnOOnHzY4HVV88+znR\n1y06Yu+y1CpnxvImE6U5YBewFvGzy6G9ls11NIw0mn0TzT5kaxnIDKjD40aY\nII6WLmqoReDqWtlKzQO6hlmSjr0w+lL7ce8NUwKtGzVn/puEWyRpzPYAgevA\nku0nJhCYyI4XQjnGtOfT6pnIzMyTFdclHbD08FsqAy0i2fNdSuGUqqSNM1hz\n30QXWCI55GTmvmYaw7l/4e7f9g0lghAElFkiEVStVKBjYTgNUv9ARC6/nWZB\n8TaSO0ujdL8Iu45axfdEo1fTy/ZR23g/zaF1OTJD3iESKKCwDmuLVTfbsJH6\n6MFOKiOa2xxWrOkif0xnLKDVMKnbOwsyBsWLdoy/e8VP09Vtaii/F0P4O2UN\nKJqN\r\n=L29l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDU9F/33oSsrHHDz9FGM3kC21GbkoNBsM2L/VMjKbW8ngIgMHg5eqi5CN264TeR5pKE+YCcpCLJZa0TJqYmqX/Ypz0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591703336-2f6fc8a1.0_1591703400188_0.7699506659208784"},"_hasShrinkwrap":false},"1.33.0":{"name":"@xdn/prefetch","version":"1.33.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.33.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-uQzV03VKpbyoYVp/RDRaLNpBhtSz+/XXOk7DCZlG+8sa2Vn/E0Fg+DyxdQyGg1uwbXg+k4ENTCan6HcODWs3AA==","shasum":"6515279fe619a4cb2107038dcc1d20a3db3f752d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.0.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe37NvCRA9TVsSAnZWagAAX2oP/iL9p3eloOkoiduPvpam\nLRuLFLibo2/iFPNjs7u2o2pm1t3S8TtcKh24xvjBWqLKLjTZ2cUo3ctW//JE\nkadg4fgk+8qSMmwgigZbObPS+a48c/K67/m4qJIEeXLjJqBu52YzbpVZGJae\nGTsPUFB/ww9suRtSwghbOqJpJJeW87D5fJ5Wz2fWhUtEAYgNcqKvMCZh2M3y\ns3PqImXC+2OdEhfZopLBd2Y6iWCEZaISfFFf6895WRpQLnv8lMgxe3dtHSwl\nCJTL0PL20eugY84SIiAbALf6gmpY0QpOT3uojt7Rm3uN98ZuEUjGku753Azt\nTPk13oXjHL8UGPcqDH7XycKxo46LNAKsjug8UHzRV4dNw4pOPVleLr/wetaW\nWfRL6N7JuEvi9IDTdikyO0GNkkKf7ixrXv7wD7GkkLQX+swYFY3KY+hPHxKZ\naSiAwnXfd19GXx6LuhkpZWqXSGnOlSJLjhQBt2GepgDR85E8jDXweb0GZaL+\nqDfF+ozTMMFL0L2ENc1CVfbU06CKd+5CZMuYQUVyA8MzOEAMxRMPyyWz7jz3\n/CBmq1x3S5kJ6RV0FpH+lP2GVX8pX+cG2Qawd6ZMVgdLzqAAa4fbcbaTxF4m\neJFUNnCi4OY1+Uw1i6NGx2EO61Y4ZIphiqtH17W2RRmUKl3LdxClPxPydIqV\nTcog\r\n=lBXS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGVMzgNiewxOmguLoG0Sr5SXBd/mBMhGhoQzgi5givcAiEA0jVihRSzm5K3Tx8V+DbJ0NJqICF/B7vMavJ54ROiFpY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.0_1591718767249_0.8720037175945048"},"_hasShrinkwrap":false},"1.33.1-alpha.0":{"name":"@xdn/prefetch","version":"1.33.1-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","@xdn/core":"^1.33.1-alpha.0","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.33.1-alpha.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-TmrcKUvnNRe/1LUSIptdUkG3aX/DT3ctq/GHztxe6m2+DH4/01QtK9P3qNSE5zRdsbA0cwo6RI/0HQRyd7ISgg==","shasum":"64232cfe7bc5acdf8b6e0b7a2ae9d9be31b4473a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-alpha.0.tgz","fileCount":50,"unpackedSize":89891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3+SYCRA9TVsSAnZWagAArfsP/3mnGDzSerDnkbGayhxc\nkbQ+Bb4EXlkJaMNn9chm3OTS//0jakALeWNEBNp9Yoq86wX7VEjbV2W6rk5j\nt+cYmTcDoZqAMnSa786v55FP7bZvEXqa4fX5W+lVv3klAXKKausBVw/xAn/a\nrW7++odevFcmwjsuZXiO5GyKErUfbMnuLWy3IQ5ATlD47A8uPxQTzTtFbip0\n8e45YRKwrs6lpGw3UsoSIk1K0x1Q/aTpOqsTDz7MsS0ZXIkR/VXH74H8l4oU\nS9rCC7y/nOj3PczC0rck5Zy8mqBvHuNsSJnMNY2A8brwkrDHTVYd4ElzTeSM\nfuJqZCr/JvNa8tf+toUw7lbx+amz9vlTd2OWO3eOQS5nopPYc5wLcQbVHlzu\nt5IpjKHl/VUeROSvuinayplQvfIfinKInBlwH+BIQP6gW2AEGD8GyKrCp6Vw\nFQCvuqi4u7Wx45rF1+9qQB+TkO5rbklGgqrJPiy1IirqSSO5xDIJCTIWCMOJ\nAxXMjtWT7coa1JZfUj90bcSDj/kQrT9t6dDqNjzDo57P0ERogbCVwI3A8dWo\nFjQ/tLmxMSqwJKUzB8CwF/pJ8N665euqRY/Q+4yxuixQWahNSg8HyL/N5yDm\n1WhaNle355XOOuQ8rVi9Hqp2iclyYevbDTBuvEJXrYCr35/lOtcy5EIyh4pK\ncQ3Q\r\n=xp++\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICPxUz8dFh8BrAt/AHIIUItisxmuck6Aw3CY3eLR2IhaAiEAnyibRi/fAooZE8O+IZdxHOO3fz6uPNnR+RV0Qv9x3d8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-alpha.0_1591731352492_0.42852202563081554"},"_hasShrinkwrap":false},"1.33.1-next-1591791327-80d95168.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591791327-80d95168.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591791327-80d95168.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-p1j/o0mj+qGstcz0jAvrVuA6tgy/gyFA1LT5UGbTCGxa9RHF6Ewl8tD5tVknT5UaLkO3hds0DFcMuy5YaIVFtg==","shasum":"8d7a1fac55974d0a7a7dcd88f932c8588d9ab294","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591791327-80d95168.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4M8oCRA9TVsSAnZWagAAQZYP/0ckmZYe6S4we2BIWf/U\nHvacBycGtaQxevbCDe7vGlD9LcG40uBLi1et8VqXIaQJHZPvi8doPDZ5AgQe\nsVNbdivgwJIAfDThxzECAgTm9OxU6VSq8zsOSgPNL0ldc+DVbpJGMeCV//Bp\nNkj0NpsSgvSc9Y5TIzTurALOjEKiUcmVq++5yx76CvtmSWmrP+rn0IunHpPn\ndZGnmzGnz3GY4vB2/s1qptVJiE/itFo/H6+Sg7qgj43xoAuRPQmnY3Z17Q1W\nG9SfCWekeDX5oTD+iHI0toxVZYLVxJ2X0mAOa/ph9QU0dGMfL5OK38ASxQ8p\ngYL4pQJanN/5Zwz129kzZwFBeUaNLoO4il+qXXyPHR/rLvWMph5qJ4cPUJeL\n6M9eImRxwCfen0aRdOzor3jprRjATzZ/du64zltvQiHJb6d4XLbK4YZ+y1t4\ndjYSw2gTadmNlzaruqP6Ov86GzqdMpkE1LC6WdSm8n7ljZxWGitVnBpggIwE\nydKXyqU7PyIf4OHMO8FCiqsijol/aLM6E4UXaEYR5hiESxX9fquP1z2T+zf2\nD+fcuGpJFfBEi3kKiLipxnOZGMOIQAUBfxmk28pCQcOE6fcRmFoaR4/91zHz\n2XGgnF0/BO2RL41WB0BAvMGCHLSn40+P0qr/yTioabyMfbHHlazRDqWvu0X8\nhEsN\r\n=KtPF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDt9HSswMCWFqpzU8f/omM80vmix+MZjj9JXVXO35SutwIge2cNugXrXXoKKAzdvxDzd+DNa2cihsQYmIYVHcGRQ6A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591791327-80d95168.0_1591791399580_0.6239425212006249"},"_hasShrinkwrap":false},"1.33.2-alpha.0":{"name":"@xdn/prefetch","version":"1.33.2-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","@xdn/core":"^1.33.2-alpha.0","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.33.2-alpha.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Hg/ztPdyCHD1I9NmfeBYmzJ0OqdGCWZsj0tthcMxiTxPApBZE/nlobXe/WmY04lithImWzAqvlQerVepnLj6lQ==","shasum":"9723e6c98a9b00caf3623da88d6fcf983ea1ce4a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.2-alpha.0.tgz","fileCount":52,"unpackedSize":96495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4OToCRA9TVsSAnZWagAA6dAP/3WUm1K4Awu4OSfg11WU\nJM/DpCVF9B4f0yIQyX/jenZFbSkBAruVa89eAJ2tTUlyEMG3bIJ3iGzuNraq\n/ciTeN8LFaRtpAELknWaRdDQZRdaS81vBRATSw1EqhFEOH5AhxXlr6mGZ1Yf\nvxGiJlmj+QL1zvP8CiGw7elLtFT2fmJiOhu+QU53Faqn8AlYNKcBIML+p7cy\n72++OLrWrAKH4RSDIcW3BBA0TS3pjPQy0sjXrPXwgNjYMq736vvHzcbL9bH1\ntbVVsKiNaXAkgQBznHVE910YhHXAWAXFW1diD65h72GvwVRXRH2TGXRX4zte\nNq/PRLJCJgj+p0di42cDDnVd575crQD4eZ6J1y7jr9GCDwQhvtA83/ujhIFW\n8R4A7wG790aFrW1XxgCJgmJB6JlbrkLeJy494yrnLuFEUVMfsnUTsm6IyQxM\nMVCEx2SyMJyxtK34xqusdS/XsGQIhJGqw7XLoZ/JvfEXoWQlXDSwGszwSMO+\noFcenTwu9YQd4EzNJw285wD8VCZXs8v7S3b/FpW1fpdXfAhj6puHn6z4tXRe\nkcedP9cESgiNfHyLzEvHiwagrwgUpkprXl54O9Tx0vlfZ6Xw5RGdjKV7x08c\n282XX0HeRXQnLtce+slQ4p+Yr+ffIzXXUyTXP6U8YVaUavWyfL6DxKvwZotC\nXCFy\r\n=NyhX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCezLHURj8V2H563LRU1sR74bWzS7nPCO6zVzuBN5qRAAIhAKhFK87uwmtcciwAhJarsGn+mpNI/ARB1xP0m0mNS7nb"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.2-alpha.0_1591796967532_0.5416073281262797"},"_hasShrinkwrap":false},"1.33.1-next-1591797511-e17e8d73.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591797511-e17e8d73.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591797511-e17e8d73.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-+E1CzGjOd3GRX2pn1z0ZApjzctFIu0TV7i80VRVCtaTZ/XEaMPttWWCyKgkz3zQ1I9cFm0WOFIVnZcx+16NIwg==","shasum":"e679baf40b073fb43f85f392c3652d88d018caaf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591797511-e17e8d73.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4OdOCRA9TVsSAnZWagAAN+oP/080PWLbqbDEf2qr4+ag\nZkmqX99xuUMC+PSs/u8fRMRK827w1DkSUICnXzVPR+LpYHmBfBB8FfHfaURn\nJCg31vSJ/+nesXAxAa2uZv7Aazo2ULQ0CLSkiBj6DWxc7x9VCWmx1oBKQLG6\nUC04a+9QYto2BzqpyobAOzehy3RjB7prK0457ZU8ROFtzhPPO3zszOCxj4iY\n/jTOiDgLwn15+4/JPdYkDwACd+Cp+Rg8JC/Qd/zKsPXjiFVpdKw4rb5qgKN3\n873hoARhRv8CHSZ/khj69fHbK/X53hSsPjpYy/lD54wN1K1SrJXFug4GCHHM\nANOU0fDPFHkd/SoQ/aGYq2SkzjFj1V0Mph0rzmPK5xy/+bbtEEytfyc22luS\nFIVCw7/zOEs6g1mNaEWomW6i0IIosuqGZINArS9CGOF5JtbGxYOYXxST8uFs\nnSaRP8ybORedjOfYhjBFQO4wKfXTAi4HFmzJrDF2gDviLYdOCDz6Hi8ShczC\nZ4E+ECBJMJNxYz0Fb1FgN5yZFHNLbfjOBkk30PIzdfXxRXShKhwoEnPA0C+5\n5/dAcdWrZg5X1mPR/Dl8u/RHAHFH0hmSO3NwVFi3gXBxN/CbDumqUfXr44Um\niEmj5BV5ShuLEnFt7W5Qa7oxX3xziclnEFvCKn/GDZuSNGIoieQBiu0Y3t3k\nPVKR\r\n=9eB9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE/cqr6DsxtqJUzIWGe86p9HXreHtI0NMf7M3CsmQJ8VAiA/1wa7nhDreUhmMrzoYmbgstSGjyEHcYo1ECiLft5Ocg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591797511-e17e8d73.0_1591797581970_0.2868037493464788"},"_hasShrinkwrap":false},"1.33.1-next-1591798373-9eda5fdf.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591798373-9eda5fdf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591798373-9eda5fdf.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ed/BQyZE3/tTyGErOGY1IqAxGxraOIFlKIbyWAnW5p3VxkoEOkaO7i4tOZ8boYMzmnj3ng1GBOhVOlboaIBFCQ==","shasum":"4a4a3430bc2686a7e2546e27715cee65cd62f602","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591798373-9eda5fdf.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4OqnCRA9TVsSAnZWagAAB8kP/jcNaMFC1dYMcd4szS7S\nsDyg6BiHq02cUq8GiF54RKHDAz9DwuvEyOc3aeUSv+FQ4Jn1zlkdPMLAezM+\n8bkMRfHqOESQVB/JV+t9xyB9+JyPmIAhgvtioztdVwsjdGqDiWrFvo0zNCa+\n7/gVY8bttEqsJdCyQ7y7V7zD7JksCljdxn4ZJAgfU3kxKaHH4Zto3OXZzVmo\nUtwhL19jKVzW8Hs6EIpqAHVNROYD9bGTSWUx+5/Pe/cog2UZqbj/GlHQsYfr\nAfcCI88Bd82Isg5AERaIsrAV09Mdwijb18rsvTc+UlfERjVKh/gOO7ubdVQs\ne/QZdPZ2mOTLjomkzY0NdAyCtJ1/g2EbCSkkHT4+rVKQUZ1+7BQS5W4KxZ3D\n4wExTJSzgJKM4AnSTW14dLPVhwJuq/IUQRGZjC0DjKr5+ElSrKlCg/z1MIqa\nCx5kLyvcIDuvwqFcn6dRRCpVDWpuWKUmCbE7jnHZO0pgxmvMEyrYDt4/sKsW\ndComs9Ig/OHqOt74yCE8lALghAdQoxh8Y+TNEkJlML+n5cV8tcIpehVbRUxT\n+fMcMgUIJlKOdiuYGBTMs1bgyGoGieMkBgvQTQ4E4ILWmQwHrWiEILGTMd7J\nzypPWW++x6Ms+PaM4H7p89fRDiAMwAnK1whu+UMkzr2ux/HVXLrqwsX4LDZl\nr6IW\r\n=P9wo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfVVrtHQJmOeS78tWyDZWOr5qvSpP7v4XAF+H8rv54qwIhAMuBA/rIbYpR1yITHct/2jeqRSHF/9rudJ0JOYtvSMp3"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591798373-9eda5fdf.0_1591798438642_0.3158573815945902"},"_hasShrinkwrap":false},"1.33.1-next-1591798472-ce0f7e29.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591798472-ce0f7e29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591798472-ce0f7e29.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-S+5B8uSSKqIW05kmo0keim9sJWTAPlYdz0wszlzn6SlNLf9uLiNcPf5UDQsPWlEhr+w5eoDklUtPLuUT/8TD/A==","shasum":"686ae38f24f6394b3367f1b6baf45e8e54f84881","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591798472-ce0f7e29.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4OsSCRA9TVsSAnZWagAA57IP/3tZYiKQwV59qvoE4uUT\n185OhwKO132gpCET4Eh5BC0y7GL9mcfVbKJKZ2QN9KYsFkfWUJgwG3RSx0mR\n0LqBa6JvPtP+XmXf2M9beQl0Y39eSuL7SoIgeirhf2ZyC07tkQI/UHoNN8Bi\nKQIDSqjeJLVwPInjUIKM3EnuoHA+ZNXZUcZyJPv2bd9GXt4Kqbdkgt1qnHbR\niSwcTZBM3xRHolHEtlEeOg5ToE8g421zjBXtznMKeJAVC4dCIDrUgheBLwE8\niGAuR+5d4PKUfKZd2xeTxg9wvly1iSfDpJpshombOonTNzLeFeyp7gtnb1WO\nUQ9HFTQaImZq4BRhprFP3hrO1DTvbhTDcCcIqmd9K9NRC1EoJEEKGZjfUyhF\np7U7RCmvBAZwJoMVHIu0OTb56RZI5W40dccj+gN13YP7LxH3PzbSmxxfGP50\n/2PRVnl5rH/iKEBMNmLbutqS2JzQ3j2tcA2k5wKd7xtlta25C1e0Y8Qp4gCi\ncni5Lb+z1+BUMtTs3GMcnb8oknSZm4TLDuGzqUi/vUtT9VxfZT0ipHbYHeV3\n4qLMK1kqTb27o4vP8ttBlN/X3+mrOOE5sB//2lO2UZBddDNwjKs1V7GU8DU3\npJz4agZig73nqOi3qWFmELdbfqmpavWO014NPvPC0zwlqQ5iI0dn4LWsds9j\nOR8C\r\n=zpsz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID1Pbz895Epeu4yESeP+JSPhb4svTU47S89aAO1Kop9aAiA355OLzF3xVvUn9v9d4vMKhWv/p0/Gplpjx9CeOIR1cQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591798472-ce0f7e29.0_1591798546452_0.8647180008440538"},"_hasShrinkwrap":false},"1.33.2-next-1591804159-9bd526b5.0":{"name":"@xdn/prefetch","version":"1.33.2-next-1591804159-9bd526b5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.2-next-1591804159-9bd526b5.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-bmWlvSS85Qfz3xaXjl1BKrPHsG7LP4y7omvezKl5zUjIx/+8xx5X2UNwTuVuL6zxFeZoTMXXUI/wJaLA5Oyk7A==","shasum":"c8ad78bb6152f97b92221174d4045c9db8d3a861","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.2-next-1591804159-9bd526b5.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4QFJCRA9TVsSAnZWagAAE4MP/j4r1LlPkN9fMEZS4CZU\n5uZiu4F77MpsomHSopf1kACusJHmLaHjTQrvU+cChZEpSfsqIQcvjH0ldySq\nwM9U+Jeh1sLgiITu7tn0ndfntiufNbIagnsgE9oBSzd9vKGktI2D5h+VJZ9Y\nYFAgAO8rJzmkmqeKpcJcftzVcnw3U0BlKLmbLTmQ88ifdJl4r9LSeD+vSyfd\n4fe/wcGc4yfNYCx+94gaUrrYyKHa4ZRH0P4eoLma+SveJwy0KFJE7Ys5sEAk\nS3AmQ2M7r7neJSsqn9HyrBJ4VcX/zM1ma6lQZr6hz6gfqY9Rh4FCqDJ+mpev\nEvuI4C8bkptyYSd/R3AVXsoPw623Dr7YCN9SkArkLCHtYuiajajqEStf8ROx\n/6PmtW3r1k0ld0nQ+FjY0nNq7uVSA4gSoaMqB9QnK2lURxBSASFu6pUr4igr\nvxilGz94l8SA8bylXQd0PF/3FLn6H/xKR7/6XpeU4fxD9BPI4r1+xDVNHUci\nRlh5EfDS1pxjhNYA6MR67T/ORqzlysV8vOTTtckVprxVhlcB07lzJnr0s3nX\n1+cSje8Io3e4SROCwZtfNM2XMcquuCSBWWg+CAeBxPAxHHsjqVkZ9oCPgfvn\nMDX5I3eP2gS0yU/XvLDPSqs1Ra3aTrAN6vCazoHFH2WPD8DW/Yk0ZK8/yKhy\nKA/W\r\n=i7L9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCapluhGk2iyl+u4FFrBGqAyQOHgcaSqkWK9iFwpqQJjwIhAJ8GKnov+OsfjlpiOemppZj7U5XpesqjKPJ0VEHKiXEo"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.2-next-1591804159-9bd526b5.0_1591804232503_0.08781928213554924"},"_hasShrinkwrap":false},"1.33.1":{"name":"@xdn/prefetch","version":"1.33.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.33.1","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-bDkOYK3lT/pfhU9pJdt1hyQ0wjWhxkoV4eY1M7T1TFwOpOaVqBJ9BESUTMTi/q9wU6TZuFlxkXu19nibGMhe6Q==","shasum":"789f37de836102ebfb9d4f2b3bf781c1497242cf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4QJyCRA9TVsSAnZWagAAmPsP/3JxlyQ+mNXmOgtSBDBr\nIH5C6Q5CoJTwXdyHNfOhSHghP7irVAz4JHcIYnHFjA/COq/Gj/HPQvTecT35\n1xI08Ve6KqAnz568/yJXn/afmCPevIbdFXJcG4hbNnMMA1BxxEXlPmaHuECq\ncf6rkuIxLicV3a9akp/P5rkPKUStUWZnlBW43Sh34yurC1Y0YX+xEirwPKNt\njAwJKK3gFT2tLhRtB1cabWwamY+ceqL+7DEz2BoQe2ZW3Ta1STrQnPNDZQS5\n1N88n6Cpybae+c79RpFXzBrrUV/Ir4aY+wPh6zicIA87RmqLk6wppzp3gBrF\nVPcIAhIFLkFdmhw2aIr9GXEOirZOvFkHzy8E4b9RV1bWr9SfWupJ8sNgb3Wn\nS0bNe3AEU+kBeOe+olMa3jeU/xQxKSDaHDayH4j1HS8sGohT1K0+40rbM/l9\ndlVa8nGnRxJtt2nBqrhQuzqsOj7QrPIf0BihaUPtic39Y58Dwvgqawo+GlMs\n8CTJCCpEpndhPbHC+xTPJghDzPsiXz0uHrdRJLmawBoGFbZXnfhhHvrQMdWM\nhQx3GPEfg9HUzgPpqewBiefVNio6teCm7O5LwE0l7HT1ZMknPXZwwHjPgie0\n2Ss/X1LuGjytiOkXbgqCqQtdQzaULQngRq0H4WIpxUeM9yu7oaeU98BBVvCB\nUEH1\r\n=hSuW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA9QWkHERNaUpjZyYhurZ2W3eYVcC2nI2S6Y22TK/5R9AiEA32y+qoMZ+ox6m3eJe7FMDI8nkvPG2atOib1+JLY+aQ8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1_1591804529886_0.7040300966754753"},"_hasShrinkwrap":false},"1.33.2-next-1591818633-b0caea5a.0":{"name":"@xdn/prefetch","version":"1.33.2-next-1591818633-b0caea5a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.2-next-1591818633-b0caea5a.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-LNg0W7VUORP+7hWunV/6a/NW0AcQna5VrzqTMCE+WgvEBlAl1HH0rqxIqoCAb7+jyA4JBHi7xGfTmTHGdD4ldg==","shasum":"1011b49ae80ebd18f9e40c10a7974263ccf61d95","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.2-next-1591818633-b0caea5a.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4TnSCRA9TVsSAnZWagAACi8QAIyGgZTMLbk1XwAwPadR\n7YeuGM8H2b9VMqGsRdILEunbC2EHUNfIEx4sHxRCMX9FtsvckaVj60blP+B+\nYtatrwIcolLvEzFb8ECnTo5U8Dkcc7vEuJwFkLQyt/7jciyuFwxuigZ9H2dq\nVdQ2CDnPAAoJMPNFhxm0n6FwWawmYCGu04w6AvDjD0mNZt3AdUy23WMY9NPD\nO2AogGPYWShC3oaTjn20ALCJeI0+GII3BAPgHsGEoiGfnO9PwB4maS4ueivV\nUUt8cGhDso3Lf0z/ChyzLhZpVRJyo6OLJYl9lyVemjbRUUe9sbdwzi/sUho7\n8+MlKljZ0U0IOAFzLO3Hf53oRyLGsEwYCpJTi4oUtw2AGSVKT3hCxRAcvI+m\nrjhg91UAFnJRLldZTHftN+bG567r4TVhSBk6m0bXYBreGym9O23fvsqyqOwc\nxU6ay33pyWZSOoQf/bcCDTdZ4LixnkNHhl6idQRxX+qGRGny7TrKD/graD7G\nOhhZSzEL8DrwNTuUfTz3yoMKF59CXnDMdT/9ATISLR26+Tmqfrd7hO5VO5zi\nrhUTpbURMA+j4yLhYd/QLmQVpYfy1OAO4Dp74tWElH8O+tW59ix+Ub3LjkmW\nhmPholUhoWU5j7X8FxlFvzj1zCTXVCIJhcURrard+RcQqq+Q0qkJvQpbHsnj\nupuL\r\n=zmXy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF6arb3U26yplwEdSIb5ST88Vru1+2zT7tNzY3MEEYTZAiEAlCvbbWkJRNmqOd9VFizVncWl7r0mZ9vwxNNy3aQD3JE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.2-next-1591818633-b0caea5a.0_1591818705744_0.30959466191798235"},"_hasShrinkwrap":false},"1.33.3-next-1591820164-cc7e19c7.0":{"name":"@xdn/prefetch","version":"1.33.3-next-1591820164-cc7e19c7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.3-next-1591820164-cc7e19c7.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-K2iha32mWyL0g/GCvNbiBQQqSjW524Q/orotDBz97tLB5DTXYNWXs/jRnNB15uueZr6zqMUOmMP/nd3z3Yn53Q==","shasum":"3fd2ccd51a3d9d70776ec7fb2367cc873a49a9ae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.3-next-1591820164-cc7e19c7.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4T/ICRA9TVsSAnZWagAA81QP/RkVZFbR+oY7mfW7ltJo\n8RbiKJF4P6wGnTyShOHeE5Fux44BG0p5g8xhdVa1FgVOXmd9po0NKaw07+3p\nUIIkSylJRTeaRGXq6j6F0ZnJ7DH1M3v5KLD5JB7Mo4tC4iemrftnyBIQtXri\nvfk4vyrciJi/DsYhUZqp7K3oedXrfXt50sZ4smOjsKqLOFERqFXFDeirL+RU\n8Agtwj/8TAIXfWS4aKqU7x03uebQ5gDq8Bs1Y9ss6G/pT0i8UKXnAJ62s6bi\nZgtLg4vkW0BuQ2EPObOervU4U8HMl40+D0/7wkTdCcgIRooSQDk3AwqUdcz1\n2y3bbmz71MG5UJo7CxucTN2WIFN7HnL0K8ZE38p3jUsWhBB0yuZlunjap2yX\nfD98SMkfmsJqSmNY7hsi4AlvSUSTdzPNvAW5iq5mByKWUoWFWT0+OQN3YIJy\nSNWoPgmL1zXFcXuo7+uZnpemxyIxQDwASbFNrbUlbjdzCSUJDdH9ojpTU2L8\nBhO+JcWcrWBXu6O+ZLKnryg9U0FJd9Bf8QnAXsvSmcJW3dR7HnpaXll1B0PB\nQiHrs7Wjj169ahRTFYWpECCdkueyb3ezuwv7RYFa/XSETOgQDpNMJCH0vcO9\nAVYwusA7g++uDGjIfUsiCDBswvoeqk/lhGIO+xiq+lGcyYdkmknN8ACeIjMy\nh0Dv\r\n=Cath\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbENYrkzN8zKb9m3STDZyKhZSkiv5p67ejlVLDJkeiIAiAmYzJHwSv4MOvuERQ9DQhRzN+zhD5LwFJ+AZYVUB3GlA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.3-next-1591820164-cc7e19c7.0_1591820231825_0.9887340025522371"},"_hasShrinkwrap":false},"1.33.2":{"name":"@xdn/prefetch","version":"1.33.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.33.2","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YYaxkeZcG/duDHUH20Svx0+kMc0w+cpRSh+Ixwfzh4H+Ys5/rIVT/wvVVpjnRmdyzM3NylQGGzz1I5BkTynneA==","shasum":"95ce82dae1d31a41f895e5792535d19f42b31b1c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.2.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4UE6CRA9TVsSAnZWagAAYakP/3Uq2qP7ZCCEhNjhj+7K\nuk0g1qwER6sbZDOUEmUfJhNsfM8RhgQMjNF0eCkERXNpsX1vTCvrP65ife2T\nEiFFuUVl4PGxQffdDjVGyiwwYK+7+kD174eShRv42zRzKOPzr42Mkh/G7aNc\nWd3c6d0mrWZb6hItidDuPwGkzaugp8SZLCm/4mjFvHjws81jMwJStDSmQuYk\nKx8VhvUl1Iky1v0GQSNoL/6G+R/H+GT6SsIQRdVNF7t6yDOiD+cAxjgdo9NT\njfG9UY5B4tKsxmY0ZO0G+Ma/tfUHKWDwaYCZROlK/5ID6KNIdH/hMhJDeLdF\n04q5Ot85I4q9DBgyL6ik7Yqaye4k7DDVkUFsyulGl4m/gOVZ2/Tc68TdfmHF\nEKsZDKMTKwIDsbk8IIrDR1bpPMTkaqJ41V2IQikb+pCSklC6J9BC0tC9+RcN\nm9qD5+Voa/DeQN8qdUD/8fyIHuCFf/uo0fEiH6W7hI09bVqf6WtNDpA3dtg6\nbQG9nau7bh9uzCve5DFx1YNirnjWGLG61zu5U2I70qYkPFT997vf+l6WeFOD\npbeWhK7pPDEhHLPf0U+bwB7AhbXn7qnqIIZrSd5X03x+JTmmvSEX2LjPY2AC\nypQWoynovQLqRsCA9V3b2PtH2N4n97lNurB7mONXKfZycsnJLHfYQwTaP0hw\nXVmz\r\n=VDiJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHSIm7sRhkzV1+ztZpbgJIOEqzA9VVCBZW+PBaHpdCZ5AiBh/JVnAAqHzHSsdqSEuTiAG9xIeTH3s1+9/I+4n+qwRA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.2_1591820602039_0.7912041817063842"},"_hasShrinkwrap":false},"1.33.1-next-1591951804-3b4ace33.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591951804-3b4ace33.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591951804-3b4ace33.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-HRlWID23BCqhWBb/U1MJvsdB12YDeeFr4I4emqf9JThg+3bOA0yBLH1KvXqH26KArIxZ5uEIQqwL1OD9e81bFg==","shasum":"876e3ce536319e10f4e382b44ca85b96b8e376c3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591951804-3b4ace33.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe40IDCRA9TVsSAnZWagAAbpcP/0dqJxGBCC1VLgktHOGH\n+ykbhCcIvBz4ESqF4F3ShdNByrVBr/YPrUGNmO618+EemKqRTBg5GAQqGS++\nfiKzBuYCqwCroqXf4eRWXgLwsiRYb3cJbuvTkLhyJ98ZYBw3ZmB+BAp7SLNe\ncbb4bk+uROiB9ivmkqwgnKdJ6W4YEdW03tOEPGqfF/xyReuuf85EivYtXoCI\nZomav9ijKmeZUOocZWhhyr3BEj6kPHKk0MhOzu/jGI69/UwH4tBsjlYRBbqy\nClGKbJyHA6FwAB/HObq3+M+4gQ64NxGqdJyCgDmfUI016s0b5ZGbKhE4bKW5\nM8X5KS95uCQMz7y0IMNwhixZX/hjYm5FP1mlB6DKuvTpQuEdDvDvdtGeHkjo\nrQY5TGIPUqfLq1XZuU7f7jVQhN5EvV7U0xOfiS+IEQLzZEMp8zOT25j+2wHE\nC0DczbdUtT8nf8bbKGce49r7ZZvA0zOPvygmqL8CUphHqtSucTBcMix1kWgb\npRCKp2NSp4DhcbiZN7cD2ZiQPJZuUJJ8RHoa8BWXiVpnPQuxmQyJr4OPEjo2\nsPdWvks5ChGeSne6RtnxlLaqzr6Ihfp/NsLJx1LDcLgt7p4etR9yt+wD6jD6\n6fBaptIu60cHBiyxyAXVJ6csjX+t6CPAR/k+OO+K3XPE2pG415QO9w+hZHyW\n1Rh4\r\n=5WTs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCPvJ1P3BhFHyaPZhDdAd1s9en58CZD3uZNztNAER+RQIhAIa0Gkk1Fh+DaJISMj4DtlaWAJ9/5GWVV/7+FXOX9vdY"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591951804-3b4ace33.0_1591951874558_0.6335015960677519"},"_hasShrinkwrap":false},"1.33.1-next-1591954589-e953b4c5.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591954589-e953b4c5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591954589-e953b4c5.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-dgRz4tGAwzKTwLSEviB2I4AJlZl7tS1M5RuvZPyO755nDYiM7MgLYgfzyDBqpCkToBAiMwN7EdfTu+b0AQ2p1g==","shasum":"83db54045ac9faf7114d5d6109147d87cba14a23","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591954589-e953b4c5.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe40zjCRA9TVsSAnZWagAAzQwP+wZIkwF3heHj9bD+QVvW\nryUT1N/g3naqHr3+jkn1nPkG2/QrVHADLNVogHpJD+0mljjhoPcJERrofzQ8\nSFmGHE9JCCDEyCyF+k3QOHST+/q9UhYWnoSE3XJqNOZhPEGoxJpCjsIrx7rw\n/KjemKXoNBI5mhMHcq480uEYgmILZ8yUY/IHmHh3Jv/woLH3QU0+l8tFScbQ\nyZ3ZaJmUEWu+taULxmqHGpMIqxKARfbtkkTJndXDUNG7s3+d9OQq+AIPUhTs\nq7sHd9DZULGB/NxqGaK8WaY6xK1j6yA5nIonJzsOm3D4sFY5HUVdNEo3xjQC\neri3AXbnltrl61pHwBobPOzhMB+QAHXadY91dNqalRr3QJN6QN6zbMiyBy9/\nb8ibTcUNbiAapkk/66seF7pu0GPbSH2IlDPNaJzEvsUIS1YVXUQ+6yZKTEL4\nM2S65GbyuSVzlaepIu2c8vvskwJdSgwiLJ1zoWw571RDDdqe07xMqnAobChw\nfaVFgYG10NtWSfFSlCw4kiaYuRgSh6e0ikGpSCxFrcOg8jDJmkVCpYEerNgw\nAbm+EBp39Q09NaNjlm0LPUpUtGseyvl/5/Fmws6cKAfmBYUDX97QXK0m+qmS\nQyeZH0h5V/ULaAv55zBQmj8UUeeXd3Iek0ozYYV23dxa/vF0in831ntpsgOU\noYUW\r\n=Q18h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDdZr0K6nue+ck/jG+nf7RcDhz49OsPsE+SgoypKAn7OAiBWQTBwrRJ8rtpmZJb1xng6+/uABpI8PePbPIaXa1KuKQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591954589-e953b4c5.0_1591954658838_0.21533340872343"},"_hasShrinkwrap":false},"1.33.3-next-1591961052-03ed3950.0":{"name":"@xdn/prefetch","version":"1.33.3-next-1591961052-03ed3950.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.3-next-1591961052-03ed3950.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-wn9m0LGQMaiAeXNLCY8Q2gQM4vKUFw8CeAslwJQnrtOCe4DbBs0lHFxuUsFZS4l/U8ske8FQc6TwMpqMPGv4Vg==","shasum":"b3b6f80ff7a43b06520529875f3cf57ab8c1d3b4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.3-next-1591961052-03ed3950.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe42YiCRA9TVsSAnZWagAAjFwP/25CqdZhpd0p23ou284c\n+w6dy0S1iuvqitPFlNtOKaX05zPOWMrDcMUMXgEeAsyQCHZ5NgFGHC3ntx9p\nMs7jdpNyABYbp7QxsKwqSAAUiVrx8+g4peOusie3IHekPyDpX1H4Ul3b1K9h\nuSDkF/GhO55PymFWBR19Mw3wAjY/X7qGAomv02VmhxBpIEoJU6rMqNG9FIor\nmEP/S44Yl1QG7DdCjTaC6su1C437wa/8OboUeAXz8K7h5+zJ402Q4/CRS2MB\nPj2YQpAxsCmq4nrtz9sjBtF4g9cV4hptouh5bQ6Vjh4FEVB5lX6vabqqfBxn\npRMYM7WOyztcJmcaaZCOEslvZLrCChYDfgVZ8gTeAvqHvberKM4gWUGFu3Yg\noOLqmea1TlDL99UMRmyO8WvvxXvqXbyKIk0mCAvsMMvaQNuxN4LAv/yTFZOS\nXMphibUOJJoCtzrGNbpw1gGpKoXAh50HgSrjUu8/Apzs0/eF/USQkspXliR7\n/gEhvnMN3FhhnbumOg+F9BsaKGv605IHVvr5ysbSDOxELZZyQWAyOSGVmIj+\n9kDos3canBS9Em6bjkLe6UUsTlA/hnUr0CZeFfzYZu8fO5aVAAGloYkET2i9\n3qCFceAfnGmfWPcteQxG08QHZaFNW4MKjpdE9LFpJrLT7EhvsH/YigkvrkLo\nmbG5\r\n=wCCW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFP7zY8smJSlzgMedHmLPFJ2Y4p9j5T6XtdQc5jAYeVeAiA9vckRqsdC/mRUYQ1FEGurkiGA9BdtyliYEiHrL+ZgCQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.3-next-1591961052-03ed3950.0_1591961121881_0.23880792056380118"},"_hasShrinkwrap":false},"1.33.1-next-1591961380-33c74c42.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591961380-33c74c42.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591961380-33c74c42.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-n91RiUfRNB3gFKCVi9IyC1uNAH+vsl8pr4MRAjr5yJiGtqtrkUmypTCrOV1lJSbv92HTAUIixTVSavBX6MJQMA==","shasum":"6c2881dfe364b85dc7c282b218c42860542b0d27","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591961380-33c74c42.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe42dqCRA9TVsSAnZWagAAWngP/idCC+rKTkurjzgU5bNq\nYaYAycEzMove440ZpfJIqV85pBYTfLcvL0AfCMMzarYQMvyceJH6ipP+oyqe\niPWP9onKi2r3XYur0TMLpWm9Z43VjR5Me05T3vEcn6/rnx9kPRg3JH7peV+w\n/JgEXQZnKSTgy1Gt7s4WlVNXZ0ui+S0Gf9cQ7u7Z10NlMld0QMIg3u/+geXO\nNqGh9EA9tkoSAgf+KDGYsk/U+yujJS7ZMlMpzPZt+eQaMQiAhS//e/nuKKu/\nrvuZeQ9VKB4uh6w90sB6mYs8rL43fmwaNOWHUq8ysMPJ+Ks0HDDhOx3kkD2D\nEBZRWQIX4AE4j7iF6mNtJTS6aVgGnWFo40+ZzasCmdm7yVmNmmTdJWY/SH6H\nrblitp8mTHmlWqkZd+WTCk8RxcaW/6wfyVoRBiPzhlNxL3Egla7XhqUEMYC3\nl8pVU2DGf25cfZI5EVAia0lj3Pb3MVD4hfy/dEKRjI/sjX+Rs7Vq8e1zU0o5\nfQiRc6QpEVLMsRbMmmo7f1v8BP5Nmm/P4fa0oDoHrl7B3fLwjkCargoRVQn2\nEOBsyHo7mp7m29sIVbSYq/m0F7v3+wzJcIzspBlO6j1zoSvHTiRFjTd3tPhd\nX4Sx7iWYnhAaITZJiOGH8XS+CvErvIiVDXDJQi0SSqMeZFX165N97C52hoJ8\nWiEy\r\n=Fmy8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxmBCcg/ziYFSl1y4D372QHvSmXB6eWOWF9p8tqoYiQgIgE8ZKiD7EoqqFEeMTsqkeKdgFJUDX1oLgEN5lxJuvRbw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591961380-33c74c42.0_1591961449765_0.6062694390623276"},"_hasShrinkwrap":false},"1.33.3-next-1591963237-a7993127.0":{"name":"@xdn/prefetch","version":"1.33.3-next-1591963237-a7993127.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.3-next-1591963237-a7993127.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WQxJ9O2nctHS0Wk2zRFIRdWQNZyy3EHeVANeHhm+PD2WRiGPw0g9SLcExfiNR/STdZeFUImZ1LkeDnA3r+5uBw==","shasum":"977dda7c0a221f855aa5bedd5b40a251c75fbe1e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.3-next-1591963237-a7993127.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe426oCRA9TVsSAnZWagAAEqUQAIFFPuzClCPv5RFbuEtN\n6y71tfL9P1wuyO5lzw1VhXF7iqkxHpxCA9SLDAScXhNn1g/KyTgBeB5ZSr9E\nSCm5piuQ/j1uvdbzWGUtPRAgb8NrXCLTaHYFlgFupMVKFewGDWwqttKKoSOD\nYCOP9thRbyktv+zU0OB0e/85HD/xPxh7e9La+vygtbxYznr5I2jvAx84oFMu\n5NBMsmsolQJq+4p7yC/Eqe2VWqXGeVCGV7C4o5Q+VoXtm4p4Xr+C/CO+Cj+8\n4oEGFfazlOpd0iUcHZ5Z/Zk9LN2EsbJIbStaKwUXFSv/GOJ30AJmBMO1JKRl\n36hN0z/Yb0F64e5lf3KuTBqySm7il2cCJJhJzXLmgOI5qYa3VjaZHSg+VeMv\nMKQJtoWrwJRZ3R6dgKw4cPt4AMs+UAcE2ZBIhe5yR1KQ2pl9zDfne3j8Gxfw\nexjl/55Y30MT+KgPYt7SWYbadkxGz0y3sHzSMnt+mKjg8wixHJfRyJRp61/Q\nAKW4RQ1RoUOGaAWVThKjfcqqrQ1ZbCUYvC/6dVRqSpK8PGwqvtU+VR41CJx9\nCd4mxk11bMeRfI7wQykjUmcoqitOf7CbP+07j0U+aKpuuoxEf+tBwB3Kj1u6\nOWgSs6idSdUKc1/VjxOLXV3zpWnuDkqWJwaxGIdhKubOnjM7dFwdiJdD/J1s\nPPxz\r\n=M+rg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDPn7bmZUUoCVcMBuZPAb9awoWAW34/fm9HAK/AizOS7AiEA2dlVH17G0Qmu+KVE3w2LY2fyh3zh3Enhr/El9619JX4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.3-next-1591963237-a7993127.0_1591963303519_0.891477996237692"},"_hasShrinkwrap":false},"1.34.1-next-1591963247-44817e7a.0":{"name":"@xdn/prefetch","version":"1.34.1-next-1591963247-44817e7a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.1-next-1591963247-44817e7a.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-VEm2UeVoGorWU5mwqFAHOyn50Nyr/se/EZS6ASZBZqyFIeGf5x/BGCKdqQLu4dbZa5CkbUKm5m2XZRRlt/9mpA==","shasum":"ea55fecb6b833a977c55ee2c04c3584aa80ae3ef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.1-next-1591963247-44817e7a.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe426zCRA9TVsSAnZWagAAk88P/1OSCvsaukR3U9OgSzc6\nb/HtsAo9fhqMpVTF7qqYZh0yNxlgl5stafg3IRDCm+yuD50Bm2T4y2R65WBA\nixPKk+iKgd4PK04VbdoJ01PhD1eHLvcv3lrbih8O2tBwaKJCmSP+MIKxsLe/\nDN+IcKf4bTTTqGllyW0Be1jqlQ9ndOdYIqUEZzNKCBoygMbAz4E4jUUV2sfs\naUwXUrPoqZY+B9Y3DUSaOEv9nZLQzWYp+cpIhD1aYFjWjPgx4TSzj68kBex0\n9qfmXj3pa9AOwZl5ufqULn0DlhkrJr8GMZUXQGH3oRXQkVOmM/lIUOIcLuV7\nstF6PeGhsHBUBaMFiQcCd5F1LNI3m+ClxCYi5p2azJMk+xdafWqQz1AN5mSb\n6dWONyKYMtdTZ7DZlCl5ZWHuVCzeXjg7OzGIGN18OH2uqeGjf5+DzvWqP9r8\nkdI7FCapPuBuwmOpKVpXge6d+G9BYOknHMg9XbTwGX+oG9WH4u0wkbSohrEv\n7ry2GsunnaTw4eKInJSGSlXha3TMHcR1zq0rpP8LecoDMReG6yOZPepe2HeL\nvz61vpN9LQBop3hHzLFS3exkjEsf2+Pk4nAUgitVy0kILvsAHKpSoxUUBaKD\n1xpeh9oHdqSHrnetCz8by920oaR+xpB6qk0JzxgxqY4yFWc1LDKPC6G7kGUj\nt4lB\r\n=g3ny\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPHUM8b7n409FZ32UJeoKM8DNPsShNHaJVHAvns3U8OAiEAzXVLhpMIP/c+TpCmVnTABYQl7CrWRmU96dl9lDRpY9k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.1-next-1591963247-44817e7a.0_1591963315120_0.4883028658857951"},"_hasShrinkwrap":false},"1.34.0":{"name":"@xdn/prefetch","version":"1.34.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DXVYaIrxA3eekOxbUQhG4b39j+OjYwSr6ds6r+BgDc6dEz5g19om6dCmOKazMyJJLWLWqXJUcpZ7yl5loyudfA==","shasum":"d57c629032fa3bff5fb086a79c1a3f6b57978788","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.0.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe43CuCRA9TVsSAnZWagAA6S0P/1zhbXUhQaOdqNQyU3R6\nKHe7GPhVsjlkv9QBZ30QINJsYkrGPAn2ch1bdYsSfMQf5Pmh0wKTGA4CAhDy\nNFJQ/GqcVOmxf4FWfPHc9sJpTaVxHmxkEYKaZlU5xMfADNQsXlmsdtdX9dNN\nytP7MVNmo69+dO2HNG5v+EEulPUaS09Q0WOVEAQaG19hLL/mlYwabgzNHqzX\nTGo33bi/KQzUQwgeuLdgJehv6zdZLRHKsqQC7yNWq+XgFWg25ZrUR+VCWIUe\ncMrDVcwu8ognFc41r9FRFrlZ5Z/5fF0NPMQzItbYmTso/TetYCnzjcCQvF0v\ndcjo1tafShpYzoSIDuBNbTArNvJ8Bf8spD6Wmj+jm0HXDX0Ks07d9rGn6e9J\naiX5/ymZ/uxzOEtZqPRxKKhD+PFwSF+SREN+epFDMx/j5jbLNtkPWVtakz3D\nS1X2sg2gQ+ZqLvpmuhKSS7+xfQVs2XBqFEfaeDSD9sN5K4F0yo7u24Htkthy\nmm8NJWveqBBtTETwgC2EnttnKn4+SHhr8aGBmWRywQ0pgatJ8NZhXaP7FERK\nc1u/bl43cuSf0qW/FyNRfm105PZYM9c0N024CtlF7l8CyUEf3gM22hS94yX+\nPkH/caE56lqczwX6QElMv5abKWX/wMmFPc8HY7V+HeVq2ZwppX9QTLQ/DVGN\nHwWP\r\n=MNlv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEuS0gexSGNik5iCps3/yVe179kiLP0y5vM1dWvAmxJ2AiEAwclJSj/7sSqCIHgDVFoy9qbm7PB4ewD8PT2Wd2bxRlg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.0_1591963822399_0.6064143320711326"},"_hasShrinkwrap":false},"1.33.1-next-1591967872-6714c2a2.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591967872-6714c2a2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591967872-6714c2a2.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5M/qT+hpKmrkMxDeRYvrjAEB6QUoWDLt7CIgdlE9jWZjYU0loIyJFnymGq1IoHP4EAaKaGdTgW+0VDeh55oEjg==","shasum":"2403a24b394a7f5b3b196366d832ee2faf6a9039","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591967872-6714c2a2.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe44DNCRA9TVsSAnZWagAAmf8P/iC83UK9Nbw9EVl6RM8t\nT918PILaNFEvwJkig2h0x0Mv1MZUuM7b8RGo64GnnBhGCDaH76DbEBmfdXjl\n+sC8j9XQL5TOw6AwM99cLgt1IwzCDWA2Wl3GjIwYz4HsmrojGDBa28QR99xh\n23G6Ii7ceKOknlZYHb+vyOhsT2ClZhU2gronStIH4IzRyAVFzTTTnTxG51jw\nB5+O9gx5FMO2mpYEP1I3twlgk1YTRwG/hQ7m3nxfPSv7DjGaEfCBGu/zxcoA\nuVGzaTzwJ0VRVGTI4Kc68Aa1LcKRN5AAOVQGd1O0HAo5CTetLv45rmqH3SOv\n/kvekQ8v23SmZk34A+778zyGMNT9nA1oi1N9U103na1dDfVIAwRTM6EQZWb+\nfsqcU5YHzTTKe+M69PuGvCms2G/SCTa6TpIM15VfyR+4vRYSrC2XgNSlLJuF\nVAetGGkvlLwxkeGpUchj19LsfbScXwHnNQRbO2ytgCl7h/ayhvSxh6Th5aNT\nlUBshfMB9NXAxhEUDAbBJBkhYfti2dfFmo1lFiiEEF5Vw7WlEkeIbA19W08i\nuuYkLhmuvr+kK0uD1UfZajp0gDvrY5GG81E6FkGViFv6diluVW+TSuzLXhvm\neErxnNI18Zkr07a+++oIkf1RBEY+vsiTuyLI1QIQ1UnQ8BHUy+qNHnes3uiV\nfGVL\r\n=8vWL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID6+OVzNih6N22vkES3sPEyBAolZ5li8VswO0K2n8DauAiEAizyzFTat9W37zcoKhD/8mtzYwS+QgacHOKMfqwvpFNI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591967872-6714c2a2.0_1591967948777_0.1557466406490342"},"_hasShrinkwrap":false},"1.33.1-next-1591967888-8f086b96.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591967888-8f086b96.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591967888-8f086b96.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-50bt90zwj783xjK8GhX9ucYxV20kl9VH96Tkz0Gs+hVXugGkiziUfLgTAfKVGc8ri6ml2yaB1eaIt+pNuikVEQ==","shasum":"f9d325b48237710706bd0f4e7ee812ef6f462add","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591967888-8f086b96.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe44DUCRA9TVsSAnZWagAA7KsP/1U6qUZEi6EgKY1dmtvU\ncaOkXd2VcGR02lkRTtHI9LUXX7OAEaE0bLSqxv4EOUl3UrqxzzwCjTKNRwoM\nPySVxTG4HiSXLT4r+V8Wf+0LeFykjeeqeQr+rBElGYMbzNJ/1YT3dyFmwdqi\n/bvaqL4aERL3q9xUcnVH3zzPJ8yrldTCuY5uGEuQNX7i7eIisDRdPNqFtSBe\n5fvzOL563KUqZYiT6PnhPnQVNV3T+VTcccRVuAgJVJPetusGm4A/jx6VBfCI\n8AQMLUM37w/bYnSDEQShWMJ+X89scRw/1T5VlDdjSocWk7MIIQgj/YDeGqh9\nT8UF+pEFNC0r5t5V/I0ErhOb+/QD+BkE+lZZICTKMM6xXFuM75lfuOB/VnBI\nOcD9+2tVEnPWPXzA5fsD8sCezJAVh4Y+uF8Y0hRHtJiDfttszVJ/RCGW0TDh\nxe95iZEuOhcl7oc3yUYjsCYKc63byjzAGTGpnXYk5eQi8eVg18e706z6FTKt\nIgGnfhQZCvKIxk9lMpYLlCgncndm9OuC2HpirGsZctdHXWbVNoF302LrjFWy\nxz6I2E/Qdl/sPyt6NS/7Wy1lq9sIpYF9I6CBxoZ7ODP1+a6XuxM7ojTpdws4\nrb5A1Jf5s/b383LCjkRd3bBAqt2Kna0smZPX2AtBSgUya1Y/o4ofwr92roj3\nazLa\r\n=huQ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMjZcabM9YN8OVmOeJxrA1b3RdRjSYKcei7wpAmLJOYwIhANl/UiUj7aTgv1T45w00jv2CSewGwGAPg7LuNkKIcRFv"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591967888-8f086b96.0_1591967956138_0.2913699866155539"},"_hasShrinkwrap":false},"1.33.1-next-1591967915-55cc7765.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591967915-55cc7765.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591967915-55cc7765.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-vZRnNKJdR3jQ9ttnE85EYXZ7P+ddejptOyUlAZ98kBvVDoxQR3870FvS6fNGKWG7Rd6khpUNt/VaGU6ppV+DHg==","shasum":"8012600f6df912551ed40d834fd1ef6f197c0c97","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591967915-55cc7765.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe44DuCRA9TVsSAnZWagAAMkoP/1eu8rvzeIKeOrOrr29s\nA/e3/UEjVKEpVHvLbbpGrcb4eA7RTfhCbH38zcFeYsKPXcc0h6b5Y3qgr2bI\nY2sECx61KLlU19X/o7nGskhxDOy9OWMZc5QKmPc300UJQ2h6yGFAcgLn6PHb\nqIZhZ55YVtw0kSlw5VPC4OHDOjNeB+MI61ZvayWRq+EsIHj9YUs2vx+9dlHf\nHiP23AZRU6KujNe5VURnp32l81B8NebK8X7N40py8aNZTJTV2JeJw9sm7Waw\nRTV5kfb8kUrBaDtg5vxPrbQfY0wX7G6GhgLUFuuolpxPz3/5OmzZKukFmyZH\nh77IsNUZN7D/be558JsTiDiXtdUKukIaDWWcRfhJeIgTIbvD6/2gSbhuaOlZ\n5eZV3oRXCopQrfdiW0jweNVh6AVURV9p1/oslOxL9A8UnD44IgNU/mL+M++P\nE7X3Tpb3MC/73RlCtuii5K9bl23SEKGgPdJQOx0WNYkAw15bwvPxbMr0BMW7\nz3wFPGjHhxpo9vd6ofUOeDac/H5MZC7gon99xR9h8Vf2ZYke3FSHOFHcp15r\n8XGDwi9xqtvBIC8rPJqNXbVyp3Q2DLf4wRcK5WCAdpmC49x3B+j3h0ppkbyg\nC684PrsOizyydBmeJ1mSsVYy4oabyrbVSHCzljRaworjBGt7HPbt+Bs4YYxR\n0p75\r\n=Nopk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6mjx/ZkcxstwEQvGbCS1dxbU6n/VXCRG6MI0uMkzbwwIgJ1FqsfJmoInGhIs5BANskCCHKfpetIZNpEFBc3WU2Vk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591967915-55cc7765.0_1591967981662_0.46363013955023114"},"_hasShrinkwrap":false},"1.33.1-next-1591967919-af90a447.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591967919-af90a447.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591967919-af90a447.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-HIZWWGn5u7RmtyFYW9u+ck42VVoFsl30QwAYWCWMgVTXTyqbzHsCQ8jzUUplISIMlWVn42D7CVRt3vHgVCjXSQ==","shasum":"911d17f866ef6926de0048c2717107aefd6a94e8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591967919-af90a447.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe44D4CRA9TVsSAnZWagAATqgP/RPxNDMxrIkb6/qW+5x8\nUxbCraiLgEi6oJZV2ZHOfi/nmKWSOX5hV7esGJfjq1J029bBGCQQ/XnNTVB6\nsg3MEJH5FsiJsWpHLF1/s3dbmWZFPJRp9qQ6tIvoEJTAynxyflOeOT/IEWpe\nbdvWwLSaCc+UXYCitHvq8J5HPqom5IcL8q4YBIqGZ7JOla3Gw7/Jz2X4/Vru\nhUEHCqYlxLyWCC/Qxq2URCBEo5Myp8kM/UGdMKEX/R6+wCWFuzp6n1rBfZMR\nytpDgcXiLigg68FA3m+OtnSJyAJnoLNaZz4ewFHnhlgGRAGp0K5jtITB9z6X\nwPmcQPt0D2eiSyluk8ONwFjx4yKi7mY3jAFPmAeKKmqdXFw8A75TJ+VvaBMw\nevQ+m2X6zCTifuUo/2xpDSkjtdLMtaAclVrJ3eypuiRpFEuyQMw585Rh3NsK\n4SxoN8I6RA0bccdQimanv0Ce5UA1sCqZ8fAaJQhUgLKZ/QMCqAHZBUeF88Ta\n/7nKXW8otFXpxlZ+6x3//NuzSxUn7v3Ef8WXiStPTdZemAddaSnuJRzl+r3n\nORgYOEci3FI8DInyFaH2QyXofaFIH4yxgsIdEhNxwSflbrH7oT6wseJgYi5M\nZCM9l/FtR7idL4bpqdYeeAnQsHR2WGjD5BXIZTrJ+Vy/XnMPPx+F1YvWGx0E\nDxK+\r\n=gbf3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFaa5oLHOEfjKftFxbVPpSBvnent7lYClwc//mVA6fZtAiEA2PNsbFHWK2pTmjJzbxWvhrce1Wm8/ID9v12EFNyPyGk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591967919-af90a447.0_1591967992100_0.1888745988637821"},"_hasShrinkwrap":false},"1.33.1-next-1591967907-c86d39f8.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591967907-c86d39f8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591967907-c86d39f8.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-8PhurRz0BHYCUN7QJV8Q2ldRzV2PHbRl6kfo7p4scAnyy8SSonziMuae1OTwaQRpa/fozfipo5W7pwLBdevrEw==","shasum":"9ea13b9c95fae3b1a007eddcb0cbc59a99f939a6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591967907-c86d39f8.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe44D9CRA9TVsSAnZWagAAvmkP/Ry/g1QxaVAVYO82P5Ow\nWQoJ0MyyTcY6wUh9GgYiaAFD0kbpZFTqhFl3cUg/DKgxPkjXtCBS+V9cUYXu\n5KPZQx0acFhZnezopQdsD2HaFPs8hL/G2t/frADoLvPK2pxoh7EM16K3vbJ+\nh07AV+lfuHROjDPwF9gjI9OOnsnxgABjEnh4rx84R0aCWG+Mg6UdCY4hzmLI\n3bWEirlyUrbUu2Zzdu66QlE9bhxMsJ/KryoxUah1WG2+3CiL+ksD34aVI5zU\nTzG4ZwNTRsMxgEdE8sWvYQpa0TPbsJITgtirjMIm5kEOxcMG/hjgQm31BhBx\nzGMNUTS54cCmhEURAn2Zp6Lt9GITfhtQHIavhNTLyuHnVq23KIW3fXl22rWx\nHRRZTB5+dGpcp3juLBMIY/nCTjvntsAK0RkCOCIGhp1qwbbnhTbdsyKwHKue\nExQgevFDsjl6z8iULFK3XDBDzrKXPSIbsIC0t2jDYk1VlW0WxI89JN6PzvuB\nBDbx8nd08D1s1UVL+gRfn6S16IHrH0sSH6+DcfCTuGyPbmsg4TQh3/8yRcPe\nG6tOyddfJl7tM/DwFGfhpizdCG6oAJ+JSVLnZPKKGXMNKG6Tm/ulylIg+tDg\n4GrdwqzAv6TVuKK/o4157dEP9KaaCaSfMT7JECOc2c1PjOuLSXFsWlHdeDBK\nhRU9\r\n=KAcM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGLnj+7iWTfUX4jQfpb6ndYzIAsDv+4XuVtjiuSPl+DnAiADEKgK+y9I5w/wE0y3Rd/+oSFmLRA9xOJWNpQnSrfyAg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591967907-c86d39f8.0_1591967997081_0.6987479899795219"},"_hasShrinkwrap":false},"1.34.1-next-1591972972-e628a5b7.0":{"name":"@xdn/prefetch","version":"1.34.1-next-1591972972-e628a5b7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.1-next-1591972972-e628a5b7.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-jZLlScQWfX1X5Dk6qmuHryhd8AiVaB4IeX4F2kPvwRgMpGW91H55tNeICz5Z4ljZoJcRFGVlyEe98QNqrTPf9w==","shasum":"7035dcc8e6cc699d334afa47f5f2875530647bef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.1-next-1591972972-e628a5b7.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe45StCRA9TVsSAnZWagAANPUP/0p9Mu7H2LsURw2ICqy4\nUmlNDU53R2hio/EsPygiU/r0tdvaNFJlFDss0uRSqFyOsu/pW2bChmasm4tX\njPhG4CAr1CAyp6Pt0ucNvLd0kQGSZOvMsXt/r9cssLppqNjLrRE4SJTHdoiB\nCFUDAIXrYH9e7zPtyT7zozjYhRUhJgHBkSkL0Yh4HIGnpO3lLQY8woKCR+Y2\nOOdiRpmybhkRJ+VQFAYkY3gCU64IgvHkIF6OicTuqJ+JqPqO7fOg+SGROnye\ns24gDMpBnLCEdBTbgW1YNqVGn/8ZW9P/hV1PWJjgI8cE9oDGkucDEoQyjgyw\nz/BNhWDIV0w8B+ShVXAaTVUE6FXO5KhNXF2BKcf5742EN9M0EGFlZ34XtTpf\nqnicOqKzYsoSDkS1ugK1oEX7BtbDvBokKIEkF6km3bSlCNPeN7EbgszDSprx\nKMjdli52sSdFVT3w343Vib6wxIn3hLmmFw6Kw+ZuRR0ywl4xYr7hCqJvJmeu\ntMEJAXxqE+J1McNTQVs7SX39de+PSF6ZIrdP2Tc5WO9Of4HUvo/zPTSBV64W\nMM2t30ad/urxanult+TBSX3vMJMhAVTxhh5ic0euXWRAxz5YVlaOWLa6oYHi\nn9WZh1QOyR9U0OeRAwI2RmJ4cz4NS3FbbVgOaoY4rd06pKcsTOhAOterBM9x\njKcU\r\n=GCPK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGR0HgG6JsfCwj3DjEQ4rWF3P0YihkfyN83R/X03GyTRAiEAtuikCvneASL1qExBKVM4jgN5q5NcSsxXyR+Z8RcrT08="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.1-next-1591972972-e628a5b7.0_1591973037386_0.5552996688590679"},"_hasShrinkwrap":false},"1.34.2-next-1591973147-3bab3afb.0":{"name":"@xdn/prefetch","version":"1.34.2-next-1591973147-3bab3afb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.2-next-1591973147-3bab3afb.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-wGkuq8GR8fZ7E15v8pZXaudNxiLrtxjZcKWSWVozl/m+foeH64FMd8pPssCtFlHGgxRLU1PGg+dR3Tdd+vLCRQ==","shasum":"5933a4035241de7980dd57acf579af1af5ddb6ca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.2-next-1591973147-3bab3afb.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe45VfCRA9TVsSAnZWagAA2z4P+wX0AYWI/rW+00h0CyY+\n7KxXJbivto013Z67y+YM3/PbZ2Kt4dTER+5mGpZuN1icusHZwwIB91rQG93+\n83tHKp2jj5lh4mLHtnblr6XZZBAjpAHj4e3k7Iuv12u7n1HQg26urvSIhmhx\n6JGKND7+nLeWMax4cZutOFZ8ByjOdoBBjN10Cd6iFykeMyV3BlEoUNapIfFi\nh0ai8Ww2SPmcXGvGLCsTp/QH14ITs24Zg7Gr6FEwV6+bkCiucAEYV1vvTGHX\nth0LZ73+vZdCANbrz7xrowpBVYJTeZOHj0wPTYslJDxBXBUA0wmibGugfCJe\ns7e4zGEIT1o0a0+xbVVOvqjyFdRx6rg7FoSWQcO9phGkAH0+nzPctvoze5Zg\nQZY/d29pepSjECTsYZQeO4wGbKudqFewNQDI/crnDjoqUxSdrSeeQPYHiPnw\n/xsZ7UOVg0ARHtV5ewfP/JNJk8Mx6nHlNe45Vybhp7N2SiVP8vr6X21ehwD6\nPfNLKAIDhiebkdRUZMhRM+XSqXXCKPWQpVT+OGr/8+tqWyzncs3ekwoDkG9+\nFYc8N+CYN840wMRrdyprKpEaSM+u9UiW0aHU3CgcFRxmZ7bkwEmnJF/vPpwy\nFhWKmAj8XJtcyf+hJxXTd3thhWWduX0pvDOl8c7/fsTkZZ2ZMj1o+QNkOqXj\nq+8x\r\n=LSCy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfJjqUrJhw3+PFQcee/PHXexvUo25rOC5nAq77Skc2UwIga8J8GHbBBJYieH4A49C7mDfdtI4vPKvgFDvrg+YfMs0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.2-next-1591973147-3bab3afb.0_1591973214794_0.9615913569334411"},"_hasShrinkwrap":false},"1.34.1":{"name":"@xdn/prefetch","version":"1.34.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.1","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-H/BRPeSfN5Tx6VDVusSO3H0LjitAKd6GfeHmm6slTUSeD6slaxrX4uOwr0O0+5h65oAEqtnQoOpXAji3OM50tw==","shasum":"78ce96296172a931eb2394b180233f0aed6f0724","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.1.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe45hNCRA9TVsSAnZWagAAkSsP/3+ge/l+8839OfLa2Xia\nvbUzR7mKVtu+BVuJYhMLNCQUVbDGiG575hiwpN1LqXyu/qB4eHvrkcVuNxE7\nwau8c0vIYEoNtlkwwcx7cus7bnDdizPjnxV0gmTPNeKvZHUQ1eQFb096I34R\nJIX2Pm/B8qjpvfwA4d3kO7GJkv3ZpcWqA+lqu0BPAtMZBSQfa212crd6rX80\nw+yxmPia6a/FGYZ6Tdpro1SL45Pat+IUlXQHQ8/sORTq2JZ+i0KLbF+CxiFO\n3Ys8p1tr2j9Z/1IOh0X9KmLtASZ+F0SWVDYeoW1NB+rWd3UYeOWx9/+/MoFr\nnk08uI5vrV+Jyb/kDdS7g8SzVgsZrhvrcSpQ1jfh3Uhnf6M7Vbm8ZKPQ/Yqs\nlLyeEZmYsTlvKYU4fKu5/XL3NfbBipfFjCTygI19ft5cI94fLP53MC9Spnhv\n7cZP+XrT/787zyC0S9lvxkMHR/dAxO+F9jRIOE+jlPO+pI8cITyWvn9gWGxF\nOJBZhqRpiIcb3tAhszRdJmRoRSCAR31cVxL8UxTXp1fFl70qIxyyTYcLBOul\na2zwjuTH9G5F7pxVLhDjhpb0D/Rt5i8rSESJzlitSFIV2EIgwzTu+CVLE2gI\n8roYs8QqnJ+6yTPFu+FLl3f2oLLIQ6CvUH2zg9TUY9sJkxULJHgXKEAqsLcY\nmmm1\r\n=huTM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5M5hVJoCtDOHHvbP1CoQw2f4X71McKY8xISkBh4fRJQIgICJoSXzzutYkkGPpVAdXklyf9g8I/cxA63JdFYyWAa4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.1_1591973964888_0.6863204806034211"},"_hasShrinkwrap":false},"1.33.1-next-1591974637-a2f64d24.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591974637-a2f64d24.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591974637-a2f64d24.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-1WnE7b28U6jXtZHfz2HwgJGnjNWb+uBW0N2DyF30jLhh2WxyoVQyRVU8i2LCvtXiv8eFWKBp4ahwPYiq4vweig==","shasum":"57e528c3b1662b0c4774b45fab441934f2c054ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591974637-a2f64d24.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe45s5CRA9TVsSAnZWagAABoQP+gOr65uLEx56IEwWSCvz\nuSNgUlUKiZ88sPTsNCJCbQhinKqP5jchAP4OktZ4shz+5UH7CrhN8gbysyla\n+M+uZ/dHbw0le6WFq44cCxCjcTQii9O9ImPrBHJ6t+4TxEEAWGBOPiCox0Y4\nsJZ4WcclqAF9v1diQrnIewoTNTlXKCXH5aZ9vQ8/D2StCvM7zx//mS7dYCZn\nty7HzP7jrICKqVknMbgjWM7lp5fWtqwDTqWhpw1OUqugjZA0ZdME1hfl9qIa\n0Bt0JjYxnvVl8gKG9479+uZteS/Vm7hc7FS5wlliDwl3AB2mHwFfkid1oDkh\nYOG2trsuwDkZsvUdL7YYEscWGP3DsJaEOFc97hFAerAK6KJsFyonedg19+Nc\nE/XiwAKto5NOOxATmhZoY8VaSuuIw61lcvi7uJEqYNdL32uZYA2I+/rjtomA\npjX+JjPDyIUkGACqmi+SNDMgfhVi7s6EdF+PYHSCvhUnKr53FnZXEU/QnxHa\nqU9PmzpR4ZgOukLJwzR/sfs8VGuJHBKKqp0Jr1+Al4kwFfcANXRuWEEFAXkw\nZ4ZLsQPAz+kJO1lnfrl+g7H+E+Vv2hiaaprf91U2/LyT6V2MMDfvlg1NZo4D\nQiWMh8gpYmHI6omdyHfGfsEIQemuWiwQeHMk44CHcly06zPNecnbADA7w3VA\nNyLn\r\n=FBPv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0c+mfKA40vPXDbpUKjhG12/blH/hy9RNGyAqBDK+DhwIgLhhllzwMDhz8siWH8/1UuVC8YpDS+SKXybDH+ridghc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591974637-a2f64d24.0_1591974713075_0.6654443183751537"},"_hasShrinkwrap":false},"1.33.1-next-1591974983-9f88a9f2.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591974983-9f88a9f2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591974983-9f88a9f2.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-51mKhHC7nEnhpetnqVkiFgfzDyNSGrHXfUK6tr8C9BqM8+xM3VVrRKegUyrzrjGzkcadBsUDelqMZKjnUuEdRw==","shasum":"47596bff206b87f3903cc3231ff3a1c7062e2424","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591974983-9f88a9f2.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe45yNCRA9TVsSAnZWagAA7DYP/0U1sO3ow5m1PMDK20JM\nxFo9Y1KOLL1WeZJc1dzhulpm/OQaXU98DK2f7QlPS92ahNQus2+qG062zc2s\nQ0um85xVtOgs0+yFvUF802DVSpGm1x/1EJc8BUC5bgoujwRVjpwmGhMUh22p\nwnr+QRl1M3808mnmbKM+ot997Kbyb0Df8NuClLeFIuh0OVAF7t3g3ArtZM++\nf6JbXqQiuiopIndY+pCkASkEUNG/8T3Hvwur0L7se/jEW+5n+3M48k88SPEM\nN2wl+JdlW+axPVp7c6NSEIFeM8XnkDcp91Nru0xZ4c4au8FTXZdylzOm/sV+\nJ3Po9ys9F9AO5P86VfiUZ6P0bDt7k0DlnjCkC2nhbbRs7wl9H1YvnhF6LYME\nI99YLVpQ+izlmxzDVLNSfHkdS7at9ouC5Aeo3rtrapVmhFQc7IOvQBvv6PDy\nG792drW2a49iETHqBW4TiJZvRcKfcukFM31rWqxBy5sgFHPWGUGq1Bhi6f8G\nTYvhCjjr1scsKc2W2EREF0ZI/5eZjXTLbL17qiXzl6TA/NMc68Oum+f8crpP\nRufC1Y6jJRv8pzsaw+n5zByM6PMFn71+mTlduHJlYo7kpwilLyXCLK0WL3+4\nGXA268hGyhSyJWz6pg4oGb8z5VO5c69/esTgDnaBfqdZ3s8j2q8JVD/GmT8C\nW67P\r\n=U26A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7weJHK+JJ7JPX6/X8GhoAjajNhhZkTsCQjQ1qXRBs5wIgRoiquabDMVslnbBH9Fn93e/MtGn8aGdfllFWF0H8x4g="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591974983-9f88a9f2.0_1591975053392_0.4464624886868409"},"_hasShrinkwrap":false},"1.33.1-next-1591979403-bb779dd4.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591979403-bb779dd4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591979403-bb779dd4.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ztyQwBRoqgsMW3jqcmM7gqVEwh75l2+MXhODb61zXnY3ZCqqvU+75rFa/fCkiZynaDtU8/kwI0KKKRM004iHfg==","shasum":"3bfa6cb418e7e102d94bea727a6653e52a29dab9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591979403-bb779dd4.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe463UCRA9TVsSAnZWagAAVzUP/R0zm2KXUJ8lUp8pZhIp\n/jEwaUBb+8TpN6gm2YSwDoxK5qdpl2Tf27/BFvpnL9xKV12Ujr2UhljDr1fs\nsGlevJm70D565uyjQ8FTLP41ukFRj67It1kGX4PQuD/32Jt1w1gBDe4d9X+Y\nD+kPN471aPPfZ1BV5R5hPtQHP5vI3GJfNO6ZzZBsWrIXka6P4AqfLgb6pn0L\njJuCco814w/ZXF8onu5WjyCN2anCISjk0KMsI8qX2RDJVk+vc0AJDmK0CxRF\n330ZcHjFFQ3pBYOVGXMrRtO7PK1caUEdQNgAFuBJwCIddMJZuCu8HDFQYCqI\nO/ygtegQfY/SrYZhHetIwCAdNqsdiBUcjeS85djp0N8I0DhilqNIZ2NMnHf/\n83WbJvQxusct33KFA6eFuEePB9kdsP26Pho2M0s67AX4Nr2LJj3MZ6X/nUGM\n1rr/d71cuLCZGTGIX+ISZ8WsSFD4qt1483MYlyXZwM27MqZs9Hdj8Tzvs1Cm\nilIj14jrGDuT9YgFnuFBkc4GvfYEPqbdpUjhPtcx7aQDTUP+3Ox3DWLu5LBn\nlkcidbTYZYLAVQYhfZF7ULolhvX0KbxT469MHASGZGf4tJYwVYa4BCtsLIfB\nLXw0xprWTrBM9s6K8gJ0QvLxQDBic8EwCYmZMA9NG6/jQ5NVbJ/PGU6B5EB8\nfOeQ\r\n=dlDQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZsWeZB2UPYgfCl+PT0k40yG0g8NrsWZ1dpWa7oURKwQIgVFbdf0XfFz9O2/EF2yyn9bLhlAOS8iiM/rP322J2CqA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591979403-bb779dd4.0_1591979476466_0.587898420720413"},"_hasShrinkwrap":false},"1.33.1-next-1591979774-e0ec5d31.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591979774-e0ec5d31.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591979774-e0ec5d31.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-4xaWTRkFSqk343Uy2sNHK+vwFX9+Gcj4JadfPZPfv6OQUWJ/z2XXD7ed5oYsLkN7br7tTqT1+RfwQmy/pdxNeg==","shasum":"a589af7ce8ec3c576afd7d08902c864c245fea87","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591979774-e0ec5d31.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe469ACRA9TVsSAnZWagAADB0P/36nKL84Hz9qYnBOBuRT\nM8uFc5RD2FkBL5D4hn+WsHhqGFaepLb1/keFYVfm6sGwBOrZhL4G03mO7QfY\nkn9smU6Z0dAsyEjucyP2sJGQ3IvI7XgaOxeVtRb4hyfqvUSA3e2k9Uq5wsrB\nIj1/L4Z+Pxom+lCim6lsvzXgeepSc87UyBlZUB3RfoBv6+F/vk0R3NtoAhHz\nvJ3rkmr/3eMAE5P1Jslhpox/HcEWEwS7um6zNm83a9uz0RVCIWu/Ow34Oaql\nUhXcDvJNLdQA3dYsFE8iMWtywaTMNmWneTEIT9eddyFJr92qgS0akKUgfBTA\n3VLL+2sKIu2YOlwjtQc6AJMgts5oAn2F36OZatoQ09xT3iKSvk84251V5wj1\nz9jC8iDhDfEVYPUlizRNVi/r1lo0jIzzz+8L8htfiXtPSvxEd9EnRgzFrwrL\np/9M7iG5wWDeVwh27a/upd9P9pFsI1hDllYivBcHN5Ex7/LxfNkq78Ei3DLd\nEL4Ed3VnUrz3g4okC/NFCvQR/ziF4GVgCAN0MWCcFt+Z+zJtXbnOK2TLG9VJ\niifmDJdFsTDnP9TftSdWXJuIjysZay82s7Of2dcOq/2CUr4FyfI0yn6tMsgq\nFKqpXZu8iQ41RGmduP9TcmaKILWyBkYK8vmWjmvPpOXvsSCNC3f7aNRKuDtE\nXpTa\r\n=zrcQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAMcez4cbBm3KlV4vObj3XLWOKaoWvfIOJG6tPx2x4aFAiEA0ErrwulpGpoQcKiujcvoHLgRtQbx+xcv39EAQFzl5Dc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591979774-e0ec5d31.0_1591979839650_0.017355808539358142"},"_hasShrinkwrap":false},"1.33.1-next-1591980112-1b8504e1.0":{"name":"@xdn/prefetch","version":"1.33.1-next-1591980112-1b8504e1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.33.1-next-1591980112-1b8504e1.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-XcJlnW9D2b0uXN0C6GVpCRoJGRPHwfFwqfJ/siDoz6UyXNSbjQRmqodTHmgltdBzhvyuDDVyWpGwwsxMlBdjwA==","shasum":"4ea5e71678e6eaa268a64a03dc9ee4eaa68d1323","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.33.1-next-1591980112-1b8504e1.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe47CVCRA9TVsSAnZWagAAqHMP/iuIRTu9g2x1ol6br/LC\nt3vu+IFCf3KO5nwZd+UCgul15wHpx946oDfMKJfuiCKN2ZCfDMxgIqO1idha\nMQqS7kaaofO4hWOay2G98v1IfL5Mj05EQW2gi3l7X+P3v+HPhjHvhMHAG5y0\nSB753M5n2wz7W4lQGexc59s6otvvdkNcd4ALJVAIwN9At9WxeoOE1DTnR/Dx\ngQjwcbopRHVYuhw4mELaPeh8VwYD4uCGc6Zzpb1I60gKOdCcCA8P6Jt42IW3\nOiq4LijuxSW561UHIbk1oB29idHOIIep2c1V3xLfDaGoX2yVBMZ0Jt4s2iG2\nBC25PWgFj4+O8wQLs5wlgfVDGMGkeLIoi97xkNo2xe+dYnuuPU/AveI/VLrl\nnxUCO390TJP+kcUxUo1Jc5s6cP/+WqLShZhCNoqQg8mjtGC1sMGCVuaRE278\nElu2Jnb+IF6AZapXOk2LtOQ06gRheXQd09Fsy0BER4RYKnXCQD4cqHDAOMMC\n5deEetJemV04H7qiaqFMCTYt5s3b4GM2/ANAqgdzjEu1D/Qc8A79KAbJjLXJ\nlQQXZOUVB40HXgKvSs5sS6E6tXGN/qR7o0sZM6KQBcbqtIM0qG7h0w4Rqutj\ncNZ/LTs/bMd1fX1aos+Pugum/45/bHftlZLup0JBAiibgaMJZniM9xc+boOg\nUt3+\r\n=/cvO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgGv78sE1ukljk0UI4Et5Cf3YVsp0+oQx0o3Iw/2S+vAIhAP7L2g8g97lh1kXIVV4jhkaBFcMkiAcDD/2Z5aF5l+zP"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.33.1-next-1591980112-1b8504e1.0_1591980181107_0.6987069270943591"},"_hasShrinkwrap":false},"1.34.2-next-1591980763-ee2eff93.0":{"name":"@xdn/prefetch","version":"1.34.2-next-1591980763-ee2eff93.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.2-next-1591980763-ee2eff93.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-R0I02fJo9z+cS7TRr2vKF8wODb8YtoC201ywDBlEDWF5tLa1sEWA6rKJ0+ziCnx3DBupHL6PYIyYOqzxqsOAbg==","shasum":"9a53c35f80c86c1c832f6935c141a20d76b3f845","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.2-next-1591980763-ee2eff93.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe47MpCRA9TVsSAnZWagAAfeIP/0a+TjRpd32yTvl9opl/\nX4MOXzi9tvJVpa0rqTEcQ5JDZn9MXa5Mp0mJexaLyLj/93fb6Ae9fXvIYGhh\nwRh5sL6kthAAQPDUKCHOUEksIbhj//30b+ST90mswwgepH1hJM6xsnDMgsZ7\nlDEM7cPwHTla10Lp6xROfX3S1zlAndQ4RpCQLOUHdlcu0Fp7vKGVSQmNJwoR\nQAWGQQukPLeHUKeJyeri5kxu7vRTHwU9xa0Ri3KPq26QNe9uFKLRRWD59D9L\nerucYRc1rF7dxY6cdzkqtG0a3B9PGFf1uIH6wxl7XHmOC0ecjDzNxpoatX2j\n5iVCZA5gfXGphWnnoGIONDSOLoGq/NgO8nuCfBCwZsPT9KChkREZlTEeV5Oc\nm9Ps5FCxUqm6XlIMiC9vdh86x81Agk2D6+wO6G5Y6BJGdggTFSyCEgJLOpSH\nrTEctrTSxZjF6Xf84r8nrLxeXZXb44GJWERrOrIg858z2byD/caD2cM3bszo\nFey3CrtDfddEQrggXrYP+5vcVz7wjZkdlKZ7HUCCh3TEv400DbXLWSQg/1+H\n8ZpVu4byuSCiDJw0/500aWNkcvIWsMILGrU3ZXW2PfNMx8GZdEnHDsRL0bEs\nuRUPweurMnojOZhhREIjo104mYbT5ZTLzb+yjQ6TRGzv3e6rul42RSrJgn1j\nxIC2\r\n=+cuH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvOZOcw+CNWHHRJK2brhLdeILp/+ujRuzz+1Wce83LIQIgFfllBRDJe2jWsRZ35we0NzDts6Xw8EDMmwd65EqlyaA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.2-next-1591980763-ee2eff93.0_1591980841405_0.5947986212383158"},"_hasShrinkwrap":false},"1.34.3-next-1591980852-f46b52c3.0":{"name":"@xdn/prefetch","version":"1.34.3-next-1591980852-f46b52c3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.3-next-1591980852-f46b52c3.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-biXlR+LO5nfKyaN8+kSoV7OH68cxFNpz5n+NcnqU/bNh0I9zQX4c4Z6cx6u+ifCjuTactWlnQaI8ApHv9KSctw==","shasum":"9f607acd3324b17c5b1bcf7f91b099193aa45522","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.3-next-1591980852-f46b52c3.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe47OFCRA9TVsSAnZWagAACUIP/2wU+d+oCMdBuo8Oz30E\nspE8Y5/9LvaN7357TZwPUKaDPL24cP0U9QXAu8vciZ5HdgheOoFKwbdhwA78\n+4ricVxwQ96Gl1HIW9d9ZLDUJouuql1wsdm/LtLJfhuUQ5XRpEog5+CxY8iC\nY/+2nBDEwCrNzAmDKO4likmciiNB/48a0ltEfAXeefmHVM09aKlFU4r2C+DY\nYJ4gOr7DYIlgZrujv9QW3J8kVLEH9GiL75HHgASfQWTSl5kvGbKv2+YYJNmm\nPDJodQwYpj6klRtZaoVj/ZXJfe9syLrbDWUXAy6cABFGDi7Qr0Mry2930DpL\nA3rlFLtdz8ofn2hTWtun0ozUAkIlS9vFfhlGHRXbWSzVx6i1dU/V37l33kNV\nbgTGOXOnUf2ZN/MfyCDa/fkv9sTykc9XzzuQnkzdkyquT/hrAQRkb6UezZsU\n8JPWXhWXX3VuogoF26OpRdYX2FL0w0VBDu5q+7CFvMRB1AgRU4FGNGfxTR29\nCcf5640/VqoPDKRGUyX66Gk5c7GpdfkP8hz6fvgNvZkCx4qI1rdV8WhJNZ9n\nU/WsVcqYLp2J9MNDPRhQAZHZnVAZKiGMLHYkxrGuxtAyrXBphnPQhiyhykbu\nEztM8D/EYAtPbmBLY69cNnqlKEJ9zAqs1A10wQTF2Nk7gcEDPK/Y8MePakLX\n5HzO\r\n=3J+a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEolLeQSfWI2mFgmAaFyUoYNfnbuFKDd1MJcpFEwJp2DAiBt1kOU7+UHgh+5smhQ+cbMP+Kjn076DxKd1OpHcUbW6w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.3-next-1591980852-f46b52c3.0_1591980932987_0.22410517413530529"},"_hasShrinkwrap":false},"1.34.3-next-1591981842-7f06c136.0":{"name":"@xdn/prefetch","version":"1.34.3-next-1591981842-7f06c136.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.3-next-1591981842-7f06c136.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-IBM5xolZWgH8BQfAtEL8jLIGhE08IBxlMHs3Ji9u2D0TLvxqha/bvU/0KXaACpz1uC4HW532/fk2P0rIjMCzMw==","shasum":"9209333876f4f50be3015d3aab59cbc51618dbd2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.3-next-1591981842-7f06c136.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe47dWCRA9TVsSAnZWagAA+XsP/1doTmof/WLAg18k4a3R\neNGugjPfSNIzkbCPxEzSGtVS7RkCiMbe6iLhqdA2b65QuO0O1FUB94QYvZKL\nh2dZahXs0pELZcEQlYLzP9X16GarnTui/dhUaSsEy50LuConFg680vqnluit\nL3iTZ5bzBZrWLwLuufkYwjiS26JvWMR2XBnL9ud9Hy5KKru8gDm/dIhkvNCT\nY9Tq6Su4D6St6BshwDluduV2zMKFlojgrirdAvgBExs39rT61EgU6orrW4ru\nH6D8tL9WnqWA/pCos8QstrQE3MvFN8FmYaAj+H6u7FWst1TVy3zWuzGNrjhG\nNkjnIAVyAsJ8HoiMNuYIZzVqGlp8nhQkWvNCpC/c6FwoG6hsx64803gav1av\n4SbCFuQbHhp9127vaMREr6kowI1wof0ehgzOdtus8Afp8GckvVuT+KiWqCzs\n0BoRt49WVqJwUNGYhXcYeFuwpu2hd5xOMoIljj0AIgaZqelkUwhP8kvZhZNA\n6Xg7VSblLT4zSYEihOY682Ipv5pql/IKv7xGzbtweYGhSSs6eDMJX8gOP+M4\nNNay8L/25I9dWNHLPOiFO+TZQ4aTmdx8rJ6qIySx/IHmqTFj/Fh9IWVxc2WY\nU5KSswi4vguHUDuWo/m11n634NnDuUcBTRlYrrVS42Ej+qiCmJ7iKEDFeH2S\n1BWo\r\n=1Bh9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG8rAD7X734us1gyX1T5khva09criZOLhH919GOnjg/MAiEA5VyXDthRK5nbUWMeRZS4dyvNssInPYN/cj5XstMJv7I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.3-next-1591981842-7f06c136.0_1591981909721_0.6252643215902292"},"_hasShrinkwrap":false},"1.34.2":{"name":"@xdn/prefetch","version":"1.34.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.2","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-MnBgZcfofCkC0qhSKIofbQHUTLfH9LH/3rLhUXuPUHNo5yJpOLLhfOJRbzevIXiqlbcruJ8DoDWUwkXP9Da91w==","shasum":"1ffb5c8eb4e8479856411ca976b30f2468e1d284","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.2.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe49JZCRA9TVsSAnZWagAANi0P+gNdH0NW9pnBlXJYePv+\niL5dtPGb204rMNdi+ElEsIzHFyrxQRWGufwgE7WEhKCcbLWbP+hsaCnmAd48\nVm6L3uzbdQ7soLpkAzhLHIe1ggNgIcyY+x/8twf1RA8A2vLlVhjC2ZMzebj/\nEGgLShAljQwl2dO4S26uTV8V3BrHXOxW5owiQj5OocMaRnhBvyt4yHHGaY1O\ngvd9cy+kmJlVW3XFZTiqQ2l0XooeVHn44qeJXFdkf1VEEr59TsGeQpm4+zHO\n0yjUvA2ndSfKnq/dglsrGx/AdLBrEIbStzZy8RZIWBnrPB8urL0gJhBnbP6w\nq4XNih9EWBtGNaOWPhrVgSGow1zKL7x4LJrG9hJmjsRqUYARe9D03czMkM+i\n4I0zor7ygB/MtkA0RloJSbc7T7yWZ562SJJbgdt7nm3e3o38A/h9GSMDYg1B\nE2hlNENuEgjUzEhqxmul2Cc6rG3ItJ/UGVWp4yUjdVYOu3ruNRtA4nC6ELVh\nyFoAiUDkkoVTzp1H9oPqQsazaV9+9diSaAxtw3SwaIQ6l8z7vn2Sg59iuW2e\n8QAlLonfS+ZWTpgag0rOnsRgby91Hcv2CpkTUXrr9JL05EjvhcaajtzQJspF\nLf346w/TIZ7u72/AhRNRiyIswlZP2pn5msCpX/zZCumAu0HKV/cCx2DVPKLs\nKZ9T\r\n=qco5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwXGlJ7zeUFXFw4QU/HbUqlr2Pdpa4k7D7My9EB8yyEAIgMPNFRbUnqwdt14PMBR/18EN8//Qq/qA8qNuZ4QX+8Dc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.2_1591988825575_0.26231834113640984"},"_hasShrinkwrap":false},"1.34.3-next-1592225481-7fe7f490.0":{"name":"@xdn/prefetch","version":"1.34.3-next-1592225481-7fe7f490.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.3-next-1592225481-7fe7f490.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-tTr5lOMbOzC2zONqdQnyjnJUpIWV7Pl+jxSSbNTEpC6kWZDxzPebC+7BLTO70H7cOG/7uT+j4p90ZaZL4FGaaQ==","shasum":"10fac5c7dae4ed88ad22356cfe8e0553022e5068","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.3-next-1592225481-7fe7f490.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe528ICRA9TVsSAnZWagAAsDgQAKP4W6AEUDfUdYb+Ao62\nB+z8AvA8VBHf9BHy0W6aRjuGj9nhlb+0vzcTX4FU+kj1vmLUueA+S54t1FoU\nPIZhIko/7h6SpvTWpaM98MsioVn6EhlNl09NeW13wlne6tsEChS79htzpFYD\nL4Ff4r07F/X9To5zATVjEAgi4W9rkgs1l0EFh+eCynom0BMsH4munuAXNcDO\n5iQIM1SuBIgZyH9Jl93/JSu71rj4oy/WRYVdxhH+iFZIMrYe9IM93Z1VdZ7H\noIZwRcgBmmz2PXDcfR2Uk5wGcSEYqv/F8Yrakij3GBkxmizKsmQV2pxSlCOk\n+m9hYXLR2eq7A3EmpdEU2d34TtWGsjnMcm7mxP1FpxTmYObblaZpGeSaNuh9\nm2f0gH2+wNmrwggEvv9INO3aKZuO7hbcy9G5yWlT5UyWpBlOdSeJtPG54OF0\ngQPQ3FztCQvgRhvWE2cYX/15xYr/qTipm6fuDyfamK/eX6CpF0ZMuOTT5yVr\nuii3hcTsHXJ/qy0wrQRz0JW/0rMRDrZBTnXWzD6LWw69GSN1cILnvlYB6jCe\noFkBSh5mXizj/S8Fi8d3duJP62J2ti0w8eU+RQIQSTIMrhohnUXpGxKdNRLc\nS64/EANSrrVXB+VxE8pZ2LcZMI6PPifphDNvqEzsNiL86OqAx4KO3j1E95MX\nnW4+\r\n=ivsS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmUwSBPc9xnWsXR1Cq3s9oFGdJH19ZmsC3TvIWsrld5wIhAL7R9n6Q/bmy653T/gQagUSmDhPPDa4BQv2GJqI47cow"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.3-next-1592225481-7fe7f490.0_1592225544561_0.015221612668259388"},"_hasShrinkwrap":false},"1.34.4-next-1592228297-29715c4e.0":{"name":"@xdn/prefetch","version":"1.34.4-next-1592228297-29715c4e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.4-next-1592228297-29715c4e.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DC9LpZzEMO8AzPIx8vTeiKBKn1vQCSCHNu15spBmdn2Vi7gxQCQs2eJ9GNgwrUFPba6lbT1eLHxMMH9ZrlAudQ==","shasum":"c1e6dc1685bc57fdb360e95573c9b5c040ff2285","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.4-next-1592228297-29715c4e.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe53oUCRA9TVsSAnZWagAA9QoQAIZtqoF/7zUd8AXXKTqC\nKmc9K1kFos9ASPggGcRBr4207PCDcpCHC6OUoCryldLAisIovYqvQcgvrCfx\nv6E1iCYbIB4acbV9o0F0i7PSYoBrxiQORwWJyxKb3PkCDZDzSf/nLoAfs+5F\ntmlhZsqkpSgCR1hxtGHCor/AXQnil/PklIh+Px3Fextz/kNnJn/QzNxrjm47\nKZKRn0PdsIWos9A2jUSobRACUKWeYOwHdik5zmta1qF8AemMQkiyjw2neK1E\nqWky/8voPn2Q/U40Y9/0vGJqrYzs+sx95ufSfkWGVyvvj0OsWPQNxWbfRI4R\nW9PjbkCg/CzkYtGAAA8Rs/If2/XgTFq6qV2CJGbMUeUqLBbIQogR40AqsDVZ\niRXd3QdVyWhpT68BEDuIga4S+9IvaoTB4j2e+8jNdH8M3z+eQQustNvrIycw\nEI04ChGcZkQ+c5YCqnZZVgLlsTjjIesIgf9G39cotPZaLoU2SLicJ8x2EI0/\nzAqMpWIXTVB4kQ83TWZpF8pEQXHIiWd3ERLXin9VkmEo3oYNcowg5IKtie2q\nkGwBPzyDA8f/Q6T6lAI22B+KsMXzeeGQwYn9qpSFiSrDM5KVHkKMt2eJ3auf\nkC6RjwvfcpicbbE+BQWxR2eaezDGPH1xFVLb8bs3bq+EC+H2IowDfFHcJMB9\nOvQh\r\n=3vko\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICSLKAZoHKbQGrTDVERVZFpimG6OBFjeHdd6r+VFbt8cAiAlQ6H7ou7kn9xXjHMqgA+MV4mjrr6dP3ZQ0dm5s0pAGQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.4-next-1592228297-29715c4e.0_1592228372143_0.344571937618833"},"_hasShrinkwrap":false},"1.34.3":{"name":"@xdn/prefetch","version":"1.34.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.3","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-qCaeSdtYNfgAXc8zZNPnZuxwyKbhLf88b57IQbAqG2YD4mavu1Z07oEOWLShsv8XFdLZU0BUcOPyTcvGIJP/Gg==","shasum":"5c5203b36209656459ab846b4a7cb9e90d433966","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.3.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe53okCRA9TVsSAnZWagAA0XEP/1YS80Snkqjb+9e99/a7\nS8JsRcAkH2LM4j5PSnS0u7mWfE7Gkp8MQ1kxELL9Qh7i3upcB9J2heJLrKVY\nXvfmQHHD7PlxjioIPeVPyjUA3+sPO+eDfQNKbXilNRVOOaOVURMvThH86pzg\nOh8DyfviD97g2XBnEj9ckgxOQqnJAmJYVADnVQQY90mkusTFfRBHwWmZ44Ao\ny/spuJs+i8XWnGZhUQ3WrvXTZwQNpYeiLnIcwMbWH8b1CR/bB9To+b+sOG5W\neMTq4SfCwW31IhbqJlXW6Koy+q5HDDn3dCH02QvlzKeyLhMVyE8HMq+CAeao\nKLv8WZ7esaLE0qw7muuoSWc6Ix0X0ISxa6hd9SHmQKsxHgL1L+OPROvDFA16\nfExL/capLW6CtH6bXLHVyEAMWRrCpVgTAaur0wbUWQ0s2UADCFfkbPLGBGFh\nKNrigm4qeTVrUh5kN5XZYjeVJesglVISLht6yzJg+lbEXRrQsStgb3osAvyO\nVQ4QzsCDr74IylzgyOT6GB4eV+k+TWlVT99gu/FKV5vjXGbIVeudLf+IHUyf\ned/+3c+9gVS2n0+wS4+uVLsebW2lusIr4T5eLeWoHQe4cUehlhwanB4sZciP\nipv4NQQMPU0h8NTI/sJ0byH34hsvEpChzdNl3q3LDS4fzfKTGFDeVVz5V2wm\nhE/h\r\n=JIoV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBApr7MEqXvOlr5xw0L8tjN/KoH1iHSHzbBvSJEzs64IAiEA+Y121KbB7UeaBZA8d3ZsClbnI5sOiAGTUNC9eGQqzIY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.3_1592228387642_0.6935831646784409"},"_hasShrinkwrap":false},"1.34.4-next-1592237100-c90c0f9e.0":{"name":"@xdn/prefetch","version":"1.34.4-next-1592237100-c90c0f9e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.4-next-1592237100-c90c0f9e.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-vIFuPyESPtLPu5HNcbfLPvUnGe218DUe9bSSRryVR91QqGfh7Vvav0TYwfz0H2mLjxOsrgcOyDSnjxXY/wcgnQ==","shasum":"cf8d6f75b7849c3a3497917d5fe4cc84e08d91c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.4-next-1592237100-c90c0f9e.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe55xxCRA9TVsSAnZWagAA6qAP/RxeNeNn6EhZ3Jk6Ssis\nHLub6XekBemawr5kxpcydQWWBDisEttEo8PAjXIi/6L0K9kEvMgyDHKIde+B\nwHzs+F77uswTJ5gfQwbR9RkxLw5mwIn17LZ4PkrfQk2rCDmvxRXJ6WlprgP7\noI84IL/ZO056c/+H8ci3JdsJjN44BskT7xDUjppHAKs0igfCC8UJ4bcSo6aK\nbaDjSBT4jpOF2rS+jZEANlruweTn+8m4/SzlyanSAKPMB34rFwgaT+1Xe9VB\nRAf60f4bdOkCA5g8qtnS7yMw0sniLtn4sTQ+2nMBplxG7azwGoAbMrQcozQE\nAAVnFYEhnZaznDMIe4c3wdhZgRpPsLZAB4dmikowC9loPLEKGjw1GgoVw6x1\nC7d4izFeUe4hiQi1SWmW56cDMcy8lHbUK/PHzR4zKmYM/H4kesjsEqjyfLBS\n8cLjBUn1RT4w4DgHuMaB7E3hMEpEymWfG8oAyAuOe+INHInZZPeYj8TXMNkM\n8jiHu8qBBkkaLg3YkJ8S+JSN82Y88fNFHcNy3nAB49EFC6luBOHbSBLbpSbU\nuIw2+xpWOcK5/8H7IPrRqeQDW+FseInkGp4qiWvF3N469wzPxH0RWgLg2aAG\n95OfmeW9hiq6vWwrwGyT/+YDxgK90TXr3zkDYOnxbZ7VfTO/BEYm+BODFkqm\nfopq\r\n=IBSE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBDkaO07KuasEOHfYeuCX+K4+Mry2WkodXXGBu/nsWkkAiEAmIJdAtuWT5hEokBBm6yoRafS5uHnPAdjVGH5HyscZ70="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.4-next-1592237100-c90c0f9e.0_1592237169347_0.8724831612722399"},"_hasShrinkwrap":false},"1.34.4-next-1592237121-c1b532c3.0":{"name":"@xdn/prefetch","version":"1.34.4-next-1592237121-c1b532c3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.4-next-1592237121-c1b532c3.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-J/mneO0Mi1MgPNVhs/yb/AGj6Km/qOdaxW+VnpAfb2qQdUfTGggQoCvnTTKF088Gco0jBbnM5I5S7A/jx0agag==","shasum":"5eed19beac5523a89f7488d8927c9010cdfac7d1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.4-next-1592237121-c1b532c3.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe55yJCRA9TVsSAnZWagAAUaAQAJfsu2X8X1IWmE3PB/6B\nJYUdUIzKUx3svMHfHHZ8gadUPytVSwmta2QgSp7RqqxBq+QUBjeZaPjYCf+e\ntf5LTABphnNk2qOdVRDNUmfmiFR76flO4d7g9Uo9WUMnXPvtOIvQJ/+3DGWL\n7mTJNKzwvkt0mWl7AJ1H2U6JsuZZDKpIkZJ0zRL9bSCVrC1fBkeUEcfEgOuQ\nnkcUSjzepE+WENANLOSKwveEOmL0lANFNiNnvPwUQIOOZgibIAUGWc3IQRdE\n1/ibYW3ktN/JXRchY3DWghOZYPPZiQWlL0DvfSWryU6dteM5Iem3oYLzaDtk\nsWwygOdJpcjHkI6hELlXqgE1MxyFtRqD/o8STWGxC2biDFdlv+TY0PFRVfWu\nbWcKr6cBNXvn6Ha44g2/fy7FpjDa56OwBARNx2hEaKKoeHXucGLhxTADwxU/\n7BzwessMQ9XJeUqEIsYEnRIkmH6GQd2V8eOPaPkfIWXLtZ+I0umqVSrdLCAA\nZdXbcXnZk0Axk+z9Mw4zpX0uCqJinY7c+IF8zqpHUCqh0LhlyV84WAXNl61O\nyLPc4/7a8RPgG9HSKtIJPVjjl2sobOXBc4CBUrpBfb7R74OwOj6MBJmkxViB\nltt/RuPQTZxCZDXo/yUV1k6TqFL0+vizt3OXgWtbfIfGPyoOVSdzlAhmTs65\nieIr\r\n=XJCF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGvgj/y6FW6vR6JCRvxrg04zL2n+gIe1ZnbVp65HAENsAiAv0u9dKRbjIffpuMbYJauo89jlN7k2i9c+8dZN41QIYQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.4-next-1592237121-c1b532c3.0_1592237193090_0.7543588642098369"},"_hasShrinkwrap":false},"1.34.5-next-1592237203-db7d8d7e.0":{"name":"@xdn/prefetch","version":"1.34.5-next-1592237203-db7d8d7e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.5-next-1592237203-db7d8d7e.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-B7h+zmvgVuhthfemTCbXEw8ySAlm1zYN1ifyaTVpTNkDRWbpA0cPokutVLOwYWqoRpQrWSlorZDjJf58ZhU+Yw==","shasum":"ed73332594e3f9fc380d7b12202791ba5c5b9f9c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.5-next-1592237203-db7d8d7e.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe55zcCRA9TVsSAnZWagAAE+8P/1hgj0SbEFskCveaS8Ie\nsPX/tUuEfNlxndw9x8fbFNcqYNiAyqoyXkVf7N68XOxrqx6QSLFLMr4fGQka\nNfL1jhKtt+9SIOa6byM1bEHateO4J1n1EWf3b6ArS47Li6ME1Y9jEW1UJzDq\nrP4qncBgLHRVBpjwbQgy6vNjQhtK241vS5e3LR5s9cqC69hj90SKzUbOx2Uq\nlJlj+6CAxlHL0RpNH2HpwNHXOnlhPza6ZGxIpFnwBP7OWj+icK/BaLdON6L8\nLcNYdFVVXkb69uc4RsZheyyT/L4mfcVzcvzaaZJnIJonDpouT/Y3dXZFWGMI\nuDDVaLXkrEy7ety1mRqafbPjvLRaOTfFeNJQL7S/dyh9UDbcE2KGdev3WJEA\nx0t3uIsJU/3EtJWa4sSc8PZia4sHBQ06Hb7z0EreFGFsELHDnIvGb8pLtngw\nZsxyr43eNH4FNU4UYyxkbz1OBPGWJjKbi+ZwIzTETvOVYpWKSicxAx7cMSD0\n042KlwHLKMmAgqJkZUEuX6Hlzq1fTbCaoTkxYx8hiLnFsHD5yLnco0HwTF2g\n/MtKclDiJjgYyMyhw12KxPT01404CDcxco/1oVuKrDIm+QDiZVQ26weqpZRv\n+xFgfGkxymZVLtbJD7O5+9wnbqspaSTphJ9fgmuuy4HX+sOI1Wgq3LMka43L\npHzm\r\n=uBdb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFYlhf8Zo3EXjjwQCEwT9bVZ5Wx88m90oEu99frcwkFoAiEA4ARCRwWl/+afJXMrQOovB+4z6ZApoSIvQZenDu2XO+M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.5-next-1592237203-db7d8d7e.0_1592237275652_0.13935056074320396"},"_hasShrinkwrap":false},"1.34.4":{"name":"@xdn/prefetch","version":"1.34.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.4","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-t8QUIx4aD8aEqV6zx5XYgL29KL/DDBm9bYGh4lSQktxmgoWKajZP3aqvE2XjT7qhXPO/vh7++awxlT3w4403jw==","shasum":"fdb10e27094f14a347ec7fe500a51c05d80e1cc4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.4.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe55+dCRA9TVsSAnZWagAAcVcP/i8UTcS73oeyerAoe6Dr\niH+MtPV/RurfJrPjBJRRURjXwGirp6+JfZmg5m8O8zDyJ1P7ZsqT4tH2X8xB\nVa+/P5O3HDZRbZsAepAYOKqskW1fsu7uxbEbnkRFeurqi67wDhS6Uv9k9JNz\nNtPrPjWI3KQBC1Q3ybK72fCyZbI4L+4Tdx7lLrr2Y97PKSIXgtDwd3UmarJ6\nUuRBdNM37tH6xtWYL/KRX2NIGGRse85MoOpsyqbA3zrX+/va9HNzRx7wKTim\ncmZOUaLfXPNhJwDdoo4ECwLOSjnUbvCWzUpQBNoJ49FMHfvFOud2DtnPRzkM\nv/Kyk2r5Nhm2p77jGsDIw9UypE34EwUXleh/++C9m0yKYnGSHXvvKCRXVS2m\nLAKdAxT5S9awnI7gr8xLlT6TzEADSRUMD1xQ28OTOmt6IBmaQc23ra4PrCDm\nF+ih2AOXkl88KfE0q+6As/C/cVJvf7MbxjsY3N3hUJeO3GEApmXw68+EKuqn\nKeeHFNN9LSb6qfXZmcxMzo+QP3UArvthfqvc616sxbCYYGYVJcAaDgwTF+b5\nsWy/8//eUg0wthY8/IxuVaBvYvRfQJK0R9MTYddFg/Hc/IGunU2Q3LtvoeMI\nA5Au3wOL7sD9ULJvlNa5P8ahiR4hxWCPIDuSwDs2QN/zqY01zqEy1H/EMVpV\nAN0K\r\n=BqfR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEMoJljWbVX9DT+wYh2Yfu/UIrCdlYADmISMAdAJ1bCWAiA0H2/N9iLOWRkns+kZlydbtzS6ftQiYzVII4emhw9O6g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.4_1592237981319_0.8721161165795774"},"_hasShrinkwrap":false},"1.34.5-next-1592249749-82f3e3ad.0":{"name":"@xdn/prefetch","version":"1.34.5-next-1592249749-82f3e3ad.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.5-next-1592249749-82f3e3ad.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-uh5Gdvgqt8X1CvKKRVknx/GFQcnhpX7Q8PLz9q6rHH0z4TUpK7oYx9bk+veb5wIZRKKytmp+euLOgH52Liqo4w==","shasum":"df3ac518a0bae739659aa0a2ceef86be4a6755fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.5-next-1592249749-82f3e3ad.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe583TCRA9TVsSAnZWagAAEREP/3SB8ukZjUIgnQL+niGJ\nuIpVvwWqlWSov9BkVN68Fw43+uKU6iB1jDZSZ37vuwecGvO40zas9x7/RA4Z\nrc0cNZMfRAZZijOU1tpFD6GSTT4Nom++Svsi7Y6R+xDD4xxpv1Rr/m/wCsTv\nNlTYSSvEOcuHlVa0VUylW8AW+CPOs4zNPU16Qr/zWipF5DloRGMD7tpWzBL2\nXiK/afh6Qj92E0QzHAmtQH8kL21nS+jyeodtivMqoaL5vkdJtUpO5gl69yUo\n8wu8GXrgI2X30nb1vEynN2PbZOAaZEd695rmMyK1U0K/DSmKdVPtnQF+w56P\nFN9Svb7l/hvIDsDURCSjlWHTAGoqop2bt++iyZ64WvAgRIXN2say7+kj1oYt\nQAmDBVgH7ZMfxND/0hodk0fuhkLm7KezUSqLDi3cShKLE9i2BYeJTBfHnhP9\nkBS51S3P3AkgesLaqcjDSEqaz8ppOfAobJLPkEmWD03t48J3xFJfYfJ/f1Yf\nN6pkqm1gn8n7J/JHdy4RF5eRIa5qUTKl3rqYi89NYiRonMFkvwXmhuP7E0tO\nchrxTUHAMxt37IqHuIznJQ8IW0TMN+gZ7Wja31eNdDs9lbqg99miKu0lAF7c\nKEEkPcoCKoDaKZGdx8KvwOIEa8cyB7kUBhC8CI21mBBk/q2mFmPivTTj4TU8\nisna\r\n=gbwU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH7nInU/j0ikebGYghHJNU9870dVaHg/Y1BLsl6GlPmQAiEAwqSTCHOmY8D0RDdKflimIXA3rGRFA9p2ga7VFlGSO5I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.5-next-1592249749-82f3e3ad.0_1592249810628_0.3754166072679077"},"_hasShrinkwrap":false},"1.34.5-next-1592256951-45cde524.0":{"name":"@xdn/prefetch","version":"1.34.5-next-1592256951-45cde524.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.5-next-1592256951-45cde524.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-iv4zAM8NbRZel8u+/o7AftuvkTJSfjdHJ3CAJHSEbkVaQANsy/Vap/FIlx1FMWpVSOqWfyP1uNgYFbHvhAxbJg==","shasum":"8288bbceda003f706f5d897fd4456178ecdafa84","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.5-next-1592256951-45cde524.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe5+oACRA9TVsSAnZWagAAm1gQAIvsmv6NxhACr/vMyVRR\nLOvmLoK5qUYGEGCq06tnXX5+KAAfOyFdrMXIhI8B685OAHx4YMw+FQmhZ4hh\nsolieOT1OwL7m0XzJ2PFXdrohhTm7U/FhziWj2GrY+09ErYlZrwyE2/hqu60\nrr5H1/WHPw4FKbp6pjP7IwPZwm948Cmgg/ReEx0K1O5OERD0NAYelV+Rv+Da\nyTlCxPLpehhWKpsCigzbpIle66HFMP2UJ10SCIuK/jGYwHCRITmXpSltIjpG\nlUYU+sGKj2B+PbpwK00S6xkP2AJ6AN4IuKfps4kB6Tc4+VvpHhz5p6wPlldF\ncir/rrPj9UdBti/ZSyFTFtDZwOmModJzps+iXi7jj49va+yTIA+vUrsujYnI\nGtigtQJDoWefN/Ly2n80ozENg6h2cfDhoKCfCz6fFiGE5A5XLDhK3toc+t2k\n1ZHgBnScz5j7+wiJS56pi/svA2QUmQmKZaAbUBC2IL7MTFj2TOUkyslSW7kW\nXitsSokuixvxmEkgTkWwd15lt8JSaWlhM5BHGb0BHjofqlFwwyIHk2nc72d5\nd/QFFfRMtCJIQUzC04sxw1iHVkVfATpBEYiYryeTGX8Urp0bhAipzM6nbnwC\ni377Nc8UC5u6JCGQou0pPRvZsHDfOe1MWq0O0XFv+GdsHpd3FurDNyg7EPsQ\n8Xn5\r\n=0LUc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWu9A26xegFb4XuOay7r2b3+ZJqDsWbHx6DXY8EsLnbgIhANNb5/i2BfkQxNhwjcAf67Zwq/B7S0iA8ULPww6160VL"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.5-next-1592256951-45cde524.0_1592257023652_0.8207075608632775"},"_hasShrinkwrap":false},"1.34.5-next-1592257149-8d27b08e.0":{"name":"@xdn/prefetch","version":"1.34.5-next-1592257149-8d27b08e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.5-next-1592257149-8d27b08e.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Ur0rI8GuM0UbTrSUddadXutEt95mawW9CUj/cuwuwwBVH6CVeDlhA0Nk5kC3sDvIJKFx+501pAwmK4xCTN5PYw==","shasum":"f0399873891ea19e3ee0e53955c75657e38f678f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.5-next-1592257149-8d27b08e.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe5+rACRA9TVsSAnZWagAAvY0P/2e6+atMOwMCd/aDzYnk\nxETeC+wCxvb2VumouvHIyJhe+Ex68DfMIaGdkczFLnatnHgDfJHkYlvCCmjl\nK2d8fXVjOVdby+TJMjtb8BdW/ENAPi2Pg77o1axRSm3vzPru5udjYfsduZvb\nEZrdjdieoY7qNX6/3dCA7m50bx+HMZU1heqdomaNDFfpg4WOkeWXayVafKeS\ncLj1Eg/cDa5CHTc0EmnoibF1Zr6/pNcL2vZr8KverO4UKQPFhErBJj3Ei+f2\nLuqN4vdjk0JTbZ2ARGvcxe2ySXuo8xCMeuV06aC1g0Ql88x6t3lKkKNoD2TD\nQ/thsv0i8fJAzbz6PjFAk3I2tgwOdtyhKISC76jjDV1LR57gnsvgZEO5bdvP\nwgXBzVVJ0dDZ0CR3O5JBxILi/had0qDJrLK4hvMaModdtMqooGfA7EtQfuOt\nRiTg3jg2h34BdgN30j0xaxPkay4tnaECXkzwzpedBFunHuD7I3nCIzJa5w3O\nDoC+LD81MW1qErqHh5BHYZdiSP95k7WNU9rIqG062PigGBHDYMXSDr3n6Kso\nTDoFpGofzDcgaAvwGwAN49SfWX38RcI0pdE/g/b72IEValMAXDUq1aJfT+O7\ndLmPC6LFAWzTzAUZTPcRFnniJ4/6wwH6SjTEY5YWcSW5PbeTab0L7fuA0vHO\nlucI\r\n=oV7P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCz1CHJIk5eB8uVO2KH5UioicUS6VFXs7K20D8Epi4ymAIhAOte0q+R/zuKxesQMXIVLKaMwqTOyJJ4Vp+oycNVTzoh"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.5-next-1592257149-8d27b08e.0_1592257215951_0.054097042951002816"},"_hasShrinkwrap":false},"1.34.5-next-1592296946-b1cc37e3.0":{"name":"@xdn/prefetch","version":"1.34.5-next-1592296946-b1cc37e3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.5-next-1592296946-b1cc37e3.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-SIWNdJIJmPwm57ciLKQDZy5QCpwN8lcrzZySMV5a/fsFKLO/RA0lI82yS4uMhNFnQZCZItdcsUKQleI3tge6+Q==","shasum":"911d70385c5320e76a6cc2c34c7b476752f60d71","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.5-next-1592296946-b1cc37e3.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6IY7CRA9TVsSAnZWagAAGywQAIOrUOts1ZTPlzw0SeLU\nWi7q6ZANgVqeUInTSoNIjPU1n3q1TrVwzriSYLOU72UtYiXF7KPiSvYQ9ZO6\nu8bdoQnBlU6KvyQadf6i+GuiPlW8nhJ+TtWEFCpBmYBS8H/21oTc5QbOxRO8\nFikGUJ8c4SR+V3r0PQFDentjlmJU/DnsVXRe088bg/7pyyZxRuo6dz+8HfEr\ne1i74Y8et+SGfvZotdpWp0q8W+wFg+dfWMppj29qhFsdhrJq6aas8GDmUXBg\nUIS8vwwe/uZIUd9oD5ynbbim1gkwM2acDcBwQQk2hJDTHXjxInJ3gVtq3aB3\nXL2oeu+Amw+ZWQs4S3zyZtfajMPK4INaxY1SAvvgWWhvbM4NAwQpYP38OT/f\nmNZgHfn8acBGQ6dw+OmAiyLKTcKLvYUXeUjVpuTjO5KrPr4xy8iuot30iguh\nsg6Kw3Sp099sNgWmhk4jIesBjn4WeMTfPinbpxVQR6wdp9GZEon1NVe5IkmD\ntYc5CxHp9aDVavmYYE/letzu1JCFtk85QrqSSjdLXS2E2q0BbyRa40GHrHq8\nwm5D84MTmdNETFz4ZPFLzfKF0fJA+trHdURizS93EActVEmaVnm+BV4912hL\nLXtfX9vVbWLACLNTPXIGQaU/7UAsStitTltHorMa4Oe/9Qn1yyXpvBl+ghiJ\naw+V\r\n=RzL/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGY4D94ynUtuVGB/e0o9C3JZib+lj1QbBvxbB2diLZ+eAiA6elb3/xnw7UPoNzRVbgjZ8fEf6MLpOQQMKOBI/7kMfA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.5-next-1592296946-b1cc37e3.0_1592297018653_0.3695767982982914"},"_hasShrinkwrap":false},"1.34.5-next-1592297488-3817044b.0":{"name":"@xdn/prefetch","version":"1.34.5-next-1592297488-3817044b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.5-next-1592297488-3817044b.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Zo2GuyALpqopNH8kgaGWfItFd14m8swHZbqNy/K8waZhCUfP5t4XyRDDAtCDH5LiVF3/xsftzEsUVOfPFtIe5g==","shasum":"ab7caccc45bd3496fe3d7f984490255a0552b7f5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.5-next-1592297488-3817044b.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6IhWCRA9TVsSAnZWagAA7uIP/08dbB44Z6IlLYf3MCDP\n3Epv5GZ55HVWG3dLsY/mutncjbud6w1L7lrD9vWlWC/GSzQhZnbOP8SrohyX\nQJuC2C0YhbkftteP2W944HKLFh4U5VsoupkhS9wsoTKqY/oyasS4b9VYTrDa\nz8ltFSh701CIX0L5iSUUJFKNbkeUVAHYPst8Mwhm7JOWpWoK/3uenBQRVyZe\nnQzOZlfcHrM73r+OJSdBsX+uAQtRmjmIy3Db1Q1qawvGfLqYUJ6hmYK7x5Os\nV2kGn+NZ2+19hJBGXku/yUEPzolWjY/L/mrX5TL9r9IVIdoy9oJlGMQG3uLK\nwsaq1XR9iEWGT938AzAWJReE03pShsbcPTfYLS4w78QDg4IOZC81eAisQ7eL\nEVUMLScHiHoptQvpy6HbMu+mtYfYmIgtzIIIUy3S/3IUibFKjgE67mx0iAMo\nQd57+llB75LyKG6oy9OIv0Y7xPi6Z988h9rlqix9EHwml1b+YJLUfqyhafFD\nKVe6WKkszVHFL65r24+99g/opsosoXrsce345jyk3kEbLV4z/7jiAoAbgPwe\nlTwFEDiE8nypgltHeO40jm9he2ZmQABhb4SxCTfi/06lUapmyn7n56HttY9B\nOSc2DeDmn1GmmwGfjVdAYQ1IPfmE3JTXIJIVJADzaXCJcNQllICBhI5JWaeM\n8OnR\r\n=oYVh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6htEYpc3eXb32aNosQXIjAfQrrKjQZT9+1UNXjYnIZQIgEGgMA3aFUjM0dG3P6spOY+F+CB8gSzOpC9yKMwoAJxU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.5-next-1592297488-3817044b.0_1592297558421_0.08548506458849947"},"_hasShrinkwrap":false},"1.34.5-next-1592307461-e564d981.0":{"name":"@xdn/prefetch","version":"1.34.5-next-1592307461-e564d981.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.5-next-1592307461-e564d981.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2CkD/sqQOCssFcffY7rn/01J0Ma0Fd9rmW/zv6sNtuFt2SC1W4X2z41xjRwwyYijHn7XVSa/k+svw82126ujSA==","shasum":"f2601aa8933273ded018af6b5253e3aad6ddf579","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.5-next-1592307461-e564d981.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6K9JCRA9TVsSAnZWagAAtfMQAJYR65f480TkN0/M5mdQ\nRpBQy1ZCaRaQLudXJ9ybrd/UZEG0VtP3w6dQDv23VV3E8hMre0GutznOr8AT\nP1NSES4sElQxU1OH918PNKVcejdpX/SfMQUnLaPoAkeWDpytX+x1ChgcNL/3\nVZF1fhshskYfeoPtCHPjq2qChdO6wY2IKWuyj++3vFzxKjPbffLPM1OSAHUy\n1pERHtL0GyjleV5FLsT93jV6EOmBGaArGyt/Kt2Bgm3fJc+GmYhbHfn/kPSb\n0eJ1ZYKsMH48tFF4PbTmNSDII8f8p7Bm9zJjJwdk0BXrmNSqd0A3EiFXwysD\n/U+a+ooGPBpXekQu6xCkN/ysWzcEIre3acD0rrUu6qB8Yto+nEqAY9Ie83e0\nj0ek53Gjq3mX5oReEdgz4hiVaLUddXfrYAFYRYCVC3GsMZNKKwecY9/8/PU9\nfQs+EFocdjgGK1mJat2z9ZyI0wuIykXhThOzRAVHA9EFVlobm3uwy2T39E1t\nzWQfr8I/n61t0XvW+Ir2XKx0azj0i3nDkm7c2idQju7Qt1HGV5rgnce8eeaV\ngcMlZA0fKrj8oYdaLWp0SLS6r0KaGfk/YxvD607dRARyJyfJoItv9J0XYJV1\n4Df9OIFWLL0VPydK6nSehQTtFp8iaI4e51cK6w+ardESPZKhV7K0i7EEQG/9\nfQN+\r\n=AQH/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYHJXuBiGLXd8TtXGkE+kNXbDBn35ZX3tJiQ+mOJOOgAIhALdWsLjH2l4QTYjvz641xpWo+Gdk6M8WZ/kc5og8q2BA"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.5-next-1592307461-e564d981.0_1592307528540_0.5782192682303482"},"_hasShrinkwrap":false},"1.34.5-next-1592309606-0e35e72d.0":{"name":"@xdn/prefetch","version":"1.34.5-next-1592309606-0e35e72d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.5-next-1592309606-0e35e72d.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-VGd+yS3zSUmNtU0PlMce2qYzjLenpSq8l4BhLO0kJKGWIv1I83O4fdm9pI94fcCwXG3qtpy3W8Id/kg0YWGT0Q==","shasum":"8a06e547d9382faa13135a2d968f296661e71ae6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.5-next-1592309606-0e35e72d.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6LerCRA9TVsSAnZWagAAU9QQAIWXOeZTgW50qS7CuVa0\nl+mce6tO3tE39gQo8wc5OPr2BYLRDAXfamkMWvp+ve2ZP+06rJsvfaTuR6E3\nPtPRY9wzph5wwaa035NkzxeU1fKXWSDt0c0kijdaTnVhiDTBEUOtPiSYN3WN\nFrag39eCPvxBBP4O00BMip6LI6uHPKKqh92oV/gD7DFIBsu74YFkMhYOd5hy\nqRjPV+2m/KBmYtUn6ONXZb8CDAL4KY0E0zRzSDxb07UTqe7N9EfXGQR8phtF\nno8ENW/lCVgRz/C7dxJBjsPE9l1K0a7evAQH4Ph5rTFw3pwwiT0n36pG50qY\n4gZIBokjGNB7YnOzkKOHgowe0X2nmuUIAnXjxsKQ73yVqwlH1diPemyUNgBv\nRcRMUXYbxexp7pYjvoTL8rwIMtA5M24AXJJP7EHFjd2ehYN2LmpVE4gRZsrR\n1K0qnJHiU9YABod4IdFVrPdZ2e/NA0HEpRKrPz1tKgk1vtxgyF6md/bmSDzB\nCyLEHnvWjbv2nbWbu2o32aFSD/Zhql1agPyrMSf2sLM3zYMwY9T9GAdMgQse\nYv/ouBOAT4OAhp8BlrBEkfkqBd3K6gpeTYe5jsX6mP7mKTfkrVAlNHCxEvQX\nsKFS1czSehbhLge7hPun5b8mhQNQGfP5vsQ95PIqbjqcAhSlRh1i1+en55Pd\nTRFX\r\n=/wnE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+GeIp3AK8y3Db+r1BXrAuSgCU1gXWgLBh4kxRswbG+AiEA66pG05BQCZHWVXJVeRvnCAbEAFXyISAChzJUWZwxmaQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.5-next-1592309606-0e35e72d.0_1592309675098_0.2594303420230337"},"_hasShrinkwrap":false},"1.34.6-next-1592309691-c5e5b11d.0":{"name":"@xdn/prefetch","version":"1.34.6-next-1592309691-c5e5b11d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.6-next-1592309691-c5e5b11d.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-d8mWHh26/oIlEiWITC+97xxzI81VwUTxljs1AS2gyy1PKGCGZLiXPjqusbrQYRYeghAr4J8XOGLnqMmINGjFyw==","shasum":"3974e90ed96cfd73e771311e5f5307b9f243873e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.6-next-1592309691-c5e5b11d.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6Lf8CRA9TVsSAnZWagAAu6QQAIRxkLUv+3QvK7+7Igf9\n9VbQgcXsJ5Y06njywCx9vhdwoiEr++OD/M78O34BxpqajAD5dT5wPvR8KBXx\nr57BfoAWemICIKb/wJH9tPCj8ZlQAnOvHLpTgfWTV6gS2zJRtgsOw0eIOJCq\nuJJZwo2ag/JIL80FBeBGhlx0+cZvY+hewxFfAVvbxSDAeeIg7cSk05Iz4Cw4\nHiNTQiQw4EHlkTaYdtnqAbyaRKMAf214tmpWlO5Erw8nkwm0REEVsmDCq1Oj\nIUBfn1ohyR1T4QDxBuGfZJWh3pY8FRKWEdKhuG4Mh0Nxb4SwjoXTJIXvpAor\nhq9AgdT/HgjZPjufKgbQil3i5dLA/Wgo+BnyTgPiHG/i9W00LPUg+C8MoOIW\nGEDmJunGPgafkhig9K13Yj5cbjvkm7ukFz/CK9gKoCK/BcwDmu+RdRotrKj4\nlSim9ITwUOEyEhpQE84MPrbEUASpmJQ1pCsshqsstVaqVFIhqg67ZqAO42ak\nfrxLiFmb+cvxUsos0mqLVw6dW/jIaiqHkVBduK0Hr12NiULrT9d1XjCN8xg5\nqxrxNKCrx4MsOEE1vyiwQzMI+2fWdI6MiToFe8jlugGof9ACSwxNIZcVaXLe\nNclKEJeEdYajjUHN+5KlrQNg41l4DC3g4wVjgAwpH8p8urEgBo9NeAQvOuHJ\niO0M\r\n=hxQY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCp+FH/puDpwpj9wy5Ic9koJhK1X0Tcr+WfOdVzAgctigIgH7va8AQfhmjPvwdntof41zV0UWYw887FOsFcCq4m0IE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.6-next-1592309691-c5e5b11d.0_1592309755815_0.5449644851168487"},"_hasShrinkwrap":false},"1.34.6-next-1592310367-a3cfa8f5.0":{"name":"@xdn/prefetch","version":"1.34.6-next-1592310367-a3cfa8f5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.6-next-1592310367-a3cfa8f5.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-cqvlKu2zyLOqLgPb5YRY3nlQeMh6abdq5NJaitED60osrWEfmfzRTrRpMnop194FMOecDd0OVNUo+KFPvKtAhA==","shasum":"1b905561726ad891d447d8c0be4501daade29c17","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.6-next-1592310367-a3cfa8f5.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6LqpCRA9TVsSAnZWagAA34AP/jq0FRngvyAbOlrA83v+\nl/N2YIXNEyJreYNohtiOexXpTK+9mbA42cO9wgWIgUjqPlCUC7GsSuIGn0V5\naXDBI6P4Coxeua8yIGmzj9dozY8Wg/mSQ86xWXSekH794lrqOxlxndmPIoEZ\ntd4CkrV/aydN73O5gkecdFCeIRpC+j91m41pALwNc8Obr+d6ijEP4cv5BJm6\nlHRGhOU73QEWHJk8s0oE5YdL6+VZnV0n5iwcyWw+U0xzG9lgLbC6bKKshgsK\nx7Y4O0rXxrnsozxZY/p7u5CcJD85qMylS2ToPAOi9T7pc8pS3E5FkigXB+ez\nAMLGWPvsfQdgWXXxQEfbgsd5LpNyAmZ8EzM2eVT0Mx6lRwgw77e+UNwGBcDP\nHiO6yAJed8OhzmrC3nrAy6L35qmDk5lP05Xl1aYA3OJJ8xhmRL84RMz8McN/\nhfttK+x9beUKw7jZwjiYMm3Z4o+F0CIdNnZ7h5YH5fwRhkShZb1HPHykmzjK\ndmJBOwaXeMQ1JNAjdtUhvNSgwZc/iicM8ss3X96nirW/Y24Jp/q0miqWUFmk\ndLj2nAAE+sDFvCc7CqbgBbSCp4+sxL1nV3NgJ/oaqwUJz6wLXWA4mnr76pwL\nDlqABjMpDzUFqlBWZIg9cXze1s01bYFkTlWPhFDSoHOniq+qG3nzVAHv4XHs\nTwk9\r\n=eBgD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJDiHYTj6TrfbVewoLFDITW+ZkcExCcBJvBtSepqFIrAIhANkc51kOrzhBIAQS/oeCHQ5ARllpuccoWUe3mNu1N8Yn"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.6-next-1592310367-a3cfa8f5.0_1592310441427_0.3146149612255138"},"_hasShrinkwrap":false},"1.34.5":{"name":"@xdn/prefetch","version":"1.34.5","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.5","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-j+60LJnoGRd6/tiWgkL1KrSJZ9k0QfqLpLv7j1h/4xmFLk/pUElcEP0YzIuJSM9PA3VfJ0m/JrGCOm7fVg8hbA==","shasum":"25bd3d703e2c8163afdbed4f8e26d27bd100ed75","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.5.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6LrCCRA9TVsSAnZWagAAQLsP/3IDpAwMK5jda+qcDFXP\n7Bmf6DJ4v9znLyW/B5dZ3iq0prv7Svsb9lRnXIE3tjF5RFeN27sB5u7KtBWH\nGgtDdmIwRELIJusujLXPAKsbItHgh7wyjLcCrQZ/GBK0ObkWgeyitFRawNae\nSJMuFJVhLrgho86LIdg4hySiWBJDWAkusfTxc0JWYde4TY5Zobhg7tKPDaA3\n+AMWcdr/M/xaQYmIOFNSd36Zddqrda6+CzjObpJpvOe6Vl6toUa5jZuTGhfz\nfT5yusgi/YOpt7ScxvrjBo2inNsKod7WDTsLpwnfRAZeu+aoM+XZroRoeSGC\nNYAH1aKE9Kghq3yfCK3cvwJl1MADNxXVBYiX+Juv8vqG89cU/q8QI+ZU50pz\nrAkr9KfP9jFsIh6yVmoTrJ+M6so88O8ia0PctauJq2pgpGL7A8QXqNjZjObF\n5JX3UZcGOfFhgzOe2RDBDj1Hru0aLlutXQWwY8eaMyxgllu992JOl+i2IRfE\n8bZwVHBIHrEhiHu/TJkeG2wUaVrfMbToIK9tfEb2P6bg7Puzc7kbgdlI35Te\niSZuZiaO9dElDVX9zh7EeyhQq4wcnW90ZM3HzCVLpXn970vrGR4b9iKsf2i7\nLnzxK8LmdavERcow/kpBFfcVXgML/qa1YmuQN5UDm3rE8HcklL+qioa9yeKU\nrxAB\r\n=T5Sl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE0uxWPQ6WWzV37rVbHT5PBm4eA+W4nBKneYwCuXTuuSAiAwqJ8ih89sZNOTicJVVshf5ymbJ/WVIMdH3Ye1Lll4fQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.5_1592310466174_0.5055529519334172"},"_hasShrinkwrap":false},"1.34.6-next-1592311845-d7d4041f.0":{"name":"@xdn/prefetch","version":"1.34.6-next-1592311845-d7d4041f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.6-next-1592311845-d7d4041f.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-gdEdcs3xOLZxzQjM0PzqnnJ/VXn/DCiFoRS3ROQG9axjOaZuhLXo8+ribnqdrEC+77XdMBnYMq9Nxy56d3R7aA==","shasum":"9c87825be4a97f78cbea8d26af1195c5505d8b2a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.6-next-1592311845-d7d4041f.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6MBpCRA9TVsSAnZWagAAOCcP/jhoCzMt5aYLeABWBTRY\nbraVnIrrl0cRQmdnzCwzAHz0o5q1jmwZ1XZ/fooHw00o/9P8+b+geo9/Jqfa\nsddfar05CZsJ0++a2c8yWHpmLjejfB0pLwaESSOOd5U82eyKBwuKWNA1pQpb\nG5q7k/iYWB6Y7GRVShU68rvrMR8LqzBcrPt2HHXzm8fe+ogiaZZMj2XGAxoG\n9tEpxA/z+9kodlfvTtYy6RNcu4uyOueQdoueW17FbaQVpHVEjTXx3afW+R0N\nOa0BjQvJAtuSFoZGFyKMZjojb33Ko7E9ryIVt/dCUnKrcwC7luEDZHKqfx5l\n36lRmQtWn0axFusZHQ6UkD6P5p+qlX/So1Kau8GVzSf+3tNdc7Mm3NlTiHiy\ntB3JI2arfqHB19kT2MWYiKvIgBZjseA/oOKvyplPyzbuvRJeQ2z/pGNR6R2K\nOoIkGKu8wcrRh8A/TmuRiQo55Hu81VFNjRI90bYGTZ+cQOGGQSX+I52t4Cpo\nrXiONcBTuGEbB3S2N7WDmRe14T1StgZ8/E2+EZJJQGQZKuL1BVxEEYc1JNOG\niMZ5d7guCrDwHQh5xQi5GavM064U5948a0O0RwqWLiteXDTQeo1GxKdNq/xS\nvpMupH8p6r19l6EOT1m5bDms4vlLR07qAukCe0VMkVM/2ksT6dj6sqbozrKH\nNO1J\r\n=7XTd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICOeISYPayOqR0/oVyenB8Zmo+LqgJ0gSYuRZNt61JRDAiEA1zbfWiSEzEc8LK5uqGHYw5/MkSwerWcY8XqWkhma2dY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.6-next-1592311845-d7d4041f.0_1592311913084_0.9144058032035993"},"_hasShrinkwrap":false},"1.34.6-next-1592312588-87822b57.0":{"name":"@xdn/prefetch","version":"1.34.6-next-1592312588-87822b57.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.6-next-1592312588-87822b57.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-GDKzmQC7VV9QwEeoo3GP/O4nGagMt5pIMhAmgmFUCoIcUhLo4EIO8QBq3axgvQ+ftvIq6M81VUc/ZIZG/57org==","shasum":"fa7c442788a42b1eddb2664ac9dba37fe5470522","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.6-next-1592312588-87822b57.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6MNWCRA9TVsSAnZWagAAHkUP/395fPVOhttkjFDwF1iy\nQitmvcbx7dvDAGjUkM5Ey9Fy3EopbvbYudINWD0PWHjPWn35AhLjzzRCha5S\nufMYKQKWvO2kKOYDHZ9tpCOTxbfedFohE3zNXonMNKkmeghqrtmBtU/ncQsI\n/Qd2N11fXGzXO81OjYFqzczPRALnqbznNSYrPc4dqMl+uJdsFjs1oZzPznkz\na4Hj886ZYE/Xz0rJmRW2jYVR/QKb5falgHQeN1MmtGPXJ7sCBVH3pfWHFby3\nbnN2No3eByfasPmT/pa8WPS/8q+6JeH4qWWbQyvea2c5MEmae0iQr2aplTtL\nIoGThI0H5YPpe6tJWfNeI9BWNid8NzEfhosrxJWoxLrcd2/0Cgg7rjvuYbBw\ntX2cjk+wWhznzhHcim1v4GJH4iLuHRCMgbDB9KNV3LezpxL94v7SGzj+uFEF\nV1zKkjBO769VEdqRx9tU3Vptfo8cAq8ttsjjxPX0tzMpLNCPgcncd3qk8xTH\n5wAhoxtHsYKCyrD3Z8drK79TQBg3PVWsIsw4yXyBJZh8O0XStFd/9bYgZawa\nJX4+jGtLb3SY2qaban6QFk6bUAJP/iiFYVxJrZAsTpznaQxYdYgqfZJTsrM+\nnVdULaT19EE6cu8HTPs1o7vLHMPfwClIAJEpDgB166JPjLDRQ62Iy7VKkJhJ\nhv+S\r\n=OnD2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJVw/4m5sIrVYZW4ZIkwBJA9ZLnYiamCadwhgUZhcBkgIgQrLCIcWhVLg2+8WUBzi84pgGsqvEI1McibGrp43TNCY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.6-next-1592312588-87822b57.0_1592312661979_0.9879591843367512"},"_hasShrinkwrap":false},"1.34.7-next-1592312672-1df663a8.0":{"name":"@xdn/prefetch","version":"1.34.7-next-1592312672-1df663a8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.7-next-1592312672-1df663a8.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Vk2G8C10IPsye8v1ymhY8chpnO8EkBCvq7Mlb/9TmFEiNMhxHoicoqyV/a0HmL7cwmD8kscyWFaUwBQd6p/1dg==","shasum":"14160c4d91d4f479045dde6b4c3b9c9416e27b69","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.7-next-1592312672-1df663a8.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6MOrCRA9TVsSAnZWagAAMJIP/jOn1lh58P1lvp80C58h\nQEP30TeDxyZPFOtRuDxNJ+KrS/8ehenrPZOqwkQBszAuDHjoZOkqmPl+7fQc\nj4w7tPfqke3s7kA6OOflUcJ6X/QwzOFavhx5BaIf1FYZ6Ks7b5wTKnxLSMh4\nsXDtCf6siZvhB0xe99kXv3GSYN/N1qNOgUsKvD9mlDaZbMAFCUyANDJLTJEy\nHqukgDBWGu1V90fAdWjIIX1xIsJxXj+r+p2dU+kRpFJUo5Cu3FIUHuGShx6f\nfebUjDCXvAN0whBOsvI5fj/DRRXfl09F4sOonvPnATWK4kNbDKv8dV9NQjfa\n3cP7y7miTFD/xMprcD+fLnyyigaoJWCiIKSd9WwHlCm5wnUEQ9KqSR5kSaM0\nhnwWphyz4Mln8WSIMMs6SQ64POgUS6IkbiC5Tm6P4FFKKLosUHVMb2W46xjJ\nAp6fP7Gl8EkZGBCtmlSsBqTZF1RcyuUVnl673FrkyDMunXoNGKRNPU6Xjuxi\nPaQ49YFJvmQl0yjbeXrt5TgLFXdnPriauAVlM9IhBedyJlbPXntCQKFmmpQU\n5Yjfq/+ro6ImVXuSNx3IK72dT8nLLMQh9Vaf0Kdk+F8W3NYYo7BHY7p9YX/f\nHSPGHsvPUBjgPvhTClffo6OZo2YcPPi4Ni20DmgoCbRgP7eyY8Ba5w6OKLRY\nOhSS\r\n=Pe3w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFZ7tRphT2E5lxyyhcRoZdok1CR+RApsKCsy8PhgZzaRAiEA5/XZ8ads+6Deq43H5JlVjpFyL3Qe4Q6dkAFLEV0r2yA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.7-next-1592312672-1df663a8.0_1592312747498_0.04748031251160878"},"_hasShrinkwrap":false},"1.34.7-next-1592312705-2b105632.0":{"name":"@xdn/prefetch","version":"1.34.7-next-1592312705-2b105632.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.7-next-1592312705-2b105632.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-E+Mlh4jaFlLChUhcMCuD5n4x4WOPKJvwx5wsOsrA7zL9LIezvmuomPQNO4BG4nQX2Z9jZVDoua8VOaxvxHUisA==","shasum":"205a49facf0c77d2cdd2b6a75a7533a6cf7b26d5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.7-next-1592312705-2b105632.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6MO/CRA9TVsSAnZWagAA/v0P/AjDiD4p3EsBxhzBRNJ4\nxbdnlG1qwrz+5iyq7qSqhbnlDMZiBXeAFWt8QMWWZxFS0gq2oGtYYWhIPnkw\nty2iw1+EzTSJAoOxheKCPMKHShhVAaffGx/t2s07jBVWFLOTghiyBdTQN+0o\ntDj3CDpWDCzX1hljWkOQVtiWKBfcmkvaXSoZR4ZQFuoxYC4bM6TLMpxG3Wbz\nKyvIB6zwgBOOZksaJ2hgL2LyUO756d7iSUBYvzjQPXJKcRi7oF5vi6mZQsNN\nRkSl/kayEO1pC+wsdbe0njHzsHkEwOBZetrE4GCn4HzZRy2pb5Z6ce5AaHgg\nKJw76Kq4RKbaP5M4Xl0sWzfLjjCsjaZ8uKdAmNQHGEZCGkXe8buU5CMOqqGK\nqp6dmCpsWH4xRmcckLejiCh4SK3gyLTzu+9uGWgMUTUH1d3gYcQlUgFfaGEy\npdrRrX0R+QjWGPERW2pKp3dTCoo6dUgT1duDWbh1hwOEMGujiZesgJQ5fPYX\ndLXVSOtKu7uE13JKDGnnm85j1f7thGYy9KNjUl68A7k0ufjetBV8WEFARmRS\nTRxoEM5YN+rfQ22ZeIP2G0SygLHoZKv0No9DM003wYFoBwUBdodcyvt3P+Xs\n+hO3OOzw90qHdYZ7sxMWXB29LvFi5XK8oqB+UZqCTqB8h/9lpdq3kc+xzlZy\n0JHN\r\n=6q6t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFH67gFowF0aH1QvQjjumg4BZDJ5Jb1Pm9k81vFqXHilAiBpg6rkKkpP2ddD+FbV7AfSuVeFEP+uha4cnfGVfp1K2g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.7-next-1592312705-2b105632.0_1592312766858_0.3584929158417429"},"_hasShrinkwrap":false},"1.34.7-next-1592313144-1f253e41.0":{"name":"@xdn/prefetch","version":"1.34.7-next-1592313144-1f253e41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.7-next-1592313144-1f253e41.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-6B0ATEg5JFEIpter+6R4I+6K6V5YUjlmKEkbbgpDXCwZ+Rn1I6JBYY6JxqfDJ7CI6nVCLvqfJdFtIUAktj672Q==","shasum":"7a12342e1fba45166afeec917cc9e7ff49859c06","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.7-next-1592313144-1f253e41.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6MV8CRA9TVsSAnZWagAAPo4P/i5bCQjlDrBvOpFSOTzS\nb2jYF3EvUQK0JWNs9QzFjJpnwSyMXVLxW6EfDh65xFsicx8TV6ycdrOUaQJa\nlWYjuEleiK39aqfmsiUCfbQhxio7MvONR08J6IBOXJ/JKDcNQEakHcJXRCzb\nRjzgQnZEac5LvZ+pvA9WCvGziLwRTF3+p4gRoykG+RKmtLZR/sUuQfauc4Wh\nFQjETkuw6KcseCbxfaIgfnHbImvZxFoqIbTjbBK3W2KvrME8RcqTLKRBBD0Q\nQZ9/LRZZ+p+FAwXDfpYkbUarwiFDYnW598UhV5pBaF3fWqE30d35Vxv+ItVT\n0IDaDpfadXgPmi23FTqKdJi25bLEj4SLL0zhYTT+YIznmyazorf2ewVkPoIR\nJutGsJiqWmqpJAWRn0qpah4m13TzlUQ5o3AkAtZd/RRR26KQ6Nk2mmXoIO08\n+ECT3rWVrJOahac09H8owZ+cUkrIcPQQdcAgRiJ6vjhBfO1FWhr8uuOkybeb\nyJRbLtovE/k04EWjgMVi2o4wN7Dj8lornykuK/duHCwz926SJ60/B7WFUSeY\nd+5T9NaAOUc/rVAQY3j3i/mDoe+kyFAjd2dSnqpMxkqwmrUrXPIvbP/QQho7\nXXm+qaaTQcEN4fzuLXnkpL5A75wT/+Skl+a3Otu3zC75XQZ3jYKFVbo/qOsl\nzSGk\r\n=cdXR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2tBF+b1+5D5DG/4OEhUDjukhKjcnWn/5SolJwJk139QIhALzRO5vOG2xDIPZknWUqWEsrtDyKBeR950SZ1XVW6gID"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.7-next-1592313144-1f253e41.0_1592313211962_0.8513175824895349"},"_hasShrinkwrap":false},"1.34.7-next-1592314772-89869084.0":{"name":"@xdn/prefetch","version":"1.34.7-next-1592314772-89869084.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.7-next-1592314772-89869084.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-yQtU9KF3e3pvtO6X8JqCeeeKePr7iKidPpyDlpdF3LZqv2huVd4QAo3KSLhtJMY0x3rGVjuzjYWZDk2piXAZow==","shasum":"d581477742bc3793e5cb944b2bc25150e6848549","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.7-next-1592314772-89869084.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6MvTCRA9TVsSAnZWagAAgVoP/3XR9DwHyVVlyOLE0EKu\nVEoFADPvTPc+MRLS2GrO2qnqBRWOhyb1oJLN95gQbxzBWNGtobD0Z8q93+9i\nHAb7VSP6Gyznvs2YnKWHmJC1UbVccvfUjD4qTbNyAmfVl+Ucaz2QFvy0dYg2\nXX/BrLiR5CP5TkI1GayfcR7gp7ljAsIdV+YcAwZ56dMMvv+yS+cO1chG0BkR\ny99BJUkJVCAiRYfVC9MQvtsgmKSOedT5dSIbKirD7FsBeUMT4ZCbdIG/0Ur+\n782gaX2aanOinDOIf4Fvfuz0ad2C5w2CdlwextHNJtgjUfUjHJahci1Is0Mo\nbSslDy8CK9pckI4MjAYjKaQL3nbQJqOV0IE7/0VKHIkP+L3afHjfq8oChwWs\nfdcBoDQeWI8oRjOFi/eTfsdLn3DoxXHtPcUOZYiB9hecBVCT/DPvryp6MWfn\nBiRYefF0h+LusshIbHtcMUO/nRMfAAkVN/WxIscL9LfiulSGCuOBzFgGTzKI\nHq9pryUwIHz2oKr2Nbd6c0L4C1T+sqcJ6OpJwO8skI1cFN2k/KD/Sc19s0rI\nzFN9A6xVkV2lTMJgGEuUfdn5DHGEpblSXbUkePEDsP9xj9+lLcvLFz+Bcl0z\nsom5QvIQjapqmVOhA9egyW78nLIq+aM9/lKiIsyzuS64eWiRQG9/FN5G3kF4\nLRSG\r\n=ukgY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMI+APQqPLotSh09fnn3TAaDSJS7Hvh+jtJD5UGJtJTAiAarOZrdsciQZI/ioH476GsVprzK0a9/E5YYLmh88PmSQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.7-next-1592314772-89869084.0_1592314835468_0.9066419396168235"},"_hasShrinkwrap":false},"1.34.6":{"name":"@xdn/prefetch","version":"1.34.6","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.6","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Pp6a+0OJG+eFBPwumtMdv940nZmWk4QP69oAmek57/SRPZAMcex3R0u9dk84eIyyn2cNriKawWxT6ateyjdxng==","shasum":"2a493e6f92e22106031998436bf5c4ba92319434","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.6.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6M0NCRA9TVsSAnZWagAACP4P/A/uz2P2Ut+XTPlKxNsC\nRFxlQUU1UiB0IkZcbCTpAg+hdLRjx9915O+hFe/ooUMU2l90amoR+9dG0Xdg\n/uLt7Esyg9SUuq0EnuY+nCsPyTXvZ36m20FjTsNwkmTH+Zos4bO/4roDqA1R\n8YDAlYSv16ivmZ9kqvU32bqfigycLLNTpg+g+LG2nsp+VLX0u518NfSCQQ7Y\n6JKRAVLIsBqoQ7d5h0gTdNzVc1klxhPKLNEmuXKg5jjaSGK73phZFktrHprK\nukB66XOv4z57kNIFF45cJY2zw2krogDR4pzDZ6NDchkMiAb7lY2+TMyVcGrN\n7nnlvPIEAZE0md6EIF7y9KkBWdRMAsTS6bf/gf2KRkgAcbeCG71z7p5Pc8EG\nj7y+Xgjd21b0vEZ5lcsGz02LltysEvKx0xGRVGhsivp8klDFJML0hs6l4JGK\n5DgcNjCiiKgYVsxKRnqjDFQf6gYHK6zi+mECiEkZntDnxfNi/rPDo6PIUVfy\nt6v9U88uJrgwFGNNKg+dK3DRacIp3yrVEDfmlr3y/3yn3w++9fEV52VBMmpQ\nmzefDEM+qr6cAnQuPHyHwJ3JXq/ruRVm02mUa5WKLuRDUaHL6yTy2xwIQfSq\nR6AID5XdjpDbV/9n5tLq5e8GKS9La5dDKEZ+PIvamOyf2gBhFK6cszTaJ7SZ\nI9yJ\r\n=GSts\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHSFeF3G5vRCYaaxkbqIxKIlOPH92RQHiU18yym8kuC3AiEA0lN7P11MOgCNaCrWJQKzWljCh9cO341Z5I0PHCiUK8Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.6_1592315149019_0.051012535826098215"},"_hasShrinkwrap":false},"1.34.7-next-1592315768-d1b40077.0":{"name":"@xdn/prefetch","version":"1.34.7-next-1592315768-d1b40077.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.7-next-1592315768-d1b40077.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-lxrNzoB2tGw0Aavhj9/1gSrVjnr6OU0USNeTubZdICoIuy80hYgLJt2JQexuHMWkaDLpXIv8H1Da7FmCgDOS3g==","shasum":"c758ff3ef65c4ec0496596582414280d30e1f25a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.7-next-1592315768-d1b40077.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6M/CCRA9TVsSAnZWagAAp6UQAIrqPR3c//7WLgUtAvqa\nvY3bfJm9iVDGxNYeq0eno7m2QaXjPuUacxiAi/DMJRGDyiTgq4DppotdG81L\n9QWAW8LL7/IM1/E+d4gc0QCjqZ/JEvFwakxjmknzc3l7+eMmkYZS2xX68vqW\nAZqK7Abuyr9ccIqEk7jePLq/U3U2O6QzVxb7TzT74fpWCxcsAF74G4G4BmQp\nzu+nYB2hWUhUK9v3AlU/rF43Bs77ghtgx32UMZ5dG6P5Xo80Wmsh+O6jFeWG\ncICkhlT0CaXjuCwfyeb3PTXPyzSrlsddLcceocY2tUOjeafGEaoEPDZSjzT4\nJ4mxdNRuFOu+bOsyCMZCcKRg5T8cWr8lvNuIQYrUOX694FUV6m+izOQASK1Z\nVWG3Pe3PHtezvpWdjFzCK/edSi4b76VBCbuZfg4kOZHBLaYfxJJYRFNDTrIl\nXRsTQEIwRukkCWlE6yfNNytbnqwCbt96+mwyVuaAzwi9l+oIVc7RAsrj6epO\n2qN+PQRvUIA8PWcCuZEkaziBS3qwMkW9Ia9xTO4/0uhuzbruCHUZ5DnTc5B4\nHipgLgbCy5gMW/MYEyUzxEs/mI6Q3hV0fqwNyieQLsmGW4bzIbU3XTlkYwy7\nPZk69J6k1Y6SFhMHOrpcvQmn3TQ8DqSvG3+pUFo4WdVp537UlFJ4z1o3fM+H\nAZZf\r\n=E65a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdufbdFl2k1ROCNBb+qsMglqXg27QoDgO1h2RAxpbCkwIhAKzdeM7cQnC3MiBWIvTGAI2zhdoc4dTzXD8jOTk959Se"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.7-next-1592315768-d1b40077.0_1592315841682_0.04390123561639814"},"_hasShrinkwrap":false},"1.34.7-next-1592317014-c857295c.0":{"name":"@xdn/prefetch","version":"1.34.7-next-1592317014-c857295c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.7-next-1592317014-c857295c.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-wY8X5DNk+Zqyo6Pf2ajdaVbeb1VuEMH+ESbFzx+GzxlBRcK4239A8p2Y1ndmQu3uVkFTeewR9VFs1JRqjYxyfg==","shasum":"cc6ae8089d0f2529a9617a2314e0d1f0c4e7b574","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.7-next-1592317014-c857295c.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6NSlCRA9TVsSAnZWagAAik4QAKFSt7rHCd+omYMaBNYU\ns4qrnhvVBmSl95sYuQbfK92/kpOY2sHNvbF/ajtOkNpzlVFqohCWFQNyrGGU\nC07klX0StBXJVmu6/UaBaLmWVmuQnlh4i9+nKoJUCiVHK0sxhda/JEMi6B4E\n6zS7BsncRZMf0RtLABB5kqOsLBWiu1fBNPeGkoxjbeGhhTMxMgqouAubWIHq\ndMeeb6FiNtI3kJwKI6IwoepoFYI+W80AuDVxqYe5OOnU76LvJoNSuNHJT4Qe\n8w+Whu6RaufUIY0WCmaX5W5NpM3CV2XVx2VXz8pXlqdXuxSyTw0YnJvvvdGS\nY42sgouXO0lXQsvl4R7k0CQxUgfS/v+LjFzkmqneF4kY2fU2w89SWWlKgONR\nWh2NHhGRbl5fzeveVT7nLQuKbrAXd+nVUNsdaTUig6t7O1fIQbbudCCZJAjp\nPhCVCt/RUdKqUNXQMB4M0DeW0VbCqEHyXlDExxjjjnn1n2JdxDXK7wjp76ch\nQ9j2w7TWpNvaqP2bXmCRxWT86TDbZT52h4l+IkP5FDV7ZWC1sMjUp8jeA0a1\n24hQstEFZ+thgGocNVLpueVFHkxcNmH9F+A002YXRlXVech6/9F0SpxZ6Pef\nSOnYrvk0qlEDbiHYnG5cOSXlJl/G0e65Yowm5cY8FwyCa8zw4VOXY6RQ6l7p\nCf7z\r\n=Zmjm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICn7LIJc2+bra18+Q9U6oQOvEsmmBMLOAU0fq4LJYpwqAiB/SmoxWnnbnFiFC7E/rvm8YUkha6KOHYxgfQ9KCz0hsg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.7-next-1592317014-c857295c.0_1592317093008_0.4660226393196407"},"_hasShrinkwrap":false},"1.34.7-next-1592318936-b9045aec.0":{"name":"@xdn/prefetch","version":"1.34.7-next-1592318936-b9045aec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.7-next-1592318936-b9045aec.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-W0z0Ua8tJ+lqKAtCTWk6l/X3ao555ClWW4Zml2kzoAQI9veIS70Osawwin8lEO94iK1bk4lqoMLlHk4zoeYAYg==","shasum":"5ab65282fedf382cd1a3ef29d17ce1964800c525","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.7-next-1592318936-b9045aec.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6NwqCRA9TVsSAnZWagAAegsP/1gwqPbn45tOiFyWPRrj\ntnTUEbM7otMoTP2WyHQox5rPWTlI+Pc6G/YhlWea+LEiABp0TTB97YDaB8zX\nuObjB9k1i9evwpX1zTbecTv2jSibkwpCrZxGKZXFpMC/qpMEIiOb+v5Gobs0\nVQeQvJMkbubRytNy7dOxMSYQaJ2a3zf9SFzE7SgPbQRpmDf8mun6TZZjAOwt\nr72VLTBuRHId0+A0JRdjTrBcwtuByYuKAK1qtxcE7OKB09r13bs3FNSNC5Mz\nrnYMF7lBEF8N0ubTlZwHQ6lFaUY07X+VnejO4NkDV+pQl46UlGGrmf4nIxIK\niE8mRYbb1oSsugrpLaAWwY10poYAq7kbsemN/QV1aASYB+z8dfonaPHtZN+C\nMVDGFxe+FiGYyQuudJeBJBmwFzUdyuTrwmI937PoEcGVqW/lxT+rl+ZGjSlm\nHxIey4RmoUoRwqCYEQWFrJAX+TkZkdE5/gUPBI+qRMVhD2zou6LdHZGfy/H4\n9iflCL3+DDftFlmN4IXO47m+BwAW/NYfESp/6bykbyPg6CW3Rf/+oa8SS+vk\n8RCqx1+5YINH2k48szmqs92nCe+v7wJ5x8VrfVQZdBsxMYflv6G5/rmdZp66\nmnx5usRR5AMc4SWVsb1AAVZHGkeBzpXor5dRRjXXMIxWuvBBupqcNTkPXnJe\nNDR4\r\n=rdcu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFEIQxdxHw7hWQAbWZCcLGNO0l7eI/U8dJg0zrIfOtZpAiEAyzoI7rD8lppnb0huDThEp5bgtTILyZJUK8n+K41fnYE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.7-next-1592318936-b9045aec.0_1592319017852_0.9062084569001478"},"_hasShrinkwrap":false},"1.34.8-next-1592318977-fe0422f0.0":{"name":"@xdn/prefetch","version":"1.34.8-next-1592318977-fe0422f0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.8-next-1592318977-fe0422f0.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-BiDMl8SJYxfXzCDDCUiFcM4F4bMN5I1/I52ep+KtcT10UsSLOd5Lpoby+YUviTkZnzIQQMEz+V1zyX8AcY/53Q==","shasum":"093852e0d4efa452e83995d871da40469fcf0fe6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.8-next-1592318977-fe0422f0.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6NxJCRA9TVsSAnZWagAAqD0P/jg7+0fbRjKexTQdzI0n\n/sC89y1xUj3m6IBmqXyzrH2IMA+Q3Z46Mdi1YEl8L9N0Oavo0MxHa/VyBRBQ\nYBczDQkRZxFs3AgvNC0t0TwtSAVBcnuKCMv2NIFMZdjUkbEKCyBy1jG4tC/M\n5pXtPsHVViDqP9dGTxegBAONqCTpuLfgk62vr2aMjvmBGCRBy9bqQlxIKOlL\nDEDMjKrQFx/EwKJd0sjMXb1wQt6VNFn/i0Y3PT/SZchbJZ4BdKKbt7z3v7oB\nRZhOEGC5AnMaIO9y3NY4daVWWwe77KPeLpW/WS/JNWFi89PBsw9DYDbVBort\nvzeW9S2vZmEgS7iH6CQhXzHtyHIIZiSJcb8nteJvAMYX5bVw6XQg/ymY7mL+\nAaL6Jx4uck0tgD5FwtQ7SFcGx951WGIAfFoH+Tlrs0FzAOB5OtB0+bktQZd0\nwebf79bMddchZ2weqht1ktU0jSXLTJ0PFL9GeVdnsj5Yt7vXgY58qkAypoc4\n2zgx+CVvjsNy2wqh2vjZHH/rZkIQTSzGpRl2ZVreuykCdTDIZvrWVYoEPbQu\nphp6/rbutRH6mU1Izp57YZ0tD64vwaC/Aq2xdKfi1hM8Y+cJYjzbGdLOROUV\n4efNv4vtSg1EZA/NKzJteFiETwlG6DJh0W6OH+FYCjmvgbv9FbGGxQ3D2xDx\nh/uc\r\n=JBNr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeUQ7UC3W7YmIgFT55IydbycOYO3/ZH6R/spBZROwtigIgKNxAM8MoKejJUpFAiKTI0aELO3EUrWe8UHWd2cl8Mhk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.8-next-1592318977-fe0422f0.0_1592319048575_0.5110798462986281"},"_hasShrinkwrap":false},"1.34.7":{"name":"@xdn/prefetch","version":"1.34.7","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.7","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-daUw2mNJIF1pqzILJHhRoZCVO0kOJPxKksreMAT0FCVzFh6d3G6cq5BV03erj114JW8hpcrVGyzg6jK/CIoTwg==","shasum":"fe6d146eeca6b384c4ea8f539ea4b2a014bc8369","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.7.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6N3MCRA9TVsSAnZWagAAq8QP/3gLuOaCI4a0dKFuNpOM\ncut3Z/cikxAJe07FEcCYaa28hwEJeDCHx/PoFnFmljHaRXoBP76RAcSSruTd\nl0rhmd0sChXzGtnTVVXlkNorM3iEGscpyKKM7Yo2j2j+EbN6bzLbIKuQLIMg\naQXIIX+zPdP/dRTp8BdNgFcBumnhSpyRtIVIFRZrKFCRJdE73XEQVTEIQ9SW\nU3lFvOiBkcsnsRrfa0tVJZXpZ3IKGe9cqPLzLD1geGc1BJSYDbFrDIsy5gjL\nhs1eyMOrC2AybAUnsRMTHP0I28yC/HmxardnkGYNN97Ci+4jH2QZad/32aNX\n3R8fYt6POxS6fZ2zO9RIeGegsIq+lkEmj3Jtz9T5Ml69kwtXHUWogfJRkX4K\ngWR9HTbUJhPSFpek8KYDTv9brnYzJbcdptDzt4uUhtzH6jtiHfpoZyt/l275\nkFsOTgxPWeI3/lZHcJNT8v0JBl54UJS9TrofgTPO8JQ5VEpluATrvij1w/mx\nk2mO4xa8OJzXOCjt9f6zVHn3Yyp9PgY/fwd7sWqglUdYFBab2bgzriRkx5aK\nDNmDfeIL2AecPDQY1Ps9RT8XlkJd88hEi+eqBOwPdPq1IRZJva7QM164zcRn\n4zXyfPMDjK3FZ84QDSWMFJ81Qj+E5NjoJXOgA7ELJJJcylw5xKfg2Wns8P8E\nvsvI\r\n=QbYt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYKAV4F8HfIcnMRP1wv4S+HWw3b6yeUYaT/eVwbpkbjAIgOpOh/ZzMxFweA/69d3C2MvEvWQzvug1K3kPrQDHEQrU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.7_1592319436462_0.15301284790095515"},"_hasShrinkwrap":false},"1.34.8-next-1592320383-bfb04986.0":{"name":"@xdn/prefetch","version":"1.34.8-next-1592320383-bfb04986.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.8-next-1592320383-bfb04986.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-xbpXFbbxx3ZB9Y8HzY9oasKLhH9iyZcJtd5+Jr575yJ6lRby708wf6FD64Cs/ofCSlDViHpapc1X0I1UE5Q71w==","shasum":"132311643443955a189ec097b23a9d4097488342","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.8-next-1592320383-bfb04986.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6OHDCRA9TVsSAnZWagAA/NsP/1NuiPKnVijEKd6NkMK2\nW9Dlprb3IGWpInyl3wji+1Hlfg2cpZ0YHDl7e6jpx3afcLZBLuDtS39n5PkJ\nZ1JogNbkuJJDsh7qgiFQiCuqyVLmtHGQD97nZGtWpPwEPtjY9aQOL5SprBu5\nxOTo2QrUlCNqdAFy5YNJ70Ey5n4T7NS7PJ+nBX2xuJpOBXh8729owChRSoL9\nTVLaFhs8B9b2TBz5QtiNTPZsReWX5rvCVnAokwu3HBBYEI6SlNo4/y+FWDqS\nB/mrh/aLAXge17yqPJstQPdvrEMEGcSUz/9kkz9tHYYNA5WC9wZ/aNHih8Bw\nywoW6fnhKsv+a2f3LkXGavbdXrD1O3HuG1YXI4txW2p07Hs3+Z+CWbOU54cH\nlCK3oZNnSHTApcTGjkJLjYXAnzCCAWtIQ6WfipU4WfkR8MX9OQ8ys7fJNA9l\n/PCKxm26CZ6Jw5Nwb/DdGDVZxUQNScHPAYJ4HwZASPpi9eOgmyoBbPoZ6Zt2\nzPeTVeCJlKEb8wm0WRVRC3zrY13YhYSjjnKMFxn1TWrVeXfZQ9P1KVZI0J7Y\nSm462k2Qf2k2K4QZ3Wr3dvieZIIgdy9D98Lcw3Y6DfmyvHkUqsCasaLQoS6Z\nrsVU/ztIjRUuRYcglad4liWEC0WIdInc+kh3gI8pX8X4fZWXe4k73gD/P+6/\nin5K\r\n=K7T3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH3L74+RQXK540vSCWR2oFcz2+oRaZyOrZoB2N9m3nRUAiEA+cnTWfHL3r6xYFQm3cp5bc6z/RhXpZzl3UbzijuaRdY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.8-next-1592320383-bfb04986.0_1592320451174_0.11671879059192802"},"_hasShrinkwrap":false},"1.34.9-next-1592320476-e5788115.0":{"name":"@xdn/prefetch","version":"1.34.9-next-1592320476-e5788115.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.9-next-1592320476-e5788115.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-49ajfC1gZOr44kiFCCRwPayBIha0zK36s697UpAfqMVavkjoll6q/i4Gqgkq3qs6/I1LysWxt21sP48dbBZIvw==","shasum":"ec87a68b8bd3693a3a97d6246e3496e4271aa570","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.9-next-1592320476-e5788115.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6OIfCRA9TVsSAnZWagAAHTwP/1joTnSmbF/1uioG1bJC\nyE6ojCGx1pNvWzO6iAY7IvSBRtwJCftLaK2nukgXycrkipjcHuQI80kDqM2F\nXVq6773SnBejxDKyd3f8mVEgajgPTs8LUQKiI+Vj2TID16OTH8SzV1QVB+7W\napZwdX8bgQhiufPNKCWZcjsNorMmqmv0toomJc6DXA8i6+vnOVTJ9gdFHOdQ\nlDwGu09aNgSZ7pPqzVrG4hoMT7PjRuUpX40f2RqVf26kCD7epkgABVrjye8n\nYnP2HI5Qe9A62aSyHXF9sGb9Mv9omSGoLmaUUMS9AEGTJy9zeAkKCuic8wPq\nWGpSi8Zcb/lI00jSa2OKV3x5lHUKpj34Biuwm09ifch0mn1l5l6T/+bVd/7B\nqsqNl+lJJZk7Uvifo9iUhQxV4RwgVtih9+922C2V/yziw8I5UPsuULdKBjd+\nZzjWY9Ehg1J8kLkIyUuZAgUGnxT+590hluu1u4GlWKGOGjWxDyRvrYEqvEgi\noOmcHpRHCVEaF1oAF+PCDIKIMsg9oqxcczEPZsQAe7NL7GWjvSSTeaM2Jl+l\nHAtY0DXqhFpzg+ei2M48j88eXqF6tvj16fTnwavVNdh0dmw1AQ6Y7KpnrhNO\n8FmbTtLD+Nt8RnfpTcpUEHhoasQjk5CjHsly2d4kHlW02BfH9Dtft9192gvb\nDDBw\r\n=/2gd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBy1uOQY4GM8+vCf3H2yNPZvgI4bmk6XT1CvUuDynsfvAiAExFXjM6W0afJrvBTOEZYMTJw0HMd/DFXz5cjHaNq5zA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.9-next-1592320476-e5788115.0_1592320543108_0.37527993246831204"},"_hasShrinkwrap":false},"1.34.8":{"name":"@xdn/prefetch","version":"1.34.8","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.8","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-AbffrJHGB104a9roeW/HLlHk6zSwgr64r4guskQv7XTPEvVCQMJ+343Jz3bPBKro2CZZjwHG12h34qGss8nnFA==","shasum":"f11080fd4f323ca3ae6cb9332c4e4aa85bb89093","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.8.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6OT8CRA9TVsSAnZWagAAnVsP/jJA9rRx25UfRFXLek5K\nWfR5XoVgfx8gzfXjSXEzIJ0PNWhX8wFNsAG0zljIaaDEjgkNVrWz1JNmNzgz\npu/mFeeuZnWvOztSKjoPjuEVtseHpyF16I4ZPaX4bWQbPLxSs7vSEi7fQiHw\nyCgtDpPS2HvBP0ofKZKWycbAAnDRuhcX4JPsLmn4jsPSkzz7DGkxWNbniYd/\nv8SMoO6/uRXM7Uj+BJEVB0/UncPjUHKcS4vwFEozrq0hZPqNj44Bombjfdpv\nHMvQrZwGULlgcP1gDLttzdss/6e7BCrWOuYpRx9HQOsMT4230AjYJgLV7vZ/\nYJp1gYGZK3BdDsJ6sRfp9gRGlmTM5I6MYaIOY4WgPxbLC1MCydXrAu3md4Cj\nNygPGBfV7ktL/kNUPfRpZD8099tgzIxTWy7JmlvWf9YW3LOF26eV+dqmrMnP\nbHB9hMiAfDJku9wFbv0qYNonnNQcScvmvChoNWGUI5rcc6grTHINzH8gUK3d\nyrkHF8xaBoxdBdIhB7fBWYHZB1RS6NOGZAT6jifE+/sIBsWdROoMKXPuamGB\nNQk+trHWj7nA0Nf1BTtFfMuhweqjva6GlNFWhPjqhdxPkSEYuryy4HIfUZkV\ny5kO6pqHfcl43hb/8FPRGrI9jHqlQkpBP4GqCPPAMuOeWNN3084reJKjIQGo\nBfNy\r\n=Ai8x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChl6E3qla9Krcml6E7I8fyd656Umpo18uW26yUwLabbQIhAKQl/g4polJknJjS61r9IsSh1GCNCGFjjr1LPBXunKdK"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.8_1592321276303_0.292788112352546"},"_hasShrinkwrap":false},"1.34.9-next-1592323262-472d13c7.0":{"name":"@xdn/prefetch","version":"1.34.9-next-1592323262-472d13c7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.9-next-1592323262-472d13c7.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-/kmJwmxm5CKNucWCSfdj8gDg4l5JBaEa708/MQVCwkRideyVu9aXhvbl8vI0OmfWB2HlduUynku4tjKLgi9A9Q==","shasum":"193e2dd0c1db19b2a183e6fbc2315526cf1239bb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.9-next-1592323262-472d13c7.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6O0GCRA9TVsSAnZWagAAHawP/3Vb82IMYT0ANurZQZ9y\nv9KBUbEoDKO4i4nlY9BRq5n6+q426q3pgkZDOWej7LRWkaiMmH+O3PLE3gYc\nUqR8uvkJo0YYyi2w0GwStbs/tWsv4cuwhTTWHssLcf1rwAkkr9b9pc4GdRl2\nKKYgyKS9yanQDMAa/DQ4hl1di+u2UWBGaL6sk69WDsitQFqR6l2bmJed9feS\n23vZds/aU17nqBBhDZ6x1kXQZnZYuskBOP43t541nWqNp7VkeuORRoLKUSsw\n6DZJtjcVN5Ts5LJdHV22I2Q1QTu2XK4yY59xFcQ8QVvi+NRcfRPKcoHLukxx\n9Yek7YtMKI1miLKqxs8KbOsO3dJlUWNAHahNMe3P4kt9AaQCwKjpZp4yBXe2\nErWO2pwG6S+wGxzlH55Hs5MexcVDpKC8Sc+DnQ4Ki2eJcFbCEOhAdKkoxV+V\n+D5YQmIIdEMqd+MTilpxnja15BtLSPVZanyC578DWUnzLwcAU1L0fGLWjZiX\nes4ispgNOMc96x6xPlwnzn7n2FqvWMACFeMCiJjjxz6QnhZr/+QH6FvA5Ax0\n44gjYivjSLmiWTPN8WA7it8qve4gpDWEOPRfv9OLBdWelFOQnJr6LMW1hRP6\na1djqLUh9s025LZXWASxklZhBO6epXiVe4ktD0pMZlocuGHkf1Kv0gxD3aAV\n9+e3\r\n=xDs6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0Aanh7boTKsIos9Tq4iQndetioeoNMWMwshHXFfODJgIhAN9o6nCemrUU9gyNyNSZha5wnN11GSHe4+y4ipxXrFpM"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.9-next-1592323262-472d13c7.0_1592323334490_0.6401249286275812"},"_hasShrinkwrap":false},"1.34.10-next-1592323271-b9c2ae6d.0":{"name":"@xdn/prefetch","version":"1.34.10-next-1592323271-b9c2ae6d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.10-next-1592323271-b9c2ae6d.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-rbgy+jVawe7H3JmkQjxVq7zUpGc0MSN2lUlEdAZKHnLi68SeO0FeMkzgZw1sWsJyBt2NI1FmPGWnW77Dic2SnA==","shasum":"6550b12f041ab25d1d9bf37d8d323a1e1fcf8705","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.10-next-1592323271-b9c2ae6d.0.tgz","fileCount":46,"unpackedSize":77005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6O0PCRA9TVsSAnZWagAAo3IP/iapEWdZhIKXBCmpKydW\n7uFE5zI4hjP2jALwnLE+fEt/fSORVvF/XpbBL0B8vYytTOGwknbZKk3gZTMM\n64VreldNWkUz36Sh9nP3HKWFiArkjRH7ctu1sFdworZidg4nF246NUudZIJB\ngk3N3y1sVR+rdITGp89GcxbYbzHLcMRRlWF3TSuqlZkmvqOooge+bwcl9iYf\nizerdGCTYK73iNmhMKqUK+EWy6xpCiyQDWr5ShEzcqW1/kUY/Dk4wU3bXqS5\n3vlSDALiy3x/LlUMKu92MCFNnS7PQmi2kh+D96E6rRQ+OKO91HlMW1pDd898\nk6f6GWhI+rT90fsbAaZDyo+UeERlqVh9+ThDC6ImKNigBA/2zRB4ZJ9O4dv+\n8oVUe+imPsf4Vhp4kqQglrngyZ52p0Zpgclrqk22d0lxNIPMNG1d4XpQRP5i\nEGw541Z2hVOCECd6+zHu0KdJrozyuCJ1roRMvqAvNUmw/bYKt/k812j9c+aK\nzIYZrMgOz+IAZFO2iznPXJ4y9fLkQO5MhtyC/C2P4REIFDSZt/y/Ufwn+6Uh\nsA9O052sG9ACmuTfE33N5T6+2jQvjQomuxD4p6wHn2AfzC9zUwxzkY82/jSE\nGJZS1jIPJO9k5CWFn74UPXItmFdDcq/PZxJWveeV/7ddFshwgnbnkLQJBhd0\nDjsA\r\n=075q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLlK4xG/niWm4DavquMXN3T9aSw6zE+vqnIFAxjn0HxQIgECXBFizUo8vN62S9ERV/z72IoGDo2pWV2SiIVx9DZDM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.10-next-1592323271-b9c2ae6d.0_1592323343017_0.974148192318939"},"_hasShrinkwrap":false},"1.34.9":{"name":"@xdn/prefetch","version":"1.34.9","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.9","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5Fo4n4O0ATeyMnsJq2+x8qIb2jvJK51GdU7i5RRp1K2YsaXThTvj1zRU8LvgP31DuXIu0zmexnQ5LB6CzrZCVw==","shasum":"dfec7cb85954633e246b483da91107f971e63810","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.9.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6O7ZCRA9TVsSAnZWagAAzTsQAIdhLweZQkYlpUShYBGA\nd0L8Oqv4mxMHvdQWGNTxEODFBC/3p+lq2AFmhRJxrWtZP7yxBoyzAFaRLshu\nN53ORYhzvMERsXdkGrNG5UoJZ9LifHlwRL5tjRTvHPD3msxQWnNDB3wwLtYm\nwg/9zFX9Dta75NBFideKWNpDSaXhcjPCTqKoY4Of1dmpL+nMCAhOK4WGk97t\n/UXFrDkyyRvZbTJ8fmptKMy4u+QpQ7d6nczrSOPvqp5qBBPQXOYTA8ODnwpH\nZl4skeoghmHLpyTMS2/WQI+RkOhzNY2vZErnAu3ibL48JZMTNeA0q3b6hE9C\nvt7XWr5mHFCucHkrRTkjldSbCX9lefqxmIcanF7ytkjyUUFXjZ7NZTxbOGZs\neK+rNvtMZz9qpBBZUQKiuSmlkPuqaY9onjhYoCKFdlMpvblzBIXkLg7r3Q8b\noFmBgxtFmVWdS5wP6XO+jYQiOT79XXrJfbE79K7EamQG1y07O3n28iQnRRfv\njKRDK1B1zxB8yu+71diW/TCfISMd6wq1TwQ5WBa1W7cpiaeV8T+AgkIECE35\nzp8aTstSz5quO8fSqb/JHQQDM3MRh8XmPAoyF4h0HdvgISj87m08YU+YYG4I\nYsph2Vy4Vb3O6guZ9zREaffkkgVU3eUB2f0ccOItigHI4U8tLpetGiHjA5jI\n6z7w\r\n=+yah\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvrsmhFvNH9V9faPpwNchKX/VU9whWSufwPNUtPBalDwIhAP60KlYhw6PPj2Ap+qyRzrFlMpxha0oe/IDoc4Xag5MY"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.9_1592323801333_0.45390390997076047"},"_hasShrinkwrap":false},"1.34.10-next-1592323825-367c6528.0":{"name":"@xdn/prefetch","version":"1.34.10-next-1592323825-367c6528.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.10-next-1592323825-367c6528.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YzBPQFaiRTQy89QF0lV3yM/HaYrL9GHNBMLTw+c+sUkDWRPOnmkWgbKm/ung3ab3apqZBCtXDWfW1je+p4nE/w==","shasum":"0dab29e5c1f7043af81d1be82dada5811547498e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.10-next-1592323825-367c6528.0.tgz","fileCount":46,"unpackedSize":77005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6O84CRA9TVsSAnZWagAA4EMP/3+7lJ+ARZ6H2T7dxBFG\nnRLd9gsMvwNUaUfYlmCrOfpy/tJb7DXsabDNTGC98AmWHv8m0xkxGwVijaa+\nm1itIQl+GgaCJy6bo9++t3ducn/sqGBqVcylfjXc7v7cgHM7GM0PBigjyfJl\nQ8DUm9exBGi0MDxw+uwJh9K2+ubXlFOBFIdLT3zj+mfW/rTrOXFHUZti/zAf\nYcF4ERjQKnAmdmvqsL7R/9pvy3S+CcHqvzgVbGfmkSy/wH3tEK1a2Oya8PXs\nKajJ0u9R31PTZXHrY4m3/4SQ0NjeGunLXuvkV0p6DbOk01q4wv0xCJpgQ1Zu\nE+KnhGP+69Gb2VotOaBwq7akSHb8eXvePVhjSMO/nZs3GgnSZ0fbNeSGS91C\nKOMLMNZsg33nlU6GtX+rbrPKFRzqbIrcdM/O5LStuPSf5y7WS/3GYJ4Hva4+\npbvu38vuFSDcfdgsTG6Wiu/lpYVbDaY7E1DYkh0zVSbNCCbZWrkXWsHWCY2A\nb9gqE9Doqczf4qJZUTlWyhSZhjH1iU5t1utIYeqmDFYzz4lNOnUWvoqNYaYo\nCnvXOeDC4Pj/j2xO11lEJhNEMoGsM5tIsYf5PL4vOTD7RL1Tn9O0t01YQZRc\n3U1R9J7JPxA8tVBImjUJNTaJnNsQ4ZT2IPPoeKiyPXSs8cjrar/rguuB6Gdg\nklC0\r\n=6SxM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHT9RUpAGG3BoJ4Exscf7nNWy+QJGQn+UZ+ibFXNWoG9AiEAyCvQaaUR+Hjb3nykAd6grzd2a6pajs0e6jOOZs4TSgc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.10-next-1592323825-367c6528.0_1592323896241_0.17973286974934632"},"_hasShrinkwrap":false},"1.34.10-next-1592325881-76268dd8.0":{"name":"@xdn/prefetch","version":"1.34.10-next-1592325881-76268dd8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.10-next-1592325881-76268dd8.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-/iOyLY0Tlswc81r2DxEzRewYH1RSboD/JimeJoVg0ijZ/lQGRlUlyHIDcPWK4K6qqtBj7HYfPoc31T4cE41xLQ==","shasum":"4769ad83bcc5149ef7a8bae9ac858f08b54d6303","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.10-next-1592325881-76268dd8.0.tgz","fileCount":46,"unpackedSize":77005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6PczCRA9TVsSAnZWagAASfIP/jUnqprDao2/NU72yEkg\n0OGnfVUNBPHMRO+4G+0IvvSCNRu2W6L7kf7Fif+BEcWCPvKgnaUYn3RC/M8A\n4HRctjYjQPZu1rDYkn/R+ZunPJZGqLzA9iGMDrPxJnd0MiLoGXFxQNvyWcj0\ncHePcyk/xSiEz0Ls3Fo9KJ7zQb4xAFh/YClwUW4SC2Tw2PGdOuss3g6Waz1F\n1b9KEtbnDrGAdt/A58koGadbtw9x5NewSRU8bStT1mVnCieEPxvfKuMSLij+\nZo+fGEL3GT4Y7wXnp6UvNyRYjZRf/K1skQwX5J7KvF8tTKDE0xu7UP5+kZc5\nqbZejstgUxcsh1AoFPbnZ/6f22vWXd2M3clpV8q6aPoKUADsCnDwVq7WeKJv\nwwdzdxnHb7ACuAcfB0bMgqJ/UYEZ6imXRuAbR3o2kE5f05mwLrpMdibBFjas\nuTy3qlYB423Lwgi3fA+fNlSBYTcK/BpjCGmXBkG8U2/4Vje3ONQxQi7mJ0cn\nLRmt+V+YwUdfqtxXDjtCqT9oxxApJnV8jTIqVdly5SE8mZ+IVgAN4xolhh/5\ns0ptwxhjUUKfoWOWlgdAPX4H6fYrC0QNYGq0/9WsOO83HHUPk4UuGSjdxYjh\n14TFC3IFgCxlS91ibc9h0vQczrJIdRayzyoydDfzNzS7ezU1e0hsFd8886Xx\nQAev\r\n=M1tD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCpM5hfxHpc1EGYsrOy1WUrFExLNlZBxr0btQpGeY5WgIgFeSCG1PN2dSI+TmrXD4Bi5cxt4DmycFLKFcuDowF+jo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.10-next-1592325881-76268dd8.0_1592325939591_0.8597935319769361"},"_hasShrinkwrap":false},"1.34.11-next-1592327309-198dc88c.0":{"name":"@xdn/prefetch","version":"1.34.11-next-1592327309-198dc88c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.11-next-1592327309-198dc88c.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-FMcO3ey1/n5Sa2KpwGnADmqSjD00A8N/obVWc3TYXxGR0kIVNx5rPnu55ledcwetnQ1xrJe+zxvf1GiBhEod5g==","shasum":"fabbf244f550518fc5269c3dbc24104c1e18401c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.11-next-1592327309-198dc88c.0.tgz","fileCount":46,"unpackedSize":77005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6PzTCRA9TVsSAnZWagAAUVUP/iMVhhVmEIa5GpuZV00h\n0QhQge4tekbs6xaPGGEcuMFGv0qXAtXNsbuJKBwdJoIEYaM7COTBJ6FxRIDD\n38tnFWjSimerHoMPuAMYja1IbNsPqRNy3UGq62ys2XQcRPnEQnVyrtP1T4fY\nYIKqXvZ1LP0mrUsoFm55C0C/1mm6iYa7BJI3Q3MiCIrrwq17spOJLqQlmuU9\nmqhRTc9gGY7xtDhiH9Gs1HJU5s1ZE4dF8bxVHEW8eJva2+sv8NwPPsts+QWN\n+U1Xnf5a0nght8rk3tpHRKOZAMI3qyRafSj6r2gfISy+8wygC/RfhYM6l8Vu\nD4jo02c/UIVXHY509HpUgWicXIOCkIUXkPmBqu4GTD4ZiCH+6/gCOVJlPYGg\njt5+amYnPluYswXlWow+IGOsSsBgtj2tWo2xwF5yL6Ka8JBWa2rRu3HQoEGt\nEQFISqqqZwkqpUWpTaYJh0L5hVLHweb4gjaxuS90fpOkIPs0x/8jrD6DtY5+\n/HDb6wILeCXW9GG5dvKZUP59wf50WRfvq1qBrBfwOZf303+ZaJRmP3S1HLhC\nOG8qy/zTxDOCdUv+4xLRQj7H8/q/AxewFQVT8p6k/79SKJPFS7klwE1Qr+Rt\nEzrwAuuEnudA2leFQUJnubAQRumAKa6XxO3Buf8Wb0EiJm9NeADgcveSMeMd\nAZxB\r\n=/3om\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG16gVXKA2qOU1jn/O/dFQfTz5HkRsevaWIJWPrNMLZ3AiApvYw/M/5A4MzIcQ+JWPG7DXn1n/2PthP9XoF7NxsGyg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.11-next-1592327309-198dc88c.0_1592327379578_0.35431418749726573"},"_hasShrinkwrap":false},"1.34.10":{"name":"@xdn/prefetch","version":"1.34.10","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.10","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-tekGQL0c8V/UkAx4efADf3ac4pv2GWUZ50JIwMJyiv90+CXCV59y5XkLB9jpmuuSl5QaPfpAWqEqODvk/E/UmA==","shasum":"722d30cbd289801731bdf0deb2763a07d30e0987","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.10.tgz","fileCount":46,"unpackedSize":76978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6P8BCRA9TVsSAnZWagAABbkP/0jjv1QDP4pwJb9Op/cf\n9DcKUpgMpS3F0EiB4VhftIolRhqwW5mM25CRmQr+eCaKT1lAQ3Tha65jqwIW\n4GvSdurrYUUxJ6u+eVEzjvhG9cGtZFe+40ZzhINVw/OCJFRV0czCoPlnk+Gr\nKeclOr4zqzWe0xSrAos80xlricmDLLBjncOWjDuq2hPjXEQ0r8uW/gbMQTlB\nHbfIJHKP2E5LwS7p9tZMp0GsgDZv5BhrkJ8WOU6zMvTIumskvuyF9MaRnFPQ\n1m1bgiUKz1fOjFSSw2zXmged2YciAzUhIXIqEbdxqtTH/HbUErvTl2LukKlm\nGLxXVXl0WXIcDUcILcWibc+WxWdYu3vl4OOMuFlBjbk1rzBpHpOHeg+NtHxM\nDfKR50ND4xbiv+Ky/0HrtNnXPnv4ks9LEOi9NHnXbmRJlms7hSUtKgRt5akT\nmfF9z/Z96iFCuRqP54uM91YbF1EbpS1lKfYpYWKbIR44PhZ5hzXVaQ+X6L0k\nLQMTuhlDibZJ5ZTSvEdHJ8OGpZcpuJBb+Ot2Fyz7baF+k/ptx80mlkI9vUgy\nQ3jQ469xOo/1AGHaL7p9YQFoSXIRHK367niENAMW86hmY/XDlolFhHpHcQRw\n49eTCbnUw333ZTUY1kTQys7JU1ZCE7gI3jeIPYtaFKHtXjliDxWP24j+4lfQ\nn/z0\r\n=OnnQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDssvpDXtrArjNK61/BqppPVJX2BZ1wZvuvP+BLiPYlBQIgJ1w9RvFDTZzNEa3ibaRA+U9JAOnsYvHNSPjE0xtMPbo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.10_1592327937310_0.6174518221716867"},"_hasShrinkwrap":false},"1.34.11-next-1592329819-f0f1d007.0":{"name":"@xdn/prefetch","version":"1.34.11-next-1592329819-f0f1d007.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.11-next-1592329819-f0f1d007.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-eW9LbKS5YVb75p87BFLnXU49oHfsX0JkwrG7a78UPM8NIlSJiVvASvRawSlQx1+c+qqC2xneLjA7W9zhgb5KSw==","shasum":"e151ccdee3fe3ff9a4ad1d1c6322bec47f64e090","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.11-next-1592329819-f0f1d007.0.tgz","fileCount":46,"unpackedSize":77005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6QaeCRA9TVsSAnZWagAATPIP/iwtmXZA+kcFTRokk4e9\nuzSebi0XYC8EVZmr6laJlF7ADqmnKyMPXV0rC9y2OPIzCb4BJLtF8LLYyqvj\n6PWYcZO2MdiGci+1rielUyb+81fpu3xJvpx5hE/nn0gxl36iOxYPHVsChgUc\n8+MBhBwiIAbMQ05Frm1eX1C+4cCYz1AtUA0XNJV50d9V4gGowK7tQxV8qzwi\nyZU97JUfCzOIXtFCbkkOzO9+VcCTh93yll6rz92hxoqOd76cm2+WF0aD/m+b\narjvOpECaQwRwaDKx5jABqiuN7r/iXZWKbvS1gBF3XQkbCmpoEMyYtozm9ZP\nbcrjsfhPTEkbBvvY8CauYCw530TybLE/V1AZfHDx3xrt4lBZq9bYeLvpM6/w\nEfhSWriyHkkrKBSX6CUm+Tg6uxh87jAUniyjvSvzsvtsp0hYVgO1ki4SJZwp\nq+OTBwa50AiYV9WsmRrd/LyZ9D5sH1u/6xX4PJwwrDu2+FBoSnEdByvwpWAE\nBJVQIbmICJkpeUSF/KMFTWQ5Hl2gMPhx/EsaXg51wPZjykMQ0HV3ovepwCkE\n4+SRuKtyEl3bbtWN9L4s/LtX72IaqKaEWi6fUWJ+ya1lTnTXkFWNgO6A08vh\nSkdHFUqIBnoUZxDCAoGHO+BPywO70gonlGQEgElRi3kdFIXsxARXXwfpKRuX\newUE\r\n=FZQR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEe/NMwW4V7Xc4LEeLCl/xDCsgAmZT3Ppyk+xnyQ+wZgAiA/aPuvuw0YHlIPdlyfKaX5mygAlFTBV47hSglsjpme/A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.11-next-1592329819-f0f1d007.0_1592329886055_0.8344665772220377"},"_hasShrinkwrap":false},"1.34.11-next-1592386147-bae79f47.0":{"name":"@xdn/prefetch","version":"1.34.11-next-1592386147-bae79f47.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.11-next-1592386147-bae79f47.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-mHOZuC0HfVoA3G2Ne4Ans49JQib80Khc1FWTVcdXy+678pWmJRxpAWD760zTgyOHkLS6aCdlrysCUHQRZDNPNQ==","shasum":"d4aa0aa4990278e119c910075f445bb5730b1fb3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.11-next-1592386147-bae79f47.0.tgz","fileCount":46,"unpackedSize":77005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6eKmCRA9TVsSAnZWagAAjV0P/jmGJbnrF2eNdik+zMZp\nM/IIS52ip60QhDQWia2HDJxX/zrswdRyVipCX0TwI1uOmh/knR7eTvevjQTS\nVbrklIfZPqs30fhpwzYlWpUsjWymWzFOG0xIJ+u5plPJ3Xamr8iJO6RCfKzN\nTccYLUQre4jsacecnLGN1u0P0TeSMIgWquzjhM2YNu338ln7Uo8pQ3+YXjks\ntlTV0PAgf/vfXpZUZV9ajyKySX+l8J1wOZW96qeZ9mTUIFxhIpCtKARNzGBH\nZQnqzQHAkfvKlkgNOp5R+P4gW3hmQgMfeX9FVdDl0mlbX5iMCmVdkYpHOy0a\nDEwPGumL2JQfqb3qIkD23Dg55lgeRKMqTDCVGY+BvcqjnPfdkJWsxcmhUcFb\ngENMqA46hiGu5TgO0zSmM2UAyHrms+1zOTx67ScslQ+eFhHfVyqdMlDWDtfq\nUrZ9OKIbnvRa6opznBfHVouMPZbCZTDw4BdtF5KmATcFQC4KTOONxY3IeKlZ\n1D6RVgmXva4vz5EMF8PTSvJozQAJypddnlQXIQn518u/39He8e+O9WTHFeTE\nTEC0CZQ/3sYboQyZhtRl2fFzQ0QVVJ3YjDMXbJTe3YVK+Rk+9n10MNg038/z\nYIqxFPnZt2dx3sELBUV/GVTvedXyvR7RskVQrvKLq/MG5B4k6XcpBemp64Rd\njOS7\r\n=sdgG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8eEaihntd6ziB6EkOI0xciHV8Czxx+ji+4PmztsuQ7AIgfIXGL3I2s8/vEXYSGnsS0CyOtQLJRdbaIJ3x1T62Y3Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.11-next-1592386147-bae79f47.0_1592386214198_0.7992218310413914"},"_hasShrinkwrap":false},"1.34.11-next-1592426534-c82358d9.0":{"name":"@xdn/prefetch","version":"1.34.11-next-1592426534-c82358d9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.11-next-1592426534-c82358d9.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YXcBmDLb9Tb2kE8ewkjtIFS2j4GPfxEKsE3Co1d/ACa83pP44iomwjXicC2uth+VucIAO4ny3cguPB7kYKAfwQ==","shasum":"23bde746b8a1987dba117c13d61e76d46f0054fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.11-next-1592426534-c82358d9.0.tgz","fileCount":46,"unpackedSize":77005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6oBnCRA9TVsSAnZWagAAoVcQAJ4NVnmB6uosRo6NO6uG\nGeTfc5jS0MHt7LpEHmD2m7eW/WMIRYHzC0hcK89FiWDeNIu9Dgs9o0IFJifs\nKjMaYftyW0EtgYxoSIqfJ/H4tj7+ArndJ8trnR6EZYv3YgRRkuWI0YNh4H+Z\njT9oU4EynsmAUMBUSXRzxmHM/nvKICXGZw0rD2MrXh+bZvlvBN6LXp40etdy\nbaJI/D3IkvJtSCgRfJNbP6H4AaWg2JJKbKF9vL7+U4wfWPHcsF+R3jOye8xx\ndvM2kej7rY5eiro+MVc3tY88/yvjnUkhREY/O8FZpeNO0iYUDdRfPlwSAvH1\nC0cwS9nGuLUVsKJwZn1TFRKGplNGZNkxPWmMD7esLG+pMMM5LlmgYq55pSsv\n7iz5XSk/ie24m5UbpWhAk23oNWJADPFQnQ3GO9T3+vBHs6mbso62ZOWJCJ9z\nNAlEmkiM2P+7SdNjuRffpQTFrCTV7thXJiTBSHVtuRVdVi7IEg+2kmFCxd65\nJv63xsZ1bxyWl/l9QO6T4M+zw+dueAbVZeJCaK2pxB0p4knP9ExhEmOwJ5oF\nzHMS8cCop5v4V415Ub/Pd+qD5By9Ggcb24efSyNCIGj6EOHtcTiquRQg/uJ1\nDvyPA5rKA8fqlvMD5FrkxEyzvgRk4RlMGLavPjCrjKPXqOTGI74wmKX0dEb7\nFHbF\r\n=j4X5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGg+fZP4wJw1qjw3XSWWr0MLTngBDEMQdgu25rM8e4plAiEA0grGKt8GlLbHkeOt54vdPjsAczNDqevWh9Lunr5VYbM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.11-next-1592426534-c82358d9.0_1592426598353_0.847437140735904"},"_hasShrinkwrap":false},"1.34.12-next-1592426609-500e177f.0":{"name":"@xdn/prefetch","version":"1.34.12-next-1592426609-500e177f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.12-next-1592426609-500e177f.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-bOLwKGa3ephGSpXech4U8SlUlMx+48Z4hNpIrz2Z7sREovq4CD4LfMV7c9cJfVOSqQCOn9sgmXtGnFhUyfuEFw==","shasum":"1d5a78ec9e22c7918541810f55d67984b794260e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.12-next-1592426609-500e177f.0.tgz","fileCount":46,"unpackedSize":77005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6oC1CRA9TVsSAnZWagAAE/kP+gM5nxpvJKnf3zyaWRci\nIVfb0mxePw/LRNGsy84wj8ZEHzhVOI921obzuE+m+KsDWs5OWAOzDVqVJo2Y\nRWIXMvBY3MVr9JCgKnSb0xVyu/DJO9x8MbYfIWxRK7Ep627mazsRPzlbiBgH\niKpaLoqi+M0y/7KutWzIbAj/D5ZIJ74cNu2ezeMYOF9PhJq/ih2bB3q+eK5o\nOfzZ12pd9ASOtKRJ+ldPn8yHWCoVYUGo9RuPmLpeDA5kzbc/NSF3N3WBr1RT\njQhHlE5Op5fx6cAbSdCZw7LGraszerNQznZnH9VYxxFBnXhjvPPm8hctadUP\n3WvPn3Av4aF9QOfDI/m9qnrYTSPvDT13ZSTal8kYXh0+APUU4fddn3ZzWAkL\n7hTwpCtjqJ7ROZ9uWMbIBFinTHIYmobuyACdc7OEGvOAVKpnifWe0YmSmFFP\nkErrBjfAvHzjrFHeJQiXZxTKN3U7Izuzq9g+kMlnnwYbnqxsaJcQPrqqXkwj\nj+vPM+S+2Ew0bMw4wiTf0ZD4K8NjLfln1UKNhrVhMGTGDLpn07pAEu/Wvta5\nGqFaXwwavPjsJD0t+nROo9shUy46uFOwX8uj097GbatuKviNWBb+/I92whF+\nePk4wW7mdsLgxFhWIhOzz9a5Js/CVswZUaXMtxQrGhCPvGzOWORc+LWJiul/\nENJf\r\n=Oz3v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUUgE1hLWAgq3FER2LaDH/ag8Xua4wOuzD4eVoprDnLAIgfTIzLrJ625poPfTvZzlLk/gnDn0DjpS+75UGR2PwKHY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.12-next-1592426609-500e177f.0_1592426676823_0.532685099502322"},"_hasShrinkwrap":false},"1.34.11":{"name":"@xdn/prefetch","version":"1.34.11","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.34.11","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-jrqfH07DOGim3fG8jdmPTWH+s7VQV67gheGmukoXc66/O3g41yBzROrU52eBsP6mJvs777uEk1Bumk3+ZjxdEQ==","shasum":"95825ec6cd42479a94086a8bd97a8f9f6c6039a1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.11.tgz","fileCount":46,"unpackedSize":76978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6oHWCRA9TVsSAnZWagAAUHkP/05UkN/59A/ENMOC7dbb\nMXQ7gKZ21ath0R25c4pmnH7RAUEOir5PgyRYaSKPdIM6qXEBy50+WRNPZ2NY\nff1GgcRXGEAoR4SmCslJTjbc4rMkDqhFBeh0HsSN672WuVgPD4S/kJiYxNQH\nS0krUw2cXlpGEytSUg8abtZIvJBgk7Tnum44D1qBd0O7ujc7FUGWsJTWbVi3\nsOa/sKYKD7oFW+WKZlJv2GdDBju4t3NWHFEU61sy5F6rilvI6bfLX+KlIcIL\nocwgC149YdAMsrpKPQGPJnVfG/Uq1nMJf8ykjXUt045gqiBksfRn5wKjPHeO\nYgGfITgfZwerGXYagmkvYRp4XCOUNY9UI0Xepaj7NaWitwFEGD8gyArVsvKi\nBCsWMjPUUAfNfZX/FiaYW0WEhjsmzinPRUcb+EeA+NMKqYWq1x+pwBEMgluW\nuckl9+qPvdK+WD+FDbJH50pWa9e7ontuSrs4ZrPs0gXi2HHLSfhhLKcgEpWE\nssI3oiR21W/k2Sa2TRgJl9erZt6dXF3tLQRR3/tg5Oo+J7KaOrZrrxeYQOAO\nzyY6RoSPI+aOR6vOjPHmzWO3+atUeg5enkr3QZx74XrQaPZmci0uwoMhHVJx\nGM21pAFPCfap+gk7gclZTswzgMK/GNdzHyy1vadQafQXqW9ao7kXYYVSSEM3\nj7lw\r\n=Yx/e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFTCY3nfkujjDRM//BgZvWYE/VDSt36mV7aTesg+biHzAiAfVZKlSITMnJIU8Hs8YLn3Y9OIHY530zKSZKDSXlx3UA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.11_1592426965762_0.02330258363811888"},"_hasShrinkwrap":false},"1.34.12-next-1592483956-4c1616e6.0":{"name":"@xdn/prefetch","version":"1.34.12-next-1592483956-4c1616e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.34.12-next-1592483956-4c1616e6.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9Y3xbhFJCGvP1Fa3WbmXcTI9nX4bsuhKnDef6mxxZiJUcmTDRLaXvdQzUbJocGzp9qBlPmFCGx8gTtInT91ieQ==","shasum":"48d190f8e48ca8b527b725cebfe7a600a4d28acd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.34.12-next-1592483956-4c1616e6.0.tgz","fileCount":46,"unpackedSize":77005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe62DBCRA9TVsSAnZWagAAXPkP/iDw1atgyo0hgkvGs4ZD\n940CsMR6stMqktHN9jNr7QJkxNUZE0156L8mqEN0M1nRSApKUrtYeRLQMxSg\nYZRF6UXIopH5F+2r8BNNI5lRzZhL/G5T9UQ9mEtLbIBWJ5SPzaWqa0Wy9MOR\nAsqb/C4f9vEMlY3GLwqxtV6MAqz/+/YFEDpDIMtd2WGoteu/jc/kHnA5RdPK\nbQBBrosYi0IFvx6xGTMIGsVKo00tmPJvZoT6uqZ1VgKViDBu5ZQy3svOaBNP\nI9ttN5YL1nRi6uzvFrCvVLGEi6c762jrWEG+7NEfWuofjmamcgAnOQlw1Lp5\nl+yW1mUkUMyE4NlcsE8do/+p4JbHxTDqbfnxB4MofWBs2BvQraCyvmaN8Qi9\nytl2g02UsbuFIvVlEppEc/edago4MrvwoI1RUsgqreEA2k6PaGSHzD0AVn8P\niWm4ADZt1Sk91xXiE1Cb2bJ6meijGwK7bjzvimdH7xzluKbHh2/tjd/tqPwu\nEh12BjbK5I1AtY/6Agc+mPAsczJKg+8idZsSSVlc9iUjfrXy40n/Rp74KXVb\nFQBEtIFbNEU6wsvQ2aA+oq/8pJbsPxNlATXMp3GbjKwqjV0GpvgceIA0HvrH\nhQVqxO8s7eDcxSs4vCFnvVDGp2PqgXLTfk2GiuNO0MWXEpjXL/fz4VLgR2o2\ntfbu\r\n=8vwH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHgLhim8CDQ51ORL3y4rzGSowF/qz0HtANK5y+kPg2WZAiEA82DkYp6VS6wYbso/p9btG9dhqv3/Q8nBi4+FOENWTMc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.34.12-next-1592483956-4c1616e6.0_1592484033574_0.13724713574650038"},"_hasShrinkwrap":false},"1.35.1-next-1592483976-87888543.0":{"name":"@xdn/prefetch","version":"1.35.1-next-1592483976-87888543.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.1-next-1592483976-87888543.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-8SJwysFD8KHFhppccR9zAS0mEKN6VpjocOAVRBvg8U4HWB84br5QL68JeGu2NRmBIpQiHriA5TEvy7buo+ZzjQ==","shasum":"cd053993ff1f3ccc5e5631a110a436e5d1ac4e6e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.1-next-1592483976-87888543.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe62DUCRA9TVsSAnZWagAAbOMP/irti4PfySjJUTohxXV2\nZhRZrCgmCx4l+zQ7RHVSQd/j6m6G/c4AYpb+dIJhhEH9CAhzX3PLSKJF1fmH\npRPEO4Q0BLyQ1LNjGdM0fATXhYuqCbM/f5l31+ImMRjcry/ULK2Yrg8VkBFB\npgSNH65xhv2XP10K9JoRmD5VuWLnsgz20r3VSUkBEtzTt9gfxdV9WREpa+iJ\nndBhaGijWCX0YEsDeuJ5QDQLngt1/PePIA81jwE9C1ucMct9K5NR2b3qbc5s\nkfAci5qUUv/07wvhX7gaGe5wnWmpnLMkYnLaJ3jdL5ppUOn0ZWlKRdXC9D1u\nKip23Us6EsTInQmWU0LsxgCNcngrWT/ygSjO3RwybFZhVGY4E/DfMQ3KzFmf\nYTzHRYSDCpznOQgHKFrERt2ieMeQTxbFo+oxsJo5X+pw4QyFZaAI2bb41lif\nhIBuvP2ciXTV0i+PoASomSNFM8SoqRN4ty6jlnyg0KjhsyP+fQMjAq3EgLzg\nGVIfu8ySbNmrXPQk6ZdubSBQMZYmSomMZsiki/trsicJFF3pu+sFB3dgeEJe\nE9L972LpOwseZ+JIxg9I/t4bKWEq2u+aeTkxLCqPmUeO9SPrsuilT3ZXnFJy\nmCWDLHT/nE9T+fEp5Ub5D2kmbXB0vzjrLzrJ3AJatRI9/mmJ85i8looIeva9\nfhpn\r\n=BZ1r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHNxOzjj1uwmMyK1pO7t/odh2aua3ppFRR01e2KNaqiZAiEAxxW5GyscFOy9h2UJKh7yMGYbriJ8o2HfWiIjhFUj7xw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.1-next-1592483976-87888543.0_1592484051731_0.03161096243173045"},"_hasShrinkwrap":false},"1.35.0":{"name":"@xdn/prefetch","version":"1.35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.35.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-75XeWv/sqc13dxgf9Cpi+ViMDKMKoIXt8OjekJtJCCA9kJLJQdthch3icwcMRJkCDX76gSreNxsTqtmnzvDyUg==","shasum":"69d71eb25c466d1715f6f45e5ce91c34abbbe118","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.0.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe62LhCRA9TVsSAnZWagAA9e4P/0FYtUYVSZVqDRNwp94G\nZ42DJcZsdcPP9DhEA9IJOAYdnWBX6/fxAT3LXLgHishbx0zmb6meBgHNPat/\nHJS7cQLtbRrJh2zHmXHhQho45cXptYWCz3+rJzNxx/pA1MSSjJM0ybkgR67c\nm0jfMNTJQO4UUJDf7jpiG8PVY+IMDqjEzzCrllEGfmslYFqK4m4cItRZT8v3\nys2iq7ZgKxEXoUQihyp8nfPyONxw03e2bEfLYsIkdRUE5z4R1W+VAcZL7C+4\nnqNx7f7/cHIzByK0DRWfUSPJdgm+iSLOv5CsmVYWswBH0TkEbKhkyZqYsOX7\nSzh1ZJTSjjLBVNJCYyho+lqxLUhWDMJboMNCJWXdYQJazur54tdOf7R6PUwF\nW6y/ngqE7+M/CISWS4OjR1gx3jM2gfklzw25KyG3JEOrZlqFuc5zytAIyIWp\nUuZMa3DO6j5C832rLszeeOI9YC0TpJeChyUNLnbO8dC2GqxbIUKNJHyMXjE1\nDWqJ1oSlOs+kMx4dg0uVMC4yCrWmsmYXTaE6iBAdvqkqhVJOLPPLIIzExL3G\nsqbji+VTk0D28YvHd9D1UCgx2TGzrFX6TUQxRckvJ6I5sG4/ssX0sn1Zd+DP\nVIQxCw7svvrcvfX16nZniOWmklpODcz3QcrtKPhyPr7yVPIO496NIYV/1DD+\nwnLC\r\n=M4uc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxYWNPChnObgBTRnD3XLwEeGiJKUpcpu1I1SFdYBcwygIhAJwOtPyYDZ4htzkpJyiJOf+/WrKrnWGXVHST/6TToCIk"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.0_1592484576735_0.5050490074002518"},"_hasShrinkwrap":false},"1.35.1-next-1592485157-c11d4ec9.0":{"name":"@xdn/prefetch","version":"1.35.1-next-1592485157-c11d4ec9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.1-next-1592485157-c11d4ec9.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-RlCp0NSpzgP7NduLmYEBHgzbrVMrHIm6rQt+LUmxa5CFZZ6HduOIJIHH3OiAXFGlpu4d8kCLH9dBQBOUTT0tTw==","shasum":"de8afc7844192a7eda6ffa787b40d1b5e14ead5f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.1-next-1592485157-c11d4ec9.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe62VlCRA9TVsSAnZWagAA5wUP/0obmtlVVty8dwwjt1io\niYyyU1cf7Qy4lX+wc+Rbopsk/LUmrfp0MH+5vtpeNOCQRfZgY1CVIZw3pofE\nvGBczvINb7t085DEYzCb8KpQQeZbUlSxFroRLNdICR8Q9n5KWd7GxXr0bJzH\nqgXcO2RiWbC5dU2lzOHuCgf3vOj4Svq7k2s6KHJEDjLNttjfHHTbxCu+zxYt\nxriMqBszhzxPeYKC7wwrE0DxmKYr4Bi/VChrkvP4LFO+vzRjdGUTSYpaMn/h\nITh2YNVXaa70g5Dirm0nxwZ9o3H51n3D1cV2Zszw1lxQxIJbl1sGWWxVkfOg\nrzEqJYyw6uTwWntpU/rn34RXOcbUZutDqpOFbWv2vkpodp9EkwDGKiiHPK4y\nMBCWD3G13hpvmEpl/RALkkgrGteTTWmE19CmRoOmFEvJ7V23h4eEweXeWlMr\nx/lS2i15wQ1ZKTytSzLf/K2qPJopflZR3Un88j11HhwKr/QdVSiWYZmMehS0\n9UryIR+ADz+w/wiegTEGgo5WcIWcfzDYGkqzU4XmxQ2JkTVecW+57dJ8ChCX\nryclpf2EDqEbOxFJ6mciU4BmB0WXP9xIWWeMQVX6eNu8g5qOL/QDUYjynlxY\n9H7vw8/9401srIqSEy/hjK8lHP+FEBvQCVwoDOunljnwXFv4EzLgVW61FFS8\nWIoH\r\n=C1iP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3BRe6oS0eSQWG/vexDUEt+kpwkOVLnFED+o57Vh4Y9wIhAPcUVfKR1qWetnEATYWv6olJ23VB6T5FYOH1rB4pbPDe"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.1-next-1592485157-c11d4ec9.0_1592485221330_0.7954083556173628"},"_hasShrinkwrap":false},"1.35.2-next-1592487094-eda51d10.0":{"name":"@xdn/prefetch","version":"1.35.2-next-1592487094-eda51d10.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.2-next-1592487094-eda51d10.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-hZ9/NTftP4G59HVMcUYDdgXCqTiepp1JLAv2ScROnpF2K45/mbIv2+h7iJu3Jwh0Wbj+Dxi8NupW3o04mJM6bQ==","shasum":"5a037bfc796d5aa1d4fd1750afcad65d2665c179","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2-next-1592487094-eda51d10.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe62z0CRA9TVsSAnZWagAAzNUP/i0MTN1XC6We9VfZoMK+\nJhvdvGDADqDcx10+0PXexCpD4D0QnT3GJHCboxO9zLrj+kR51bPgKQ05KsYL\nNqnRtjMrs+Tz6O0lZ0jevrn9uhTLJzl65YBjRRkhVwJyHRXPpWAg6lowjtP5\nYRDzEuWqxNRw7BYN7iuV6N8Tez5a4NtAIMGKvD0RNGzXW9noFmaUl+Anu9Ny\ngPMUWd13/53MbWRET7+f/2Wc5U+3quBD0UNcmr+rGLarH1j5/QH0fNum7yLu\nrYF/UCDOd82cSC+wUpMBdDKDFGHxnKN4IdeaICkDMiZLDmwi6BKiNDb8fJg1\n8rhQKrysfkbhRXsZwNobxnGVXh8KYVn9XfmciuzyJqkQ+DC0T2njWf6QICTe\nQAtEZjfzeRWtIkKND9ubCuZRK4M/dlAJZdYnUNU13HfeH1v9FSGyC9kaqhky\nT9P2lHSFPnzFJXuOsmsKBxu5OiWQOjJwExa2WCHrexBbQUHd85QYRN9eBg/B\n9aKcBT6r5rLMrfIVCDrNVDI+V+Lw48aaGEGrWz+g4eCejKj0vhrKayqV8/cK\ndcu3TbhJRIwLZ/VAm0vO9ya658ZVC1yupwG0no3YDWnUMc+1O0ZrHP5YvyQ6\nEpJwb+TuzZ2pkF1ciNkL+me5Zk7D9ib//YV3jABKQ0wJkEn8/lLMx1q3U7W/\nl+Xv\r\n=2lDR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzNxw7PWVESTENPlj/sIAeVzuIHIh3J1J/1sGUOARSoQIhAKf/+SnJf3WcPU1XB6D9wwOhioSbdwVD5ai79i2ha552"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2-next-1592487094-eda51d10.0_1592487155857_0.2593777434424176"},"_hasShrinkwrap":false},"1.35.1":{"name":"@xdn/prefetch","version":"1.35.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.35.1","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-R0Q11GXo7Vy2BLPQs0ouKdbTXCYxjrHm7xwcZB2IZT/KLZG1IfwgnyzI0A0MqQGsrsCJSBLm1PZBjJ93eqfD+A==","shasum":"d129d9c25530b1d7818ce3d9171f891e9a2960d2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.1.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe620OCRA9TVsSAnZWagAAoGcP/jhlhgR7rKuLJG2pN0vc\n5pDyCIeeNUAymQ9zqWA+x7cD46nlARA87v+pe/2Gb4Uf8OcOh5MWOz3OlnnD\nuEa+qhBNQUbqy9dgGQx7d+WEh5V8IUamS2oIkqA3hX+uLlBJ0bWXRWndGQTV\nl2ocOtb+SOBreF0w4BTwgpjxBE6RsA557GJXeTii1zNkM2+I89HEjHBEJSDu\nNJlPkhmgwu7DfF6yEqLTEpKFZ5k1eFK/iKKtZq8aAAdRRSAwndRGvar8X9AL\nwrIY4cRzHV1jcXSSsJq3Y32E9kqc7R7LV04hIfPAG4zInRkaeQHj9DywhERA\n/UHPpzSxUQzG1E1ATWZTEdYV7mKvJKwMKBW5r9Tap5GGGy1mcLbxdi9W2mvy\nIEGQ+WlQi6YwBX8s9Z6w/DekFcJPZyyeonXyuNvkh1VM0I/OypCkMNj/9A3/\nGtBUm5UFowZS5bYFnRdoOKiML4KLe0tCDWJBa3TtMO+XyblAFjC4sIDxUU5f\nVUemPKbaRinlTFVwrwYwnT9uVSBPEjuAman+hQnYZL67+2skwioob6m8wlFU\ndT83YSoxUUqd7hVLADt70bvDKrDWSfc07lJs2fgSRRjQqYizv76a3JVIC4En\nMRXsMzYQqtO67h9+nEX6s7q/FA5yyui9n2h1NLU00DGR4gMQmBhd+TanZTFm\nQEdO\r\n=PjKg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2Xo6sTmXUV4EtLPAjptJBeeNEdHmgwSpjHz3SQg7FZgIhAKClkIFpBm/OG102buMxh/pOAQrV2/qeUh3OVq5VfVH5"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.1_1592487181594_0.7079593068809951"},"_hasShrinkwrap":false},"1.35.2-next-1592577984-bf61b231.0":{"name":"@xdn/prefetch","version":"1.35.2-next-1592577984-bf61b231.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.2-next-1592577984-bf61b231.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-7Gt46MxQUOprKLyxvgEYGzWwhnG93LxWm8voztGC/BECrt4juyAXGq2ZAF/vSxitEGeQe6ARbH/BfPky0B+t4w==","shasum":"3dd28ea46ad8dfd3747c56025db49d5557b2c104","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2-next-1592577984-bf61b231.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7M/+CRA9TVsSAnZWagAAwuAQAJigpaUYx3c6GWfNLuYr\ni1M1Bkd37vkyx87cXON60/cteG8Uf3otbk8U5B4vMTXb1HTRLTGy5yEzhyb9\nczOW9O+ug9ypQlH/i/i17qD/3bjK4ioN+Ek1PUDuFrwQgRAl/PwaWiiwXuVK\nk0lv+yWM/DsTQYxmPcQtGbok2Lx9wi3gV7sCwVTG8eZi6GoP+N8loQkoO4Tt\nf5tQd4acR58aeYuEl+Efjd/oFMFEAlejOSdz5wT18MO0KKzsCCHOp1BtimNd\nMg//wKr1U6rOZQQdGm1QStjYbbNK0K9BlSuKwcNuqo0i0EPtSibrzrlxje3I\nV7by2oEV7vD8DPoJKc2YpiQpVKA2RBcMecZxN8nebpeIX67+T2hh22kzKpB1\n+IXiUxGlYCZcUmtsS9oHRsdQYeb5a4Hhnd0d5i9FgB3w8tALG1P1j1ZPh7YC\nNalTaSm2tpuAIDsNQpHr7cjHAD+fqcqgQVQjtsrZIDtmeLSVOtGW0dlI+938\nOcL2B2LNtb4os9ZdxRDxkipabMOxqClhzb6V0Etqe/GHEw82pBTN5r3rXmns\njVutlwBqHbBhm5qMvSMIWExqH+Zf6Z3+KV4bLSnaNMF0Tfj+1TG3zK+SZdjQ\nw1i6cEc8yK6nM+jd0sUb1AJNFvLv+T/DWz+lKbJJ//yc6h6IWdPXYs7ul091\n9YMa\r\n=N+3b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB0fWwxmqzc7Fn8tfu2cVqORGKelGpK2z7W3lggDY7xzAiAyGPdbOkxKoTJ4KazVXWQ6rMKdJKzCqxt0rBAfyR/VhQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2-next-1592577984-bf61b231.0_1592578046115_0.5530897581793413"},"_hasShrinkwrap":false},"1.35.2-next-1592579281-878b8fe2.0":{"name":"@xdn/prefetch","version":"1.35.2-next-1592579281-878b8fe2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.2-next-1592579281-878b8fe2.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-NcIoTGqfBcV/l7PZzUtYyjBnXrzHN+DOCO+ye3OHyXV4HzbaST9m5IStpnEdF2NTF7/rk9aPbUO8oE+4eMAQrQ==","shasum":"a86e1a0cf26dfd7dc5c9f2b0e177bc4551f9a480","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2-next-1592579281-878b8fe2.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7NUuCRA9TVsSAnZWagAAEn8P/RT1ANpvv68qUFup2AbG\noTR1oRQOcQp2EUDTDNXz+kSFQeh+3KP/DB4Qjeli7ugStcdbkoWHfRY8bx2m\ndgZ6UoRml4hoFu317uUAOYnibmY9XQijWi9uwS7VU1+b9V3+VSEGUCY+zf3u\nk6wMa7Y/079x2DVbtKlXN0QbPv7DKW8Xo34EnXina2nDBAeaC0BnZHkfpZ9u\n5KvqHBM5uJZPEH7ywuSh3stupvgODgWPLV5NU1eqwblLsMqWtSoNDhQVfz2V\nQKIoLH//siMmvGieXq268CpALlHmoFzaKcLWYOLlb8p7O+3IpCcQZyOZ3iPk\nndUlUE8wGNF/g3bKiIkah3NzhZl6eev4QrQF3OPXPq3YG3BifyYzglWT0RSl\n/VcH/DL3kUGqhcTK5Xs1cvgVH22FcRiHGCt9f7K1fnmFVj1LI20QMyn/yv32\nMVkvsikxuFijk4cUeLocaNT4RjlFCpyzIdGi14zf+TkWs3+2aYQ+FpriV/8S\nQTUZ++CaugS/rjmOrFWAJpwIJKi9a3iX8ZEFRlCTtY4+YgkXKlWP8J+OIbJm\nJDhV7Ok0g3XLIiOh52IMZdib6KFWLLHn1kuYHSUVz0VqGEF5iCqEipfRPPWT\nBanIEpqJ9GwUZhEzkJ5RabBbwIeWgY+JeG7IiiUpJTGF0FqqD5CP/QdY60im\nZHY4\r\n=S3lo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICndelE6Es38eE7bsqH62t+QuLnmSlboPvDXmjXInA5IAiEA9otWJmQi5xxw5C3S4wwGFhfEOgtwONJFoc3QnpBkyaI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2-next-1592579281-878b8fe2.0_1592579372268_0.8800815739471683"},"_hasShrinkwrap":false},"1.35.2-next-1592847960-b1f4455b.0":{"name":"@xdn/prefetch","version":"1.35.2-next-1592847960-b1f4455b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.2-next-1592847960-b1f4455b.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Br2vhf1IFXo29HXHR52/5m+hgvL3d/4hGYBVIXQCWkBakxiWMHBoUykATzcVY/i2211au8BbeYUfILgoo0hcCw==","shasum":"1e946cb825b2e011cdc7d30d7f26e62ed32accaa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2-next-1592847960-b1f4455b.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8O6bCRA9TVsSAnZWagAA+YsP+QAIiBae/Ztb99DugBK6\nU2F5yepy3RHmm6oL/8/JANTghxbSwo3Y/QZo3vN+lIoYQ7CjPeqqSsaKgLcY\nA5lV4fvE620xCMRmwM+Ub/QAHKoJMFoF2JclY4RBhU0LDSACNhUf286FXpO2\nMZB/bOVkFZhGehKfAV1WFhR8C8YifzZmQd+oybShDiojP25cpj0brR5x4zuR\n/vrKJ8O/EVqf86Uo+61EJ4xTmeYtiztFpGUdmpoULE/5Rue+SnyvF71HSnwS\np5ry0lMZqf3HD7GCrMLQthO3xKi1kW6l/YMqyfFy0pocgYJWIcGVtZFjm2nE\ngy+fw+i5k8K3SihtU49bEZRMyYq+WEv02XN1N6OrdJ0hXt/E71bWbLkb1L3p\nQuuqUSquWn92RQOyxNljK60ypWRLpPuXw0gvmustgDHz3ixRWGuDDxy4IVCc\nQ52+sRAvyB+TtYcSiX+jXBCTqmhlZJfP9B1ps6rVy8b8XII6NXfo0reVzo3k\nhFHx7xlV9Oaq6AvnH+ZmZUyqXkF9K7p2QP/Z77crLkTt+wv32yc/LUJ6io/U\n1Jn3cwrfkMfQ25jZVcH4TSdIeCR281RGbFkZii8NeiSXT/spqxgAyUMon8CK\nvvd9lcqbbSr41bOS2bHYiDQ/fwGKJRD/r0JNFh/j431w2dnu1kVaxJ723vcc\nhoXu\r\n=tgf5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEPqCxZxrNOVDNyMbqXkH+bNG8VwWZBkcayeHfN+yjtzAiB6hqEfh1ySF3tTGRcWV9kiON+tQMMB7mBuCCXqyViO9w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2-next-1592847960-b1f4455b.0_1592848027175_0.6154258881364612"},"_hasShrinkwrap":false},"1.35.2-next-1593034822-7be62321.0":{"name":"@xdn/prefetch","version":"1.35.2-next-1593034822-7be62321.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.2-next-1593034822-7be62321.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QoInumj7niCYnkMltyl3b8taSO5cDnaqcLX5vf2EXx45DO0+wvKB0JTTcYyVb1M8eEaiaH9JVRyHqVWWmPrI7A==","shasum":"5a3fb3ebfa52342a703d38d5dde5dedb1a80e1c2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2-next-1593034822-7be62321.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe88jzCRA9TVsSAnZWagAAsW0P/RUthdY23VBpgzYe2xDK\nWmX2udwzHmVn4jlvfbj0FkXz9Yfo6UDiJeBxsU3Co3+eOTvECF7oPD6DbblR\n9kearHKTHQgNc9dtq8ZMgDwC00l4CGupuBR2jGO1ox3nM2BXPZ3MyTzHC1hZ\n2v4B5li9es5ZuP1AL42GI8ROGLyOAg1WogYiZabFwuUbWlynGklABCY70TeY\neIbTSFUT9/21opkyokBj8uw7d2oxujsyj2lK7NZIpKaK0fQViFNYLlK0g3DW\ni237Iszu3wKxWTbDZSX1OrXrOeUKfZsSAAnWaOxLg6dUNkJYHu38RCiHGcp0\nASeGCrLFZJXAK4mWNfe1Vx0SN3VV26dUHtTuVNcVCXpXhB9jnohhTlpa62nB\nAlX/TUIO9mvGe9py3gTLzkwDC/F+xAYWTCEkiFixozJ3kcaVdiWVuXT1/tCg\n4aaVaUOx63wlg9JznQWnAL6hPydv6Zt5FBYXwNAUXWVXu4rP5kfuN7L+zMtc\n2xDQiLswX+uFTmrKNa8SvEGjP6TDSYnIxespzEnc6NK35o5hCaU0f1h/x7vJ\n/4JP+Sf23uKrH6762/0zrwacsHJqrOvIy1BDrjzBkS2ASQMc8e8lALMhM/iy\nS4YK/UPZMzyPV+mNgr7dBAU0C9bd13K9OltnK4bLV0ZtvyGP77zlJnFatisT\nWld9\r\n=0G2T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHJvO72ojP0Il3JOal+jrGwXBgPtCeYbLZSizaiBQnZsAiEAjk06gfwIYxkVLKV+3c9VD1/JNrsEVVV9HEVFAH0bsqg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2-next-1593034822-7be62321.0_1593034994665_0.9935781755013202"},"_hasShrinkwrap":false},"1.35.2-next-1593051570-6a0e3ec5.0":{"name":"@xdn/prefetch","version":"1.35.2-next-1593051570-6a0e3ec5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.2-next-1593051570-6a0e3ec5.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-OYLNh/1Dw3w0NuqnTXz88wzi5QqQIzGnfj3DTomLeRj/GvYy5t4JyMj1TUjxuXdMJghT/2HJD85pLFq03TyxSA==","shasum":"87700637a18df49fb7a58e0eb68da1ab529e6a3e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2-next-1593051570-6a0e3ec5.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9ApQCRA9TVsSAnZWagAAc18P/26BHWF7owzuckv3OVBp\nhGoZo7g/Jts62HgntBlYEsQiPQ6IIhS9liHUVyHOqe/XhpmsN3ia9ZIou0U1\nlRVU+lcPGebeQA8uyxELo5tK5QaQIOcwfsZ9gOh0Tim8Mcxb8VLswZUR8rZs\ndZ4L8LUROBWVCJ+y53hsbvlvDukiI+FOKMKMlZnxBd2o6s8mqKGcb7ZmbfCO\nzQ7ts1BITOprOP/D0WkXvrurh4c5rXF2HoaXHAmUgKZJ2G/SEvkvdogRUmWe\nKgLUjIj0DDHqrfRATipEc+wGCcctoZ58+2MtGrZwRegmwdQA9iZmlXq99mc0\ncuJmmuqONVOl3uLrz7kf3cI/Q+cELx2wskw6i10KRDKMh1taT1r0Fxh+fbFl\niZLOAkuHANNour23tm9Uyowdn3r13xr6V1wl3HUejuAtdyWR1s42+P2+u7hO\n9L6b0P8FhWTL0pNseAUxYzgiZYlDeuUZfJ9R6/DtkRqq8XgBlwriveAz1Xak\nYFRZJZOC1SdabIzWFmQMyjzi6wwYBKXVxdm1t6zzsxqIkhcceuhuSDW+vP2d\nly7o1xnsWrY3XFCZqJftfIgjYx+GMPWMRY3c/DTpwkDcP1o8AJZ1Of81139Q\nrL1hmbsnXij6RLTgeT9y9kg+tidzB+r2nP9ZfuO3JY8gt+q/YObc8ktTeOp8\nbEWi\r\n=26wt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLyZKNunbkEUF4/74k1tMojMNAIfuRWsQ+oVlGvtdNoQIhAOvNO7zh6hVJSdnBPE6LX36TY57ojGoTfZrFgzvjmk6y"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2-next-1593051570-6a0e3ec5.0_1593051728330_0.9509244448317187"},"_hasShrinkwrap":false},"1.35.2-next-1593052063-3ff2dc97.0":{"name":"@xdn/prefetch","version":"1.35.2-next-1593052063-3ff2dc97.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.2-next-1593052063-3ff2dc97.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-31hrqlkJPEHkN9ZL+Nc93Ao2o6Syn9Gsw4HFebOTC1dPonf477VW8aMW46xW36ChWJaMq8x7dgAm9VmITPV2OA==","shasum":"f6aba3a7447c583fdbc233d8087e7d8149f8c612","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2-next-1593052063-3ff2dc97.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9AxNCRA9TVsSAnZWagAAmYkP/3lhHaq0Sh+svfznBGST\n5YVJgTcS1l8SZGKXn4iSn8aUEpbyb2Uk6qB3jFs094TaKdrlCatdhXoHMb5f\n7ac05o8JqDVZWVNWyyxDNIjFwrtehhAmRIIb/risZ30/LyQ6V6ln5txq8/bj\ni++ul8vYFqWvecabOeC8Y9FlAx7EAL70MVuhhjKrrQHJWwuVHGvAbzfM7Kpd\nie2oDUCJub4d7OM1bRjJauHcZiStwSJ/f/kX7AFxJxUW7TgUiyiZJXFP9HNj\n7Z3/FYC7dNgkIrJNfvebxae27Q9yggtZQ9eW1uOWnYgHFXAyPHWkdLnQDXkn\ngcMJwvP1lrDfqPD7RotzBRzH69KLwHsznH0No3yVYdXjPVTPz3Zc9J3rI+4w\nx1W0EghUiRCT7CfqZCpdF60XZqkehmZOwAHYm4u8pquTm7vz3NIhSEFwJy/e\nfNyn/wYUMR0kHs2vuBK2kMDpJ/dQmxH1H8MURJgIlmxO6TbeShDkMZUOCYh1\ny7ZnSK3nR0raOYQBAknpItZKHsyUFrK11JsWbMlYGLxtab41ZzOJC4MI5E19\n0cA/GCKWHe8en1iiOn1Exu2cmfTf65ZQufip0vuXiygUPHmaEBwXc69qjqha\nW30pngegz0bImJIlC4Vv6zQMn6CXDs8H8cJFffmmgxALPKsK98EA3vVJWklE\n57VA\r\n=bNlR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCg+M7mdOv8tVD0nX97CBpCzwDJIKclt8qEZo37cieshwIgEucYjz2pdOfkGrkb2kGucYUxzv4sEFbne/JPAeUWW+c="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2-next-1593052063-3ff2dc97.0_1593052236365_0.25842261768763497"},"_hasShrinkwrap":false},"1.35.2-next-1593053597-087fad45.0":{"name":"@xdn/prefetch","version":"1.35.2-next-1593053597-087fad45.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.2-next-1593053597-087fad45.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-5BTY5JDSIwkRJ6BPA3vgJuoVHoyNsCS7cM9tf4HIk/jxL0JJByuxUeIwwpzzpxZzu72Y71A5k3M4WKVHqJbhlw==","shasum":"ebeea00006899d1b6d080e5283110763b24fe815","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2-next-1593053597-087fad45.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9BHYCRA9TVsSAnZWagAAblQP/ijFYT4U5wGgRqMybj95\nOTBO5cOh2UJQaC+Om9Q/u8gh/YV70iYXxHr3tY0RkH2XrJS9P4e2MuOPNLxr\nand0ruU/dgTstPqtgm2I2eFtbHXHypn8vHpROhepQUPiQfLJh2uTh13ORnE+\n6qIww5X5rdvqiD9Zj7+oql1DSLfHpQwq1q3AC5gdAeHocmXgkg+snlMkfbVC\nASeLBUVBxpY7Lx/JIvFCmNMafpFoQjeylo38chrM4TRPBqzUUKMlwifSnknQ\n3wDvJBACc701DxUNZzXzeQXjyPXZ15AGUl2U1/923uG/cUB+9Xa6g39e3Pib\n+qDyMZ07zQvqUe38Ljwql1xXcp3wEJr+IQixGvxAIONU6KpNRPV+iptZZf7Z\nqVzU+MDJYqaAOLpmDeiR6+buFjmbtQq7z5lZWzOsj8Kl43qRKJ3U+XdzQo43\n7Lje/wE7WE6Hnb4qGDalldWw8Z8+MmBysHOQpppM8ssVu3mgadNBJ2tfOBfD\nIOIZmaZd0BaX1J7A9iA6FFzPUVhVV83eq2Vicn+UhfekmGncI4V70sN+xiPL\n85puIF169er16DWz/jrbXbEA+xYwejlCIOThKCmefXJcoIn5M7nvrstSIt5I\n7KBX3HBWJ1bhaWmVW96g/RfpUxycqyDtvXBhVltxLFqUjKXUCysbynWEo8n3\nmaf0\r\n=R8mV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3lucGWZMvU/2ZebLUYWXwymIJUkl45/cCiJwV68VVkgIhAKZjIcLhUyLMB1mqrB26PfeDtTdx85fBLH/38Gzv0k1X"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2-next-1593053597-087fad45.0_1593053655898_0.45356826515921367"},"_hasShrinkwrap":false},"1.35.2-next-1593053845-702afaac.0":{"name":"@xdn/prefetch","version":"1.35.2-next-1593053845-702afaac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.2-next-1593053845-702afaac.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-C9G+Eb+5xRLfCHbQfwiheHv909/MPqnBXp6oH9nxfvGbS/hKWiPKfpikq3uDA6r7R9VWj0kp3MCT3u/zvZK7Ug==","shasum":"2350e62681cd65ce6b47c7dc687b2202816aa896","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2-next-1593053845-702afaac.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9BLZCRA9TVsSAnZWagAAYQYP/3FX7QSnDlfXUueRt9RD\nEnm55nGImYtrlf8Q+TkUxEUspBOBie4wUK+rrAVM8IG9gQErDKUCGGxTdOcX\n0h8b5nk7Y4tNyjdW6skVq1Nq7hIXVmZReeOu0Fv8NXz61VbpPd465rUmeS8r\nP5CPZ0iBa/KyQidqczttgsGjelIrHi7vf0ZPZEvj8QnB/guqPqRgJ3o4102B\nOm5lt+NnoXeLjhy4P9zWtnyD3rYkMvB5tCy6cWcPz4Fj05zuPDojSGHjOV20\n4Cc/UebS7rHt2GzD1JVkP873QppD1PyCA6Mh1Wox6ShFKT2Ji3AP/sqbo9es\nVE2lAzqzoO9oTbXD5TCEKFHUR/0Vr5hp4Q+K4UBZSvEYj9+Wbb/KFkM4Ihgc\nKYsp3fTPREZtagnGikfL053ybXulVYTyaxdQrEDLvGaTdL93YsnADyFKDOgO\nbkJQMND94cmx5WVoHMpYPDIBwSB7PkjiA1Z/2aOhoWDoW/rjXUTU8P3nNd0Q\nbhaEBCGYyGnm9HTPY+ES9hTFw7kKxwEXrtOGXYTasZTXYQ2gklBgFa6on5fr\n4MyaPPm3g+7n2AemA63Zx4xpyUbv+ZDMIIGQ4DO2wz750WzxKxFAeXD6DhwI\nYCTKljpFABsQC2UiypxLCXnkNlwHGhCfgj4HzBOnaJpy3JgZZsmvs4TB+U7n\nlDkA\r\n=GdUZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnycUFGK7hdCrDQVBllahbE8fnSBJkGp9n5kOWvcyOTwIhANE4g+BO8YGWa6glfmxIsB1rW65yxRZMPv6vWCaI2GhP"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2-next-1593053845-702afaac.0_1593053913527_0.3758076958016192"},"_hasShrinkwrap":false},"1.35.3-next-1593055253-0c4dc1da.0":{"name":"@xdn/prefetch","version":"1.35.3-next-1593055253-0c4dc1da.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.3-next-1593055253-0c4dc1da.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-7RVuJSRwQ0Ap2RzlzG3Mg+WOPdc55FyLDBXSRNrvlUxut8zlokFWSrzPjV/ylt/g3rBsdtvZEIWa8c8gZQq3qw==","shasum":"57b3c0e684dc83021c19af2e8a52021bc268feb7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.3-next-1593055253-0c4dc1da.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9BhaCRA9TVsSAnZWagAAC4UP/iXm8YPFjux3n7RVu5eB\nFSijpyC/cranRwfENOfO4w+q7qPAPgznHYZ8tYh5tkH9t+R6Quct+TQN9xPH\nu2MR/4lYzD85o0Fty8MTiwbtbe/Ve59nvb1TG4PxKCs/SVMmd7XoOJ3bFOmp\nMgAKPKYzUBHYfzQ2DTiYZc+4Dpz9TljSz+Gip1Vs0yXz5O4UgbNPdSTRkNPj\nG1rpS6psdcFlyEDA0NEKWZV7EkhnPbXqNZGKO7fIF1T9j8quXu69v5u8WR6v\nirhi1c/UWOmT9Ml3eoQz5YAAboke7v3VXvtvOlIuAmIbyIaAK5XFSTySbqME\nelydMDpn6djJywpYGd82F6Y/yR5/llhGSTp3sOYFnllqfCb5uHO9ilUHIeL4\n9S71JDI9M2IPZhRyTKY+muFZizuWSSGlaoPwikmjcZC271G2K/RP/mDPn/uS\nFLXKGEjdVXRXzXVV1kzgNEjGsgBaOgYPHfn4lEBoE04hGt47+0VQQ3/Zw3XH\nIHL6pBWlfC8NhfcQrsfI6aNW3Tona8uoa2sS7Pv9k6pjpXVbHdqT7leKiVji\nJr47EThunyUcAEMoSo2swUhNeO77SopHirXyFi5LRF6P+a1c0jMLHVYa57j6\n94p+qiujcjT6feM9+xVqtUOBox+WjqZM2X51tiQj+QbdhwQHumnPNtG4mkoy\nYELo\r\n=KD+1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGV+mX/B2eTJhf7fPv+Fd1+l5IO+4aTflKGIrTLyrjqIAiEAnUSHFYBrud8ecSnDoP5gYiunOBlOiFiqSOecK+MvJDA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.3-next-1593055253-0c4dc1da.0_1593055322010_0.8652362200610568"},"_hasShrinkwrap":false},"1.35.2":{"name":"@xdn/prefetch","version":"1.35.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.35.2","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-NRY5snvBNDJLSUTD30fTGsX+8V/1eHaB2SGN3N/AfUGkYilruTYKM3whsfZybQbPm4eWliAyrwmaxnhZ/tjRXQ==","shasum":"ad0133d1de564392f17fc257ed7d1294c25e40a9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.2.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9Bk7CRA9TVsSAnZWagAAkjEQAIyC6Mv/zzcavIljSv87\noq5rgN1oPy+aTfiTrDF9GR9zj2MmpGgzheCeoyBxHqktdEjsMu99f0q0SZFP\n2ju5rzup6/gBe0ow9kdx/+F6MFfXCLmThvaY8frYks1AlVQ6a2+1OX3RNgXt\nDrhrEP8T1Kx6fowY7oRSYav8N764JrnBfjASIdxRr2xBHSzogbmkJkJQUyE4\nb04pcr5IhKLs7O2Tkj8uTTuEoD5GFm17SKE5LfxX3j7HH/1vA80t2EBWwKwy\nRyHw0BBpbLpj62dlntvPVN6tuc5Iza3eTyvPDO3Tgze7xa1oFa25CQrfe6Mb\nTtfvQQIzxD83cUypImzD81Z2ayBccjfN2uP52DiOOVdF1fm+X602jXzd48tE\n/sy8RD7eyBEMZ0uzA+DKGMejAimu9Jde2RHQQpWItjB2YX1AcMGAHT3l8DM6\nDKZFAlQ/GJbYNjl5fWW1MNJnmftHLs2Jd+LmJBBIBE8U4TnhJtVsbJkIRw6G\nt1eylmopM6WaBNWcHScvTvxUBm5F6l52PCiLmsxDx/B0OJXZOH9BUAMrDk81\nuinPweIvWBLnJ6ZHJwb0QwXBh5Qg9rhqjHq3Uyl5r3+oOJ7TrgLIp6KeYvpP\njUJedyMvmva+G32P71EshnFUcbmoUIHgInTNz5skZg4K3KhdnCtYvfKJO1O9\nm0kf\r\n=c5Y8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2/XOAqpmnuHLoscDYTrL40qqa1QvgIlmThhwM1WnTBwIgd0wS0OYn+YquOf7hJ5te3T7oHikqNj1MdsWa29gxMCE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.2_1593055547053_0.8010641907516256"},"_hasShrinkwrap":false},"1.35.3-next-1593086359-6ad88faf.0":{"name":"@xdn/prefetch","version":"1.35.3-next-1593086359-6ad88faf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.3-next-1593086359-6ad88faf.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-hluUOBahjF0Tn9pi9uKjS5ZurJWqFRm7GfBEVuu4RDxz5QdH5RbSUUK2kkddPxzSDOFJkTwa+PzvbaDFZiUhHg==","shasum":"d4fc20194138f4ac69a5f9a1d1cb3bfd170776e2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.3-next-1593086359-6ad88faf.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9JHeCRA9TVsSAnZWagAAKF8QAIWjOo+f6gbg01ZBRyCI\nBPzCuIj+R/WebhGs649g9jFpQGvXRTomHqsQ3RgMJRYOkkocI9k8hw/+1zre\nDlOATTWMVsySGzp8GjPnJL5BmmvIKZH80ivw0hqn6MdYgXtn82KX8zAEXKgf\ng7CdItWXNQ7wO57QbAicv1GqUEvtljVQ0KltmdoTh31Z3rJgDTyjdnMXHGg0\nxb2IRrejDFyaD8hEbXktoUrqo7vLX7zmJ0BE66q8iijSIT1sgX/wcmzVkWs2\nW7pE5Bubx0vVDr05CuMrXqrOcKdavd7WbY0TPCOSROm5OnSkq5vhczZ/OuG5\nS6U4wNun1O/6HpEYXGcu44DEk6KbA1YrDnFgsyboEWu5KlHEpWturBw7HUp/\n5SNT/h73a0PemRW0a3WWk4xxOf8yi7Nk6yjscTcD1VgD3wpy1p2j1hqFfeKP\nPxs3Jp18KWe+PuB7er2oZFBt6SKjm6NTctl3LvKwN7ZT99cf52X2Ke0fFKz0\n/Q4eOzWb9OHRCjvPaoFavZC8Pj1tDsisxFDcyh1WpSjAi7gQt7tXqNi/4mJp\nualBoXHFly1+bJ7B0KJrCSmyIlB1p1oue2agbtl1axP+Xuqm5SZTDrxBvcm1\neHTrr3Ub7POH7EX0vogc+rskRczEqn7g1Oyt0OU5yBhW5fDipMeZkMYBT8yc\ntLRd\r\n=nbDD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAju2888BbQzmVDN82CRmSg5KefXczwUwpzqvnIlIdiIAiEAwa9c54OQzPbrwZncGrJBdk16m1q3V8zrXlGWGe8dgQ8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.3-next-1593086359-6ad88faf.0_1593086430060_0.41258955623508076"},"_hasShrinkwrap":false},"1.35.3-next-1593088664-326f25c4.0":{"name":"@xdn/prefetch","version":"1.35.3-next-1593088664-326f25c4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.3-next-1593088664-326f25c4.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-APN1jAz8R/MkLtxn7ZqnCkKO2T+ois0zxcROE2TBXvqNEMz6U4pr3vdomTz0VgQhKEb+67ka+qCMFPra2WHX3Q==","shasum":"d2ad29d0537bc7c1785104b1ddebed80da1472a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.3-next-1593088664-326f25c4.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9JrbCRA9TVsSAnZWagAAD4YP/i1Orgoqg0jJik4xFxWI\nxFlBweyDPSQuJNemyQuR+bK0oMgPeFhQFvSdzz9/Dc1AheffIyuH3zamJ3sb\nmgRl5c7/89O4XfN/Ou8eUmwgd0ycUgz98IHv5jyyl5SPCaSalpBH5SJ5vr/x\nsJt6LfJ2HJq8dcbV6F9Hw6y7/c5dqVwz735DfRpXH/UvOvGzFxY52YfINTOr\n168UVdhq+5YA/7WpuXKkzTyLYGX/LgGxl5+J673ZyA8Ap1dmjdnMpf8Cx2sE\n7pGxhppJkWYkVzxLIR8t1QbG3UPvexAx6mC+nQFXsl6uKx2zMBQg3TDtMiGv\nQjy3TVLQ4VUME9MdpfisYL1MMnL85mGaI40Xg0JJuyt4SZvv1Kzpboy2rCfd\npIkIKN2wR+VqJp9KD442bqdugShehkNTZ+2bxseGWJLkPI941JUaZqwQ19q7\nJPVr8brP5TwLyJrFalFovALJXmf6v9D2bvSrxVLDO9kYkxkpaCfJyvvJ0iAR\nWHMTlPk26HmB82jTK531zjJEPKfwLL8ZTlJGsDZOipfhaDG8hNLTIT0YWEOJ\nU4GV8LAikFjNk6t2YU0yYlxKGSURXO7bi9A45fhlD/5Q1WdqyJyuellqxZut\nsvnJxqF5VFf3oW/elrXUJ0xbYmwjsnGC9jL+t4kE7De3nUSIOQwi4TwbgNfm\n567m\r\n=qudG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHb71rqNOhLbuqAy7CEU0Zo4jTlH7U7Jq/ApPw4SeZFAiAhoc6sJrSkMK3rUSzw7rhZVKe+2ayKvDl3sBSgW7fMcA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.3-next-1593088664-326f25c4.0_1593088730873_0.33604412795810945"},"_hasShrinkwrap":false},"1.35.3-next-1593120365-67018c4c.0":{"name":"@xdn/prefetch","version":"1.35.3-next-1593120365-67018c4c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.3-next-1593120365-67018c4c.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-9YyHD+0Ze7OM48Nu5TzZ6VEdSdepIIzLMUypZtjHhI7ESg2Qq/Pz8VF4Co/YLMOrIvLGPhMRz3Hzf7CcxOksSQ==","shasum":"b5935dd5bce087145b17e444f781e4924c54fdfc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.3-next-1593120365-67018c4c.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9RatCRA9TVsSAnZWagAAJYgP/0ZgZwreGbiQVh7sSTUs\nz+0GekdRxHxs/cdkZY+5FL7tczEshWp2i0x2dWdYGTyH26m1uAeD54n3dvG0\nbKH+jvhkMo7tJiUuyWBpZWJqYI5epKNERduYTCaMlkXXJfp2ONWqj52JNPBj\nT91WZgpIBXr8nuBdEcigLlEZV3PbCYuaOEtFAsxENpW4rguvFB0D7FH+lNwU\nBY32WzyXZYaO/ug4Mh6QgSmo+jVEZyrzv7QNk0LIKOz1558zB9pUhMk3vqWQ\n6FjW8UsOKvwAWiA4IVyRnP5K7Ohpee1fGCP7ZwD0zWzm0JLLkv4wtRlGYlnP\ntzgbm26HToK+HJBh0Pmc5WrFExEgujqV5A2WsjElU0LvkgaxlfnCFFAg5BMz\nLFxuN2jt335RqT0SBIgyiTn4r/ZetjrvnW+Mn7TNuTZN1jOFkCR5Q3LVxrHA\n93Tp5xgm0BpZHH5Jmw3STwGmuANTYbz4oL4w7yqoNSnf/wZw/KmnyP8O3HOV\nGnS+jTlLvwxhCA1GfP6dQnjb/k7ppSdYXcUagp+cSiMq5J7cWrqD+OTOc9HS\nUysfUFWh5cIJcKxu262Ewjwzkb+DicgS8eHr8RDqAwUzv0E1Gc+LiCVyC+1F\n4d7wskLV9Z6UdwcgIskMYrBWrNII6sc6cb1qM21RlSyygctJ/8BkZ4YYVlT+\noeyf\r\n=bPu+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFZAhSh4rEg68eTE3VJlBHwvl+3e3ctZ6L4ejahisW8CAiBCpU3P6Dy/2OD8AK3aL2hhTd+BdXWtcBz847C5D1fZBg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.3-next-1593120365-67018c4c.0_1593120429447_0.3365425913573876"},"_hasShrinkwrap":false},"1.35.3-next-1593170082-5d285290.0":{"name":"@xdn/prefetch","version":"1.35.3-next-1593170082-5d285290.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.3-next-1593170082-5d285290.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-/fAYzsxf0t1eDrlzHXIar3KVMpBKxRcOTUPpT/YR3hqLOd31CtZ9erf+LL9wNMikhZYq2Q13RvT67+Cnv57A5g==","shasum":"15bb161ade5038ec0f5b7bd6cf280c3cde37aae2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.3-next-1593170082-5d285290.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9djrCRA9TVsSAnZWagAAfjcP/2PJu6ejUnaqq+rMeGxU\nRUCBhl0CMtFG4rKOr2EclOi2vakiuK4jnbE2trExLVtohv0l+RdsP+er92n+\npKIPYY6KB0LL2jTBdflQ+uiO3MJ+X4y50RmD8ymgDwHuWB+VimpgeCjNCfIn\nHL+zQ214MPWhjCPmrEtF2XyBAUQX8Uvws0j6g85BGp9GywuixHab2eBatOhP\n20VsBBYYbjxAOcnFqCatH3075Z7N+ZY/Hy4U1zusMv42aciMUQHweb5a/+du\nXgBkOGIOb4RRUauU/aNkLGee5usdvm5wkWka0Pz9vDQaJrSyrMuEU4l847zI\n1c3nUzK/sHOLw1mShE4TgCngZAMjvIZB+zuouhhxPX8CyFt1FjkRg+bmPwuE\nv3/ey3UvMgXQ6uuqAD+EbPDh8x3UOuF/2PEcSghc/kJmfxGprpdH/zQZKnqM\nCRXuWzuzZszFHhy3VoEvNVKzE6GWec3BFjzXAmnxq8kkrX2Yyj2dhWtNMIil\nSTZzJOUcV6nY/YGz57z/MzLk3GRLgg6uLTg84xFnH11D83HYmYf5bdpfjdBx\nUtqmAtQEo/YfEktpGl8kx5Pq1SxTDn4irgdGTjDiMwpxu36xHWtjvR0braz7\nAVrDreIgn/G63/bj6R+AwtL9ue9hUz31s36TZXSl1OAHO7citESTG+zb0dKG\nzXta\r\n=1B7a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAUWn+BB0Xbjtbi60zC11PkE+qau2ZJlwRtTs3/I36ZVAiApCvzfnkKPhmffENwAth4ROB/mhxQAm7hRbNnLqBnC6A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.3-next-1593170082-5d285290.0_1593170154934_0.5100932632446529"},"_hasShrinkwrap":false},"1.35.4-next-1593170336-82741007.0":{"name":"@xdn/prefetch","version":"1.35.4-next-1593170336-82741007.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.4-next-1593170336-82741007.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-2PbAOfJRWKwz1Y7GFB8mmCDJpihLd7mo6daPeXgfqpASS5kIyBKXV/cONfOLizwWoT66PMIjo5uldJ1Uyrnelw==","shasum":"ffb4df83584d218176a3640c5f703864c1e46770","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.4-next-1593170336-82741007.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9dndCRA9TVsSAnZWagAAMyAP/367+x4kTC/ZO4Ju7AO/\nah6DFHdvctcz/hKcgGNhwuGM0opqoMkipu1SuopbnvodldHfObbDQ1b1uqil\n8vTFYnUrTxTIW4n/Hwq6v7DldKOFw1xriFGa2KeiDFjkwdR0zkWIBi3d1uGR\nEdUrxVcfV6wb4vHLzyybceKoTEbM78lAF+HWtiJS6h5GxXUEq3OGyoic9JP8\nQdDR4gV1yW/l1gEqeTsilMTtiVdu0/4RSfTQeAKVK3cZfJAOjnBXFfYLqZQr\nJLgy1RHwNThi88w/CPOhc9lB1rWAvHzLU2a1xYReb14u2ZkehsMpB79xKuoC\nj5WNAmug6ERtxG0fwDjFvSkQ5ku8Z+uMZjhq5WGxGZ2EHOpkX7CgBqXzlpCH\nsQOYihj9YIPlwEG9maqyvd/IWXSX+ZZdNBtFxCR+6Dow9/UhLRAbKcC46lAn\n2AzzS+HJtU1lHYzlt4FJXEPeFyE/M2N7LEeuGNch/2GUPUoHEM69iwApG6uA\nFh1i8H+C8K64RL/tGlTK+9kFlJXuFxzxlsMRyM45pUUXGa9AcVzfr8GjPmaP\n3B47OmC9gxzGIu35JzFQEsuHSkSyFiI5N4tP+sI520vxKz2V9Omu235NcTUg\n23adEf05UuuAvcYYazeS4fp0euZ4jG86It6X/YChFpyc01KMIpBT5K5DiR/r\n7hgj\r\n=5AqM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkRm/K5EP1VUn+A2nXzbYbaKj6WabfSmf5mAqDbYAPvAIgeJ7pXWOHYe/Qo2lEMyoG6M0w/LLlnhkHKFPQMh3z2jc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.4-next-1593170336-82741007.0_1593170397048_0.44918623411556213"},"_hasShrinkwrap":false},"1.35.5-next-1593171431-5063cfd0.0":{"name":"@xdn/prefetch","version":"1.35.5-next-1593171431-5063cfd0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.5-next-1593171431-5063cfd0.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-vCKFfHTFTX6hLdOenTDssP1w3VlDyr/aNlCi/3nRLV6pOQ2i9SbkBFImC49KQONd/kuXvL3lZ7JBCmWNsWnnSw==","shasum":"51cfc9115208876ac50edc79c2802d5192a92f40","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.5-next-1593171431-5063cfd0.0.tgz","fileCount":46,"unpackedSize":77004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9d4kCRA9TVsSAnZWagAA/5gP+QDvtnlWaWbhmlbejwk/\n5DF0QHO2jebj13yhebiARJuwEq1i7Qnd+BnVXaSaMo6K+Bjd6U/RllvC4ur4\n84aLf8FjgZpearDQV80hmE9xK0BnUTlePAu7P6cuM7d8BqKjO0CQhThbuCwg\nvmw7K86VP88xAw0A4gF436C+TmE8z/iawiSci0ufBQi3aQf7dqVN0BiFQt4z\n8bQnZkd7LpWvgUV0cAoM5jyYgnnrxqzspHpN/yMGB+31L3VswtwX8G2NyZhD\np/8xxxNAcmI0Xk0Cfy30tcE7UeWUK2bu+NAmmbFEHLt+2T9RyRzoZ1rRFOft\nz6hhqIAQDRmDB6TXehkg//5ODqi3ORiRAW06Q/ANBSNRQxQ2iIY3A9cmkgwu\norsDVme6zcDBvLAzuoN2UxsuJ3rCGK5+o6/pufv7o0D3q7n0Nd5TWQkfDScv\nmpwtD0lsu9x91LP9b3DM8oRDarDznRIOmNNtIaswvb0YpeF0oTx09Tg8RR+6\nvII4G3t+ayK5zhq+GB+ROt2EIfuFdabK9/6q1Peo7uNs02WhbZebNfwNaJ1r\nnIUTzIq205yw0fc7W3A0SdN8HV7HoQ1ALbb0zgKKj35JoCkefOnGM7GzGg9k\n+bsVW57l3uIRRDp3VRuyZW0fg9zgXnii7oSEA1LwqsYK/emExpHpgDis3GTu\nIlLQ\r\n=VC3o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXsAG5CXixK4/Vgxkw4zooPdYEQYFQVEK/0eemCyHnYQIhAJIX9JAraOaUb94jCSg7pDX0QTGHBuhg44UX8WUkDLTV"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.5-next-1593171431-5063cfd0.0_1593171492523_0.5181757118649588"},"_hasShrinkwrap":false},"1.35.4":{"name":"@xdn/prefetch","version":"1.35.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.35.4","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-6D/16Qt4KE5Yn5+YZ34pOedbFguoQM7FvRh/EFfWucTpVykhbjM13h7BHmP/ES7+3Rrvw4hLJBbMOTuxaChQdg==","shasum":"f5cc73860892d5abcab99589ba922a0be06ef57d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.4.tgz","fileCount":46,"unpackedSize":76977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9d9nCRA9TVsSAnZWagAAivAP/2sQhMbgiOHPpTKWTMAV\n7Gn9AGkyy5VKcSAQh48wXlFG1WxwdADYO+WNii9lLxyGJ6/PkV0aVJV7jdet\niPJVtLBLy6HaF4mocejFESwkw2O7U58KB0nnZ5/a9QwzJpyNhkAoiyFhUBOM\n9HUy/mrwgqucheCanOHfkeWqAozzvWfcDHikFoQdrNbx2rPTxLVCdX6Byf/C\nTYW6iNV7HVftcdN3hYcXbqWDtfi2JU3aveOTnDkbPJ4EAMR65JxQCV7F2mYD\ntRIrQAuOsrRbmVSmVAvBVCKgLM5Y5I9ARaUhDwjvgfSreTaGpcMRVhjZW0xg\ne0VKyj3H90Dmz6YtsH+PJu22ttrZ6Mj0zOKLZ/NKyZeRpk9hWf8xoZhEglCV\n7rjZwUiBOAFS+jV42ptUS+EWbqwRxa7MX0J29qHGC1i3ClM8IlOe2r1yFBi7\n3IMOV4P7AG6/xB/6NZu05ZUNQ2Pa93H0x1ifWxK+04BA75i5kcC5EYuQdKoK\n1EnuPCej5fEFpO6t8l7bBxvyixU5IqCzfm+TYhEXBvTWfIT7BiYw6FO+PGgs\nEc9qf4BX5a8bNqLgF6fl41c1LOrcUhKADJm1AEJsJu5uF7vSzE3plCh6qsFI\ng/pUq6txudUxbQSEFCwp22Ha6KWdkBvRNrj3bNiVrVA/Buc5wiIx62kadkhv\n9zXK\r\n=0cpj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSfH51PNXT/465uqO0kto23PcXSBxTxvdpiNx9Et3CnwIhAMI42NbarAi4Yq4Nv+zOQMn7HOylyb5SPSbTTMoJQFOY"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.4_1593171815518_0.5884780817188076"},"_hasShrinkwrap":false},"1.35.5-next-1593172009-2bf4674d.0":{"name":"@xdn/prefetch","version":"1.35.5-next-1593172009-2bf4674d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.35.5-next-1593172009-2bf4674d.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-01xDdEb44BXBuZGz59vYi4ZT6P3Fyuxwzz+Ls05FWg5mTsPy+hNXdK+3i2LjcdkFfmaYVUDISuEV3Jc2i7+Ttw==","shasum":"188addedbaf7629d54b7d0cf177c4d3136a9824f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.35.5-next-1593172009-2bf4674d.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9eBtCRA9TVsSAnZWagAAANYP+wTwQzoP3nt1VpgcjfyW\nPmkKRRTNZJ6A78QCa45LCAUkTd2umA+2y/gWJ/f88oHyV1D0Naw10OS0kioC\nlf1bGBrYFR+qPFB68zM5SB5kfgnyAyJTUnXfoTWNvCGk6cIlqjKJAdDNu3wj\nHx02/c33jjt9fFLRVUuCG0pwL7eB1C8T6uVjw7ZlHYONFRH9KcjMbzG75SYB\npYBTknlWlXr4A/iApIGJnLWYVG9rM+dXD/QHKNg8gRhMne7gU/mv6Pp7CrVE\n5ClK1r0yCRotLLfoNe/L7rTAYqHSNZTV/NkjsX/a5GW1Xcz5EU3jBHZm/b3N\nVsjhQhGkA2XA5D100O0o42V5dZXlHg4bwwLvZIXUYCK7SHpRCETsS86hcWV9\n5X89KFkO97ybX54vg6tmRQSCXea75TxINXaPOzl9btd3jjM30KWBIbiiBA5U\nUQGUkIXeQVfwyHE38+d0ZZIl59Dyz2jBVF1E5C7GRng/KR6O/+GKpU/BeRO4\nbHkgfhWSnOi+pqRzzU+AhVQim1cVOGDkKLEElf0etk6/yBH5ZLhvIDAJK/6J\nydm5xqOhwl4aBfSZqMMJ/BqK+mgl2fSynIOVHI1a8pqc/p9nZGAGx34Dl166\nZunQKwILExgnMtJuhcRqtcK0s0Pxcl1ULb2vn68RzTPBBkiKIwxEC1VaEbMm\nXZbv\r\n=a9QH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0fDFiL/CcyW9YQg3TAHr9FEXRTNhw1t8xuC48oTBfXQIhAOkGUW57X6FYKOweEBWbiGwuKSC5vz7gFmHe4KNsEk+n"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.35.5-next-1593172009-2bf4674d.0_1593172076887_0.8879535464043471"},"_hasShrinkwrap":false},"1.36.1-next-1593172030-a801d848.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593172030-a801d848.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593172030-a801d848.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-jRQ53lGP+C5Aa+HVYgdujaERAfGg/YKhviLPkdwJGd0sXstC/iXTXpMhHPa7MUpGaklOjBOoLXP+rCbaHXOIuQ==","shasum":"cadf87a6a7cb8382860f820f6f93fcf7d61570f3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593172030-a801d848.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9eB/CRA9TVsSAnZWagAAZ/YQAIpcPSeGoFrLhpmtEXrx\n3ntUqu8FJBDfFnOeLgKvzVIg1AZPFuFwc9n9Ebz4tBzO+lgjonubcoo2XoEs\nxNq/YCdiJbi65l63qbtJx8yHKbBnFAXJ0qKpJGJkQS4IYkU4kPRUZGOFIH6n\n1OJJ++mGfRzRATAHAHcAtr3ogPgVve+LrWTUmfncQIBIllXkUiTs00bxUMj6\nIJp/DI0E7k3yMvsSBMurK94Xe0NNMP/FlYv0S7Ayai2Y5Ffy1KqJZKh8ngJg\n9MEHpTBES5SjbjMrraMxKNpTdwy0VeJfs886czKvZfYY7v6dNBKujfM9Stt3\ncv3U+6T86sWIYTJicgzrmUDf1X+3QpIwM63UUQ+5YP8BsjGZEC7W0u2CnndR\nLrOQCj0Ocblz1CRC6BGsPfmi7DFNXcB8Zl9EyovQm7LjeUVnsZna6R5C6lPG\n3/8ftagxkJCpe73pYbfhAkDW1IKUfIz3cXmLTCakMkWrbGs8dsSAkQIYUQ0R\nhmEVBvZiC8h64ohT/cZ3f2bRrzjaYL4THZDJg/d/FSD/pGQvymYkeVJoFw8W\niBkx2IeQ4qeez3761HQQrSZJSkzKUu/todup7PwvmEOvznzSBLMXaPqY1ERa\n9FrjLjDT0DFqsU0KYLRI5FIHEYxCGHLJjV6+kEut0jmT5rtI9yj8CPR55Qgb\nic08\r\n=cSyU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMyBnL3PUYEvXGo3LGFNzh00Kid0OdygOGrM3zfpZMUgIhALOmIJ8yXU6cIap5Hb8HUzQIwnhbKiT+mjWmsKVWWn+a"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593172030-a801d848.0_1593172095516_0.07543623873583916"},"_hasShrinkwrap":false},"1.36.0":{"name":"@xdn/prefetch","version":"1.36.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.36.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-cr4R9eyg/TPJ1UVw28I7iUnAGzMXdbhXIRSc9JaG1zye/iHk2sMDvDC+9GmCAbVYm9nkFleZb36jXFsN2SymWQ==","shasum":"d1d9d3db452da68f14420adb406a6c98ddf6c736","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.0.tgz","fileCount":46,"unpackedSize":80729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9eXWCRA9TVsSAnZWagAAzQwP/3n/E24aZFozCQYJ1mlQ\npyMndyRTx82rFM7fQClltuOnsGwhGVE+T4Pk2jhgY5cmFHXhGSoWrm5wu+w/\nIJGR2nhr+l1t2IO27tMqqLgECpcGhTNZJYtCfYOQj+gkegoyVqoACP4wPRQ5\nZeaiKQ5QsGVlmgwxA2maMp8ux15uxgJw7EdiorCrqmkE7nBu26nUrDz2/Lc8\noa9e0vrbdT4c7FUW9R0fyB4bxc0JQFXnh3GWrVtTvUhq1YSXhhk4IROZSIcP\nDNMfzh8XRu3POm7GRkEt6dSl2xvLTWUa5fS61IdthpyG3v+LI5ifw6SSNxQc\nMSWzRQv4gWNLIZ2Ci0gULPDOjU6SS0GTOwqrnPYTeOpwY2Sbs5beLDKwJLzF\nPiBpwdCrbqO+opAackAbicO6M2j0U0sd4k4OGZG1+TKf6P5BYc4nDFsG2H+v\nT85j4PPkOg8f1vt8sEoDJKNhF50+MN7Uw0Pg4u2FNS4nYV6SCxO80Bij47cR\nbMjC1+nWin98AFTRPf9cx0sppbcYSrN0XghnyOQd3OFq8NFBVUZ4OjPYS3dx\no4PIhCF3jLgOmIuJDpfvr091bhwHF79cE5jB6bDserxYXZHo7zdsT1P+A1p9\nuyV9OJm4Xb07yXgs0Iz6MpFUEo2IEz792yDaymwhCitI2RxRxqhhEtFhAHoJ\nyFnm\r\n=8ATf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEGOI5Y1MDYB47RAXKBTCahYPl/ldMAO2MRfZhwTx7enAiEA+4YgnU7K3kEWulgmrKErLdbM2USST2kEY/mfRgawt14="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.0_1593173461787_0.23476616954705554"},"_hasShrinkwrap":false},"1.36.1-next-1593184843-51b37031.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593184843-51b37031.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593184843-51b37031.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-P7wHT9H0Svw2OzlqDCHIM3XIIykMwLWR1kp5WGtKrVBqLTPDUQrKOUn65Fk7TrPNHtLzjSpuRenc7dVqMN+XXQ==","shasum":"c6eea8974206957ef4beaf52f0ae596f99cf9815","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593184843-51b37031.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9hLpCRA9TVsSAnZWagAAw6kP/0AcyDldJgNoqn8J/TX2\npnk8S6vg/hL/+uPcJoVfTcYApOUmpfe5TQOVHUk5L0xiGGD2fgF6hrfP+5sw\np5afF2dWUr+5yoVYxNm9IqAZNn5LrT7uP/m56tbNTdt7tivk8+uz4QMNmmlQ\nMiL59MOr/BD7scyLNgrhYa1p41UVR6tSkLcfaURjVjwdt4xEatN0DZXT1PHg\nFnnWNsM1FeJFG2oDUEaugKk0mZ0wfTuY0M7AWkhrjs1M79FgR8HTS5xjjGQ/\nmlmhd681JjA49eEqgHRp/gwZdQ3dnv0MgNjsn8UWYAP+bZBmpqsZNBj4D1cJ\n1VYbShHQhcSA4RZ3xpcxc8tb67VOm7PF7eX9jdtOhDCn70b71aJq1FXwYNvq\nkBSw/Dfa5fZmc7RRJeUgLhELmNfL/DuqWlNLynvrOVOdE9wWNxIcSgvaWfqd\n6f4fMNCdpdqNWOoUcAeW9cNgt5KDWRLzFQtlEhfgK+zZwUVH7TO6YuRJfm7t\nh75kFIkuTY+1F4VL44ya78A44ANJ9StpIyfJ20s+7KFvPPlNoTodb6wCW8CG\n9/wrNwCX9WPJ6ihMGeAms5U+CBIkyubzxgdYRETU/8Bif5b29r0rx4n6v9+y\ncbPQRujpnaUghLgVoG8OsnR/HeRNZDu7zSj5As3aIwx/chObpxrbsFTOgMsZ\nltFO\r\n=v7L5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEjusjUDmYJ+TR770aR/BoUiMJBgLPx6/SV18V+QNmYgIgdInts1+rcvASEXs0Lefb+FGAegmDZB4RMl8ieEJauyM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593184843-51b37031.0_1593185000926_0.23025030633463772"},"_hasShrinkwrap":false},"1.36.1-next-1593196174-f7ba2714.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593196174-f7ba2714.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593196174-f7ba2714.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-2JsMd+ICgaFoshs3rBANLw7BtAUPP3OoBvfgLJEZPUrfTQYO21NLmFW0BKLRc2s44Sq5YaCe2meEL+f75I3MVQ==","shasum":"eed379c9bc2a5198dd45b726b1d54f10d0ab7e77","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593196174-f7ba2714.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9j8+CRA9TVsSAnZWagAA1SUP/jSnexKdARAAUojpPIGd\n5l77DxZN4EUKRfSDkDLPlyJoM0YnnCHvxdZEW2X56y09Wmgl8aXLkZgFXhpr\nitu6NE696Mon9YjShNT/ezvBK6lBXRGqqVxKCXPKuzpC9+BGwygPoWS+TlbW\nF3zEHyspdZ26PjK46EV7cmYGz3xMcddCvtSxnyxSjoBtc34u1MgMoQBq9OJL\nNz0AlJVWFcGwwalwFwv138+2pZOwRLbqRmjUJFKbpXk7uId5gPTJ3bdSwFPp\ncJsP5ThXYiLv7nHOiDR6tPPoL+med4WXZ3su69hsF7hyx1/mve4uCRYMXGNo\nfNxZSW65867IN96kNFIH+gQsJbW2YmAJV2HVo+r7EMu2NS5rfbp/PvUXjZmM\nkA/m5x4Yz7sgn6cZROOm6uET/P+UPAMyNBKtLlW2ehBIFystdNKg0H5dpIRb\nwVgWzvVuVqGiF/6QFzP5CJ6KQJshnqUXvp0OrENg3anwzmc4FL9euzPHnwfx\nwOIwlaZ0vaetOlzoMYwdIVRE0pDpUVrugJnFmVjhRhZGriX/yJnC5vWmKQDb\nDz5yHEAPIvpZ7PGTxosu8cEXfts31F+8CzXsYLaMMLHZZKRg/AuF9HDMSi6U\nJgt1mTdLce8zT+MlZ7LvT0LumqQ14X3j5LqfOJl9mIj47UmLoOVWsfAz0Tca\n3wol\r\n=Wyhd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA+IWwT+Ubvfd770Am2nJtP7s2g9zPtZGCKsQu9C+ikcAiBifmXdRbBMTeZbOWvVd6ihHlPeze+LMw88girtJ6ORHg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593196174-f7ba2714.0_1593196350272_0.47132988087646366"},"_hasShrinkwrap":false},"1.36.1-next-1593197890-f1d237ef.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593197890-f1d237ef.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593197890-f1d237ef.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-SqxsG6PSpKp43HKPWKBc9TbZQeYesVMu8IdMsykbm1FMB3YKNeS/l6Z8LkjMERMjpZs9n59mBkg9UoiNfK4G1Q==","shasum":"6604521a793043449e946df42f8d1e6c9aca4ed1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593197890-f1d237ef.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9kXoCRA9TVsSAnZWagAAiLEP/2R98AsXFxm7O57XcvTp\nfvUTAJ5D5Li9njKFzPI4u3W79hKLdEdNBpgCdf49kuuJ3qjBlod6q3vh+jEc\nikADslAOts+H5CepQ99Dx8v4seolQbLWBVeS9cFrR5tgmGJZDXCNMTODLytn\nx5OVnDOZaVWpVNPnCVvDkVGcV600CFWRJbOkenjWGUXJOtzPL5kFu9Y7vN8F\ne8b/EFWoUXV3/+WwOcuW/qrWPKKIoXgN91T/pB9Hgm2zZJCYQwHHhW3IuTs3\n/y/DxTJkTZeh9Us1L0qrk8gAaf5I47H1btrwOCbocfYfz7BzFonI0zi5FNZM\nYpxDo08SRF3zEWrizRJWRtVRw9vLLvqH4YGYoMQS4huJeI0mFzJzFfJXmygz\nefS2OYYpDkRnvJuO8JJcQmCr6tOV31YJ8RJ5DyPT9sEjeObsWE26eUag/6lH\nxK5veCUG6zN/0PxTPEtJ5PTUrW1u5fHyF+I8gY8KPfZ5UIhmDcpbpVXKeAid\nFiOdxyECg2KMZ6kOO/Jgpp5JeyNy8Y95/jz+HPo8AyowQqDWcuqQ8EVXQIXC\nCnzn3b0m+ScDE2nEhotoU8t4YPKbibRAC/i2kAnXGkWI4vcwttDMo8ZLfdlY\nbrdDqSYkjgz3noBdYw99BMwW9DcByxTnIhMbH8jNkLj7YNJvpkVePwT/2p5I\nznWx\r\n=ITda\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8oCAFHeoF8c0f9u5xco2HnpTFvxbvS5JNNOjg0CgnNQIgKKubMg+sD+vr5ePYZjpTfaJv7I4MjHSA+b5cFZbVgGA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593197890-f1d237ef.0_1593198055950_0.9407458656696586"},"_hasShrinkwrap":false},"1.36.1-next-1593228055-005c0619.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593228055-005c0619.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593228055-005c0619.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-RRwQIuCRizCqJhEJn6NmxTd+ZRviyZlikEWSj0eTGKbjNfPR7ZjPE7bscKDHQ9PH4QBYazkEWPV68IfCJPdmeA==","shasum":"a441968c2e17bf06ce750917f37f34849a5992d2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593228055-005c0619.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9ru5CRA9TVsSAnZWagAAIGUP/jwShxFqSICybCZ0UMgI\nZ718Yj87X3OJcEpGDzVPjAeLvSmcYEnQRuH+QAzbqqX6t+fdR1SdLe8Os0E9\nyxvNYLMZw1ehjbIPS1d9sWpai6cHaKsdy9D+kr8hWaQjH1aYLUQ/6bOr/6To\nf2NtPt+jRav5ikVzXeSFLTcUvhLZeioJHHvaRb5nAJsi2zOPpOh3mK4zK79I\n57RZU8K7Vfk2VU3kDPWXAq+nh75wcC0lzmb881Fht+k1tGPEc69ImJlM/LJp\n7qvesx5U53Oth5VAT0JoID7Bh8dDqbsLUNCkfEQw6+wp4lazvMifM9VQ14tz\nif/VfT3x2j7x6FUZTeV1vZqNppb+32wFKD1x0RStToSbQYshsec8myqOG9oG\nHAEadG5F3+cO8D5J1wcgT5sBIp+eJQ7OOuJGGuXv+VMz5Jn7p9I682fMBNZA\nGtoztz46XtydzMJPQdbSGKnQqED9MdR5V4McNtbFUK+X5r/htf907fkJbPjV\nk7edt09aCKstgjAwVKZUlDCuSkviLvurxha2TznFlDZjZdCdfagKztuyKOWi\nQa8EjrQVrwRYBCgxHPkUePJ1DkvgqpXJfhvR3Z18biFcW6gs1MbCVj749kQO\nWvfYlXsJqtkDmEjtn6pgTxz2RMnmbC3Cr3vteYZcO2dXElFDrIpPTVKSHkF3\nWDJ4\r\n=tkho\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwIQSIwb9IdYiN3OjdH02D9QP/MPMm3xTk7KPOzFgIpwIhAIpE1lOgkkfsrAd/LKPrBdYbSyB0CG0EJ8buuoXWagXb"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593228055-005c0619.0_1593228217013_0.7825916603216667"},"_hasShrinkwrap":false},"1.36.1-next-1593235437-a888e8d6.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593235437-a888e8d6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593235437-a888e8d6.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-VufgtAiklIlBhLt6PrQyEkEBNbfpzBFtKzPRoTqDq7Ua8fo8Y/AZfim2CbPXiY+2SRKsW6yt9bK9rppRdT8+lw==","shasum":"a197b8b1ba9b8b12c0ec0eb1772d2a63902c76e4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593235437-a888e8d6.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9ticCRA9TVsSAnZWagAAhMcQAKAlVj/Rx2M5lx6TmN6d\nELg6mtdglY0lPnqiugDAlI/Q+0X0+sxGZJMmv9cic9BqfpGzyp5vGcwo0xJ+\npjs7kQrhJtsxc4BhSaJbYFjlGAbvvJPqMIZ4JtzLL7DmgsZ39I2IRCYSpJhm\nUtWzRGxuTdCxqg/O88JIUd4mamBJpLUeix0vy9PGFLnsrb2qm3od/9Mbyie1\namXn5yKxFhM5F1grmpwDvxal9x1wyg9w4JGrfNtISg7ONqLQ1qInsedCHbxS\n9Chthtb5w08gI4Z0VpLT6xAO6E3V3Fnrv1cifeAe8yghp0Rh7GppHYXdyXUe\nPCUdE4OmeulQfVMgRVVB79erAhRNAxlXtrNJXWDf0b/HU1cAY2bksuBozNDs\n9ovPa1S92emBEx++HMtM05bb1/2mKwCAAfRgcCMw/i4fZnr+komH3qGPEgsm\nDPkbuJjFQODR7bj+Vpa4ydSK3YZmJEuvZwiDV3HBQ1ntOnTofplnO56VLr4t\nWvwgrsrIWUGweuFiq3PCaDJxgPVFk3V8ehjrsNJhKQMsOB40Mgg95/p88kC0\nC3j+h2sm4+oz/DnirXDG3+44DxZSxe1T/sIq89hjz144u8MNC1tjiqjE8e5F\nEKBcRcXidjL4R+puwZbe6Cs6URu8AEvcFWkHA8CHm3n4DLAJgFbaALGPXDWH\n+jZv\r\n=rN6j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1NtX3CtrWn9BDbgjpU25hV13k9I8SA9IZ5fqbQnOBYQIgat2idj17F6FdO5Fxc3SMnZzmnNRxhtumzdWQ/aerW9U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593235437-a888e8d6.0_1593235612084_0.3914975988546878"},"_hasShrinkwrap":false},"1.36.1-next-1593236429-51a1dc55.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593236429-51a1dc55.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593236429-51a1dc55.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-XjhUDe7xcbES5Vr/H7mB6iHuYTyJkT4rOJD8fgcmnzOMHafRRDjQWsTcEK9Cu7IPgChnBJf6a/GnVQ/yQak3yA==","shasum":"27c8531522e73dacbd1e0b392c305416530800df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593236429-51a1dc55.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9tx1CRA9TVsSAnZWagAAUZUQAJsAMpW8piiJ1tFud6Nb\ncj0JQmK/4hkrYkXSQAckDXrFyocoDWpuLw4/5b42woTEu8IoRdJPys/gJsvc\nEA6exdXcREeNg8ya1ystE/bSAY5GzEE0bDnIp1/hZ8sz/JT6CEss9gJQawy8\nTcCDM/bTePmqgQo4ehNpbkRUFy5/U6LI0hoTiVvU/d1r1SS3oU7pZTAiCz5d\n/9/nT5EnqhTNytI1emRQFK9BYA0gfSotflEuV8b8DfRaG1PIGk6cEnkZiVQE\nv1yBDQxKDo3qD7RrZFI/TKW9UBIfhGMZYh/owGGwIaoEo/aNKa3qbZkcTz7v\nPl89DDY3QJ066n1dRn7YKXVquGy2rlN8rpClmRikgoII++vPCCw0KIiw/9ck\niUFX58RdLk6shDpHgw4MtsEKUnDS8WlZ6N2ld7GaHwmMOAFFyVHvY1UB+mvr\npT82S0Xu0+aMaYUgVbP3wt8foqh6GlNoa8wCHcOl0S7cyiLuZ4Lj8hyM4U/n\nTQzaowAWb+2RuXleq3/bYatb7/rGqT2ODcQEQ7sfEDKFbUBH++TX1FSpf5Yv\nuVzX1Iz7MEFgb6mytgcaU0zBktoTWS50T8mGCbymQ3rbuQUxdNqtjIA/Y9+i\nH8oiPR/sIihxNZGzwPiacje3X5lFWX8UpqNygIp8j+OoNWoBVQ9sHLB0lOpv\nzP5Y\r\n=9Lz+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9WE1MKseocmq3NCpy5+yi2l6wZdbiGy876ZDdP8+GIgIgbJfWBWrvgWAnqc7hl8N7r6m9OQePEUT5ymd1o8Rw0Io="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593236429-51a1dc55.0_1593236597311_0.22373162927988433"},"_hasShrinkwrap":false},"1.36.1-next-1593431998-aaaa9322.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593431998-aaaa9322.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593431998-aaaa9322.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-IDUcw8/iBGq+yFFh3CD0OXby/CdNJAwfNT739/yC04LJcwQoMemOXeU5AvxJCrho/Dp36D8Jn8Kj3ek6zhqmmA==","shasum":"441fcbf5f88c97393c16186c30e74dae0413fc0f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593431998-aaaa9322.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+dhhCRA9TVsSAnZWagAAb0cP/j/EBW9nON36e27wqeU3\ndz3AdwlJOQJ5Ng/qCSIzIyKjCCYvg2tiUTt7NnMijEZJ68dW/w62kDNEBpuH\nkwSm5PDzgad+oGB6qG/T51c16OAL6fBDI6O0/kbj8JkZIxGectk+ty82xc7U\nZeTED2EzxbgCW1Esxuvx46fh6cepHhw+FSE5xgBr5LWRNXzrLeWX6grC3teN\n4Yys4RLhMwJdTqc5wyv1Y79JCRbIEPOwnJ0FE3hE8Jpqrzoh6nyeq9T2UMnC\niLZzE++Uey/WohGjAnDMAy2hWD3KPlKTfZfyblLpi4/xkN5Pyga8ug24qzVd\n6Olq2WLDnUZ3xY9GN1iV6KZnUkPZPs49n3PzzVb14kzSjjHUpMqIDsKhzNky\nR81tmvRUp6ms/R/fefInYTi/lRW8RNtx3cjAjCkEKzdSZKWoVl2hzfqB8/7e\npSNAqh6VexJClsqX8nt3Mh14fue9kVotXEJAy517kAybmXgrzxD79sjE1uJL\n/K2ArbjFaEg4s2AeXgBDN6VLuBGCsy8RsHsRNxQ6R+Ay5Wf2pXRP9Axb03aC\no82mYITd2DrCU4KY4sMsRxpp9UdPXGRrM97+6FVjmiT9mKEBQG+fTa9hg7+l\nwQ8j9mgSGc3YFHwck9qICs94YiYzrpKVoynxsilcYJX3QjX1RBWs0Nd1EbhC\n1a4x\r\n=sF2R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCu2kmSKKuQWI1vSRGVfChDt1c5Zeir12ekJV3e/trgcQIgBQGTDOaDtSOPF8xh1VjisEg47C8deSu3Cx0fTA9NaFU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593431998-aaaa9322.0_1593432161017_0.5065512318796863"},"_hasShrinkwrap":false},"1.36.1-next-1593433296-6c43e818.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593433296-6c43e818.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593433296-6c43e818.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Mpynu2s2lsjhutxhj1diZz42LTrtF4nhln80sjpa1beWHb7e/3+gGbxzqip989cViGevTj3caqeHAN3LVSR4Lw==","shasum":"a1c912e2d398e068e476a2a2763c79a36b9833fc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593433296-6c43e818.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+d2FCRA9TVsSAnZWagAAG4oP/iuMNPg2y7cp+S95rvDR\noPfZazmCa/POtaFuTgYNSrdxrUA32zAz8ynbr9Kf+JnWjYy7iml7hKdHvTYw\nZRPdaf3GNkYnPddhR6mIzXIxD9ISizzDju2QsaEjZh+lBjbZJnhzG6zYUpwP\n9pIcUjKMLaek9mhgYGPc+HDGerRyHrNKMbUPDyyqn7mDXVRQc3ktkIOsJ7Bv\nM1EtOzDA+mN59cEj/DkOvOnE/Z6PxwryGND1KiRSyCk5YnlJMmW/qlLIojsF\nZgysBjTg7likfc6e4/PrrI4WT2u6wfm04BPQt565AISJyInhpxb5QdicluGu\npRI7fQUX4mjTXWzNkbw5o4xZxAzS5MaSTa03516LTdp+YzZVHBoggV+TbNy2\nvAee9ACXB2rafZ9A13phQ8PP+UIP7tA1YRdrFun0bOUiz0sy4ZcuV4BpVey7\nmK1AZVXA10cJhnlk460fMP47CIb5+I9eEkdAlzZAb7adV18s7WyyROgY3emK\nx083ttDOAPLsYB9y0pYgON9xuOPhT3jpHdzJSmgUZsv/2oSfgW7+2CEWUGNv\n6/RbTLcurbZQ4bMujqgUmygFvrI4N+lRO+a5wADsW4CLjRfiCZl1PQe9qjv5\n7j41JioXHBU7ULH8o6PREnngoJwmFVdYr/IXQbe0AuVggqWgeDOPWuLeDBTI\nq+xi\r\n=W3yv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGvbF8/CVHlEubM+45BHdLELyL9l8tRBORs/g7vSp8cpAiBSN49glZHJ4en6ajjG48FTmQuJjKRcIo75SKSH2IPY8A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593433296-6c43e818.0_1593433476902_0.6797847872220488"},"_hasShrinkwrap":false},"1.36.1-next-1593441245-06d0ffe1.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593441245-06d0ffe1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593441245-06d0ffe1.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-K8h2CSeq2GkMWvXMarSK1vg0LHc4PPSl6UY7Yl8g463wExVnNFfxzMrFdadDbFL9niG7vH6xNFj7u0pl/9Fn3g==","shasum":"470f48d14efa03ffff37ca4d02452c59a39faeae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593441245-06d0ffe1.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+fyvCRA9TVsSAnZWagAAp+MP/AuFX+fDgU1VZ9tBeWhu\nezbPM4jDkzEnDS0DjS73d2XCNKsIHnoaGoJYGQMMuQ2tWQbgza3fWZ1VBd4z\njlthrvH+b5Dad3znABd/qDjXOms36ZoBMZhoUlwQq5VCXxBlpl3azXRxLKU9\nPWgJpC9s3zFcUQh1Ck0OIH3u30ixu2l5N4MhsviMve8hF14eyAFhSUDJhBFm\nF0DjYA9wOYXI76VT1S/a7OcyTTcArcs+tX5WhNMuzr0x+WHaVT6iizSsgg3A\n/An9UOHBixyiJIe4SUOmcbzsF+5Yb3t8g66wTwi5KSJxcRMH7n8TcmjexCTA\n4fnnVW0Ixh/qcMPc0k+ylwQPKRF1zwz/W6KBVGtjdtTWU9fKNV84G1WjEdjO\n5LlrP5iSnjWV5FFrqhhZKSLXjwsjP9ChpXYbouNO9eljQ7GnrmirtPW3sLNd\nSn3tMb/R4/zDeQKf0xwOnyFiwbX5lC+2zWGTTR1MrGijQUDPGgjj4b3qGLTi\nryo8aH0/dFqdH5W9R0Ay53CTRlXw87w6mFsdXU/yymQX7xfwyoOq/9fe8PFn\nL5dvfE1tYvy0zqvmhJOLMC9DGy+Ot3BfXA+cukfbOv/pJfk9SGmp7wN6sRIJ\nA6XIm0FQhQjhCS7ZCBkOWTMKrJxPVv5QK77Gl3qgEVw2zU6Uh4r66wz7aMhs\nG15O\r\n=YGHm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTZqqmL51BE/oTAhvqfSFZjJNImgLAV3sML9OBuwTRtwIhAPFdoFGJjNNCxxbzEwxlNqGaboOZVEYXnQaDrWuFZiAP"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593441245-06d0ffe1.0_1593441454837_0.4974505733330201"},"_hasShrinkwrap":false},"1.36.1-next-1593441744-b471c351.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593441744-b471c351.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593441744-b471c351.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-YC1fBZW/5T4c6KP5dv6CT4PF5YhTvXKmORfKhPvgC0Jbp5GAjTiAQBgF9BpNDYYku8fufD66gEMTQGB4rYDxnA==","shasum":"c7fe1be8fdcb116bb0dbfe8c3a8b17e2768075b9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593441744-b471c351.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+f5vCRA9TVsSAnZWagAAIa0P/iEg97lZW8LoGvj3dkfn\n75vBhNwdTcP+gcJwbbVqXy2lpZbdMcDxuR/UOOtMqf2VxqtBqUIqBjelNlpi\nEY6x2QHGAuwr+2Albltt8Qkic+U51j7xsNx6wpBGM+TRY7lRmYoIkutuAcXK\nDsCxq6HqLGGQi+upgsZfW2GBEm7syrcUzFLay1yPmHXA7S6jmoz7po2GO9Vm\nSv/I/XizOFaVgUz+AyqSL/3lr6SOmWqk6SiEV8Tt/3rUY5ZTrzmzPqZdRReM\nxrnD83HwaR3BiCMHxvetbvAIaydL5QviXDsd4i5BbFzUeJ/rqn+cXo6fHSEF\nU7O8d8aJdEDlTkw0W+X4CQ9qrwVMX1bwWtE3J36v+Dp7Py8jS3WK0pDPtVRW\n1cUc3ZCo0vIAed7oiSi0fgXbkNQCW/WWgByiQgEz691DSXnLg9jTjA40htNa\nyk4ECZGCJp19GocwUgvme2GjSzijDtsZWzdganwC5/J6xveW4y+VYAGq42ci\nibEpMa08eX3Hud0YZQJCtlJHamIwblP9L+qoVFRzk6YmTJMibaAyh9dWnCIF\nIpc724rjDLG1x1wQuNwUszNvwjQFZX8bvm/z4+V3YN7eZD/KwKbVN7Gljvq3\nJ2+O6mhrEW+ZKTUZcmFLBUWTs162aGwB+41UQRvLFzO8TW2818XVKRBk591o\ncCxY\r\n=iTsL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyV3rQsrBmz6w9MkEzbCw+fjYOPL6GWmlAJrSKtWf35AiEAgeKeRUOStjcbqtBJ/KJ8ZkSvR/3bmFx6HQ1dViQvI68="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593441744-b471c351.0_1593441902786_0.9388412887051913"},"_hasShrinkwrap":false},"1.36.1-next-1593443432-deedac67.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593443432-deedac67.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593443432-deedac67.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-7T7L8imm4PJgWpjK/eGsBuc5nwD4r4pUiO0swNQN4ZEU9sd/5kS8pvWV6BTOK1AWgeXO9KUSbS+LF1fI/trqLQ==","shasum":"35d2ad7934991fc9b74a6e5652fdb235398de21e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593443432-deedac67.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+gUNCRA9TVsSAnZWagAAXn8P/jsbCcXIc45F62UuAPrI\n9D6opdUvRB3ZwB8hAbgyNYuARCMpQ6tkQQlO4+iwaJCQWwrG3zEhzOE7JRjL\nGelJJh1/LTjEDZwbOjGucF8xkDzzjjBN9xRo8Z866mOT93MhRpTNshefnmo2\nWGBrJ/XtOBP8BK1+mQQUKVJ7ChDqkeNAviK+UjuP44gmWibed2BHRAaaqvIq\nneusWtJrlWfp2vnoP6oLlvTj+lmro6XhWTSc0uTWG0oe6K/BLe3hRdhOBStb\nR7vKfYkr8uFycNa9HgYehv2i0EG+7HR7udQrEfVxH9uhDcbOoRIA/RLXEJkw\nKDGmd4UZOTDelJ0L6GkoBHAwMZLRvJyxUkhxvBervYQaejF1BRRC7kT/oKAF\nqbslmfLZHJZSguHdDMvCuAuFNLFaGIWkN0/yi9zQLTIRjS6ZjYKEmp68twGl\niSHPXMut+wxD6IHEA16AfN+ZcU75fc8l9aXU3Ws5bJiv21LBUYw1Tueb1780\ngcFd0nbAU8sjcJ1pWA//5t0mXU9Y6c3vDNLS11KA5jJtt0n5ri+6pA3wvws1\n7mpyBng5VNJGqr0B+/HGtvAivQg5BcEan+YW+n1AJskLB3MT61qIfukYrkoM\nWXedo/SkgQZ3WIYEv6JZkDj1kyAwrvoW9M2nFJ2QwAtSUbufZ9C5LvenlbGC\nJfli\r\n=/CB7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGCn8u74uYC0FlhirTwK93jfpnY9KSdLzWNBZtllzN3yAiBO1aGH/uRxLHoTN+Xh8HcGL+Wu45+W8lM02OQXyb2E8A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593443432-deedac67.0_1593443597151_0.6880443453726994"},"_hasShrinkwrap":false},"1.36.1-next-1593444146-e57c9734.0":{"name":"@xdn/prefetch","version":"1.36.1-next-1593444146-e57c9734.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.36.1-next-1593444146-e57c9734.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-EG06E+2gLConknqUQfM9dZkbV5T2ayOkj9xnexHfpUd9qVB3Sm8ZKsD767dw9oSXIrRqOBwHYHhqDQXQvaEvDw==","shasum":"a6ebb2b444f672ce6c22774e6cbc4b8a231403cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.36.1-next-1593444146-e57c9734.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+gfvCRA9TVsSAnZWagAATTgP/AnfPkwt6skpmPH2/une\nBdAufdO6MdMz9Gvc/FrjPvNfaRXEMvIJopTOUDWLTPjLzmSJGcvWzjqrAqg+\neh/eMXFuZTnZUEBVi+vhQ1weG4wP3cxtXYPKstH+tjRSExNku8045rs6mAf3\n+If+WBtUpbaFwjALJVHlDhOk+/pActrgs28ep6nfX+PlBwWe4NzCgwaKmD7x\ne8KufPgLSTdROccr5HUK+lRmv38hBq87HZyrqT5vIdWM7QyaIEmwV7BX7EgK\n4GBnLEsthNIzRW7vuaN9VVeRmYV2iLdSn8peqPisZdU0+kFujzObEDvFOxPN\nw3tyjq/wSyOpMOzgLT+60MYENpfX25x+7FqmmVe+uenNiqyozDGntVsMwjtM\ntLWqh+rPwXaoESqexeSpjaCInPyHfSWn9yM+qMCrrOCT/fejif5sUEazu6Rx\nNDpTiIN9wBdWbAAUeJtEFTYzF98/YYaI0NeVFqPROKlfyvM37LRDVXg9Vlp3\nuirgRiumJ6nThDNY+0vmmw0Ro9r/zrSKeBYWLeSuQiFm3LqaG1jTEBPgnoWt\nPBm2J4TyGg16ZJsZ18zQ3JQiTsm6DxZS5e9+KdhBF9SaC+nHK4ucpo4PD6Wz\nLledPSqidCugmt21362mowuupTRchKIgllPwC9fGEKsHBKPuSL42j3Tjisau\n/hQe\r\n=nfuH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuJ2iX0RvgVHa3CHYS0ns9YZsTmzhCZ1AUOmF1r/mfAwIhAN3FbGrHAQ8DkdzI+BpZu9ueYuiQEt9+BvICBaCRbaUu"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.36.1-next-1593444146-e57c9734.0_1593444334889_0.9713525244841406"},"_hasShrinkwrap":false},"1.37.1-next-1593444160-67f3495a.0":{"name":"@xdn/prefetch","version":"1.37.1-next-1593444160-67f3495a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.1-next-1593444160-67f3495a.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-gqS48lrTNuf7zgRpdteTzi28MCWL7Y9r0HvE8TTRVWZCvxFYm7mVPOPXzSku8+iyMGMErRZJOWCmuFxznHAQbg==","shasum":"34a5177dcff23d5c9e61c3c9d7526a014be2db00","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.1-next-1593444160-67f3495a.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+ggLCRA9TVsSAnZWagAAqWsQAIBcJtXQI3qlvEeWBsdV\nDXms5VRuEECiH8NOx+Qpm9XLujG3nIkD+F7+X7+apPl9gJglP/O6qePfeOcF\n5Bklmypv1Str1MDOLoolgPOY66oau2tEBUGmYfGVBcaWDyZ4rA7R/j2nHXPM\ntvki/XnastKmr01+9CD3R18TAi5fVItRV1D/6YMTzmQbOO+sazx8GQKMkHyS\n1CFc8G9pE27HQkfzTNY/oElSRnW0CPFDjGFZQ8NJWnIO4PxXc97QOdokt/KZ\nyFlSwt9tqv3MtZQvpOhxxhnstHxu1AUkpCshkKOfEshH/MytaD5U1RxbPHZN\nKFX3tOgh2aC6MxgbiTgCzjuYcOb9ys+sw+t4kATtpQc/Sxf6uNyoqmhRKk4g\nLyjhkQUdyIE4SyU4m64AasrwU79DWppjWtoOKnmwX3yHvGPrPWRhLfdgD6y3\nXhQpKmET9n1GjX7UJ/rNOO+LZhV3k44PVlNzkzfZlHS9/CvYPyw1G+YkYUfD\nm4xHkDHfW0kX/irs0NoMFP9PYSw84KauEo7vvD+2HoCXo4gD3sNofzFiGlQO\nUk+TF07taETm/iHCjjVn24qGzq/NcsRJbQ+feDQyqCXljXKQLEIFEiqFwSs6\nLM4Y/tJLs03FVY+yGZfrDoS4i8mtyglMkTd+UrP7GwUW0HdCfYR3O14CoiWb\nc0zH\r\n=8NpV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSRZJfUH25MUgJkUGNhtmQXwKZLQCsrm5Xd051bithUwIhAMYNxf7pYM9nRCwjjWwNxTLjo8uTjANdaX5GMy2WPyig"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.1-next-1593444160-67f3495a.0_1593444363021_0.5856734129891081"},"_hasShrinkwrap":false},"1.37.0":{"name":"@xdn/prefetch","version":"1.37.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.37.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-dOf18AqQNITQerVHHutWTXQu7p5M066hkazNi8f3R/WJQNeA3pN1OmNQRIUS+bqK6D/K6A+q8uSXgGnGrKF8Ag==","shasum":"2889ad70fb56694d40d613675d8072d811307ba0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.0.tgz","fileCount":46,"unpackedSize":80729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+gnBCRA9TVsSAnZWagAAcoYQAJ+95JN57BNbXDzf4+h0\nox+Ufq3TBTvkP9BhBIbftrJXnWfpvXMk7nG5F8RA3yEn3ifeLiu2d5TJCJeg\nflSsRzNEJp9jFOEoy0nmF3EiSKIqIQaRHtqc6acAPOeBOUNUpFDjLji+Hz8b\nzLM6I/LOm48Hqyo/KanCdOk1yR3rX1CN+y7GTkev8cyuVFanC6HJWD7AOdbM\nNP0xvwucmZ7CX3Ic3PNCciWxEj7noEskVVaPgN+B69JCkdNvx17Za5nNWABw\n0k7LULDFkBPTTKrU80mbXxu30VM8kUMWY6lr73eslDKon+xDrwGCmqNNQMKv\nD89ahI13qfSSqKp/8KGZcpskHMOrVFcELRQJyOtT/ki8/uU9LM7dhUDrg7Je\nhvHi5kzs+Gq87kqpadltW7FEXm8nqnziyRePxHi52MMza/X72kihNeogYqTS\n7H8NZ0us9B6Jpw8vVDumVuyMu3kkNj5vwo1ubZWXunE5I0IGDMMnXhprEfqz\nb/8ehFdsQHzojLDSWjr6hS+nluMasem1Y8msKMKZP969u8c55TrnhDTp5Syr\n5WEOzUvIiThSBJpgchegZB7RcOVr/L8JjQ6giZDE5Lnyst/upr9jkGnf14uD\nVVHH3yIekWWUFnD9uuK+/IT5jtd/7EMMA8sIgEoLQq8wTLri1vz9kcEU7Jsm\n05Jn\r\n=pXXN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7/AiWbBJwEHr3OVFOnxbf9AdfEMsVfeNEWe2VP5zczwIgN/RU2rXhQhuCCiPS88bCOQ56jKsGusHtBvIh8iGpX+0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.0_1593444801292_0.9317770635810652"},"_hasShrinkwrap":false},"1.37.1-next-1593527079-fd512ae5.0":{"name":"@xdn/prefetch","version":"1.37.1-next-1593527079-fd512ae5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.1-next-1593527079-fd512ae5.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-reqITaXklYj3mFiATccdl8BzI4jiIn3sH5l7zsKBGbVzB3qdlluVM+OeLLUoL6mt8dPOHEas8DlC6sT+ty5zQw==","shasum":"75fd8335c738f33ee732710fd3bb8fa38dd79c2a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.1-next-1593527079-fd512ae5.0.tgz","fileCount":46,"unpackedSize":81712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+0vTCRA9TVsSAnZWagAApwQP/2kreNFXO5v8aF06A86U\nO5FJuNZPVq6dqRKpvBH+aJH17PvHyClr4wVw1wTGVXv85DBUD/wygRzm0YWK\n7FG9vE+tT4ZR0A0HVZdtwXlbWX+7zv6Ci+HHehrB/R/9MMuadhCglMPu8yXE\neRlvGVgaTKr66ds0u9Dc8+AyHk44w8PZV61+8qbiO8JZ0Hc/0CDplIWAQF4p\ni6ypkShvVOZ0ljDGCiHxFWVXZhAkfHmOg6fiUi7kpNaJ+c/IPuLtFETKP7iZ\nz8TOeEHHJZHVtlr2mwMuYK6sTtafZEJsTbIMcAHkjPax39VR7RAnV45Yw+jF\nlKsFDxNPrWB4g4OCC2HeYW+W5agH65pj/d+XkphJt0DRetYW651e2vnbP5VT\nPYpGlqC5nVxMAFIQ78yPshYZw49x0nP1Yb8xkfzZUpcU97rb6WuaLx/9YNjz\nYENu6MTDdFZY0OieNgu1y7X2+cOgXIX+JJhrRYeSy62nzksrBY5iwWfI4NFe\n/+RjFQPHu5eoXMT1YY0L1CWepYjYBN8pCH00KydRwOWQAZzQqx86BDMqVs22\nEsSJCZ4jszelwR0isnDzdch8BXZW7Bpir7Njyl05VbPj+pUhVppfx9AzVwaG\nI2sZLKwst69+0Af5fljTUx5h4/3Vju4ivlPsLfo90tRaUkAEr+KGNyfxGzKg\ndVC6\r\n=VEaW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFR0hWdxaHIQkExUFKgMjwiiF4ZrL1L9EPQZ49so9VVUAiEA4cA8/2FObHpaA2WUZpO76+99bFTiALJrvYTeLFC7b0Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.1-next-1593527079-fd512ae5.0_1593527251329_0.1590787632456656"},"_hasShrinkwrap":false},"1.37.1-next-1594032190-b01bdd5a.0":{"name":"@xdn/prefetch","version":"1.37.1-next-1594032190-b01bdd5a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.1-next-1594032190-b01bdd5a.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QL7kW6RoZx7OOfgKiG7OeA/iNGTlzK6czaCV5qtJO8HsSNZjTvFHo4TakgM+HX2EqbdPh4sgKzbTKCG78+FL2A==","shasum":"ef2189dc949aa626c62de0e114b7a2f2699237b8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.1-next-1594032190-b01bdd5a.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAwDwCRA9TVsSAnZWagAAoIMP/R1SsD3V5xZMAZvW5wMP\naLXPEIswOvQqFgthbXLcqI/lnooOOCcFNh8wexaNSFqVI8O7BPl3rdoPIgXO\n5XAY024IhinmaG1w+QXNTTBjsEYCK3vS5uCU24+p3DvMgqnZEGvbcO/ukVv4\n3w0bo2DPypSFsjaNlb9xn2HDl3jl6CV+Fy9IETULmNHTZ4ceeboe37caKtZb\nNHwqDBhmhsmsSK1hivJu4YN4QHtKu/ups915y3tganjXMBNWRYP6hLgyAidL\ndtiTfCyocdKVHs2t4EYdroQqAOjehPRqI0lT7q7eRCNsbwc8UD86i08mmuzB\nYNan4XvSMZ3cI54XFhpj7ezoG0UCKnlU720odbAIJS+kSBbfOFg+N/DWP7iS\ntGW8Cbc/jtGQOcigg1tAP2cTE4ssg7rEKXlvvztT1NVELHISFXNxGdkG5Z0L\nGIc7Q+YBB5bTSFx7Xr9ff7LaJ5hVz8+oykle8NzLOT83V1cNoH7eRvGSDnzl\nYaIpWbcnzzsbw8HKa+bSsuipfZVW30jrVEHpZw+Ut5t1PQEFWwaY59CNLtKI\n2c7OGvmBJHzjMFpFDhZ59LnfhFc+7eQ8kOARqHeA1ONFGLIuRIY05c4V0KTi\na3QEH2dt9BrscV4a8iOrUJL83cbfbvsIxyyD27WVwSqn4PJMak5dGbxnPXJ0\nBYgP\r\n=iwYG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQvNs4/4qcvTA0l3nm6PDCu0M0T/6EQRm04kVuel4kxAIgP/hVSRg7ZkqLpL9vo4ylixD3MeJDdQhbDUwdX//86xM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.1-next-1594032190-b01bdd5a.0_1594032368523_0.06830479304317172"},"_hasShrinkwrap":false},"2.0.0-alpha.0":{"name":"@xdn/prefetch","version":"2.0.0-alpha.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.0.0-alpha.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-vnGT3vahem7AXOPBfi9v5CSSG5KEzIOb8G1deo8SjduZi3EI9tkxqaTCFWP7On000nT1YEyOq0fLebVEHrzn+Q==","shasum":"efef4bd629634cf192c1e0ad435ea25fdac40f18","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.0-alpha.0.tgz","fileCount":46,"unpackedSize":81692,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAw6QCRA9TVsSAnZWagAA+W8P/RPtJ4O3e4x+g8BS2Esm\nkiIjYY2SvTTW2t7f6FzLLnT9FnhwKdRW8v5I4cqs82sfeIdrnAbh/E2f/UDn\nURtHi0b9A1scXzmV5cmcmFG0xtZDjToHiX3DsjySa1CCwsNhL5rUSsYyVXjg\nfsVlf+Xt9IxFg8BHALbN/9WCkGztA8NQ+dgdUNW58lnbVk/C4EuhzIy2tIIG\n5x/yaT5CAp6vHI8dQssVBcY1rYWvT5jFphUNb1DFCsZ4To9NpVprO+OweCV2\nuCNCYC5O6FRpetZF5DF5x/rrWLX7ThxCiSKCC0Aqlfq28SzFRaF1bPCnFpHT\nQm7eAV65f05LY40P4gWQ1qhb6TnFNqxk2hW8537OxjUIjBJnUUXnc/BBk+Br\n/Xy2qsh3ZPA33EqAs+geUzWgRhPgpTANoRGADzTDjOc45wwxgaerxZL2djXT\n+Kv55JNbCcMY/zP21JRARa3R8W8FNUB3PvABKoWjiGP9ctdZ3t0LvXbtki/S\nfJ8uSmKtwPQe0KLHY/55PxqIo9AlLFJLgAkMOO2a20Miv05EWbunrFkRpeyJ\nHyGoZ/zdaDg7rEbkePcYtp/yJvHC7Df0zsLzZOrcCiiyctM3x/rl6SOMPVTA\nJ/bFTKFkk5uxc0XvxAVUCTF3D2IcM2kT2Im/RIU68nMhBGxoVLshfBFFMZK6\nRfnS\r\n=Jlti\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbyPzeQvTf4kfPRFxiK7LR7q+jVecz81XpY0r9Kitu6QIgPYLMPcJpD85f+VDW/lrYMgO7WnO4J/xIPFUUU85VeA4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.0-alpha.0_1594035856277_0.9234194214228078"},"_hasShrinkwrap":false},"1.37.1-next-1594042055-f7fb2c43.0":{"name":"@xdn/prefetch","version":"1.37.1-next-1594042055-f7fb2c43.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.1-next-1594042055-f7fb2c43.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-/JsywgBu6Fftlf1O4Ywmjxly50Mx/zENvvAeADV6clJdbAZkUdIfclEWkRUJYBQLmhEeTJTy3VcH8uZ1t9N3Eg==","shasum":"a8da94de12d527d017859ce2efd41843053cb2fc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.1-next-1594042055-f7fb2c43.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAydxCRA9TVsSAnZWagAA8e4P/2qhZnlkOky6FOMBCC+3\nIlkelw4myzHvPBGZ7aqM5DPlvJxkfmiL03L8BiuEsrkGq6WjDR8l62LwLNIx\nmMXP/KpZ+nNM0bIz5CgnJliyYVokq0A8yq+SDa93/k+WE+jd89/Uz1dXlHz1\nrQa+CbuTvpJU/o5WEh5vEf9CfV+ytxqXiSSwj828jCFd0mGFP2FusgQjJasi\n5ViPDlnOqL3ZFzekbro5jbrijM4taecM+f+gKNKcYSNF7x/4LEULwaTsHnbH\n4KNABb7ql2uAAFKYTr1CPJLQZ2ihqoGlcGYwAf31ItyBTdFieCIQ0x/Mdi+Y\nqTJ9rtOCk8lO6YNiBTNpBsNNRO+pOgXeHbGUFSWpgsW5ZUID0sbhqI3v6yRq\ng0LMEbwe0u6oPmRL/B9qLtYVg2VGwuWAXCBo1DYxi9K4PojBCKhgHWiY9dJF\ntsBCKwBViFP6Yz7/tlt/40ybDqZMWDnfD92ZvvUDpWXT/Pxs35xtSzyCMMaH\nRmGU2RWKeXXXx8rTAEbN34zKyc85QfG/dWSi/BkjbP12asr52pd0l57/uEG2\nB7aMkR13AWPUN6c/BwmV34aKq+GKx6W2DnmVPgtf7/2CDtq21CoBkfPdZZxB\nvxTXYcIQhHP519HETkzQTrofYjDJ+NLBscMWdruWY+lmTpM73g4xgGG+zXUL\nMv0W\r\n=QE0b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyI6MFzIWvrkGa+btJ2hW43qXIYLVRDJwqnsp3g9O9FwIhAJkl6rjc05SIvC73vD5zLcu+HOB5Ju6vPBM69p03UnQn"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.1-next-1594042055-f7fb2c43.0_1594042225066_0.14139029433994943"},"_hasShrinkwrap":false},"1.37.1-next-1594042844-211acf27.0":{"name":"@xdn/prefetch","version":"1.37.1-next-1594042844-211acf27.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.1-next-1594042844-211acf27.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ZCbDxQU4MZSWLcSzjShI52iE8i9SlQMo6v80mxrXKPH8Eng5cpNdSkTX4KWx752SxZuteXIYT0VaMZJVuweHiw==","shasum":"11c86a8d0cd5df8f0df8bc0f44e0e55864b12261","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.1-next-1594042844-211acf27.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAyqDCRA9TVsSAnZWagAAPS0P/20y2IxS2zZv+9M6USlk\n9k+wBvabTBf6w6qt0RNNjR6ZmmhiHkjYivfH1m2JsaWqKxytmESywfi1GKtI\nwBnMElUw43m/vqc96qgePLDvlmklT2RPzkEM5IBRnJnadWTqeKYMymID6/q4\nywFv1XvrfGo6uGo+nyY1oqi09BgC0LSwmclWTHQLcrcFzG5mF5/6fH2jfWx4\nz3r6Q+WVGxiYHkE8F0gLvtk2fm9veQ1fHeQ39WXNAwKmr7Ri5uxBPvJ1KzR2\nM0KiE3aXb3/e7tXD4InEb92H6629vgFIyfo5wYGGvB86hqyMWG0QEqKS8w5B\n7P/4CzR0cprutYfou8oWxXk9ZAnOokjiUH2dpFuw4L7Y7Oc89XFkjo85+yyG\nKZ4wHckyvxPlhrKxDXW2PQ7ZN+y+zPWb1xjhtTCc0sAOwX0MBkywKqTeDPpc\nvVu/qg6x5LYflU9K9Tg1YvVy3lSjUgw+KY0kU3vDvjoS7auCF5HwkJpvpZS4\n6vtHJZhvX7Zg9GYM+BnJbobUmuIHCln1O21W7y4vf69r/4EBi7Mo2dLBk0sg\njuk5nfpbAegJYkwr+CUNPLRI8E0HkQEf2FWDog5CAp0HuKvXy/HH315owaIH\nQUpLKg+NeOvBGZGzReuTY/kdepgBPRCqSLEeT97vck+cnHggQBlUuiZUrOP+\nI2F+\r\n=KeSD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGiTqb8uOe5Q2WXIyZqrBqJ9s5jRQo6wyOyEDmmrP5kHAiEA2+QbpG4tWTNvPMfQpTz52FO0Unwd+YcnHQ0n2d04YO8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.1-next-1594042844-211acf27.0_1594043011095_0.9183551359896454"},"_hasShrinkwrap":false},"1.37.2-next-1594042958-931b56e8.0":{"name":"@xdn/prefetch","version":"1.37.2-next-1594042958-931b56e8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.2-next-1594042958-931b56e8.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-197Xu5YxXtWbzPlB0C98hRm4fyNbT6WhD3oh9FSYGQ5//M3oQHgTv/ljeoQyz5xxJPWGcclGZgd4yJZ9UNQaxQ==","shasum":"e7bcbec4537c92ed07aa1f75a182314e0a2053e4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.2-next-1594042958-931b56e8.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAysFCRA9TVsSAnZWagAArAEP+gKGAqoMmpHSHKHhERuS\n96nOrzqQiDB6LRsKEItCR0IB0EynISCoTKk7+ohrLWqJLRga0pV3HrYj1Rsi\nlV1vl+WZ/ZYJsd4rS5WQz429Ow8Hsii6TNX7e5FpP7cbaYHZU9m2HkQ0Zimc\neuZ1RHKLleAgpcndGobHKWYcC2kTve+tELtUkJdgBwqB3+ifyewEim8JchQw\nlqzIiApo1HnrgzktKz4qZ/jY74yIXFzGsf4cNf812elTpFUNPEQ90QjOUjAN\n4G7NlzR0yLPD29Nn3nvMtq/a5+7MnMgnjrO9B1+b782crGb8UDwcUtAnzQFz\nx+JRhhzny7Ggm4j/8PYoxSLn/jeC6o5yAUmjztIzX0N6WLrHQPbTrJsegOBS\ntNHt2tcMwmgTaOppVhO3GKFgLwJv+m6vsIUIzNJJRvYUe+QGV0hQLWqxWqKr\n89++oRSlPWK0E1QZR2a79Vm1SmtEpJfeJl465uGrHB/rvuG1qhY5AnoQh+IU\nl7qpfIGgGE2SylKFvPQ9qmz7NmeYvhn/e0f1q/fyzFDBk+yEONfC/UVJD1W9\nq9GQqvA7nl2TEvVYDnXggDN6iMohK9i597VpLTvjiA/Ko9/qrm+Wxi43Z2UX\nUd4TGdK50bKNaIyePyepUzWi5uC/GdX39u5n2CtdMjsFRYD6KBIwz5Oj6TGe\ncI9m\r\n=zPz1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA5K9iPbetEYRJ6j1X+qKfEwUZFPy/A+Z+O/XAGKOkiGAiAhi7bsvwsjHtI1Pt/sFlV374yJXgUk/dWvmQCmZ3yWXw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.2-next-1594042958-931b56e8.0_1594043140601_0.8522781961634891"},"_hasShrinkwrap":false},"1.37.1":{"name":"@xdn/prefetch","version":"1.37.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.37.1","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-AfYcIRl3Hj/5hgTKWHjj26pLkXLnZGUhs+9ZEsWuN6PcDjn0BthT1zW2J2ogUBkA+0rFTckXPqSg3HzC6oZjpA==","shasum":"c52f30f86416eb442a4c71f3ddf3903b7cda083f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.1.tgz","fileCount":46,"unpackedSize":78166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAyuDCRA9TVsSAnZWagAA8uAP/1FSoim4inuRY2f8wXmv\n3uuRzUHuua0lTMA+vqMjjFIseh5/Awu59v6e8Xir7gAywjbgtdoPV71KPpbG\nvO99k8gFQE48qfkNGpnQBDuHd0HB/s3sNbSqtLEiAJyE0sGaa3YEpIGyCdEH\nI9ELi3QJtkwgzfoX0UdWXzTgCIvhBlcg55Gd33W9a0XNzd30n4uiyv9bF8B3\nqU4V3RGuPodij2wraNDnjpZX9hM1mnERqKCXOXo7nfZFQDHRjGZl1kYkAgx3\naM9FGat9nx0EHZZILLo+f/ZnWoVTZicNg+64ROCRa10fmNDxWA43UME27DHr\ndfdkzrDTD0nsk+1wRzB9ekt7edm4m6kEivlfpy2YiMB/FM6TlC1gpu30HRGZ\nPuktYBohwMWCS6HMykff3QhgklindogB+nVnrNRP/dLx//x/CxkhNallb2Zq\nknW/7+Z3zsEuh27e9th5Z9AHVR+ypqFlVCL28aTkP7bTpfW5w9s9jyJTQcMU\n6zuK5xFR9L61L3UEckdXDqGdjUaC+AOSuxeXxLrq/bwv9S12gg8Pd2EOmYP/\nZE1faRXX0J07nUB1QXphhw8OCDejBkd/6JbPNfkBfSKJWKHv71boMStzNPXO\nOb3lxB9vyoi+FD6bKzJOnHMhQPf8Mm29AXay7QBokAeLorRnhAr//kkvy/Qg\nu0X6\r\n=0tm4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCykmaplyDohJKM0RCKSnRPBbvqapLmjTuXngFYwuYXPgIgXbTpEZcpGFYxOwVvLle+UmAotXkfhJwCIEQ8D8ghXDM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.1_1594043266783_0.23333927728866444"},"_hasShrinkwrap":false},"1.37.1-next-1594111137-d6339112.0":{"name":"@xdn/prefetch","version":"1.37.1-next-1594111137-d6339112.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.1-next-1594111137-d6339112.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-IuPh+HFwX83Wf4/MEgXLU3WC5osrNNHnGwG3by9DX/pFIis3mTYAdIo0mo9f4aPZuI/WoUaqWnalrHoiO0HWKg==","shasum":"a4562072cf3be97199450780c9bb01bba2dd8bcf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.1-next-1594111137-d6339112.0.tgz","fileCount":46,"unpackedSize":80756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBDVJCRA9TVsSAnZWagAAWucP/1e/BhhcZHGBpr9QyO0e\nysf9seP84o8hchwAlEmoQa2MEUCcigpUe3CYsDtA4mubvOzQ5bmcd73krK0M\nQ6iKUj6GJ0cws55VimzelLqjNLAVGnApcILfhZ1n78eHWt2txxYPGF7yCR8Z\nFuJMCYVGPtlYBAeRS15bN75YNCeI09hBvb6awBJ+VRIKuFaHnWICe1EjL5Cn\nAOVVcFgCQhB0O0S4HHslttj3vgdtpbsilt2ikP5F3oQW+/CH0CsD1VLqWPcq\nr++EguFPI40jW8CxDdO9X/43b4o2C58qOmKnmzBHh6g7Eejt4NMcud2J7HCB\nCWeD5BC4kLo/DChkix6pP7VkwKaCrmL3CmOZxxePP2j8R4hBGekp7852SSrb\nIcXvZjfAHSxmr/YzyFNavEvHbIpsrq3swKT+c86+j+EpwKzlk8+393QOgSmm\nF93a0n+McC91/jSfrOx0d4E3Qnq2EpRkQT447snlGCd+ZsiTg1gG2pHTAWOm\niYbLS+bCr1Hle/ySABtyx7nqFfXpLC7eS+hc1Tytp93371kU9NW7+DvqDJKO\nAhiVktwJFukMAMQA425YroGC9h2L51Fi6SLgFOVFN9Agrjp7/mTOXZGBwhSm\nG1Xoe+8AgK3/yI6iZEl8I2GneRpFeUz3hR2E7wPsshA+0TryEX/Ouo5+ENUy\nctOP\r\n=zM3e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGHWJmBrh8lekt27cBiad3JFpi5cOnXy/R17Y4bHN12WAiEAsrkn/tGun9oeD6sGCcMr/mwHz5wO3mCupcy4OeSrX5s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.1-next-1594111137-d6339112.0_1594111304838_0.3969963151591658"},"_hasShrinkwrap":false},"2.0.0-alpha.1":{"name":"@xdn/prefetch","version":"2.0.0-alpha.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.0.0-alpha.1","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-4m+O+NbZfqhohJ/QB4Ca2T/6aAOQAjFWOLv3G6g5vofp+Q/oe65FIsX5b7Ib8h+DOpoD2GxynyBmTIcmHx+d2A==","shasum":"41639d04aa7cf86810a4ed89e97011b3dc9fa17f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.0-alpha.1.tgz","fileCount":46,"unpackedSize":77740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBahbCRA9TVsSAnZWagAA8c8P/11XxpUJbcM56oSIbJi7\nqiGmUEuSI1/plJkyr3wE8CXliRTYzxKR3CZhvceRPJ3LibmG8mA0xjizuluo\nNv12Ks4zbkpTt3Q70eHQRLMF8Wlw9fy9lnbbN+GGsLe4AMnQNwHQQ4b6fpaB\nIolh6P+AXaxSS7IHXdZ7XE9lTXjm/9uL/3AYOh9Gu2/sVEwD0Lo0I44RicGp\n06wHA2SdIkFUj7wBk/upFLVz4RXuzdNybKzETJQg6m+5dLOEwE1WqMDEWFDV\nIoFHcPg23X53jKloJ5Ox3drPbNk+QmyaxIaS0UyNNop6OdxDIOmXSKgP8HJ4\n5cmRZufib4VjdqdA9sd4RcZZFcZCBSY2EbQfR/eZ+nFT6MK3NQ+6OeGl9rkC\nhG+8Hkpe9N86NCVM2ujuGl7TP7CAyZsOFh7PZ8gRD7jv4XxGcOhBetovNkuW\nyDCXzbs4vacAXp0HEC6IjwaidNu/cQ7hZo1rgHhYjxX70ANAtSoPPvHWpcY3\n4a8XNjgPH454ygIJCg1+GUYN0LezpwiNsfg7C9uf04O5lsHIf87a3pp3c/24\nBjBrnSt4EJ3A3KwdXc9xOcVWIe4GY2MHIKqBWLvrRo1sHKCFvslsjhZgiQ/b\nNozt38JVvA1jPp0sA1DCvlU8SIN77Y8mIgR9LyZWUDUvo2ti/uBTXCrpOlGS\nagyc\r\n=wTsp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLWMD+i1rb0m16socWycqQ7YWbga6Rv6HcfRCvoBB62wIgKV0pbqcpFjNQsC25gVHjhva57Wnc/3Ut9jVbZgaLe8E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.0-alpha.1_1594206299178_0.0713920512582944"},"_hasShrinkwrap":false},"1.37.2-next-1594231465-f4cbb7fb.0":{"name":"@xdn/prefetch","version":"1.37.2-next-1594231465-f4cbb7fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.2-next-1594231465-f4cbb7fb.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-l7/9VD+BEk5KktpAHkMHA9lnKJbxK13nlDriAgBlK/byIsDb7oCU6T2lBW58nNqVU2W2f+uD76ycFALNX5aUcw==","shasum":"1f24d213ceb9ad5da4b61a090cdbac8386776cfa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.2-next-1594231465-f4cbb7fb.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBgtgCRA9TVsSAnZWagAAmewP/2LBGprnd9ztaCkmj+ze\nCA1FsXtLwfebhR0U/SgQ+Rbtb2wN5X7TUKYVdsnsn5tKeHCD9wUsEtQH5NeY\nw2FLCsT5ZtA54tB0GWfDFhmczVI9iQxugeWishSrhyeS+zEJpGvmotBUy342\n0pBoLzku5VGF2/sGepNECRc4WdXJ199WaSK0IGfkkoJhRFdoNkFAKmzBWQgB\numAlBd2SaMOGpjtwFDWgStDREO4iD7oYEQ9wkdPkZVHyAEVWwgpuTWCK1Vc/\nkrFhF3Zj/8YqrK1fpGcE1DXZp7eMsJmz8CG37MG+ACnOHth8WWP67AI2bMVi\n4vuUSvdEbQYlqLZfPsrDrqAcOsJp4odqieuv4nfYXTL/FOopffZxvP04atvi\nTBHmmZaiDBIK1rGsHGTBgZ94cHxv+gTjcR1sgdXk5kFtUnFyY3ze67WpnHo7\n3YNwr61WZOKzBur9nak7YQ0d0tklzzzBet3iZUcCEXVqQ97R7ILS0B9PwhVT\n94jnXKsCNsP8KFiV6xctGG1xATRnQrkBf6rV225AguNdf/VeICE2lbn1hPjt\nz3mUUSfQJBnxT1/EwuDGmSUo46J24m8jKvur2jvhlLze0GS6jrc8UGPEN2Yx\nufrt6GpxzWBy+dVdIIenmkL7LzN5YV0pmqz5gkgM96fQfr+OOq/qXyXlT87p\nb8hS\r\n=oQGp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZeVtfq7JgOGyu08R9sfMTePUDRm2+C48WigWQe3Yu9AiEA+iEQe/Y3ZKjlMVxGQ8UBELfy8VZJG65/yNpFaTe0FTc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.2-next-1594231465-f4cbb7fb.0_1594231648011_0.921165496375197"},"_hasShrinkwrap":false},"1.37.2-next-1594232161-8a51cbd6.0":{"name":"@xdn/prefetch","version":"1.37.2-next-1594232161-8a51cbd6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.2-next-1594232161-8a51cbd6.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-8RUgiQrCHK7XpD0iuJtqJ80HUi66MvZMBrrmp9/8VrUguYca0+bN19o13Ycdrm+DoBgCIB10egEovXfGrzFl1g==","shasum":"812e3b2b3d5f55818c238ae3113ea8720d693d5a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.2-next-1594232161-8a51cbd6.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBg4OCRA9TVsSAnZWagAAoBgQAIBAiUhlC0AEZIMk9NHI\n5Y5VuV7TSFRe8soQdJnF+/yVtq2aGLBAVaLo3UZA4MXdIFXTtyBiNj+hdRMI\n4z3BlstJCWyRxi2PcqGIFGQpGa1peIlLV3Ahfa4vqbzVauKWrIP4so3ND9Ye\ngf9e4GGRtHK5VWuBEB2sdvvi3zudL8GzHIJwNYlMQ7BxMvOYv8zBdiJqLQnX\ntXXpSECTLQAC0Tmhu45pkZ9j3aFE47FTAr8VtZqJIvyen2prHONXG41fmf0t\nX9rcyRNtPnylCR1KckrnZvXo1iSCd4qx8X0mpKeRtrf37cbF8xbUW1dmJF+x\nlfBmx0/iakrtprh1tIOn/ZmDDFdtK2dompcnbD0dVeqF/EU4cdRMhBa91ueJ\nhdP9mDTGMYwYs3JZmFqhOFykii0f3vBwC+Pc6Ud9wELEd2ucbqvvKVrVILjX\n5QISdQ4xC/kgHd/endLZLTkkleiFCkbGX8KdIRtC6f0XmTzqZ85yDIrv5bzW\nChbSYKz0ONfyCwA5FsfzK8l3GrBhWHR9wdLfOCCfJdxHB2amsvXTcYmApYlj\nwx75NEcNLgLaVhfP5Rw5HqYHi1WvBcL+7SNxx5TsOSLsfilwHBgI3PvWP0d3\nVoWIWGyIyw2m7osi8+hl5jGA4NkqPsJtYnZpep8VbE9MsVjDHhCnlp5rrbiD\nSEqZ\r\n=ikuE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBmAT+QfveDz880rTY97Zi7AAawY5zGFWoFx1FOXm+KbAiAnUdx+sDb3HJdsXqNkgQkCZjZfSs2+XQB6GvU2cwFiaQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.2-next-1594232161-8a51cbd6.0_1594232334140_0.293796955802895"},"_hasShrinkwrap":false},"1.37.2-next-1594232564-8a51cbd6.0":{"name":"@xdn/prefetch","version":"1.37.2-next-1594232564-8a51cbd6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.2-next-1594232564-8a51cbd6.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-nv9BoDdtYA09fPnrmSG9U4kse53Y2PfiTfAlQxhRfWkMdS2rhoBd3Zpi3iUZAekabrbIAJE8Wp2zAs9tmBkJTg==","shasum":"6eadb7e61b86cd7204e41559fb985c19e3037dd9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.2-next-1594232564-8a51cbd6.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBg/FCRA9TVsSAnZWagAA6u8P/0RPZh0D6jelh6MfoIae\nkWNRnSrHJADVsupwov3xjcKS/QCE9hWxaY58ahGAsAaIW2wlvtPdwbDjI4KV\nRgXf2BxPQ1GortIX/FUfJnZCG/+1U6TOiaqTzaxxOjLup95tECn34TVoS5dM\nBq3kUMkn+HOHkhYLEhT6T5INjsTgAcoimZ5AzRm25AQUTDwq9NhACtUM8TRd\ny5vGul3YKTOAHVVfRijdf9V672GVWBe8KasjNHexmMGeVRTtnyGSxvYIoU/0\n9ALTbTTNyCIuEayuPZlm2Z5KtbeWdLfswUwthsSrW6h0VVRBqNYcVq6TLdgk\naE5a1h1Vp7qCPqHm1Q5knVVq7Xp2+Y9QGhiJv3KZ5+T7HCMkrrsdPi+vvvru\n2wzXrEoZaARiDiJBxgyng42xMk/T01Kgh7nTvKXkiYnqvV4gc9SiqFbFOT1s\nwkKqvHgtv43Xn+ZMIVt7/7R06pIcnrCZVO1XKIP4x4OmdKw9tL+zj8G0Xw3P\nkoVEP5ZEeZA5sjXcr80fI+m1ucm3ISpHcloq2YbMlmN+rh7ZtoCfvfdgC7yl\nWk5i2R495OLyQBE46C2pYF08iV2jtwbYfz/hhe4BAurmMQc0wz/RfpVEy1/w\nW0OSrLcMGCXKpaANaM35KZN1KYvyyQtnZdW1N9L535UZAQeupJ4+VFt3WXAm\nWnIs\r\n=Kd4i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIALfkjxZp7qKK9feGTzyu+XopKJfIXa7fbKb7GyLFmixAiEAv22pFsexDZMkWcxX8OaYFKrTWzs9vM9WNW1frHq8teA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.2-next-1594232564-8a51cbd6.0_1594232772711_0.458603500136187"},"_hasShrinkwrap":false},"1.37.2-next-1594282725-6cbe6484.0":{"name":"@xdn/prefetch","version":"1.37.2-next-1594282725-6cbe6484.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.2-next-1594282725-6cbe6484.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-cL5Zi5KRbYRjXovi1hm7W5pn6SZkZJFSYDOT5x3eOaIbCNK3TYKlGTFim4U07jp1fzGvphW2EtsbQQSFPdz15g==","shasum":"81cc495ae46caf2b2933d555b836cad2d4c2bc19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.2-next-1594282725-6cbe6484.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBtOTCRA9TVsSAnZWagAA5j0P/jkDHp0eHYwORRKz1tOQ\nBTd8neA4cFTN/0JyKH0WpoFwQnhRLqbK7N47NBtSg/ZvHCDw1ijJ8tL8p3op\nUfEZn5zSfYmkIhEmD1jxx9bJh7KdKpVTjdImK76uRvue+dTeS+Fo2a9xycEQ\neehzZnhJAPs39I7YZryeiKHw2tpyzBjqn11FbUJxNlydKD+1IibnXaCetGgS\nMY3iMrp88ceRlbsZ1W4Txy+E9mJundFTdx87vnRFDFG+pDvOmEfM/k+4eZtv\nRdZYPHijftXu3EcB67KxJxJfeibOaHfdoxjhomy3NTf/LKk6/Vv5+/6PlotS\n/eHQ9zp54FmHR9UzW/YiDHWUgFXWhxS6jFUaeqmjgw4G2r73W29p3y6xr7JF\np0ePL4DXe2zFi81Ikk/uB7juHrNN3dJDaHy8etbNbAd1Ne8rzixqJxsh5CyH\nvvFHcuN61ECuf6BgdHBMM6ZZEQPbTqRNmb/UhfQQ5KvVyYe2Nl/avZGUtUuU\ncD2TXcaCmimrolZT9LjWqJgk9Byhyvc6rHhs8bLIgARixle9yGeJaKIi9+f6\ny83PWN75+Io2p+V2q4hdtQd7h29yCa5jxqYMj5J4miWeTBLG/OiwpUHrtnXu\nt6tDlHSV0xcMRcMdk/xUdSAWZYYsP2EmIoCVG3goEwsQeRiNa0tyCICAGjRE\nGGJS\r\n=cHlW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfpEyz3kYzAYgOP+KsF98zMi+hbNc/dHFTszm3myIRTAIhAPor/Az44W2PyN/ML7ISMTd2buButo7klheC2aeJ3vh2"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.2-next-1594282725-6cbe6484.0_1594282899373_0.7420206874727153"},"_hasShrinkwrap":false},"1.37.2-next-1594283073-8a557557.0":{"name":"@xdn/prefetch","version":"1.37.2-next-1594283073-8a557557.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.2-next-1594283073-8a557557.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-WflK2hNBkrN8c07Jb4+JAvtKLJbWYsPjN1Au31koSgEkM7Aj8zzkxHhSy53uxCl/DWAyV292HtWFCjUqhYTkbA==","shasum":"a717903076343722be998d29677540e64dcd4463","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.2-next-1594283073-8a557557.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBtTuCRA9TVsSAnZWagAA3YAP/iHqae8XQvGiN14rD+Ii\naL6oK1GrUsVbGziS1H7q9IgzmHYsIEv2TA9lPfafCfD1Mg7Q+T5/GBR4tiXN\ndp6P/IoT5Mck90IduNx+Rmf4JCKx8voJNRALmLie6KUhbyox7F0YjFg3hnzk\nuqyB9AfmtzHbz+JunrcD4jNd6Y+c8P2+Mxc02Axj5aj9C7lDJYcSqtPbkhbI\n1tCUfZdUPn0PPkgZdm1Np+lad01Ff0VIYtAeyvazE26NAcu71E3lLbMOC61m\nehA+61F1IseTq6yNGJyppbg0yq4ENsp63YL+TmZ5qBBS+Q+QE6qgKfb49TDn\ntH7Vje463IpCGLNddRb3StrX05t2uRrmGPu5hE0Nn4xVCMYKwmLLPHfl8Dm2\nv6zUVs3LuPwl+IPX2KUBnIu4zFfp7u0q76YE52FFEnSpOS1D0P1O/t7ejE2i\nhkEc4E79MWzATZ0OiVps+Gjifv/jlbO7cGLYT+5mKQ868lL1wthvzBbKJcDD\nneCz70bYp3EiMiGf+69T9OfX/3L5TUAdtMtrJ3HqZCtwREaYt75QRFZQZcYS\nglJFbJBGRBHUGXvYGS8OmNBY3+LIwfZi3NfD+SIbXmUjaksmHX6jNcUn9kyh\n5LjnfQ6lNqBbWW6BVmDqdUQXJN9xrqgU/7++l3Larr4S04w1W5ESuLZz6ifB\nGwGC\r\n=m56B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyXtpWgWXbf1615NBKf6124vY4w8a4lWBzlLek90th1wIgY7TPZ2xWEr/+H6bxJfBwRY05fwIB9YGhKaSnbR7QlcA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.2-next-1594283073-8a557557.0_1594283245654_0.27270678179464225"},"_hasShrinkwrap":false},"1.37.2-next-1594293976-19cc07b1.0":{"name":"@xdn/prefetch","version":"1.37.2-next-1594293976-19cc07b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.2-next-1594293976-19cc07b1.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-abad3BBr2ncRzjusgvNyQCjFS/6RqWzOwxboolH62WiiZ+7ddu7egvleqDzIEkxonBgWwnOStkunonhcj1yk2g==","shasum":"de8fa450fa6a03c5d268c3a3354eb16c29b0d6cf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.2-next-1594293976-19cc07b1.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBv+qCRA9TVsSAnZWagAA5SMP/2OCrItNgJ1tUWeOUDqw\n9zmRrkPaMarCW5iGSpdP4TKl9YEpGET+iBUqwQ+xYRNZdxaCnM04xb8rquli\n3/uH+1WlarKlLhN6IFjITVrlWaGupv8XcVHn89o9Zy+WzXXnQQFQyuwHxQCT\nr30Cs2+pnKlC2tsVf+X9wB6+6k2AxDPgu0SrBBrAqwC0xR1vHSBRMQXYPqdQ\n7E5sK4YQ8XShz0xVTk6+JiZvhQOzllVGVU8ds5IiQNx/GWj2B3ljisZQvVSd\n+w2JuAzlsBSe264mSlQraYXKF4/Ocl9SW6hstKy+10+WUSzgHtAQQBCglBwa\nVSUFAN7ZdI6dQSQjw84u6dn0j0gY9uZPHU5+D+WC8qImlAKPatqgivkUnHSn\nC1FDpuRa9ljEKUW4YrhLcefSJ9E/JuZXaC3/T/SORnsAgtZGMOr8WClyOBQU\niR1a+0B0zgbsR/ElzUBKJjBZTbqP8CRxJMPG5D1UJyxcjGXLw2lKSd3HrjWO\nSAVeFVcRuaE/SV4mQ6eazHMB3/NDd1jrMSoeKfwyriA9++iYjvcV3042fYy7\njMqUTFSNzXccT2BQ6R7+jYXqBhDtmCMVvtSjdaUaSHM4tAeF5FGLDfRFLOND\nf+FAaltl+/3pLqQufW2OrQWi6uh0e9qG8iOGgXkN9d0yj7Ezo4d9FapgyDvj\nwXkB\r\n=qUVI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLujG53Ml3CysQXmAcalcYjgMjmhNNf+WpOHUMgw0zhAIhAKXiEVXNeXPWWsGv9bmGXRbW42s59F19XklpOQFjbvDp"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.2-next-1594293976-19cc07b1.0_1594294186003_0.5979750460276818"},"_hasShrinkwrap":false},"1.37.2-next-1594294015-b2927c66.0":{"name":"@xdn/prefetch","version":"1.37.2-next-1594294015-b2927c66.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.2-next-1594294015-b2927c66.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-WoF087J5xdcJLCAhfbzSIsL5KOc89U6jBZVQ5B72y5QZ0Jr3YcQlkj4qeZ7soIzJn89UfYZJO2z5+N+JXxf43w==","shasum":"5039b794247d21e90ce88f073db2c3f8106ff5c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.2-next-1594294015-b2927c66.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBv/NCRA9TVsSAnZWagAABKQQAI1tKBQqq1qkKHL25AWH\ngCFy28HzHkmMTFNwR7jV7PV1ldzkwboSo+X7NSEs29Oj56r35oLRP0jHYDN9\nAIFuaFKLtqcHz0buU+HN6+MdlH7wEouwx/lpAY4onpUq9LwPhjvmbriMBoqT\nvNqihQ8qKlL2fSD51r8LGGG9Vy1EsDdfPFdoCyzhgqFjmGFLh2azGPYaYybr\nJd+zom21ZA5SBaf2GH5M7WFC60QVXBk7i6e4xTJjBkmhUyZN3Mtd1sgME9rZ\njK95snJNS2N274wymKo76sMTRle37Bzipx1PV0o+w8Qfp255EnxjnS9ccphE\n/C9zb7OA9qukTvSasWSg50cv38gYHlNaFr59fQJBGyq99LNg9OGCOGeuoM8F\n+uqmhMShbvkIDew7qb7dl+upQaSrzyHRhdFTmPCGGI5wKZM3Fwc9s+0F1rDe\nAfTKuhNeElhB2z7QLEL9/k37OB55zVBZuFVNYvQg37/RJTtIbLivhQ26Z9KO\nRYfeFj75STU6YNtU4rf7AZ74seVSS8ld4Rie8qXeNobgxJl7pSQBO773Iv4d\nEcDthwRK+wz+Q8h7JfkF2x86M0X6cHqPpLHj7gp+FlFRiOC5ufdKusGUHQHy\n8bSHN0uOZFp72SBkar2sAmi4JwiscU3Or1usi9+ppfdo2XR2m2it3H66ABam\nYeYs\r\n=q6s9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzpeF0Wd8vJX+r23TNYlqq+Zg/eQFCbCVARaSOmjoxAQIgffXznWxYTS/4gJRfnMR9p8PeG4/ScG88X6efzXCryIs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.2-next-1594294015-b2927c66.0_1594294220993_0.4917751305138023"},"_hasShrinkwrap":false},"1.37.2-next-1594294994-a97cd941.0":{"name":"@xdn/prefetch","version":"1.37.2-next-1594294994-a97cd941.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.37.2-next-1594294994-a97cd941.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-xHZ/Mx1Z9R6b3C0lHtNP6IOyf80QqkQ+e08apg0vpzx05xkH7rZVIrnVeGcgN/7nXoI9FKCfvE7QCzMwFi/ekA==","shasum":"7b5ae69e18cb4f4e6a8e96b8fed38297f50f9366","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.37.2-next-1594294994-a97cd941.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBwONCRA9TVsSAnZWagAAjWsP/3gm1khpFf1EIW62CI8R\nryfsh74D3lB8UF+5thKkG94/pY81R2t/7Fsczh11VJuMIDhJw0v9PeunDqnm\nphTH9yP2+xSE7XwJA0QPIGI3sFsRA2NGWzxj/gv+Zi1fsXxlH1zl7CmJ33z5\nktqp06DIg3VhsAvBgcK8g2+DjocMacJqduKih3eg+m7KpTfR2Dr9YgLJ+Yxi\n3o1+XpebErq7Chtw7Dv70HiteLngX0sQPyHYo8NjEuP7lZfzoAIDxdj8iJa/\nbvUUmSMiQM3vRvXjttlmzNaSBLdMcIEQT6DTC+H/yDZgdyJoXNoIxb701NmA\nbMsUNdIeVPi/n2LT+AGQSwGrl6EHV00Dagkzxfqwm3swAj+mOzLxuwOPV+GX\nfiRu4QYuHPrK+pK4/K/1hONqDfjnyDhB8onqpE66sfAMomLle1ZZ9rCmEcye\nhkvAki9/2m3uVmRNhUP8ocmu3cjuc+tuYnVBF7YinPZazKQxJBQ4CBzp8Tmi\nv0u7XgT5tlOODWkOzim3vwYpXz156vdL819ufyaepAdDJ3cMxo2nNskizI8q\nYWjVKEsorcelvnw/v277Z+BmzVBH0+xgh1CYCKMzANar/cAVQ+QXcnE2k6Io\n6BbSmgu5TPMamkozftVJWqdN4ycQOY5onsYgcbq7cS/K6u4gESXHH505WT2a\neuqD\r\n=YTqv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7FxEgkab3dkv2zgXDwJccffAhEnUcMZXqTXqy1wr6rAIgFW6AbZl2h3fGAcOtOS/stKL03GsQ4xDTB2eeDHKJZL4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.37.2-next-1594294994-a97cd941.0_1594295181374_0.9064546444820851"},"_hasShrinkwrap":false},"1.38.1-next-1594295189-8b103c1f.0":{"name":"@xdn/prefetch","version":"1.38.1-next-1594295189-8b103c1f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.1-next-1594295189-8b103c1f.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-RYBPvQ4Ctha18zNtgzrNi9Bcx3G8kJXiHSo7i8SrdeXyUxiviwNfZRPzxsTaIAhJFerpA7cq30XOpQnh4LxRWQ==","shasum":"462ba1c0f291e133872e79ce9f7ef53d8dfbd8e8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.1-next-1594295189-8b103c1f.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBwRKCRA9TVsSAnZWagAA+xwP/2JjWMoyTnEV8H3QjSr9\nCH+kM4Wrp3Rd0qioHNk/iow3ST1gr6YhBrfDVgxZ9cRCPoI4F5yyVsxLmjtz\n4JIk+XgE1130oCOvZh4m49vY5EPj/Kqri6RvTu0S1DImJZUgdpuxAHjh5qSk\nVK39MnPAbNEbaE/DY7KMgqU655mP+KX00D6GGd13iOvhg71m/G3As3r6574R\nI5maHGpxMYg0rcOgg7uPiNSnx4mFWaOIKDCTvyOm2flKm/n6QU3hFzbS5Oo7\ntbolQlMyeTLqUTL10K/Yan6VxJSLmlLwcJu9lkGgdRDyzn7AuGavIdKR4LsL\nw1ca09/tF1vWKDUsbWeHEsRFoR5l9GzgwBU1xQPkXKKJFxyi6/uX3M9jfM9w\nDBiNHdsDSMRl8nTJwZ40JOVk75/bsigxqc+cnreYh2FKC/bKsZuZkKlFsI7x\n67Pa/KgzzirukEgZTlULAb83iiT7rMvwT4uaiy/79eBdRLIQyahXXuFYe8kx\nX0OZv6vsZKVhwZzd5nHy+D5JiQjLKmj4HMft2nc+FoSv7RuA42xJS0Oh8EG9\nmBCCVHmbhwXNo8BwsDSaF+o5QkTT5e7LeVbH5B9xI5Chkq4a7Ypna4Sy0Byx\n9JB5Dq1auHxovYqlAlsttOcWv2zxCgCDy7Hkd1N8dr37JkhAIITlBJO4laTz\n717e\r\n=p1Xu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7tnkGdlt52T/Bc1soSXHaLsVXGQUx4qs1A9DG50+IHAIhAIi6EJTc3fAPWz/eBSZrFR+gwPqlJlKlRaSmQBJ2CPvn"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.1-next-1594295189-8b103c1f.0_1594295370145_0.6104375894710237"},"_hasShrinkwrap":false},"1.38.0":{"name":"@xdn/prefetch","version":"1.38.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.38.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-3moNtWyLwRKMqBeuB3vsZ04/MHXtEa+4eodh0dJKURdT7yl4Q0u9slo6TdYKRQTqjgsJ+eihPgmOd/uMtvazCw==","shasum":"ff0d2868ac0be5c7c81cab5e5ce77be0ac9cbd7a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.0.tgz","fileCount":46,"unpackedSize":78166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBwS1CRA9TVsSAnZWagAAjJ8QAIirl1jsnBedfHFo5MNb\nit5Hd+woFzS+db/UCprN08Z8+e2rK69EfMGPWUQjPRERh2HsDNLPZ3izUi7i\nJIlxYws3wEFYnJgrjggvXi5enh4Q7+2ol9/vN8c476biRJUOjqXOes8IIDw9\nD00TvKbFc1BDcgt4EGBtEldoqgwgjzQivSFJqJB1uANK4+1o8OFf4ihotKFY\nKAPCTJr3AhPBQUE2KXyY3XrRXXK4dK3p0kVrJURuUk2WE7Wa2SMd1M5HM38Z\nm3wYkXSsgH0BsGgFxPbNgJCtUYcaS0/fdSLvdI+tXkMRe3Q3lQG1wItGY2zi\nQ7FUFpxImoIF5/su6Rn6uQ4ORtIEoY3mkvIFGK11wEXpbpqD+kFQlOfOiMAN\nHOxUO6p5Xqp4+yX7nLsGcSlwbvYC2V6rrdMFrROekNgjHVdWrFj6y+Xr3Fvz\nnb+NCo874Twrhe5Aa2y5rAtBPHUV2NlKTxP5EfW5pftsmjJWTGehkAJV7xVU\n+3A+YUc64Bteg+rkXuHMxr7g04XjuHcBFrldZzJAlEUNJFDkPQMIfiYZfA3/\nQUJEm5pZHMUhuu1C7d0pKkHqKimSXPTpRsmvrIGg8Zv2Aj94Z8NzYLxEAgaI\nAW9TOY35hkDDubBmXVz3GMGni/z8KgyKzdv0XJ7bs1c7XhUjo82ljHAMue/k\njllx\r\n=BAZh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGZJRBBiSayUOgiNx3EeTwlp9d8yp2Wo6j/Pg+yl4qdgAiBKzh6lhUQ5gL7x7SJawTDQTM7BgNCmv9al5mh/THcAVw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.0_1594295476703_0.23706810806690481"},"_hasShrinkwrap":false},"1.38.1-next-1594312222-cf1fd3f3.0":{"name":"@xdn/prefetch","version":"1.38.1-next-1594312222-cf1fd3f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","@xdn/core":"^1.38.1-next-1594312222-cf1fd3f3.0","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.1-next-1594312222-cf1fd3f3.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-+T9myspUlUSGzn/77l7h6MNJUmaRxm9hTkz2tLK295tGWJ9gkli3kpBPuh1jCBikN1cvOPb0Dawh8KH0nL8Vgg==","shasum":"b5f67ae994a3d49089fd188cd86143b2c8c90427","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.1-next-1594312222-cf1fd3f3.0.tgz","fileCount":52,"unpackedSize":95576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB0bZCRA9TVsSAnZWagAAFqMQAJ+XfreX9xt89Cie5xHk\nE6TCozbSS6EXeA+VC25xYv9a43P7an2aPnFrysT17E+8JScHYRCFFCrYXa/u\nxFujdDdDDB3W/pUPL4x08TfNNF8oVJxHM2a6atkbl7Lr4xnXXuTl2Edmrtzp\nC3zk8bz9MBnUwOvvnWNbXD7FrDkQP23zdDVeIbs5d4AUZEvFYJ7LQbMJtfyS\nGtW6C5GalJfydSfxApJYwAT6z6ZFnGgE6bc5WFAcIBbT7vziT7EfNZ62Vg5Z\nxe2/QSPQFvacCcebSBgSty07tg5lirD3dF9BUlsaIreQmWeAnZ3SuGkNwn09\nvSjx1OoNlXIeP+BOTNhWnWcCC+i7lmrfdOYEcr+B29jwAh6OVOySgVZX+m/n\ngCRY7Gr7AVElNmEswLKFOpDFH/pu2KIgTgTLhejcIcCtmQw5uRKfXWr42V0i\nsBRBhdo47KozZIqV7pvWMXKo46YQsI7w+raopVxdi2mgQjXGomzJttft1WKB\nOMlbvJxPlbNk6u8tl7eXoh7NiyDmXXw2qMZsamsGvls5vu2RWthpELHk3FVv\n/zJlEZZD1h8DGNmghuTAMbbmzG9Vq6xewp2UoU0EVLm5KAqL39PkntYFoq6H\ne2JSzaLz6yUINEHflNaGOUDO0t7c0CHVWlfxoFfOuM4dpjHAY2q6n/hx3vy/\nKa19\r\n=OQD4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC5KhjV6sxIqVmzXwNLD2TbTnxYo4ADypTa+iuD++QrIAiEA3jQfwM1SukKosgVY/vw7ZhMMsUIL2S74xAZQaQomU+I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.1-next-1594312222-cf1fd3f3.0_1594312409003_0.02517570012078396"},"_hasShrinkwrap":false},"1.38.1-next-1594328729-bc58f996.0":{"name":"@xdn/prefetch","version":"1.38.1-next-1594328729-bc58f996.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.1-next-1594328729-bc58f996.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-krRfYH2uaCKyxpiXqgwvkcpYtBiF31PnqtQW1lng8Tb4kdNIVYLEu+xe9BB7erZ997FbetN6KFdejNTE9tKrIw==","shasum":"0e2ecd2d664db868b80ebe5b3f1ccf3d333aa3e5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.1-next-1594328729-bc58f996.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB4dcCRA9TVsSAnZWagAAaIkQAJNeAWXO6TEXM+E+ddbm\nKAQvIJsW4IUtJH72aG3rGVXG25G06hQVcaJGh16LiGJY0IA0lte26qRgowMV\nYxlQ9P/E2gp86vPX6ibJ0gkzEqYs70GwMn2S1mU/1Uw7e48IHAH0QMnF84KC\nB4fkxZ7kDBL3CI/8PRixffuelBmDk3IpjCxdtOkaDoZJGCkXMMa/ntxpxeUx\n3qQEbAEV99ZOtpik3n8gveU2ZtaiScno4RPiMbAjpHTm74Jq8LvH7OiPp0UH\nAU6lmg0piCY6eS/dz1okxDUETQMz+KOum+v42nes17yBl4btMcc8JvR+sHt5\nV1MeXUd26bAjD7yQQVOoiZQ3hM6+W3kIAS911QxsqeSelOqiTSqJ7WDCVqjr\nClbfGAylVyV+MxuqIBrCTrOkBsYmELwaeYvbdvYGx0J9LnhaiAulnh0bFbud\nrct6+Xc4B36G9FQJzkyg4sXfxP76ZmvstQ1kbkbm+YwBLOCYqtEHGy0xCEzg\nsNuFILhJUcNY1wa6Oymg4TILx+X9cYt8CRYQt/qIWN4fQvkv9+oIWTdH+DuD\nPkKPtBm6VmPdBUZMuIAkeLiZG46xKs1oiTxmPXNxYuTj4YAPovGCgTYPLOCg\nchaOB0s6n98RC3RY1g/17mNIGrgNXfwo4UUdf0zaIz3TuXj9PZ9q10jjTMw6\niAag\r\n=2aY/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfSXRFaVuenveRpfqRsPx9qBqe1Rkv5amVPxG+N6SGHAIhAMIdeta/mq2pkbK0bQOJUJTHMKrJtGnGEKflcArkKfF9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.1-next-1594328729-bc58f996.0_1594328923771_0.3788464720967957"},"_hasShrinkwrap":false},"1.38.1-next-1594330997-c93aa09e.0":{"name":"@xdn/prefetch","version":"1.38.1-next-1594330997-c93aa09e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.1-next-1594330997-c93aa09e.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-05fJzZSTpBO+XpjKbLlGuEQlfeqYyX97nBSLIva6HT0rjZgvNm7Hhj5b3Wud/2pyRT4l+suhca6wXNJms6J/Qg==","shasum":"7f5b45cd444b5684ef48e0df65cad74f341a2f9d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.1-next-1594330997-c93aa09e.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB5AwCRA9TVsSAnZWagAAcJgQAJ0c/RyPuoelAdqP3Nq7\nKMJAv32st4b4w9Z61w6YFAfr94v1loS5ZX86XZ1oHIIf/Vd7kKcAbOEZf4s1\nsv7N1ATFveksaUm5x1zbORXyHEp6G4rvazkuB/WwmicgOuvjcYkkfQRO/J0t\n7xNiHTVXkHRFRKg6WCzKra6zK0SQWACxE5Q6utYRl21J4RMwRpb4Vgra/vN8\ntRiV5RY65amhCYpXnhwtqhMMoII+Nr0g3fgPjchMgiRPm34rwtexTBH4xj04\nLvTdyplP8D6UBlWuW0luAexSh44HmLO9ePSz8kUCZ2Y0LDEVJWv7QEW0BW3L\nfUvbp/fuTJY8KymlzP2zQ1Ttjxd43gRLwIjWTEaSAZ9Yhi8JHFxNe+B9WEXW\nLoNo+7hYI2ogsIFv0mBgASBOJ27aL+hQcgc+nvHT5H2BkpwHNtQ8saRkQO8g\nna0bYMtlFS9SkfzhmI23jMZb/JmvZAorjIHe4Jobb6q8f01SIS6P1uWt3L4N\np+IIBnIPn6x5HPNVanBqWVDfQBowWTZ5nm0ppIE6XlCosz8gn0r4wOAxpm4/\nn1HFm8g/tsn7wXBZYC6/FnHQokHWLi+djDlur4v3ihOtF6Adtd42OtR+aC7K\n4FNvrCNIWsParUwOBKLN0noI0wPVK9gcZIfGZ481yYKsmeh6VNlPvzPDhfIh\n7CJa\r\n=u4gn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBMpZ3KvbLaSLZMhwDsH6oDcuj+MLJ+YCoQC/dvncaRoAiEAnCiNlPGbyLWmKhWGYZc4K3E/IialMbaoLTnCe1Nim3M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.1-next-1594330997-c93aa09e.0_1594331184159_0.4444426375746784"},"_hasShrinkwrap":false},"1.38.1-next-1594332443-8a00c5b5.0":{"name":"@xdn/prefetch","version":"1.38.1-next-1594332443-8a00c5b5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.1-next-1594332443-8a00c5b5.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-uHtQx3kv1NxChubkA37JrMzaZwJ0xR/qfMXv0kLLlHIW86f5Pa7L5xbTUEfYYIlLsaADzsV3aHypfYVRzzkOnA==","shasum":"36977e06073d9ce3d19a8b29e829b4235f1e375b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.1-next-1594332443-8a00c5b5.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB5XJCRA9TVsSAnZWagAA9cgQAJ058vUE5NMnfS7lBYGT\no1A0724pMToimvyOo5g/qNqDU28eqsjsEomb1OmoVzA6hrMPRNsv918H4rEx\nDDJ+qphV/xoQ+uansuObsCh1YJoNcZA3qPK3rzxiFRh7nR0sbirVecx7cSTP\n1FVZCh3TTxzch+2Q5+XPjTfnTIPfWvGlVIkuXPQFrv1nzxubcmFQ5DGnki11\nkxuDJ5bfRpu0v0xF6kPLiq/9wMylzsTCh+xfDxqoxE0gQigEemGw72S6Bdf3\nMQwbGrwBBOeY5qDW8aZdsTtU+JIWN+bs41f3hvKK1ntngcqwze/v/rhlR36u\n5ljwBhOoGrypC0cs7DcUMYYfa123j5nWLiPsq7lMOTEmzso6vBgyDtDlZ0Sx\nGGvGtaAXdYu9t7DyQBLFcGEt+AIMve7DRMXilCdTqBKwQGFsWDED/fBnVfP9\ny8RTRZqbJhtLQdhT8iV5o5khy8LBMMMGs7eHUQ9aG44zYiupgcC5jUhxm+Ko\nPs7OBHPaN80RHXIQE7bkia6sF9zLWpQn+f3Mh1N4f5I7/iRhx9nPSS7O4W20\nEmn3yMe0043BLapzc72Q3RVn/Ef0Ns+CGstJvgmSGlChtzkwIuQvAIJbFoZ9\nnsNPYtBQSgCbtu3BNbYZAnvn3avA72QbqLWnN7JIJUaGjkRHo9xHPzhXfN9/\n5b8X\r\n=dnvP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHTxfoH0taoRs3386VaVxTb60mt9wf47pdcDh/uxWd6DAiB+eyPAkdrIj0lHilhtHfgYTPlqN09WBHImpktExyq7XA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.1-next-1594332443-8a00c5b5.0_1594332616722_0.7174895521727112"},"_hasShrinkwrap":false},"1.38.1-next-1594369970-663419e3.0":{"name":"@xdn/prefetch","version":"1.38.1-next-1594369970-663419e3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.1-next-1594369970-663419e3.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-qSTqY8iHivlVcb3RpArjKI1XOeOe4hd4HvgUeaoQa6QdatMeJwKkQgqAr6Yo9/s3wGuHG+d4+1BVbKkGqHe8yQ==","shasum":"1c67d708065dca6bc76fc748a8444bf29c529dd0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.1-next-1594369970-663419e3.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCChdCRA9TVsSAnZWagAAxiUP/jfxdH5gwWIFpi44zlyc\n1rLo7Qi8LossC3UjK6WFWMSsVTmVMOT2Nr0mfSR6CrSqtXbqn6Ocg2fHfSVT\ndo+qj4FtEv8A/KOEyAXfCAsSywFsUeG4Pxa4Jm97r7e+d7yVwCInZk97nod/\nMZYX0wn2dqRawSuvmnc93iLZk3Fm7pSERS9mJ86O5l7rOBUr51PRZeL1dc1Y\nPwrAeYMGKFfA0TygqAd9f3KMSQho+bwrIQZRBYYVuLS1js1SyJJKLcnpd2ws\nhfTy1C2nk0FzJp5r1POGa9ZJpghk+i45Q1XiHusEnaxVSCRyRmmYPi1Jme0/\n9N0SxDZ4aZRxtEROK+Pwc9m0KhLB4ow3cqlvM6LCX08V85HaMy8qLEyR2kTs\npY3MO0yQAZp3xzkFaUHWh5hSm6SSbdP+XcwD9q0KVqTxgsdYMH8D4jOKHDqn\nLwJDRXE1uhbTxEDGcPOkQQUkqCKzlN2Wl850qJ/N08B+8vEcxbzREPey71Iz\nMdb9en+B9hE5ojyC78uaJuz6BLmLWDtePD3O+CMWC92iZuiYNCGjM6hRyuu/\nI99OmM8+cjZ4lSQWJWTuLG/KCTBV1CNyxo1JzypXSZjMolV2aeWOn+ct7F2w\nOiMBOLL6lKbUh3JuW34tspz0Xx9i0uTD/qlELJQd1xZc+Tn9pzUy5NamfLer\nmUZH\r\n=tJZC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF/vdjOiqNMfJI0ZtEu5q2yMNvcw2E4w+xxgZWXUgN3CAiA6LzCkElgMtMzXQIA2D7zwO65SxxDJag6HkyaePbClog=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.1-next-1594369970-663419e3.0_1594370140367_0.5789285718707478"},"_hasShrinkwrap":false},"1.38.1-next-1594376555-664a3d11.0":{"name":"@xdn/prefetch","version":"1.38.1-next-1594376555-664a3d11.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.1-next-1594376555-664a3d11.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-vMTm+x7o+bavSltZt6S7aIaaHMZMzbUoWo0ozzh+CVFiZoj27aI7P9vZU+PyeGjOHimCWDfC50vlZNdhkDTWcA==","shasum":"a3acc1f3313bfaad2102b5755818c22b8da461bd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.1-next-1594376555-664a3d11.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCEIECRA9TVsSAnZWagAA6TYP/RB5KJj3lmvK7a561qJ8\nmrLEn3l1Kao1eWLdjZcme67gqBzusn05/5bjbz8bVuZ1Dw/fdP4etmnc/z33\nXnOn2fX3Vwlps+2trp6D81URJBoizLNy2IQS8o5e6iQIPdYoaIcpDWDXZ90c\nDHc3/AjCGB+dTJKU3xvHFptZNZod7LR88iBJrnHycMMsTya76dcvo7Ytdkc6\nHRA2oPk3U2nKJllv1cNXuPEnf2NjVZUn7oOr5MKPrUmTP4eg1N7EYhxmAwv/\n9wrEjUOqxhCwcDLGLLvBxeRWSm52e4YTrQMvyDOwqrSn9L5TyS0ZTOyhhz2a\nAwtDislYn+gVFCWpp11S9uD2hjeMP+2e9EiJbCAUZPKLqZl2QbyGOkGN3b4j\n0cAJSr5xqlNdbld/5VwoGqg2WBsuT3i6pnCWqD83wRxWhTdi2/yB3qWKWwfj\nnZ9MppI3D2znCQH0nEyh8NitEVbIf58KHBQoFCNA9VnNr2WhmAJCn2fNsgUm\ntY6xm+wN+ER4ogPDZj0kug/e4QL6wyuns96IcyglzPFqETOjhOs1z8fOkFE7\ngr/sK01tbXk0g20Rwgrq9Z5BZkIu3ZYij1GOS+dh14jA1f7mPIRO0aFD0H0s\nKU/LwXya2RfyuU/IT4Dv8eaQFIG3BWcDe8wt94BVFKBXLvts9Ok3d6Tp61Jz\nBTI2\r\n=YKda\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIPNbWxjJ9EYqLaRmwAa9zJngpupWJopdTM5+TDqhxwAIgWMyIO8D6PeBMvY7Tg6ZUuT+wNlqOEEyG+S+ezQMwZg4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.1-next-1594376555-664a3d11.0_1594376708440_0.8810003302612592"},"_hasShrinkwrap":false},"1.38.1-next-1594378057-f713e94a.0":{"name":"@xdn/prefetch","version":"1.38.1-next-1594378057-f713e94a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.1-next-1594378057-f713e94a.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-iHBZ78pz2qU3YuqmC84ztcl2gxikh+xBiq9dVypXofI82D7FZ8Hr+rIB+oV1YcFo3psVM7FN27wevhtAQzLbAg==","shasum":"5349013f079ad33ac5d000737fac63b3e65ceffa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.1-next-1594378057-f713e94a.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCEfuCRA9TVsSAnZWagAARkwP/0nJUsNuCT9azC5dIGWP\n+8coT8jZKwCycHe0OgJVOgJuzWvPSasXu/l7bjoSAK0LUheamWvgO3fymDRe\nBKkxDeQkqX7U+tMaQ2ZnlzTV6PxuwsD43TFb0zFLgXD7mKDBfz1aMps5pzom\nTf2o+rAxhcWcDmSbRgTRfsEecNVOEFZQEtyk7PU5VIZW0CEmh95Xr3DPy/l6\nGlhcgUoqLclZqX6Y4w0MPblk7hQbzAwJI4S7phE4CW9LLFlcGWJwIC4SwHxw\nyd51wifssA16GnWOuclbKFutVg13KDS7tuf33EdctxOsJi9viBr8gdpP8Odk\nd9Ds74ShOqxurwMUotzIOc7A9RWef5lTxPAfsAzd0GDnMhEtHa+K0qD4HFTC\nXCH34okkHzApDzNIkJiWs50/PEdSvTrHXHOiMbDkK+zf0OvSPivqQGtCuIys\nEP8YSz0NDSWxJlNSlx/kraE2ehrOYzz5pA7lTp4+Hc6MxC19PjgNkphQUYWh\nfIzlCVihIkBulLUWCuTdu5HNj0erxdrdVoYfrPp1umkWPZxC1VJ8XwcVcIZN\ni+xVcbYduNEOlGzWMfek5hCfRVvv/8zciqxEjsyCpMsjBfZgVXqTPRgaKAy0\nastC1OJYKU0NR8+xaIrLtn03Kwl3+xvwEwmYO1RiibTyN3crBY9IZ5qpF6GB\nOgld\r\n=sOU9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAXL96VttisnmQ50kjy1MOJOBsQ9CDq19SUS+swMh0gjAiAjKa3XO2BptuhIYMcf43aba3yQD/dT2KtWd/3EZK2/2Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.1-next-1594378057-f713e94a.0_1594378222030_0.6227243170070547"},"_hasShrinkwrap":false},"1.38.2-next-1594378252-f5cfe71d.0":{"name":"@xdn/prefetch","version":"1.38.2-next-1594378252-f5cfe71d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.2-next-1594378252-f5cfe71d.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-v4B9YGQSjv2DkrG0TUqAw6Lf/5BY1DeRfZ8fDcDfoBuvp7pdyDqknU0Xm1Vcz5o9DBHfSeYwcSdecFD31E6b+A==","shasum":"3a2f1853d6a408ebf99db3ff7a1f8df0762877a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.2-next-1594378252-f5cfe71d.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCEiwCRA9TVsSAnZWagAANusP/2K6s6D2HylBDUM7grgX\n6KzgOHb7zwAMjEaEPg1a/LlVv5vrMM1BNXq3zwA7nQAkmV7FonsSUJcIt1vm\ntdTfVx1xYIoFUxaP60RwtlQ2owtA0bG6BEvgPeSeLNo9VVRE7GcHbaT/DSBX\nZdKvJWPXQ6K/SRkfBcHfKWRxIAAbvEJSjqvIteDSS3gXgwfg82kdAhy8VWuj\nBZ5yx4GIiL1rF2Z4TUiT91ae+Eoijab2t1lOfdV1pdNjo16VM9x4eHZnApQZ\n8KADheP/p2isRIQYvCEDaqK/oBCga71mhwK4fpxifntJdukPIl6keZ+WUYWb\nHBcsst37KSZ4wrI8fqJy0ZJSnMCl0U1EiMmcWDauSSe1/7nDTn7Jdn1ak2qA\n8PBqJZkk2WA4X/MuyLk5r9I9ZupFwqAQz9Uy3qaLIdzkXvkKo782xALYp59B\nAZeD4sZazkP7tOZ57f/IvJlMitw48x7hsVzTf7agGXXWTgsCEuhInhbciCND\nPYjR+ErsG2lZGQtWzsde3XrB0WTno04nCu4SwXB5QiC4Sa/YwbBsj1SwZnyH\nCVtqbcWcldjsRsXZLKw4B6gAuSl9P3xgSQ4M10UL6BevdfYJKd8EJ9kkFlbq\nKLGRY5XxxH1Ynid9ulykx+Xho1ShOAP9+XhG7dl5enFdqGnPGVnpojblUGvw\ntTz5\r\n=Npyx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEYRlH2CsbOQ0VMSsJTGRZrnHdHOJvbWnGQ4qMbsMM4KAiBBfWJUjiVgeLQx/C8qS87KvlVUPpwWkgfbJ3yKYfE3iw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.2-next-1594378252-f5cfe71d.0_1594378415836_0.158917412220831"},"_hasShrinkwrap":false},"1.38.1":{"name":"@xdn/prefetch","version":"1.38.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.38.1","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-o1w+Ty/UQ1TxBQhAt0rdbmOA9B/HvDnV09eocZ9AsSPNe+ucLJWCNXbt92AXdEdNAQ2DkXAQ7890H60lwCPPcA==","shasum":"f40361dfdc7321a7f20e589701765a1c3d7e4931","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.1.tgz","fileCount":46,"unpackedSize":78166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCEjXCRA9TVsSAnZWagAACeQQAIL+W6rysDyPHSRrlXTr\n1IGR8uS/6M/EHih2nZop6NCx+xgSJAc1VCWcaZJRMzUNV8ip9XUwlWJCtaJK\nJrtMZOVD6woV11rqWHbnyvASb9ka3mx1Kz/zPFhBHIE02AdW5EaJvB3Arlxl\nuPSY177UsbpxablgyPCV8uA/rv7f9PklvSUNAB3TJITYn3/tFAxba4n5yl3E\nEOCE7uxgpwxUfzzBpQI4DV3YJKcrWlVStXezTFtLBTVd4Fym59LaigTE6iGK\nB/5l5gNmhoHRBcxLy/3snQykyzXZTxY7JgIy3wnxRlCj+H9d3DH808zKJq5X\njUAieHFmndJwiPS41p0D6iXMN2TjdRK47Xr0yVC/J7EbUyU2QcfWblsWrpTz\njTszjTPsNySfYtXOzgL5fwUw5FE3YFOF21JSs+8UwAYv5UmkFhkmi0iIO1T5\nrrzBypSXC8l1x2WTTq9NZWWvK/WYkixobIo8C/OV7M3k9zAWuDd7jNE4KzHW\nutHg/+Cepi/8yme47bzYhIo0M6zxAsNTa0XqBg1K8oUQ2MOuv8qbtKSLXQUK\nsOWTYZpxSk1btJnpGsHNrsMX+FyzImwRJ6AJaQP5sf97dXZrTK+XVViUvZzE\nBT8VxJZmV38Nf2q+MLkmiDSLXSKjzpNtlVBXH0pNBDvZI3fic0uebjWzv3Sx\n+a3B\r\n=SWtr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsUhGGo0sqKV2vZ3bBtxhgj9+0GZ67HQB5YWMGnOKXkAIgX/KCQ88hvPdXCODbwErv6nQ8dpW7g6MBit2LA9/NnMM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.1_1594378455448_0.3870353216601312"},"_hasShrinkwrap":false},"1.38.3-next-1594384746-32ea3f02.0":{"name":"@xdn/prefetch","version":"1.38.3-next-1594384746-32ea3f02.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.3-next-1594384746-32ea3f02.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-5/2/GM/8dmpb796oepyAdLJMMIhFwRDMJmx+F3tZue7P5T4m2Ms7AyzQlnTc24J4K6WpoWbGupvsu0sW77wzfg==","shasum":"f10d3ab8f3f4ce0ecc5811479d45be9d9359f711","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.3-next-1594384746-32ea3f02.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCGIPCRA9TVsSAnZWagAAkdsP/AgETSmx5sz/mNtWoFLF\no9+f5iDqQPPVSfKc8Aukf/0hQ7oXg5XdgDYxt9o/M1Mp95A9EaSYr1hRj9kK\nAI7oJ3b84VKHpA61xyaAZ3Ujg9Gm8oelJQiVn3OvKdP6X29NvpuS6YS53xiR\n9sfWKg6Dru+D/4xz4trYQi/om5qxbYi76Lu6vk4wV4Nz3B6/4o/RHlDOS1iB\nFE2BH5NUPSKkDWKmWujeWS/Ap2tWGOteyQA9SLK5s9MXJsbH7TV6O3TtTQP4\n6AmWTEPbDltAusZSOm1vMIaMss9hFxxsNjlIT0+ZAX8T5z++L/E4zNvDt2Ce\nhe41CXCDX+jFsyUyYPNC/UQYhtSkhU9j4jFmv42IAU8c3xh7V0o8N6JtP8qH\nSPH8tavZwW0pKu1Sx7+QCMOfAX+xXBmD9wcoUgw36ipROVI83drSJAWOGjmm\nTV0WPGdHkHs9p85IICWTFEwLnAvd5gs3e8hjc0Ego9xA3M3TL7QUtSMYnHQb\nR2+ZD39AoL0+9DjdU2E8yJBneL0PKv4isga+zhLWHlWN4RaPsxkBBh+Aa4Vc\nHAjpkdB0iTVW2ZPukCovU1vR5mVklIJfsy6ly3DhweQFWpjfY9laneyZ9+i5\ni3OPjR3NXtFyWrncd7sYX5GZ1NEBsO6AMrSRVrOKNztSuGzD/i/vWthFANvQ\naAOQ\r\n=Q4le\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdJ+BiN7ite347xYgO0u6+KPLlrzgec0WuZxrN0+1hKQIgK0lstEG9JLphLrDBKUEZ7gw3k5Ehe3Zzvs44ct/tYHU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.3-next-1594384746-32ea3f02.0_1594384911226_0.47183897276286113"},"_hasShrinkwrap":false},"1.38.2":{"name":"@xdn/prefetch","version":"1.38.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.38.2","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-91Hx7f3IKpx3Y38QtfDnCSaBFh5OCY2CE9FTJ+mkdr28cRSmSNRJa+0jiavpO8k3hS1hqgb8Nq8XQpNEbIZ1Lw==","shasum":"0b98a03e03cd55b3e0b4028d326e523e34a31fb9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.2.tgz","fileCount":46,"unpackedSize":78166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCGJzCRA9TVsSAnZWagAAa9gP/3pnKLMq+yOmoucUkrTX\nm3gjlmYVJrOufUiRfAc7rV8I3ZNbMVbiQ6OhO+qG6bSsotBQjRHycr8SPDIs\nlucuGqahQ4nWgk8HNESr8pqlk6HIiyHmjnzY/wtyxuG7ueCs47oHhGEw/YJg\nRVCItxr4NdtUIn8LOz/r6dD38OYijvB///wqVe5wLHCzpL9yCYgyC5KjFsKx\nMWcY10225UH/lUkAtGHwOUUAHabTksJAQQgf8C8NDAeDOgvbDhilFn1otk4u\nblYbnrSZ06oeWoeVNjbdkrTym6ktDrhWvKIOeQZm1xbFcduBHlEoIKflWSSE\nZ+E0u8604UD1JcKdkH7nKlHCvWn7G7PYWbrv3FXPzHCFJ3pk9jUZEm9c9qYg\nl8xmgBkWvYhhwNMCMAY5FaGhUzKGcM1/sH6mtXMq3DgMr3kCSdLcOJSm4fJT\nON9+j5zow+W2jAYjBf+644kp/dEmnLb9jcXTuswlSURbf2c8xZ9eaxz8Be9A\nQpIMnOMMR61mkALZ/0vd5YMjcEG2zFv9yjnCwSBgmB6vr8z8Uao5adt0u1rG\ncyMWPaczk9TIamTg9bYgQWrwjErix3a31jfwJXjJyHtDWQ1J3CGllb0M8w9E\nMDzqj7HFZjkB4ddf9Qfl0Pc6whmyawP1cRDuEj+XBbO1XiG9BZM/UMHCNVoF\nVbCJ\r\n=ocyy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrSTwPH1a5Ox0g+SOjIx6+RT2661LESNkzkGC5cRgTngIgKSD1t+j50tt61m30NN+K6tQDsqcOwhEKLW5dur/W/Zc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.2_1594385011436_0.6944208759603621"},"_hasShrinkwrap":false},"1.38.3-next-1594385777-433e3ace.0":{"name":"@xdn/prefetch","version":"1.38.3-next-1594385777-433e3ace.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.3-next-1594385777-433e3ace.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-wUmmOrUdLpgtCyTlYZsxMXzz7G4wmcUlohoVpw1aKahYwsxO0oRwwg0ezobAp0u7rMC5NHOTbPTXCtOtwPCvCQ==","shasum":"c244bfc8360c5ec6e839226933cd908d68ce3fca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.3-next-1594385777-433e3ace.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCGYbCRA9TVsSAnZWagAAxRwP/1DlOWwwni111DDHRj4c\nanWGHrmbF/HzF6nYAIYr0RiXkKyxzwQLSfjrWP31EgVmvVpGo5CHY4p0c4Fm\nDawtl3q4Xf/fc7UW4Mrp1BWDy5PGUZawR0R6Z2oGSgaqgkm7MWQBPkuBgZ2A\nMo3HWN3gY+6Cw6wtj58LBJ44Iy4DuLphTPzFpZjGfPqivSO4We9vVY3hoPbA\nMxPKYxmmrCiDfv+Q4Khk6ncHCHlra4sD4aNgruQpE64mHkKPLNMuqEnIRX7U\nD5Vli4dGMr9No1gP37l9j40PpWkDYZTWvJDbq8kw7uqa1LP5YaEtYveVls9n\n/ainrykCbUNOeiFJ9naWPFrFIZMV1vtllBkFZpKDO1crZhlFfGviAvt8kOGL\n4l0T66JN0fHiv9txzQOJKFpycq4ZMRLgb8Kp+r4RDmaaLB1OriY00iseOR+h\now6yIYMsAUTSLLYnSuVzt+0PZqc1cvECnK9wXcqwAkoQlVtw3sYkXJYFY4NS\nqvjvvyZCm/JKtkq+xnYynib5MCexKS82HUHZh5M4Edvwo/tYaYnb6ul9e6J8\nZbnb4qER45W5kKoBGiGDM2i4d5khNsSvDm5hjfkueK+I9vNBCA0zT3IUMm7V\n9cxqWuoMOidERna3DRFDYKtsRiHenOzYZ9VXa0VEYZLYoP/tZ+HGM2MAoKKQ\nYZd7\r\n=V3Ip\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA4or14gXEtqNQ3mqoiDMzD4Fxg5U5JM76YkrNednB9/AiEApWjyEShSrYIiKRK0XRGKBjSMOOpv1ujl13wVqAZTjwo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.3-next-1594385777-433e3ace.0_1594385946519_0.12181516575965845"},"_hasShrinkwrap":false},"2.0.0-alpha.5":{"name":"@xdn/prefetch","version":"2.0.0-alpha.5","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.0.0-alpha.5","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ROv7NjIfGYNtm0z/qsPGCIbnEJuQRJv2NR5/Hr6g5bZdGxjdToER4Mrh+cM+wH/Q0WOIjVTEcqWZpLPvqyKFAg==","shasum":"328c2302104559d28e2b6f84b23eedf8c33c20b7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.0-alpha.5.tgz","fileCount":46,"unpackedSize":77740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCGe+CRA9TVsSAnZWagAAiUYP/RURpG7P1JBkO5ttRXg2\nafG9607tOGOLcK7/qVFEEfjKxpRoM82edziC3ZMzn/RK2TJm0iDeRc7gRF2r\n3mDYMU7+RmmyBeNl0janML1biaWtsOXp/LvpqKWL5wo9uyis78cPgRcgCOH0\ncoq4TucSbwc13QOR7OF5RH4UMu35MTDZSCjmy5Pi3jNPJqJQCtyRyQdzvBYV\nPHp/ULLqmO1tcB0LtyCPrmMSOMvIgwQnuvztbUPIiDSNrOl9oSSy5w58Qj9p\nbERSijzUFl5o3Agd8/xuBgWNT5XoHoULm8QKKoeMMAj4AtVxiscfJD/7lVnC\nP1Ua/Sd340MiR2jukCWIvc0yptUxox+zPG27NmzyVvo9h5Ty416J5Q/2vjib\ns6ROkYoJpiBINS5hesxcaQiWA65cBPH0U3R2N8z/v4GUzT7ca0Ei0yPm2sWH\nJIRB0LfRDwN1bQWMTZA0SqrbTree8c0RRndYDNCvouCchegwWv0DAlWSftHn\nfVjWBKMdTtJqt/o7hvtQUamNBVzIL6O9XFlM0a+X8hdpUZ3Axhb45GYnCugP\nXrB/x9W/JzPr3rOjGf99T1S0iX4h/AoUnp/CjhWle+HutHx9X5LGksqZzj7Z\n2mum5OITlZ6cR44Jp1Pp8fC64a6XT69ovyEACcZjQKwXybZKs0XO980w9Sl0\nicGI\r\n=bmgW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+YGhXZwNawvmruJMj1kRO5mpwjkm6VY3ofacy88dnQQIhAKJ1Kr3mI8IVwJVHy8ECs8dekHtGOyUSvN7Ig+WD9iVO"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.0-alpha.5_1594386365558_0.5594325936420228"},"_hasShrinkwrap":false},"1.38.3-next-1594642501-8d89315d.0":{"name":"@xdn/prefetch","version":"1.38.3-next-1594642501-8d89315d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.3-next-1594642501-8d89315d.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-dkeT3s/P6uZIw+l7Up9hheJwYcuOfFpFR6AWo2z55AySipXbWGiXiq5zmmlYxWRCF+RAFCcms6fX9SWAsO/I1w==","shasum":"92f8c920614374b51a1f72c8c5916ff7279835e0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.3-next-1594642501-8d89315d.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDFD6CRA9TVsSAnZWagAATgEP/2va8+DaI3RTvlf2CgYx\nV5U8EY6iKr3meZirWRMlJDU0PSopnJ0VrtF8dXZA5EDe49vwRgXywFGoqzHH\nuiz1y5xgMdVKR8SR1WUYsbnOOo6krbE5Wg7ZLNRtEB77x+VvNLxVmpR7MJqv\ns+nZeteKI4SEV1aBnPdcQ1/VSr6hnAeQ4UqkGXn/Mj98KyUCDf5g+4MydhvK\npL/vKlUgeWVWQ6tT4azptZi7R53P59nkMUcLBnl5zyiNaoaGyfy++tJbskcd\nG3fOLRhyLA/2ZttZDgXwJTxSyBN/t8jw6W8dJ4qgf1FfneYJnYIKvrajhq00\nTEnuOTEO/yfKxl8lWM5xLzth78lDbEccb+E3aum87XE+yy9uMsSCv0HJ7Iva\nP4U57dNA5RNDcmiLZmBVEMFoHkqjUB6073INdJqNhtkZ6OqkZJ0394xN+H+V\ni+w5/qcm4L894W4hZx0mlsxti7s0ltHBlbhvSlVtVF7MQGl+74TL+QFsEfAU\nfLwQu/eG0IHIV8rnoicCeCJ1wS3MyrXdGfSBCo8RKpM+xv5tnnIR/s+9mRtr\nqBW2i8A6065G52Z789zsDQbcpAAE6rLhPDEFlv8fhUeSX6SJDSO+ue1C8H/3\npSBlUn71GxHRXdJgRIUpRBXngnGURPXfBmyGeuHxtKcErQsC3zkYWq5wBvjo\nojMX\r\n=qEB4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTPsXaHGs8IKUVBIrdOJxd2uG+cFey9LJtWScTj5eDegIgFV0VoK0rdoKfa5JI4WBUFJGC83iKNR94BzRmwYK3umM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.3-next-1594642501-8d89315d.0_1594642681515_0.46654017715819407"},"_hasShrinkwrap":false},"1.38.3-next-1594643568-b7f9a6e2.0":{"name":"@xdn/prefetch","version":"1.38.3-next-1594643568-b7f9a6e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.3-next-1594643568-b7f9a6e2.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-/rir4BN9UJxxNLoJ+CV+SI6vsRyXodm7FyzYz1NE/1WDJS+h+zsAL8XbFes3wcM0X9EfEW5NzWPEg7PvO4fjYQ==","shasum":"1c1a1acd3460b1a31ce055daf32cf5ce9dd552c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.3-next-1594643568-b7f9a6e2.0.tgz","fileCount":46,"unpackedSize":78193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDFUfCRA9TVsSAnZWagAAptIP/Aqhk/zD8OEuLS5fjkLd\nSIp+KTYJU6TafQm9X/HYo1lKVeAQdTTiQgmuCei0FMgaz/IzGQP0r/o4UyYm\n4F7Q6cRHFddqc2M+8HJPyvOVJidyXnquITCAwzOdZ8riuPnHS8zDIvT5YJKS\n5k+b/3lv8H1MYMPQNlVU6Q06iT/L5EHkykHt0XoL1QdjA/AzvE/2mYM7ksca\nvRdWBQGYWXVwOmVMckbezBsvKjkU0+ZFZtAGtxtR7v0ha38EIgivj7lRpoGU\nAuMuiJ3KVJbWwQPL/gcoETAJJiIKu+zB02ZumBXs1Xe6o27Eg0kks0i0xv4c\n79/Xyki9yB/l1+Ybv6BddhvN7Sde9rz6PaCWbWVulQBE3z83ugNCccInCkcA\nwkeSrmFjaPIPwLWAkQebUlSm3iSRkY4PrzQGXryONiOZmdYM7OFnCSB5DCPz\nRDApkf4uazGH39PeRZnPE/rTIR2ytRRFJmiCpA9J2+ZVpwLGsbHBkuL95aNd\nViqscDbqEDHAUs/Lqn0YDDRNDX7vIDePiICpGqKXMLUWU5xp/N+UpSZYtEbi\ncDExzMzMWcDUrcLXerdXbW1wxSNd/wm1TZ7dqgU449KJ348rXA/UdsJAfs43\ndBCReCGM2V/377DCzTAV3KS+0XON6fqwYPGjf/nt+nr5w/LTqmwqJ4Kgjz0N\n74iH\r\n=3uPw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYtrZC1eCKVGs+j1ua+gU1m1twMc9delhbOUqrQdwmOAiEAtijdAO73XxLBbf/M0F/6qEADeSx4IAxyJkh4knplb98="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.3-next-1594643568-b7f9a6e2.0_1594643743586_0.009353565447243195"},"_hasShrinkwrap":false},"1.38.3-next-1594650335-45c13633.0":{"name":"@xdn/prefetch","version":"1.38.3-next-1594650335-45c13633.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.3-next-1594650335-45c13633.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-q5BRMC3yLFXCGiMkVvcqubHC1JVKpk1X0/u6r70N7dbioE1Iia3U7vWxPcPrRMEEo0/qsXphtBzxcBoinqvaJA==","shasum":"011b6a1a53b07255b806ee83811efa2315d0cb5a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.3-next-1594650335-45c13633.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDG+ICRA9TVsSAnZWagAAtIAQAKAAIwi6PFLWf392xu9j\nVfRNqrTfSiX3U2ayeqJXW14O0woc3jLN+vrvY1ADuzkkEYbijz9CMCApXJ5T\nxBIFtEfMX8DTmxCrvBS+0k0YscXB0EjXFv0ugLy4PE5P3zxQzP1z24b4OfHn\n2vHnfAjxKx8nAROTxNV4GwOblAVj5Qvs+sh/xrZSYXsDCt5VzgukaGsrNT7s\nLHIjzclbJPxc9fa4VKFCK0E5hUN5SUVwUi3807pnB58AaQHYUCmbyfl6v3/L\nRmzxY8810cbjUt76VInFe5pQYLweuLwa0jQ2HFo2X/ekQIQfiT1jAd+UTPej\ni46dREOKe7ZITTLPmr6j4MVRqjeRI6r8k+rbhmoGlob/hDWoEMwcRWaufZU4\n0Jk91a/V/SW0SbWqMsLQnjkn8wN8dZuEFdW0iaepuhF5as7ybkOlwTXDC4/9\n9c+jBc2Drvx3GJKDkHFUd0PkqH+3yxLiw/1ap+ucRd42K6RkSjogOIsQw2hK\nHPGmNxpVVJ5fi0MdVUQy/zB1KVvIRnVEhR25Vsrz+EApq4/Alyt1xJ9XEVER\nnOz1eUz8Hg/Mr/dHunPa7XGSUpc/5qASPS3blEIfnvaPWCU4ndVt4lARAsMp\n9txMjdjduDbdETf37ulkKLQEcZffZHM0mb76vGlzBCGRkuAShxu7VJMRSye6\nV6z0\r\n=KN9t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEeva7V4MzchbkQHBa33CPRE803PUn8xtafHZYDL3MprAiAibQn03Yh0z/NaiyIKZYF9mgAUmO2/nOCaNu+XpeMHyw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.3-next-1594650335-45c13633.0_1594650503466_0.2530409002029541"},"_hasShrinkwrap":false},"1.39.2-next-1594654403-5d690c94.0":{"name":"@xdn/prefetch","version":"1.39.2-next-1594654403-5d690c94.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.2-next-1594654403-5d690c94.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Jj0PY43Yg5X3bgjqICLUNCz5q3jiuWYoUlCvm6NMjqbRY4apon608S1QmpfI/Md59MCYAW+QAikWI24d05RntA==","shasum":"e90731099c06fe567257bb221246a558e8a6567c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.2-next-1594654403-5d690c94.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDH9yCRA9TVsSAnZWagAAH1wP/AslIab5BGvXZ/suSk07\nNgyBv6flDdjxJvR6DMu80yrB2hqQAfnQUX4THaphCslxwwI4/upb8Lma6xLj\n0ncK3L+UTkCB5MQjwhoUhaDeEPTkhZD+RHwAxS6hgGtK9WxbWcAfC25g7Bnj\ntXoiJY/t56Xp4/1YYlHzd4cUoR4CqBG8/2z3rGaQbsIEWvFLqtKhNICklWnC\na4tlTePxpo2lv0g92PWWr7P6B7MKJIZ4A5RU4nUwtLkusuOs6bbazYowrU0s\n7DMHU8KCKhKVLlXAYmClMqE0/KouArpcax7b+oFReWMrNF1sulXliGYPsmpJ\noRRDBXnrty1aS0ApNXgi4kds0KG+wfFXtU98VD1DYozGhDhbHlFgumd3SXSb\nWOEHEmiPP7AWI/VjRVK58t6VJW8GEDh3QmIkVtwne3RaGm8pzEvOkOpzIOVZ\n8ZG7HeNC+QWYTN0Qsnr/ZyFwAvixZDt4QHzLrbz+5ObLRIhc4wkVvh+6SgKt\nukzvCXUruLShppEIwvIiRv/3P5L0iUapZwQjDDB20BdlAbCXcsT6zbarhYFI\naW5wSE9leRPbdRsCdoNJ0Tx16uTr7d0ZP/voyCVpvN14hyW+urkty2sl8WlL\nSNXCKVM/eSz2wYHyHB266wX9jmqw3JCfvrrSjF06F1c3PeMoes5fVoSwS58m\ne+1B\r\n=DF8I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGofaOnTnKgOAuKX6YXAUUvykvAe0kKezpt88Z6PjeDwAiEArHd4a/ZlatiyodZoKELsED06OjIZ5EZfKcF7oi8hmd4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.2-next-1594654403-5d690c94.0_1594654578268_0.5601889350865927"},"_hasShrinkwrap":false},"1.39.1":{"name":"@xdn/prefetch","version":"1.39.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.39.1","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-BYJ4CBYdjfjdPsITHI9BJg+OKvIhiPno9/sFDWuQM1EJN46gqJHPSYLh6n5+7hIG8uQpd9ryy4SD+jhUFAqBhg==","shasum":"d5fb47229376f7fc0bfc56c20b0215fdb339b5ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.1.tgz","fileCount":46,"unpackedSize":78451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDH+zCRA9TVsSAnZWagAAR8QQAJTb8OELhEqqqKi6WwvU\nNZaud61ygqbtS9mrWh2U1tOlRqP0WhsBeH/zuLKcaVkgihWba79iSKPLvgOJ\nqBwmF0BH10KDiL9q8C0o5HaAsg96eCjMgXHDF73TsQQJzrleltcsNAnYJkZU\nidXqYiiZGAU+3+c13WLeXPJcYs+NHlX1TWJCxc8WF0RHlLV4cF6v1Bg15/XH\nh6STX7CcyusvCVy/gqWw2IOBh5jYco7WHsPQHGiMgNyYVRG1jTd09cRBOEWK\nd6DxCm5gLXdBHpvjvC8ruhZArBy1Ba6jU1PCiKJO4RAu3Xx9df9Oiz10VCgY\neL6ZF6POJdJO7jJkznMgMLM27pkYj95J5YPiIW48k8vM2MIpZFISoOUJY1cz\nkx1ymFfl01JG61RCDF6VnmwAbH8Ax9uSjRJeETqvXu8J/YZQQFkVGJeD/YyL\nD0sqWf2D+qhZkMGnfpKQDOP6BeE3HDa6MpmFsvsYo2ODTNJSsz40cqqHH85F\nvPT+KgWw6LaUb+LKhX/9DO68YusXvIszTsyQqE/8N3NZAEfQ1W4kXkjKIqnb\nrY+QeljavIltvH8m0GMBF+jupN05+dXzGUGu7QydAonJpgXRJyyt8H+bHS4n\n3+EEa+Ll2w6E+ribkO4/8xgh33UnlR+BCZgl+UQfjf0AB70N5RgjRS1ZefNs\nhCiV\r\n=jbgh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMVjT9tTlyhqeW2MCDRiUNTCLRy4c8NvqAIG/sxxx81gIgEm+VFlAu2Fa7Kq5cy0hMRvXP/VX7he6aBZm/uhNTpSk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.1_1594654642846_0.07448991746473266"},"_hasShrinkwrap":false},"1.38.3-next-1594737036-936a2d93.0":{"name":"@xdn/prefetch","version":"1.38.3-next-1594737036-936a2d93.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","@xdn/core":"^1.38.3-next-1594737036-936a2d93.0","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.38.3-next-1594737036-936a2d93.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-20o8m9YeKmMCPTPdnV4gIPIedrYVKutE11T4Xu/JPBPrFmbd2OzUwfPcQI5NbMKBSajRyPPj+ssvTQpbXExdbQ==","shasum":"223f1b5ff53a2d2c8d5937a498ddbfe5aace54dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.38.3-next-1594737036-936a2d93.0.tgz","fileCount":52,"unpackedSize":97788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDcJlCRA9TVsSAnZWagAAa84P+wToJfNA74mZOEu6ZRC3\n28bPS1pJ1r3ym1XCpCMaI5if1GKAKR9U9va4rFChIDSnHVDxhXn0XslAI9Wj\nIMUmJCoyfXz3Q654xnm2d9HpfZQpY4tFs5P6NdiQcP8OKQORHKSBcLqyxi00\nedr+l0yytX0Z/SsPUE6nJSF77+Mn/Ip2kACdixgsH/ctfjs8PBGVSEiKgjcO\n/lX+JzMjwvAY8pvXfdZQAYHppKq0r4YsNILsY7ipIeHfdlwxOvsj1xz7Bnxl\nAja9ZOeCcoKaOnqipfXlWs1RslQjnj9Zk7noVFsGscy1Lkkiwa+B8k/VDTVG\niu7JczPRtvmv6YKEWR8yXKtJDvdfETQ/ywucUAV/qW9Sb3Dt9MZ2sYwi/MDk\nTbct0uHYJIDGF5BlWItU4hrx3IAz4yTIawn6mfSkuj3FTjc3vlk3YtEs9yIN\nLMbLrghgmVoMpfuE4uMfVB6TCcHbbhuzwbiYBMzf3Ei+WCHHZYrbl+mYmb+g\nvw4iKDM/wVQ0v6dgkSacfJ/AVkzZQ+Soi6gw0Wo7CHIqScySMZAb5ngoVapC\nzZGJ3CsWjh8jDQlyYqtHQ07hYh/C1ulBDpgKbrQfXyGXx/ADGu5ApKOdi7mX\niN8h/YRxlowx+vSVCUUYFG9GDkPaDews3aoHkslXgxWADxzR3dN/ErUNIQOF\nbunJ\r\n=wXq3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2Sqc8M1JF5s8pUZi/jl+XSb5PKz0PS0jaTA+z2WO/VwIhAJHQSQ8oatmGEj+nYfqzcmPMHr3Lsqt9Py6NxtVe405h"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.38.3-next-1594737036-936a2d93.0_1594737252723_0.6114641695163998"},"_hasShrinkwrap":false},"1.39.3-next-1594740572-0e08636c.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594740572-0e08636c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594740572-0e08636c.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QD4tHBxBQbssIJdq+ukYCsxOjtWD+4w4/AULRNx2IiwDS3R6fnjFkMsiRbvWaTiduZVr0wOpwu7PsF/H8lmhlw==","shasum":"ca283004ab1df73a4199f9ba15da53885a98ce50","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594740572-0e08636c.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDdALCRA9TVsSAnZWagAAYG0P/Ak5sQIuo9PFqI4hgS+b\npEGp9DxWxzbUeA8WX7Q8YuB4hc+2N+0fWV8Bj+vaCnEMwb265neGo3f0rCV8\nmrv3FZwkld1WaXbHv9u5ixfPDI/bP4AgjOAOn+NxoI8Eo8iWf3WeZK2cFt3x\naE4xedYU+jbrkCCKWhtm8ScZncLVFHZ3ymgqzjCqTsrcdtjwK6q/RfN0jbFR\ncXjwkJQurt16E+xvwN8j1qffkWbPEoGFp3UVhIKOqhos0PIVwPZBSSm8Zb/v\nxAe+raIPmqhb4ucZfx2D0AibdMPHiK1QngxfR7I5zeYOA3t8JNsa/1SZGquL\nFIbrB7pdc7cOFqBJIrdXbnMzQ5jFrhWxGi0WOEyvmaPwsVCJOwo9HAEigcuA\nZg2gnEKxBHI0v5Q1fMgWj6p2fPZWsju7lZt1Tbi3e47ImMfs3ODk4vvDfFHm\n09BdbYu7KQx8bVmYVoKXwK2OuiXqLOxOEShjWlEaM9qoeKx1a/i2rIe1Pytb\nObGMOO/r7nJyJh9ZVH/G+36LqqF//JpgRnMy/ced7VEe7xhFF+0xbaHgcM4/\nJdvFqWlDNb7oDjBmAjKf8+PQSXoIOUeCrhaE6ujgMbWLlPztfvw93GWR4UNv\n+12FuPGTz7H1NjTSVKyObz9XOSe8HITd9CWp6dKzaXvURqmiGxjwxuZgxZHh\noo2D\r\n=nB9T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2Hoslb+5jtXvpASITJJw6bjf6cFdNXwEdXKhSuNHgPwIhAP4txgv8gwCmFghL6AmJGArHIUPQvhui6xC3NI6Xm6cZ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594740572-0e08636c.0_1594740746837_0.3675203614866356"},"_hasShrinkwrap":false},"1.39.3-next-1594754486-3f4c8d9c.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594754486-3f4c8d9c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594754486-3f4c8d9c.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-M5zzN+5f8gkTzFmIK8xNfN88QAmM+Y/GNUqFPHrYfcHa1Or1k3OVm9NKZTXoDbaDKIAfRPIBVZgmOUSZuCIWSw==","shasum":"27a0b4a75400e42eb5cc26c145b771a304476691","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594754486-3f4c8d9c.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDgZaCRA9TVsSAnZWagAAV8IP/AtktdzrIGgGKny93uLx\nBEHAe4HW9sRlFcLuhz5V2unynq9o97mWBpkc57iBpPF1hdnTg/RjkzgJN8pD\nfTdbKYXtfbClIkPjFhBG+tMzaVs1FhZOda6B2OCVbEBLn0uFj92tzkKvWQzM\nkpijBnYYRHZu481W6gzBNXA7qUeAT/u+Q5+/zL3UHFRDi+U5XESQabQlkVou\n3fflWF1azZPxEsfsG+3HuPjiue43kqrFmrJOu8ohP10G28rkNUeCU5cBYpgL\nVDee8huELX7pM23kXvL2jqJwIS2fQPqUIQs/r8DDQqdYU43dx87Cg4KBxS6C\nTrwX7/Ljhc16h7HkFzzWj74EF608VF3E8I1mUt6uBGEoajIp648Q8OLmZ0D3\nEmBerBB3FxBkdcNEGMuTgrN2KhSH4wxdWOafXo54BJl1cX57/6AgdzS7S9r4\n5XT9WCRzquJzJvYSk+poaN/F4Qb18ky+ZYlc6ahQlzbMXEvWmZC6BwuBdHlx\nK2Z4mHzALHLH+shMQhX/lDCcTqXoNrMqfTyhHOXFQ7HqZV7B5sDfpjPJmd8M\n0t62meEU9l/406igw+xwJOEZt7H699Zt9OyRBM+dYBQzrtpPGV2T9YSTTFy/\nN32BEzv7ZRvj/slqgbmsSlO5+yOL3be0tct0rferVeCtqj67loUhz2aHhEr6\nbsxY\r\n=sUe0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID2Y942L8kfVSZ9B+OMfzBZzzE5ZaM5DFhCShYC3u90bAiBHKk3aryeuT+zzKWKgknLE1eTEb/5hwmz/30CSACmvWQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594754486-3f4c8d9c.0_1594754650311_0.013381876539312332"},"_hasShrinkwrap":false},"1.39.2":{"name":"@xdn/prefetch","version":"1.39.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.39.2","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-NCe8wIM58JnFFJgoTt6aa1ZK3jiSwHo4PQzAD70jCJfD5DTMbbSFeqJHucFYOxhXnmORJsAt7JlSIbjzni7JqQ==","shasum":"66f19c18c4fef15e21577461a22286cd8f102ece","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.2.tgz","fileCount":46,"unpackedSize":78451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDgaoCRA9TVsSAnZWagAA8voQAJv/boi/S1y/wbr/HML5\nLPnU1uL2dVVAWH4Wlo2niRGNcu9t+CMq0QHY5faddQvVDLLqgEsPZd5usqAl\ngy49nXGjyVdOHmmLlcxnJMWb4MXKzgsZavjmSigrOWABIU+gjZC+trIIZxuQ\n8GuvvsBwpr+jl7Gg6AP2E852LjW95I09BjMybQcPgaNFbs3Hagy6MOfPBmOD\ncwkE0pF1BywRJMESTT+yQlOki9AvIvN75mWC5s3QYOd2r02cvQPU/ZP11Gt3\ncOOTjlIiEJR02mkfqpb25bslNDJcq4NmiQ6/wCuu4P1k+uo17u5g1L5q3fRk\nQb5IwxDaBTv2ofYdX8fuNBKBEwH1rf0A4tLGZvxhwvRWuGCDKWM3b+20j0qS\nuR+bo8xCwknNPqYx4QB7I+FIg6xckBDczF1vgFTUSKbl6h+nRHPZ5zzKlg4D\nQmUxq94V1MEdTBNbwIMdgcCmqBInb9c1q+tBOmC5CtknOZjVnEb7LqyOwDvo\n0dhxnFM0A/aUBONsYmr6DUhVx/yrmEvUI5DVaM7fITzJAs/ccuEQtf9W3o61\niWUbKUQ8c53wGMxlveWM7tSoY4tXGQQubvuCQoInhyvtTwEq1s92/MCPZ5HK\n6LEP8wQ4MBjpFzBS0ugSx/27q6AGAN/iATY/A7qsn/Mq6cordWkbUOI7XmA8\nNtNn\r\n=9jhm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPoN/kRjzZdo6xD5Nr0v8V1+kjR72vVNo8FhuDdQ4B2gIhAIeF3lkobPg9TUY9E0SZQ2wz0eC3mz6v1hFoSqa5Rpbi"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.2_1594754728578_0.8721043433199156"},"_hasShrinkwrap":false},"1.39.3-next-1594809539-bfceb7fe.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594809539-bfceb7fe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594809539-bfceb7fe.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-zajYcNAbGiwDL9TFkHWA9iCV26DtcXI1APehfnKTPml7RxRht2TofU3FRcZK/syFSrYlj0xtJO+dVguS2SZIKQ==","shasum":"95ced908428d435e4d6bf223a63bbf15ffeed14c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594809539-bfceb7fe.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDt1pCRA9TVsSAnZWagAAMmkQAKR147NGevzdIsBpCvPr\nb53BAL0BAAbcROpy51MZQjN71njdQLxCfSLZuIqi5DlAF/MgG5ufI6ujL4rb\nUNJ5m0ckz3+LYR3MgtRfk+awh75ecuYm8blAadZsZxy7u1FcgYhSVOuT9IVq\nLRDS890iIpNHwLI/XOuLExGYDqTWrsRK89uvm/6LtC4wRk5ZyMeS94hixzXl\ng5Yanthlffo+rlAUK+1zgzWSXqwouh47PKPo5F63p8JCGkbY/s4skaE9QhxU\nv78dUJCnm4W9HWHx0gxqB/mNtz+ASVcn0On2LxVSxNq24VkPWZnTG8bEOHuR\nTADoe4xxXwyVa75Dmm35aPCv7HAT/NE2b2GL7/ZTl4is5QDYg0ddp1WekBZH\n0BMn9h4FguiG1zdkE8cbbTiErKF0K5NJj4tTkDxcMqVl8+Gn48FODT9jxz3q\nNBcqxfCb37JTIYoaw7oAjdwdiYRb9lYJEcXMPwS2snY77u5Eyv4XwM0Dd9KO\nhhwzMMWkDl/5gAEpiQuKFSdbWfTJV2cOxLxRCQzmYNObUQJ8yYvw8asDF0/y\n+liYUU/JUHzqmCHfUHw9xYQt5kzJ5jbCm7d/HjCTr4iRONpXWFDpGrsJiB8T\nqmWzipG6nKBRI9bx8QzmR2ec7v/tZlOqvWR358Ug34bu+FzhdntuRjfSVv0g\nmaTo\r\n=IjVQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGke/Pjed7cUa72oM8PbTluvZSgwSTyaN4LLrCFv3MySAiEA4Y4yCHmnZSK63AJXQTe9TXCsmYJSk54cP+9cZgvM6Os="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594809539-bfceb7fe.0_1594809705232_0.8870776689683688"},"_hasShrinkwrap":false},"1.40.1-next-1594809654-8761826e.0":{"name":"@xdn/prefetch","version":"1.40.1-next-1594809654-8761826e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.40.1-next-1594809654-8761826e.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-5bEEQQ6ST+Cmm5hc2Kqu/29qQK9mIw46x7ge/hVB3Dkt8xHWvpX19jZ+pj/es4dNCRYiW0D0FEEIK9+bPbLjpA==","shasum":"ec0b13d125589f9dca7a9554cb53eba19ba30b0e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.40.1-next-1594809654-8761826e.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDt3dCRA9TVsSAnZWagAA32kP/3Ofqc0Z4GKtGZRSG7WD\n0wK7iMCaV+KnYeTLzng1ct8l/D4YUgz/zKua6dmFElPpMywEBQJGBg5geH5d\nau8e9xjZzV15vaG8OtWPsJ566xIrROaaS8zleFGzEfYm0Ckd3YjG8tGmLqJw\nlPD9NcFYhfP8XCSw2PREGkpCZhztsyC6kwwhhzNDaeE2/yC0Pn7RLVxcBVyC\n9Wet0oxg3tgcuFmtTuPf943bIKoCVcGSVurvybnd4YRi675WeI1bKQJ8W/We\nP+AieydpqBSgKRw/WEdcCpEVNgWLkBwXKJ1TnEYvODiNfdKzPGhzKjx8Rp5t\nZdf8hGJjfJVA3OT3aTlkE5d7nTqSXHQ1vUE8ek2SlQLPbdD8h7fbNiwQ3qsJ\ntm7xzptX9A8YKENorUGvHucdhzZ/rztEAYoR4LOQVYnM4rIp9N6yTaN22TfB\nOBarplXoIyskRaGAcx6zwBD0UMeAQU/TB1DsaoCBLriNPtXbO7xr1sMklBnl\nS71QxSOuhG6xlZcJs1PukbyYbNKDCCpHVWDTIQgIWnV4YYA6Np6asr/WZNtl\ntXXFFIeEqTCkVbVkCBQjjdyC2SzJUN9rUpMGzIjYhzN8CNGUIo4c+poa1huC\n2bHQ6QD7CLfBckp6DYdxErfWj2UZgmmSCbGYlWLm8i9jNO/XANPiR7jurmia\nvVyx\r\n=TzVj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGg1ZX6kgkvwBgiXmGEYRv19ZnleZIl1qoa6+xszBiMiAiB1dn06/qxacXm32r21i/aHHrKcSxzixEtxUyKQwmyxtg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.40.1-next-1594809654-8761826e.0_1594809820722_0.6504664539113125"},"_hasShrinkwrap":false},"1.40.0":{"name":"@xdn/prefetch","version":"1.40.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.40.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-HPnfx/3Njjb/oy2bKZPxAzqKbUPTUxyhdXqej3TVSmmg12Me0g+Xo7nZc55hYZyzV0f5Nkm4FYQs5N7GHQTXPg==","shasum":"45c9bfd41b219e34ebd8a4f219430865170dac90","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.40.0.tgz","fileCount":46,"unpackedSize":78451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDt4HCRA9TVsSAnZWagAAWz8P/3WVOmz1WMPWnGQUaz9O\nDcLJGsBhNZeY2iOKMck+tdkH8WTsWPFcIpkLYZcf4jUxondhQQT6gzvv4nZb\ntOtxpwiAm5v9ZwKsnKMwy46gxrelKMVQBxj+6EgcavhtQlmkNRQVAIoCKYIE\npV1jYCewNov0nO568/1nCUtcxjFIj8IXfuKNUIvsdNn5WnL26umpc/yfogVH\nWqU8Pp1F5Ex8SXhDCnhYkM9Nhi1ClozcgKJANXc4Z8bTKuNLDZXd/tKKBK3x\nr0mM54VvogtN4l7rq5mALlpTmWxqPBoLz2q6G/+/d6usIxC48Ytkk3kjqepl\nYsAARIzMdpAceAbr5Hov8i2NnqrQ2LExDwsp5oecL3nxEwUtemsaWO09tQqe\ny/jbbHFwhkbgkUKpp0+Cpl5cQ57t9/EVzF7gx8HxzHy0A5aIx7q6CcspuAJT\n4yL7JitqGrTptN5mosiIdSyJs88tR+lX/R0zReG6lNXZOCj3oXGy/ee6P8Hk\nTV7rWAKqn6cOKfVjsPtKsAI2jWffbJFkpjbTFLZKPaeAwIS1n1SV3x+0VRSo\nDTht/Nay33mdCSlHGlnwHs3zQ5UbI36wm5M9KglDZDUx8odMANtU/hCHDPKU\nvu6e82nAMzpdvzKAmVisgknVI8RSCpOPx3Oz8g7qdLBaMzOyhdE7tcitURA1\nVG+b\r\n=ModE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBG79VbJv/sBPZgbQC4485edqKBe2GxjXcy1zdXLIhlCAiEAvdSddu2IbZm4YZAOM2tdBJRvSY1k3eUPKtmIRrWKQJc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.40.0_1594809862989_0.1724537500184864"},"_hasShrinkwrap":false},"1.39.3-next-1594810237-e5337606.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594810237-e5337606.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594810237-e5337606.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-0iYEgNPhXkChsBNznGxW9/uO9reAnLHnnjGMbJCghjmKksctrc+HVMWheLb3gQbQk5YWBcBXHRFdHQL6NglNqg==","shasum":"f69ecc58c3fa5bdb6d1cd7162cbd0d0abc03356d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594810237-e5337606.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDuApCRA9TVsSAnZWagAAiNoP/jVlFO1z8jnUG2SRGd9g\nMex+syS3aq7Zua9lVfz2lVs5NQzol8rijCOKRHqdqC1yuHyXEQjCkOfZ2tcs\nwS7SBZ4DXTjx4uvle6sM2b0ZcHsPdSHFWXQVHTO2T2CQ34wUS7zecb1sVYyz\nqd1ZKyHu6cUyzw/wzNuNE5ANCoh84n8NnNMFqezA6RQ12Cu9MkAOYQUIdIWu\niQARuaTT/KaDJ2EQXe7GjTHWa3KM17x0oa3aXJOnmtEYwyl0fV5rKLqBdvGb\nBdAsAgHAq6hjIAAOS1mFyKr3EqOfoBvc5M/c9gZJtD2BmwgbI3LO/eZDuEyH\nQgUGepOQsxQqL26mbhB3xtQmgK/vi6W877XNwDGbvxOUAw3tNBAPOnnoMpdU\n6jrX/jMw6lV6d2pTPGMU3Vd9wKNq6Zur190XaLieXJPItBO6KdB7tas9DNPy\n4sf4AIl55Jl2Wrvxm/0MnuAjG+jYN8GD8wy2ZW6A7bqdqYpOEXgXOjCAsE5b\n5urhoPLtEAvHBuwl1eEjd/aCm4clQ8Pn4OKISld4rrqwMhh5ArdFJoR2TxtX\nw9YYP9ifHUAK7BFn+qMbtZGQwTrwxr3em4W/ufY+aO1WyneX5a2jdlNkOpcM\nkCNU+9VrZjoi4TMlYlKWv8/GLhHUHRM9+WGRR/fwcOnH4bxLgT3/F4TvXt6K\ntqzC\r\n=fMZI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBVcmHS1tnC93GpgEqMSMdkZkNoOUnGtCPfU57kqC8WgIgHKzdjqvM3DA9lmr/e1qJChJ2b6H84DlTzUdnQ+j1XOI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594810237-e5337606.0_1594810409467_0.8898823998673104"},"_hasShrinkwrap":false},"1.39.3-next-1594813468-60d8396b.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594813468-60d8396b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594813468-60d8396b.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-jVrPBAtQbuMqxR7t24Snf+sbR2ws04nBSQnWK7829JrhLEn2fM5rHWb9DJemYV2NVvz2ElRlFXztGnxg5j8bkQ==","shasum":"ffa9cc0a419c5e993620c3c8153da8046e48013e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594813468-60d8396b.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDuzLCRA9TVsSAnZWagAADq0P/3Kh2QPjFAZoPgFUszf9\nYUVgH8ikvjTVs9EEFEe4gtKd4XzURzIXGNUdwjXwRpfQcrhTvHenZp/o7AIX\nnIEOz78huQ30onbrlHzKqEX129kMfJh43gx3RZ3q+UcjZbqJeLlQ48ZX/LqX\nL8m9UHT9tkhgOUJ0bqtfPCVD3gbi0x2JjZcL4TEuEwOyphY+tsZ67A6w5bSM\nCJozTABGJ1oa+dj923Sk2RLAzVnBwFM5bMAEAUROFaH9zXBvWuGpkOe2eEMV\ngp1jNTtaf8HtZcRrsqc1J+1ZRQ7OBGO55UAA1PViRk34iE249cdEX0QaazZa\n6fNlO6/CAALU02+RxJ5ut3y8RpGEZx2oABm7Bh9yXWclDzY8S45YVef8oioP\nvu6p4QfLwsphrOmKf52bdGryu0BgGZFehQ08S0EVasfbkdpJ2VA9hiFxq5f8\nL5at6GEsNa5CFDBABnS0rts2vnu/GkyQe/G28UAExaEAoHRRRW5VEeMy1Dqq\nVYJlfPcHfzXCchst+V2YkSfGz/q6eF9jMm3GZReC2X8MqAgFcsBinWhICNdU\nn9aIuJy45bALHcygPGT3INZ/biAZST9v/SaJv6Pm5ISxjR3dit/ZO840Ilkg\ntUYuZgEPr06XsVDxT4zfiDNFuo/qEGNLetA/J88Euop80ySj5+vdc2evrdcJ\n95MA\r\n=JnrS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHmq1+7yfhVrdKBi+LFss/zcJg8aI54axIg2pvIbYi7tAiEAw/qSm7mCftg2Nxd692tI41j5EW+xHFsTkKgG7757I98="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594813468-60d8396b.0_1594813642822_0.27956615211357483"},"_hasShrinkwrap":false},"1.39.3-next-1594814447-a26e270e.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594814447-a26e270e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594814447-a26e270e.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-r3jWodsmHcT/lq5K5dQQ5VWsZf/X592cwNCFVcZRJKKHQ1k91BAxNOuFCk9mLA5r7HoR39v8K5LUFzZhx4gntw==","shasum":"f5d0084049afbadb168b444857a8b3f2d0e865c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594814447-a26e270e.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDvCtCRA9TVsSAnZWagAAU00P/1wDOqZqcc6ia6JeiwDV\navKj5A1TrGML9s4ilbUMDbwKwI39ysLkEYof5VRZId0D19GBJPD1r/NB+nHy\nHFFk0v8Wybc/uCy0oQX1xvpEVQcdNdbAUFUGAMpoZXhGOtwmQ39n1puCnCzK\nLYJX3ureJ0tPC6q2AH2/KY2arXpFF44+zXT3gcKJ+fcqyjSMxNYAwbYPycQm\nW0SkkDRg30hIJPZe5tXiU4IXw+LUTuwByIqVjt5v7zn0mNktqTmG3yu/F0R5\n/Br1LesyfwGm1wOXKFUqJPVMLwhRIPFBowOH/OXIhE9y2TsojE3MbAXDcDzG\nIe3EU4yabzQrDvOhQsZLRo9Z/QPakFbkISAOvA6oBLos63lNZW9d8CAxIlMR\np6TnRBbFrWoFmJI6TC17jarwcw+Q3BMGyVckYqknEx8fV/Y67wTMkbzYwoiz\nHOgm3nZX/OMvQGRi5UY9BhWxOGYSepDNJ7H1Wun6hxlxBcq60jSFlmz+Fssj\niXIVwb8823sYnRpG+zQvfSc44EGoUsuj/41HFynvAz/HSXQ7xFeC5lD2bMix\nnb2Bfy4pnm3EO/rRTOuM2jb6ZbUZnZKRiemxuNqZ4Tw/5fthioDzdJTt7kar\n+GhQEOVEK3Xx/+ToaoA4HXIgwb0jJJ+Adn3OzByY1uMh1iOHrkWFmV9tdoiG\nB8Aq\r\n=ZXEA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEDTVYaK0Hw8CCcG4H+ZkmsqB/E/FfMuQQQ0R0ld7NTAIhAO9fAX/yYfoT+9ukd9bTvXKCBGX3KHpfBonCxf/G1wvz"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594814447-a26e270e.0_1594814637092_0.053945871894715225"},"_hasShrinkwrap":false},"1.39.3-next-1594832011-d4751dd8.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594832011-d4751dd8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594832011-d4751dd8.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-VYnreH7558z1NtA7U4MbrZObRO3wiuSO96FOjrVf5WS3Zumfo24vIx3FhtnDKgf6WOm1Svzis+RXT+sFffxA7A==","shasum":"837bbeb70957749a5ecc78f3b9fc316877634d04","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594832011-d4751dd8.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDzU5CRA9TVsSAnZWagAAs+YQAIJbkvsvHJ4N811A3O05\n9uCVRpTDff78UbqYRl/DzXdDQI9yQHlpdYyoikLkO1NnDVqXt0pbujL6up+O\nN88tErxOuaZEM2zkp2FEnJ7fKmYUF9WQjj6KyvZ5BMF3Pu3jyt0cGThwnfLN\nxeyHgRzXC6UETgvXeitf5H3Y3bdY3LHVqvUdIKj2+POzbdtWCuGDIIIj9fWw\n5dbzKTBks5t1rivXzZzwf8NKJ7aJhjx5Gn0uI0ojhLt279FNoAcHdnSMfrJ0\nsJdQwOgOD7Z8NEkSn//FTItwzQp/SvAPcU0oWdCX4fT9aHeuwTDIBNe/bcgU\ne0pafAESx9/zUKC6t/8avWdrJ1g8HyXjkqmEJC3xlNcjIiKY+83WyyKXMAbT\n4N521IIT92UeizmPQNpynhkJi8wEdmKXtQTv+JU23KjQ9Q8KsGAuKfvjQFbk\nvb1Bm+8Kg3R8ZlJZ3Je7398VKuu0yz+KTKDT36mfMb2YjB50ju7UHwMJTvdD\n68uAXB9rIDGFvDWL5W/aJYXT/oVlwgoSGWAlDCemapnErExHKoYVh83HaR5i\nApayhcv91kNzdsZ7PTO14Q3OOcK5/RSFeBncvk6gE7UzUF0qVvQaJmlcemtF\nb6I2uectGW2r0QQSqz9vigx14xPs+jFoFVyuEBkz8wxCoiTHoQJCFsLk2sQe\nzOT/\r\n=iKbn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBe97jdaAwbJMNIgcGWTqdL+3ueGqXt9oQcU9GT15n1VAiAbcxL294xNyyzN/7XCrijRqBcshDw5iVq0fzlT6INlyQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594832011-d4751dd8.0_1594832185255_0.6017676803734859"},"_hasShrinkwrap":false},"1.39.3-next-1594832446-cac48aa9.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594832446-cac48aa9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594832446-cac48aa9.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-VLZOa0Hix5SK5qLtuk3DbkFl0NDd5REgmh+1nk8GOlpLJ/68coCL1i2NyYm9OGALyG5kl446gHrniv6QXGKQmg==","shasum":"21ba7658071bd251bd22e4e22993e4039791e156","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594832446-cac48aa9.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDzbwCRA9TVsSAnZWagAA8McP/3dRA8cWMaZF9H6WEJJG\nfrQkathxRlaAmwRU5NSuP9+7NdSCHw9Iv13+XIsacfixapF4Zqfd52eurFez\n1TGuBnoALKRb80sS/mLc+s+ccxPBCh5KNLHoDBPd1A6v1u15Z8bDxaqMj4m0\nwi3Uq+EWIwXx5h6YQrQEatB6F8C+Ol6i6QIVR0igJYmI5Gv7qk27adeBKl6t\ngV2b+TyBtNlAqbdjK0HGU0eLOhCWPWN3Gg2i2uUK4JpdMemeKDB/pS/brpT4\nX7F/5W6lJYOgFn109PJ/E5/0odMT81l6dowNiibGZudoKYgSkejKil4yv7MJ\nDWi2JYR1ZeZDne1WPLZdRis2AdoTW+yGvyi991hEJO2vqcRZ6dh+bIxL13LV\nNp49NinP8z6g8NCQ6LtzT/WvrVgcvdU2sprBXnJK0FeEq/iE8mUd0l1NW/uX\n8rFBx4CLToSuI7DMmlFipQiw/5Gb61VCec67pT3q+4n+7Hj9XVWMlJEe0/ss\n78K3KRQR0Wq3LYv0v8xuwyD+yFKKPC1ijkwjLCLPqCcNSX1iFD/mZiJv8W+y\n3gbwJ6d0+pHw5WSmXICi2rPVDWTwWqHUaIsSX2p+oH/QbZTc4wyuSlejSbZ7\n0Pa+RyEubLRXdRZHca7XQkWrY1N8maion9ckeVkXXATlytv9Ta0M12s/FzdF\nsLqi\r\n=beNo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHH8tE7AfEHKkg6T0dmNofPnQ84aoBq2ZppgewIGFCMWAiBzR3viEKO9PfvQjohw/qFW11Ec30HlcsliWyMpbOqKUg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594832446-cac48aa9.0_1594832623666_0.6181749851777778"},"_hasShrinkwrap":false},"1.39.3-next-1594833698-9129eb91.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594833698-9129eb91.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594833698-9129eb91.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Kad1NV4FHnE4Qa5K45AoNIlwEh0nBEjbEd40j4Y6OOeb4XT7bDnjamt5shmpNvq+mjL/xSPBjPDBUPgq/C18Mw==","shasum":"cec7c0bc00bac7f7a11fe263f3633097b9b82a57","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594833698-9129eb91.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDzvVCRA9TVsSAnZWagAALOUQAI79csOGXVaKRUr3pgux\nHoOK47uruTqTSRbGteFl3csS7RVz6l0ezBJxDc35Z7r5k9cfXRiXUt2vMmgK\nq6AIqNf399HSJgWf0o/BYgb+Yyc4cpQp2nbGCF1C9SkhgyEVArRZaHILJbXQ\nuD6pIMUMLhCICYrkEVkRb8xMwleasRlzxBl0FX4krRsYXCSvCv8G8GiXu56T\nS/pPyafEKPQRH9YZVpFKT1f9w93XNyH8kRqk37Pr3UQE1uDWQOgeF2USDh9j\nCyBekDQ9zu+vKxnvedwbuIFGLnU2H53f0UobEKchjG45wWzllTYvWvsYuMad\n6BvVVmAnPMC263iFMT9SITdALTNEvVjxfDxw2TTRKxWnuISYsUeW7Bu6pHUC\n0RSRzRHRO+glXG0YeU3STlABBmSXOlFVPDs5LUELdljnrfE71obwOhNwQW0H\nRW7vrGyPVQMEEbwIc2B1l5xHXc+b9QiJHOkZg6upiCCpYZuZ/K6CBy8ttFpd\nAxtLHVH0eeOEaxio3tkO9MFdPEt4Aa8B+rxWf+19e5iNWUREpn3KnW9Af5Bs\nslqjh+RN7eXByjyr8MRQwSfVtpjCNrmbUF24+bIHgZ4cVY78rNgfA/dg6uwH\nmeaeCwiBUDrmwy0NiV2zuRfljTCAdDHESrund71xwZWeVfokJATpnQV3tNs3\nBxib\r\n=TCBF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHCM6m6qnf+xNpmTmT8rbbDAF5XBYZKv2CmycPx0I3acAiBuNONgaQth6bIcX6STipa+YG6EBDRx9VNKKpSzrusWUQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594833698-9129eb91.0_1594833877334_0.6748150656396794"},"_hasShrinkwrap":false},"1.39.3-next-1594834400-b4212cd3.0":{"name":"@xdn/prefetch","version":"1.39.3-next-1594834400-b4212cd3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.39.3-next-1594834400-b4212cd3.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-KXT2NTYQR7WHuQeG8kiFBwyeM91kOb3IwQjOMJ5UNkV2F5iA4/+ryC6UazWbobwTmjokl8MkNYbLKj6/rhmZxw==","shasum":"4a55c73839533f317b45848b4e8797806fe6767f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.39.3-next-1594834400-b4212cd3.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDz6jCRA9TVsSAnZWagAAFbEP+wefqGahpAXrBDzyJU1P\nMd1FIGzRQ/mCoi7N0pi5v4rfkT9eS/di8F4NCvAU9ozlncJVH8WiN8QATy12\n4Y+j2nEYAngOc2vQQq4jGVp8rAFsLurv79Fj2eR1TdiWwu/dWCpYHPx0z95t\niSd2HAbTnC2hvj0+S0BEsNu6XD6hfjQKnob8Nyjz4lVQwTpq9gIHXV8CKYSU\nRSNgULJW1+yeRuOKEN3har+fot8FjDeZr3k1S2Bgi7NUY0m9OXHXWzt1PYnz\ntD9KUHOHNYjpKY6rqCMJ85W6ve0zG5GXQDfqJ6QkhE8vqW5xCBN7p50hQ/6c\nQ16qG4dX8YFHWbwrn70DDgZ4lL8oRjzg3IYPs5r3A0H6uoTT+0vrekMiGxwg\nQYApoxe7cEd1rtokNiQ7EsStmw/KWYpaVQHW50zqo9UJsvKuXXDXbDpSKWFj\nx44q7Dpez8G1nJoQn6HjGxZOAOY61d7z5MaI2tMel28hbHTWFmIFDnGgINLX\nTm8ZgFymqGK9i+1pNNlNDvydMeKOUCwolA8iXIN5Q71GtsDbuZcNFYJEu5IO\nbDVNMB20mMS0x5LCznogdx63tcD7v5UULt/fmxZjJSOg8R3m/uPzU8us/TGG\nujyOJeGkhJTsCzTgWqFJwIe1YP++WRQl8KbwrX7Jdp/SJaVKRlBpgXr//8Pr\n9KQ0\r\n=8l4m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDl3SL8wDc/ZzsISIvm2CySIur2Rycw4Q7eQiztzifQVAiB9LuYjx+T5/kjFktobngtG0kANWxQ4gJHSfeyutDrpig=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.39.3-next-1594834400-b4212cd3.0_1594834595287_0.9696424535761021"},"_hasShrinkwrap":false},"1.40.1-next-1594864906-2a16764c.0":{"name":"@xdn/prefetch","version":"1.40.1-next-1594864906-2a16764c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.40.1-next-1594864906-2a16764c.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Ifu5o668Xy218/F0fAeGq4bLyeKP5z5d+Hv1AiuV464CB3QAMroLIcQP2TZw8c7OC7eUR2+DA9Swo1PK9UCSPA==","shasum":"f1181d87c9024db321efd7e327747636718a593a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.40.1-next-1594864906-2a16764c.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfD7YCCRA9TVsSAnZWagAAFJsP/i+2DYZsfdSutE2N5qxv\nT+BCvv/MGSvHrnh4N1VxyrO0AeyNX5kDgqARX4wqCmB452li4U4+Fu0xhdvt\n9Lm8msQJaPXHXVR45KyawM+lgetMQIEGlgbDDtaWtzP+E6uAjBaWb/91nQzH\nwZHi7nBRGiRJ4auyYlZEw5RLcqZ1xyB2Yq56tV02kImvpSrd4zZE5hDWIGjL\n5Vn2A0TAYI+R0awYRqV4qE+xcFymwQC2TpETXo8RrV5LTcL7ZcGAi7NYNKg8\nA4BoL/Ms/IhWtcXD6GtXvr9m8qT9B/2oE3DNVTOSuOwy52e124mKZAERk3wf\nwPI5vPiXSGPhpkr+1EABb2TzcC2rpG/g322kahwr/Jh/1fYzDCkoiknWZAgt\nNE/X7Tl7JMffvppMBj/Y7x8Ajgc+NpinOQHyli0Ive8WYRAsvV8sC+ig+nAl\nPLYBSHupyewRljVlwH37vdTgupvUceJouywP1WK90nl7CyanViEJ4hKN47lg\nxpDtCYsezBCBkdijxiI0soosyFMnPBWQQ7LfodjGiMy7xmOqdAQVUu5WVW4X\nPtOWlQLENB6hwMfSuMIp9NAfHr6XQPRo+IrF2d2apJvd7pGdD88xKEOTrAsd\ntIn0STlpulksuP3z5nxDb994vsKPfy2TYv0xjC1+fkO+m2c59IKMWj1m8tmg\n2EA5\r\n=lyh8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvFG96IUgyLHi+Nsy7ggaf5IhQ/15SECldCC2tW5RQkwIhALpyAtO5JlE/yxGc2YTeWZ8dmv0Wrj8TSzhCn743yAm6"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.40.1-next-1594864906-2a16764c.0_1594865154268_0.45581044525643954"},"_hasShrinkwrap":false},"1.40.1-next-1594868183-2f3f4e56.0":{"name":"@xdn/prefetch","version":"1.40.1-next-1594868183-2f3f4e56.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.40.1-next-1594868183-2f3f4e56.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-N25BhAtvNShvL9/ZhRWgDMHfTNEbq+YkYRSvEmlEMLo6g8UAIZVUiC1FLWaT+sVjKL8kWy25YlaBE+ktCjTdLQ==","shasum":"8b316ae432b428d24bc8588f565d5f511f64321a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.40.1-next-1594868183-2f3f4e56.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfD8LECRA9TVsSAnZWagAAbkUP+QBIeTr9+rjgNJALMaZ/\nZl5VsmCNSC1pfzwBZJfgiKnaFJS2BXjbUUUV1x0n7ScTzTAvAmb0K+1bk9nx\nRoWufXMEQ6zTgr+JBdDN8occupN19eXUpm56WfQDhmC+UmWl51T52U5haHzG\nT6VKHRY9srOWGyXnar4vrZ7JXTqsbWrbquQXRJ+cd3SzTNzJqsd47aE8t0jb\nHa0zX2ussWriQTL5GBwDpH5t235m5AO63pJfyENuSjPWo+M2l8QQUooVnVqv\nvSKmiKA1z65UFQ7LFBDf+Kr9tSKpH5JiOJyCs7YdZ7QiaZrOxHmudArnYY19\nF95kRzMaqMkLKZ3sjBbbvK41DKu4BC1ZeCxrgysbuA9SFZv5sFuc9Pl+Om2U\nNdiZHtoabLeHH2PddhvDXSyGXQ3vS6QdQlrEKRwDFSZ/YSUYWnYvFKpdPDyD\nUc/EPu9oqNrtTwQUVTZaeuvBHOLUaLXfwm0/iDz5EoLd77BgWOhcfi7OxF02\nPQVPZgE31WsRdbbd9IdMw93kyj5h/gYWQpLD53Egzd46aEg6M1SXSmPLuOH+\nwDiKIMMzVTPA7GnBVW0oq1CAez8yuzKpkVRRayR/lR/Rp5168R41CoM+xTDh\nxtbHSGbbHZlq+1BoLa0OPHb01u4RCyVU5BlYGFK2n0m9GaFPDsuL8nzmPvdv\nyvr3\r\n=qyz6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHAqqIiIyW0/4MrYZC2CtIHtvY8BffDS5u5xT+cFkTaaAiEAjdO4ruvWUtb6KuI8RQAFXvOPnxnK3yWcSmJ4vVX+II0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.40.1-next-1594868183-2f3f4e56.0_1594868419817_0.40426186496147554"},"_hasShrinkwrap":false},"1.40.1-next-1594870573-e49491f7.0":{"name":"@xdn/prefetch","version":"1.40.1-next-1594870573-e49491f7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.40.1-next-1594870573-e49491f7.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-qKhfmSOe+m9O/0lCRe4pYPTHOqj8JqjMHjtQiUCdWMOL4ZknRZaK8aCtPzlRmHUjDtDsC65R8Mmbvp9DZOOuxQ==","shasum":"4945e91fb5439ab8696f1cc8a2c00945b7ec27eb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.40.1-next-1594870573-e49491f7.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfD8wZCRA9TVsSAnZWagAA2SkP/3BQFi5eEad4uOjCMRs2\n9dVm5xO8r+FyJdcpGJyXhnvRLTpyFh8IQyKzRhTQdI9w/aSptyrn7b7a2gbJ\nM5jJXcfHbXSOpRrllROD6Karm7z++ICOIXJndwSZlaJG/AhxmhNWOYRJP4d+\nGP6NWI2TStBwPpAqqEopcRrlKsRRvzpNsC6k5OtTzVIyKs2GvI/efCPgNfNT\nE1GurbKHBTcO3Pn2LRXUwxAcht3foTgG0xrHBz7b7hSiqAWUCPpUcjPTrAjr\npdYrYBwlZcBFbtGHaVh0w/hnhEJgQBK/i2CmFZse3/D6CCVOHPjI03HAC8Ak\noPXIjI9sgYB/kdKDUkq2zgKCQzRj7nkQSM2t6vERqm7v0mrdbOqfEB5IQzw1\naee9E+I/sxmphW2SG54eOJmgm3YtdWaFwUReLFw/yUPOxv/qPDU3TxRshKS/\nizJjBSmzQ9RGrqxWvV1Jpv15lGWFlVDWkiOskR8CY1W81TTwjg8/r8PLqJrc\n2gMvdMgvNxICQv8WMrZp4uiEYx7Fi96AWPn+x9JO3wRlMdoI3JWeYY0+SmM9\nfW1YvYYTwOLVjwGNA02PCFARsJRwo6YcnutjQXY4bX1QqNUJezBY2qx/aF98\n0Sy0V4s42rdnT7oeBFA25ukAvnNnjLnm3sOViOmTZn21WPRuYBYonhMK2s8f\nLpAe\r\n=gdcM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDo7TMyX2KSbfHJTA0UKIKa4OZvnB6yemvqBA2in3r+JgIhAMDAIiswg2Wd6gUhCxYmm8lQi0sDBuMdD60W1vvcxQIx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.40.1-next-1594870573-e49491f7.0_1594870809182_0.9056238142600439"},"_hasShrinkwrap":false},"1.40.1-next-1594898063-817e9867.0":{"name":"@xdn/prefetch","version":"1.40.1-next-1594898063-817e9867.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.40.1-next-1594898063-817e9867.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-/2V6o/JIsRlTOnrsvVjL7k1vZDfQe190MExMRuI5C+278dZBrsg/lwEY6n9MQqqYN4IsxXhTpcFYtDrxK8kOvA==","shasum":"da0bd1c032411d57ec53aa42aacf8c2eae34a61a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.40.1-next-1594898063-817e9867.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEDdoCRA9TVsSAnZWagAABD8P/0yHU31WXIMf1QZSKlLS\n+LBsnQplEBMt+qg+C3rW3Yirur5XHOtke7qrvHtQLZM9m2nBubj6Zie/JJ1r\nEXZmPL/qOCmOhv88v85zgwlJ1oxs0q8lb21ELDtufFmHmzdbm3F9ry9Nl2EL\n4EVZOcwgOKZjcZB0VRoNyXzlGBQsOMStcelEMosIwNoeQS5rIjLnUeCr7mko\nW4499KqpU1Sx8te+V71f0H5yIXTVviKdFg+Fh62cMIOWb0APpk0SFcpwz0xS\ntZu0eUkvBv75KsSw5RSk3YDCoYSHY8b2SDEJgDjJzxGJ38ajbygOXp2WIy/6\nSLzdbrJeXyzEoIKeoH6wXUXNGnDZk1cozFucUwmIcDgW9oY+OIMLp1FYxvDb\nRnm98eVqMfwpusDJXT7I/7165bGmWv8Ilci+bWemUgdZNbqRw+gdSMfrZCrl\nHnyRanckX06E5lt66TvB1Vy9YGOJ2h1LsPgcBdIC4KZBZEzqeLVK1oslpTfU\nSxZm0Aa7/GZZSb3LABk3v3yJ1ME0TbXGndYCBsAXm0KPwtnc7QycgVsiNOcv\nel/JvNTMOSF5+aEqVH3/nSneRN0heSNi+Limv3XnbRdOxVKfpkGShckr3sWE\nesCC7cM+br4MabsPlX2idyBYWI1EWTIJRhpHofHrxyqjsDmXZRkaVpK35lv2\nc8rD\r\n=Ejy7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqxDaOrqK4uYUHA7+aUQa8DZIZctH+eOyJTtHiOk+VDwIhAPmY2a2X0rVvN3Bcr3j8BWIJzeaLiX0fo+923OqzqZXa"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.40.1-next-1594898063-817e9867.0_1594898280386_0.3489793015166347"},"_hasShrinkwrap":false},"1.41.1-next-1594899124-f8e682ca.0":{"name":"@xdn/prefetch","version":"1.41.1-next-1594899124-f8e682ca.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.1-next-1594899124-f8e682ca.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-D8ONRLf5TaOzPzEorIw4Tj9EdGrVydAhUHWUEgmeYDrQ4f69g830+fLWZRuePkBIDnKWbf7cDbjT5xKeEeiS0w==","shasum":"df03707cfe1771772af8af61df3a70befe25cfab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.1-next-1594899124-f8e682ca.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEDuaCRA9TVsSAnZWagAAqZIP/3x+hQ5ZV0ai7+eo/fkj\nCM7SAa106QvuOKtf8nwlde20N27j8m0ZdcMPAY0Iv0ERXp1Hg13uMaDMRO8T\n/bXYanh4bfJ//NXIz408JjsxNNECvPDTq9QMdH5Kzl2cI3HwmCjgepcnlgza\nu3UGvfJvTpOvpPNZEnzi3SqmHjcpB+8rYCgJzmNesIBwLPDFx1wWvBTCkvAJ\nJF4jpY7AoYBoD7iAIikD8TUJRnrMZ+RrCxuSKxjMWNzfkyJDAmgjKdnalesy\nH+wRaSi9D9saX1HYNOFeUKVlFETvdxr8nYJYJfwNqPHVcSfhyay3EVhvxa6H\nqM/KodFZQvnzGpUi9w9MHNdl2wORYaMPagZB3Svy7Dz9d8766+PzEDdyduZq\nS6+NG+X8SvfVpH7TYdluMMB/NRdwQ2U+SUKU1aCm1M5ipnL3kWbOJ7Q83geU\nnnK9lNrr+Te9J8YNyRRq8lGAbjDCXELKq0D0eL+0/PLyM7cNEK/V8XGw08QE\nd9LL8Pho5FoAaQ4PpqPK9wvBk4nVMy9/PTC2TNyqW7zvAzQYLS/eD2AVX2TK\nP7FnTUokcJnnIFxo1NEaTH0BDplhEDjzTSOiL5afKrgN6onpseEAdISIDPwG\nTpRhinusmUCe6y8aMYGV0FVwcIG7M6TmR482zpoZdZ1Jf077jUX37WJ9lfjj\nJZy7\r\n=Y8f+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCr18sm7pUWZ0+zPTj86aMHbL2jSAPKcHbtc0qteLOrigIgPkaugEXHpwPLukSLEGZnzqGYlOtmrdFJAhabtL4EE0U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.1-next-1594899124-f8e682ca.0_1594899353805_0.2459848268836613"},"_hasShrinkwrap":false},"1.41.1-next-1594904480-c3421ffc.0":{"name":"@xdn/prefetch","version":"1.41.1-next-1594904480-c3421ffc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.1-next-1594904480-c3421ffc.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-2d91WIi8VBgs3Rn4v/uCVgQgn2cADi2QzOXnxkNqDR8tabmipeRsB1o2MhyLVODAOtXEFhJD/CsFDYOaKGFERQ==","shasum":"ec0f6de351ea8c45b3e674e3c3fa51459ffe6b33","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.1-next-1594904480-c3421ffc.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEFCMCRA9TVsSAnZWagAA7QEQAJqQRVhDSze+8P+D7FVh\n2I+GQBSLQSH8cnNogl3zjYtbXE+I5nzYi7Gcy+UheCNluU8Og1w60f9JVtg9\nNs5fL9Eahc71F4U6DmhMuwPD/40ZOq+95b21QDb3HZGdOiUiHaEiUk5pp3oU\nw+dt+U0eU8SeDaxSKOt3W3MlAxs0y1WpEoa37pF1U1d6G5cxOnQG04D5Sd1u\n1X5lPsFwcfBRWN9/I+QaOmmrOCcP3cTLioCDqSS+SijDgV97f/9WPuQdLprA\n/zOuM0XLflLpxlJ5SpBxPF/dAt+EHuWxJH7k5pYVOi2rkp3sdS4ruC3BfNmG\njdjr0St2UXrJl144bj7+GSKeM7E4N3Q9dcqoZkVMKKNvu0uAP59SKfnZc6pz\nLBNa9kFb7XKEGVETNFMFsewseK1yby3bX6G7ePNQ8crk1rWHy8r8isUrEvx9\na0vxIe9huDgAoOVx1/Ab9awbHdzTbvBzGnY+ffTLEg70Vhd8aWUBItZycNoa\nP56/U6UWU9+bmFA6gJrN4gfUHyQRDTK+cO6tT8XGgasqL/1zk0r/6J1QFuJC\nuuPl1OUWlPgC50H8/AxmGEVRv0Z9TLvZKl2EZRHmIrknFRE4I4tXfHEpEmNk\nb3xKjeoWc/usmZ3BS5E4lEKqonRepZBq5wALYaJPQIAmaJjPvp2h8EBmPg4R\nbzs6\r\n=03dD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFKP2YE10vpugjOCRazfUeIfDt3h4xq6MU6B9ljdaLZcAiB3C1EBlihlHudawOd2c4yr3ZNODvKLd8yBnXUmcbDCDg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.1-next-1594904480-c3421ffc.0_1594904716221_0.40350634418373543"},"_hasShrinkwrap":false},"1.41.1-next-1594905040-3733a603.0":{"name":"@xdn/prefetch","version":"1.41.1-next-1594905040-3733a603.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.1-next-1594905040-3733a603.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-tfhwz0HDWlKJmqMeEWJhbxhA6mAS9Sxt/SRB3cbl4nr3P75fIk8Rs8fhTTXMAD6Pa4lk8GRKWaSKWmom3Tbcrw==","shasum":"c6160f0bd4b42ddb7640d702a6837df858de3293","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.1-next-1594905040-3733a603.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEFLVCRA9TVsSAnZWagAAX28P/3jmAMjUjslzv0rffEz0\nZZNhBHrmvBPwq4n0WPu59ALgusn24ZCnPufXrciHt2K0YEVXxm/0eY2S0KuR\njqmuZ9cK+JBTWrbf9ReC3tvJBpgQ1kDyOYPRFhksU3gbDoZIpPq5sw+zhsuq\nhsXDVKWUpVvM/9X4NJWOR3IMdJq4nBtHUS9CtWm6U0in2Nm9sBZYL9aB2KUa\nXk1TKnEYHt30YbBgNzBgtNqzCZn6GaxIVya7mMLWrioku15yLXYg6Gh0epmA\nt8ohgQZNsJEoF5nZ4ZMrkuwrdVG3wQ8PS39UsHNMJuzI77OXZo8uXdHp0Yxm\nHJCgJ2Veo1VTjzcZS9K27Mqu0m4gn+bbcy8x7ATfxK7EUd0AhQ2wOLeguAKk\ntPu23lbWd3W3CCkF9T0Y+LMwUSL7URbZKkZVTLUTjY7gDtJON9dtFIilAGsj\nCjDwJrHHeFDtkSocg4Qiugu3rgtsmOORLAFaz0MN6vF74oeels6oAnsceZXU\nZohKGtzqjepUQ8RocdPweX7JottPCgic5ZO5OUrm3eu3aD0YGJMwiXuSAvrq\ng1MOcVYFkMOVAIbCai9uEOXf761TjxnNsRnrBNjSZCwVNQxa50/tpUhGjvgF\n9QhsjPXmH7skUtbNTwTbhFoiyW0f/etsn0bE2a6aoNJNaD3EhRnePYEtjTla\nPaLb\r\n=ProT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWwdLtvxKSxXtYnZr9P5CzqalbBeNIgX3i4oG5JogOFgIgSR/UiVhw1CzcI6eD58gnuRZzkx7GcDzkyd+a8F+Lh/I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.1-next-1594905040-3733a603.0_1594905300675_0.35379114636122266"},"_hasShrinkwrap":false},"1.41.2-next-1594911210-60d938fb.0":{"name":"@xdn/prefetch","version":"1.41.2-next-1594911210-60d938fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.2-next-1594911210-60d938fb.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-T5sHZrXGARC+t0OhZG1p9z+WKiIgJj2qqE0hNG7I+m4dOTSVt/3SrVmTK6darvt3jvLwTrlh+ce10qBDccd9gQ==","shasum":"35095639e0ee16c6b8523a1b97f394f2711e9626","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.2-next-1594911210-60d938fb.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEGrdCRA9TVsSAnZWagAADPcP/jo8RHl/JDxE2pRauIbA\ni+FdWfwNGznCtdfQy+pMQbu6GhKjY9/OW3JgjsH7OZU6SqEpjCRiVxamfNF3\naCCqKbR9nkHrD8B7ONLgqoC0UiSk3d+JEWziaaFxA8z4KQtcWdM3Jh1HBoS3\n51UFPQLm1V0iPdjXQZJ4an/+kCD/CdIsf88XSEEmvIoXhStS68Hno3m3AEA3\nX7+5SrMLAM0QAnhZJZUq08fR6WkyGQFsSSP96MPusIIsi6of93rEGGmR1A2j\nEXoqUt7/WUzGcoQGLoRa8v3yj0ElsNTsDI1mht8iedLcWcohlSWjj8NyfVy/\nRFgTYBdMfyaxvGFCJ4qYBO1n75n52IN1Vfe/LxFqAtgv3SojfXlCmCeJXhGH\nYDsfDEHp/tFRLtWm2RoJAdGHDFpgno6bDoor0skZB3QNpm+8tKT29F4k8LYY\nxc2AfyAWyTtZ+4oDtaAhdJXhnEEUrnUvUmOBNkaWRe0lJnXZA6LHf4h+NKlu\nOEpI/KWTZKfMZe5FcepoQj7HKvyr4vhqri9P6JtjTWjnjBSwCjpNk4POmd4W\ntuzCKpmyMcONLoNVQUL7G6qNrxNdnkQJlatMpCg5tGw+RxqUaONAUnjhV6Or\nLEQFCNORWDC+Mmn1fhe45l5PE6c/x/33tZE4c4b8uadwVTsf5jTnR6XiidQ7\nFHx1\r\n=c7VH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPZNrTtRwTTLrTPsAwNDgty68rXdwcTwZ4JBfdBqzWUQIhAIlh3ma9ONu8//GJDPNzNFMsN3snFiZjoPy+sadc57PR"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.2-next-1594911210-60d938fb.0_1594911453397_0.127928246684615"},"_hasShrinkwrap":false},"1.41.2-next-1594913330-b864e920.0":{"name":"@xdn/prefetch","version":"1.41.2-next-1594913330-b864e920.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.2-next-1594913330-b864e920.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-gqznXcLoYBdlrXw1BPS9r7EREqf+WI7Uh8wiY2RxKur2D4ia1w8Kze+M+uEEfZhEvkT3F9S26cGTxAZS8L96qg==","shasum":"34e24a336bf25c4d9d615c53030c4809e0d74a46","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.2-next-1594913330-b864e920.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEHMiCRA9TVsSAnZWagAAJsYQAJ7svvmNy+xyIHx3ptyF\nCQNITNTLu5oB9nNMzedCq5WSnXTbVjWWKB6jVjs6J7ttdy7vA0TWXc22tmIH\njpgd/QKVavE10a8DotjSW4umE8KIXwHSBGSHNgymzI2NUeeDsbB/nPOJ+Zzb\nnH9y9zb2oxS4umDsk0Com7tVTYDrJigAZahHoTHhetLNxlgMYfST9wANY107\n0GL/NdM8Xa6h2Nf5btk9peb6xMJRWN0MNfxHysroC2j7G9V30v38STjhk9Is\nz6vvoktF599su6+wI+DJU2SIb7cllkjk77ezW3hym+z2a4GPexqUc1/megrp\nQNkK7egYWubZ+zbEwUnqVLKl9XHPyz9PnqXXdWsw+NHI5NEL/SoX/kQ7zQ7e\np6yX1zEmLEWmxTCH5dgwsBXFj/s3r6nkckDQP+KLL1ZyLd8EkPfushfuh24k\n5jeFdlOiBcg8ucgbRt9/2+9a/dBX+KLEj57MDV6q/ES9ANQJS5vfZNzUZ6/G\nl5E8P7+tDwE2z9aX4hNujgt/J0Vt4bBT4kfNssLrPcomgZgScg6+CmbQ7eXz\nvTKGfB7N7AumlzfSXfLyjFLgKukmj9mTGASvBEY4M/26y9BZ9G5ifACLVnSm\n71tNpbKfBuS83cvtJNmLjwfQCYZsY/0D1vKo9s++50cxTG75KTU6woG0+ecH\nz28k\r\n=Xm1a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzPypzOPvDu/oSKSVFUgZGDngXgwS0uDrRvMV2tO74gAiByq7lkvryKMWIpSmXtowsU7hUz1GrhH+1cl8AynmB9Iw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.2-next-1594913330-b864e920.0_1594913569780_0.19097460961066726"},"_hasShrinkwrap":false},"1.41.3-next-1594913470-2e2c5d18.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1594913470-2e2c5d18.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1594913470-2e2c5d18.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-PuD6/pHYqi3aJIGuFT4gmFKhUKoSCSiV5adbcF6/p8um8aet7dwMMH0U/5BEmUAYvb0qVYGoc+LDf5CH6Gax6g==","shasum":"81d497be58268f362b0bed576ac14e3f921a6f48","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1594913470-2e2c5d18.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEHOkCRA9TVsSAnZWagAAUwYP/iRdzgAaWH9Ym0kAVp4L\n6J8QVrdWaQZZAikQtKzRBJZ42Z/T5uDXJZo/6kJQAVgdguZIBYlP8QdlqYSh\n4NMfd9xrgUajRyaAZWaDQkCEI6t33ELTeqdtxPOg2G+38Ff1RYnOwufqmwMa\nCk4p7nAICc/iUcZBkJxT180+rXH8jJSXmY++ZUnIpUZdP0DEqeEHQi92D2sN\nz5vJPKsiy8eBzoO3yhVGWNZeryLDnsRb4RgDQSg2dVmAt5yftI+h2/6BEnQe\nZNTuZgL+EIErPlezbxlniC9MkfglIpYcxZitDJDKSNmbgmOh1DEIgKsdDMiT\nYAOdF/ZrRHjQJGLkRkuxkEJ9Iwiojw7pxuSqjgxzlmyRNpfb4K08GqVXcBPX\nuyJNXMKqXNHPm2IumGR5hsmJFGkGDKJ00HZp75fijxeF/zKMJ/IEiz+hlsx2\nU/t52DFAuhEEO1X13eJlTr/k4kYRXiwHunXquEef6MIrMLz/blyZuHpMtnyI\nRvIDwow9jT1acVNqo5I5OUoDQgcKzPma6QgkNIgYCXPtsh5wbRDfmys+aYyJ\nVhGzr4a1ZZu0Ud/yJrEJDyRyH3dbI3+13xHYL1PNDI8fB7fTrY9/wKpbYzr+\nrG010ki5kbUoUUD12HNnwrhlJgL8fG2yP6L/y+A87OV3PVDJW5I9E60SoTtD\nJXbZ\r\n=G0+a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBRBXPbHLK8efA1Y0Apa4p0YkYDYsloMKpR1W2Csa6OgAiEAmRLFbk30Ssm998GLk69BdqVtCU22YgADzbfpDOCre7w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1594913470-2e2c5d18.0_1594913699936_0.9064914248029483"},"_hasShrinkwrap":false},"1.41.2":{"name":"@xdn/prefetch","version":"1.41.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.41.2","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-MYEH6GQ+mzpeM8+PBFoaf9IDVPXafykc8y+hzppu1hXXBlfd0qBMRIaWlJwcpwm5sFQMglhvTJb+8KptDlnh/Q==","shasum":"281f73c023b905d95e1e8f5801c35554471b446d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.2.tgz","fileCount":46,"unpackedSize":78451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEIINCRA9TVsSAnZWagAAEwAP/2NflPzwdc+8BQBB3ebg\nc3O6vsBJJC+t5PlSLxOy12e4RLtNh+PHDmsCyE73GMiWjQ1beex4jImnIAyc\noIROtqSZ92Su5ZYsGsOcpClZPNlbFkmjTBjTcZsG6xyaZ7ChYadcLrl3bENb\nLulzwWGaVkGCpE7WR1RgFtx0ZkYlrbPgI4wCRUS+Ak+aOJTqJO5GkBjlL0tL\nJw4jvG3cxETcBiSJIvzOybl9Mp+674ySiNJZJX1tcFeNEQ1snY2W6O7wJwdn\n8RRiUHxK1cxBi0ZgxtjwThEr1rxp8w/1rhXTVYyrQXcxr1jK6W55fYDcFdxI\nPubejXG7uKfDaVQ37EM+k0ezuoT7KP/9l+kRpCIouSMO5BzNOW0R3FaHJWRt\nF6BAKokubslEQQFH7rGoT99ccmyn+5qzJVrtM6BjAoCpkqCuYhwtkgPSLuQc\ngTt211LqZmB1pnI+5svqOiTNCotVJYOPzb8ynZ6n+oc0fpQw2hzpZInUsrcY\nX42tJ083rEr5RfxkDfP+QF+jZeQQnp41lkdTFfdf/Q/qk3qd5qZlSiiNgUGE\n4ZZIhE/IkIwEOmPNlOr3ELSj6gJ6RaC9QhcrTECO6hvs7V0DRq011JeYtu5L\nOD/kyYEbuh84uUYgjrCo01M5tTKIdxi6LDHlBd+Ckj0+BE9W9B2j8SQifTvn\nJb/J\r\n=8rSQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCR5cEKDcYOY0ccp1crqRHPP/VWRMJ75IIf8amuQdtVAIgdCzcxwEZqc9Li6Uov05pPQXDL4E7scarLNniQGc3cic="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.2_1594917388530_0.9185366541992941"},"_hasShrinkwrap":false},"1.41.3-next-1594917390-6046d6fd.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1594917390-6046d6fd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1594917390-6046d6fd.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-4OlmQZF8R+LeecsS4DaBUGkn7VmWjsQmzD0kaJ0L9W/orLpzFXRub69LvpZyHC3ysrquGZLJgegrBTjfotQN/g==","shasum":"1fc0c454f08343c6b18ef04d31b3b57b2aab4d54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1594917390-6046d6fd.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEIMMCRA9TVsSAnZWagAAQpcP/2eaureT1xgeqBK7cH84\n3GVzsVjiCfzDFegqLUJL5c4683hFGjwd0sIP+277TkCZm42sio/sH5l+GoOf\nOTbrTHyuZYn5KmzEjbaySnHm8tSyrEb8/8VG6PiuOxsTgHuK2+V6Mmv42fPG\n4NUDhrFq+gA0dlNPeMN5tkCM6dYrTOtGkFgmaoWljNpzJpghVYzy/DzZMA4y\nPLHup9EUxgsB/sPwTPE3t13OUml8zzMwJQSN3zdsSNp9ot2dw8gn8jBZGY3N\n+5rMWFFZZw6jvJCQesvtlk7QQcEMnOPKymkuOWHqz7aHU5D8pIJdfDuWjNXf\ni3yGxIm+WYSvpbSljXiqlm7q72HtpCS0eecBYlOzIVuJ0JE2i2ydEpezc1I+\n1lufdlVIpGXwMDhl+SvNnFL27oO1O0mb8caWqw86bT+92ZGndiM0y38HF3F0\nRjH2wu4vlapCXbTMmR7cDjfwwYsbwICgiFDJV3+0EVvDIzE+CBNGzMMD5VTb\ns6IvvnFLYsOHBrIlUuoi8BPWwWqeaWjwJoeO0b06rKW8MeiRAPt2UB3FPINC\nhr29FCWzh7mXYcPejFORUj+Is5FrvH3yK8bTJ9PO2+z05EQwtpaFezLbF5AM\ntPRexqZJIBUqy+1ACZD3vvrRydNHXBxJMH4+Vc2/zdstXIytnNFpZpExzBKA\nf3+Q\r\n=g7dC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAdfBFxLLwTt/CSHroXC8CJ7Fp3DQ/VOodIRCBT89Q0hAiAFRgVfNf9wTUtw85cVBAPyAKq2yiHx40gUGpqukhXIYw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1594917390-6046d6fd.0_1594917643995_0.5489604054916444"},"_hasShrinkwrap":false},"1.41.3-next-1594926395-70ffccb0.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1594926395-70ffccb0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1594926395-70ffccb0.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-+knZsPvKZP9mGvXI4FwqoPeZZ8c53HWIZlsUxI5bvDJjwNVUGF1tqJPDa8MdYMSdouzu+dzoaCaj1YsL8LFlxA==","shasum":"cdfedf8e15119794cb7cfbf3d28db43ca376776f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1594926395-70ffccb0.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEKYnCRA9TVsSAnZWagAAy84P/0ZthN3P6uoi96TCzfF8\nCqaBJ2vxYtj6RorrBe5Gd0wbo9QhwbuQkoUjUihAyVKIPg94JMozPkYI4PlX\nDnjd1OZx+zi5lsjjkxxA7C1RGrmeP5KjN8f1RGV2qFGThKnqkQLUZa51DO+h\nzqKBWdP+sVW1P4f4Pah7KgNNi4oDVweO26oDaSsFZmyP7VINH9hh7IrheVPI\nQdCbaNu0EqlqvoeFtWbnwpzcLlK/BGtKLlsXd5nVqT5SdNIRaKM2KvVbzESq\n3pxhCG2LISOp5+H1kBCPov8edf8GjOQ7GRaHvOrZymxfqON+SEe6vdmsQqTI\nj1F3Rwl7/0QjogZIAXsT7L8EtefozAHrDxXkQqL39rEvSOyt56bkvWBI/D6t\nh7tpkQZuZfzUREqGqFfCSG6wFrJSBTHM97XDgWRSXMjLcMYcxjf9U6uF7FJi\nHcLmsTjJ9ym8STcipItmYX2+ZCaK0B/VToxDtCeJCMPsDRruqwTIty0dmQs3\novuLxHl2+bxfHOEWb2CY9yRd3Hf/2Z5CUKr56IG0FoUvXD0oE0+y+xMJHrW4\nHcLB4Qktf3Fw21J6RRisEd9hvQ/8L7Gk1Z9MmzqN0tURL7AQ4lcVWWzXCuJ3\n+PGI5aymcC/lE6Py8tQP03PVdNnrIKOsuLga+C11Cx6ldTMW+Jmvg8GXUxKV\nQAV5\r\n=w/57\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHNTpL4L0Zkhx/LFuQbfc5MPFGa8ANtigRSphAHTZMXcAiEAp4TYwGLmWgCZ1B2CSwztO8tnK2PYXUtpTotKKrUE2/o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1594926395-70ffccb0.0_1594926630919_0.5242908262092758"},"_hasShrinkwrap":false},"1.41.3-next-1595005637-f8a8f5c3.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1595005637-f8a8f5c3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1595005637-f8a8f5c3.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-nC9yW7z9n1n3yN+NU1ebih5/B0eROq+CnQ3CPyADDTCuJAoP9WVWSoj8xiD77kukiPctj7z5yunectW/mGdhLw==","shasum":"b1bf504f979f662ccf5831c7006d243656dc2fcb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1595005637-f8a8f5c3.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEdu9CRA9TVsSAnZWagAAeNgP/iPhGd0dpSCO8ZVdpW34\npzfGRsf4A/Ucmx5ht7Y27WoWS6rp58G5Ytr5ZcxkAG9VDobOxmFHa/WxB07V\n+kpLmrtCFKqRcg8rxgyTsufn+hGZR/8e35h32IWCfDwqayv1l5w13IjTeQt8\nvlOV9fUL6SRvX8sJf88h0xIeQbTWQE/hGIs7CHLcrRxZbyz2SSIUGfDGa4r/\neXDPDllfdrgIpdtBY5uoXEAt1JTBsI2w4f/y1kKfkNjM9ol6GBogSLPyg4Ym\n8WKchRpygXICrIBmc8u6DdqnyKpFXai/6VaUvyyw75JFc7pVMBb22ZkDOZMv\n1HIcR6JMkw3eLMD9SPBzJY21kF5r/6RQuH61bzUTrNb9iLnAfHROaiT/nd6G\nzoXk6AO1PW7/6QAICL0JxQvi3TED+xntWOY8hjzmScQABxPP4S0g7So4QGoN\nMFld7P8WM/DU+SW7QrBl0zp3+q3fIq77IVUJwB5hLeKLlsvqRmjrzDqekPHg\nFaWd5vepaEWVFfVcvbdwBiD4XZaetkrWtjis66LuEsfBpn1reUK3EF5peWtn\n8a4jCxhhKTv5o8GxpE8SiISTvk1gCNvGRpryYjd7NOP+sZxR0dxAHIogSJCt\nopk7Mq509MI8eG5mgEpkeCwO0KTCriuW+1RpQG0qJQpGDe6eGQsU+zg7LgD+\nVjTW\r\n=5+MD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDCKxCMcq3F3zKQ+etu8K8VCdjTE29VG8+rdzAQLXAFGAiEAv0OFwzvoVt99RfMK3TrI2NdSRQqfRRtguBKrcj+EsAo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1595005637-f8a8f5c3.0_1595005884835_0.8957568939886529"},"_hasShrinkwrap":false},"1.41.3-next-1595008005-e0ee1f4e.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1595008005-e0ee1f4e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1595008005-e0ee1f4e.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-8Crs5+n8rFOHJJ/LORZ5/TKVvntnQVVARbCkDeQeh2dlZuduL0WaJprW+3ol88/nBCMxeT9dv5ui1h4df63GnA==","shasum":"3c3c6ee46501e7f6846177cbed5defee74f3b10f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1595008005-e0ee1f4e.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEeTiCRA9TVsSAnZWagAAvyIP/0k+cVAMmHGKDwUjwdz6\nwinl14xEWxJetJZaMKRuGpNT576FVhYvun7KfuOnuD+g/mL6EklUv32z2bOQ\ndFLxwm36P3zyQdn9B79XSh9sx+VH/nubo32birfMC5wgDWDY0WIZmyBr7yfU\nnULOnhd98hoMpDSMfRsvWABLxOb+kVIKz7vObuWmuQ/vF8olDgzhfpLpbyhO\nk7meZmJ52fOBSXynTzRAsxdqY0/nijDhlsI1eZjew+eic5Xdezht4mSg2hMe\n5LIoiXEMYr38IhG0IQSmMVikNDBO1HT8nEj0obBWDwg7RMrH870Mp2+zrISr\njdrmDd2XUN6N/9J0m+JVzFg4OeToyvvGJkJ/mwNKviQlIuDgrQ4xqCJz0Ipn\nzc2WPKbU3VJ2e+pwOqCYfLtcZGrvZUYTN7ONIhQ7J9u2bOPbmWPfgbFgKNYJ\nJW3fRalJE0MnDTsJBIeNdpUkHzEyZr7I2G5ZCnWEoLXODSbmGWj7Q37GeVym\nEcU2HiOCmw7ZyYTQy1rq5j3T1uv0NOQGIaDgGZnsQiichQrRsHbfx3VV/GKa\nXdkRAGtjajDYsOQs+9ZSm3eJRHv8HtsJ3+9eWzy0fWMJ+CNAN0WWFArb7CbF\nRXzQ5wLn3zubKuE2lN8steLXm/+XRUfJEQ99n/vgilfGoe0McwO65rIVf0/T\nijDO\r\n=/H3/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHKMl8DFGmLnJBxUNrkWGDu1BJLzlPfebqQh7HtMSs2nAiAcoBR2wcuzHmJEnKCCcZXMVjgrZ0bNQI2LqLjWNLHJ/w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1595008005-e0ee1f4e.0_1595008225432_0.8897787085935818"},"_hasShrinkwrap":false},"1.41.3-next-1595008382-836a4804.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1595008382-836a4804.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1595008382-836a4804.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-VuEHUSCLwf7d7q+tGo89DOHz3mjZ//Ys8d0F0be0BorGLMlepjIh3LkFTumv3WVzEhbh6AX6N9J79poSdfb5tg==","shasum":"9843c316ad865a7de65a80187c54340325ab127e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1595008382-836a4804.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEeZgCRA9TVsSAnZWagAAhFUP/3DD5KmbNcKPJ5LgRNft\nUwViCUtYq2VW/uiFxkvQkLmK92tnhJD44Bdzj2TRSYFQXm1i1ukiklOELw8L\nj2uIbEHpxf0F4bm0eRaXsU8IcUITZbhf+lgP21yYgc2rF/LPwAbXje4oJfeT\nzr9rM/r4FlHYCzwEo8wxxY20yMtFlcNdtJRX0GNt24IqhDtzo8Mvcg8FKbtF\n8u4EW2+2cbtsQs7CeB91Lu1WE/Lc90ZcaDQ6+1Q7deSZn4aSJs8nbuxD7EPu\nxpVvzCFnxcavNFUmF+Rf06TCTdbN13k6c/h6TQ9caF6/3QbopXuWID0ySVy+\nDvJakQ33lI2hWtWV6e0wOcHE5RxtgRL9kZVLdK1cUBv6SRlcVWi6M5dqwFm0\ncm5caisfFahJ0fKgSCHYXKW/uRN4btP1pcoNA1dD1WLwq8UvptXvjczjGAWC\nREM/KoG5lGbx4VXjfexmj6WXCflquVHRbNu7p+lBVYl89bBhl3i18wDkHIwL\nGCcmK0Xkt/Dry5Z4vQZFraTA34wWA58BDTLr1GtCUoUYa6Nz1p10WBFOSLrK\nSKg1nRcLpnmyGIfGFGLx3ShoxFP7JwC5jUCfTBfVEJndGaQ4KD9dJEPmTEgh\nBN/iZNyEaOI9fMpZY44TZPKTh6Ad7WiNEeo0Irrv7US32nWfIc8LkK1BSQ0S\n5eXQ\r\n=mHiB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDXpqe8u5YpNiA5QVOwR/6VMwqS7NobzSjqfyW/RHkZ8AiEAuDIuFon1+yE84cY62d5xetb/uQI/3zxeiuamrEVjd5A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1595008382-836a4804.0_1595008608198_0.5547135912516943"},"_hasShrinkwrap":false},"1.41.3-next-1595010640-9d9a9ea1.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1595010640-9d9a9ea1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1595010640-9d9a9ea1.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-EHm14V9QXm5wsXAiieW7PindaLXBG5awu8INoWF0W4FJADDI9YbETSZXLSG0plAq1yh3fpI8qYLh3IIvhdfpEQ==","shasum":"cf4a9e828a9298b869af6d343f8c3db8b3dd38b5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1595010640-9d9a9ea1.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEe9YCRA9TVsSAnZWagAArbUP/3IX9FNRP6MzKCdUYU8b\nRj5dRIdl4vMsklu1WTq7WnOS+kSQcmGGzD8M57MvUD7U5ahtSmX2gRZbUfSV\nZYfnl56FFx7mDkesYnaFJmyOPdu5DNuho+W4IIdYMZN8tUbtFHI1uc17L4QU\nm/lKwFAK3BPz0b5Ilgdzzpzz7kvlsM81S22kC8V2Nkq2xbL/T3s2yGJcva29\nRuFuv5aQr/T5ToOYJT1hF6c18X4wzqWh3XEf+WzwXe8l6l/RBlxZ+5AaNCIQ\naS0lRhosAqeXaeBsc5Sx+ieRg3Taz1Ftit9eM6vw2CMoVh9JL3zq9CCdx2ZY\nnjFZqXaoEijhCk4eS/c+F4E1BV9m+GTFKykhZ82xLxGyhYW6a4WbybF/BwUf\niGhoGuCHtj9nxpYRzNvF9qXX0pveMT7tajowmpAFLLz1IySau+b8o+qvzIZ4\nyDP4RPGiyW23Xg+rHjZHQZSg1JaitF7no4BnEF+Wm9D0Q8W/+qwM9hecjrJB\nLkT/AN835W5hH3RRlCoLuu8rHmKUv5xc3/O+UEoawg2LhO02VBUTgUjJ1sMo\n55ivygM74+fl7lY6caX83v2b1H1s3yVYcwFqtGIM0mQ1CH0GfSdbXd3cllIP\npi0afbkdQ1Wk11wfcX+Lr2TZo8BjMdnF4s0va+VIyBW9hLW7muxGpTi6IlWD\n4IIR\r\n=OSz3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2lFVCJwILzbNw0PjUMGwM0azHcE57HD0Sd0pzuM0x4gIhAKlWmNOaeVqnEChja0CVcnt/izlRrdlXOlz6f1spj3ow"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1595010640-9d9a9ea1.0_1595010903915_0.7813258828002736"},"_hasShrinkwrap":false},"1.41.3-next-1595268075-a3522449.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1595268075-a3522449.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1595268075-a3522449.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-W9SHOYkr3Gyf6s843KILzup1edBTmGpFPJsD8QgbDYCe9quKHNXdXgbIcnpaFZfEPMK48Okbh2axwf+4uOHp1w==","shasum":"e6c9df123dc948b4ba0ef7a2de9ab6d944c6ee36","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1595268075-a3522449.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFdz1CRA9TVsSAnZWagAAyp0P/juBbTE+N4c9MfjH+vY2\nbnG44Gj7ltttSpKLiKyF++I2+ZqRcFSPzLQPecTFCQqL2ppB8gW4eSGHdLKw\n2saWsSxQXh/kzaPwzSjF+7lg4qQocCyswKndgk8vgwLtTXytL0Eccwit4iME\nXaflgcafF84HoUwrPphfsgXLVwqPT8J+SnZSljSSaFYWXKBOS5QmryEO9hLe\npJAIRUu4NY7t+pMtdcBg09FZNim24W9EcK7ijqKlGY01fDSMSQjVGfZXa8uL\noW+v03oA5htDgnZzLKPsxl9blB+p93a29mRX8adusixNILE0ZTbfxldAIV3p\nXNDOSpQsddrx+Q7HF9EdgzKSopVkzOcSNRmZyTecm7ydrd35Hz13QjAu7IJt\nhnWzHo5qbRwke8EIKvkoNRbyfn1y4kGPo+IvtXmZ3Lw889MuOpU4+vzU1HXn\nGGeGohOowLy4Ljdrt1DVC+7d9E0z+M6KXiNg4RssYMeMss1DfhTxaZ/38KlD\nhFqVPUrY1F+3o8Dw9j21rsmMQK8Uv8Q+UvN3iSjmyK4Qytt6u6uhyeqQFDj5\nQ8RCuvmy9BVgT3nzHgK+fGobCcUbTOlnOzsQBIAj/79GnvAWPfK7AmzxRgjn\n/INmuy26skIn2BforrmXefwFzacex96qu2R17XKfyuhjZueykj2ARwEv4BWh\nGYHA\r\n=sN7u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvCGaWLA0/uwSbRKD7S0FffOH/PoAx17YWWPnyPDGOnQIgJBHd/VmKVt6wIr2hXiaqt04zXAS8Xa6e7VeVlQzlrgs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1595268075-a3522449.0_1595268341310_0.6529642437050549"},"_hasShrinkwrap":false},"1.41.2-next-1595282226-92693a43.0":{"name":"@xdn/prefetch","version":"1.41.2-next-1595282226-92693a43.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.2-next-1595282226-92693a43.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-3qYY6cFTi9bQl9UyM27PxQUSMgoHwpaeEm8wCtRislR0WK0OQBwQLFWlmoeRveZcagtm2YoCtS1gVoOjJ4NAVw==","shasum":"d1708d5f4a8542954f8b524ed2b8ab6bf5f165e9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.2-next-1595282226-92693a43.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFhQACRA9TVsSAnZWagAA1N4P/1JoByOeODS6kWHy6Ev6\nGTuXVqL/6EJwcwBYHXFNEWGB+J7cM/FxWF4rBLQkWPbf024+X/NysYtsL9Lx\nlTYWFggypOzLLTdq8Xn81WI0pWKDEnXEat9Ak1+JfaK1aKQF4tKj9WBr8Th3\nr4EaSx1rqpX++HK4cVFlsDLD3jI7Zk6sccophUdw4tg8CyUWYf1rJMzuh4dt\nTchDSHbFGFpmSuIz1fiU51YD9cL4y7Qbb+SNbKYJv0r1zQ81On4DFAwD+e9p\nTmtwoO4BmQ8LblwuyVuwnJSIPWgYq2ZNeaug+Bk1vXTcmnB34Zn8juDFNo7z\nvwcF0WTgp/3/9B4Z4QIpsAx5ePqVDKcvdoMwDO006JNoprSmP9RUgugO3YyP\n9uB6Nz/UgjGxlq7jOx6O8bY2kfqpqwrr3YW79a3NHtftl3+leL18Y6CQnZ6y\nMgGj6VnA3SEWJm3ftLL1UN9gh0QJQC4co0Kaoj8ISR/diQVs3FrlUHXF16U3\nCfREW73OA7RmVQD0yPhaL9lBneFrlDF7fFQXbciemx+Xq8uxNr1utDCm/3Jd\nB2cLaikCTsE5unlXSv8GUFOUvm21mejDQrPfWCFkVptnQCSaCvzdCCGkhI86\nzxU/NxM3BhgGe5vl+KBEhJpQhM/lPgQGJLlfuAaBNo0dBwszbKHME1N4sanD\nvjvB\r\n=rNGi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDjQHcQYy3Bh9KXQY2qKKxRocFq+FseQR5KOyGwMW7HAIgeWIXBz52GesJRMR/ljVTZY4A3QWHFyqyJuyVSUZE05I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.2-next-1595282226-92693a43.0_1595282431556_0.2836481250260372"},"_hasShrinkwrap":false},"1.41.2-next-1595294706-11805640.0":{"name":"@xdn/prefetch","version":"1.41.2-next-1595294706-11805640.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.2-next-1595294706-11805640.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-kT1OUo919AjMnrqVVNN2b1C/8jv6vmuM7oE2a3bSIil8xs5g8W5ajrEMGci3C1YkBiqee5jccGiBM9jL/KanPQ==","shasum":"b1828a50930e3097f556049319a19a30553e9961","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.2-next-1595294706-11805640.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFkTxCRA9TVsSAnZWagAA4SwP/A9sZaq7fwAqh5iWmIZc\nO9C5qySEBl+iivDi/lReYoMg7dtYttCcMRLElr9nkA+sIRUN7JossciAz8a5\n9ai3HK86MzjjWjCIPTYzcUzDzculF3L+qcN8FVmBqoNtHJ/ipEUP6Mo5WasW\n8yQP62Sk/g0BDbY3zC0A5ueq/a4FkeSWqgOy5J9Bia7EfXLTTTiNEgkufgu9\nXy1XIfiU1JL/rfrMkC7FYOsAkpLAs/Qi6R8tC6GzRbx4ZAo8xVMNGfbMT+eR\n1R7WkL1Sai73QvHbAPqD6+TWvOQjtEEao1drwqKXGor9opHQSxNe3n50FzxM\nOrDT1Pt0WtmhIM4uPUWhiKA+GKyZXXzsa+5JgEqZOw9H2cdiGoPbyQzqmzkx\nDR3XDTp6pWD08K3CBYl/cSpxM5rYzuXT96fFT7DWHjtd43Mf2neWlj1qe+lC\n4ntrSBjCtJA9Zo2nJ0sHUZAAU4NnYsR9IVT4viYD2mViDS5sAQ1bRvhF+HPM\nqJg14HfJnCcQPRbvdsLMb6j0j0nsVwxbEXfn4SA+oWRBmDWGENFgtNar9NFW\nSBTuEWODkXNoIqVRgw6MDOOJF75mz5NrBdFzwwcdWxvfqpaeMGXfrvvmxDtR\niyfvG9dli1bVxQ+blAqYU8y5gDueMDMaPbBxfUzZRPTFVAr+omwTkzV/Q9gz\nit54\r\n=DZAR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEP7f7iLacyd+fJR3O8vg0bc+vLwFwWe60WUH5XtiIIZAiEA+ug+gH46CMCk/vX+2LA3jdklmdsgfAyh+r/+EbBpeT0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.2-next-1595294706-11805640.0_1595294960878_0.8024405022731997"},"_hasShrinkwrap":false},"1.41.2-next-1595298686-48d5c565.0":{"name":"@xdn/prefetch","version":"1.41.2-next-1595298686-48d5c565.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.2-next-1595298686-48d5c565.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-CMndbSvbYYXJqhmJxx7b5nie2yidjOe6Tkx/fsWBgNp7rqJuC5TFinJo8oe/yCrzpI55HaBkAvWPYyxXg85WzA==","shasum":"6f9242fa1fe3123c11d6dab501feccb6aae8afff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.2-next-1595298686-48d5c565.0.tgz","fileCount":46,"unpackedSize":78478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFlRjCRA9TVsSAnZWagAAW8QP/jS3dlGMNdL0jCn/9LFq\nyHB344HkQ0uGJSDDFzqxWTpjz7pfy/o9NS0EBDXhbbMmE/ElB6NMaWiW/nd8\nS3xGmrSE1jToDBerkUO5mMLeZ1pfcBpPORjbmPH/EquIIm+ZgYHNJ6TC2jI2\n2UZqmUMYcDKdisy8hekF7IHvPxVp4WOORMpDNlJbbi4HD5N2DYCQ8XW+APtJ\npSd9IuBfQgebiK8zrLFab15mcdp0B7vCgwxG3KsD0ImS/sCNRAXoK8MfjT+F\nD3YMz6TWWgJEFyvKh3NewqUlt7UXDQa2oxpwZo4hCcgMB40aXlsFDhSNdbqg\niZAC+w1IrLaW3zd2ItYgT7HN4THnmrM6UuC0qqG3+AHMZlqoOOZxriSDFW4V\nfhmmW7SIzKH5T6kv2vnMIEHN19U10RemJEkdQ+/LNE4yO8a/mmoA+Ld0uauU\n/qECNvuRxKXKAbCCL5HzL0FQM1XkI4ApnIhTMD961xB1fsptHv9Gmut5NjGS\njR4wMFEBhDykknFLU6QaiiiFMc5AXkEiZVjv76KfBDr7aUhLGePA1yLrDRlC\nU/thC2lgx2YsZwBTRFrEDULbkBSieIlvbgCfpj0o4UG87HSXC55YQDSOR4Mc\nyNL0jHPv4GS10TLK5yJ3qWuawcLJrYP9v71yuqXiSm7X/LAbOf6KptIt2qjj\n2r/n\r\n=Eroo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH6wvVNZlfFjFlXr8XmuiWiBMQfeE/ExGeeRwU3du11fAiEA5ngrR3WsgyYMmEVtaLcHHuB+S+YtSTFV7KmW/h5J0Fs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.2-next-1595298686-48d5c565.0_1595298914181_0.34159734808752984"},"_hasShrinkwrap":false},"1.41.3-next-1595300412-0bb5e5e3.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1595300412-0bb5e5e3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1595300412-0bb5e5e3.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-rzseavww9AaqI7DI6AkRv1ySjgcYrfOGfuVHVf10Ty11E+YpvUW3m7IPsDzNg4hrwoznHD1ceUnMz+CXvYjrRg==","shasum":"b39edafc32a86515dc4b796252cfefea13e7d250","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1595300412-0bb5e5e3.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFlszCRA9TVsSAnZWagAALugQAITQ/PGeDecb/2CeQUPn\nPZPgg1gVUYmc7yzB/6mziQFJLDf2tLGWJd8vFbAQ9CInMdhuONiULy5Tn5WW\nygZZXH9t14R/9jF1FMl5P2rHF/OIhY1hhyooiONloaBLw9517k/u+TQYm3E1\nb7gkRQ2YeFiFVbBz1Lr852+/Jxmncw3knNGywbIqgPwl0tUYMA6EqtqFZSlV\nZncIVMN1RUbVYJQoltFwz9vXcMOJvAGvCb0hqk1TuGRRguZfb0rATSLVsxk1\nip9MzxUoDKVzdvUW3i6g1JcOKOzdRaff99rHjglDiuf8nFfaBpzDjdVc6fAB\n4jNUVNsbIuEB1Dl4oJufvbme7G9xj2ALbntK8KVMEVE4Wfl2RW04cgufODOx\nmB4WLzCtJUAUpuG0udSNTw0+03E96cvq9zmwJv8hDwlPZugMNAo19oPynO3L\no9rweckAYe4/LKcil6PhQsBNuVU1EzZ0ApBVUtkQy7iLDF0jLhN8DzIud9ZC\nMFyQ2/J7YqgL3QhzXpqELmoAMvO+Ha7i+53EoLOkcqvNe3H7ihbGsV9sSo3g\nyqLFr+yhR6lx+yn1h/Ig1D9+WbXUZRU2mKwlb+n0TMEDFb/lmaZij8KqIxGz\nkjrCFoObcWgKpPH1ANEmFDEqotACLRBwISa6yIioU+TK94fPb2U+rUXc+zVg\naHNw\r\n=/625\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAsZgIO4QXQ3YT3SE2YyTfzwZ5uNPK4LtHuEeflG4utQAiEAvRwGS1Z+S2sHsaogMVu+a1DzpqzSI6kJ8eexiAf28ww="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1595300412-0bb5e5e3.0_1595300659194_0.00566824111222064"},"_hasShrinkwrap":false},"1.41.3-next-1595327631-2b147e8c.0":{"name":"@xdn/prefetch","version":"1.41.3-next-1595327631-2b147e8c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.3-next-1595327631-2b147e8c.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-rpagC5bkiiEE/xShNN+YV8PNK+ryRFHxXE9ZZ4Aa38oPprqGjj7zIL/dWlwyqGPMXk/sZTMKUwGRPcRBG/7Y5A==","shasum":"4e5330f46a7e8608c8ce759f3425177fcffb36c9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3-next-1595327631-2b147e8c.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFsV8CRA9TVsSAnZWagAAnBwP/3ArtudeUPrKAS778hlq\nwYOkkunUwb6gwIZfZWVAkSBbLNHc0ziSANTyYk3fcVWTITVlOelGRXnslLX/\n2hwOn5sztTOY/Nozd52PcFEOwH93ZGbAYFqqgoL3l63Tg4BCXb6FBVzzMGpw\n0DRCaaVN1YMnOImuZ+v6VLPQh4p/1jAvMTJQwspDAVoddHhkPzQDvuf7hb1M\nlUMcYtxZlGtVqD2jZQa5ZUpNhaLoP1mfbIPgZS8i2pKDMX74av+j8O872i/8\nAoe+0m8hw83owdvzv5Zdvul0IDNvO9J0In2iNo+8lpua535mttnHi90jimZR\nk6HKznV2IfkFkyMIGmwkehxTMfivWmal30hdW3WEOraqwUoxD3fgMy4UNA/V\nhagLk4q+W0zlLUfNgUuMnRqS/wrWCXE+ipgMFFxhqubk0a89KLa16EX6CLro\nqg2+NVAlaUa8KvOdly/RUEOIW+qRnuFJNEm6uJf4669oBbFd+x4PnJNuGAP7\n4KPqnBAN9h6AJh7CxKYXU0aWY9aNP73mwnrzACK9gsnpammp+5Czh0jlSLvv\nt8JQ+JtMP2U7+juuVdsyg2ZiEjTRyFQE4cPOUlE5kjOjyiJ02GKRk3xeX8JL\n2aPDdF+PjKdEPSxiNBCVO/TmiJt7AyShnRiVcazSvcWh8k04Kznnxv5jvEOo\nyzVB\r\n=2yS6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBmx+IftZYMj/+a35pq+XWcmBVLplex9drkzpxNtNWu2AiBZMdFLjpMBZmGAheiGVsEMv8SL9F6BMqxAcOlU0K2j6Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3-next-1595327631-2b147e8c.0_1595327867336_0.710047097371663"},"_hasShrinkwrap":false},"1.41.4-next-1595328202-2351e36f.0":{"name":"@xdn/prefetch","version":"1.41.4-next-1595328202-2351e36f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.4-next-1595328202-2351e36f.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-0fE7LHeE7ut1uZ5p2Om2yxH5xaN5DE5WFgjDjWka9/XBwnVReLmINQATomx7upLEsEu9FE1X1L/XVaDASL1ypg==","shasum":"2f5bde0df35810e78db81f8241d0f40230af9a71","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.4-next-1595328202-2351e36f.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFsegCRA9TVsSAnZWagAAGPAP/1vrrkdTwCXmYEB2BKDv\n/i67avlg/dR5nZrjqswH/wcUOoqkBGuNPXUa6BXR3sCmY4eovK5kIO2WbSua\n73+DdbUepppzi4YwoqBdWqrqV2ZzH4Q63ZdL6YQzzjhfU9WUDdITcrss9V2i\nYj/4JCXF/ooSIPdqVtE3pH6sHs/7n9REcqVuGTNXG3najuYryoEdGc6shPOh\nRvVASHIhobYxxlQkzZo9RXImdSVUhrKem9k6qgNU2iQtjleTfW/giPyYOoE5\n+J0OzzQB0WeP6uUBTz9VffhYtqmQvzwEfB7EHAVOiRS7UYQoSZbVWVqDaXW9\nWUVhHYn/x+Q2bEq362FKtUXRsQ9gbqFf/0zNCH80JK43YjC/0lkFJPNPIg9v\nfFn5kFqT6jRU+qS90TO9Nf09BUYfsIyx0uH9FLeOiIsMSZPRJ/vbr4nUvqQM\nJPWjEmyDnkwSuhX6k2axFlWFiFhermp+mi6WidD7XnDeGG+Fq1wG0etBnLOC\nO71sdbdt5E2Xd6hQ4AjNOb9EShBJSeRHNarWnlurun0DguA4ikxEVvwNRUS5\nGJfmzN/2N1FL4c/VbsDxTh3FkFMmvjOoLMxfs1ZFlCRcR8TDrdPVA/gvk3XZ\nPLKWLdu7NUdXBo9xVIyJsf53z1kKFExtR9Lfy4uHodRlN/EJNlenpoFyzorb\nC+vC\r\n=5jOx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAJvPq9uQ7zD0yasoJMWybe9+c+1HqAWHb5s1VI8VKJJAiEA+oDKvgD5oJD9Js/EVZmYEoHLuKgdztByE913kuasFw8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.4-next-1595328202-2351e36f.0_1595328416445_0.7713652286729127"},"_hasShrinkwrap":false},"1.41.3":{"name":"@xdn/prefetch","version":"1.41.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.41.3","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ynmh/LkXYCaJDEOBbdJLlulmZ9RWWOx9kiX3si35d1MCGYYloJBULqIh7xioikK8TLMhRU+u0dPrCtzSN84x8w==","shasum":"02d56ea4f73a95f24ccc240612834c5e197f333d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.3.tgz","fileCount":50,"unpackedSize":85345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFsniCRA9TVsSAnZWagAAK6oP/3Pe8A0uvbV0z4u9bSWM\nj40yaQOkYvTIZRJvZizKl4ifphvAdRA2h/Cn5kmL5w5Lc9Wusm+VAQBlkhfA\nQIzqXn3dmI0V+YDiJB2R9KSV/UNzj7epKgJ2w69c1f9cFh3vMoo8z3i4kfVz\ncZDg8jH66sjTa22k7/nRuBO2eV20ESq9DkvJ1kwU9fUbAlymLBUBRZ6syQSR\nuXbS1V6BX+nXNFoDFXwqB//SH1d8QVjrhk1r6ysVfU2at8MIe37vcqTdImue\njm5DvQnExZ0Ffkn3kvoR7H8bKUa+Vt2TPayBh6/+NlzFJFskxc1ltAIStL2W\nOK/jjYzZF9klwfDfR58wbraFLkkm2rX1LNkDJDEvRZqQli5193nIMTeXYujv\nRRHgIbGxGS/eAWdbziG5lyY222tQCaQZU8g4h2i7bAQ/inhQdb1Xc+jxmQqG\nUVFJD7Z/mMZhihL+/6GsqTY+Vw4QS1IIE1Visdk6nufz6q4zzAr3fk9GNeNg\nYrfe10+6t1OMkssLCZD3G19IrLimPbJ19yz7w54bN9wfy8j605hG1cCdFCYB\n4lsWCBqhPdfs4XaxDDx6BiHyqElGMPq2BD5qgoLgVy5AT2Hle17tcVMLiOGb\nl7/d0pva6of0KVux/Kzpa9gIxbIvhCFrOuR5IBDA9kaLY+j9+MtODXYtB1/H\nzEaF\r\n=h2tv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEkKw7r5VWSYebkjxpUmbj76U9pZfWnq9T1WT7hW0JEfAiA3BoB4hXFHMIv2TpBOTiM8CuU+LA0TaQYBmE+hGStNKw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.3_1595328994178_0.7096104935853929"},"_hasShrinkwrap":false},"1.41.4-next-1595333985-ef318f78.0":{"name":"@xdn/prefetch","version":"1.41.4-next-1595333985-ef318f78.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.4-next-1595333985-ef318f78.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-7AWnCvScHE/23uD1+3QDqYolBvP2335js8xTBmDaOAgHXEzikkr1l1jExzHjvNiIOeCS9V3JJcfYieo0NgHtnQ==","shasum":"b546bfbcbe1bf7e7d9c5ed2b75af532e4c61acf4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.4-next-1595333985-ef318f78.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFt5rCRA9TVsSAnZWagAAscgP/1YH9e/KJX4Agxcl5Mkc\nnQ7cETAnhdS7iQqx8Xb/H/uiPgpoSO+A/671xtpPXa9yQmZYjFPVEPc5rdye\nXiCxj2DDzt8spIhIY2pvC41g88z2aPOJlQALlhIqFR2xekldqkX8MEUPFt5C\nfVcQoGE+03lZrkJeVarnbLqbKgiz99LwgpWldV5gL17b7AIeO9tOyFGI5GgI\nbUPtwJbOLBc09CxcH9jm/NIW7OcNq0Mm4To8vIKP7UZI4pUMRYCifEpc1PUR\nfsVgBCzmtmBHejoyw28HtsaqR+0zI1vY8IOW4BLhTpNZYYv0eCoQLQ4dUOWS\nHO/kvGb13Sa7aPR8KVeEiFbdZJe65HhomWj9moZ419/WsTD7Vwhx1t7EDwu9\nKedJq6CpUElzvb+bPn5o/R/VaigT56Ve2zdg/cARxz7iAelHixtuxKeZaYbV\nGLikH/GeYce3HvYiFhhZ+a1FAMc+f7MrSBo8eKQBFI9+kAm8nUDEBdE6esEO\nDjBejqnzyIIOAevi7snlKe3iiKC5Et19qbXTvEzrwCKKRTDmfiJM6w0N977R\nHGYVL9F9MEVBQWzNMJVGMJGmKGd0jrWDtp93ygS3Pe/8eGpIbkf2CNhjqC+B\nnRRDEfqMewemvkoT1tK86CyYojD+bgBu6yLxGf3f8SRh44J5jFym3X2EYCyq\nkQ8R\r\n=1Xkv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIALSxA7b7pB+gGzvCjnA/F+BhxNIZk0nZG2UdgIGlFeYAiEAmT/6g1l9WvNpzOO8WT2jwCEYavJYL2of4eSEQcA6Hmk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.4-next-1595333985-ef318f78.0_1595334251314_0.28016775360316504"},"_hasShrinkwrap":false},"1.41.4-next-1595334862-85cda14a.0":{"name":"@xdn/prefetch","version":"1.41.4-next-1595334862-85cda14a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.41.4-next-1595334862-85cda14a.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-R7ao8gdp0Jwlk5quZn/oGCKHy9QrxLkNtvwIamIfIqYLcNGIqHyNgEl35h/pgHoYpNwqqqrBvQah7AE1p5BdrA==","shasum":"946ed9ea34bd19bdca8f5eedc490fab9f564c3b7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.41.4-next-1595334862-85cda14a.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFuHICRA9TVsSAnZWagAAIyIQAJcgQcUgUYrkBEsds0qX\nPD/6mXjeK2CVYj66bIKkcwTh1Zhyv1rFSMjGQoB0YOB0LrT4L6fYMM1ufq5l\nKSkgqT+VI9m9TAupBi2Wan+C8w+jEmqH38uSXnEpT1Kx4mqlFb0UfJI7+n+N\njjPeJP3291s3jw1SfOaq+UMjvfx9Ai2rlagateJMLPGVbjz7bDY+Er+yDzMD\nPQJrRmyEmQtNOFHaPZe5Nfn5EG/JZhDsTnKm4sWdTZ18Jk5VAdpqdYS76Ykq\nGrZPWR/qSdZR5QzuMh4Auqx1rK8z4KMrmnpdE4EPR8FPRL2sjwSEZG87IByL\nbf7LBhQ4uNn/vh6kXwUeH0MFbc+o+iOMmzCZSycb1j9gGfpwBwuFsRaXW8sW\naHMrOzyFHxNhm4ugjDDnP6aKhoaTN5B+Rr5pqUP2EHrNkbFQXMY2R8ecF6Qp\nM5xctHTZ59u2dcAwFUbe2/KeMBKk/TlTCNbVE1UVUZmbhQXD85YOCxjHcTJq\nQxuU6COhR8OC9jDxt9TTguhQqJ68+sCLRhnDFnIs3Dd8QvbkFtPB3Mnw4CB6\n/OCoPeG+2iQUnSy0Pdw05h4zCDSuHRBGjfsKZAq2UOe/vooSfpEi+a0EDIdb\nxu7Rt6fcYValdw1sewA1Ccn1/r2C1zFV3sKBXwqykwq1TOkFkRiCRvxPqOv8\nR1cy\r\n=VR1/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBxE1CCzcz8oVri7bXFxfqrvLYy23BsNRbgq/cEMQHgAIgDhHRwbVReWwSmcdYfGfJnj6P3MWWm2SCSMZKdPwsJ3Y="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.41.4-next-1595334862-85cda14a.0_1595335111680_0.36097850530486775"},"_hasShrinkwrap":false},"1.42.0":{"name":"@xdn/prefetch","version":"1.42.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.42.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-JLD8+j2M3hbRdrVrWShONu7k57Ns6o/XQaUBNj0zoDH4vq3mvc4JKMoa/oDBhR9lgGN5Aj5jo6ShdXh+61l8Dg==","shasum":"a7a89c385d9500427016cea5b13a209426a0117c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.42.0.tgz","fileCount":50,"unpackedSize":85345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFuJACRA9TVsSAnZWagAAPOAP/Aq6OVmAGus3A+5HqnSL\nCIEPltmaXOTdqOccwnBz/oi1xjUr8Z7zkYi/UdZZTs3+xRRjtGCF5Bje2ntA\n0ZSLeyFSxWF/AKdVsO7dvp6xtyu0RitFoOnCRcmOcdA4Lo38fJtbdJPRDUhk\nY1Zc5YenchghkELoK81ks2+K0OVMH9Bp2yoWMNKhxfGRg7lb43Z7mqvjY0Xn\njV7iHCuQ/QQ4jwv8PUaS3cxkNUbXaL+zyFmUdfIJl2E7tv9d7FsNGQ1metg2\nZ6SdSO813i/nFv3r3ciV1ozfQqFtfVzdMrv6rgCKViVYpOi7V/UUOfscRH5V\nqPIfuUbfp2q4s93It8Pis/w3tUTBBHidhstGlSX0vnb/RW17/cSkJ9uCoS+s\nJifJeqUZbBaeqBAWuBpKaAmJDTTiTa6rFpBxA5r7HbrlMdJ4psQ4BDi7GBef\n8ziy04pEwmJprxbcQhcnL5Icei3+AvTMacWtXCC2ueQa9fWmq3qrE6Ypocct\nnIGL/li5thFgIT2z6mu0Q2KSgLZIzLnP8vaiTLJv08/Re0ubJfV3GXd/h3ka\nX6tkmuylR04yp7U9Ds48edb2ZZt2oCK4ykclBFL7IEsEjSCbOe/0C9ThE4gv\nUrtlS8GHRS3xxST+K54YpKXtVpbAaL5bpoxexR8f2FDwl0BbdHDy6WlmP7ru\n7ajE\r\n=Qj99\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxcgBKjRtsCDzecmahi8r5pow2EkFsy4FVdBKjXgqfUwIhALU2ibHqA6DWN+eKkbPOK4pvruxHR3K4DcwpGDSmJJm+"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.42.0_1595335232305_0.08932965016029559"},"_hasShrinkwrap":false},"1.42.1-next-1595351340-3babebc5.0":{"name":"@xdn/prefetch","version":"1.42.1-next-1595351340-3babebc5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.42.1-next-1595351340-3babebc5.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-b58NPlfb6Xhb2iBQYWVHWllk7i02UtPvF7bngsFux7Va5Aodh2gNgkc/+Zt7sQ54zIjELNuDkDrtiTGpr9+cLw==","shasum":"e51c9b7f00c9eda6c9bbdfee88022c0f8d9a2283","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.42.1-next-1595351340-3babebc5.0.tgz","fileCount":52,"unpackedSize":82201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFyIsCRA9TVsSAnZWagAA7UkP+wSdofIEF5IBUnr/gGl8\nNYHxfLxJWd0ZuAJk0WTkfQPTVmQAiK7w8R/guUL6jGLvvac15XKChRXXzJW/\nPsErzfLiS/o+uVo2/a5J6RQFIq6LEEevCUX+HjrMpIvCUTJNln9fNdIPb2Qo\nIevokYjHpAHlSQODC/bjXGzLYS1DiAhKoiNimRyI6/CKy4H7Cbydgtyty0iv\nCZfTH4RKhAM+CKW3KZxlOu10wrcSvydq6YcwdxUmkV0TYu+P3KyHSrIgtDs+\nXEm3c6LiZz6kg4phqARhwXOSEVuArhzjuYzJ47DHZBb+aUlNcH/FjEUj2/zn\nmy1ozNX+UJY2x1AZHuwQNUKI/A06Dmq2i9knLUkhHgLje1+4Y/TSPFaWxydc\n2rvRz+5q3x7xLYv1Pylc4bz+MDkEwSCIT34Fb0wzQ9jeTU7Jh5iUyz5YN1B2\nAaKc7Tgjf2siCIH6nJtYWrfpo4DwGa8QMVVcTsmocq86a2c9vH8ZWjWx8MHB\n+LQbvP/akABHMDpa10pII89uI1S4vym7XdeAINRbMRqqP/IFcUbDYCdh1mvI\nMjiFlcqWct7Bbu8ngsvucbL/RphVtfmmoJt5BCvjFHaal5jwVtQGPszBp7JL\nH55kR2qnsTO9nb92R0MLKWPC8hbcODQ+bLfmS9HfPI+LCvkmlYTR/g1hfqJS\nA3ws\r\n=Zj5M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKw+C+Ffn0Ua8gDcTItg/3/vPnl7Z2o6LVicPnAqDTBgIhAPazslNI9EudIMr45Zyt5Ayn3kct8azOneDTmQX2MwO6"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.42.1-next-1595351340-3babebc5.0_1595351595648_0.19654101870587448"},"_hasShrinkwrap":false},"1.42.1-next-1595357119-a3799158.0":{"name":"@xdn/prefetch","version":"1.42.1-next-1595357119-a3799158.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.42.1-next-1595357119-a3799158.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-eDerjEvor3A3+ftjAk8zgVL3TOhDVH0GhDIAHDHYAfsBEYJ24eskVzVGiKVTTd9RMCxOlEXm939Ybe1FYTBztQ==","shasum":"0dbc82c9290eabf02772bbd68786b1b237542ad8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.42.1-next-1595357119-a3799158.0.tgz","fileCount":50,"unpackedSize":85372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFzjJCRA9TVsSAnZWagAA9QgP/RLtT8+aym3CXoYdM9kv\nt5oUMSUN0sYv4BlzPN+6MrAszvkm2oD2ES4hE4Gk6Q9kEWy+Ry0Cu4KtnwM1\nUGoZA1Y5RDWLcpSu4KsyBaMu6/rSfTrDnRKtQodzkxiAAKpXRb43O31SdKFz\nV6tqjePdBh9JG7OtCiRk5c4mALKfG5Iqzz2LLrbGAGAFmIrpgxKm3ytJ0CD5\neXySCTfxpatVhEOBhGD3r8huJCJJh1fcCO9uUAaNqzwkhaH3D49+mHn1+pfX\nvcLh/uPec2lbRXLvJLdK3bVJFhZP3DM3Q7FZSf8KWFPgMyNu38U0gYHyn1Og\n5o51gqboQIKzU6T9tj38/1WWAXJeVO2a2NmuBabpEfSQfcjEyVil5kOBjfri\n3G8j9fDSNguRqTkK8twrFZF4tDzXBZe2oqhbYYT11onM8DjV1n2NcPD1d5NE\nOLRpAZOocXi7GbDIZIt0mO6Z2quRZcFpXhZA8D5Ktzr4uJfZiPy6OPuM2HX1\ngu9Nnu/POMDyJEBzXQzJn2ZbEUSDg11JGn7lLzPu2nwaU1s7YDb9Nzb0yM92\n0IQIyO1WXZIMkzKmdAhfVl59ayo8+yeSPAYkSda7t0CBDcGlhi3Fyox5lGRv\noIb/NqBcdY/+e1jvlgn2U80zFuhNj71a4tXsDUj7HYV4MaJwPqknBJdqkam6\nkFrr\r\n=Q9H3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCX2309H1eARqEfP6Tc2evtS760WmyMf+T6JPD7Zgvn7wIgbZw/gE9RSrO70zVy+QqRr8UIhRMvsAVQhOIkOLFFTf4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.42.1-next-1595357119-a3799158.0_1595357384727_0.8693651655064907"},"_hasShrinkwrap":false},"1.42.1-next-1595358007-a285e756.0":{"name":"@xdn/prefetch","version":"1.42.1-next-1595358007-a285e756.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.42.1-next-1595358007-a285e756.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Ri+X6NXQ6BFYKF1BJwfkBnhKuYemMYBMT7RD2W5TUWU7Y+VNkfwhYQPyQZ8LGpDlTJaIPFr9qvcof8V5DpJ7tw==","shasum":"e54e4b250a167eff385789c01a3ee85a40ab899d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.42.1-next-1595358007-a285e756.0.tgz","fileCount":52,"unpackedSize":82201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFzw9CRA9TVsSAnZWagAArgUP/1/59UCiuqbS7nWNR3LO\ng+3lUi+6IB0QxeM+/a0UmfrHNtYRlckY6Z9ljgmigBZFWQWFC6sLhkO9/jrV\nRVY74YCqX9J00mAaENxPnpvAfAsCOrOF4agJXQHV29jWxzzi4QxkWe48Nl1R\n+xez1sCyvVnmBzZ+ZuoGmb9PClGM5EbiZPhsEqqr3NjpvjNKlAlHzKV3c/1/\nB7YkLGlGXCFcLUajbppBucFknNqDEqIC98q8KTzwZQOkXj7snThI9czCrb8e\nDRI55jmDMHcDjwuCPa3C2xp9xqJZbWuFZvNWBb8sBtN8efNMpUOPW/EC/fvL\nR7hN0L8VqSolglzu/GWTaNaWZqramncGwN0klLOsKgF0BGdh/Y4GPo7FsXb7\n5DFP+DrEBRXlldWrD3GedFRLiXMX4nJm63NGsFm9V/D6CVpt2/clOxWZa2WD\ni4VDawssDn63O8VJPDRgp6MIx/krL2DGFitknLdwLeK2/stc2n9fQf78ndQB\na+V65UCFt2+F7sP66cXUh0i57pcqC8i5X7lQPfAj7jUWHVl8WWA75BvErf/D\njoP5IvE3ydkI8YfBLJpXjGS3rDjnWPWfjgVG49JZG56e+7mvXTkIyK8SRW00\nWbafsQRFpjfhzaj6KLvaVedsIwPIVMqgeBMK/MEMSHa4L+3Y1cGMoCwYdW57\nGqbf\r\n=mbLC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHrIzB07/r7+5z96Oa3BJaaxFUsD3UpHaTTkUZWE+yTgAiBp4YEvLxJXoy6OY6jdZZNiYLovasg0RbL/9XeSHzSIhQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.42.1-next-1595358007-a285e756.0_1595358269052_0.8892788550862192"},"_hasShrinkwrap":false},"1.42.2-next-1595358304-9ae40bc4.0":{"name":"@xdn/prefetch","version":"1.42.2-next-1595358304-9ae40bc4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.42.2-next-1595358304-9ae40bc4.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-yqbE8BYSnAvFct8HQMo71yrPYGaLw7R99ve4iBmYbka3ukoS3zpQkC2VQcVIpOyb3/rNgS7L8FbTdFf2d5rCAA==","shasum":"21425a19c28b17e6a4a395c29b12e1d00c6e93f8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.42.2-next-1595358304-9ae40bc4.0.tgz","fileCount":52,"unpackedSize":82201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFz14CRA9TVsSAnZWagAApBsP/2ldXS0nwCaKva+XEeZ9\nMqGhK3Wvbdd5LuJcI0JX3ArZ9hapVmMMr4z4pw/v904Cd0/GX4emBqf+INuX\n/K2gYvpc+IXWw6zWK81gfUPKUdHbO2kEp8QKOOKqF6Dv3nQvGfGSgMqq2REm\nIkoZOyhHEbKFAF7OiRzQ8w21ZD6a59D1llSu42qsh9FKlOMICKfMssIaPtr8\ntuQSS9iPaxTeS3Jsj39D0BEKUDIeRP1iLS7EmakpzR77R2wYmi9ab2CT7d6b\nhzVCRWhN/KQ6b4qYy+QCaj1oTIrfsZjwVqmXHa3B7a3sz0qoycHewIMguhR6\nzfMKA2OlfAYZjdKIe7uc4btuHlgA9UyAEu3Bee4FjOmwyU060pLd5rZW0/AQ\nk2OUWrIrHdOZpTZZXmKBDfQsethx5K21P+jlGdZ9wy3uTdqa3P1jW2Xk8K7M\nblA9vxyABYgjkH0Q17zlx6nkL0nGW5HOcFM5pn5Xwc0ewZRSP1fvaRPE/53x\n3KKGZ9Y5kFs4BcIBs2EDD18Na6lLqbup0QJ5ykv0KntvZrb7YzXxOV6MxXVR\ntZJNnKzAFPo5XVO20FxfI1RCPrrPtPq5snx/7H1PAONtbrxFpHOJbo4HvXYR\njKsJFZ2LD3ej1DGKg7E//ob0I1Y0v+4vPVs0zUTZSR1ryNovkoLdWXfjVOIY\nLZ5g\r\n=KrKV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBogJBLGdd/1Xz4M8RkoITumNw7Dfm9Br+CAekhhlexgIgK4BMMYCTgk0VeDfjd3lxdJsL319ndNbsOcJ9uuKLtMw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.42.2-next-1595358304-9ae40bc4.0_1595358583608_0.3473740142185293"},"_hasShrinkwrap":false},"1.42.1":{"name":"@xdn/prefetch","version":"1.42.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.42.1","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-1WP6X2P1N2efh6qg4CCyVndPJ33oMA7MYaQ2Ht4N+2nWASbwu1cfABhqvudWV4S4lOUcF75zzcYhg4OPTjqQZg==","shasum":"7baf6ae4cd1e6ac07fa8df55baf525619734502d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.42.1.tgz","fileCount":52,"unpackedSize":82174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF0AWCRA9TVsSAnZWagAA14EP/34W5RP/707PGxIpwSI3\ncPDzMQ+cASU6eeDJvtHaCY6e8pTN20AuWN2+n0t0FzoUU1CDxHxcpwuQCzVd\n7JMnfy+kfRsUt/zhm+iEjHgM8HbLA29hqSbOo29qttQL+PehKGvhW+V1YYC2\nAKL1NMy6qliktFFsfd29cLhQ4MRuNzWRvt/ALvLRsRBP696EKAcOiPjCDhdm\nJWb2iB4f/4T1ZSk72zHLTFCnkd9KVY7NvrW8g5jWFwsfnflwEVXWbtYeqvUH\ngXC3xteEpd0MKTUiqmB17ifblU9mFv6q5V4CFbGZQK7MpyxgxrW9/Ub0LLfa\ngkgMa54Jb2EvcMQ4mAsm72GqpRTcU2uplGwvLcpDStoAF36ns84jkjnvoGkY\nJSUeOC5v0U2HkmTelF07jpOxi29RoINaUP5IpcSVfQJFNGJlpGQP0hS7JL8a\n1/8U5Gql7FxGA86m3sdfm9gru9qlPruJM4CK0i4/eeCFS4DL1KT9C7dqgC4G\n/Zn8uye6HZwacWud9gK42bo3cbe6l32VUhsloZO/WzA/hVtR11xVsrrVxqW8\nvX98oCljIGc+iKiqu+PWIuUg462WBEjjKL+mD24NBN5h37cLUOEifH2jHnpm\nmsA13irTzFqTM8YQcPabJBDkgzyvq/SyrNkjA6xe5OIZ7Enya4mbBubPWGU0\n0fZo\r\n=xe4F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGb11cYhLT6JxjKQk5JSkowfiyEcUJVgKy9vLGilOilaAiB1g3Y8IZzdW3izwIRT5q2VLFq2dkem5NqgGEQAKs//Xw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.42.1_1595359254416_0.9554407213264255"},"_hasShrinkwrap":false},"1.43.1-next-1595417423-bf3e63a7.0":{"name":"@xdn/prefetch","version":"1.43.1-next-1595417423-bf3e63a7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.1-next-1595417423-bf3e63a7.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-pBd6yT919LYI1Al8rrXhmjoMlmepa3sqCMiNsbjYB1n7b5ihFKkmMX1vHqT6qTeehMuuTfyf7vB1T0ORfDyQSA==","shasum":"b924be2c0c085e99f32cd55dcbbf1a43b79c4a48","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.1-next-1595417423-bf3e63a7.0.tgz","fileCount":52,"unpackedSize":82201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGCR3CRA9TVsSAnZWagAAZnsQAKUl5P+UUC8+qcxreYl1\nnIkSK1jqFrpthUxFJF+YHuRpEvK6ShGzT/Qht9SbyqqG4Aj5pntBoi24qRWt\ne1/MOzqFV1c5QNXj6zzgB53d6hnQx71tIGMoIrTFy3RgxvP7nyj8+/bF7Tqf\ng1RarRvHeA8bZ+eAOOWX6WnwOE991LD2e1SofK2TsTCaR/zVBKXS8f12MIGR\nfzG8085zwPrabtQtdOq6+OGveG/J/obv0unktWBow1XPGbAJDq3t6veYqwH+\nrFtpR+ALBJ+Kf4niS0bIQDZns1gzV/+qEBcQS93sfDdd9Dfy84Zy5Qs4dY4G\nt3gnNzm+WDOA1GC8s5ardrOn6zclN28VX1N5x1gQzNWrkKTlWEyu4ETswiyu\nP8+iwjF+tS7iFNAP4C9gtNcbtodd2Ef8gp6KJXBjAI97q+EUapWzxLMHsWD/\nk0ysnnC4cP5xEl0iossMQL+41UzaIuMht4ZpaCidUAewAYCuCTUD3Qk9wbjc\nPqQY4HRJ9ENXGsHP9SFCQrnnFfpR6BGEufQ6mNP/h6omfUZcTUOnQ1I2yYMJ\nu6cDXnw877TM4OD27CWJ9bMAxjr48BPjkQ52QQBJPbvDPg+xzZFWsRpm6wnG\novBLA6VZEdgOp8r/cd0bDq6Y/WWIVKVz3IsvnnYZf9yCxkTg9q0g49KKr2Cr\nJ5Zz\r\n=S8N8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAQmIzMtm7NkzP4ytLIe45g6Zt/IgFYP0u0uB1TUYShTAiAtHdtDsF9M3fyVvin5lQf9rlkFJzAKNgaos8i6Q26S0A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.1-next-1595417423-bf3e63a7.0_1595417719370_0.8811034719009754"},"_hasShrinkwrap":false},"1.43.0":{"name":"@xdn/prefetch","version":"1.43.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.43.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-MH30ke8vgmeZyLcSVTJaFOUuvd3vabNU6iFWldQbF9hsLJUGKmpRblv6ChYJqKfCkuaKWaXOlMnrG8Hzr3w3IA==","shasum":"2bad374344c835370ee43e62a4d456da6f0903a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.0.tgz","fileCount":52,"unpackedSize":82174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGCXPCRA9TVsSAnZWagAA8XsP/RLFyTCWzRP6ioj0jfe5\nVe6g50F8Qq1p4rX44tE1y3l43Uurvg3r4u6qHJ56eKdYSY575z5wFlEgXYDj\nBHmNAcij4SZs0mcsgfFRB14eAP0OJc5H/R0Vn8qZIIetPpHP8E82pgbAO2tM\nmPsw+1lRvzjhkkNAiiUFqPS+jcDm0DQyvI51zbpF6jpCW1tBkD/mxahI+DTC\nCcHKGBlKdvo86I1lhiyiJhLSI7b/qKnSzwX7U/JEO+8zHSmxtGGYKrAvVvDk\nge0Ejgz8HduzzXpEYfmIY3G48V3yvpw6aQeFZy25gCuapqyRXlw9uJcRWDn3\n+yImYzkLwZbbSOairkIiZ9fgfCFe2i7gP8qPJ9y72PwilDju6AxltDRvjHkq\n0SWv/lu8yQcmfCKqgKjUux9Jb1hz3uoQ+iPD+bE22IvoAyKw3tdhKxd4KWaT\nf4udCKV9w+dStApIPLsPaaKAZYg6GaSZnkVWLhJKpvs++1yJjZ4ZPNakZm+c\nZ2cHdMEQ2mxoSsGLX8Z4AStcpHgYOkG7VFS6H8dvRm/xN8MC28QE9i6UGwDI\nwsJQVxZz6S1aFpGTgJH9tLinxgc8g34TIJanxMdx2F+Po7dEMARdEXisj82k\nHBrHUDhIuZn+KnddIssohgNlQtidIuzm45eLL7Q71olEqQfzmNhGyVqfq+JT\n4iW0\r\n=mN1T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGMeNF0SUkFJ8urTt8hcs1TAXWQp5puXmFz+UXgycVOgIgAYQDj1GrQdN4Tcf67OkZQXmYVI+bfgD0Wu0SnFbbsaY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.0_1595418062380_0.8212228369365135"},"_hasShrinkwrap":false},"1.43.1-next-1595432835-5e9d44f8.0":{"name":"@xdn/prefetch","version":"1.43.1-next-1595432835-5e9d44f8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.1-next-1595432835-5e9d44f8.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ADwG1EEMHaO3Eng4RcwQ3XicNQ59wbxj64ufBVGgg09djVRFVoCqoPMKRWQQOAv3OOnMPDGrg3/EYYAST19Z4Q==","shasum":"0327a11fd8e73afb17550b8825177e799eec8d3b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.1-next-1595432835-5e9d44f8.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGGCaCRA9TVsSAnZWagAAsAsP/3C7Ja4ovBPuV69TRaI+\nUwsmAn9e8rQJp4R1mGg/ISS16iBOEBiwlCS9tXpMvsH7QYOK/G3fdUnzaKaM\nzgaQLcbTJuqQMcB6yLTfqImRkDQutZYEnp9NLyXR73t4fpUAv4IP3CuS/Fvg\n3fxqVauNP8WCgFAXrB5De0zjvaqvyKmVWf5og9nXbaxFXVh7G2o/Sk/CsTJb\nohIgs6HidkPtdsvS4R3Zft2f42vzTvIAljxrwsyvPBHliCiyP6zQwL7eCwCP\nbM6BLoZi8bZZ0iI0PUnchqAFtLJh78hA5U76pn6qQidmTKgEpWDmbpmoMMiA\n5SKu0fpc30WwkS3G9k17KwCdto8+3ZVZTZlpah13VU6zdbJbYsehrMFNQ4AP\nvbaLaRhEt1sKg8O333ccd5LcTl3TKgpI95k7CUVAhgqONG3uqqs+6UZprzfd\nPn6tmb8SpyVaLWojCnPNrHhCBTt9ElQxHesKRakjDXvn1krlIBEE0bk4ZCNe\n6q0U/l7DIOgVJ0Ii2cvcpgvcAAz+87VLv0EBvogIb8ikegkaNIzuFQGY1+ro\nnZaCwfPiXCYge6YhObUwPUOVFOxK7ovBSvZO0i5fIUuiRR1NEcUQf6O3q6Ol\nS7anMGBt0s81mB15/c+VAu3ih9v15IRlhatFiElrp42ThPgoEAwpy1p2xMFF\nw/W9\r\n=jlHV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGIlRw9TxN/CLfJGrU5FRL/JdxZ8XxDjozpfrN4+djfDAiEA4uqshk292/xNacdgAHZobQcUWD/6JA48Uy0GwF5oPl0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.1-next-1595432835-5e9d44f8.0_1595433113889_0.2478170638803403"},"_hasShrinkwrap":false},"1.43.2-next-1595432988-9577659b.0":{"name":"@xdn/prefetch","version":"1.43.2-next-1595432988-9577659b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.2-next-1595432988-9577659b.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Mmg4GiBKrZFGh3jHN+5LUo3f3cF+DQn9oZ24m9QExp6un2TxLXDk3IycQLO1pZV5LtfOYDT3RSAD6BLVtU8WUQ==","shasum":"c41186c861fafd5e9985d7f0aade784da803d48e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.2-next-1595432988-9577659b.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGGFICRA9TVsSAnZWagAASSUP/jmVqxBjT0Kx0TpVqaxj\nooPC84HkyGs8IZlZwLBybiMBas23Zmk9+rZAl4jv3XRY3X0JwEQno3xmeNXT\nME8UgoyIMJWLBxhUZFZohZjwmiLvpBjIXFnam6hqXpTMmhQ1Y5Ixp0GUJTj0\nwQ0HYykXKCg27tpbwHIfFs2HzVvTIU5lYSK17yPldwkV9aDzkJq+PqNSbOhe\np3kJdIq2Wd2EJIkxI5hWi2uurDwrvK1RwLKDj/cp7BFpXV1kcCFOM/JGepjT\nLM+yLFm/qHAuv3Pg62U3UJlaPfNpsq6Ohu61wHenMoN1j/Rr6nd3XujTBpzH\ncZ39Yk3gF55WD/xxCfz6yJdDeeZiOaqpgCRgEb15o8nF9CmEIZVKCJasr2cB\naGo7nvNnnqnsnnEEZL0l0mM0BKsyd3+eR1SrtOiPtUx9iociPUh4F2VbEI9E\nSbkiy+vFCvaJ0kOUs7u4jRo/Ov90Nqh8GCYiL77/x1U4Qkq5F+y/x5VuHpjc\no53eEyhPH51roDHbZVDBR5+GoHO2YIfIfWeDfwjCpUUqnnoKRs5aSCUfBPrO\nh5K5R6wzexuUyJ9QBoQeueCyFVToagpvzAc7CtVk06/Gtfw+RXAIR72g8zet\nxhP/+0s+J8LYVPxluTbBoja8Zj2x8CDayLBk5AqpLg2k/w2OewEWhB+/U0Du\nCQYp\r\n=eRko\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAEkKhoQdS23C7GT/VuYd9D3JZcCsR5w7L2/XV+lbEV+AiBbPDONAU4AeupgYrdxEPIbvMjIBScAL6QU3nbk0AbyqA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.2-next-1595432988-9577659b.0_1595433288400_0.2552159271740264"},"_hasShrinkwrap":false},"1.43.4-next-1595436809-1db87882.0":{"name":"@xdn/prefetch","version":"1.43.4-next-1595436809-1db87882.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.4-next-1595436809-1db87882.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-hsufEyttwnFki7R0WoWY1y39JTTAS0hcvzq0MnpvxgJByfLZodG5OIjWCd8BbV0VFqQsb9h/jTUROLTLEaa5yQ==","shasum":"3b001e186553d403652e090ed206cd94f077d955","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.4-next-1595436809-1db87882.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGHAXCRA9TVsSAnZWagAAGroP+we5pm5x94bGvtN5QcB0\n3ah9P0+sfeMe2mqnZ5r0XeOFW3+eFpV+h9bSgskxV8TXoHW1khyAlu0pbg2F\n87barYd6d3hciC+57Uj6rVcqwSCRq8zrkI9XCmQrhMopvYM34qOciSBwEvX6\n72xTQ4PKWUCN02MJojO25VSum6eCVFORFOeP8IdicTrZQamlAXj7KboPhtLj\nT3/RIgprzlBBmEWX7QLB0i9ZSU1MgMpzWG3chymjO1m1bQ3E0iF1d1v6Aw86\nzefood0C2lTLLQsataJeNAsUISMGtWIWXelrd11GFo7/U//XnWgoWI3xwa6Z\n8jGNzLORuyhGjB7UCijhs88tyk2Tev/X+EZ0tdcnDaZRdzaIReaK2yhQtM+1\nFmYjAmO7z53Hr/G6xCzWc0QI8rimvHTiVSXYIyxjFlJ3+veN0K8sXEeGyzof\nVL9fszD3vygijRRJLlw4NT0n4hXRXkOHnQDx7uL1E77XQpFcnZ4TEDX9dkBW\nPSoqs/7QwKCugs5LKM6mCtnf8am2SIehz4GQqCJsX39NWFfell2AZlH65xwp\nm5cXckxWN4N0oVIEOPx+SJeo426UINifcErCLsI+oyYdSAlly/YHsinj+Xhh\nprbPwK+ArUduYfhZRbIx/Me+xKBrP/wuHoAb4/xoBuaXiDmsjus1Jgoel+bj\nX1Wx\r\n=GBqx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIMtQPaA2Sw5gjKK75g9nQ6bOsqe0oCdWafAkt2vuk0gIhANm0/j2k93Pk+r6iyjC1wzlFDigbqnIIClX5uFSMR7kI"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.4-next-1595436809-1db87882.0_1595437078530_0.17576821898605477"},"_hasShrinkwrap":false},"1.43.3":{"name":"@xdn/prefetch","version":"1.43.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.43.3","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-h+WMRePo+sAgvrzQUf89dIvYEZOX+NYsZaaIKW7V9NqI1PeUIxVqek19POZvupLIbWiLW7Lswq/JDjzbZ5BoPw==","shasum":"2af8141df7ab973e3f91b28ebdb86344429def78","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.3.tgz","fileCount":52,"unpackedSize":83166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGHRECRA9TVsSAnZWagAAb1cP/Agv70wUHpr1AZnk+FG/\nmUKix4RgmDcLW5ojqVl3ydV6QfPCJsyJ6vFdPA31l0npxtQ9oqIIfb+gIQt9\n5dhwS0McwHergPwWF97kGwxtwdoOE27L3BsyIsv4MOfynscVDbbhLqdsJZDR\nAkbNBiyVzcD/GjYkaotsuKQbugtYexTqi+zwa2b9o7NSbtvXV1fNrZR48t0T\nUDJhPGer/MX/4B8z9VB7eM/BblN++IGM0K+vQef3nu1LqpjfvQo6tH0M++g+\nPZvLaIr8xtylg4tAkNL2zu32nGdwgAmG88dQgN/jXfgX6QSQXN3iZAiM5DhN\nLElquPlVW4nh+XiL99c9Qln4oIdbXtNRQ06kQJzM3i2KyVILN6SiMxqAPwkD\nt2kAfFfXp0694eWdxPOQ2ORgw/6lnHbBDobpQvoQ0eXf+7GCCTvi+0JWwsRn\n/Z86a/lYygXpNhFLg/V2n+qnqik3g89LdXzrPyRUIjUYj9F4HSL+dm61E+9O\n9UYKyCqG/gZwac7SHZep3PDB3x0WZy1GzyVqSTA5zroszDyABkn5s4MHRFGR\ndCqBbLoHLejnXIpC/uMtaFzcX8MBNO1232k4o9i3tdG//jS6NY/TOyjXKcwy\nfdWirUKzSif/+5jP+CanwLhFDMOUlVf7i5uX/1SE5sRQ1ED9cbXRWmCcaOaZ\nQPT7\r\n=5A0u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyT+DT0VY36sU9satnR/yDBvsp0ARw1AvtYUsVZ9luSAiEApyy9Up6f59uVyIGGBuYjzDFkU2356Z5Vb+5PNWaDLII="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.3_1595438148371_0.03499968519282115"},"_hasShrinkwrap":false},"2.0.0-alpha.7":{"name":"@xdn/prefetch","version":"2.0.0-alpha.7","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.0.0-alpha.7","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-4ynrLihn2ZS+jhVSbbiSM9tHC1B1H9j6R4hkIMbpbegzJigppS0+OZGZZVVDndWkT8E1vfkatYCrJF0kEnuuIQ==","shasum":"821f1fd055b1a49d9fc2919113adabb6effa88d9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.0-alpha.7.tgz","fileCount":52,"unpackedSize":83173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGV7ACRA9TVsSAnZWagAAbg4QAJ/S4wfQ6IJ+4tywDa2M\nMm5yqoyGp8HiApZT2yDAK3JR/uHH5ItGnjgg3Fb8BT8QGw1a3z+VBCA7OBJa\nk/y/Cul23VMj6jpvHOQDMXXsBumQLOhC+TB3IvZF+OKWCtdbGutsyvLATutW\ni9ZnQ8dEgjGEOFuxPPrPBcYelV2Wmx1DX1kYvyCZQWFtYjJm7WDLiElh2KbJ\n7CGVF2X4CFLiwPpUb6o1V1nvr5u3+z6om/SYmmjzhOXwEZ9gawONK2zlLpGq\nbXJR1V//kBIlHmDNjzp2HObk+BAhZEZWoflKcCU9f8NyeAmLa6hVrRXlr6a3\n/+cZb7F8XMzv4Rqbbk8f+lRHCDG1Jx9Bpr9hJdZ5CnGVM/BEQVypL6QQuHYN\nlP0rQQvEOFNu4X3BNWZ7sKFTT4QGYSDShynbht2qZOzfdjP1L/k6GntsWwW+\n8UKwrfAcUuzJ5e9afjUG1nRlvneoE3Sem5K//SiC32iw/BPHJVrs6KMP7tB5\nEPPG1EmK1qw/VeNTdxMnYU8ijxV4m6HliGNWc4f5t+bWJK/9SXZrysTVittL\n/j8NreRhLkc57tLHsEzj3HqozCRRUQBEonhwnPdj76pVaTP0ZZRdvgNrkDty\nV37GvQWJ/xZ+FbVC+m05ynMfikGOzWZynqlfKaiCiYS74DgjL5CONi7wMVhX\nWJRg\r\n=QlYb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF+FcxdKo+4Z68UPsjjQglHnp5NpoXJFtl+OOmetS5vpAiEA1NDtwkqAUkHISVkcSGCoDehns7WBLFko0yAy8kEKBWs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.0-alpha.7_1595498175701_0.7143928369477524"},"_hasShrinkwrap":false},"1.43.4-next-1595552590-48ce13aa.0":{"name":"@xdn/prefetch","version":"1.43.4-next-1595552590-48ce13aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.4-next-1595552590-48ce13aa.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-sRkB5X9mz8Ua0yguxiJW2JXwywf0lcMTB/aIK35JhAmpbABqhXceWIeyeWVtmQiVZVtLZv7SijbcCwkOuYoqeA==","shasum":"984022943dcac34c683151126ec3c0e87b1f139d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.4-next-1595552590-48ce13aa.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGjRWCRA9TVsSAnZWagAAoAUP/0I7ex8g+rL/9cgfk0HU\nI3iZsmM1zVZl2A4GcqUD72pLqR7eA64T1k9Gv3ipwzNJwTY5BYRJHYxvjBTf\nHSTPHGOqjSUyWD/HlHzg95AYgzC+BWtV37eVivATkdTNJh9nnGkdI8N2yb0T\ng2B5CWV9oiEedtTiDbZsxWDKsuRYK0AnsuClve6pN45R05r5gFK+ozjSkqel\nyqDyT+Pw6gpB3iETohi6mSLRwncMyM8PCWfBKpyqV1QWY10+UKHdRojBLcMP\nSSf3WAFv5u6d6BjYE/VoFCde/GN7sz+CgRByBUozbM+tJl/TZxeaQ6JgVI7e\nUEHk+aOGzPGZs2Op0wQYudbVSwyOQfjWn9CNqEeIvEMROZZGOaOD1LVRnL6i\n6RPGscX2EvDtl0z+rBIqXurnCZ4qoCTazAT4BUzeFPOOhio9cBeVwRmtnDbp\nyjdfo6VEgDjgjK/lQa1NFe3jy6JS7naUsVf9teg3SSRTf+bakhhBooiqUoZt\nuSz52btMV6AjOlJEnTUH99AQigOR/M10eFiZiRa3XxTHDBuDxTeVegdRsXTu\nNh99eNchSR0dFPGYRwrRQxpgEGYcDwyB7LU6O0UzhXedvjNsGARn7a0Ow/aN\nX0IGsebWuBOotPTqoFyd5dl1PNYRvTwlirgvX+z+H1qt7UsWjmGxUgcSUCgm\n7qbs\r\n=8gyJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYTR/9ooMbJH/H38YISZ5ly0WkAa3V4VFmmELshZ29CQIgEeUrPm1+YDGFGpmVywyJy4x22DLq2+EO2G0s5Ei4GqE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.4-next-1595552590-48ce13aa.0_1595552854122_0.5071797258276196"},"_hasShrinkwrap":false},"1.43.4-next-1595553515-81b33b65.0":{"name":"@xdn/prefetch","version":"1.43.4-next-1595553515-81b33b65.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.4-next-1595553515-81b33b65.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-b8h2i8JHEMuUQ4JcnZaAgBWOiuNIB+/ostI9TK2sqS/D2G76HhcLLPqZmCqSxFFfK+4yNoCtP4EEzbGr03ivYA==","shasum":"70cb66cedfb6963d0afaab567f16bd4bafc0078e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.4-next-1595553515-81b33b65.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGjgBCRA9TVsSAnZWagAAE/8P/3dN5p1oeuNdVqiT6bal\nVQ1Gp3/PhoFbOIhwBzKM0LXNzO2fb/tVL5GzaUQeps3u57c6eNaFonQzzWI4\nts69lzmOzlDa+TMkTzQ9beN5xXILwzgjN4cV/LP0oNBYlESAz9FwjnpUJmof\nzQZJEeqL2uTqSZGWJknIyjULpjBX7U8AfH3PuRWsWgaOuiqLG4FOJwU4zs4J\nqmU+sK3skkZQw5hKQSkaBD/mvgWix3F5tudl0kut7jDkzGz+GOwODKFW0uMN\nCAqC7W1muapClbTVlWFHboPwjfm6hdfAU4Z30nn1eJEQN+5JPy3mfvSiO0Nq\nxKhU8dkWeEfVpnNIPUKldTYukF9uwe+OrIgqMu8IbEX6Q4xjlKAGvOC2rGkd\n60xFcO3sGM6X12QPPoZZ6QTrvs2ds/KIY1D4WkTcR7Tpz1pklvSgkHkbKTHv\nM4hNUKyTbMq4Ml/AYIanfV3KNAUOFI1lvF21hs/ZZ1fMjpdWEBkiOt5ekWVZ\npO/IZvmQC5gZYpPbRITBeqgOpf3qd8O2ASFaXPucCjy58rPbidOCgYuqG5sj\nDI9WpjF6LufHUVQATNBmHxu9uz8239ATRONvZNVrKfjVKsvGr4p1a1yFsxQq\njIcyheIZwwUjPNtsv1CRvRXF1q4RO8c0iFmX66N9fjPZ8TsSB06qy6OQIhIS\n7w2c\r\n=M5eH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB5oLZeN6D4ygVci6vKMk90CTx/80YTU1TjS44HZUjVmAiAS1BeGTeBKRf+CoUXocOWrVmu3RsBbUxzi5BR+JEFMHA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.4-next-1595553515-81b33b65.0_1595553792520_0.4528313832783806"},"_hasShrinkwrap":false},"1.43.5-next-1595554793-085b61e6.0":{"name":"@xdn/prefetch","version":"1.43.5-next-1595554793-085b61e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.5-next-1595554793-085b61e6.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-acNzENSIe1BZp79KJBCfo+sgQmi8/U+YrLydu0u794zfH0gGejmV3xzuCzRSdG4QLATQsP6QhXsbwcYFsbhwdg==","shasum":"263b71c6790be77ed5066aae351ef9b70e593c12","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.5-next-1595554793-085b61e6.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGjzvCRA9TVsSAnZWagAAxnUQAIaKCSxlj+YLRIG5P/WU\nM57b0z9GHtLq0OaoOhwrW/IKdtqWn5uwyYV7se6aOQCI+y/5ITANBJEG7ufq\nAD38+VhLW9HKywdP6Uk50SEcuSa5HizC6UsorguAC55b5iLK/ev/BTQa0CzF\nw1FK0/K8rsENkuiQjGPUfWhtaeHBncsCm1IsXkbeUn6xTNfiuwA4qQpHQ8P2\ndFIu6xvITAKMJHgN64HQ8JqljmU0uR8KX2F8P+3UQ1dJ7sa8AOMYP/FPgWlf\nwXnrNQYYt+rngyYrgEYkiMTqyLAcxbHbnu+OTYAvEkbDBGSPB4EErZVGBMAO\n+YfMTYweTW3jFFCIy33bK576aVorDUlXNJ3iFz6idnivsybDctjBJOwAQqB9\nJF+tEPYPKhZZL5nikZI29ldcCVwaJfmSry5Niphc1mkmd7dof8JE1qoSG7H9\nLzXyORNAz9cO3OYOEFGNDr986BHWRM2k9WLCSn+D0DMNeCVbJ7TO3gwFu5H5\nGcrPibXm5IjBcp8FFa1ypeY9sOiAleGRGEqRRq3MECltYR4444FvY7HU+IK+\nx7sYeZc3rxGZg+79NSPt15kZxuOPv/WvOhseEJW41QGWlAX2Ex2dcEbUim0j\nlmUpUa7JDxJ2k74//rq8TtK5M4/iCdPfb0s7g2wKPwB8baGQhHBhpZGPlSYh\nAEEU\r\n=QpCA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCs5h2SSm9++7j4ojBUlSPZu9hzycw3PKLPWiXrEgQtBQIhAKb2gZzYT+VZa+EziOh5VrhNtK1rqwQkFg5bmH4oqieL"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.5-next-1595554793-085b61e6.0_1595555054739_0.033108109918075"},"_hasShrinkwrap":false},"1.43.4":{"name":"@xdn/prefetch","version":"1.43.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.43.4","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-IDRiEjhn2sIpu5lr6NCl5YsgX+ttuIj4v0cjDF3tiZYUrjncG93CTPSEljkSs6gl2URUz6P/hdHRh/bPCWBfnQ==","shasum":"70f3263b826f0bf2ae9c49092c808f518c488467","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.4.tgz","fileCount":52,"unpackedSize":83166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGj6uCRA9TVsSAnZWagAA+3AQAIhXbjuBXkHQOV5nViCh\nblK+C0kaux/H5davZYAKPlvRjeoLxROkEFtfR5UHjGH7u9uNtHW4VXHghdkg\n2e7Hv/t6Oy7V8i/8OPltKce5t0C2Sdtaqt4LtX51IJp7EnGB6ykk31UNj8mj\nZTR0q0dUTPws7TQcV+b1N681qF1haeaV5MTodSB+3T3XrD2NBBGEZNl3lv3r\nJtfZypjfmLGpQMVGQkpU5SJDPEhv3FIw6ziNhAZsTL+TMgNv+V77L+weDDDK\nKiTlwrr4KU01SCF7+4k90PRsCKfFLnbUDs+i8P8S8q/usbIACtNj+BwKuZ9G\nAgz4rsP4To50aM1EofxYDg90VLeQ6sEcSt2pE+L6IywqIWYcwgZnIvhORp6j\nWzV8ujUu3Gfy5kzBPdBcIha455gnnSF7FeknOrf1j0i5b+GTe8nVxgq4RvDc\nUGmsqDIeMY4UA/BBqVSFGj+Fiekl5HX1nCyTN/T3PZ4BFY6Ntn5EZjqMRtyn\ntwkGqbOv7NmZGJ4dPU2WWkDSGrNFBsJwNyFzi/L72bFB9+SDe09pAM9sf1GU\nnCKn/vNXwfzUmGqUR0gw6aQq+T4SXIdD2SPwjmeIdAAOAypCMqtFk2dHOtUl\nTrc1xWY/0QP8UeKEu0QlnSFrZekCbGBQRrk1rWhXBJ0XpSA3p1pcPowHegmA\n/ijw\r\n=br3A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMlW/IEcbUJSlYsVCC5yH31VaORt68sv8aQk9F0/cXSgIhAL4zidghM5tJo3p40ndOtw9xoZdcbgqGk1nHlmVnNAnN"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.4_1595555502059_0.5810283819298823"},"_hasShrinkwrap":false},"1.43.6-next-1595609316-2326a724.0":{"name":"@xdn/prefetch","version":"1.43.6-next-1595609316-2326a724.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.6-next-1595609316-2326a724.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-4ZqYnzZoTlc7rvcXlEQPRkcVG3Ne+eEj8BuF0kzy3wXUvQTOdP5V6GzN3RpyyzpvIiHu5TeyIWuRKUO9i69ReQ==","shasum":"ea15d985fc26f0057d8d241a015917b3a16633a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.6-next-1595609316-2326a724.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGxHsCRA9TVsSAnZWagAAeQYP/2ocftWpCjUUO/Sj9J75\nBdWwWpeIwqazIbT8TftB8pwODkXDxHhInvV6uNXiEHOgmUWVkoAPtfE5IXOe\nFPEM+Ku5hmKu/CxocFv8YyoYiC3zSlkufXLvW9NeR2dDGW3R1nbEPYjAv09A\niunZHcUenx5d6SyMqttEYG3JEMLhKRsIWaK8N0FYbxNqJjTVa5Thc2xqN0wB\n8OPLarMvzK43g6n036V3hH7nVZ9Q+r6mxJKxCDq/gEKg3CgZ8Sax/O+mX4lt\nlNWepNryTdw0x146q3+qG/PRKrJ7Nr5djPmV4FdjOfgu+YhwLZY07oiXL6IG\npp2K//4RKmoefdlYY3U0H7XiJ1pnCR2nIxbumc3kEECi5nN5+kCXAtbeAuut\nLJg0k+SQ1Cj6dSzIHSp6XZymnd0HY8Z7rwttRvK4PQ5nmK01+G90LZejzH8B\n/ur5fQ/+xy5u5jWaW/LTQLlmcv7Xk9w4UYw6aTJTcdNGpwFq/cqhryYEbdxE\nao5w0lYI4PoV9PExpHTzoNtP5e1xvTVNH/ajy15DGXimC81odA0cRQ44oJzV\nUiGiuehQ8JlBBrjej6++cmZ7DeXLQ39tWzYDgh3wvFo79md6T2tWu3zrsQGi\nkGcfXULK9I3XUGSfNkRXXUy2o5YGHSgZqO3LkWy56CYTyMCOOr0lKfFaX/1K\nTBv/\r\n=QcLh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBe6gPv6Uwg96n/zhPg56MExTJQEtSyEOMKWv7Cg6PT1AiBPMoZgLZslG2uT2BKb/sF5PB52t55VONABtldDpyEROQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.6-next-1595609316-2326a724.0_1595609579729_0.018044167526894084"},"_hasShrinkwrap":false},"1.43.5":{"name":"@xdn/prefetch","version":"1.43.5","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.43.5","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-pVARprs7OU0V6RG+/ML/XmnecvbBe3qo6g/iQ/jPl4FRwJHdop6RMhasDFO87Ld+SOqLipVzvhn+G4lxD+xDQQ==","shasum":"b6a5d8a42df0eee42ff9241d14c8ed044391e524","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.5.tgz","fileCount":52,"unpackedSize":83166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGxJWCRA9TVsSAnZWagAAJ3UQAJSquEQqs65VbettYCL6\nQEwTeD+Wn0flvN0GXSObs9+ozNO9Lgi6/t7IPEwHMHZszQgve4OyLHL9kiNv\nPTr0Xhkc17DXK1zg0+4AXuK7N+4EmSWYaP5XPgBuMb6YoHoSXCgT3J5vs7Cv\niLT67Ns/GM+QfBplLJIplZD6uKxYpQWonFcdMjUbOdo6XJIW9vg5hnFAL5eb\nGHO0WoeUiu+e26+fAKiOodm0t7rP5/xNCTN/tq8WXXJnAXVtrIcufBf6zEpo\n8SrWvg3+Olg99POSGaCOqfgtf71nXXA97nb0ZOUDqV77j6UI914JJ90l4jm4\nFaxa76HGMPWcXDofqvUjwjaUwXkjymqGmdnwMlliSTSyUzDCE+lDtS8KoHFl\nKRkt3Z12jHKkt60zBt2HaDmFQ9hAYmCZbrKJmWRxwVGWATF2w9hpfuhV4cho\nIuYyzJn4Y4Rtaed6Bv88l9PwGsCOd1rwio1ypvFmLwczPP1j7livT8szbefe\nse5GKayJfVYmbQBQdVLg637P8wcf0EhiCd9uuKLDYC5SM8CFPjNbqiGfi4QY\nHrk126H685EfAi7mbj80gv3KVCZJgT9bvoBgzbeFGMERO+7F7oXnJOZUlyj3\nJanVhxSEYCWixSMJ3kyk5ZkknKDcImTiNdji9IT0lQqwaWE1+5RcZO9YvryH\njE4C\r\n=/ikH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPWvQzW4IB3u5m4X5vks5mFC1iUuyPsFCPcpzjjQKOKwIhANQERPYH4qVrpB+B6bxM1DnkpsYGqS1JokRujIOVjmf6"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.5_1595609686148_0.2791871208129362"},"_hasShrinkwrap":false},"1.43.5-next-1595612787-b88d515f.0":{"name":"@xdn/prefetch","version":"1.43.5-next-1595612787-b88d515f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.5-next-1595612787-b88d515f.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-WpT84XbuLUQW6n76mWL09aSkbPZwU/SIbZpm/iZiVYTjFznXfLZKha5slvuGe0z1pUjyj08bE9Hy7DZ8L8ExkA==","shasum":"5a7a2913c215eacaf1c3d63175f0f97d3a441aab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.5-next-1595612787-b88d515f.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGx+ICRA9TVsSAnZWagAA8F0P/1soEEe3mPfZLgPinG8I\ndg2lCTTMT+HXLvjs3spvpHPIEban87utQFHGhB0jI9KEsd1zWyCbrVyGRGNn\nL4elYqiLWwIVdVcY4R98itjtn33V4nDm5AZrsR0MW5Hi2KPawdfkBGFXjTLj\nq7wfsNNGiaZ96vKVt04bDJrFdEiJaBXOK2WsbtYEwrg55Tk3E+GICJmEUjTk\nRUoz5bfLcQYEDN+ubN0DxHrH6njgEqz03R1IWEwh2mZcYUo5CueYqUfM7JA2\nh7YJqkyF+F1azy9U4yDuDtN65rxInXrnV10cHGlp1OyY4RQvp8xP1AWZ/Xtc\nrUXZR+RnbRdnUqO8Apr+bSuhv1X4yAZwunQTH1WOib1oQcWcRcpNMEA40tjM\ncJxgvhRg38Tiiybk2x4qPtho0qbLkI0Kc862MpbYVF+lUSgKZonLSoy+dx3c\nUV85wdGlqaWXauPWJESYGli6HndWdZ0h+OUajri9uyFQODqJ4wSnYmaaz5Zs\nZVhPeMQFCxrBUz1QdSbrKk2Wzo9BXGmCvlAGTPklUyq1ite6qzaRijivUvja\nOQ958Klkrxi+aSEbVUOVYByan5M36Puvci8bIbzPKosAfjU6WATk+FQYlJGc\nZJmcj9mxApMnwa9FQCRhQ3u2UABax7N0PqaTL3cSpUjVQ1t8keJ7nr6iSOqG\nSZ2M\r\n=N26C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsv2alFJNVQQBmgQ5526VB3XAaLjTkolHC37GOWbt5/gIgTIjmvEjIbhweZX4G6+sn22mqQVTW3ebANmI2Mp1C3QQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.5-next-1595612787-b88d515f.0_1595613064214_0.5001178610743888"},"_hasShrinkwrap":false},"1.43.6-next-1595720614-cacc6182.0":{"name":"@xdn/prefetch","version":"1.43.6-next-1595720614-cacc6182.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.6-next-1595720614-cacc6182.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-9Rjczp7Kb6nOv46B8Eg4tcVJqUQw2UPk4iLBEmteBsx7HicKdM6WVQhMMGx7wyMR5Ighx0cYY7ojqIgfTVg9Ig==","shasum":"916883e721923d8044513ea9b1d599054f3cffb6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.6-next-1595720614-cacc6182.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHMS2CRA9TVsSAnZWagAAWn8P/33C3x9/9BKTjip441yX\ndME4R228jx7/bhlVYgjMwMxvv+mTpLzFw6C2ppWAqh6cQx2z5ltL46rpEUVd\nj2iGxgNZr/d8zx90cc8cshHiHvz2102KOPBap7YKzUnF19wBkBsrFJXtmaGY\nNdLkh3OmGeX0Bzf+/nh4ti9azqXC6KXbD8ll+q+LUckGz8J/xcW4bm1FF0HD\n0A9qc2GjLUgPANHojRn80lY1THsDY7ulao2/v7whCEqpzpvUQneRBJcXff/j\n9mqmibbDUj0ovZpYm3+u6FabxltO0CJFTj7NQmNU/GIaJ3FaHpTs7YRAqhHQ\noJd/KIx0hDICvfgIfVxZPJZCZJ9kgS2faUMlHmsipWtadNpEzqPBGvYhg5fu\ni2nzqv3RLosrBKyGDiXyZgAdjA1UFxXAOIn+uRNgSMjzCszY448eQbOXjQhO\nSKRT4t0UOSSPjcFrO7iVfBKr16umfCRbhrtgMwfGno+WiqWyX43QZe8JVBXe\n68csWhacOzEGGD6AR2dLXj2cV+eUfubP8rvCAp2Lx3HQGBTZzOEYjdUi+WW+\nTw7y4LK6aYtFl3VlOrEEo1P//7xMIv5lnAPuLh4xAzSdIMI5g7VqUrIxH0KB\nwUzgUu5J4a2xJU1yxWJ4dbyqWevuDchYSOSbWwGui2myl2Sd+c3pLjnIalJ4\nyni5\r\n=7Apv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAImC8p62wdPZ9jXMb7n+bNz06NXMZO5SVQMFdSsYAxlAiAQl5t+Kao3aJHFfSBtGHL/UPWEPXfWfNjbPfSGf+2sVg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.6-next-1595720614-cacc6182.0_1595720885403_0.5597541841145444"},"_hasShrinkwrap":false},"1.43.5-next-1595725185-860ebcb0.0":{"name":"@xdn/prefetch","version":"1.43.5-next-1595725185-860ebcb0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.5-next-1595725185-860ebcb0.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-zOZJSFMxeh9lBkpLj+pYcqVsRUyQCt5GC39ogghAYTlquNB/51iINLZpXi8DauMn0gols44nQo/PavH2gVvpcQ==","shasum":"9ecfbe1d3a140573ddbc2262d46c41ffb0e3a104","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.5-next-1595725185-860ebcb0.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHNaDCRA9TVsSAnZWagAA4VoP/jeLiFxs60VG/rwvexMf\n0VRjYCokcSYQ8Yw/1owc3hVMLj9lfE4IyjeQknMFhAYM1BdLamzv9TQXymmg\nP7xlj9//Um2i66w8wZJLlWRnhKP6itGlOOXyrixGByX63bdzftpEJH2xbC3Y\n/Oe/vw1wSVzgZf8rbww4tIjHwdZkq3+nicHWW7757rbv4GYVF8JdSBLmTFHU\nfyA8smValkK+DkqEwZFkBjOOjhq7GWjnJWHZDKp7g4/gikhWX2iYY7GYBr79\nFyP+LECIVS/gYjyIVdBQc2mXh+AvIVVUjkmziZ0y2HcyjUwPPeqXTGAjWZpy\njuXVC99FHsQ7IOA0INcVoLsG1c8oBB5ZmvEGC/cah+dxj481rqvSy2qwwNKd\nri0qiNB4VJcBS7M1+jkjavVF1+Sc+gYIoLTcpz582kVUu3+EtX0p96Q3DetB\neVdG4Ec0gklWHW8pTs14uqssC04QIL72OlloPbQqQzhErAWhNmM0pNHluYI2\nKro45EWuE6i+SlL0/isZFroP3B3axSBumxQxWNqfwE93Yjg/WT/aO8C8lzyG\nzDX/dyVQ0gnQGU88LT9hygfc6ILDq2Z6xD27Zi4vtiXVsb90k1BBeTWmZ7GJ\nVh3Ne0s1D5FbCtH+syEpeTnsB5adnbiNOeW0nHTGq2IDV9GacorUxToM701s\nSlJy\r\n=FVY3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBn05EdPagog3Q9QxQgjrgi3qKOHxATeadxC6zwc87WwIhAK4f+fJAZP5QuNZngiExFBNEWhyhI+Op77q9y+eg3zUV"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.5-next-1595725185-860ebcb0.0_1595725442694_0.2564148061970535"},"_hasShrinkwrap":false},"1.43.5-next-1595726573-6ab7a20c.0":{"name":"@xdn/prefetch","version":"1.43.5-next-1595726573-6ab7a20c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.5-next-1595726573-6ab7a20c.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-BbielGyWg+N9YqtlJD5ivGu7t7sGJivLFE/1XCYUxJTQgamR4z0nGpxv3XgZwqIPHk0HQi8kYqD07PHsEAR6ag==","shasum":"1f238775a2d6fb2355227c865c0f351b53018e66","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.5-next-1595726573-6ab7a20c.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHNvoCRA9TVsSAnZWagAAqk4P/iBpaS4ZKewXIscFJsjL\nBrbgWjf8/pXgljEJzqpPSzEBTSJWgKd9mMpvfyvqAvKgbvBtEzE+XXICCmPl\nsOi2U0KABep+BpV2Eu9a+OrEGSd1UIN1oy5tf9nuXGjHC20/NOY1Gdzjva7K\n4ZVZqvNMT9igorw0YXb2NRIGTisd4uOmhhsJrvBLW11nV4AJZM0pWG2QjN0L\nnL49o2d0InVq2/1iL7QINX4zjzkLqXHSy2QuFQ6HF89JBPzt8en3sf06bBHW\n41lpAUb2pkoxZfGIhJR8SYjiB9yXmNZgba1+c6EoSWy4LQgau9pdEF2qxCUF\nPEgPg5nCwRU/qnpAOZNThNc79rDMJ8BZAMTqG1YW0fQL7uLQOc2YQshuE2zP\nzU/2vrXC/CYW1Bakq1OtErXWaciagZyRV+/6Q+luG/qYDbP5yXiYuR6iLKQf\nmC5+1UsZRXG+9BTfMZ2aBXlQV6BKZ7kdbcafRalHSAwW1ZYYrC0cGDb8gfQo\nmq9xaeS6OvyjrFgQs2arXqoYQLmwqxhyeDQAoku02urUF+RYkDWROuSLkZUe\noBUUvSuZIR2AgsKTDC4T2R1kyKALMVFU25B5aegnH/y3o0UQuD2z1oyyh83B\nMjunJC1ENIRhKjp9lBJVZ/UVmJ8BLoINLZK+8W+Ox1tq2Y/SB5Ch4ay+cmNZ\nTxfd\r\n=d79R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfvu/OzZzIyHDAP9KirJiPNSHqI3wyG3aFgD0V7gjnegIhANzlD5u6AZ9ywpQ3VI6iXRopN/pfIkkoGx6MkL0BqrN/"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.5-next-1595726573-6ab7a20c.0_1595726824017_0.3678840967665886"},"_hasShrinkwrap":false},"1.43.6-next-1595848332-32fad928.0":{"name":"@xdn/prefetch","version":"1.43.6-next-1595848332-32fad928.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.6-next-1595848332-32fad928.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-txBO9bfGmlhbWWa49Ud8fwDoXZFiQEbczIMmdo/UZHF73BmTIpl6STKGAqES+CKgk+UPVF6pOOTNAGT4hhNuOA==","shasum":"96bbb97bbf4ae86662e442b31d1e9e37911c3eae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.6-next-1595848332-32fad928.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHrebCRA9TVsSAnZWagAA5gMP+gK6ZFyBwnPDas6oHQii\npZlXMTzXkWfJMHec2ZqFGKGfSWEZAAjvWu8T4erH4phu7cbbmPN7A+KkQCel\n6HBKTHgMWcIIK/5xtwthixxFVHstrEXAxfAt2lVZzpTM0YNTP9DjMG2Si44U\n7IANxzBlwRVQ3pT4CskafHbto+N2cGfl+dy233/RdbqQdf4Rsdk3U76mAeH/\nN4wwQkhOF87mBxIL6FfJeFiTSPEETy2bR663Sgbgtr4uP5o9+WDGjpNFNxC2\nynhFttzKoENLnMCdvqqGDQgOGgOv+6STZbYG/aipXXO4EmyKWQRwyRGu9ewo\nNEn3uFcsgHnvGCi9Aj9J8cHYFYxUAcNn3Qk1FrU87qqNs7ocM+eYLar/X+8a\nC7tRO3ssCmN/qY066PO7hO/ITqBm4YcIrH9//aq9aLxQaXmjbkmCdJdWfNuN\n/Uux29BiLE2gwecZJdY2XHnCQAoKNMvV7uUFip0etwhIyJXYEyRiXWgl3RcS\nxseF+Fx6hWguozYc/1rE5MbSxMew0oiE0b1SKDspC9wjTbbK8tSmDlwaBfyq\nqb8fzTypbKdJgORl89VxCB3dvDdNOn+G7z0c+O0rM3ahnDSzgwAs84oqNNyA\nVmJaMyt+L3KijAk552/C2ydbnMSbFWpI5oyTghhtUvMMzH7+oZ1auOMh62e5\nDm85\r\n=hXQc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZzbRpMRRzruvIvumUPFdgIDGbBMU6YGj+x0lNCm2tXgIhAP6n8yPJ0AgiVDmUoTkq9dD7MdwkcT46gvVRC9d/doCw"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.6-next-1595848332-32fad928.0_1595848603431_0.6400283154807846"},"_hasShrinkwrap":false},"1.43.7-next-1595848459-adcfd257.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1595848459-adcfd257.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1595848459-adcfd257.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-09aFlnTq70awquMhZ46Bbk6AfQlsdanuk2z35QAE5sbnmevBxsCb5/wNP9X/DJoHMD+NqLDL67guhx2xlrvhGA==","shasum":"010c5d81a49d89abe03882ff588330f14bd0e268","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1595848459-adcfd257.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHrggCRA9TVsSAnZWagAAY0UQAI8L98e1tGWoV3fUIZX8\n+kDibPkUoi6J+lkE9dExbLeEFmX537BducWrVqijZubGaV74MAPP77QvnXjU\nVwDWcQDCSA5eT3LT68i8lQgUk/0c0mm6TDKAkgAQTrBOX6sYEDQOb4kTSJnU\nSbyzlNOt9ofCg5dvukqzDZp2U5DiY070DFs0/BfhzesAY3pjkz0NXfwolCc1\nVSFfbLzucfDNBNIZ59zY23o72IaylBeoZiFn/zxbuGr6LQTG94puUIQVMOdK\nraLaTq6rijR4aA4bHoow0Oyt/h9I8KajDaeZh10FWpWA6rA3Ngs8md0O3+Un\nMU60oFTe6EVOw7IO9mOIt74AW27BIuMAUM5GskOsqQKbvwerOJ1fm3dZN0jH\nuy8P0QtCF0s+Gu19NEAzc++NeXZBSVusi3J0N6VQ0WXE72JdrFzmqqkNK547\nsVe8/FD8Sc0d660HS7IwP4g+OmhV76bTG5Ak0uxjUBmYcprAazcvPHvouFIK\n/8VSzQzF1SO/bqTAr6qhpMlcbGkGYOEqA9r1cZUseqgqpgP7CDy/giuzHlVu\nQiVme6I6Ub0wBnP+ZYBu+ta425cpX8vhbM4ujSWi8PfpTA7bFgCU4gt7umb8\npSOROIqZMt1eNiF9ArzdC71EPmeobZ9NQjHQ/46qwQTJiZTeHFlmUAFrCZTO\n7G3a\r\n=g1A2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqtupGUfgxsOakprsq4OYo6AuHd/FZjB7ApquXHjHYBwIhAOZox3hv2e+Erly8ceORI6+4Sw0BwPOsDuzCMjku/SXe"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1595848459-adcfd257.0_1595848735565_0.5280707423200317"},"_hasShrinkwrap":false},"1.43.6":{"name":"@xdn/prefetch","version":"1.43.6","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.43.6","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QNgNAWSvHx7Oo3DI3OMopuPcbzLbBxKfzNfSRCKLWRh+upUc5sosa4f9RaCt3r8nx2yoNbqhFnt1R0CqauAXvA==","shasum":"7825987ae3135e8288e722faa9b4cbeb1cda5a3d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.6.tgz","fileCount":52,"unpackedSize":83355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHrm4CRA9TVsSAnZWagAAq6AP/1iTIAGpgT5klfa1iIFb\n6HWYMtWzP9sCkCE3ZT/H+W9AHwVfJ3ePsf+1xrnITF24U0qa/2c80fwKg0nA\naMRJrgHjXttNitJn/QWBE0SUlJKOzAYpfpfNMWqP2F+TOzpZnBDZeoCF1Ldh\nlg3jsqSqd7+kj1ZM8HOqRxiL6OKIPUlZBQs9YO1VruQOCE6QighoqPmMrFRj\n2CZnAtAb3ppWlygq/vgVm4Vja5Vm/ul4/D5h+LirVUIigIeNWsNpjzmdsgrH\nhXjAszVHrexgC7f0wn65bYgoeEsZxdO8injqAZ8KEK8E17HFN5peshSsDuN3\niuM23PIZaBX8JVcKTuKlv7To0FLny6F5VCWhkfYXSSwq5iuYjgCMi10ZDUeg\nWbj5sEzG22ilctS5CEbjhkLcIDh/TNNvYm5QgNcmSFKMh5Ut5+x8oKmAcgT5\nDqPYXEnXIyS+kRFXDai77ViyXSl56mDFktsCC+kTyVx4KyKI/Fi5cs8xrLWw\n2yRRJFjZtLDR3tVhEEb/GYsIFrqS+bzJPqDWFkAHpy9WFxTr7WrZbH9eKpU8\nEDN3WDeMPwlJyzy2VMiI65NWVnOye1sHTOVzty5CaB7b2pcNtQnF9/mUkAx1\nq2fkj+JD/+glckp9RysRvg82CYsg6WHw6qFn/pOyHsuVe7I4xetELdjpn88y\nDUWP\r\n=mDmr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBKooJsB5UQXGFO2fgSalvaMaQMRItwQ/4wS2SRE+mBYAiEA+8yHmWBIG47DvYdcJ4v+HaJgO7AqztKdY9MFa2h3ZU0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.6_1595849143675_0.45610172172028296"},"_hasShrinkwrap":false},"1.43.5-next-1595854815-cb58089e.0":{"name":"@xdn/prefetch","version":"1.43.5-next-1595854815-cb58089e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nXDN Prefetch makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.5-next-1595854815-cb58089e.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Nxf5CC8muOIJXsTQ7tRSDV5tJqmrV3H5EOdS45O9XxarL4iBsSYiJMHgUWnmVbeP9lW/3Q8978Kl1kB06Bf7CQ==","shasum":"de0b7bd668da69232ae1e6b49f13d824b409267c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.5-next-1595854815-cb58089e.0.tgz","fileCount":52,"unpackedSize":83193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHtD4CRA9TVsSAnZWagAAPDIQAKS856zZtfH5m6UscuME\nu0qspC45rZlsLp4nbXI0DTZMHpRM7pXYYnO/F/uV8P5/dId0rBiwE86ypTd+\n8bUdBgeDOa6QLASw8kQxtLhqaRLIEHr8L9S53HKHnvOzi/8DMLF5zlH8Qm0C\nNjmEMLAZf7foPwbt8Pxof0+dtdedf7KTilePqtiI9crMUXYXX0PMsH4NOtR+\nHVqXuCBdG2nyQyTAOIZo5O2ReaXNCyVjoMaYMBfXp0v7OvPg/Iwq/pn1FUwG\nlqnGSUtEhpfqNtxGW6/XZn78ocCS8WitiDGp+LpO2fnRNabymGEnajQ8gust\ns27nD31m8iGn4a/XSxw1bMbZXB3E5ouRr5p3ZlGCRBKrEPm59oCzoH3c2COX\nAm4M+LiVMzvRHiixXCS1jzQTNNP046ElW0p6D+ZMSS6e96uss9GWIs+sLX8j\n5lxvsGuaizcEvEDdyHszXLys85arMbMUAObbWLZ5+G1dj8FuSoD8c/m+rSbv\nUqK088Vi3MKfnmAPiXN28WIaZIJPziDbaTPD15zhywjl8Ym45fLiPhd4qo4w\nIIJSA+ce7uXaNOmaSFlYf8VU/4ce1JpQyR+XeIz6wB5d1QK5G+Ry1bLghcm6\nV4r8t6eyYs89Kg7Xa08YcaFMyV8c6I02oe9bih9PPbVJYRoAdFcBlMKryDeD\nSo0V\r\n=3ohv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2SHcGXdYlEH+3VSEiuMg3KvmaQfDFBDIh6jvvGwaaxAIhAK1jrawzYuewzJt77jOyN401eoT49BGOBo0zthM+ZchL"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.5-next-1595854815-cb58089e.0_1595855096026_0.8443207818979013"},"_hasShrinkwrap":false},"1.43.7-next-1595963318-b2229295.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1595963318-b2229295.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1595963318-b2229295.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Gi8HTCzmWru3CZZjIgaEQi0Al6dnXTwKhC3+xkAYOFYl14lAmYWgl+6AjywmvzrRR5wAlCWWCbIhZlPXcde+hg==","shasum":"06ce9295ddb4e37be594e0391f6874bca7d69b82","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1595963318-b2229295.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIHjjCRA9TVsSAnZWagAAuhEP/jyWq0FZCa5lvnY9UxPw\n53vwS4MWm2i/ad2Elc/urdHfRTN8QITSJrZBD38Y4YwxpcRMEtHsIHx1CLzK\nZAgkDzQbgqCSiL/DE5UHNFQTA6j+FAZv6acEjlHrXrefTTeN/gKxxpxohHry\na+suQZ0ofgw2ALBCfzpa7OmPMmwBYmWYeD5uSsJXq4xwxMIwbg6Hf+KltMql\ncDASi276nnbJwD8bmfDbydK/U4atnOl50bReZrA9G4WLBTBYQg4MhRSaeN3s\nb3paPLm4ebH9/HRmOmUC07cSYobx/GkoxDmI5yyHVYeT4M6Pi0wDYvJWTloL\nhMJAeKG/o/XIYaTXQXQvKkcL2C0JunNeMQczIYtbibX5pSf7GAPFTNM8dD51\n2rP/cm03/7OyiBgM4Epr4xnBNIM7wuDSFsGJ9tdImSr+o5JzBVvREnvzAzzE\n7KbDHIU/0EzDJ397DThCGpHbelVWlKYEzws0SNfolANa7TA+rTpxvED8KYm2\nkjjMfCACZojh1A3Lfc0zp7UCJPxAvSy8TRyPAfYpFeE+cMl/89kWMaTstr4n\n7ITT2tP0n+5lnaKKpy+5KuiCCnigOcA1u8VLZeN//9I1A9ARClAOwoQgG5Jl\n9u6GcpkSjE7YWzAQpuKGjUZereVVkR0NwmSn0MGUhJSD1qyLWl2ZEUKXf4Dn\nvBm4\r\n=pLfA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyftFfLaoG/HAhu65TfSfozGPRbeqFKgndaP1xMILx8QIhAIMsQ5Q/Ma/TLMAWcGCb21PnggAXGLCXRwrHW10GM7vc"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1595963318-b2229295.0_1595963619422_0.10146794561247452"},"_hasShrinkwrap":false},"1.43.7-next-1595964224-f1c7702d.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1595964224-f1c7702d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1595964224-f1c7702d.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-1++9IQraqK8+TlpI5HoACuvYdsq9cTsd6NDzqa9o9P2nV+ujseb9cpbm89yPP13cVJuWGpvIchS97yh5+K6oQw==","shasum":"f0a865f5b19758d724ace5c1ef59d56f99dc5b0c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1595964224-f1c7702d.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIHyKCRA9TVsSAnZWagAA7UQP/jPi5YocYecQLSmE6YB6\n7cuwkrr4QbnK83X3csnBIx38rWbsKNXWp0sfhagXBZlQUTokyLEnXIQfzpZ8\nS/ySw5XdX863SjZjPc3Ee8whQhXJVZZkcrE3fP/AebzE+7vpK1G6rGcyqseR\nVItXqH1Gh/Vd1mJ5utJux8CLboebIn+aLM0kx7Ynbs1s5NNsr3yElXvc4vQ5\nh0fj37xKMZ85VXJOm1kwAmnF9JPv2m4rzA3VRsm7L9JcDq5Sd+4StluexyPh\nuAs/j0F7g5jiPkIo+qeB33fnIuNWx/42vNEmsi4oIoEZxuWVwgTGlZgT5qhM\nOLYfWFo/lZuBgfPTtQZgcWMN2I44bYKWzeeTq/ssFTULOtSUu+QoymPpcpgk\nlzuI1HqvlpLy5zQDnzn5ws3AAhprcDPBPLSOD3Dz31/oMEgB1O7Mjnue8U1c\n9f0dEZDAVFEf6Omo0qJPfXyuIbN1oELvEiwYxz7uS5mUHbi7jTS+00OXUZGU\nwgIAevR9ov7+CANEnjMbx1EYqc/4Pa9SjcDdwHKMib9A1xQeZo6baIU5UGIj\nC+CPsQ5/yhOYwGFaTFGaT1QckZbVHx47BVxYNFUiblmjEtbQMEiFaqeH2G9U\nOphsXPBjGZ+lquPdKyM6DIA2oCWdsfQOb6IG5hexmxDwU42zvgi5uasmAWfo\nx5HU\r\n=62e/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDetp1w8fCyGbHGQPTF2uAwhoNNAcNWl0/JHHUTh4RIGAiBV2F9bZTbem3JVv2HpCHXYzP7SWFlfwrVCtUqIVwPYjA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1595964224-f1c7702d.0_1595964553737_0.9589667597673461"},"_hasShrinkwrap":false},"1.43.7-next-1595964785-6312033f.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1595964785-6312033f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1595964785-6312033f.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-VQqxlg6xWrGmkVo6FhujhkbI5ycwE4/tH72ynlAgqq3kDfRH0+hYk3Hpm/HT29Pu+b/JJyP1ZeIPidX2sWeugA==","shasum":"73e1205f8af47696be72df72752ad20f200d6d0e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1595964785-6312033f.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIH6XCRA9TVsSAnZWagAAyKEP/3IJVhDMAQVlkLrZdgkG\nlfFeJ8EwYmj+0qncTeFkHQUlbQA6gxz1ImjiBeQRX8BUJ3ow3hK47CKRKqic\nN0abbcfePObIOTLj9t26+BO/9YHDJoQuf5RofO2j1AQFzw8rW0UTCpkua8WE\nM11RLHNYM3bc0zdfYnAneZEA5fJxEKztapw0xq5fbbd8wMaddHXcuLbULaG0\nanFXqDemlGanN4VX/PxPOOfje7CuAtF+c2guHEY8GFHZ9sE/XOwVtguOtM+P\nNMUgx0yMNO6v5kNwkQCarL4a2E/Ob9tJzN+3bCPRlyuiU4dw//u/PIz+uJf7\nSbJeXkbeNf8obT486X8Ly3Ql4FW44WmIcdPXvYRiwX4eh40jHmfeM6MrdJqm\nEJ4DTYLzd4RaQaUQ3TGh4C+Q3z4vhuTy1TT/QwqRXp9Kf+LGggBKM5aX+L8g\nO14vBKea97WbTUdU24o+EkxFrojYlWvtj/RxfT5SsEuM+ZgMCS1gnFisOfiP\no6HHHWvIu2gcIbNjQn+vqQgxjEwRTD/sJLWUHeLUWuKizzKgdEs70AcukQmM\nAiQeq7naTvmpkhaDhRqDiD5cZ+lvprDup/wQpkZBd+U+A8KYt+CzZOdEbjAr\nBbsHjYa3Dm4PpnNtX5W3rLy2c+aztxWX34+deElR0AZieOdMl9ydyN73qYey\ncyXe\r\n=jACe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbHoX5CHqBPSt21SClqpnzS0p2Jr9NAORn50SY0UmDugIgeqALHtf2gXqLSD1USudSRvJ9+VQ6m2P9I8Oh49jNu7M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1595964785-6312033f.0_1595965079412_0.6838699474274288"},"_hasShrinkwrap":false},"1.43.7-next-1595964985-5bb00b39.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1595964985-5bb00b39.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1595964985-5bb00b39.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-uD34cy3YyBew0U3/hj+yRY2JntWFh4D6LeNUfvfwLD57DWSZEmBFbLK8jIPvHN9iKapHiYm4g4gZh2jpzWspWw==","shasum":"cc130d537e6b769007912306d61e368442ff9fad","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1595964985-5bb00b39.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIH9xCRA9TVsSAnZWagAAEscP/0KxLzFhswPtmz+q2B1A\nedTNsTysA/eKydCIQ/SsVVzz/Bipi3zQA9FMaptDKc6yvKwO3PFf4MLj6dQR\nIhSYrDGAPzLG3/24fZf2GBoHxH6StTo1vK0izAWfy2abBDLhaI45JAE7Zvsz\nULIBbaJf09cc3hJs2xCHOlnekWCxB8LaMlLfq+QBXpzBH6j/mUWv2skmISlT\ntunO94mHE4aSLFFMNxdsFISiBmL4HzKfH5VQABetbD1VMnK0rwvW29JMkI4R\nUFmLFpLtzuRmPZmryZ1yxjYKWKcy6FdrZrkY1z+6tcGCuP9pQwDxWEYT+ScA\nUMAOx6oEyoyr4AHD5doB9jq6Rd+KxEZCummYs5O+b44NitkYaLF6M8GVAHdH\n/7dZgoqCBTMOsCyRHlMy9DMvU+l5eCoCmxfDGJtzeennDhLJBBw5HBPoI5Nu\nbJTYf+h07OFLyQDL7ogA0Xf0YCao4i/oIAxAFyRWthMX9DDdx+iQqXvA+nJt\ngXkypwS3AbiHbGRuBGt4btHkYZw96lcpJ2/Guxu7JduLxnq0Fys+v5yf2uIJ\n7GLnDvVGcD+dVcnNrBK4XfrLeExMX5BqVZ4hQjgDpOOX0uG6i9o4z92J4JJx\nd9uOPJ/cemI6O4stGwaT1RSNgnt+prLAbcJHmXOBDLS2geIrHU4M4Z0Na+24\ny9DA\r\n=giVN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4tFVKesoaAevlNMaZVCVzTbCt5PrlIpGesDfJHHLo6QIgYS1ZpuQYHXIhoq1FsVEPxMt2yDv5dfeTnDSC0u2jXw4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1595964985-5bb00b39.0_1595965296584_0.4600651102343942"},"_hasShrinkwrap":false},"1.43.7-next-1595965464-50de5295.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1595965464-50de5295.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1595965464-50de5295.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-9WfJgSBFFKc4G61fa6yGu8S1mI1T1qU5rQ2z84frHslzlw7QBNFJKE7+6SyQ6U/s0AOzk6JBHWeUO1EpU0QITQ==","shasum":"f26f2983c0594a740bbf305e4725bb2d7e6602d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1595965464-50de5295.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIIE7CRA9TVsSAnZWagAA70oP/2Pm/HCoI0m7H9iXLg0b\nIeW8nxG4bT8o73HuUgd4aW5n4yruaq1kS6szlJsfaF/ez1JmqbigdTaV5eTo\nVYoOwPOg8YVOZKdQenAzWa0v6EZwbLGUpJtGhoNe0xm15DY2E+ESKyP/q6bK\nklYf6oJHRgOsbCxQ+EYm8+yXeFxJEqI8sp6LIeB0XCe5I70qCsIfXBBDbA/4\nrbVTZszPIjrN774b/ITr+sxWAqepZWC4RJgtGzXWDgntpRdSeKS07xcZ7AXk\nvs72dOWmfxrWRZinJgeo3OxMkB9WvTucEJ8UiFOM0MBkOeCTkMhyD31m4FRT\nspxkZ28CEGHIaiUKqBRNjf+cS9dvoUZOpqNWtDU6nKjzvOaP9T4AMmKmgccT\nHutIjrPLTdA+FrW1PNmN74hm05/yAYdk2GQM3Ue5L+OtG/4UnfdpoKnMVAV1\noGJQq1tTeZYPl0lcvRrCBrS4WbW594tHJnMeYaoFH/MOIuiUrN8wUdfwnN0m\neZmMABvOh07kc3schGa/fr573Pfgjxj+KKwZ1HFDa9K6V/gO6s4JWpxajrOL\nGyydCojTYR3b2mSuiepip2axco8lZAWEVyDWHPBRPSLgLcfWvUmw041InHSa\nAiml2+2AgGd9m49FmIMQz4q5a/DC7rT0/LDlP+R+ShM2Lr9+F3P5jZfbYEvG\nENwe\r\n=/Y1r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2Dhj5xHwYUZyfDrKfH1tw1algv7CysM02tZqpsvpunQIgVbaNskwcYir+rED3S+dK5629ry6QtwJBQpKhyE2l2Sc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1595965464-50de5295.0_1595965754660_0.43901899501750985"},"_hasShrinkwrap":false},"1.43.7-next-1596042368-a87782f8.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1596042368-a87782f8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1596042368-a87782f8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7p1rIONN5PIuHrNaYczezJzFVFB6zixT1lWikXXymxfG+RNla/8cWQtLzYpdSVUpqihityOLuGpzywC3APcBIQ==","shasum":"54c00ffbae727bbbcf1699151e4c966d3b85b674","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1596042368-a87782f8.0.tgz","fileCount":54,"unpackedSize":92805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIa2GCRA9TVsSAnZWagAAiggP+QFgPKCvpA3hsBVYPLq1\nFiaQ/TpOMsgcNT+BJ/ZmlQ3/DfFJGpWpAilqPYc1zMfvU5cBvcCGSWi8pfns\nMW9NHxLYisBEkJA8mQdQT2DDFzvMLolEX0G783eicdTTApqhMOJ4uKlTzeBa\ntbmPaSaWpIX59fQZOOM1gcKlUllztnZbegtny/2nEeXyNPO8gR0+GUhJBgDZ\nGTHp9euT3UAYF51qqV+tclqo9GCwitLLs62DNldmD+Zc4n7z2nFBFBztZQEW\nnFAbK/Jm5vgstn4fpBnUjaP/ZtaCtC03MtLnSvwcwhXccrALWJo7+9W96a6T\n4z5KUMcCNBDjGFA9Kbv9yVtmOoWWa5Xrw+zXDPT/o1zCYm93FHGD/lul0byt\ndoihUEjxmn/ywzkJBA3bkORUz5vTS2vfoIBpkSY0dFTZrZmVqT7m/KPBVZXi\nJIwQjM27IX/EnNtoV/4Jl5nwpFMvWMu7SPEZWT3N0LOyo59DzOLXX3kfshzJ\nv1F53dXRA4nCtWZBXsFGhXYG3gtsQm2rTONAo7R6oXenvRE/0HPBy/xRKCYE\nVJftA67EBh9ynoYVQ96cSJw0KiAjiMMXBEfuGIrt7BjNchlGojuG/eEKp/MR\ntvivGK5R1p0zTFqqBo4bGkuRsIyHlXS9MaNSFboxjXCVkIb4ypnC9zjt93dG\nMaZ6\r\n=EhDE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCetQPvKosgjkfHn3D0Mh6Rq2XM7Bh/im0ZUOy8akkh8gIhALM6XT3ZVpJR6Vl4yU34S+UCoQ385yi5gqb2zgbqkrps"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1596042368-a87782f8.0_1596042630103_0.8720248075788364"},"_hasShrinkwrap":false},"1.43.7-next-1596051671-32c819e6.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1596051671-32c819e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1596051671-32c819e6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-c44kfrrAmLks5JQyJxdZUDPqiuSGuWkoA1KTFJYqb9U54btEGXt4VeZlDSyKxyyQIfBF61CxNYVMcJpvyD+YuQ==","shasum":"fc90c1c708e7ffbe2522e680f7b7dba01babf13d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1596051671-32c819e6.0.tgz","fileCount":54,"unpackedSize":94072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIdEmCRA9TVsSAnZWagAAsHEP/0eCFhuDHMIz4BIGhwqu\n+BROzLxHx6OInc6nOB9XDcBaRm/DunGTSkIfRKKWFK031xGJ6MK9hwMZ1QvC\nZ69eqdCEkooHzbi7CE+9MOa6voWXdxSMmvzSxqPpk6/FkBR5aKfpP+JfODTF\nIlA5A2uEeR9vo08qqz15eiB6UJ18wMYC/aMD7PdtdAIkOe2a3Gjxwy82CoH8\noql2iuzw1eBSsxZbw22RwLnebIUZxstDEFoMqfKd4TpRPqmkqXexQwkZGe6l\nlS6zF2w6HuLAvz19bathYeNm6X/hoQgbcTbaEgIXOWFIwwQ4WpHq9yHPKvBm\nC2T1FJgkyqomdXUwlOLrUjaKDYKPwtXeMGFB7Z2M+EDeIVXPsp36R0RGhw7D\n+hdRdSOAF4MFPRnRxJuxbEmptlZPm4x1D81CytvLW7g2wqWGtfimX1j19BwW\nVHJhYscu5CrXyT0o4hnqN/xZIVhN72M4P9XMIChMgaQrvB+QwLJfhLH4ijjM\nRBEq+KEsmvWD4n0mM6baKgf/lkTpJ/bGa7MjSmRn/wtJWUY3FBbtgusI5wXA\nkhuhM0wLCktoQW7pbcXBOSJjC1kKKEtW7g94VhdJeWV25dl6ft9YXhOvwxUb\nP7GWuwDw1cD20o0y6rcriJNqOMFc0A9YI3VopAT4osayD6MTgWOSq/AofJdl\ndqXL\r\n=/8Q8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC78xlwF5nU3wjoRBfphbGwqLuFpXUzJ920yOKiBweRWAiAJE4jzOmrEgwG8sp0BcFyOxoYwVVtzoL6+HV8rWCPgLA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1596051671-32c819e6.0_1596051749509_0.0468528152521106"},"_hasShrinkwrap":false},"1.43.7-next-1596053055-f01ecd48.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1596053055-f01ecd48.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1596053055-f01ecd48.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vs9h6btXyX/3Q/WcT+jJ4qTENptBBLhzXV8w7r34bcl5rQ4uF0qN+bmczo3ObOPFkWxWX/xf34fK2XAYRAoP3Q==","shasum":"cf7c7e0a250ae6cfd5b33c4d133ecff72db7babd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1596053055-f01ecd48.0.tgz","fileCount":54,"unpackedSize":94072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIdaPCRA9TVsSAnZWagAAxEsP/iwG+pFHXg8Tg2bdKeZs\nVWNBokl4zDT2trfy+eRZhOpEUxLQwaldr1dBOiAHWqxAzrdmkMRoRU7gm0D8\n23Rk15RMthFuRFApnpIuJquhYTcQT3aWUdQ8ULUZUSgap+YnK76dn748VOc/\nA1cN4Zs/gQ+7O30HRiYRyldOHPuaDhX1llNWX0mmw1aw+Vj0cN4KkSNjKTvL\nr3L6TDDE/aRvKv0YmRXxB0Hi3FWIwRzm87ch6osGoWUmUvgZxhJIDG5qF3H4\nfY0bHEC27/5E2qyU1WA1QSGqTtPtvPvNCsev0srfvcsXGNHqUcrlfv5oM+AE\nexdcgWPLgBZ906/q93/HrbDvFhTxz4UmW6ntrrp0DoMnP+IJ9fNES85qx4Lv\no+3UbS9/hIckJF+YlMYWh7+/u8lknC01WmXacOj34jRns32SV+EEAX5RIXym\n0oNBRqUoPxu+Qr9FUx3OEXKqbuVUPFXjBJ/3RcwkzQ1oesOsJw1tffcFfS5h\nNfjp9zf5PwXKR56HkjqqJk9WRo/49NhGBZI2tLfNhNeLepdMzB9Y8oV5ehK4\nM7Ec3W01CX3M7q4Q64J4+1lauRkTPlsZSmBRBfMJTKfjDJ9z+Pma1Yl1jsa4\nK7ghAqfVqU/EKWUs5YULIqzMi0S8puXoq5MFubDggNkNi/A6Ej6vduHFGdxZ\n6IrB\r\n=jphM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCG3q4uPdQ7j9fXsnPkvwmdMWCbbEaOFJqNSlxVTYCE9wIhAIF2ZKWSg67/4ZhVTydzAO3QDZL6/v5qa9OVeUD9uH4d"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1596053055-f01ecd48.0_1596053134684_0.6592032922275404"},"_hasShrinkwrap":false},"1.43.7-next-1596056362-bce8356e.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1596056362-bce8356e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1596056362-bce8356e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mLS4p0P80bdQ4umLiZvZNV0d5dNTiQ7WoY/D4L57GXwDlzA/LaXQTUgQ0o07tklepnyjfzr/r97p5dNLZEvYtA==","shasum":"46288dcb97a1b72ebdb4ed7bbf3ae935d8641c94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1596056362-bce8356e.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIeSuCRA9TVsSAnZWagAAJdIP+gIcAOfxiq7eFve+6r0h\nvTJ6HRWWZ9DCHfG4qR4/JbRWe+bZxxPa6V+7m2LRRC0qcMTpw8+iVG82k4W0\nSQklBkWFo9F58kQtKIC63YqcMPtIyy/cnz1LaeKuR9gdTrJ45CFjOhbqM6fT\ni4HygtjQmP8mCVbFSkKii4j1pXGmuHKQRYDv36Lji5BLnZYarIhA5ZN1izsr\nooG6YiEvZVxlaqTOrmVigwMeMex/MXgFSbEFdUdFf0xmTW+3UH5rsChfOauz\nbeKkwL/WEXEc7YY9JkB9/DigzWoKYPveGVAm7KOdVFrmDUt98+H5/VYzEgfF\n0eW62gYQqbnYPQNArmfCiQBdbwYwPsGeYW+ZcISP6X1foCh5nzVGInJqknf0\n5J72EVGT4fFAe69U6BRnielr53MD8kb59bQGS+hhws9EsMiRAbepv77SsmEm\n94gyo8Cb87IDIRgCCaVm5GuiXTcrtIGr6J18OEKot5O0e2JtFfreKQ83JWZN\nXckHpLJelnuk3PXXEY7Wz4samBxQf/pmU7tRx60UYify3gdCFDVafeIomkUa\niL1s26zuzpRBZ4kac4XfYfjdl3MWgx0p+A+aAFPy4N39hdGNyDwhjjv0J2Js\nzGVR9t/nhi/qktwK+Hat3Kd8Hapg5nei1fufiyridDWIyywuDybsvCTNwyrm\nwspu\r\n=k7vd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC5Z0NBne3bvIr2ICXQj8n1x206HuDhFtxRr+QjebB8MAiEAzjHzIEQoNM2b5ebSewzMe1onifEL2F6eWk28Dfj/j9w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1596056362-bce8356e.0_1596056749887_0.6154706117930755"},"_hasShrinkwrap":false},"1.43.7-next-1596058289-1ce5aba3.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1596058289-1ce5aba3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1596058289-1ce5aba3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5Sk57XdHIqaw2TiuyCyGd5kuQEA2ECnWUkGqMLuLUdmdHqe/VqrROJse919SLUAb43H3l3JXzIn3C/vgIFdQHw==","shasum":"219173dc35c8a620dc9e5145fb23c942f7857b54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1596058289-1ce5aba3.0.tgz","fileCount":54,"unpackedSize":94072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIesFCRA9TVsSAnZWagAATlAP+wQ53UV4qSR3AdyY/LEK\nHOvSG82Pqs9dCVZxs0PulHP7IpVld/vsxw1CLbFMWXmk45OFSOsCLmpbnJ+5\nHNiuMrDVMf1P9mGN3s3TPaJcRnmifxg+eNYsGxeH5j9q81/+XPYS5E5a9bMQ\nC2MgVfjPbcmmtoDby3OYt7STnHhZUbUchBrfcBvEjIxMlCPgDHVsqXW+syOi\nsfFB9izRQTZqvIXAPVK8rrdjmqEKAFNVcVLVNuIa2a/x4iv3wldFDzwA66aX\ngAeyyvmenntFp/JqtK8nA7WiPMsgbxKBZEPPINQJde71Zs5CpHU0lY73qeC7\nIL8y+K0Fw1yTqCN6MJwhUTKYRPcD8KbS+NQGE/gcpP4cHJ+42d+zIQjdSkFR\n7ro4p+KwOPWEoCAhu2x1tClyoS3CoRy6g+hQozYXhJGFBFZBdNnBn2KLEl5w\n1fcOuGYCu2O80xTDVaokWBp0kZJNSRmK3n8pT+sGWwz7PlZVfNjVpMA7RBRn\nnZDZIWXFM4sMBMDZ732G/vu9zlc71JdFxnNNuja2fEpkO1zuayRzl6E/GvpD\nGdsZmuf4wGpdI604Jqs8nYPDzD2Xxovjp37vWoJHOgGzUts84RvbbmvdTp2b\nxHYtwgmR00cEHywjMHRFFT3PlrGxo739mAQq7ID74elDHo2H5jlzJ3GnehDG\nrMGi\r\n=2aks\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOA0t7KMUpx2k12xWU/eMB5anus1eLDL7T4BE6vJfsHwIgLR+FnFh/rvJgFDAyeSWDaezekHfOWN/59lDmumhGAII="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1596058289-1ce5aba3.0_1596058373424_0.6362056298596666"},"_hasShrinkwrap":false},"1.44.1-next-1596063927-4812ee41.0":{"name":"@xdn/prefetch","version":"1.44.1-next-1596063927-4812ee41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.1-next-1596063927-4812ee41.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3e4bNV2nQFHtZxPY2o0P8pc8uC4VWqMTeEg7uj0sBFUM6hVixWEbG2FpVcvx4gVFj4G+62XJZ8bjTvF1Nf8Ftw==","shasum":"9fe7f5a6b0800fc5d145ceb841a605931f98a6b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.1-next-1596063927-4812ee41.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIgIuCRA9TVsSAnZWagAAC1MP/j1ULDFsLuZjS1HENAIC\nPzartyhdoj3HIWVrPB0WBs1NyFqwZQJLDddHzMACtd3phnUFuwC8oCy5zw0n\n/4H31brKi2vFD+zCuNFyG3XSrvlBAWS74Z815HBkN+NVYLo14UXVn/mcOEDM\nnNyumTQk+mvZy1byejglaZZXxEgbxjj9yu3mKQVr9N8zOalVcjO3/Pc2hTkP\n7Z3+Lf7Ga2FaYoC2RU5f93H6x16ILQtT8eZgo2geVx2bVp3Fe96iqiQf6MIU\ndfjKyHqJg1qxE40DqeAoIZuk1BRLyM0YA7bsyYaP9IcDVAs5ePD6v3c1hFYP\nbXdWUaE7xleF6mX52l02gbXHJJufmJEnqXYA62CKRFt2TNckmowqagFFGR3M\n+HUiLkUsXal6paDU+J5cz3kGSxx7IlDFGZD/oPd2WXsGqrLvJopU8Md92xIM\n78H6Fu6ttQ7dbyHUJq3FTfUKrnuZsSOsM7iXEiGoeFcwgHVm+AY2J+H2V3Z7\nkWVXDUxuObLst2xwRB5zQrqJDQhNm/NqYaUabeNNqYXlnq1xAqBhjhF4qUmb\noHtJPAO55+ejFI912d2IUbz8kHCE0hDsCLE9nixLFbjsDuiB+4VybznfbBja\nNeih9ULZBLZUOPEij4FtltpRxDP6BfV9hheMIErw7pPYkBDaOO3YWZJs2fu6\nuG85\r\n=jMG4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFH4+t0kmTnR1xKoV21jlBba3Wyh4tiBSLG12v8DjnLpAiEA7+lU8gLqlafHFy69qDXsSw3BVd0WF/TLdqPBI5A+lFI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.1-next-1596063927-4812ee41.0_1596064301607_0.9737914766163567"},"_hasShrinkwrap":false},"1.44.0":{"name":"@xdn/prefetch","version":"1.44.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.44.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N4nRKKUvRA3vKj/smSmnJ6261NIHpuLnVPS7SX9omZfQTW7E9wzHjOZ5YPABRWpPqY7uMo2O8Lt36cLxDEI+kQ==","shasum":"cd326fa98f84bb7d3628a57217af2db4e54b8bd3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.0.tgz","fileCount":52,"unpackedSize":83355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIgUWCRA9TVsSAnZWagAAmSIP+wT8fFzYyjE9H8pIDft8\nSaY6saLwlxQFjP8dumFNGeWNIay3UKYWf8ePkxiI5uBDXzHjnefC/ezUl6gU\nm2eYGe2Hd9G5Xo/blwjmcY1W5RlyhzoHTxF70Q3wpcaWdUwnehZ9cWmgirn2\nlQbNB/P2Wcb1KiS7xYqpW0M6MlGZBJaPbT+tneKjztTU/dHx9UzG+iTIfTdg\npXUgO0ZA9dn3FghfZk8ZpJf6OKnUBoylossx/ZY+7CQpkjPN6EO7vf00CTbw\nGqaioJ8c2FUvinBkymSH6NHip5SWgsrNLmfb6LTSfUjS9YPHSnJ06bNavtbo\nSkkPCWd4O4ZjCKDQPXr2O+Fjs+c4V9G622eAFOllEFhEtgOiGV30bVAUyKJN\nub+i1m/Qx16Wrr1fjR6pyQM4In3KBycR7jpVuJ8P7mALZNmnWd1hETlezCzm\nSy+uHial8DUudq5c5f5zE8h9RSvxclK7oIA/dm0Ao/w1656OcpVTZhobQr6e\nt4k/MeiG4VgHPV+WH8ZdfmUF2LDDdiONpmiAXnB7Vk7J/+QKJySW5qSOKtvx\ngEff32LEl185jm8wxujHbCCs9E1r3dk0Yu9mtsl4hVwlVwxoivgerk+vIsED\nf+vwBaoFX8/pL2ignqBQ+raodSm1eI6sG1oUovDmQfZeqd2oe4JQysvUayun\nA+9V\r\n=2jVi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzGOy7bSL1w+cX12CEce3+umHjIDYRBTGcQMlBg5oP/gIhAN/oaX/Dg/4T11leeOMRgQr4RMLw0bUR05X39TWtqY3n"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.0_1596065045616_0.6503453850251915"},"_hasShrinkwrap":false},"1.44.1-next-1596122797-252bda56.0":{"name":"@xdn/prefetch","version":"1.44.1-next-1596122797-252bda56.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.1-next-1596122797-252bda56.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3KzY4Eun7kSTKNDHqOCXNJUdvlOTnXsig97u0f3KhbH1i0YCeiD2ZOelLh56YfUUJaPn7mbJkFFj240ad6BLLg==","shasum":"73837db4f10fdd6b899f3c04b00f1ad08250082a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.1-next-1596122797-252bda56.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIuhZCRA9TVsSAnZWagAAb74P/3Gi6VFL6eK58p7QCRLa\nHaY7EERGJWmiUiMpXkzPVjZHCBd3DISP3ATiTg4DgQ2VRzrfpLCM1L0h2hSo\nH4r1+zGVhhmVSf1YQyDUqfG7bbCicc/bGSbEu0pAnX+uLYSjougExLmbPg+e\nGF7i2oAKmvYxnAR2VfztQwv4wzukQFpL+bF53RMrvkG2UYRZprlKsZHmF+1n\nxxG9diNTQ/b+K1m+6BJfCIxrUWJmT/EG6lMz/b07sD00wGQ6KYeO14ajWAtb\nFsAzupFiS6mcuAK54FbJcvPmvmC3QYuXi2Io7eNqXu2ytdnF1mgGH+ysN/AF\n9mSl1JiinPl/lFxS+wwBCfAhKF/ekKaZ7eKaW00c8YQ7af8SK7wMO/M4f7CN\nmt4X9BAJsDa28fqoQVJqg6xMabsYsUvHLIJvdKmSyjeta1hsJd3OnDVfbff9\nEiQkxr8a8vl5L1fCqGdyF4/pU1cmTyEiEb0GrvLtqjY4ffKk4DRWN2dYrJeZ\n7ACqReluPKSAhHSjrD3mqM5Ql4NPftmh8/mb9bya8URnF020QrDH72LmjEQK\nAw17BT8BoH0n/JU05H9cg3zc/+oUCAJKHG42aS9OIBuqFSljnuMw9N93ED17\n3f79/8E4W2Ae+J2O4xWj8fpF0mZlnrh03aDmDCdb5rJYnQUqbZffMNh1IHsw\nAhFu\r\n=neBv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaoMty1cO/yWiMQIi7SDN0aHgB/iczQnz/KZdeXr6HkQIhAMMrrpH1VEanY/8AI1JtwvbyKvIy8JDU9QQUduhPF9rI"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.1-next-1596122797-252bda56.0_1596123220722_0.14423392037433658"},"_hasShrinkwrap":false},"1.44.1-next-1596124738-091d8aaa.0":{"name":"@xdn/prefetch","version":"1.44.1-next-1596124738-091d8aaa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.1-next-1596124738-091d8aaa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-grWNiNDYbFoKXMMBVcax1EkN44SGXjCQR/6f+b7MtLWKB3OQmj5ekHgy7L28e4sdWrXKZcPgCJpfXUAVcmNuQg==","shasum":"c73791999d74c564a110d424ccfdf7f18deb2cfd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.1-next-1596124738-091d8aaa.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIu/sCRA9TVsSAnZWagAASNcP/REhDUh9I9GEEFd4PUHv\nfoCkS21400GsbcOq+sGYV9WpOD5lZpzIOIoWYbJUves2B0fZlCdCcoNxuf7u\nqIXYFYg7Bh+DE/gVyn7VqRNDyt2EIB8ItV1EYS416JBcF3gelNtJl36H1jhE\ndaprAqCT269VTKCTblzO8epH0zExGQvrIeygIISE73/YGwyquVzjByK7dM5k\nzyostNRt61v1LZ31TSOrBxS8GGfH9Bk+6XxJHMJI+wqw/qE1u8gGi/AgWMa3\na+PnX9OjcCjwyVp5Ji5K221pAGNZyzgDA8sOhTqME3fcsu0l04N4n//y9Mq6\nsRjbXDIH3ibmnSlvwt8jXA48pl4CAVwoHJCvA9JJzeLq2/C2K407w+7itvSn\nks71EqgT8u2jPvWaMy/6e8paveWQjKUH8yAafHhwBapebWSiIYZeSdSPNgmd\ns5rbv8Rqod7k7ubY2OiKkoxZXJsD5z/ztlyQ2eW9EGwo1UJhDlt/HyBJzVIm\njclhu1sVGHLkpkhYWXdBOUzFuqcgNtJxTfYm51VoahKjMZDuYCwJ7RiKqWK8\nLWb4PJDXksRZ0eue5A8nU1b5swAfaIhqlsllgalc0rpcR6jaPUIJxhbO4KUV\nJeAgYps58qavYuOeEgh68H365T8bm/RpwqcyOpETBl7bNDuAfP8DrLnDibrZ\nkXwx\r\n=LtE/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDf/SfY+TCPr8shNaWc2ylERlYtimoOeUYNOkTXSTBgDAiEA9FH2xikQbPSCI/mZEe8i9i9yr7OdfCR7mkOPkOBUWTI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.1-next-1596124738-091d8aaa.0_1596125164166_0.24900608717045514"},"_hasShrinkwrap":false},"1.44.1-next-1596126560-b3ef1c69.0":{"name":"@xdn/prefetch","version":"1.44.1-next-1596126560-b3ef1c69.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.1-next-1596126560-b3ef1c69.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-R6+aLxN7vLw2iEC1kOg6CBcSjHNlsBcacPcbOGluV0zylf/fBok5LKxBSKhR7EA4X81C4N8zQ6VtCzz0SUT10w==","shasum":"3e04f3f7949ca290604ab0ee14af60dcdedb90de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.1-next-1596126560-b3ef1c69.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIveKCRA9TVsSAnZWagAAQagP/jgiDM7AXSw3iTS0wFX4\nh48soZthFu9Es2N+x9Zq3Q+DZ9HhlSqgot/V7n1bcQCbLR9rs8cg9DHiAK5R\nf6Dwbg0eQj26JzhzhJHrq79aqV/eSpTR3ogK4sLhMblA+R7X6kI77Np8yt1s\nhNxdig72buS8UqH3t7a07nAOWpTgYQtI5tEx3Do2JNUB5Ybkp6hUIBcvj99u\nd8yMpgLxBlZ/PyrpnewWEWOZzTggs+9VizrGE8jBGG0i2bduxe0gD5oGHk3D\nn6PyBBs8lpT8zCuMibEtArt3NBenjN6HhE39HBvFWl/5RZqdHy7eWsdYl+4e\n4G8YcxMBiFyJWXj4nEvEyNmsbuyie5QEwe4xS+sqQDUQEtdzOCTyLB5FOina\n/spiIaNq3124v/dBxn6N0Dqkh12ZoOgVSB2q2HcccfZmhRkVtK7ZujOZbEGs\n3u8eppEATvLbNGZi0D6/3VsINDD1PPUrWcZ+7kE7SJcDXtLmK5r6KwuCng/9\nhtayuwNewDDC/3CC8J4ixTMvLmZsHD0ELYP1x5CFF3q6nUuluTymq8bA7u4h\ngORp9SkZXKrNf3mYnC+KMq3fZeZ/OLozROHOe0PLzk1qcWXy1DdAG2rpc4EM\n6GUMHipKXsikJc/4eWiOikv68n5+hE46VczsrhKUqkICGH7alHekQMxVwRnT\n8CUy\r\n=Y551\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGe4Y80aSOZ/x7VmxnJnrfM/MfhB1HaOJs77ZTuWKYZXAiEAjr3gy/S2SaUFkXjevC53ENhnfLzPGYBIhApVBIddqSM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.1-next-1596126560-b3ef1c69.0_1596127113515_0.1219440455939036"},"_hasShrinkwrap":false},"1.44.1-next-1596131312-87c56632.0":{"name":"@xdn/prefetch","version":"1.44.1-next-1596131312-87c56632.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.1-next-1596131312-87c56632.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0hCEKMlT49aGOc+tbMu1cX9/+FdstuurCYDWrLwjgyWEaGknbUExJVzWGyAC5HeSNlPY3AAD1E42erIECShLWw==","shasum":"8eeef0cf192c0c891dfeae1b3f3d1044049abd37","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.1-next-1596131312-87c56632.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIworCRA9TVsSAnZWagAAv0QP/RmCLQTVjLGCBfjtFCDx\nvBF9eriXkfITblCfTXqx+YriAoSB/D1JK//BzEIz0KTg767+dlAhy1a3x8Kv\nZxWB9sYUSBLcJHBcWdk9kOttPsGHWECVqWDuswEPxji6OedmaVJG1bGJUX0d\naelVSc3NWeflqIUCsqeG2DrnhmTVEQPlNwQXSQMKSjy61RwNTErMwGzWlVeQ\nozpy1PGMjeAqJHy441rpXnOsTxgPUdED9t1S+e84nU8Acv47bjjHpADXq/lY\nK7NiecBFVW1PRbMtLoOmQuvJhUqB2d9hAGO97NGgA20t2jsmBFcWJcjPA68L\n+NSdI73wtDeaZg15cgjWx9PESGFhD2v0ECQfHuNgBGwfPbwXsMVr9rkKUDwC\nOTqoJrHbFshG+wzr5odxbcg4yzpdhPRBVDWkRH994EIyFJdqSMX2UjirGhz6\nqjzqt0NE5BaVCd8AkgiTHwsUxi2s5eKxnu/QwSLtID9TkGv1kaGPvtmkACbh\nw4VA8nZB29G8lLioqVImseCXTbp88QwF7ez4ybtpJ9TCBRko5hwTajX4AmYq\nz/PM4AEvJ74L/27wVtp/shB4YznMtXnj3nQ2aXJFg1XKm1CMm2KmcQs1276s\no93rZMftlGXpoR+6cWPQpzUnrTHiD6+wsvbfxZU79e6N7m7roG4oE3I5ORlI\nHVUU\r\n=UVky\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5SvwCFUfts826QJVn2NgqkqPGScMVvYdQQLI7WFIlBwIgamPK01w1FxtuR3dRUMRnVDVoqXmr9w9PoV6WlQ1LUd8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.1-next-1596131312-87c56632.0_1596131883048_0.0032518629568454305"},"_hasShrinkwrap":false},"1.44.1-next-1596134140-b6040981.0":{"name":"@xdn/prefetch","version":"1.44.1-next-1596134140-b6040981.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.1-next-1596134140-b6040981.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OSrFGFGtBftwo+WG+uLSusxgBgeKIMSquGT+gqEn9XSn49I4BMYmjMY12p8RvVVw+Br9jL6vFZHn7O40E8IB3Q==","shasum":"1aefeb5c2408dc2931681a6e10d50f02e3caf8aa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.1-next-1596134140-b6040981.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIxV8CRA9TVsSAnZWagAAHPgP/jnBR3UjFyRzTLBZktHl\nP+2IUEEaggcI3h2+4zxwwC1hP/hjCR/mxYazmjqm9+XdwKXDegxtzN3K3ekQ\nz02TQB8bbtaNNds9xoRhr5Ek7/MomwLHRur9RErRzOdgrAmJB5ScjioFjxc1\nz0gLicIBt6BiY6lW/5FsvJDE/pJaFsYLLOrhQ57fi7NqZohvN2RouBzAPalN\nMuN6+G6Di+cpuUHJYjy5UtA6xhY9uN+6jh3hiPsp0h1rpv8vISRdJZsJr9UZ\nzctWwf7vVwYKY+CO0KasfZbxwDs7ZPZV48//+sJnqg0+Uk4BhB5EdcxzjbzE\nm7uTTDaCS2MJi4vjOrHvTjWbWO969T3tZOjPnhFvjQX74BQamKjf17yVz3+Y\nkkuyBZaiI3EmI4hYrufBmAszlo2p4MQuf4fH4p1WsGkPPia9GclFn0aJ7HKH\nlJb+b6pesqLxhhg2rbe82HV5xyKmBz7G1v8qgKzrbGor++G2T16GBA+L3rIE\nvHLrStoA9q2YIehDukU7u3YsQ2pfyDOUQ3PwWtv6H4Fn9kIiS00zodhpNGBG\nVCW/mhcZQtPmrn4mySxZ6Lg36MGBTtUtJJwblrbJtYDjPxA5nljMCtWzfosi\nVuJvLVcs3qc3HiUISBwEl61OjaXOu4js2AxpCB+ckWHTf12toBch46tcZj8J\nNUwS\r\n=5YDG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHAG9/GsWZC68pY/P2TPji1xBKD+v/JAc8KTQnnZYLiaAiEA91OUmdktVXU9Wzr0unGnC/Rob1A4586VWzBgJuY4jvI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.1-next-1596134140-b6040981.0_1596134779827_0.817767444958176"},"_hasShrinkwrap":false},"1.44.2-next-1596141686-3444b9e7.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596141686-3444b9e7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596141686-3444b9e7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yVQf8bGaA2Tsg8/IdqhbDVBnrf3G/0iem/js0xMHg/IGi95nPyLXb+HQul3KV+jcvZnOSxopvuqnSdnc7EcjXw==","shasum":"ef0d0ba34dfa15e9ebef577eaf386815d116dc7b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596141686-3444b9e7.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIzL3CRA9TVsSAnZWagAA82oP/3s3V453x9Iizvk2rAke\nbKbDaG4Z26N4AcBUtOJ8+4rX8m2abWDh3Im1UC6tEH/uxhOlho3Ihu7ZypA6\ncjnM7LufptDqIO3YiCEL55lUaoO5kxXFP/AA6KBlS/ailzV9UsKIDPbg71Ub\nX+Ng9j8vwGwsvwaNRLtdP0e8iVoankko/KjT+nMXdr+CRP+32cL7tDS2Wzoe\nfg6kOoW2hfzMgn5vihyebvxXI0wEZoqCTpbpezqmN4SVu8KOLA0XXkHmvS8u\nlsX/2/uGeHxDFMF/0CDW/7NjOv5D+QpuHESNxxPLhWXgFq13Wan+Y6Dm80lM\nuzQUtLwzL6o/ZgpfuVMT14G5BeaueAtUA5whWdPm7tJYiTRkEFDfdTg6t32O\n0T4dz63Gs2cinZTYuiom3RzMyq/i9dfDD3E2xW8b4WtyipMYU7nkxiXrpVfH\nzMtwR1MSdr5xe51oVbnLIB5LyQ9tNFzsigEvwxSBymkDY6K0zN90+SU5zgQO\n2+K8OLTLO8qo1RV9t+CP7WgaOJFDSHdKYDfxKZodTnSFcnltuvaiU1FLdhcu\nIRqF797f78owH+TqhHw69KQht7alsq2p/DKvBPmuhZIxLIsRIUycHc65bDjJ\nU86DsN7ScirJYu97TdJrqiClFog75RCp2pFtZOeWJKJVNo8jajIU0T26qN/f\nNzB5\r\n=N8BJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9QacRksoif/F0iaqbRPExoN9rkfsH3J3h2D58E5wHqQIhANznrbmeU+IpzdAhay7MPsf+nCfJ3y91VcOyhG4gYLmB"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596141686-3444b9e7.0_1596142327235_0.2380473947386137"},"_hasShrinkwrap":false},"1.43.7-next-1596142580-316d8f24.0":{"name":"@xdn/prefetch","version":"1.43.7-next-1596142580-316d8f24.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.43.7-next-1596142580-316d8f24.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6a68jSMHQtuK+XV2g8XpiEEhq5X2CAvF6H2rr63JG0yyOMj26QFigBZDAic2rp1viKenMP8Ehq4c+iyRTQND0g==","shasum":"d9bbe33a44030ec3cdbbc9d1fb6e36f2617cbd61","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.43.7-next-1596142580-316d8f24.0.tgz","fileCount":54,"unpackedSize":94077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIzRQCRA9TVsSAnZWagAAHBwP/1CLffajaDpMiuHzUxM0\nEKFyQL1R0dO8ij8a4WWUAOGLonVSJPXrgVGA5Kxx7nTnrkIP4403WKq4eGgL\nMt4UPwVrHdfsc5j/70GxNEqv+/nBuACGlJ7tUq3CrSZkQ1x6xu3HgmvPX1zE\nZpeEVG9ZLyC3hpJNBTccN2hpbufuBqCqojx/jLvxJ3RoGt53o6Jtcm6XC9su\nAX/iBwOXfqtitBMJvqHfdJXdaVCHU6GzWrOilXBj+E7lMXJqnRzh2c5zgbT/\nfEjXfp0k3cB5HWZOAcCRfA/8aLwcO6I10VaMDG1kP9qSNuu5K7qK+xm/8uaU\nJd9rSCdsD4MAFhO5Zmsxece8Z6Dx9zNsuOZTRIi7faJ/p6Bj3vv26WQNzLyR\nSMqyQO5SD2xvfFHz5/jC3dmugN3EDZxPHdWqXmWMxyAsbLpGznpf8EYXJVGP\nxZWvAKDEM4XDpMR8b689guk3AAAPOjbXN5A7hz/McjgHCBDzkWU4Zs8By07t\nwB0129ECyn9l8uz/zz6tSWR2xDsc7G5uL5zWEYAIqQ+OlT0666s/o0ebMevf\ny5DZsmVd7BwE/2cWjWPZAP40tB5PmQyBqsidca8yRfnuv1GVONhHLCDlCF05\nYlUcMMIb+7NeLbALT2YV87spa8BTRLPaMkUHqNHvqjabdGtWVfA6tvlWKRF0\nbT42\r\n=QATm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdA7CO/SUfyMZ6Amk+thrFAFpNfmT9Pj7Ot1QcoMCx4wIhAJpg70hXiTmfuci/gOEHiGlE1mgEt16zDGyT8G5v+EL2"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.43.7-next-1596142580-316d8f24.0_1596142672252_0.9880495866210424"},"_hasShrinkwrap":false},"1.44.2-next-1596146994-607ba953.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596146994-607ba953.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596146994-607ba953.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OozxFrAv8lHJ/+HGvgVOo6dfF3wkFOhWpBbhJdeIB6ICSX0eMabHbEq9It3SgRlwhNJ/TQRiQVI/nrnS1wj4NA==","shasum":"64665c7a0027c6678933b8758eed5c951e0461c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596146994-607ba953.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI0fvCRA9TVsSAnZWagAActIP/2sQVozVk8Os26QKZUNB\nJyB+gN+TzlMWPvtQWGnviqGgbCAsezELGDYxKsqpPT1SgYv2sNchxRq8WfW5\nHUW7EqFDACPhb0IJMBEW8bgmzNibUZtSbTz/mMx4NXr/BXnvSzkQf1Zi17sG\nBxkPF4TLklzMqRs/RdNqqVf8e1jrMdC0of7Y9xX+pRlmHqd/iMHU83o2qWh/\nEhybJLxMyko9ooYknC5L21H8hIq5UDsRHrD0pIYRcVLZHBZgYa6mLF5090gs\n6jOkyzYuw027YfzEtMjNOkZN+Zs977azFttZjxQm4gs+93R3seDSykavNYTX\ncjaOjK2+SAsc7QHinX3fkT6gUs3KX/H5Ff+YpCy5jAj4o/+L++NcSN55Fp5j\nadBc5RpsBKGQgwSFxpnO+KBuUwtMkX0U8X1zxArzd4tyLlHrw+fTxED6rqPN\nwSjlE5/wsWHiiwoTWNUzXG0qNNAgisLq8/zx47Js+TyoLg2DTh+jTk6uxPu2\n6NSNbO2WhImLkSqBffmnPa06qUpD1TJ9XB7ywt5adCHH+0d/6Jfi/Ss7/iZm\nq3ko2b3eu7aD0CiDym/B1JJ9Jdi+2bvNizc2hhkl8+ABjh4TrdjC43n/oeEc\nnrC36ruOUhhMv6kmrMo51qmk4AVPprkAvxUmsMf8+Tus9DjQgf7gkD9iiXSO\ndz6/\r\n=9a/r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQsoYoDukNnzJSkfMOQyn32eA7Zwtt7lPTauCtzCIhGAiAVtpw+Nyo2M38tDJXa1h1VFPzEplJQkD/a8jdkbFjEuQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596146994-607ba953.0_1596147694479_0.9804750906027058"},"_hasShrinkwrap":false},"1.44.2-next-1596169244-e640738d.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596169244-e640738d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596169244-e640738d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-hUVYZPRMbvEqpONPT2TSMYDgPUZgr6pDBGQ0laggFNj7DPZZ5UmrzN9nzE+/UWfZsQjC/1GS3oxpKIWYmbJYpw==","shasum":"be52c8a59fbcc78dc8c78f42d17bad3d0459d0a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596169244-e640738d.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI56TCRA9TVsSAnZWagAAOFUP/2voMsjh+SfPCmOjUCHD\nx76X2i8ePJ4r4HjAm7PdyHYVhOjzqUtYggVBdpQ1TVF0m2tu2Q0EhZSEy3IB\nBmAzAotIPkc5Xz/70aOMIWCgjKd3BlCNUbHyYHP8SsMzGg2sA5OI0opblH4G\nwv9gwIee8T9dc5rSBov0QbSqqZHyMxsSbugbvhByHPWByU2twmb7/ncXp82W\nCnMk0gSgaFYdr4XaN29ZAVGX4yY1M2hxkoiKEPn2QaSX4ZyheBjMrwe7VPrl\n5plMUwRZ+Hm0wZpeFhF8ORwOqEMqsFMqhScecLyR4mkdWgKj+vGPOQyGdGrN\nNmRwVUBwqVGirDFne5/0WRPGKmF+IsThCQH8HTUuC7ZAm79d2ltLeziVJKAG\nO1ziwI5ZFI0U22DjIH0DbMPNEefvyN4DcyeAbqLOJS/mLjzF1km8uAaJapkY\n9Vys0IwKT7I1WrXXIEVOTaJ211nrA1CqWZ+wOgZ4w66071NirPRuhrTJ2b+K\n/tngAVkQr6BtB4yeWBl4hJCRgLNj9698/l7mf2VBTTj0qytpFnSW4irBJ8eO\nbrTG4kgXHCc2l/238W+iYJ06yWIGuO9bIK60FDvRZzZR9oZMF8QLiVUSuamV\nbKbzttVZb1SiBHjkT6XrLGw8g2LbQ0NhbNbIAVD8xfLD4uABJT/kKdHmGyfu\n8lPN\r\n=4aUk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBD+Em7n9XZvtRB0zahyfqS0VmqtbWxnC48V1X3ILHr0AiBoS/GJlx2G7FmcHmMdLqCVW5JXHiVdsKIIsgNtW6wIPw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596169244-e640738d.0_1596169874667_0.21691535157829134"},"_hasShrinkwrap":false},"1.44.2-next-1596170076-4aa832d1.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596170076-4aa832d1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596170076-4aa832d1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OMzK6MMcYjp4HGyfBRQO0pJnjlkE+Yv3cjWUAHKq5yV99F1iDtDMEoQZSt4ouUP7gXdl1QXDvrvUBmiwyZyE3g==","shasum":"48ed0b3cf13905bd4baa446e5d79f0baaf31d172","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596170076-4aa832d1.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI6IUCRA9TVsSAnZWagAAjJ4P/R9if5CSNvOkN6iaTBFo\n2vLunD3P8QHg4Y4RmwhyGANTqxLQsOyCQg7OaoybrBnXHrM1MPTb4divRC77\n1vSMjd0TLCgC0VipXs3XnCIQUwWzZ4RlLZGC0a1Dj6z1rZKvb0RS6ZJKBNtR\nXPBa4ZDixEhYMotwGU/Fl1hjFxnHcAGmtMYsSEs+goosc6gDx+9VorNfJZiI\nstshZFBEXDxyknMSTlxkuucx04q//V8d/Giv2Z7YD/73JXPwgs2OyHvg6QZT\nUwn1Qs0wtYLcvIwiSBFEd/Pp8Jhj+yGn/gGO3ZANu9pH0D33TfYerXdLgY1c\n9xwXQI/J+YK5Tzrd6sAdQWO6dKIAonf7HxSgJKi8307YapDY9tqsKMhq2cST\n0bK7mw7zSTBi7c/jHVEASzIdL+z3sHL0/R3GuGA9x2dKYtZdCHAlCtQNSo0g\nafWZ+a4MZE6YVbdYgAlC58U1RDjrHQh4KA9GDWYldUzHkcaOc4YpmcjDyUqT\njHECFxCsNgcQ9SOUIxmP8IpDphPqOVxdBElWGmDacTbFUgFIOUeQ2qPWeeZP\nzSI8zyhyKv01tm0wXRH4LewyN87f3riFVprNfY9fbFl4lVzOVrh8r2k1d7tT\ngn/Ct49q5VIkoL52Yd+hwPrvswMjwOfB07hI61Gv+UafSfaHFkktke6HBWpA\nZwip\r\n=R3PP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtPC7rWuA6SP+yPY0ty1OoGFDP7hYTe1shVajuB9YH0QIgEfcjBMd3niruA6PRfA/OmiX/zk8va69wct1BjRoix/I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596170076-4aa832d1.0_1596170771759_0.003395727603825671"},"_hasShrinkwrap":false},"1.44.2-next-1596217722-c51db5f3.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596217722-c51db5f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596217722-c51db5f3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kx4bX95/D/3jsTFfVPKD1hodEA2ZDeXoXxoprTJFCdblvd4sgXR7jilRqLF6n/LreKSojFQknsi9M7R3Nkid0Q==","shasum":"fc90336456b64a93fc86f392ff8b41eda8bf7366","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596217722-c51db5f3.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJFoRCRA9TVsSAnZWagAAbxUP/2E8+/y+70m3E2jilBc+\n6qYQBC1VXodEwdmXjDetBCHpq+N9dqWG7dU1WokkA2qE1PsJPAeTtkL0XQ2J\nwPoUkcFfzb8dmtkfbnCuhDZ1oBIgBPcJLouC51pdTUfu6nEpBgR8OiDUoNK1\nbbtTMfBp3feL+cnQoIOoE6jQT8r/rAC3GCyV0Eh+1ZBHUkurtNwgTpJXScGG\ncCy5GlhHVCHx+gCKuibz7lxpNAWqvjuFGLJE+FJjaPARftfnXN4b2aZl30ya\nCG7kazS2tZqyFZnQrCV2Ov7PwLU0f9nwehGsTdE+DkznUEb8q44ZzLL1J+bA\nz82ETPriluijk+1r9u4E7VpLgKBKJQ+i7uA9wPldj3oV5xY/YigsNzg+sgwe\naduvqHzOOXpsiZKB3onBftnsq9UHKuqjtXIhzYHkdRH1p2aFpLBY1ou036WU\nlyDH78ETSNfK/e58/+g9LxYbyEQkp4EovTcg4xbqZ+JZUUSX795H/zUDGmKL\nglUfQAvTL3RX115GdIL93GZ+LI4OE+04igDxS/VB0Mrdmqg4vMGilol/mNLt\nSkh0L1LzSCIVooDrIv+Ov1ZOa9/vD1FvyKzbQ3a5W+ZpPnlxG4D7j+lxeu8w\nOIvfOLepUF77cst+VrtjbQVT7j0gV91oFKQhvTlp2e0KONHah05RxqMUzJmc\nssBQ\r\n=WMNB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBitW84DTnU1ExAgBWP/MI/rNJCC21Yk2DZvS1/DL4JXAiEAsawvgVQveRvqPBMOimz7IruvUMWGHZq3JCG8hVZNgAI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596217722-c51db5f3.0_1596217873458_0.9604551791662015"},"_hasShrinkwrap":false},"1.44.2-next-1596219609-d8c6f904.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596219609-d8c6f904.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596219609-d8c6f904.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mf77zv8BlaixmPyO83vhrcOIWJPpPXQgIljyQq2XmA+b8tGx+cZ0TzVWD73bFFr8+Umd5HXJb8neC7vEuCNNOQ==","shasum":"a5d17a882abd241c85a2ad47178c2349771f7b19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596219609-d8c6f904.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJGF+CRA9TVsSAnZWagAAYfcQAJvCJwiZoDmocg5tBiic\ntkgd2nYZBb3bekI89IjgIr0NvCCqtBNwIxvT9gxHPMUG+hgEw1K4IIusU3e+\nsDvtOg9gp7iCHmPfUGoeZm3EDjUc9hgSiukjH+SbrheRn0PaHVVGZ6wwQnDf\nBoT7+SEO0h74euzF/PfzSPjy2zT4VFO7gAlR2f+e58vgNRB3hdO6/TR5bUO9\ni73lz9qbi2GXAiAg8MwkJsAuMhBWDsaY7gGHIfJdgOKwe2DqnTIop4MKV55f\n069AHiTFtxCXzi04Eui1OzD3ai+nLiLLOaIwqEiCQ6bgCcACeTv+x6biUUtN\nRwfkhzu27nukh2wgVtHGxl7gkuUN3OgQYRhsaSuZMDKqFod9TAYNO6KSyNmF\njs2DhBIfv6jyljCDZnoBpn3BpRzrohycEZtH2Jwvv5sz4QjbVlaiRPhsCILp\npO/00JHTlUYNHb9EdV++uldXoY5cmcqVW/A1CEDaEW0KrIY1xS+VRHDBgaDI\nDBXcdF/CKE6OtMZAEF73SdAr7tygZnfu8b8Tyep5N3WfgVk+GOQv9zIv1PlA\nFbLvXKoS0OAbb1n7s+deh6qZT6eQjMd1Wu/VGG14YMKQtKakVuDpB6mdQiGG\nPZ9e6xZqAqFGEM4m2s8GBmFQVkcW0wx0WlOO/kKxnN9pdxJelRBVGMjknVZ0\njOnb\r\n=jHAc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/H3UmBjQtqeOcCuVhTukIjxkGyH3dQGE50iA9AA2THQIhAP1cQB9lOxHuAVMn21ZEkuqmEGpQt0q85XuX+ri0OtqD"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596219609-d8c6f904.0_1596219773847_0.9232933922087811"},"_hasShrinkwrap":false},"1.44.2-next-1596220109-18de1ce5.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596220109-18de1ce5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596220109-18de1ce5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-A1an80ki/jV+kRNaTMQzwLnF+de+Uv3CubVWXOgcZIhT4S5nUTnDdyQPFWgwjiWEIasEbOwNyvnzHpfc0kT65g==","shasum":"4ce8578be61611ead5850f612fdedb7681f3ad32","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596220109-18de1ce5.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJGUPCRA9TVsSAnZWagAAAlcP/3cwephoGzFTFYqdJ3KD\n2p5cRcG/zx5BBP5DAKvQwcGe7DpFG6hEBt/oJDE+YpGMchRPExhE93DRvWnv\n8ZlfIcWCtl93cREvcAeEqQIXawp/vJGHTcbUPkymS7RBK8GnKujwEJRNk9U3\n/Aa5f9upZHkocqma5+T9Xt1Nc09yzLu9Fq1/4VOoLSZldxYeVEEnHiTDzqKV\nAoQOlp219zxr1SNG2tHIex4EtgLPFRU3xZ6K7LavlxNq7EUnBuMDM1kVbFVW\nAz0ci/IMbi+6W7cgv+ZALxZfumv7EVtE7kD+ZSpM+rSoqpf+8+RsHrTH1x55\ngoLyCIG0bBvApOeg80FloY6rhVYulZ5887enQdM+EvutxP4RgCP6spV4cMaz\nX7mk9fH1m9HvCbkF/pdNf2985z/rchqs5XvA4+1MBxWzFMrvdXjsZHaHHtlX\n4J3QpBXcVGHuAJdeNMHkXbVNcayAdcQqL/RFgyIe2M5ZCS7n8utS6LkD4Wr8\nKulTwMrV7u2o6p2Etgj3MYDjK025Mn82FGYv97gEpoE0KZAfvxi2W5I7zKIC\niJHuW6YxqsOAFNrdskEAa85SmRZ4s82P3JZnP6o2CA874w+ul4HdhIhbQTvS\n7CGgk/K1uY6RHC3EfXAj6w/+19eFydIPsgE91Wf/3b2wCag27QAmvdYFFNiF\nbiLv\r\n=HAO+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCovVP5MEmaxFUBAcuatuMWLOkDk99Ua6VQn38WQr5HEAIhANaG9IVDiNrBiv8t6Io0okcD7LvCGPL/hD2IeNdrn/Qs"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596220109-18de1ce5.0_1596220686664_0.8920068047231635"},"_hasShrinkwrap":false},"1.44.2-next-1596221461-45aa9c9d.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596221461-45aa9c9d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596221461-45aa9c9d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YJ8lAiI1jb+VQeAZg9WmB1XfklDIsPxsoA1e2vRYWpVSANPPckDM6C4RYmVIDSKpW+yYknjck/vIoQy1OQIpWw==","shasum":"973b8ac396d654b7ef4dadb939dee0660281d563","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596221461-45aa9c9d.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJGisCRA9TVsSAnZWagAAdaUP/1KM/+dJGTnuZrK2Y2uk\n8A0p3zCc4SVRPzADT9va30X526IGjbISewmYL3t4fAj+R9fQ3IH+9ZoaCTSq\nGgq/5olgC8T/zBsOb7PvIQr6LkC8fSNETUp8PM4ONNq3qKxHvZMQB2tdgMvq\n+ySv2vGF1XOK9HannI2BCytawO+4TNFY+YO6TcMrUJj3oCGs5dNOqJnMRTre\nuEuggR5++wN9zOpWr6vxxgFMB5vRwoxZi0ndYql1aBQ0GTRm1PNt8vHbZYE8\n0ECDhqwrZj5gMqxeU6Xmj1e+s5a6cV+ZIVuKt5s/o0VwPAiSmiBePVv7R+0X\n0/YyNe30eL6KVyCICoaUuMWXR920oprT+ABbSx/ZTYCZC50a5NfzuKqFJEzt\nfo9ZOAwHrnd08DVyaUXJDGoo2knceHaZmIdnk/ndN0SYM7/iikCyzeMlL4iG\nWhWfcu7eVRxA8kj4SoJ1Vl/9KhIIdVwE30XU0YlukeE2HKEFFOffayqV3Piq\nSP3+iVzNPcn3+T9L5GTaGMOisy5/vOg2nG10AktP4GUJK9aRkLIO3gDCow5R\nZSXA3UrDhexK+cZ6gL7m88sy0mw6l9Yjl1XgtMBHF7c7hmm0M2Q+pCVL2LKC\nl43nlS/HtesQ4RqzhS+eOKzSED2pGdICAidiQLlvyBfgW0Rshf+7rfICl8fQ\nbFox\r\n=qu3W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtF019nVrrpfAsOpKQ+pz4tbMJwoUg2+Z4zRzL32ubkAiBZUZs4G6fLa3y6wgKY7KM2ChDEuT/QXtmN7cGJgPeFIA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596221461-45aa9c9d.0_1596221612026_0.49216333386845434"},"_hasShrinkwrap":false},"1.44.2-next-1596222428-298ce5e2.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596222428-298ce5e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596222428-298ce5e2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Y4LQQ1cYKYToInZgbvsUQYXXyGY9IvT9F4GNhqzQ3k8At38bz7M9/yxqlyW1IEXqwgAYNoYW1kYnt4f4paJCMw==","shasum":"55b634e2a586fa2e19760b6e655cd5cc1561c91b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596222428-298ce5e2.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJGxuCRA9TVsSAnZWagAA6dAP/3mPyUJko0SnEuJd3m7q\nIpMkR86yuYDDlvuI7ZL+4ZuqTC3RjskXQhV2+9OrZshKeRr+Y1YjRKVNy6Fd\nfqoJa6UBRTQXgtk0YgwLUGNwR2zuiia7NomacYIRnMfaechCi+iUICxZFZOr\nKCFh0HSnJdGYqNEG2FObuukqFl8hgopQsO1aW+wDe/NsTig6YZgfq4pvZLZg\n9Nz7rLd+prQXaNCz9llGltz+niQ0O/eXiSrSArMUnNWuzNkvsksb9UYAkOXs\nbDGuAIkNqUl5W5ONHSQ1EJi0QYezkbMHLb+cXLdUIBEab158JDaiyvg80XlI\ng55TIuyFp8qcKjmw0ENSZhUrNxyW2Bz9YWAxSwr/c2UL4gc/WoWLrujAsEWC\n86YgRBKBPCIh3PEoiLKrV3prQpVmYt9dgsUHSrf/IgZ8o7RUha27pEP5y9XQ\n+JFPZDswKclrrPvkRoI9BW6kLT3nCLoaP+0IF57AFv/ojNRw2pQI4liVqgiK\n4dgUEfyE7KwD5sK8rnfhyem47Hw12h2EMTwkADWNpek6A9io3M3L3DpuGEGl\nJGCKlr/utkZi9QjryOvMD7mFupAuWsivqs2WLVViLdEUSVvtx+ETYMd86R3+\n+gmts5MXgQSNZXhWekcgyK0kFfAbDppZMWzx3kpaDXlhX2ww1a0F+lh6aPXA\ntDta\r\n=I2f5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPGv63YL87yRehwNkRGmECc3E52AEORq26w8lgjIh80wIgbfh1/pdWYjwB0fTYkTjNC9K5F119lXPvPXHWbBafN/o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596222428-298ce5e2.0_1596222573612_0.25727386841464606"},"_hasShrinkwrap":false},"1.44.2-next-1596411906-eb40c053.0":{"name":"@xdn/prefetch","version":"1.44.2-next-1596411906-eb40c053.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.2-next-1596411906-eb40c053.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-r7cvM3ADqH1qVEqdrp0lTZXvGCMriUk6eKDVnb7dwCrIdrHn6CaWb7CJjP2N3WZ0Sj5q/tR978vFqsFwptrPMA==","shasum":"53ed8bc5d6a0e5024351445e0cd3b1dd022c483a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.2-next-1596411906-eb40c053.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ1IeCRA9TVsSAnZWagAApbkP/3esR9fks/mAr6SOAe1i\nzdHvtV6sK6anqKvtmoTwSvg6DtHG7TOWtj6qJ0pmEBWJWiRhjCRCaFbjGN82\nNX+Jj84aAUkNITGqGYohHYkKixMs0fKo0N6dKQgfFwIC79zcLzERRn6rllXV\n3eeNfm5TZJ9YaC1AHOETciQ3QALxkoNZYIw69AicxaHnTddHJJ3gtb3Ie/ON\n34ng3tceLpNcJXC/+NfYNYQ3FaaRXVo+TCG9BZ8VOsAd+XgnAkl8W6Z/y4fb\nagbGyms/rsmd1B603Iwf7+cx3F8hrYakO+kkUSwYb4z08Yhe6SHRWGCwHcZ9\nRuuTcxy3jEbyuaTKauHv6UxDX05jfRAhHFchugsc/2UutDhtCUGMPoNtj5bX\niC6PFiXCq2wCzeWyKZzd1lRhrY1iIdorz2QwQUxhzRmC9BXSILYiblb5h3Gg\nCv1pHOLPGiEdF6L9D1UqN22aPXnlq3qJBAcPhAuI3HVbRjCyHDqllUBYbcMh\n3IhWEZUQV26talpjJHeLsI87PYBwO3mX8PcUYQ1Mp2kc9/DpzqWs+ueeDeDM\nm+UeH29FdKaQqn0kq0eHPuLwIGSFACfJdYiXrkDfp4sNQgz08KG1HegXabK2\nq2amnyBCwAN9UfKDjaCQ/Q5NXpdQw1Hohx43CZm1S0EghlBl3QjRpimrnOoy\njVf9\r\n=DD0T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBcpCJ1gfrk3CUVEuB5mhiSWIYCQrShEY5lIWzWWfG8wIgb58i43ZMHHPu2GCLcDPci0QplBquDtdwUH/3aJhvBZU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.2-next-1596411906-eb40c053.0_1596412446262_0.8980855714469058"},"_hasShrinkwrap":false},"1.44.1":{"name":"@xdn/prefetch","version":"1.44.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.44.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nplkugNgOmRve9bLXn+yLCvVfInCxK8dobu1/s268Qnr2v640dyVdzxsJzI4hd03Z/wWpw70trNEmVTj9RALqQ==","shasum":"e90817e517baa7150c0336ffcdabcf13b443ba8f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.1.tgz","fileCount":52,"unpackedSize":83355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ/1yCRA9TVsSAnZWagAAGXsP/jMB+zjaHMDhGsKKMAlw\nv0LdAQasG7CQq3dxrX4fTiEiiPq1zWo3o2Bnoh0cX6WEcsq2Jmf2A0JyoHbV\nYZOKVOImTVX7WRTBwCWxIHBmKuOPrdWoyV+per/tlH4YoFVPHYqkQOoDq+yH\nEUvu1zRfnrU0Ctdi00lOcYHWdkCaI5jgKwIDiwY8Vca7GaG7+v8pK9bem8Fm\n3nUgPSRBPsdWgqdiGt5m+K+fVaYz0ITwZaf7fiNYBX6GerZvCFVOqJMBrjFG\nxd1fkd64XWSSS8bQImRxJUeWy8aboUE/DwiZcSwNlMUjf9tyaxpYuopu12F1\nVYVMzhibW6o9+BkHNMI/CIbxm5R98M1/Pb0++rIL1coXnFdhz8xG2P8HdtSp\nT1EZn5wkJ/H9RlIDRtj7HQcQM3e8BQ4BXsc8MRqBjwRgeVXrsAJZsetL5Vd8\nsroS9AfyMjR/cA+3IWBvk7YfLQayWgmhP2aB6eS1wrzdHm5gPkiGEzhzlGyq\nsHAHlOGFzouE88/2ggbEzVtmIoqZXH8nl8Jfg17Q8EfVYWE4ZEq8pytoc22j\nAHKigaIQLJ1BHJbRArnE+15NvDQ0npyboktfc+KZjINwMZXRFNZBUHNrK5VF\nQcHHAscxYI1Di2cngnCrfHR/20609pm4nkMun9NgP5rLP3aavzoxmbz5KKx4\nPsXX\r\n=vWFA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlR6sxbm3oFoFcCD/tK99zllBx9WVFMbES/tY+X+UpKQIgHmTShFMH4nwp34VCHxyGZho0SczWISO2h5/9O7jUjok="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.1_1596456305506_0.9948159489263668"},"_hasShrinkwrap":false},"1.44.3-next-1596460637-eda6dd32.0":{"name":"@xdn/prefetch","version":"1.44.3-next-1596460637-eda6dd32.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.3-next-1596460637-eda6dd32.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8MCDFjVaFj7Y+xq9mf+gQa8xYzLyCRfiX4SEkqEvWXpqdfQzBSN3uYvVESJ8d56dxE77Z4IHBs9+STlPVl4rjg==","shasum":"a45e51f4c373df1485bb6da2656f4c3bcbad387a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.3-next-1596460637-eda6dd32.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKBCFCRA9TVsSAnZWagAAUqkP/26+xYHE/3tTaVjZoLM1\nhshAktq6BEtdyWrxbxfMOo/9osT5XZIa7SXQz2V4eqVqJ8pxBgcn0klie4IZ\ndojNE6RMaU1Zn8Bm8zFzvwV05pdtIFnjGuJYuzSZPa/dlL0HPN4E9QFKSqLr\ndlBygHT+S2UdUk0oRDO8yVqPLlPn6Zuc8+lVL8zhyLzD1klqUQUha8sw6fHG\nOFI2B9WW0b0dD5m+aHBONZby89ZQS+kav0crpxbCNkSPGiGtREBti9XZpyf2\n6W7tCqPQnR+m03t+RZGAxhm4XvF0zc/+P8cyeznWZhluDAeq6u3DARxGBKAA\nEIHxHd9zxogFvEatRgd2Tr2JJvUm06tSem3pAFTVZGDB30Za7T8Vt925iC7t\nV+lLin9H5Ag2iM8pbJxRRZxtHhRdDT8mRSIjElJIqG4fTAILLP/RhXJWT/fy\n5B9WECuIcJrKOGlqXSkm62hnhTX0bwt6svaiYPGdZzZnJMph96KliEycDFbi\nDJRLan3WJ7dva4bCM+Z0AuxZnnYc9EWIKWgafaNiUvB+S+k7Dev3ihrpmO8T\n+8wEXTM5B9dbWEEhGd3D6XlTsPDzA2xN5yMWwTCNddw88sV8Ew5qMNOrSYky\nam9rdOVvS2fW8esjMW9X0j5hUdpAP8F/Ia8/fK+wn+5hConiScXWx3n7hwB2\n1q6b\r\n=LvQX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAjDK4g28Q7OkVNIvupZytrUWgfnyqNjJZg1d0g+FCP5AiAtjK9+jhWo76Pe2qed238qSCeCLFPhpEsycR/x8kEWCQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.3-next-1596460637-eda6dd32.0_1596461188906_0.4669204182386928"},"_hasShrinkwrap":false},"1.44.3-next-1596468860-99c97c9f.0":{"name":"@xdn/prefetch","version":"1.44.3-next-1596468860-99c97c9f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.3-next-1596468860-99c97c9f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mj7huf/N+maGxt8FrIXnxd9MK5p8kUTEr9YvMd7HM4QGRamXIMCnfIDtcOa41OS9QGFpxA3mlg+yp7IAw4P/JA==","shasum":"aa2f479137705d03bd6107afd4b8e8b2d2af2595","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.3-next-1596468860-99c97c9f.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKDCoCRA9TVsSAnZWagAAtIwP/R8gTMkL481wNgfvzdue\nrdKDeZ0Aev4lfQGDR8WsSv5cBTCwNJVl6aRksyfx5xFVm9JqpPitAAIOGeze\n1ESJfoi7vxtGv+soqJpOyr/xs+GPdTazN2s7Odq5pujDZVA8BqfZz9P/wnCB\n2uJxCE0rHoKjOOG9FGJIBk3Bc71uZ/mBR8Ic8/3LxAIpWjV2POTFs4R8v4PC\n3Da7HxQ+x5+g69l8eijT26afN9Oa7IZxBZFmac1JECRrQ4iHKOHp6va3rS3t\nn/M1ZQX6lCKBoWVpPDXwLIOSsAp7vwr+jTTAq/4owea5I7LJl0yVG55WbBEF\nZ0XSZuiRwUt/7X2VNeeKl1olM3MtN4BvHNdN8lkVnBr45C9pWIAPlDqYL7+K\nfz2+nFRFuB8UAQcrc0/W86v7VR1mZu6APKk8dSjAl1buDCBkOc/t3slrUdeY\nLLai2sbM+zT12dq3rcOQQiQLzKiPM7Il6ZdNroNF9oW3l9fnY8x54LI+Fo9h\nM4afasLsCY8CyTsYdPV3oXxRH7/Teb/WOaVu5bzU9jVzj+blMJfWrlZWdwWw\nm9KnE+TvOCppnC8oynOnMkhT37gLh3Zm+z/0CSjGAa+oSUeqB3FOY5zeb0yw\nd0XJnwEoW+/cHUxdI2MDe48gN6ri664ziIhNzlcxQbMbD+vgDKYrAYan0tFq\n6R59\r\n=h5GA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDP+XOQVX7bbJQN+vGYmhhGTRWHeSOt5h/e1moaw4HePQIhALHuRnouJpjDrSzPrurgzBjupMkdeMoBu4rV7ZU3h1+f"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.3-next-1596468860-99c97c9f.0_1596469416201_0.11121475500856337"},"_hasShrinkwrap":false},"1.44.3-next-1596474634-7d70c2a5.0":{"name":"@xdn/prefetch","version":"1.44.3-next-1596474634-7d70c2a5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.3-next-1596474634-7d70c2a5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KHeVwW+ra2gD1SoD31ZFacU8hsU1iCM3/tAkA6DOtThJEcD4qHKoOMY4PXPgfQya124gExCx0ic72Hw7RYkJPw==","shasum":"4dd41418ee2cad3c87c9b70b94cc82d130242542","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.3-next-1596474634-7d70c2a5.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKEdTCRA9TVsSAnZWagAAGM8QAJ5shwUlo70CBZ0zpxfD\nKQImqVg5rCc4FQ7Xssy4H4Npgh1mq2yzttwAsyE1/jUh0yAkZAttGB/lhAij\nBIhgLD8yXipozm9EzAl17E+3eeRZEhCu8+KezCuANBLJerRan+MghLIIS/lP\nUVNVyAS1T1OoHNMAFmbupATkampotR8aZUTAVC4bPGGRWx9I8+T3CuamDQ8B\nKoWc+3x8dm2an+MdzQNc6drhnteCOLbEvQ/mrEc51qKoUzOugu25fmbGZAEM\nlfGlSzDVth/SuD30y+j3EIfo2JsNf80tm/d/8YXqaVbtx5/nJEFXlXLZgtD+\nwql6w+BkysLVtt4pD8SWe7DRZMjqaACPLAB4LGyS/XKWG3yQ/crhvn8rzsEZ\nW+JdD2N+j5qdyVSp2m3hNUnYqFBAVbZl1FgYjKeHJi4zTXtTJkZ1ZSiYJwbA\nO624Rv4mcR7pbo/0TBj3d5eWyjqRDWtWhUDS2th1bbPP4Y/eMWhArsDdTPlR\nMwNP4FCt03lQqs68jQyi3kgloIJY3Y8X8V/KsjWOSRQ7QE/e8rMUEMSSQlm3\n2sG8nhAUw82Z4nIlFFsKi2Fa6S/lziAVseB1AUtePFvP1rvoHL2Punr+Ui55\nZ9cNmAzlupj0DZXJ9SZ1QaRVpYZa6+OKe1/UrMbmgOdaLSy2eyjeOsnTkTll\n8xl4\r\n=OJyu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDn5M6orgQNYqJGCLoqys4wXnsiWjdKBEkHQTea+ALAmQIhAKmzPZaRcNyR0yQoPQC0ZZF5VWz3Jsmvw7fj4/LP8F+1"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.3-next-1596474634-7d70c2a5.0_1596475214027_0.9376843938974981"},"_hasShrinkwrap":false},"1.44.3-next-1596488022-9427eeab.0":{"name":"@xdn/prefetch","version":"1.44.3-next-1596488022-9427eeab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.44.3-next-1596488022-9427eeab.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Wt8tNM34ALEp/L72tgWk6KjuEUcO7/kJhR68MrawaaVixFIq+M0UfkoUN84Jj3rh4D8fdbZwaXg2Y5SyINUs7w==","shasum":"3b622f7a7675023b438e3e96074ad8999de33686","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.44.3-next-1596488022-9427eeab.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKHt1CRA9TVsSAnZWagAA9zMP/jPIW3yRSUNV8ru2lmAf\nAS4pYZRdJ3QVXM4CxOWp5mibj8r4a9D9vsuOvxdH8qOJXxzmYL+ERKnTIle2\nCrHhdzzs2HgbofxeCObsfMEIn23zf1rtNPb3hwII9OL5UXesSeaq/eAeP9Fb\nlJyYr2er44oKQCkxENzGloFl7ilHJN+Cz+uHUGg+m6Mw34qpC5MXR9B2138O\nBfdz+DnAYmKOIhhY5o5VlmiMfyi972hsBwlX/763OH6bncejPlAtJBzkCZRh\nFUZnA7LAir0yfh8zdz3zqS1MCBLU6RKC8Zz5qHZsTOaESsJswsJuuAzagpha\nTYvpfE2MYnXXA+TpEzNUREkZg5k0PeBAmKQLBAe1tT2SuzjnKdfGcvpz9JTM\nhSseOWyRqD3NKB8u6tTkiOFi/2DGuZQvLj2CIHTjz3J66PUV73xuFyZSDHQs\nMweGd3U1c7ydJVprjXD9mU3L4ckv/jMR8pNClvgJy5OO6yErUowFgQS97329\ngx1TXxSVYRNjV+uhtSTkEEZnMsDlHtmdxHZeldkyPQR20gYbT8E/XwLI0Ppl\nFTcbvq9ZvRnl5PXOP0iscyBb6qP4fIBCcNYNUSTVdJ/BS9R0q+G8TUgbyChy\nTtOJTKm5jNrtjDFup8jzOk8rgTTGmHIjyK+7EvuR4+6epqDLhbSVlrame3qT\nw5/W\r\n=EunP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClqSHrsi54epRTvrgZqVgMkU8sz2KkJ5rUafU4ZyUbDAIhAMLqZPB9ZTqyLYq+ATToJDeLppC/+VNmAY1Lseu6NP+s"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.44.3-next-1596488022-9427eeab.0_1596488564486_0.9435498021152984"},"_hasShrinkwrap":false},"1.45.1":{"name":"@xdn/prefetch","version":"1.45.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.45.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-34FCBd5rquodsN7O/XCrT5BQZHcR8i/hOON0yMOCOxyJhwCihg6Vi10pZvRaPeYki2OdG1xQacHXDFJ6+23f6A==","shasum":"bf29b1a82c2a70ca0e6780e650ff43e072b2d8da","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.1.tgz","fileCount":52,"unpackedSize":83355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKVueCRA9TVsSAnZWagAAJT8QAIQsSUS78q6Og7yDuUyi\nY4cKxAhFR2j8l4xrsQ/CGLroSdBkDIqpOuWL+OTPbC+6znMnBy7o9pteDkvi\nNRUIUPj7CCx1Fm3r5pVrYdYTQzPcP/88VpEaO3Hjv/CxRa+lzg3jP3kIX3ZA\nTxU3LewizPeQkKnYn/aRZosLX5m6BW78/R0/zuL98Jykpf/ERhjbEGCTr3mu\nZDHtM5Kz+hyG8bX7pQikZT6sPuP4+/5HIIie/io+FgBhwfqTwaoQKIenxrN+\npRC88NJBk4aCbWYJoe40+nM/EeA2O1rksQEdUpCSR1yr4v5RbZahtKV9I+SF\nCIzSUQCwi+imDRGtnoexMA1UGhaSc9ChzVCOEqWcwpn+r8lxJaUpysZBXe+J\nh+0HmxEbQD3COTUNF/bLOgi+2f31wVVFDo8Lz7RpY/ictXUTnVzbDtC6/k6f\n1c2GZkGdggTNzB+uQyjs4Q8M7fyilP/OKYmmKCrsIWGBjc1kPOE95S4QjzDX\njuEDz4NvxkLcoQ0OoGUlazpHyXpfjoorN6e37+kPTRImRLpYK9ve1nL7Nfxn\n1Ls1Li2VpXG0FQ8Apwv1vjdCPODMp3AuCAXcg6rXkOUQSIQZdmLKNad9V2le\ns5YQ7ixBBcX8yOH5qUrcav7x8T/a0OmPnK3STELh4AnNBASpwjjyx0l/KYMB\n7MBE\r\n=C2qV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMsApj13ZuoWWgAw0P0BGKQ0eCaDl7dVU63rUGPoRaowIgaVua1A5BzNqBjaWcWOXXzYZgjHtFl+Il5YQALSRVx6Y="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.1_1596545949808_0.5179895056740627"},"_hasShrinkwrap":false},"1.45.2-next-1596563413-5a5ebb15.0":{"name":"@xdn/prefetch","version":"1.45.2-next-1596563413-5a5ebb15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.2-next-1596563413-5a5ebb15.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-QkHA08b0n3MAOtz56UAnfLI1Gra1JBQLu/Je1XvCcCrSaJVHY4Hp4qGNV+x3VioakqgWJgslSMTaQo85iucE0A==","shasum":"67f2a1c0bac386f98ab9d30f0818cd4f87e92089","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.2-next-1596563413-5a5ebb15.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKaIACRA9TVsSAnZWagAAoToQAJ/7l0FNmML4gEok99Mw\nClW5VPT/GsfDkKFYEaltM5+SIWx+imzOEzwCtMmWCxP7GT90EHRGRa9J8MoH\nreDQsYnHUsjis4EKbmKkRGLtLTPRNEoNDwFgHdyvE7/up91TQNBgbsegvv9D\np3Lc7/4XPJokXMKYLfwNoc99T9RCIO/0bpZxy6+NvIVjkvtIhyPOfChFc7Z/\nDE2KnyjtvBo+LWRNhn/Wd1Us3Z7jDYWgyiB9LxYPSDyRFLOY2w7RfwlWfIGF\n9OeF9LUnoNdD8pX+hMpyvfuqpXL1aFV0Q0eOpllXqbazdhe5x5t9aWhcLXZC\n4YZcUuhVf0q4uRc8zRIN124IPL4JZYPVfqzVByNTTQ1mKL5lWZko+dxmixcr\nUU1BtAWC7tT1lCU4XMMwi+YPoiVMu8u0vjoDFDYj55CSGN6Dk2OoAWKCy8mC\nNHW7bjvROygPPG6XK3Jd/HXFnpWlv4u25pvW32cpc66cBgPY3+/kFHdsv93L\nBZn36XnopOQOjroP/2i+ddgjKSauujsQXfRDyeBASXfCpmUh5dGSsrNmEYY3\nMz8A9gjvi5srfAcayf3epc+PZslBh4XwIZYZ+mJRUjkD8K9rdkglJhkhZgaS\nOVML/KC0WBAfeG1pOoMYQdJ4FuGmMEB8rBWOh340+gRah93lAsuE8NJY+mwZ\n+yUM\r\n=d2Gg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFl9DiT4TmV3jKObuumK2LawUNfZMh++2hIebSe/qY0aAiBxuwDQggCqst11MOrLXCRCPQZnRTztysOVyE0zt6km/Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.2-next-1596563413-5a5ebb15.0_1596563967897_0.8747681648282546"},"_hasShrinkwrap":false},"1.45.2-next-1596578728-3928707d.0":{"name":"@xdn/prefetch","version":"1.45.2-next-1596578728-3928707d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.2-next-1596578728-3928707d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WfxEsPKPEPWSuoGGCjInuqPgeZiy0Fw4g6goB9qZcgrnhZY+t7MuKm8r24i22hRpVM6onMIT/9iiaD+HkYZrpA==","shasum":"04522f8e43c51e32d3c593a3a2f10b874012257a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.2-next-1596578728-3928707d.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKd3ZCRA9TVsSAnZWagAAy0wQAIry22MftODjCB5EyN7y\nDI7Sj3Z5AmtaPPgr6Ek9zSEyLQcqF+6hKDX8dKNc2+Cb0KX6PFGod/6Amptw\n4q+RaASU4Iv7kr73gx3gOPNDl/Yhf8GCv560QYjjq3aT1gOmmJBiYxzHZl4G\nLVvnDcgl9ztNE7fhhsX1NtJVpoCDCIQGhU2Bl8BR5HUS5b020SKx7B+bEWCE\nqiM41Sr6uVdBrH6Fpr+pIB7kqihxK1GYVsZebEIEyYZ2F7Y7hwYLd53FXTta\nqiZq4fGl9LsvDtP6vhb7OLx0CDuKWmGrWqKvX7cmv+PgzGeLCNCJLhRaOfvW\nmqWCNKBslFg8fH4DUfdQoyQI7y5nTN1L9L/JHR9TieY26Agy7tYbFfUqENxo\nPexPVJ3W9lqjNTNvGQdJvwo3sY8xyjyv2hwhdw/C/9sZZh9odA8r5kro088b\n1pYvp3Z9oiPuiuJ2+ANDTn0lT02+DyuuosusO1LZKDqaw23a7zxmGGIExSeZ\nqnYxhvdlY4LDYRxWCIfArD/MBJa4JqUtAOFddcOc88BNQWTMz004R2AVcpMu\nUr9Nyrw1ccGLQ52VH1UYXT57s7Rwl29vZk3kzJ1QArfU8Sm5ywqdmlPRB+h5\nBfEoc7xIPLBoeEULw/DORtT9D77y5ZM8Y7t2cfgUf+fDp6j7SkwztS9JRBbf\nINeF\r\n=hsr+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYD48mdk5jMjlOogNgSC6yZdNMIqVSaJ99BMZ39987jQIgU+lwVofopoeLsTN3+dOR/YtRCX/+m8muVAsO06sarWQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.2-next-1596578728-3928707d.0_1596579288488_0.7153265912434761"},"_hasShrinkwrap":false},"1.45.3":{"name":"@xdn/prefetch","version":"1.45.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.45.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CI9r4ih7XFBFaVU36G2hDenaWOfBf0urLZ+UUF0ayPSYthhJT0Gw+6Crw/5xwsfY+cT9OjuulQetopmSVRBvRw==","shasum":"ee48374939e3d0dcf9f0ae504c7cb5004a84bd86","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.3.tgz","fileCount":52,"unpackedSize":83355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKebqCRA9TVsSAnZWagAAq4IP/ibjjWjLdD3L1dPuZjL/\nGBccbFQ5nCdP802diA9LWmkWTo5kIGdeS9RLpRyrPqSX8q6c89LSVoKbgNPS\nC6JcZFWcrlua+lcYnGXFrtFM3Q/K+5BjaYZatXSuvCK+D3AbmWSsk4oQcAuk\niOEjhXlAq5kUd9/OuWS4YjITb0UnryZ+V/hfhy5egaLM3rk/XktTS/UJXXk+\n2jlOXg5ttJx1FPqdK/fIi1o5HUrP071BJXqTjua1dD/9HVgbOSwVS+Rfg6q3\nPaGBoGglX/beozHi0GhCrfs54suM3SSa45go776FoAm4nL+AFKRJQGuRD5rF\nrciEfctUbF+iQebUnOOvJSLdVGWfS9+mIrvE7H1HnYBxQwgd9xZ7o2WlYn+B\nf+S85aRzQWylvPDMNTJMVTzSWSowob0WwTLK7R7KqnKbS8s8a68B6mmDq8ZN\nMgL9AoknBCmu9HleUakW2EsPUDVg/H3+H9G0Npwa7EoJ5jkWe1H9U2Y5B3EG\ngSmNPuvxDNbqnQb6ykH/W60rPRoESiZQCuC0vcEBM2JSh1MpFkQooK7TqY59\nih9yga9OE7oVAOz47Yz4Cl/WGQ/Expl1h4zWPUxPk2sH1BwKItXeBHzmCals\ngK6fZEZBP5ia3r8ZcnRJ8SVEsfWOT9SEm82442623/M777TzT7FBY/Iz4eof\nSn+V\r\n=x6MU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrn68NZVsUnwVqUZBXd3FORAD6A/e7l8UjIYgsHTOSMwIgNw85pAkD3j+f3jLAU8MoovAYoIBMBw4JyVgJhMvEmlk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.3_1596581610480_0.3387485024030601"},"_hasShrinkwrap":false},"1.45.4-next-1596701713-cdb4dbac.0":{"name":"@xdn/prefetch","version":"1.45.4-next-1596701713-cdb4dbac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.4-next-1596701713-cdb4dbac.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Cw8DbwLabiaoevqIlnmfpnE63/ME6iI3meAyKPYezyWyfZjPixzYbd+yPC9YwwiIPE2xfI0xpoqNo2TTWqfM/A==","shasum":"294111490daa586be3dabee7d520229a5d82b77a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.4-next-1596701713-cdb4dbac.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK7xlCRA9TVsSAnZWagAAjdEP/iKhB/WTpVscDAPWAbuI\nE8ueFWkYVdQMAWVETCNxR/H7gZ91AVTsGGdF1CDmW40ujmEZGgrkIUX0aOaX\neMXYKeCv0OiSkH8u8yQ9zBvDkxHukmDYrdg8kdHsmsONFR+D+Ql0DJib+umr\n+n9Zul73gfxZHmiA+M1ZPa8PcAC6EFFSd25rPzGMkYOtAIBHaZkKdms6JSna\n2HyroLYSXoG/g3irbVWA5hU99iXusgP8kCjqX6jvV/lJAzYUDMrhPzHN1A82\nSwtS1dagOeStA2Q6KyM2Zrlcw6V6+ieIqT7Wtisnqy3K8Min/uiJfXANxWAU\nQyTT2Hcao74ZoDJjj/uB8BN9JJSBNsISnWBC2YnQOj5Coytm9ElwOWjxjZdd\nZJw3+Hu9LFDjeotzwcomx5sg0ikRxy6bG4HVDsNxrqaB+U8zPP+SCy0FA11m\nkRKhxPW6GWrsBu/zq9L5H+D17vyrIijZPGdgdMfYbO2+EIkhd6mT9k++OSz0\nTIoZpOwnA4Z2bS8pgPZ9VAPuDONKXwzvvTEZjCxJXBkmenKn4ZhrZ1yNQfyg\n/M+QTBENGeRRGgUoBH9HAMS6PsZ7DW1/I7zrmoRE4poUhw8WaTxIOv4Mn6PP\nMDBEbLR/7mRW9j6muiS0ja1KfGayin7DNHgSvca1jjzJNSS2gW2M19MukQOf\nZSUV\r\n=CTA2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEMX+qeGx2vQcQyxOfg+/qu35JGVKRgkK61Mbn0yT32XAiAnLI2B8Cet07codd0CtunR5OLRttyXf9lXfTHPFP4m5Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.4-next-1596701713-cdb4dbac.0_1596701797373_0.6784062725294993"},"_hasShrinkwrap":false},"1.45.4-next-1596704983-7408682d.0":{"name":"@xdn/prefetch","version":"1.45.4-next-1596704983-7408682d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.4-next-1596704983-7408682d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MTQxa/L7dcZXV7tRzBJsBmHnS1g5+vB1mjIUjR0lqAT24PW2q0fPhcvN8+nNDHtLuTW47zb1zUDs9Php/b8piA==","shasum":"ee8c288ddcf1bd320a4ef76ddfe02fa8d0b36989","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.4-next-1596704983-7408682d.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK8kkCRA9TVsSAnZWagAAE0AP/0clLAfD9x7o64h5GMs7\nfQbStNBXZEE1UAnBHlNVtkKT467sM6siv3ekaMasmd55+QbHZ/plLOVm7hyz\n47C8SsJwO7xPRlBcYOjmVE3r9qQaZO18stHDdyEIoum2oTySacqAO+E0kiUV\nbqXIHUwOOM4UUIGNovERNgdxdgprQzwL1udO2/Cr0tlhXpDstElopKo89/DZ\nBqhgEKnrMquQ/UWMXm40jcTjxxxvxidNhrjO5YAislEMjCvuFw1sm2cxXLXk\nqAP+Kdmw02lCEWqtuZ7naAaNG3GKtsnRs1xeP1yRLlNgkAtzYKwbZB/FX2Io\nZfp93Epd92ovOicYElR1LBP4csz6nx0ql1oPXC6u3+ypBA3uUK6qDT8f9KY7\nBbRyUK5CA6crwDIYMB20HWQ8IsYbom1wyif9nkkZvEuk6x7MtLTWaLdtC1uk\nZC6z0lYP+Eeir5NyDGmO4q2l5omZ/i+WJAhsgG1C6kt+QPwgfXtC/DuEXaxP\nBQj44cU+KDSjSLGIw+eZXURfNCmI0qqTbCFzg8ELbvbMs+oz188CTsYkBbQN\nHhqcq6lzd/4n871Q0gS2Q2/TMjvhj9xA54v5W5yBwmqST7o+dOtVK8Nuyr9s\nGs63kUNqlgVWZHEsvHnh9eNoD3c3XbIfcWSKTG1Ktchb4LJcQcYiw9C8wDYc\nqxW8\r\n=KNh+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICUCAq0nOF2OKSgs4M3CsF20Pm7ipu89jXH0o40XDlD+AiEAtf7qKNWFfC7TRzKalzJ22+TvKAAEx4uczER2I3ENUiE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.4-next-1596704983-7408682d.0_1596705060323_0.7893043748735424"},"_hasShrinkwrap":false},"1.45.4-next-1596713300-529d7a6e.0":{"name":"@xdn/prefetch","version":"1.45.4-next-1596713300-529d7a6e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.4-next-1596713300-529d7a6e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7B0sUECNDPIzErb5ocu3NHRw5a8z9dEC+onN7WOVmPqcAPWkOQvosTb5tn4xOmWI1fpTtTSMyqxoumpKqeK/LA==","shasum":"988e5c6b8849782ee77609d7eeeb22c7903ee09d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.4-next-1596713300-529d7a6e.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK+mjCRA9TVsSAnZWagAAvTIP/R/u1S1xg0yore8YvY0U\n8uMjJMzDE+D1DHGErRVVLVUPxDYl8UOj1+kaW9zK06WjyG0eNSxB4ogm96j7\ni9NZXfFaukJ7ULyRt3WMiP5EcsoKuyx6zb/Jid6TYKT53Au0lAFx5LCKAPNu\n0ClK+Y7QL15gVZB2HI6a3G9Pw5VIODTk5jGVDiXeaYNuqMYQCEcocpLuBZ8Z\nVqqEratj5Ivr0v2ERLZ0Ipu3ry34sTjlKbvldMi7JPnb98WxTSTUnwOCdnaq\n9YB3vYfUteG0ijbRQWKLjogNXXj83SyWWQsU0e6mYIaF+9fS9VsCxX6mxCfi\n5+3bPFTKn6nvgT40bi3viV7Cj+FQxV4V2uscLx/JEsCWJeK6E6uYYMQSCWSC\ndiGEmOqt0BfS3xjdGlqEnqcaqQO9dccEJy74RMxZPOqcRIiSTEmXcjB7+iIJ\norOpCash+dQMXmt5/TyQDG//0WtwCq9biJPP4MnQ2g2DXdVjvHuyWRSDI3Wf\nxRCNAQ7Rqp/HLOMLLp0H+69lj87Ed0Nj5ax2BuhATEOY5jaMfbvV48O4wrml\nu1Zbfu0sNb9DZr4iv2/9jQc+FhKcljiekUP7sG65y9njJnIcipuOqQXMXaGS\nhVffJNwnS5hh7pNuTjL647t0rK3RS/RICmn/VpC78PjK3OKOTi5aR2NyRyPp\nLUGS\r\n=4OOU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICz9l7YEtiOFFgNQH+3s7CZj7SRr9BXVlElSdNHs5baCAiEAsKVt2YLbePKUpFbMMPBH58OiWilKgMv5PK/p7pYwxTs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.4-next-1596713300-529d7a6e.0_1596713379186_0.9770801162661806"},"_hasShrinkwrap":false},"1.45.4-next-1596714259-44b326b6.0":{"name":"@xdn/prefetch","version":"1.45.4-next-1596714259-44b326b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.4-next-1596714259-44b326b6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2/OTMQ6QP52MpRLvBYktOib7eT9aBeYzXPJvKkINYA8AMdofKpW23eGYDa2XW+XTjRjFtxqHpx+EoWvLZ5oV6w==","shasum":"0757ea47cff13e74fdefd136bcdd723e85cedf51","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.4-next-1596714259-44b326b6.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK+1gCRA9TVsSAnZWagAA7BUP/jSCNG33ev1upMPhmVu7\nwWAmr1F2/Lldch11MgNCKQEiYxzFtg8WVJGP2fp/DJ9+AJUer7o8D3RUc1Ar\nJI/NT7FXFRb1rt9Vv9LmefvyRMAIA6d2Yu/SHUs7Z9NOHt63MERb0dHJVGJN\ngiZQHngoY5ALyMYC0bltaHNTAhBaIm7jVSTPYESggGjMdTAbYkjuT5CzjE4b\nazeTMOgA+8R3BStPZZQyAp3Pvx4cFi1JxYLWQCxphWzANwmA8zQAeohaxS+v\nJK2UOL/1zUAOsB4IdwBVXfgvY92tZ7qx3u7VZG0NppixXkbXPhKMTlEWPBrg\n8peja5cq5p0G1IXgH9iu222H1u+W4j4NnpQA5GkB9DcNMrovyUoHLhHX9jf6\ncCGdlCLBUbH83/VfcEJY2gc55H1qGVFS0A1YwbS+FjZSW/r5zrn2Tf+fJtUM\nszWAKxErlgG7IC1hAZBvYWN0p7i+6usxjau5UEGq3Crp6DiuBB/0PG4blIqC\ni/f3HfLmCSD7SHZt+atfUkC8HIR+otXnuElxu4I7QMrw2veWKakZjLyYH9gO\n4/FSgNzIbjM4jY774R9+7BfWjZXFgGBn9yS/6757VscZ2xAPKlKn98tkNG/3\nfSFqFE5z0+hhUj22Yv6gAh+2HNQ8IZJjqOtuUq2RBOCgdhQce4CnpSGLQ1Ao\nG8k5\r\n=78c3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBrr5ZLjXQzpodlXdZtknD2AgDX7EkQbbwMYmtDMuQoKAiBX+Xen0yNf/GhcSAZUU+LMeqBzsF5et4mjE5k6N7eiHQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.4-next-1596714259-44b326b6.0_1596714336226_0.38625888380089624"},"_hasShrinkwrap":false},"1.45.4-next-1596715786-1423273f.0":{"name":"@xdn/prefetch","version":"1.45.4-next-1596715786-1423273f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.4-next-1596715786-1423273f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rGAznOf6FwB0aetD7Lp1EbvCDUkcGtmmmPw1mnPOt9UGL441G+TGrxIK/jetpdAzPAg78wBndfeYViy2raLNxQ==","shasum":"6b77cdf5e1d67d78245cf991f981b6f96d11d4dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.4-next-1596715786-1423273f.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK/NkCRA9TVsSAnZWagAAQX0P/214MeA6SDp18b+4haU1\nvChmMw1SCXAW9pYSbJ1YLstxroJ1WSVWL+Yqc7QPaIJPS3DEiDX/IcqGRdR5\nDTH3ygXLLIXflAQo+M7/6Cm2N4+1ZX9ZVXyYtmo3UWzbl0y8GZG6dXgb9yzP\noI74PJDcxC6/3B4UNsW76o4a/my85r9dsW6cdS3n2wkOVuyNL4pq8kB3lBk6\noIp3KsRv/WnhPp1tPkMre42Puau6Y8nMSFaga4cNaDDe5eu1a3pfu6LAMmCu\nPscmkoyDCSBP35ULhOpjTT8qpmLD2BxPf9akZ4ZRMSkMEJip6Jmr2/9JndfH\nH9KNO4R5cXzsfTIJjGdyE7LFpC/DuEtBdkc2XNEgOmbdTbqfTJuTCyQY4NfE\nEUg4K5Q9x0o0tREENPjNJZrfDiWYSmsnScF9kEy9jyWqNVeFuD0e14WgIkLe\nohjctrb2EhP9L5Lv02FnCbVAdgVFP/ohuJ+k1f+fvvKUWlRL5mLxj1I4vs3r\naaa/Ccm0comX9/M9rQUM5d4aCp31W40h2HXClQNtgNYAdvTOI5gQSTncD27D\nsO9ikdYFa3P/J1qyVk5HJeEPzaBBW6EkDF0oCns54vNcjkbAjBC41wlvoY4m\nwQ9UPmHmBlG9jJsnGn6EWNvDd+f/yf/nBfAl/4npdE9G90ajdwBNbosoIG3T\nEpW4\r\n=yN/K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyIVgRUhwnimtKK7XRilOMgk2wqTWWZ++VNjVc7r4xdAIhALgqKlzObjcJmON3Z6DuDOQBU6NFi3eztDoZH6coemWz"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.4-next-1596715786-1423273f.0_1596715875604_0.7304301676199441"},"_hasShrinkwrap":false},"1.45.4-next-1596723283-44ad01aa.0":{"name":"@xdn/prefetch","version":"1.45.4-next-1596723283-44ad01aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.4-next-1596723283-44ad01aa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-63UydmM46UKSowU0LLiUBakNG/lPAZUc0ZzN/usvLq+D7zCY2UD5pS+W1M9VVpWuOy3xn+dMYpf7ZfDtdslCdg==","shasum":"47a53d9cd8b4197d8f1323bed90d9eb9d2933d33","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.4-next-1596723283-44ad01aa.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLBHmCRA9TVsSAnZWagAA2wEP/1is6+nnTSHPPYBFmxz8\nMbreC0pwEwkT386Qgyw5LQ/qQhl1EvVuZoxQXvlvq5Ks/IamPgJ48rIGFCx5\nY+PBAiLfRt+MUHLPxWtf1J5qoNgJQPEp/EHk1fk4bM3UBsrZbdogkJvPsZEB\ngR7BJ3aNqIXm3VdPgceEuB259YzutPo/Djmi9AvEGrnExNF986RMZm7bjNFb\ntsk7BG3P/FKH6K3Ue9xD0z/hdT46c4UVOn4tiYR8+Qn7YxeQHMU/VGMqLhzp\nB5bxc140XQJaC4kE1o6jw4Cum6KVFHhD2x3KXs7L5U9ppy2SHeUrnYpIGyUE\nIegvSqUZkFBl2poqWxyqbVh1iRvD1IBqpt0mgBoOVJMlSso5cOIAOscal3p7\nrqXTyg3QLVP6TnhZLF0hk9yYDFtLOsFxju4BmWLzQvYE5S1UwgVjBQPf7A6C\nUKkQYoQ8WD1K3gWoeoUyB0YQQIHp5XimlLmwq60klcWkQ+B0fBDmuPynTXBt\nIu0hibtTQX7ousJcqDHsu+ubsld9WN0g+pNtW+5mCu+wxtOusMv8mYwJH0mz\ny8qwdANF6MSqPbrmPkn40bE0kI2cKEyS7f3xp6lIBY5R7xocCw5mDXtqrG8F\nA4wavIh07xLBUCJnzcbmiaEQrbhe+JaNhG61BD7YgcLaU9dsDHNq7cCyjdIp\n1dgV\r\n=hbK3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuwMjJsZ4Doj58N+Dw9PjcMsAw3M7ijIQXDetfbTP0lgIgTJm6TkJ7hF1loz9Cv+5f2HGbfG3BqmST3eO7SBOxT3o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.4-next-1596723283-44ad01aa.0_1596723685827_0.07423060483269217"},"_hasShrinkwrap":false},"1.45.5-next-1596724691-d5b4f1b4.0":{"name":"@xdn/prefetch","version":"1.45.5-next-1596724691-d5b4f1b4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.5-next-1596724691-d5b4f1b4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zup6D1ekGUXqzwLbk8B0bjQoGR4MgpTQ5RMFBmQe/iaS2vEPbCQNpdVkxvPXv/ztsp8H6Xjc1ltXoesYFZzn/g==","shasum":"feffdcfe3734c8c675cb36a4738f82ac802cd741","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.5-next-1596724691-d5b4f1b4.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLBeBCRA9TVsSAnZWagAA2rkP/2ppHI7mBmrzWfUEtNGW\nChHok9fzZEK9Kv+YLcMwREeXbFu/nG8odF8TxrXBdSLDJHBfbYADoLbSx/Ei\nz51peMYt7ABVt9rLg+akvpb9SFnlHuwLEfWco+z4M2IqJYvhU3HJOLzVDBfz\nidLbIXzavmjzOj+4nMh2/DmyMPnolr7fip8zcxVDmoy6IADl8fHqPAkPLaoQ\nu31foms+RkkLN81OVxJU37W18pI4Z3/VET7iSTzfft5PSk4ziTemr2Qzcarp\n9xyCWdKi6b6KjvcYI/aGXjNL9HhdwaTcmsVUK2vnFbqxtBwxU0kC9URvTgqj\nzVauHqCkc4xxBcvXotZK2nU/6XfJEFYordM/N09s7cn/VNHZvNG7tHnpHXtP\n247W6X+8LPcmBSr01Nv7NfVNBUTtAZBjAMmO31u+2P6xQ3IacVlXvsqtqsUU\nrFtR8PQkmEphKLWzc+U4Kpm3KWB8Q9FWkLgQLbHTCaszjpU1QGfYoiqy/F7c\n8b2b3kFZ7bUd/ZtzT0IDA88yWSePAE32aAKZuCkvmqWg3ElzkSdiaEm1dgSD\nG2kvoFl1PhIvOdpNl6dDIW5kWpQHJsXMMs5McRU3ngRIznuhGZIuhPEiS3a2\n5n7nIoPcaKkUSScsIlunw5bmjPxmxZGAsuc3X4+VsA4EFwZSDkc3TMdj8gR2\n6jwO\r\n=jPWo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4DxXKtN4T0SA/LbQC+S7rgBNoifhkcX9PqIqDlY3E2QIgY0hJlRXtVP61h9mENB80dY+9erYtFGfXCwVCRz2sWEo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.5-next-1596724691-d5b4f1b4.0_1596725120657_0.4602614445963287"},"_hasShrinkwrap":false},"1.45.6-next-1596725783-033db1aa.0":{"name":"@xdn/prefetch","version":"1.45.6-next-1596725783-033db1aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.6-next-1596725783-033db1aa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-m5pRGiaJY4BeZkDyC32rRYlvLFUtLTRKT5yu5g1lTZInQvhbeyNW0gHeFijLoTv9SSnJjhz8qlDqAHkfFezorA==","shasum":"0303dba006f148b496d00296f3e8f3a9ac75ef01","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.6-next-1596725783-033db1aa.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLBvACRA9TVsSAnZWagAA3eMP/0tUiDMH/6QqaalbqLTd\ngDdjyI857nHupTN9eyqoPgoT/NY2riu7qfFaFdcoqrvXQUI2HiZpndGlfda2\n5O+9XMrR1tRbM1kpTk5hRqlgWBKRGvrLsJlNCvLgcIgkNi7XRMmc3AU+h4BC\nxZwla/vyX6ZGtF/pABFpvuzs9QTKmYZ+8me/d/StehIHWgsNmAv09tgxuMA+\nmcHfzo6We0BT4gzdP9IVD0ho4yFvTryw/A5VDRWERjnWZP3AJBe2WKdq5iad\n0QMVw6bOL1yJxRBxWiccuVkNRqmSY+PRN2MsAKI6Qrr22hYg4GagJUVM4Owt\nm1uEQF63TzdewcG1RfbJyqPAubgAph2iH8hY41TX3yWDkaZvyPmvl3w3N9AB\ns/hXh/Q2wTYbIXqDAHRjAHNcLhuau2e0DZV9NCHS9N00wDEPnWtQ6vj8kaY8\nABuTkw4fNw/TR1TuzfU32fxZaE6cbA6xWjSuKHHcW2C6TbWJ3kZRYzcqhYN+\ndGv3Awzm9ibTnn2SqVrZLyyprBrXzgvZ6s1gVzXh1tNDEBolmWm6jkZEVAQO\nCYEn6fYndu/ECELCx9MEzTOFRblQzK5KmqgIWZOub1VwnTnemtlKFyfwrCMU\nlBzV77jpp60rYOONxspwuiqnC32ERNtN2Lw7RgdmVPk2pjdaGu3I0iWmEaxb\nfPbn\r\n=B2fA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFtkk9vzb9RIm/0NYh6a/8884tF/qmcFApNTp1AitJhrAiBLarJY7MVW62E2Xbg447UGe64h3+TGB3z9lVqzupQRqw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.6-next-1596725783-033db1aa.0_1596726207553_0.7440785375314078"},"_hasShrinkwrap":false},"1.45.6-next-1596743099-62c8478e.0":{"name":"@xdn/prefetch","version":"1.45.6-next-1596743099-62c8478e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.6-next-1596743099-62c8478e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xqop4d9iMaWtBL15OfBTDdbv2sSou2zekmGcVFus06S539aESk71HqsTOWfiOOEPdlHn5P24aYRN5e+VFVD9Nw==","shasum":"1fbb0470c00ea3e1f87ffba318c57cc603f0bb92","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.6-next-1596743099-62c8478e.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLF/tCRA9TVsSAnZWagAAm20P/iEm5kphckarUAtHMMtT\nYpjOZjIxK2w6on3dO2TuujU/LySzRbQsUDSRflRZ1xnazcoPuN9qVA0fWHKR\n+kYYg5dv7mlOt5R4CtAiCSlMkHjkgTd2HLe4vgFS8nTnEWUSXAZDYPtHBRP7\nLyAeFFIIMn7li/M4S+Y4umxh+G6mZ5H8/KLd3eDVkdHOdKYG21V92Mz2q8LC\nnA1jCDFB13i39COS1sbYdRb32fO911AB3Nqy52k9XkzgnhnViWWFrcIydnKo\nAzR4ZXnxqPnt/EWZjfgO7mfNwJOs0g+o0uwOAyPpl6KrlQRgVHl+iJy0k77l\nP24AIZ1aQ2i48OMkCKmukvX7WmWJ8zX3fjL/Dwd4BRwqGHwfMStyCp1dwxp5\nAVy8ZeZdISgl5H/am9f5crQKaB3hdsGY9OWuWwkfNA6KVpJV+yXvK9Qr+50y\nq9X5BC/EXtxb+gFjZveceEbsP6frb08Uje4Ni0+xUDkHXKrK8twzxy8BGG/D\n7Szm/n0EHFZl4491fIhe9iRfTLyVm2nGWuNjxv+ktY9z7Evvkcx/K5kLIRnp\n5HxsM14fqV3MHPFh1TjnEd76YovyUiu+2gM1mahaEdt/qBSQbDv3J0xPZYrq\nZXdXO1Sh19RZ1rSOJ76LEVTbnJ7Qqu1KlcLU6r37dof/ilpPKoivg7Fw/eQU\nA52K\r\n=Vghr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeKg6mmonsLDtVxFWrRtoYjDsWtbjUW7k9XT24xq0B7gIhAJ5wCP+69Cpxjf2kkwga5tGfXNik32thh3dOeMVvxX+H"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.6-next-1596743099-62c8478e.0_1596743660655_0.4147709359583234"},"_hasShrinkwrap":false},"2.0.1-next-1596745561-e221242d.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1596745561-e221242d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","@xdn/core":"^2.0.1-next-1596745561-e221242d.0","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1596745561-e221242d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EX2v21gE2j+2cA836ADorp4zF2kSJ0sjiICKhpwoHqDUPUz6nQecs8kSWXdSf6dKbPEhrCGsFdQlMr5SVF0VCQ==","shasum":"806960f8fd908ee374ea2c8f5a5714dd7e5edb47","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1596745561-e221242d.0.tgz","fileCount":56,"unpackedSize":103160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLGemCRA9TVsSAnZWagAA+7QP/ijg4O66TJutRL2oAtQx\nktwCA6C/6kn0NNGlHKZPx+qcbsUda2ZqWuQCjB38OFknVFVqWUR5Z9dxzqGq\nE5jfbipmlyVqNJc6LPAbuWzhhfcI6GCk6acpP+O6qJ/8AN/e2KvAK2C1MC7h\nv93d1QoncGW1Rax1D+UaiB6HZFAuFHzmToNeeb5vgB2NYi0C91G+1iN2AIOB\nimEQBcsh6JJMmePFlHTckld4M9QeHkLEPGBkSTzpUlI6AeliErFTl19OqWaU\nShItIFxe6gg/7qqbaECh4UIhy76JftF27Aka7Dnstbwk9IsTeiGp89akMxTJ\nFn7OUBKTFldw+xzRIgjlGOxBqYNVMGmfBWgm7uN3FsOa52vFeETbKuAMa2+g\n2MUuMrlRWhsoLjQQFtt3+WO06Z1uo5K5glsmxdsiTuApTSWIo9q32iOePEdd\n4npwc14NLKznT4ZTmr7qfllK6i89m3363isfVCt+rWeUv2nqyM0oANuHu1Gx\n/NYu//CatYuvUW2zLAFfPoI9kqkHAXyzckx0YR7byjstef3Gl0hjh/jy7faD\nQNEiQ72xC9xscXTxstO94mst4BAUPsFfIXmkPahrUU5TpjoaqKuotr9ZqQr+\nGJrjxfF5pQ1EM2UADSCRMKrnx6ZPSUTxHC/sLb7L1b67DSQJoEVHW9GjMxaf\nxegz\r\n=C91y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICTnqimUwMpTVbtHMH2KVz2su+LryxaXN+RZfvLWzUd8AiEAqHQs3xX/56ZvP5YJrAswAGlYlyGC6H6q/DgrRTx24QY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1596745561-e221242d.0_1596745637970_0.680535032290134"},"_hasShrinkwrap":false},"1.45.6-next-1596752649-5a32328f.0":{"name":"@xdn/prefetch","version":"1.45.6-next-1596752649-5a32328f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.6-next-1596752649-5a32328f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t1vfkmsZ1Od8v4MaXFhx/2OzvToxbbcfCW08fC8mNmLqOqQ4Jzp2vhHvaiZ2GA30hrt0UKwJZLvf3JoNH78qJw==","shasum":"1e678f5b548505777c8e033c8c1c58754326b7de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.6-next-1596752649-5a32328f.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLIU9CRA9TVsSAnZWagAAq3AP/jzfpd/Bsxy+iuYNq0Fg\nM9M3xe3cUZaWiIcuntIoxV/fdj2OhlNV2qcTg6zlTCWr1Ln0hxFSGZOc1ORj\nOpFhBPQFK4HEkRTrmSbSP+5zSLvuax86XJfGPWKz1+gE/6t3Ezw81TLsf0Sb\nr3V+uWM12FPE0qJN+6f28MalTQ5/jBG33NHRjFuOM+dOizRq4/+RJvtNBuRy\nazKkpJgS4FryytzlmbmHmMmf9h0Z/8M88EgoUWCGp8JNLDtBZN+xPl0TsISN\nnWng/SSqXR4l7juB9+dd46o2tEXtEaS3YduA/K8o5N5ODiNxRByFuGFDmUe/\n2D5ygEZ97ZJ3i/Zlr+QsmkZy8Em7VSfTEQV2XtlBJ/JMGqb6i6899+x01djI\nMYNq1BVAgnVCSiqep0AvizHeBpiWt+cOOYFtSorJW/BlLpS/rZ3lKRJfNSQV\nyfX4hpNB6be0Q0xWyrkwpdl0E4AUCk2qFx6xhL0PeN11qSkTQ5AmB3XYkrq9\nnHwyLOE9ymhvKljepFOjSCsqId742WXYcp1faYh8NBUY+Yuim0yv7Skf6FSu\nMN5mL/ahnyUpebbm8KrIo/V75zd2fffsxwdXaZWTEAFsZrayDBDNzwBt8jEn\net/roROjhfIy75x8FzZHk0sYV/Px/R00eX64yDM9mdF7YpUKBhrTLumZB43t\nFdh2\r\n=kDZO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnYsyGiS8JwC4QnUDt/kYBvpejfAXXnjCHpu9sxs+QEwIhAJKIbD+XmBsP+jp665m/0sVb8Dx6yYPZQfoYSQqT0JGV"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.6-next-1596752649-5a32328f.0_1596753212656_0.8914286138845744"},"_hasShrinkwrap":false},"1.45.6-next-1596766432-a38c1cb8.0":{"name":"@xdn/prefetch","version":"1.45.6-next-1596766432-a38c1cb8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.6-next-1596766432-a38c1cb8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SoywdkBeCg7aF6+bfLtFnbNPT32DXHc9wezwVTibWTmQSbYXvr/anhaL94ja/tS+qL5y69jCXhLoDqWVPwF6Tw==","shasum":"fc9bede4138c09413768d287b522c7f132997fcf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.6-next-1596766432-a38c1cb8.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLLqWCRA9TVsSAnZWagAAJBQP/ihbH3T7VFfcKobxTvbF\nQHnq776otT8W5unPaPyIs6P1KZ6J5ADkasfnX2x4wVgkJZW2fofWwWrBo9s5\nhiPd03k0etMTo/Gy7pfr67FoznDjxK/5lWgvM+dkV5viu8GWxUxCIp5bhKIn\nqZh+7DXalOhdgFIWCQU74WXcQah+MfHDBNMtc2yfeHnInagYOEW7mcSp3zbi\nFkIJ7I5BJU6PqaMA4VUGXbPkXVWQQVgVsYRJYUc0XKsn5vMUh8BsOaMuOTNb\n4v3Y22oI10+iGXkn/sG0KeNrUQ5wjJql6aZvaBLG/hfbUjZAUM7QEvY6LPJk\nIlJR6xNzYtZPfTHitxJE4iGxBkq2AZZ4R2bGqQLd3BURa0zhi3cKuv1RoV7U\nrCGpWGtKgf9KCurq22dIzdP73k2xJbBApJHlmBOxj4UJAzlnNWZOyvuQ+Aiu\ncQGRWgeV+u81xmt9rFA/Ms5dW4OnasMosvGVWyZdX47rntzMYJzLhao9sE8Q\nPGugJW89j9/+sc2wXE2znRL5U1qlgED5UyW2VW3mYaLfqownHYzny21X1bl4\nOfICZj9VcF1fV+VA5Yew7AMP8M/yvyOROYRkHHDBQSeaZw4pCBRIcPoU2o8D\nHjMg4jCoOrv8fiuH4/uxM5x4hVTjxH4FhuiyMK4pxRYfjPWrIKuWYrVu9dZj\ntfT7\r\n=+ePc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6HGFWwkw+rM+3QE/ImUsJcBeAmc7+JeqDawvvxzNZlQIhAMTimk86NQ2sS+dOQL1IehOuELMUZivaYBy39GXt0cfZ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.6-next-1596766432-a38c1cb8.0_1596766869799_0.4835773732220823"},"_hasShrinkwrap":false},"1.45.6-next-1596767211-1e9105eb.0":{"name":"@xdn/prefetch","version":"1.45.6-next-1596767211-1e9105eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.6-next-1596767211-1e9105eb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OVpEwuxZKnwubmrQuKZqP2ECppUJo6C6cxsaSExjDEMY+2FZ2gDclrgLt4lTHT8UHe9+uzJQl9ALgjjrcyO/Mg==","shasum":"f54b8cdf1863738bea6baa8c7296ea4767707afd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.6-next-1596767211-1e9105eb.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLL4gCRA9TVsSAnZWagAAIJIP/icctK2Vzx7OLLExAVpM\n9JVljzTKKV21DD+RGntO75mcMCP6j0FeaPE5W3m4FMJAOgerHBeth7vR5hBN\ngLD2/PdfipqLYsuEoyiS3zJc+p8TTre13B+IAZDug19Lo1FP0/rd7PNx++5p\n9jnwWWWa1mHOT+U2UwpfMHpISXr3Uw+kNelYOIM+8/yVF21YV0pH7R0FlOnC\nRO0YViBwUVFEqJCY8tg1ZiLrTPQTDIGduHJ8uozMS7Q37/hcoH9fd/JlMmGD\nTI5hn/nXEui8X8mdFMjuMYVgR0hpO46D5U3EMRcBxNj+wOTIs04FaHPtwmWa\nOcUuZCbol7Y6uOV3cCeAfSErgDZhB+zkcpN6ijHs0qQ0x/CfBNGMOfpd9mmz\nFDRnbnFzUf5A+7pzXTN1F85biR87nKTdbTtgyTPUVS/YXyoTu5ATjrjk370T\njIWZwbJYyeAs1WFlZCUGHE+zehWOo/iibAyFjWwTFFA67cDdLP94qwa4wUL1\neaR6q0o7Dumei2O1pFlqYaVX1pLu4wTJ2/xp7daAFBeMAPNn71FAjm6yifdy\nUgJMMye1XM1loMd6dMHdQ1FF+OGX+9XI8RYYpnKV9Y90CyBucEnzArstvxIv\nrijWsRPrMkQr/VrbiW5e0sqUOzl87MLmbMEggAcWayT27NtoiWY1S+DTa3EC\nsd3I\r\n=z6i9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF5ADGPe0OtBo2mRgNYzEUewVu67JxlFVbRvNAki1ZhuAiBFXKtgcvIuQIhEROrmMALiqygqCRIOtTeM2gN2z0tN6Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.6-next-1596767211-1e9105eb.0_1596767776149_0.3763579735110596"},"_hasShrinkwrap":false},"1.45.7-next-1596768253-00276882.0":{"name":"@xdn/prefetch","version":"1.45.7-next-1596768253-00276882.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.7-next-1596768253-00276882.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RmzmHMrljqtmuH6mRQa5TD50NzPEMYOcfk17AsP0ty5jnS1eohSsG8MvTCencBb4OdKDkGezSvaWXOX9KK7bhw==","shasum":"fad8bea662e138153d4b871a57d8b512bb7ad624","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.7-next-1596768253-00276882.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLMI7CRA9TVsSAnZWagAAdEkP/jIRDmwl0ZjZTZrZ9WXG\n4WIUpTvljOdTcGdBnIf/LCOo/P0dEvtoiNOtFjSz04KFgYU+oSHNWJE5+bcT\np5gqraa9047io5cXVf2sIaLmf/3CnIPZUtInh5MWbQXwAZOzz8ew1agIvlwf\n9yn5Yut/aRLkj9wjQEZ7OEduT/QUG9VyuRLLtwz1cI7brTOUxDvrbM9S3vNr\nWArCIG6QyUq1a6CZum9LwNYB7oUHsFMTbdj76abAv9U9pEt1wIgZKJvPi9oP\n+NB74QoVTEZYzw4d8n2ZqjgcAu/TIPGb17ZxuxeukyK+gZvOuQIWWUIcFacD\nVqKZn3B4T3Y7H8cyj//m8r5XSCvohF10VUt6s4hsdTpFcqgI7g6hRwfWuJ50\nsvPqOEwCjVq77A0DJDoz3yZLYy+Zs3sv6cHhG9vLKCLw6CSdQuRmslELwgSk\n9UguuRgzJySldFTAyRuRCtQNYI7WTtozsEzZiKxfI5u+f43OuAGI/Fncx/96\njanr+UZsS6vy+VOkUnbxlEnAjYytf47MFRKdWe7SFZiVC32NPk5RiNlNEshH\n47hWDBFqCUWKJbnro1c1bmerDbQKRePZlsZKLrJ68uKMvx4llNs2ssVuFXH9\nyljQWMqa/sTo5bxMtngubmOcL7q/jQeu3UnIA99JZm5topjmMt9i4JxT/Q9j\n/rlU\r\n=UAON\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOfQHy0PKpVru6xUJiLV833fKK+4k424SXAUrdTsh3QAIhALrI0dMsgYP/U8sHblt9ofKX5w7EiMO2BM54wypwfodh"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.7-next-1596768253-00276882.0_1596768826755_0.9680428165574948"},"_hasShrinkwrap":false},"1.45.8-next-1596771421-46f425a3.0":{"name":"@xdn/prefetch","version":"1.45.8-next-1596771421-46f425a3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.45.8-next-1596771421-46f425a3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-fs11mIggaEeUBqOhFMOES9+oa/SbtHzOD8UJZNhuUM1CSRZqooY1Wz0vPVk3MhzRyyL3m/Zpdr/kUve9NJNafw==","shasum":"06b397da14a50bee7a5c76b0ac3cafad0fcce3e6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.8-next-1596771421-46f425a3.0.tgz","fileCount":52,"unpackedSize":83382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLM6bCRA9TVsSAnZWagAArdwP/ieOSU8siWy3HnZ/fivN\n95jYxSkZKvZzJqXG3Yy6tQur1VWjcBkiZZBXImLfCxTQatlZQ7I3UZ2gMBrs\nS0q67fy/R3C5Xdo3uFDTmjqK5RM/vfzxqgTpQr8yd7260BjWlENh6cC6dnj5\nR9wsPbtyqLArZQceLnAyeDDAtlL17XZdodHEogMOYItxS/6XBWedVt0zmXkv\nJiKPIp8GI5PgjbPJTzGjwa68rUgcDRGqCIaJMbusVcDT7nAwY6YAp7HkCzT5\n5R1DKLBVsqMdQv3IE1iM8M5VUGNdpDnfF4MHwtnNJW4UaPw+E2iUkhVz89Yc\nGeVtnr4TnXwcWEqGDkRHWvqxLY8HANGkhpC3K0bmTDQT9bi2ITY56OwG/DUY\nTjo0Cig2r4mAvba/VZB6UUPKRPYuEOClT32b+QNwPXjv4jXQPJ0fMFteOZxJ\nt6eLlelTdt6S6AR5OgzpnkQkjhevDMeCN8alep7nSQNW+PWh4/w8bNT5G3xu\nexurZG2FDAuqklpau18Jtnm/0vE63N+Q92Ip9TbNo7BkFEG+xD21txN1a4j/\nvx1tvLTACugBnPd61/Btz32d146eyN+P7rRnt3mFoiHd52Q47mgNZ0pOK6fS\ns+nIy35cpstlbZPO50HgAVrDYBI9nybQn8oXZCuQc8Nx4ZftF2j/PCiABC0v\nxioA\r\n=l+Mg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+iRnd4oE753LIsSdN4AAc5/Vm8ouTax/oT0qchIwNKwIgUjTZAKVy1UYJbzTRS+QM7VkrIqlVrAZK2n7MhbJ52Vw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.8-next-1596771421-46f425a3.0_1596771994957_0.002575316556848284"},"_hasShrinkwrap":false},"1.45.10":{"name":"@xdn/prefetch","version":"1.45.10","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.45.10","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GblNo4c2S2lneuAwI9sDSiIeOihCKi2KZ5lknxVd/Rko5HKfyknGZfJjNER/O0bgvPZVL7pzfz1ELMIkn/nOmA==","shasum":"709c0234c5860ec2d979b0d8ca4e2657c5c0a3a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.45.10.tgz","fileCount":52,"unpackedSize":83356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLNk1CRA9TVsSAnZWagAA9NAP/3MliQSLvFcZfHsjT0HV\nxkuWzyh2VZGIsvvFZxGwOhrve8Gah4s+9nnKAM/5PBXQ4CdexU9brnSByP1t\nJK5Lg8uQRUPNm7mySCvE7RvrMUvLotWlVCPGuQmlo0Bx67G2Ky6TwwcaZfbb\nERF9UHL02h+cjdY3v7FouW/UwG+nGb3LvD6Anci/ijx9SRVYuPV0hHlaAkwg\nHCwKlWK9qfOEh1kRsfumt6gn2ZOGZa64edGN2dguUn8xb8GdHthUra2WilL/\nUnfjH8bI5WRfGbM2GTGFtIJWNQpHnvYVMTjF7XbE6iH91QkbKuB+ubujJtd1\nuGajZcSxN070UCEwtAN5OtCcNKLtHuU+/JB/QTEfYCrflYQ4SlghVrwDGwdZ\naBvFclZ3JDACRvTsVIVyUI/Z6NtYwPlS8M9S63Z5dv75TIsU2VgMZRJOY+92\nV9WNGRqCRvT08HePd0ocCIN/oz1NKX9kQAlqL7qlua6Yzb+iDYku/9NC152V\nnYQPDc5K9qdNQAM7usjvpcMWHUT5bAuBjLl6m2qL9mILKjH6O2Mijh9Xs712\nRBRTFjrgDcOGI/a7uq7OKyacJpuCGfF8PRKJvSojnHI8HqUvG7tnhkEJR290\nv7qpiqAioW9/xpoLm5v4TlCMDxMSM91zMkNtMBcHLt5tNOOo/7Fay8BQkwDr\nql62\r\n=gM18\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIeVIXXnVnvBYZBqtwMMNbCNSrDh9VA6OqfNToyy+jfAIhAIvHL8c/SAlFIuuYB9wHq+K7xU9jp7dM3HyT6tvo7baE"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.45.10_1596774709117_0.480478402957329"},"_hasShrinkwrap":false},"1.46.0":{"name":"@xdn/prefetch","version":"1.46.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.46.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ftsxc54xUFt9U2lI7AcX3JZVd3nIO/AU0kByfiCnAoAibsUA5roghlr8LGo9ph2TvqMA+lyYjv9cKiRYDoP+cg==","shasum":"a8e56b48e2468c8f11287aa3253daeca6410040b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.46.0.tgz","fileCount":52,"unpackedSize":83523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLVXACRA9TVsSAnZWagAAKRkP/R2uUJYYtOlFa2/jNpzA\n5y6mnA0RpMAmVIcrTi49hl3DIsJx//ithxvK01ciil4PTgbW3O5IglwNfy9P\nfWq1jzPlgIyGhAbmKFoDRSIWGn7KeGkAq+spdkN8DkuFqoiQQCNaXybEGpeI\ncwdS3wMFFoxfEfRsTIQZNyzI1ju+O7WaruQcP2OSnOGSy08oz0SWaGkw/tpy\nOk3o0vqzn6BDs3NmRRAnB5vF4xoCFJl39bhW6YwhBvcsHrahUAOvh4oO6iOB\nUqdi0mkng9a5uBpXcHZkOJUUk5nspgSZ3YoLaL+0aLrsS4nAa8YVB7WRrDtk\nj6MT3DiqH1+Ut9nGPI+TBSU2zRA9P3nd+Japn161BnOht3CAsH1FR2KjhME5\ndkUe5bfLmxXyy+UUHJZzrRmZi+7lawI3feNj9M5WNM6rQAcXmyq+euGfFzqs\ncx8SOuYk8tUdC2tFFBVL2idijw6khvTJmmmGMxt3oPfI+IeTReDNyWHwLrRG\ne+gjgH2g42+4NaADsMpP9ySHQ9/3nxp70bZa74mE0fY+v4r89+TS2AU51hrR\nqoX7lQ5XOeV/RH+abwUzC3ErRZe+q5zISXQdGSoLee9pCcSgXbKcWmtSmJiC\nMmNz4ZUlExMnW9eVN+rcSaucnaiedeptndbJPwoJ7fE0FWZuQKtia+Dh/nsh\nl+P/\r\n=Y1AX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGURp52uNBr6Ia5MiMYf9Lt8bFoCGMnd/U4toEX26OSFAiEAg4Nc9uTRpC4Xh8ya/1s1aEeIntAu/LF8QhMWrjVkJWY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.46.0_1596806592276_0.44647666530180485"},"_hasShrinkwrap":false},"2.0.1-next-1596814201-63a1d1b8.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1596814201-63a1d1b8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","@xdn/core":"^2.0.1-next-1596814201-63a1d1b8.0","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1596814201-63a1d1b8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YLyA0stx8tvNPwUyJO1MrzOIaXhvXzGbmbnBVzZ7N8XN7HoHraYd/WYIbqykMYPpPC0GktPYQN0Tv5DONO8rtw==","shasum":"2c457f3608d00aac5234c4d7f933d0d0df2dfd30","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1596814201-63a1d1b8.0.tgz","fileCount":56,"unpackedSize":103160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLXPkCRA9TVsSAnZWagAAtGYP/0yH9hI4h5CZuXhL4DiQ\nOd3VA7euijsYnu4L4+Crh40cMNwRkfzDWE9GAWRy7a32DqwR/Dtgq77x954u\niCA8a6SgMgxUEYBvBPBiuJs7dMzMhNofhU7nRLpUoei8HfvPWIS7YFv87aZG\nOFKFyBSS6aBG91iMiJYsV03YF55oHP6NhDCru56/gxylvNbAfTdc2qIygNmy\nM4byHiCIOQBTeQfw7DJU++E9CHAR7hFthUr8PH+SfAr78kbMnbnJiZ26emWW\nMjoGDu/4STryUTCawKYHy5KcadFuYotlfuMM1Db5ZdakYv9okbjMBNdITgEu\nC0FQ8JIe4s6PGKGIwF7eoWxSM4TzWUKKegNzeb//T7DR3EoAeyV4QllXSl2p\nD1hAZEF+iGEvfmuzWHvdnjA7HGbfZB9/Cg1ivQ1UMWGAmsTth+sgqNMR0bue\ny1hbUplI4GnqEr3Tpx1QKhbb/ey/zNO9gohUH2T3MLi4sbGfj/c3OggihFQB\n0uqh/uQ5eid7fJ8fS7ujptvGaY7tAWcjra1wPs9w8fMFCSEy87NyKOX2fKIS\njTAKwdyqsseKAxvzBfDmS7o8j98PZ2VjsvylMhSL55DJzTTGPblcEApdE50g\nMYXuoafxu3IhZL6wVes9evuLebvITu2O3z7ng0TaCFkkUCPjjsanpXL4Cdb2\nFLh9\r\n=Lgvo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChj/voVuJ3HmAPGuXRGHEryM8EOdPR4Sz7UI4HrlBbcQIgSrxey9arSGrRCXsbCf1vUQMarpTBKc+cxQSJH8bcz7Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1596814201-63a1d1b8.0_1596814307702_0.7165851480308036"},"_hasShrinkwrap":false},"1.46.1-next-1597063734-6516962f.0":{"name":"@xdn/prefetch","version":"1.46.1-next-1597063734-6516962f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.46.1-next-1597063734-6516962f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Aj2w/C3ipkRLOku3Bxa1WCHTIBSP5h9Ln3YqOjb7rfWnENU1TOq6SnmWLYmcjwS15olX1r8rlf7wYFPy3kogkg==","shasum":"ba4de0c4d898042ab0f30febbe85016bf7b5c546","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.46.1-next-1597063734-6516962f.0.tgz","fileCount":52,"unpackedSize":83550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMUSCCRA9TVsSAnZWagAA984P/04rf5CLFikm/+lFAH9Q\nuGeHZGYkKGSHJ8a1gWaoPkMnZ4ng4Wo8s1X7ETJwQuNoIb4u30kM5sRxDymr\nX/Es+C8gkjGtQ/7e+yO6P6TT8u3sArxJBSorZYvSGzOwzvi26DE0D4uoCEA/\nIYrBXmQPn646jGxBz/Hdv2ZuNt2riItZMHELVRN4CJzhp7OAKcK6ZtD0fd/m\nhGjy2OEFNFaF9lCHSUuUOfh8eLgS2atGJFvB3Fv72VMVHuIDRQZgHlUQLxUL\nqM+tuqMu/jotLiwBH6P5CH5igL9NfYfD7kGJ3pnpj/c10hdNaf7NI30hWRbO\nedvC7m1981xhCfdJNYARXSeFq6DXcKiRHWH94SF7Rm150jWV4aCij/wTWP6T\nxT/qaIywC6mIJXJ86cS4BwtTjTYnQrnqoGZLK2l5YYn4dayx+7tMVLqvCvwh\nBKzYBPHDhaQs3BfEixrJdfhVg9GW/886FXHY8JJEO6e/LibDN8e46/w+BkaX\n0Mlp6UDeOUj/4PLlYfSz5iXG+9SUgTExYF4Fy7iAIK/jWheDdDUCo8OStXEt\nehRXBy+/DF2hCP0dRrMGG7ksO+VmJJtrK1k72hPmMddcFt+5dGmkm0MJVzeS\nuBqLalXpDgB/3adzHKlLRU8WCmegkX4Vsa2UgHsfeKTNiLpMe0nXNelCj4Gf\nGIHE\r\n=gQnC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEAhkAlP9f7/4XvPCo+H120TLryGMCaVKWeTKlmhC3F5AiBdMUaHSLhwjfNaaN9pv1sk7DO1HH2TBOAnwTT5Ta7fXQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.46.1-next-1597063734-6516962f.0_1597064322095_0.34258768310119825"},"_hasShrinkwrap":false},"2.0.1-next-1597144623-0347f39c.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597144623-0347f39c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597144623-0347f39c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597144623-0347f39c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1bEKpdodhwJV4zM6jsfHTw87nN7z3mtoLxH6oga4muZW3QI5McXxorAqnWUhxEuXlMRY6YT4cLsPzdh+ELgATw==","shasum":"425d85d6557adb2c5266e3d396be5d1f53a5dc4b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597144623-0347f39c.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMn7UCRA9TVsSAnZWagAAyTQQAIlH4zT6sATa5PzjF3Xg\nrEVmscQLLsKnsAId2FZREln5H6SrUVenkPITp4u42YkhjwJsb79mjA+wwHb6\n/XH2kk43no0vmL0tyATjbeFgQzYn9IxOklr9LYqtrM4CRu/9Qe7wTkVIMMXo\nqPgrSIOXtr7ki7XefxBqGqIxKMkOFL3oaLD4RaRgN2a77tozUMdV7s+hv6lu\nVRRPggstABzrod5VgvsG8zdayKWhGhrZgwIFiLnZ810rsvIKJQGEpsiAcWLe\nle4ybcm7wDIBPz1cOgryYd4hN149duYvK3DDIKySkXdUQBBQ0xEjCLDIDKVK\njiFxqV1CGveH7bovYF4euwV7pLdnl0xbsaG0A9uDoSVeuT4vGQok3D2bXyfX\n6NfJoRdg5+vg1DGhdlvfSzoTR1lg7K4QdZJyBCxIZcepv5s7viaIhKME2CUg\nbb6sI3REIxcNPPkkE7VpbAsFeyeHPOvvQb83iCJdzChJfI04VMwcGfeslZ2g\nu3j19ftWEdH1mU+9wEqKiwCAndFbTTcN6I1kAGf26+gxa0h3aPc8P9j4Uhf8\nYMy2d3vjksRrxYrIrKsgRwgDSGhjYcVBEuUZjYyblt2voHwDnc5xAlqdfEKQ\nViyCt0vvoyY0gbR46r77AZF1szyL4A4tyn6T/2KgqyrHrLMNxW7e1EV+HCRM\nHSfT\r\n=TZA0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDw/54qro/cF+FeEuJG/OHYQ3+i6bZHo9pLACmDHfLcTAIgFPnMcjI+QF0tY9uG00zcH0Pr14XzvBzY9X6G7YrQiAo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597144623-0347f39c.0_1597144788538_0.37064454891729404"},"_hasShrinkwrap":false},"2.0.1-next-1597146304-a4725a77.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597146304-a4725a77.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597146304-a4725a77.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597146304-a4725a77.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rM2q4fCH+Lerb0LA1VqZBp6M93+vsr/P/8Kv/oerOITUkzM9w/CaskllY6eIMuLvF2RE2VgNsJPXfIjI9SCnsQ==","shasum":"1c9f6b5c980be6cb820e158ec3d1071c17c54065","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597146304-a4725a77.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMoVjCRA9TVsSAnZWagAAbDEP/3iBNMX0UiWPLUvRhpSo\nB0fIfPW02UCh5208uyv6jMbK3kFZldPGb1xmayYRM0fbfSBLnyUbIjJIbePg\nypv5Z5ltsPSxDeu/zk9vZlejmkw3jwsn+zjeoeusUYon5HMnP9edKF/XXx9E\nuPnyn18d95UhmiN5fc0wLcCOt4R0IsV3ZeJuxOV+Mk7vag3D6Q7pjA+aLiR+\n28YoVAg5LA2DcL9HgzNhyQGA/XxBjR7HUC+n+92Vc0kprGIRjq+QSdxBvXtk\nZZoCqsfW8y+/SS/p26c2RcCdDzOtg55yGv4WZUQRJpHR07PzjwUJKSa5hBsI\nKAnqJMxHUeNqXCr7qxQVFS0ACUdq23LjEoDoZIa+UKt805RjcAGoyFAmCNuM\n+qoH36ujWHVY9IB5P9o6DTk9oVW9HNhmUZJMfCsnsh7BrJXXKiprf7tCs5jw\n+QkDXz5SRk1g0Wcg8Fl2MpqaMb0fEaNOEjoj0wL7jwIRsNlsfF6sC3wyWTAx\nhLYX9TjSbzgUFSFSoCBeX2TuyB9DSZI2iIvmLrdmspzvOuHo1DFXyFjNReBW\n1b49i4f25i5/ZVTlm/kXsJzaN+o9VY05eyIfFqA805DARR5Trwf4hNUUw7YY\nX3GWTnsmdyf7+IOSp4AGjuTh8R2Iy0vde+9OO2Nj6UmctOkEVKMpHdmHV7w3\nxbJb\r\n=RLQv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGVDALM7Eux4x5LDPtcKUTa3sElC5huhz3BiK0B4mxE7AiA1hJlZN3X/jeJ0iIyYNdNW1KUX/AzU1+4I4b7ggFwkpw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597146304-a4725a77.0_1597146467426_0.23242367645667894"},"_hasShrinkwrap":false},"2.0.1-next-1597155073-2ea4a7fa.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597155073-2ea4a7fa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597155073-2ea4a7fa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597155073-2ea4a7fa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-hDb+PkaHzGUxGp1pcrjDeFg9fevj2SoXtLKEBbnOeSqYW5UqDqJrUPkwqSNC2+qxsfzqwu03uWJMeVGVfcaojA==","shasum":"6b48fc8e9f851a058b179ed272ca73b818dc3ce4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597155073-2ea4a7fa.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMqejCRA9TVsSAnZWagAAjo8P/AlkOmPdaF8c3Dt5vJY1\nZjyioCcn+KWW7NEu4l/hRsGwoHDOuna7PqFaVk9EK17iqIfgDvwNcA0UGFK8\njTtIxuu1clfVZSkUuEyPG1Zr0kjVzBrrdo/eYVenJFjuzHgfaD0qcAaBNSrj\n2HZBMUs6GkrWbGplZSqdlQhC9SRCOGRmLGFgHSaoBSPgZqr6KxAzpHMt3xBL\nl/ROF9WFTLPK2k1GqitUo81r4hO6X8OZQKNFnpExKaeetpN/nQezUaqezPWf\npPQcRzFDJuowGifF+Zon5RhkJOixFKQkpUieIDDTZnKsEcwwKoJEOnijtfd0\np148IuDmowbzO2R7x6ofcjy9dlf8B2Qru0QELrCKmpyahfMhgGBP4h1jK7Xz\nMBmBjzflsINOyyNZatW78Z4LZNYu5dhvkjJet+20oo39SNt7zWrMab60VXb9\nTyxeQE27NFTIHASOnnYTAD3cL/+eZsIp5Fgba11qzf0vRdj/rz2LicJpeQN2\nJAsdO2+vr9GQatMlBccYiB7C3tER6n9sQ7PZjYWHCX7fQmy+877d7KtpZtYE\nfK8nFsb5e5/Zpt/IHaywB1OOLN5jdxH2AEhFE+VMYGq9qOgHHGiWGy5IDjes\nOwc69Obzs75TGichVfJHdsob2KSWPIVUnjEfYeIH7KT9hFIiBhKJBa+8ms81\nAThp\r\n=4oUh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH2KJaJbVZEjZ0Myf2XB8rA4qKsfr0rQhl9u7jw/37B9AiA8EVz6mb0pEEGWVZp8b+LQoOesdLmvk9vt673+/+Pk0Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597155073-2ea4a7fa.0_1597155235222_0.08957809559211705"},"_hasShrinkwrap":false},"1.46.1-next-1597168996-f927fbc5.0":{"name":"@xdn/prefetch","version":"1.46.1-next-1597168996-f927fbc5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.46.1-next-1597168996-f927fbc5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VbJD4IsMwCN9X9qVNxvPZG7R7Z7ryK4en0JsTMgzNd1I5WxIkqtTAM2WYogoiHYipsohbiAXiy5PX2MHeV9JZw==","shasum":"420d2923e82dfde81893bfcbf861dd6bc776ab4d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.46.1-next-1597168996-f927fbc5.0.tgz","fileCount":52,"unpackedSize":83550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMt+oCRA9TVsSAnZWagAAyhMQAITU5j2d8UOK6v4hm8ke\nWVmoYbQw5u7IDABigRSeR9HoISEjOnAGtdln8xcD3e29BrUUgdH4rifJRCvh\nCJ5+gZ4B+9KtlVlz+EXc8eIdggoCpdbdTHd8JAxU4BHxONPmrH/5O/fX89KT\nNY9Ly1Gd+VpyLepBmLdO4OISzt43hIXYt+eC8dqjT/dU1ftybNnDbd5my1CM\nMGfeAE8wOlrdmV55HZnkK87MmsXKIgM0mghpJWANDO32/6djZJjbQlPZ9XZR\nI80NcS1D0HsgGgyq19fXbVrB0hFb0cSH/5dZ27sQU1juc8XJ0JjzPXvwbGX1\npxFIEBi8eRR8P8szA+yb6kbdjW4QAYTT4Ktj26onBEf4eBZqYGL4GGa9QVAo\nBM41xRX8KZbJv/PuEa0CGKLme7/fjeqeOq3Xfdf/iLNaKwRsfOdcE1hEwCS6\nmzY+AIbcbwuNgzWfTBj6rGU7XkEWV47hdJ+n7m4hkcVmzYuceKVXYuDPzr2d\nrvf6kncOQCIRCMwjuMXz7oI1++a55C2QYoHrXxoAktPqAEjUNSn00dL087wb\nJwgof6O1VWKqkizam4WV+6OKMLJLFF7svQc68l8IaNDGUB3jIah1hyfl1bOQ\nG+TOyzB9RMPkYar8yPIDzQox97jua9MIiBDfxZHH9mAbHcsX3cbAUMHf6JOe\n3X+Y\r\n=/PHO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGHvvu1722pY1iGFp6tvn/d3dzedxTztfCIq3PEcmH0AiEArbBJwStrk1oXDulNYi26pHkw9YORItjuWKQRyZiCAq4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.46.1-next-1597168996-f927fbc5.0_1597169576156_0.3089075899152329"},"_hasShrinkwrap":false},"1.46.1-next-1597171954-a18e0f15.0":{"name":"@xdn/prefetch","version":"1.46.1-next-1597171954-a18e0f15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.46.1-next-1597171954-a18e0f15.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-L1La801b3GszWM+BNSPBdikAetvfwWX6lDCKxfRtB6mejokQftLDstkjdxTJxpeGUVULxXQY34TQwKJ2EqHNXA==","shasum":"551d806524d2342882575ec4c2501f4d879a4a3c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.46.1-next-1597171954-a18e0f15.0.tgz","fileCount":52,"unpackedSize":83550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMusoCRA9TVsSAnZWagAAF5AQAJznLx8hGT9x0NIa7mHy\nKDbbgMqmCPAp5qOKIxAHqA887MGIbQRgEMY0XytTCELIYRRBK80lC7Nr/Up0\nanrXhQC2Zd8ceqlFIlL2O6AJePlVFSgsNA4zw77OktSHk6j5F4fMfQiSE1oi\nAQx/bO2ZtC8q9CB7qtX8NAAxVKKZ7H4p3cp2MrLL/Gg+z54TTc3ukEm77tQW\n/mayuby9g6Pvy2YHQ9amJuhIr2Y2t3zYveRVCH7T6u754HrcLpn45dtuEplj\neClxez1G4tS1FZAyh/BtFaBOyAmDlcZkZqUeT35B7ci7Yr/yLj92kOXFdW44\nj1HoKAQ546MsnkCzi8XipzGVHgvQDbLiibxoAnvUiYZxLOuhYflN1opZ94RY\ntL51JuPu8tmfFqddTFAqgf3MyYJ7IYOqaFsZyDEruvc13EhkVre7zRbGoOf7\nvQ5guoJnWlg6CzSLT3eaZNF8crJ2FddKlUV5AWKpBgYCJC1iEulKwrkiiXVY\nRVy2r3bHkYFeTPwwB1f0iA0ozPDwbY7GBJ/tE6jwOfB7F/g3D8GMbezMaN9R\n/T+yAwm6yu6IHRtnPVVrQHqhrIiI1PRVqA9Gm6ZAl6uBFdJjQUMlY1/8ep7S\nbPjT7GThmGf/3TSYYrm05gkwNaA9Y8y5qGBvEvIknGMFH3QOqIcpLWWIP1LY\nVHz+\r\n=HiMC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCI8izpNxQ0tLzQtOmno6GZGPmKkzrG7rUgWpj0ynHRxAIhAOJ9KIFRolPBzY1vw25BBPcxsnVb84BJXulcVj6LX7l6"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.46.1-next-1597171954-a18e0f15.0_1597172519553_0.6391098855013022"},"_hasShrinkwrap":false},"1.46.2-next-1597199939-9dfc4335.0":{"name":"@xdn/prefetch","version":"1.46.2-next-1597199939-9dfc4335.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.46.2-next-1597199939-9dfc4335.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LIOQzbwLd7k3KPjLNyVVVy3Bz0ZmJbWAuE+FyVKDEWMA8+NU0RSlx29+PcHbrw99m2KxHJP4wLdaErNlOQSufw==","shasum":"c9434eb91ac6c51c2de8f9b93984e66c679d1711","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.46.2-next-1597199939-9dfc4335.0.tgz","fileCount":52,"unpackedSize":83550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM1iBCRA9TVsSAnZWagAAK5UQAKM4P2NwjGm3AMKVb0hw\nSUthobtoiDYPrJnghAL6IkdCY2OJjfbgZnQ3OjtMrr0M7I2LULTW3ojq+9Oc\nmOKXd7P4Phm/s2YDUYiD8NKNJ9yUDPzyzBK2qAobb7UodN3kWoY/Ru14r2KG\nyPCQocVBxs+Cjz46oSSw5ZcAi1qeREsYqFquGNBEZ0kPt/KbdMrNFKMlW0bg\niZyHGgs4Ox8meetiblHoRWWx54swDBfm89oX/tYmKxuzyOAvgAoAwLZvwnqA\nEMtKuZxkh4kH0Gqh9WuI/xStarre4rpDjAfBk7CPCewkjmTqtNo8WwYZVgH1\nLZQcw5IskuMy1MnhG0bXv6M6VmwSDl25cX6+2VkJT2iMXzOvBXd0sCKpZarZ\nQKM0AL5tzW0mtoLaylzs23eVHfqriadBXS2d0Ec6XXpFn5X6ORyWAGN9cPCP\n82LRNMXCS4/LY5bQPjv9PDfm19/1ektWgZsAYfAJD8+B/0duwVz9KriYlw32\nM/XTHT/XeLJU0jxOpstI5uOrkrEjdDWuiedNkfXKBfHm7EAxvJFTXcVgzEjZ\nx7ZbpqoTCVWVnW5QHjKzefp4zApJzbRE3IAtCrji1LsyS9cLyiB2sWcbfkdX\n5wLoOR+agN7mSaoEgs6TwOFEYlgDCnG0LFf/vQ3J6iUjwntDgY7b7grNciR3\nDvcV\r\n=1eh+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBuZqwjVUFKuCVh1u8T2uRrSzx6dBo1AHFjpEzEvxOF8AiAlqeA6VNyiU+BA2//HjL2xigqPybXtr1pYjYbAQbOXiQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.46.2-next-1597199939-9dfc4335.0_1597200513164_0.0604133031513554"},"_hasShrinkwrap":false},"1.46.1":{"name":"@xdn/prefetch","version":"1.46.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.46.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9DaQrndjqDN23XDaeO+HUP+IXjJYR8ASJGFzS/QFZvJGbOr7I8wRVSp9x8WDmRJPVx+jutWDhpjrBOdaUiNtyA==","shasum":"fc114987eff192f54e933e3c35f3f094e8502adf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.46.1.tgz","fileCount":52,"unpackedSize":83523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM1zACRA9TVsSAnZWagAAveEP/RrBXJzL03+5wkZWVaFA\nsyx9n06WsoZTLRX22pUh4rzPFNzdamoOB5O/rn4gfWRCl3gQaj6xiPGJVD/b\ny9Le3ZFBqylGLLhd+UqPszjVJQ/4cvTw8ihcik2MhKfZZXiH+qp6zkYTcq8o\nHJWrtCXywmJ+RPE1vCQFiSbYxku32sabVe6CxVvvzoA/Na/Jwed189chf9v9\nuw6yLV6CRUIq+Z7cmT/ytA2qQqyxatL9e7ABWEizUxBt2WfE+VBb5oEX5Vm1\nZLAcZX7ZsmQqskENIsFERs9I4xLMM6yAdUQy7cFYnuqBSHL9kVRMKRv9dOUf\n6DsSbNAO1JzrpZ54rfj4l69mLTiOMyU/X6uvzT0pz0jR8Ghq6Fgp5ngOWwlS\nYY0whCyqvUBmbNNRgQ9hK8gfb5Rid+vCD3GWIM/kD3hCpYmzzUJmYAxhpfhb\n4WIpGjdE1kBUlb2L+mtnluLFq/dtn0xUnVLpPMUdi8ON48ag+FHNifSbLrU0\nfKKuwu5QyaKjIoVcOMunwFtgDHQzdzPEj9G1DTs2Q9z4Zze4+3iiVtMPTWM7\nFU1nnSRVxAlDTzD83kEJN2Gb1paJVdNs1v02LotGjPWNBDmMuFtTC8ZCxy7R\nntqgCmTR9Z0MD/osxTKUOzfMiDg8tD2eqY5NUNKkh4y0LaZkOtbXxrzeGm6o\nJIDM\r\n=Fshz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCq+taqonEBbJIHtMAbVG1lDCuFlifFXMOdvjVoQF9MMgIhAJ/bIbSmq7RCYCd5tXZ6UjAqj+9N3Qslhe3mpHgdzPlp"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.46.1_1597201600343_0.9411958013537922"},"_hasShrinkwrap":false},"2.0.1-next-1597201691-4d17dedc.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597201691-4d17dedc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597201691-4d17dedc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597201691-4d17dedc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4pVqnUBdkFYLVubtsc5+elLtqav5sK2m2rHTphNaOl5fyLRpzIE4tkM11s9Lf0EjQDH780Fu21ZIqjil8hpWTw==","shasum":"d79bf6b7b56a7ef3f7e850289691f7a8ea9d2600","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597201691-4d17dedc.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM12mCRA9TVsSAnZWagAAw60P/AmuqjyPmibtU0fCFq4Q\nV+qUuWrlvm0mTg4TjyINQ6F2GmE/2WLe0ZmyHVm5LZ4FA2aiqYqOWL7x0OTZ\n1DSsu7FzB9yVi3TXq2BcDE08hwuBTVRTg1LIYoe0p+jDREx3wkxLvRvZsjDS\nT9MKDNcKZsxsULZEFl8zyw83dQJQapWP2v7QN72bW+HSmxxYSDTlwq/yR0lv\nYFedgM6aScQPDR+5VlO6h0IjIlnjduMar27ztA+AI4oaAG92vcDeO0jJZOBG\nbgQebGfrS/OZF9qdd6YjQysIfbf1VIpTy595xcA2szdbQ5NDheqIgxGFQjtp\nqD4Gws7BVn9Ere8NkM+ZEa2pHTv7opJsU7CGGO2R+rFZwYs67pF42nTdcr1q\njbxMei3lHr8AAT/qb3sLR2fknJWhhEhqxLwWCN9DCyhOz58rmTPSvewsa3gJ\nvLwQcRX5/tKR2vQ837l2fMOTn7mglpzpfPDsnlpFa02RIhTA0kXfn1iKBqIb\naa5aw6pg2JABpaBLzrUuOPG0CFAJyzLQ1fH9EiNHlIMTArYqlUibC9mnl4RP\nGPlpiXjEckBdzz+eiXANPOfno/v51bXRfMxLzIOmTRcYVmgiSv1ZLBCBj61R\nGWLNz6IczjNXLyVSkmkggLbfrNB0oHlfMfRHHCM4w9S+3O7SyMMzm01n4kPD\n1c/4\r\n=fb6U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGYKHilNH9vEWAFiS8BWvLQBJMLKmXlFhL0LQwiUmxN/AiAgP3TPborFA7LOiGQt5Qq1QV7dSqQBXSIiSLdNa5UbHw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597201691-4d17dedc.0_1597201829633_0.09400255502778032"},"_hasShrinkwrap":false},"2.0.1-next-1597223939-7c1ae720.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597223939-7c1ae720.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597223939-7c1ae720.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597223939-7c1ae720.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AbJF10Y1YrmtAbSaTWCVaud+FL513qmN30NSt63WyZygd45S2m8vbajno+IogTkRn6uc2UHD+Ik7Cgi0uIYkSw==","shasum":"2fa3b46c13d31585415a5585b50d23f7fa006cba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597223939-7c1ae720.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM7SMCRA9TVsSAnZWagAABIUQAIEDYUOUUqJiwc8Tp3IF\neAdOJxZkTzhP6FdKQsoyZ2V4uclGc5Qzrt038syE36fvfWz7Y7aFmL8pKbz0\neZxCayspxU87j2kNnaSPU7gySh3y27KugG6VazJPbSasbmirW7f+B50X3lTU\nDbLNDzWqZUrZxFB8+Va9APVfsOqaWooRxoDTLIqFSvvbCJWGnEu13bqA5992\n2pUT0OpVl/XaGai8Vw52emhomKZA9BCMTFAU+Qj/hYsCkH58I3R8tP95gPt6\neyi6/1Cqu8mNcTZy0fZ2U6o1IbzpMmxBM/iz7XkaMt4TeSsnAFlDI4fdtpwN\n5ZZzk3BJO8ERjfPQzUPn9vV6ABfueP6ScdM2O246qDRUUzGInuBVE12kMbyi\nkGSK6nwUiqyd/7p0LJBh2zsyP7spgmd/QAk4lRHmMHYquSMToaIyxb6IxFqs\nRLSBCR+Fyds7c3S3soLpd2+OLfnvatBeEFDWoDbH3WvBigSV6xyL3KWnpayN\n21wele32UCRpNRBDk0Aq3wj4ObEmISZgzMgzza+WkaPIm/K2nn/3g6RX3T1h\nO/Ry/hIZ4SF1BqdMVfTvwOd27jHehKLRdMhIGkfRzT0Cp49k20WBkPaf8/Cp\nF9TrlntFUKVtOw0IlZhAuxFZoAM3r024T5piHm4RdCh2CHZiz15krxzOgK3D\nug+W\r\n=a4OL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMvRoKjlNIv4isi+Y6HvlIh8OPq4bWEo7QTpvv4PhXzQIgGpS1Y8Jal+dJIvqU34tZJWjkJY8kN69QtQuZV6Rvn14="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597223939-7c1ae720.0_1597224076481_0.9126832685465822"},"_hasShrinkwrap":false},"2.0.1-next-1597229103-6312c2e4.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597229103-6312c2e4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597229103-6312c2e4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597229103-6312c2e4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/fc4yVma5TUeLRnBYmV1ts1czbDAMmNjWq0T9+OCspBFGcNYGgDmhL9p74GuzHhKDjBTMEA4Q/tIQ1EBuri8EA==","shasum":"44d9f12cdcd0c7b4472d9fa045ff9a79a73ad930","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597229103-6312c2e4.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM8i3CRA9TVsSAnZWagAAGFwP+wR1/sl7+4BKzgOshKR1\n98qwaeZCv3UsL7tW2zAnKYOLcI/bde3Nv/iC7QsBuBKtFkZA1319qeUz4Rpz\nChmhybWEMwgBTN38CH6hECnZhM1aUgSct2U4vGBSN0Ko3XqLzRmXXZGURT3v\n6UVScp29FQ/miHFebEITZ4GVghDaVPktgIsEBKEFCwom787nJibGYu4W5SPS\n2Fmk1zvFnjVu+af84Tq3gwHv1T78MP6vg2WtNSdsE7z/Hs4URbQnOfyOi3td\nRU/trCo1iMB4Os9kjPLKqyuBFKJ+MDZMjAE0ZbGwzC26l8JD1udz7/ESzb/R\n0IPldy3i0OuRdO3nZfsBlRFgJatvjtcnhwKpSbXwtf44Umu+Hy+D7w8KBTDo\ntz4u6TKRCSbC3Z/8UIAXsqhPxYr19s9aaX6Fz4s0SviSdWJ5tVsftKifGASl\nUS2IiWqWkXp2VbncHF5lH+R/rI1VLTsMJQeWJSmCODDAkoME4HK0C5ymufYp\nkpkA84l8+Irij3chGEsMMQbCGIlPtraId4mp5B97ZIIeQpfRqRA8Kcx+6LFP\nCYhxIwdUHYQtLCNmlhg8jCpENpVdUBQp6fOGSYKn0UOIgsGqFnMnHZnCW7vu\nXRwWJELS6Gm7qTVv4/SFCNlNtQtQAAatVNaBTDc0PH9UgAAiwdJdnRz0ibT4\n9p31\r\n=vEqb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeaV67jYxZiHeC8pqiToxzcPhOxRbO9sZBns9RnODt+gIhAKbESoqFRY1X/oPfa5bIyzCFC1cvJCGJGkTicBVUytKy"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597229103-6312c2e4.0_1597229238909_0.7912401057791936"},"_hasShrinkwrap":false},"2.0.1-next-1597231755-f760a25e.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597231755-f760a25e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597231755-f760a25e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597231755-f760a25e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GVZq9gKhgdIeO2aiX0NdhJ7B1aQJh2JChxPsknfbohMH7MhKAIjEGJaQFG8wsjT12EnInauHyX5t2vcDj8FlGA==","shasum":"7a1207c8fb8ac9b3dc17218ac11c2d39e1d683c1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597231755-f760a25e.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM9MqCRA9TVsSAnZWagAAz6kP/1yKzvqv+Z/dphHKJ/k1\nWaoboTLfc4i01gzB3SG+qQ/floDc0nn+yj473VM6Q+x9cUpkbtKi9vbwen1P\njhyYGs/oUm2kpkx1Hg5D0FQq5x4IlEHu1uSw3W2LlliHlABfmbJHLiKbYSxR\njix8mYTwVZ3qW3KbYJcA+yZmmD+tuKRWQRyx9ZPtHFsgc9nRSnzuoLTGpKbc\nmNLsXVvyuu+EJrohhJPtlpbx++eo9lL0v5m/v2te5l9jNmvUNEO9yjEGfeG5\nAJDPnkax7gDgOELFqlPQO81kBpJJTrNqQgYVQr1/UjaknfQnBVrQi+Wn1hIJ\nEYMCxloGipq2gPhzDxy7aXS3rclxd3YvZls4bmWLvmN3gPXhUB+SMx20B0oR\noc0Ub6axNTf5HDvfAiSTcp0yOSUDcWojjpTfH8fEwaEG2G6h7yESTTWz5Own\nasJMzDAVC/npsL4V+dZ5wfXErcpvqenmvsfXzZrWPWEKHxiMkV2W+OITL3r7\nlpCNCNl9Zd3ptI46WXRhLgD4mdNtzEhbqsEKzEHnTtTilFSldKZ08Mvm8B7z\nLb5wMDF39A7foLbT0It8/xcbnKFfjLH9za0EvxrnclOM+bTF2hreJyiY1Q0T\nviyFDFKhZvHuwPzmZ03Nt9rcq15reVCSwMXbfvUtMltGgfy45Ifqq879FtFX\npqPF\r\n=tYYL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID5Rd/sBp/BFMs5+18BJAUAQBRYNGvttwrakDwPyDzsRAiEAmrzuQDAXAdTcL+ayKeJXnRr0XjqKfXSomWe0leI33Rs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597231755-f760a25e.0_1597231913786_0.2630046689556189"},"_hasShrinkwrap":false},"2.0.1-next-1597232841-aa09393a.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597232841-aa09393a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597232841-aa09393a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597232841-aa09393a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XKBxhsF5oVo4usZEq97Ec/61tO9kV0NeV+zTVPPNBQEPTo59VpffJSiWMAz3lo216hzAOiW0tFt2vAO02Imq0g==","shasum":"1065c2dc33bdc5ad038dc21bd9653b7470726f20","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597232841-aa09393a.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM9dcCRA9TVsSAnZWagAAsLQQAKBV59XH1gi5L/wT/2Z8\nUZtYmNKbGb+BJBUm/SPsiEW7zvBhUAQzPErnNmIODajI4zxyGVST4MyEaAik\n5nKL3hgqi8mOwJ+/uxFw12six57zCLBYFZtMeZMEhB5afOlhaLkUgrvW/rLf\n9pmFdnh8NnwBoWxGw+prnJAPurfRmP2zbUOWw4D9bAbFKJ5q98seIAz9lu3d\nPudQngbEalsXCjn00Z/zwRqsT4zHHiOT4JggjwG65vq5BlhTQ56UyZWciih2\n0Zn0cQoygb92WCS4EcIbyg1QqksQi/TWMt+CoVhOiUFQ+euheYRHYDhiA7JA\nZy/cmIenFy+XJpM1Servai4zRnfbUFuFq0VMpFe0vcLELJBvGkds/CY+LcMd\n2Bnao++UVH7/4l97evEMUP0qc4sDjsVrOcQHFr0mwZgzce9SBA0D2eX8fK2m\nikoz/EFAlH018Ky97ODJbaL6bumSYrm78hnrpOvJl0GTacdOL99FRI4G73Co\nBDj3OuqHbbM0x7dWpxs2tNaLigMsNMKRpQZnDWGnmmn2scRI3xFT89X9qkjL\nLE+YA0+fRmk/Yx7krmwcgTotgVBu8d1H0Dh/D9JLs3KK/512nsBv6HgVJ0dI\nwV92cNYfvuXCswM4URYMBJnHJPB4exVEbDoEvwHeCPYcvPC3ciAHcNZF431i\nyQtN\r\n=pFU4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFOs3UC163zWp3bknwaBrYQVf1XQONTm08Ev7H1hyQ37AiBuiJBZpAXPy616jSdrd6OZYpHCzTnTh2eKxGkv0IYnkg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597232841-aa09393a.0_1597232987886_0.22956292651096666"},"_hasShrinkwrap":false},"2.0.1-next-1597232911-ea9d2963.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597232911-ea9d2963.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597232911-ea9d2963.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597232911-ea9d2963.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4C24HXU3gWqDQIp7ocb2manq9fWaIXOF3Q+X49SPOf66ud2PQLlYz+R6xZzR84MgtqrHX4Z+hsTeF5mItbXpZg==","shasum":"34b5919bb407e6cbf118a8df9c0bffe9505cc5e6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597232911-ea9d2963.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM9eXCRA9TVsSAnZWagAAuO8P/ApkiFHDfK3Uib1LxU0a\nHVO2fHtGQvZ1H/zNd0GcWlrHaXyiEDTCImZjj90epZukTFWdlyeVrN537/o/\n4sCyGNG2PQRXY8xtweWo6R1od7UPosHES5jSPx4qmRWqwLUfA5BrAy+iDpNf\nyJrHn0qUIBR1wYw3uTegy+gHU366gGP5jUu3mh7CjAbNn2Fg9BctQqNoY8c1\nEfkYPwNdrDCQA5aILA1Q0FhGP9fm7r21n2b3CIE4KDTSa/MwQRoSxGitr3iD\ngTLlCqCiaPq23Ecbe71T3BZUY/FCES9WrwTTVPMeLgco10XnEJzeKA0pim+i\nPd972LmEePyRJ7rj5ZAamu/Zz4KrSe9clU4yxlgOvM1P7qmxSIkRAEXHwopO\n4/2BQmbf1azGzK9RGbtzi4VkXPhi1D2Mojpe+9ZPOgkROL0C7mJiTZ8ltX7B\nJOHWLhPUup/8K+SZASCDEArH/P80KQ6QucmrcAfMZTK5+d+9fsH8F9SweYgC\nllihfiLemMUcEkJjAxybAQN639Xm45ZNovhhZyL7J19FdiBz4vh22jbXDpVM\noKpvtrqIruq9He8FtQXx2dKxuDiZyNsNPzTuu5io2+xZvREv2XGo6Q81vTsS\nshNp6OgYYic63AK9tFAipfbfZe+wjyoexklPJH2Y8xht21hZII6OHPyodUuM\nt632\r\n=KZWE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDBAAu1mAprTONnBKXD9iJH3DAiJVzfrFYp37bIS4RjGAiEA5SQT2HM8ahWI+izot1m5nqRXMUW5ZX4x7f4yBjFibcU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597232911-ea9d2963.0_1597233046843_0.35836656551761004"},"_hasShrinkwrap":false},"2.0.1-next-1597235074-ea9d2963.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597235074-ea9d2963.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597235074-ea9d2963.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597235074-ea9d2963.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9xPpoQLdh+NqvB5u2MV8PgZ3JBs7PtJiC1oTbghcU6MdP9yHhoUh23Xd1mT49uwAQH2twrN8wYmeOW0YKTyjoA==","shasum":"77ec355c5984ad3be9057593cad2491f8ad0f8cb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597235074-ea9d2963.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM+AhCRA9TVsSAnZWagAA4OEP/Rr/jNHr6pWAHC3j++pB\n7GWrx9fwHxQFGiurmKt0JxWkaYyjuf5cJ7IKWD8Vwm7ZAhSMCHmeECazW9xq\nK1pcoDurVt8uMu3Tn90Gcd6By706ocHIO/PxHV0KQ1JQHe7VtaiqGIfvH3JC\nOasI+B28CkDWZJjWPheO8w7+yD1jdvFzSDgs5BqQlvIDvKuxVzFBILhflcdO\nsmHTC4CNAjNzVKoRlGnoWx9JMahswAijVUnrX/0rxflDSlXo0OfnZT5E8f3d\nI6KdQyD7FY5B75DDFSNldpE/1EupfhVnBTPy9HzcgobwzHccrt43ERAthfCv\nvDwqg9KMAI4PRFTID/717BDJ+XT2Ddd8qTQZnRI53D1z4pjCLg69e222ZU5X\nhv4daDWJy65VZDuOrpg36X0Etp40NaIA+yNRfG0v9zdfl3gz7OYYofzP4ktk\nbG41NdbbQbdODHVseSrooy2G3BeqWHo29bs96RFewRCflG8VFex4DVocQzOV\nEOSTqhyZm/90c/yttwbexun1Fz04650U5kKdlWRRH5KBYwAJ6Bo2bjcU/TnN\niXwYsWR2CPPfomJGLUEOJB1W739AQnv3irRPqJI+nhTdSGAept2dOGkfbZKU\nOTR/ERJtOhbG/miqLgE/OhKzVvbWWWuuf+M4EnGt1SNdyH6o/q54aMTPzT6r\nsI51\r\n=7ABg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC4cxLd0rEyKw1faAxMV9FbVpukqxSFQrSWkMGPWb7efAiANVDx8rtEM5gXl4PhDyb+wkhrk+Rk2sxW0q2Ovcul8Cg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597235074-ea9d2963.0_1597235232703_0.07153801176633401"},"_hasShrinkwrap":false},"2.0.1-next-1597235917-23b1e88d.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597235917-23b1e88d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597235917-23b1e88d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597235917-23b1e88d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+NtYUj8d8+rwK09F4zzH905iEyjF10vc55RW86a3d4DdAbP2nxTxNWw3orE7l4Uas4DCdY3RTAg0L07wxtEtuQ==","shasum":"5b0bb51976556c9e5a24069483c551dc811cccc9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597235917-23b1e88d.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM+NOCRA9TVsSAnZWagAAofcP/j75hkL8AY2vsohnF7Ir\npDfJNCRss/PKas24hjKYDQYs3IG/EE0U0qOfE2PQnRJH5NN9O/8fg1jEsBAS\nYxl87ETdCVocCmE4uF6fSZPWgAdsjV0NLJHADLzP8EjhzeWfsXNJJniEhQrh\nOaTwiTEtOdhaoBNy7JEhA6YX3K3nVm4FL9dXVPqF+cUTfXEFsi3uwYoS7SVP\nd9OLx5FXZOv2hMfuDSXINnoJozd453/9nrUuvcRYA7mMWjPBBIKCRWiVUqpY\n0QkV/H6pUh2XBi3Vt3ztUtgNMm6JIS69TulkBCNTEamkkWtqWLmzCaOtOeSt\niJzCQppfI68hg2fMpLitBY62LMgTSkSQ+iqNgsCZvhtiMsN/g5YZHVqexOQA\nhCBjVtr3S5d+jjrk6n6T3Y8E7e3nzPVcXBBJPvZGO6N+B7YygnLrOuxGMwcT\nTqIapN5RFvoArRpwH5CHd12MaUJythCcuUnFFxoSttWJ/njSfYv1mQaAauEl\nB7hVlOuwWH6eIkaSRCFAykiHdCvFA8uYSYxxn3rDTSURGuaEWfXEHN8+7S34\nmDKcTpKjGfJgcsf/e85bKg1pZ+jDltbOQ3d/CKjbZqSWPBUp0Zve5bSTpWIl\n1ILpscL2aby58dPRVTrKxDmGEXhUvofrZ2FR+XtTpGbC44iBja/6oGcz+PHQ\nSYee\r\n=RhVs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDHCzp3htjL2P4n0rCaXGYKT5pvp03LFHLJJYVr1yx0wIgQILigIvduHRune/HzaEvr+q5DSSjClP0CZSEv6IIo94="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597235917-23b1e88d.0_1597236046084_0.6593420107325776"},"_hasShrinkwrap":false},"2.0.1-next-1597237166-8bba95b0.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597237166-8bba95b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597237166-8bba95b0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597237166-8bba95b0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SlewGX0rjvJj1uu3AaO9sHwN9X5fCTmnZOnnPx+ObyYkbmIL8MQgb0l542Ms3sWMqfhTDQRRV1q5BmtkA8UJ8w==","shasum":"775dc3d122dd6c9688855a0b2ccaa40923028b47","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597237166-8bba95b0.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM+hOCRA9TVsSAnZWagAAZzAQAJTNnIwTFmv3ozgzY6iP\nqG11xRLf2lJhTBSvieQ/4qYY3uxl4EKkf8A0u6mzUNzwiHj6jZDy1vypb6wD\nn3TvtFj7gwi0FEpj+F5lj1Kc0TjkqrTdBnrNjiMd/7ooiWX12cTYOA1mW4TV\nAlFHubjLwSEbwmV9/8DEmMk0iJS5mTcpG6CZtSlAiT0Wh3NcHyWmGtm1CFyJ\nw9WkKtyYowvhsItD22judukWIPH7r3alugNSHlGNhs9SBdkN0xtdK5H+Kf2j\nzgqYbzdeepKzkGcvwogFI1Jjd1hs8fvAmxv+0g8J4/GN5EUcyn3Fcahv0vob\nFACrIwRyYL84hutrHnuZOBEhSqdEOpAUhwBTVdZl3I3uItqBwJ3NU4u1BnLg\nephF2RpeShIUoAM5eVawlMh9OHpz034EugEIfYDtlLoN53b5O7iRGwTM2gtx\nDCKjAGQDoutW04AWkQW33uXJRPKhULunbiTzr5p1oGFrWwOUCd7xVRRM0QH+\nYdAr/d5EuBDmDyj1207L593kxWvH+DfTILn0jXAPC5+q1iRKK2P48v9RSFza\nhoeOBP1QbbQlr4OmS1RaCYUUuYLeXa7d0VuSjIrkJ8ZeHR2sM+F+/WwozNzI\nvfvH/DTAS5JA4u6HheyJ+qlDZTTRYgQoSC2Rs3Yslx3OFGFINzDEllMqWUJM\nl88v\r\n=9aXy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBQ5wuwE9umIy48o5tlBPzs7sb3+czDo4DHtKzAkMmmQAiEAsr0N+fAHJD4VNvBJ4SjW36vrb6YLqnkpwuJdj/HXU7I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597237166-8bba95b0.0_1597237326156_0.1911647571854107"},"_hasShrinkwrap":false},"2.0.1-next-1597238010-37a6ff5a.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597238010-37a6ff5a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597238010-37a6ff5a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597238010-37a6ff5a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Bhct3Kpb4MXGTXag3NETMIUeCMhhqqakXAzvDxPiwAc4eXyWcNoc9461BK4zpF3/CpNPkFfFfaVMxQDxDJkAKQ==","shasum":"7e0a08a360dbfc2f3ba65d0c4170db48899f81ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597238010-37a6ff5a.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM+uHCRA9TVsSAnZWagAAkCQP/iBYygwBPCqrCXTHgsgY\nlpTD6GgHtY3MdbLxgPj+a1FNlNK3+26WExZIbDsiZ52au+p7NECg2rgm9EKg\n4+k/wZeKsYsqL4aUvhq3OAIyyvvrASXxN0RVE9v3dALUWaESecr03gOWPlaG\nKasBY1xRlhQOu0TPre4aZjiZLY3YAzIVzJ1inep17kK/ez1KfxjycbO/ZSsL\nrjrGne1qtcRIeB51lKbs5h1rB2QHI3DumdwUEOpYMscZlKJcfd30Hlid/2oN\nq4UevFSmoxSAL9gVoPyl5uVCTJZ7sX//jmAdFPFNYlI35bpMkPJwhR6IgU7p\nu8U8k7G5oabu6Kibd4JJegzbGiMa1Deep7YOQEyq1B7szPNuN5XEE0dRQ5bJ\nyMRcGmbRpEVe8fbG7JNbPMWDMVK4dDGyH7ci1Xb9T5V7az19+A7QLj7hvj74\nh4ZPemIpTlct+L6PfyHOMQqWom5GJ5+sfmBeSgGvgvciMlFMsCbFSjtgOhJ2\nBSFrsR462SyC3ovruFhPHd2riLKjwsAE797zG0TTEEqV4Z+fq6CG6Anks+N2\nQ8Hip83azQJ/Co3TCnzyGgzN7ZA3t0Gmdb6YZ23VQlU7uRc332tLfIp+MUHc\nbG5WWZ7Odz8Dlz+xE6kD/EJlTQbOJLWVB39Ovl8yif3CsGFcFLu+5SZG4Xnd\nl7ED\r\n=bxRW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDde2i+D80w/Ex4Xyh28vhbLDPvypapJus6Hwaeb7pAvQIhAIaIVaDZo+TD2B78m+UpzhrI0J1DiO0A5p+4FVVWQ/H+"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597238010-37a6ff5a.0_1597238150595_0.4058046579071968"},"_hasShrinkwrap":false},"2.0.0":{"name":"@xdn/prefetch","version":"2.0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-795/NmGw8a8HcAHrRWpS9d+Ae6+9OG5djhTjIqb5pMo/bVL7vQlgeI0WOH0UoipASVbKaROBiDTkldaQTktzLA==","shasum":"a9ed5283038eca9b81819d703a5e301fc833f2ec","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.0.tgz","fileCount":56,"unpackedSize":104106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM+9vCRA9TVsSAnZWagAAWWcP/AlyhoS3eS7cCHlDg7xK\ngbPBD0wqHGs03VZ+2g5u8ZNxAMxhPC1eQDjkQjnc4XxfPLddtcONViIHpRKC\nbnEy+6YpwQeZkgc8817JdwdvRZ1HrpOs/j30wrBGk0Jnbc9F4TgVabjSr1Rb\n1tg7DmaDOsTQ6sy4FPDfxv9XIzfxuRr0jFiIcb2/dzXQGYF656RgT9ejTr63\nfwN5R11yak0E6kMpb4ocrvKBoa3OYe1ljj1UtMfav//bTdkL7smdp2ADP+YL\nD6HsmLaoxQZyOhzfo7j15xWqRodJEn5bx7ST8kbIUOJdQ8u6hpPooe/wIxCB\nRwPKYlQt0kXKx3xDMX7gCKJZpFLN4lR9/KGxsCfxb9dw7DJGgH1ByzzPLjG6\n/wW5IA+WNOFKkxebhgdprggSc5MrCknWmCi7pKqJ3CQa9A/qHWG/gqsPrlPC\nEaUe658rNU+UabHFqpLhXb8lUQzak3iAeUDsMCoTlcE4bbsn5M8yS1pKe+Q9\nL3DMI5azJK+PtZYjr1g3O21QJTRIcWLZ3S4zHPcW6A9x1HhGMzZnaOyFBthQ\nnLNmBVqCQLjX87Zb8ixiPm4hy2Y+aac7F2H/YQJqiQ4mqUM79UP8mRHXM39K\nrTdt1ZwTW1utHD7LVR5UlpVHApf4cg/QOdZRHTErzbkrU1+hh23Ccn5yVbbO\n1Ihp\r\n=ZflD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCG/2Z8t4+kGX2hrj4+Lew/NOF9p+uXVGSC8qp5FvRK2QIgNPs85M0Nt3hjD9vS3BcigvWACcWb0BQAunAcrOWs6+s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.0_1597239151130_0.6458435972646792"},"_hasShrinkwrap":false},"2.0.1-next-1597239313-af45265a.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597239313-af45265a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597239313-af45265a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597239313-af45265a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Z8gnv2szMmD4woTRIjFE/YJUrLkB0xcmKg2sMpuvEQW1BA4BeHcnBjSUC/LuG1ax6U2AU0+gFdmxO3QPkDY7pw==","shasum":"33f7d0caea42ddc5f187b6586cbf855d153daad3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597239313-af45265a.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM/CkCRA9TVsSAnZWagAAy+8P/0Up+gJKRAPcyjChaFpQ\n94eKz1N5i5CyUnsNAyALNlhdAtCUR/GUv62eQvf7Br+c9e1yvuqTy9j0Ikp/\npGhbRs1DMVkVWS99KaPaiBfAsdDP3/CQPPjbT6YWkP6SvWeX02VFgFvfwgKS\njgaMD5K4s7y6Mt2Cdyls4MhU6j7ymHkNiY0AtDpFpXD/AKKnGnDGn2/3+JLj\nAitYv4t8chznC+uhIa5v68O/bMKSuDcaR/F6TSSovTkbghl16kZ5swzxHK6T\nE7wHNA9cLeUDl/XpmIi9F6yUmypRkDV7nEfuQ4+I/1g6RfJwc2cutQYGuyjN\nbrLxjYJn15ANzFN0dn+VlTAzekJ53D4sOQ0jvCq6we7SDLVWWZTHVjNPOVP/\nMhlPmDF/rEBVaITcWQQdVTnDc7/8J3FSJ2v/DugUoZqghGoBQPUvPOrE5rKk\nLQi3ply5bTqoq9ocTNRq40JrrlXGHzOGFmglqUxaSPqYQ2E5yQU/sr1ipcy8\nQpx9oWPorEgyrNI+j7dOoLDsalsnc3fZpxst8xjTjLleGAFuwm2BF8Dzkid4\nl19/e+0anNjVOjhlMS04BsxqbQ3IICrvzVkxRojdTyy1L4eI1CaWydB4FoyL\nN2057EUV7OCu/z5TH1+n+YH2xH6pS5UCddAoCXlkR/hGB89Pa6XvuTAgJdu1\nDVhQ\r\n=TZ7c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0q+Lm7g8uVBQxZyjt6hQ7cnNQVkMNgBb61hhoiYhSaQIgR/NMZonPfpKJCAiWybnvMGUR2to8wZNqTSLo2HdOfaY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597239313-af45265a.0_1597239460243_0.23984366912545485"},"_hasShrinkwrap":false},"2.0.1-next-1597239670-339bfd09.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597239670-339bfd09.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597239670-339bfd09.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597239670-339bfd09.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Ejy/6ZBJ/Pn3wxFNj9PLEsawjgIHpkkYQY/aJIeYyZBu5fFw/KdtGJuFQcWg3L5S2ZFEiDV6GDp8mx7LHMOBvA==","shasum":"ca2eb39110f0ae516152f1b6b13c0f01e5ea5c32","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597239670-339bfd09.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM/IQCRA9TVsSAnZWagAATJIQAJ7M/OUUdqbDA3NcEClT\nRCXjHhhGv7cdKQMZ/jDq0GgfVmx72JSY2aQ3wHxNBfHP1jcLhHhRVnbjl6uL\nRXK9RqFkwp/RuIM+7PLGJNuPTZ6d0QNYhuyBZfF0pFbrPUcRRnpiwaQD3Jrj\nymebobrwMg+jKiwyJjQ8UQlmgFKqSKwqiGnVobQnKiqfOZh66klrxSxR73M+\ngKczrpM5xHpAde+C5R54CKE/6qgAvgKcL1Zk/VfphglwRyvDqFpBzRYW7iBC\nB5wArIelWB55IKvDFWuc78jeYoHgFDhdAOU7yilT9yLyeHz+Ht/cLzKSqe6s\n/zEpZ7GMv+aeHmcxD/hSbPuTvvIywJUJHsAViiozfKgdyU9CRFWz1y3wo//D\n8vv4Jt625KLPe9lXgAqaZYvrlFoi3lLlCBf3X4PzSxBFuF7NHZBAViyEfC3l\nefqZCmi4Ml9ZEnzxOB78aqqHZhUacMWnlsXU2rSgmV+IDBQPAP80BkEDZICW\n/cmgWP01Tu4uBKwhvKkDtfivywDXIpMDkD63nWAQnPHEowo0XaiZfocW3VNa\nIKA6H4O5nDvtYFTn28TdxpReHFH510KuzllfE73gn9BewOnAWZn1eIfvR28S\n37MLUJL385T8Rh6m+iuwqnGjogDbngnNMlXQHFD3GLzjMUv9XyZVu2xleZMe\njJhU\r\n=dY+f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZRLrdMY4iFUWJmSfQZmZB1UGS5v4CwB1+q+E0Ez6S3AiAds445Pz5Nc9Px+LU7MWxn4chVJTzaJ/zs2NXIMl0f9g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597239670-339bfd09.0_1597239824206_0.4194136866102063"},"_hasShrinkwrap":false},"2.0.1-next-1597240037-339bfd09.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597240037-339bfd09.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597240037-339bfd09.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597240037-339bfd09.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BfE+he3blnpDPyeKGxVq3JLnRbACTCEeTy/stzwlW+BjnekFEt/qF8rWOE1BMrqkYz6gr8qNaawxLnN36bHfoQ==","shasum":"c0972b297270c924f3163515f2802215d1021c94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597240037-339bfd09.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM/NnCRA9TVsSAnZWagAASjsP/jRGcFmJI01HtCyWnmFC\nsVfqG83eBVg6unN8CEknHqQKSkgeEDKk3pBFVWctHektVNKKnGU4wbiWqsdf\nJGtudKD66kTGBUfDhjeI7N2XxYAGXVx5Hq8YswbkfbK9E68mrA9TTI2dub/S\nP+0fRDt/TPcwjhzK4yPSXoDUTIEvxYadivKQAviDvRTds1soAIAjAPkOrM0U\nLGAK4YsCnSdt66AAWbR8rVv4Qh+keW/PuwaiG2+DUu+jZ1sajtNO4EPgMndW\nMm4Yd4pyGwWE7lpGuuEXsSNNenCZufxbkh0Qdns0mm3YvOD/GJi+m+3PGo/g\nna26MiUQWwX/SfgHUBXew+mmnsQKifTXcHY/XUaky+YBVCK2grxQJZmTpPJd\nx0G/Hj/GFyFi/hVuDLgTD/LsxW2UFiUHcpSf3gvGtv1z5vtH1Gth8+lRdt+a\nTs4Uh3i5TlFYbChL6ifmkzpRP4r4Bro/KIkSXOWgXFKK1c1p+G4nkMP0kmpp\nG0eeo0ILwg9YlfMrABDfnh6nVGp29Uw06deaPlld07EOCtgwHdAY+3CmUEt7\ntJl6eJcL6rxLGImwGettDeaIey08TaKBfUlSnVmPVoISZwLj0m6+1D93LaJU\nbpx/t8EpFYy05UEhT/Y1gomUhXWjjwC68P/xUhuuxFawIeR40cIgVPoAQ7dk\nvmJ5\r\n=xzrN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1OdfAno2aCmdASnfT0WmBsBdAqdVOLJmAbdD832BRIAiEAo0FJrHdpvItGidmE2HfivY+o/DhEQ6Ts+L4FUUrAevI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597240037-339bfd09.0_1597240167466_0.7988620109300966"},"_hasShrinkwrap":false},"2.0.1-next-1597246522-49e14675.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597246522-49e14675.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597246522-49e14675.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597246522-49e14675.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Xh27lggwLuSSM5zN6OP0cZIpZgHDj6hsHambxZ6LOa9PtIIbVNzW6Fxw9Z4Edo0SkSpin7BH/RgcbzURxNHceQ==","shasum":"cf99eb3065dced01139eb1a0b4f7193c840cdde2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597246522-49e14675.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNAzNCRA9TVsSAnZWagAAcBsQAIklYKNkBzGPyDEQ4nyL\nPvPgzzKEHWUWwKmJuWABjfslbL4c+myPkk3r0s9TVuXZ1PdSb46+iAggOZha\npqI8GWQyTTsF/ewWvRA8snxgaHpQ3J6+hhduwEGYmt6Bvvm/4yuK4B6ch9Y3\ngeNKeo3g3Diex54JbkdIg4kqbgEAShH/7Pcp6Vaj7GbuUJFnkLxVuZgoxuLM\n5jzXboLcU4H19KI3hrToRIcR+N7LioMir/o/s6qLtspGKbxsfm+BCNbec23K\niSpF7cngMI9BwJXoEBrKBQrnhkz51A0vnDZujtYlZ0b1QrNIa2F9u1AqQeyq\nyZOnwWeXfAJb3CzyawBEkhX09OjALESLoT5vd+IkfV9V0s4UT/na2SK1233b\nGtxvyrOqXxBvxvVzUAPSjbY19TYyDT3oc3Q0Pzz89/NU6JoGvZudj+MCyy5l\nST/jw1CK3jkT2KGxc0F2B1VbAjXETUuM63WOdjlVW18LxJNRLwB1XsgOVJoB\nKEsBVFD71bf8rX6Yy0aQR4PBRMdL/GT9t0j8b21xQkhjyIBQve32wrZdWg9B\noGmO/LyULyuTGN5m7Uzvz32lkR84rjjYJQDMP1avql/TX7DlyH8sMXwm2kY5\nXDcBDI7fkl9PZ/WyPm5CPYEa74KDBv+rHB1n35aAq2vTEc/CQipFPO1izref\nBkZE\r\n=axcI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdI03/nO3Mi0UVim5CwE4ai7Dou6kPmoijkJI/MBlBEQIgS2KTTW3JCcIisbQ5sY3E1NxQ8q6nnLNUDwMMvj4MXy0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597246522-49e14675.0_1597246668495_0.7498138331651392"},"_hasShrinkwrap":false},"2.0.1-next-1597246937-49e14675.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597246937-49e14675.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597246937-49e14675.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597246937-49e14675.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-V9hEuHBtmaFYL0txmTXCdeLj1q54Llgsuj02tkXFbFTdSbna4SB6j3JZU1CnHG7hv1KW+qKOEE5bnCZXbWUzyg==","shasum":"f8c0f08c1bfd8d0e5f8ede3d5997816007acab1c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597246937-49e14675.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNA52CRA9TVsSAnZWagAA1DwP+wb1Cn/cco/2sgn+ZwnP\nloZnYuBslc37bgHDgd6egtCiEVSb4jCj/tVpe/b7dBNS9Wqv6Oqba/Zgt59k\nnoNjiLCEsgvdkvr7OV1ZpbWeXsCKZA6uq6gikUdxZM4mmvfDHWOiZ2NmPD2p\nQsqoBsqYYtgeC8tnkV3EldDgDSFYKoo5e/COc/o3HTaALN7n/J5SoFmdC0w1\nwKNUd4tDl/u0cuSnPn/+yesNVRedzotl3fu8Q4edZ5Rs18l09+7UNogGqtXN\nLZ+UcNWWMog3Vt8EYIg2DWHldI+QjJLSgmX9yo8ws+VqZoOpB8hAXkhrSq4I\nPJnET74lmrzZoZv4f/0gveOKG91qtEpnzXK8Q+tk5AT2eWuYkOaPTSfljlvg\na0Qpl1VolNiMvfxSGL4ydHbeSAgHYZx81v0AWwMT5rFJ6bZlgeP5mzKvbJA+\nL59hUrUjqMKInK7Crf/xh7GFKWe89liiC/39+iwuflFRG+K/lsiX5AC/TysZ\nFa291615cA2q6xWtfV07bl6D8yMjtuIPkI+sekuaeMOesthm+prsvLGGFE9l\nVXPlGWIG2omU68IdBU0oyuCIJEmmIlrludBMxS+5llZXUTrf35lBgxWigJBC\niWfzss4DJXdExmpKqz2HDmGgvxqOAewSZrGRPWVwfCEoygWuzAO9bbhCPa1H\n9Y41\r\n=Bm8w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDt8ulkUfGBKczQHAprX3SV2zv3LRABvMzlc0mCZZCLfwIhAOqZqPZLuhxHq96p526LJeZNbmrVRmeeO/+W7/W3LBlK"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597246937-49e14675.0_1597247094355_0.869303647982743"},"_hasShrinkwrap":false},"2.0.1-next-1597248813-b2d73efa.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597248813-b2d73efa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597248813-b2d73efa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597248813-b2d73efa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/3lK8pjHpk2Sjz7GWgDXMTGf2WSZun1ELqDM8+v1XUYVS0UuAoU5AwODjQxek3rn3zIQoPYY1I2dUmlJ1zgNqQ==","shasum":"41621951375409dd7a9f54e8d2b73560af2f40fc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597248813-b2d73efa.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNBXHCRA9TVsSAnZWagAAQRcP/21g2iWl0xNSSvHwTkn1\nNYdWt0RLOAxoB/E3nH63Im0/4mLWmy2HOerloIf6+6CBwyorXvpLVvSF1bhT\nGtWkQKbu4Qte6tuw53ARmSdiK8hL2bt3bET1JwnHMHo0ghz9GsdQksgIyjTw\nrvsNEBOBZmJy2qhQYAssn2yjMMeK8jCtUYtFQ11any/1JRpxnRxmI/tUIm0S\n5hAU0aEicrcZOqhTwdumKxMJqcwDtwVjdAm45oq0onfxoFPKXAY7BjS+7RK9\ntG8SYAm8LWwL9N3IO/JKwNjVUTH3wbmZp3y+T+HR9Yw95sucU6T8f3lcMq4r\ny/CMsoQTkUrdRyNqjRV98pBaB/9rJWTQaDSIb82eXQPRs3Cll/TBukeHqQ8b\n+HLONhkbYoglAjUioOA7FjD4euR+giuyHAapcm9B93fnVj/GG64xLohDfwJJ\nLRR4lUD47cY02XlwO8XUxxiqZuX1K8QADv2lshJMF6jqskU+GZvCc34bWqfo\n1vTxsmohH9UW7sjUFmN0RK1sOiboSqD1UZ4+unP3lqpKWAZBnc+Hyzm37CIo\naNHQmV5u0xdDPl3wDCmrz0ExXqSA4B37Rh5ELnlZpP2rvCbVqc0sCGpqHgNf\n4L56UfbMFzYPSAH8KZIl4QyDCVOcL8JSCibnqhF+N1YCresrx87+AhnWKbH0\nzX6C\r\n=xv+4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6I45xHkDsQMWskR9dnc1oki9hW9jZ1iCiN/1qFlS22QIgeyZqRLTJ3sfUBGVCarK+GTgzv9z9RgzoYnamaL5I8tw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597248813-b2d73efa.0_1597248966575_0.4207551153363138"},"_hasShrinkwrap":false},"2.0.1-next-1597250776-5a7997dc.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597250776-5a7997dc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597250776-5a7997dc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597250776-5a7997dc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-n+/W79q7uOGEh+2Th5QdVlUcc0rctDZAENvXus6V3p5GPRWOk9VNTYnqNIND9L8Au74ORMWQfj2C2A2qozi/Ug==","shasum":"17b8e544952aa4c542df2aa40bc6e8f85a4816f2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597250776-5a7997dc.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNB1uCRA9TVsSAnZWagAAYX0P/RmxEUIWpRr5S1ha9IQ2\nVw6mdi4ps0ngDQI8v8RLm8kl+3+9ziF8Wkz5kcpeSyM0YBOuWQnwhFn4qWVK\nP8rl3GaIfVw1m9oGMya762OQ7vUCrIFOxB9+OiusGZrwWhGKRl9FlvI1d/zg\n7eI3/CoXTIDg9qDyj/jLN/FjSXX2+tn0fJvLH42Gh4dyIul5wYvPcnBBgeP/\n4LF1ujKt9YD8/UvcQZD2hB2rpL4j0iCzqS3/B49eiFvoAzpVcqWgQEqNp4VL\nKMvH+zlayh/4RPbhc2uxJM7f5q6PwnTOyqkJlvqU2shXQk02S4LXJoCtnwF8\nqQD/4cODM8Llk6dLC0a4A9HIuGolXqiBx7i+6bNAUCG2DFfAI9sZUKMMa/Nx\nSgWteODdmdg6ydqVzRSGgK3ZZSXWrYbCD6O4HYvyfri8xwMUJZ3aoRLvvzXs\nsct1MmjB86SO5zuwXXYVUeqFhjJLdyDvdgsMq+8dzvLQ50I/l2ezBExMuk9M\n+mVHdX3dMt9eTF5IwR4a4t5WcSdzd6mUj7l0K1bz1zBOF0W6TeX2/3r592tw\n77GlCMqm/lsuXDrU1Da3a3NbG0vxK3qOIIPAO23qtHPzKR52UJBA2r9V11Yr\nUaq9JoMrliwgGCkXUtDuqv0X/PVSRKb8PonEjNbSXCuthCLQQaUWWZm3iPWB\nABhz\r\n=A2MJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRhfDZuEV+8dMebElntHJwuHNk745QzwrC8XvW8BWG9wIgZn+WSc6O6NiZR/al/oWxx2Bgk1vbqRM0ojebyouZvHM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597250776-5a7997dc.0_1597250926253_0.8866226377034125"},"_hasShrinkwrap":false},"2.0.1-next-1597251397-5a7997dc.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597251397-5a7997dc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597251397-5a7997dc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597251397-5a7997dc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-G5+aZwCrMWg8wqg8T9qEue7pD0QvESXZNLt/jltpwd1dzcp0p7beOz7zCYnADGhWQsBPkAcA3XBjAf2gHb/90A==","shasum":"2a3fc68543220b923b506a2a111c943de2cf88ae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597251397-5a7997dc.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNB/TCRA9TVsSAnZWagAA3GoP/2Xjv4nHT0Il2OYWP2SU\ny7zJ2VGhZFAOwsrIl0sMUyfXYxTrCZR0RBSZ8FyvuVu7AhcY5UczV1lnJAMn\ne1LTuTW3nUZsoyoTjnh+4qHnvmIVLe6crnPzFqHRiqS1QPwldlibgNs0Ov7B\naXHAtb4EGJa1tYNvBhhBrg3kc8Z0pnwj+QFWvmwYfo4Y37OwfyGYbemxpdkf\nc45RL4oxJeCX20l3URIwXpN5qnQy5w6voQTRPB5m2nTjCCihXr5zsj7F5Mwd\ns1jHMFF5X/rjwSAV2ZGzES3aI5B7LAekjcIqB86/lQU2/DBEexW+qRg7K5VQ\nB80lyM/2DVFbTuVfcuik98JXEHpO+vDxX6sKVH9sFXY/JC4XacQ2CVd/zXEH\npZUBpVP8VsU8aNY4JaLsC+xVKxiNRBHEAKijKUwXtx15IH0/XTQLhQfwgYJp\nawPwr8KZ6wGivf+FdXEbrGo5QEMnM0Vec9EXnZ6qf0AQUAbl5EaofksqequN\nGh0Z6zUWy+JvXe5Cj6WrUQDiKo0/Fe0+L5ZElpf/nqks7eG/gvJ7AYNpJ8DF\nAK0m6NFgscVEc54cV936VNkJLycOVLirGn/MedDckIlaG5idTCMROVOxeL8t\nPP4SfYwjy1CU05SZINMLA1vF7uWxmGnoz7XDFC23zgvhnL0Rf2Fbl1NY40O/\nm59t\r\n=Olb8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBFhCSfbP9nfQu4UQDwyRLmwtKrRTL7DoovuN7tn/3QTAiEAvMFZnkt93IMncw7fljtYOP6vnd5P+D6bh7GPMO4+9w8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597251397-5a7997dc.0_1597251539626_0.1132791107872615"},"_hasShrinkwrap":false},"2.0.1-next-1597262026-2e1c371d.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597262026-2e1c371d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597262026-2e1c371d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597262026-2e1c371d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Tm5FP5XFVpd8JstODGTdEOndzNmkZNoHgCZwPEs5y7jTFDrq8slnbcBR/ylZg0pUVZYhihbp85fI7+0a4PEDDQ==","shasum":"396405b095966491cf621470bf11333aeb1eadb8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597262026-2e1c371d.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNEk6CRA9TVsSAnZWagAAox4P/RjpeFo/muXKfCiM0dZt\nHRxKdGLbhWGxN8vqmao6ahaxFL0OrEAY67EtybydB53WCduBaB6egp9btIM9\nyUcBbarpxZLyXzJz3BGqbws9jPOanv5GcunXYyYILOeg0rEKPtM+c4zJpQTI\nMFZgxc6EmaCcrDfZBfOmt55LQmWnJgFYjgxbJEmSsYhB7w9jHMeiqkvez9LJ\n52AN3E/uUzNvftHgblhVgNd7S+QX84UUwD53cUcFDTXgQkG+/Ob5DKnlfRl0\n2OyoNbrhaACHMZ7x8eqqByxIRZzxjYqGFQzirDYlTUR/WW3Vb83nHLUe8yve\nqZG7ktcFud6E8fURdiUcJcwV3bxDU87EuwS+/L45sm0a+f+Rgm39yvXmcjUe\ndi8/W0WxQHcnvrYn4RHJknGvpI99kcwKNEM4Z0Zei+eBn+CCud5dYfwYPHmW\n++ihTkHQkga0dU+7bIbqyeGxlBOjFuPZSi0K5Ibpda5pEY4WA2oQYK1L7c1T\nZJuME+POZjLObkkDQudbdoGHAyK8Z+DWdJiVrRbRnqJ8edbL/eZvIN52vmu4\nnvdUxl2yImNS1e0s52s3coJTdxlECMDFoYuDPFXyrh5hcqDd1F0AfavHT2r1\njkWiCXfAxLgLx7OMiCFiUWS0uRAsaee9h1A/z+cDEjOnJ2FK9lzIZEP2x+PB\nUH/5\r\n=MKkz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSI2zen3VmQaSrKlt/94IpSZyiXpvmEt26ZlZ/HsY/KQIhAIpGQHngayXKg3m+wAaMJBs+Ny6UZ4SqgoUCBa9TI+pW"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597262026-2e1c371d.0_1597262138016_0.3388478398463777"},"_hasShrinkwrap":false},"2.0.1-next-1597262161-ec425d79.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597262161-ec425d79.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597262161-ec425d79.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597262161-ec425d79.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CIWL4MBNTW5bwqkwNR/MAySrJvb99JJuldAT3C0IQLGF3mOsABvUPRdx9kjkVaThZJ19wg63oRFujR6ruNYVVA==","shasum":"7039fcc7873a3d9b6a5b56e094cf58c03eda6206","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597262161-ec425d79.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNEniCRA9TVsSAnZWagAAhrAP+wZxLFmKVyo5KCbXHF0q\nW0XYiLfgMOgB1VrkkpoGc0cEFzycTF6UZH7Ffxf5KDNTsWbQdTYQ0ISRJ7PN\n9UuXH9bCtkHRGO1wl7SqcZDKERzFlSCGaVpqmEQ8ecVOi9YlMw0YSpa8k5FW\nkBHLOM7+XNx1ys0WhEJsJ6Ag7xPmYAoDnE+QZ8j3TMKatpzCYf24xo03wILu\n+PvArN1AiYmrNY55YEV6lyUCiBO9QWUQFdAaONrsxwCn2VIxNKEqGZ+S52On\nhg2vHyIAt9ki09iejRGepli96jSefkt6k3EuYgckedEtvqCK+Pwfxi2HyohA\nvEUXMP/9p+oViRJt6YKLkmrrdpn5vRs71XW3Te5mMkFdj5cRYliYVQtdxyqy\nWzflGxEmiW6clJMb9fh8JygwZz8SGwxL/YNz2oCPtReXzSUt0tSLYeiaiQHG\nwtAQWahczLcWFaHebcs9+1y7H6hTIDLvqcnEGaHWZ/ODjiEpXCaIMR8OAaEM\nAzPlCCULWDWlkxRUROQtqccfOUA4FkExU0ARFdV57cG7aS2JXJoXdV2rU/N9\nFGlfqAQbdkNIkKIsGkS8SVcic6XIbO7C5lrUpZk3IuH+LzzY9Y0SeEXOqINU\n8wENgDc9jS3br7ZdgLBtK4PoQCxmhPubhq+x3/2yfS2b4Z8QQ63MfbZWKgXA\n3L9C\r\n=Subl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRG9NnI+NeVwFJzhzUMhaIqZDe5UTdaM4ZuoN1sWeZOwIhANf0gw15PHmv1zU/cA3Xhb87lhv+rF3eRzETgHt6E1Kp"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597262161-ec425d79.0_1597262305781_0.3810058085325059"},"_hasShrinkwrap":false},"2.0.1-next-1597283887-ec425d79.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597283887-ec425d79.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597283887-ec425d79.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597283887-ec425d79.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KZJ49L+l2filjq8GF8lgG99nxJHC8WvqDhYFbz7WNCbqrkBGOE2COBu3InrTQutnUemDqhrlUMbajxniBqQi+Q==","shasum":"d4bb9734cbc5a2bb7a12dfdb1e817612c96310de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597283887-ec425d79.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNJ7OCRA9TVsSAnZWagAAfG8QAILb5ILSDp+U7hubdp0N\nEpwEtwNOcofZb2RMS8SMKifCmv74d7RkGqDLGuqjR9qF1DoVuhQGhgRddAL7\nildCQz3QHJyNXGStad/f5QrM+ERwJnd3ELkPyNu+21tJE4IJEX9O1YAXPRN4\nwq7z8T4nRknGpQz+NZh+ArDbgkFK04ez1RZVNT2s8sZQdragvlSHJo2QiFdv\n1XxPvuno7OHxiDv/OdsRL/pgyfY3xMDHmgOqxY60SVZbHV7Idb4NReTPJadA\n34Kt1MKk4RjEPjL9M6wiL6vPkf/hHfa2HRF2UXMnz4nFrZFD4EzRvghyD2/8\n4fi+imMU/c4iPHTUb6swpmLnzroX+EuBe0CDBSfFQjefH7JWrlDLMKchIfiZ\njPL/t6EetlcoAC7HMNJrcFUUHgP/P8JVV8R+tkKkUuoQ+B7qSAsHqZm0KWxy\nHWoCbHw3z52gXM4vpcc4wx3h9qOXqCcseoQHqXaIejp5C72esqMlLxJvoKvJ\nDkJQp5jFyWOb0BWetZekUnjOtoDkE88kQsA6yOOP+Dv4z0KI+agmMx7DOWNd\nYgA3EiKx9rwthT8Jg1vtS60imoLXYP7Q8aMLEL7Pu8Ck251AAYJwRsX8SsGT\n5Ww/Su2IfQz4xWeyzEBDWvGa/qPeQPQhSeZmEm9I+H6V9HnbSeQD3gMrIVUL\nGTc2\r\n=dFQf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAOo7X6NHUu+hnWBP8vWajeS2w6xACzQ7uHqL8Ozy8a6AiEAhOEwvVJsoTXxZa2U27RoHrYTpvqvpDYha2ERrigFOAc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597283887-ec425d79.0_1597284045265_0.4126317047097725"},"_hasShrinkwrap":false},"2.0.1-next-1597316587-ec425d79.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597316587-ec425d79.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597316587-ec425d79.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597316587-ec425d79.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yd9XKT5JLbwUvpy2R2xJMr8P2kO13ym12b+Lq1ULfUO38EH1nyZK+I4fE8pJROvsSFTPT5SWkzrlYaeFC9FUwA==","shasum":"76a0fe22846ad6935f38377e1c528f92515f4a43","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597316587-ec425d79.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNR6CCRA9TVsSAnZWagAAdwYP/2E1uO8rMGo5InBhOtlq\noj27vkIzk6UJAZoaOmdX/23MvcUDsJ3vRjLhwNW1Dao/KiRPbo5KQzALmo2c\neeCY7SUQtc8/+oW9gwxyTw6lgHobWWEDlvbMS6G4R62CX453k11mF42qLpLp\nPNXEQdz5JZMQWsLU+DEnNbHiGuAD93Zfk5JF7oOsqDaqcWFbmD+I2Pm3kuZN\nBNv3c7CiBQeiq3Vo1xPFvWIbWiIw0cH1zhy5qbQ5zBymk83b6r/zHX9j+Ieg\nRfVfsMBwXpgBYQzrLNbL1D4heR24GbmUTTlaeWpJjyAbGbtBBrQEFskcAicM\nkp1+bNlp3EEM7fFQo45ROSHdll/dAsTJPenUGz179U2kfAfGIjK/xAyc9TiF\nZkNQI9FbwhvB/4em0rhN1C7v9QH3jS8A/+qqCh0WQWaJ0CfLrzgza6I44lhm\ngaWYSuSQqRnf5xjAAWRU0D4Su2Ot/vpSqVyZPdetar3LiLjFn8KuQw7HVtJi\nn6SRUnuFxvCMc5odiR06xpyoMP6JaTVJOQNNsVfYE72aJbGyj1R3MJbHZU/l\n20In+Bb23gbf198t738ZzA+n4hKqzaJd7czSGijBrUMJZzN24arCupqVJBFD\nDvreoYFOX55xhlC4++AOhbNZfd8guzBHGw0mgmP8+3j6NK7BRzbk6bQ7f9d+\nlijR\r\n=IifR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC3Y7jtAblQbStSHiRTYChwNc4sB5dmbUYkYwJvNIwXMAiEAopqt8MSp2Mj2BVaRgHcoFs9GDeATLsvvQoOAnTE9Z7w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597316587-ec425d79.0_1597316738389_0.47717885142172656"},"_hasShrinkwrap":false},"2.0.1-next-1597318746-239b9e83.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597318746-239b9e83.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597318746-239b9e83.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597318746-239b9e83.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2QnUrh1ZNs7NA8ae1hp7cA8trJwmvoaBmjeaLlCKQJMJ28RsyissDWmslM+sYoVVxGLYQYoudvUgMRzDSMvXFA==","shasum":"8c6b365306524c0e9cf60631296c6679da67d277","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597318746-239b9e83.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNSbwCRA9TVsSAnZWagAAnt8P/iHGEE9e9Nf/QHnnr8SW\n3B/0RmHwMSBvU2UJVHX7i/Xd2vEEcxRsiT3zeLH9Ru+7t+T0YpMPq3EK43r3\nn4B0+42TQziFxONQL6S7P0e+v/YOjYLf3ZuVB8Oj3QqTcP6LMXDOFohnYNk5\nAGnlcgcd2j5LvDItVo7ugTtHVemeh73B2ojivPKbNNJUd3pIOiQilURcZBZP\nZxl0oEzQBgeAWZTAfya2J72o2JtyMXLARb2ffoQO6qWSNAH5OshuREs85pkR\naLbRtmv5RVTRVs0hooafOQrVY69rHb4lQ/MNL1JU89VCiAedahg8oTKRr4ZG\n6misxeHGkZBlky3q6mjHSjFt6XUWCVV2KIU79gPFhJoDPTivhxwsNieVZLRH\nEwmAfWOk5LiU2pnCrbM09dH97QUoh1Mi1Iwi+rdvFgSOJuqILiV/Knfi1XWj\n4EUOnkcvroYZgNhjHRevuQbPSmG1Po3+7CMcUEGgz6dFl9jFW1fRUNXZlhIl\nhummXVqeInLI/O75DwpyQjWvmShjpmWkqkCxZ5F9O8RTzxrkBoR9yf40y2O1\nr5dvnYFTKOEkCN8K/CWaTvogTJqts+VCUFq2MzxxRoduN3WVl+NK5F/M2cPq\n8IO7IBIflNhn6Ui0LsKvcshbcEN5JTHQEosVpxRsxycUIPg0dg2MYlEI5ajJ\nXP1a\r\n=Y8mS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0C1XCIocK2GqExqzPsJ+u3puGwD0LJggYjy3HO3L9tAIgE4asWDYvaXWbEAJD4QQS22u4TvlRyG5rOUQCNcBrtFA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597318746-239b9e83.0_1597318896522_0.9670460000574999"},"_hasShrinkwrap":false},"2.0.1-next-1597322600-fa827fb5.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597322600-fa827fb5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597322600-fa827fb5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597322600-fa827fb5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Wv71Qptb8z1651YPbTeesQS7VInY68RQLTKTSm+CtCLOz5MorMXa2bWBRsW274vbSmv5Tr0Slt9qAqL6N7eC4w==","shasum":"5a6a6659e17da987cb3b51f8e204ed6bfd93fbb1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597322600-fa827fb5.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNTXyCRA9TVsSAnZWagAAhZkP/34LyrZ9QK0e0T/e9XJu\n301+/0duRPWZ5UN2lpi9sKVndRewOCi1cQu/UGfvlGTl0ivgY7fokDVJZ17a\nHm1wTSYEa22Dcg1gvNcffGSYMwAoQ3CbuKn/HAgWLJvRNe1OcDZ2Oy+x/IsH\nwDpQVZPdpsb1Nvuj1sjrMZ4GNIf+OkVgOxlOuTO6U7335m846BeLI+64HYHB\nMOdSS/IvfEF2IroPpxPkrNWsNvpjJ67YAlw6xtvbbusXMzFbK6LW+PM+Y7SO\n5rIXf0ROWcuz3LUbzJVaiyVGXNy/ebzRXzLqANzBEVwjUvd41CTMWK/r5Eg4\nD0fVDfWMlsXpfomZ8WDJeqGgUQuMhyibM/sLnIxUUUmOvRE+gIH0di8hQDwx\nuMSl6ocddyLDipzGPZxO7tuCRAD0aiC2A/ieA4JUrXiJLlUQYTBziFPkSW59\n+dcd8Yp38AVoPY0tJD+eeVC0CslIGkx8EeK628TMuAaCST5kjCcNhNPd4rGe\nJrD2i94WiO/7r5/iuN3LchITaGpZl1KoqkZWwx2pdVvDMGgye3ZGiMbqCmcc\nE7ieqRz/2Ck4AXbtGiLmf/sSpRVhnv6JGzibqioRbfR1WA6ibu+8bAJWZYps\naTRcpbmVH67/QNHyO3syFDGyaq5UMOuW0yseVmu2K2fspnQtvhWPfKyZqq9Y\noq4n\r\n=E+29\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlmO1q4cRF8ux5jv+bcEyZ3Z7z1nlbsRZiBVwDEYZQ4gIgSGG/qDIQxT5eFDCuN7oMLYW1oLY7x9WdaomYx7ZyWj8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597322600-fa827fb5.0_1597322737964_0.020065374420764837"},"_hasShrinkwrap":false},"2.0.1-next-1597324298-c52fcf64.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597324298-c52fcf64.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597324298-c52fcf64.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597324298-c52fcf64.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vqk32W0V+TgPRf4qEz3YfKdj8f8P1ndJSLi2d9aTJQx3pEQ6KeFYXMw+OotuhzIMitd6A62MxX6Pmn2pLpdC4A==","shasum":"01c2c29a9d2342b7edb6a4ced442fd303560516b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597324298-c52fcf64.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNTy3CRA9TVsSAnZWagAAgN4QAJeodCog6XDQAx+xciHD\nkeflwX0QZrYbMB2MUn1RZti81h8Qs015VDeBqyiCRvsP3DgxdJUFBs+chmsl\na5ytX8RA25vFo9SanceObkuc53XIdvS+v3M4dfusROkEhdUlY9emi4dUkrxW\ns8tf6CSQciNPOD6AaYCLFcP2q/APrl7Ly+a13oG1Ef/RjqZYbfdskxmpfQ+k\nrP7T6AbFbEI/UjdT0F7/rxIGZFlNv2vfwjAsoSS/jZH5WArRx1a23+1d+qBT\nafESr/tZx/cWz/pDyY4p8NEkVt+v2ZuQHNwbe25aPke9beGibaQNVKhhYcVI\nKrV05IEK3G12eYIwQaxR0JuarV0EI/HDxmgtx+K6RRZfEazn0eUzgPdaJ9ke\nIs13DKd/01z71vyl/QiEg940FJbv6kHDXoQOZfHzRT1UTMT+yzJeS7Gnlis8\n18EcinKLwNbROv7iACl/SQjpREVVJEYRIMrNvMgTTFrGQkJuC/2CVU1XOX7w\ng+80HopQZOibokNMtT/Rc5EhD/SxRLe1UrdIMy60clg7PWNIntetYu3dgeKW\nvnjXAfId0NVNQFu8Pz/MjqoGhz8XXdbxldxdYLLzVEcuEnB/mOYnETrqczaJ\ndmo+tv3tAqmjMTDs4oxL5sV17aA58K6yq0UeOtlxMikJ0YVj9N+kDvy+EOOc\na7ID\r\n=8ZsL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpB/+brknbsUBZow5HDAsHr8B6e1wbt6BdQUz6S/vMlAIgIUpCv7wgNy5aT75hmDRlzeqnhb6ELluI1bW4jBWq8Yg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597324298-c52fcf64.0_1597324471437_0.44536011069258574"},"_hasShrinkwrap":false},"2.0.1-next-1597325045-e4854fc2.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597325045-e4854fc2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597325045-e4854fc2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597325045-e4854fc2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AN3S+ZLRlTBuenqwzLwRiDKGGCN+/TlKp0+WNJYKmTS21diEzG9zdPAqIge+75VL6H4svZAFBhnNNjj3ZGs/xQ==","shasum":"8644427722bd7c18093952f313313699715c8dfe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597325045-e4854fc2.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNT+LCRA9TVsSAnZWagAABiAQAJBQvuRe4tSo7kjzW/Q3\nWNKtzYNtI8KlVP/DyUjG5z3Y2qtQu1LufXvnmj7GcQm5cV8a5GecYGob9cHf\nsX1xCFLM2G9oBKrV0jUpiFzeMzGTYFrYXbDIH1RY4O+0R+WycOzl4gkKw9f8\neZ7lqrBXmw0UHchZqCGS3W3VJb2oAH0k+/9eujXXNEaViULdniQKjOz6NyGk\nwisVscYA4rIbLfjQxuG5npml7UAJygBNQzKBD+halZiRH9QqyLKFz7Ie0tHD\nIiZYD8jebrf9/wWketinXUOJj43IezvQDZushPPl19IDblwfpBUKAtHakXTI\n5TrA46hjmI6KAdNPZobAv6oBq33hzoYhAD/2akhjzPV/aALbiE9ijIHPDUek\nLpiRi8w2iVTUddf2b3UxQe8dORIUz1mk5gONZVrDynFSqLHHP4dtttIeM44n\nS1yLcoHMkTG/z2i1xG7vELk7KJ4EzzY45j1ytyi4rzVmdyUI6OdGdekcpxey\nwJP0p4T3pcgzi0M0/hwZjT+di7/aT6z5ZHA0Bq/dU2PVFZsEKSx00MuZqMvE\ngwWqsJLgXaxtJ00tz9b4yIs1ZAa+qLJ/XU4Gz0leF3oRHV12JXBFOfSu6U6L\nXzRf9DcRxrzGis3IVpm+YFymSypBG+ex2cMg5KYr/4xQ1sGGac5RZF0ewErc\n3ovT\r\n=3qGs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHatiDo/puQ79yFMpeCWcHdMnsy0nxP8sDxJUs37UazCAiAja7hr0IPfbaUsmgYmQLX8yFo3JVI3yB2BSQBaiglTZQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597325045-e4854fc2.0_1597325194875_0.44910781182300563"},"_hasShrinkwrap":false},"2.0.1-next-1597325193-beecbbd0.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597325193-beecbbd0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597325193-beecbbd0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597325193-beecbbd0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Vk6H4boagWrvuFHgoPzWCvIJZH3MQHYE8DL9A3f3VH9w66PFltQoz7+VO5URYhGaRxk4HAMLwM8NYLF9EUQJnw==","shasum":"4e4e1b4425e9e094074a7b1b1e24796be8c28047","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597325193-beecbbd0.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNUAgCRA9TVsSAnZWagAA0CQQAIiYXfiopPhNl0p56p35\nWx/SXa/uJOSU4c0BpnInOplCTIH1NbIo99G8OkI+u3ZOKnvH6l8kr8slGdWc\nkStTVL1GHtzLBovW5h6Myeuz/fYrfsUNK8GPi7/HjugdwkTC0OoVv3yXNjEH\njwZRSpDO8lSNLoP4ljDuapd+mselDaxBGbv4sdPeXFfBABIgZMVvCMvkbGAJ\nE1l8Onw8rmPXUq7/Yc7xfN04yVoJb2EtPxacZYj72oD3lFNfr0R/ibWvJJmX\nXU0y+U8pNrF1RnzvEWM87wHNTrc0sTrYC61DyQs7d5WUv30QoPJ+UJMjYJ2T\nXMKYMpJAVyqrhget6YzWYkUoOBOtKL7dT3yaKSj0EhiSiZgSztvzkAag6Bv1\nbzeUhdiU0ZUTzdlfBpm/gQL4+ymuEri6mi4ohTlB9gxGKxOyoQ9eZOskNhT9\nVbspsHbpAmJ/6e4XKGppv+/U5idZSyOrFuV1Zxr6PXUYk2cpLd6XQGUv3ZFk\ntenE7clFiZK7WVmWnYW6c0KCJZDRTw0M2WV1ZHZExY7cwWQHbvhtfhzk/+72\nzQToa+odi8QmIT2QV9b6s5r1g58xJxR+JrDrxHzHNYD6HzvAOLBkNaC1IheM\nrK6mzy4M5tjy4SxgX0Xz611ckTdJEDSvZ2G3lzbBlC55N3dBU4LtQys4Bsn2\nJXTH\r\n=Elb+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA73SObpRSOObu2qeBEa6lQb0Gl+kKxmRhGpUj6eLBsyAiBggaL3EE2IaxPPNTbDDH2qrLhqFX20tBAhsUQJh9/gMQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597325193-beecbbd0.0_1597325343806_0.055618611475884316"},"_hasShrinkwrap":false},"2.0.1-next-1597326203-e4854fc2.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597326203-e4854fc2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597326203-e4854fc2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597326203-e4854fc2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-npDOOHXRukXEeCEvc2ojFROl1roS3DaM1gQpkx8Qjx+kXd5g4ay1HVnxVf5i9mS74YtuLuidnt0Fpp3jbQ155g==","shasum":"bfec3076bd66819a76b728d8982303b11ee87ed9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597326203-e4854fc2.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNUQACRA9TVsSAnZWagAALdIP/iw4HmMtgLMNWqjdtXAf\nF1yI6BhulGuC85vO/lPuwOU+R+MPYb0kXLj4lOQfguKoPxiUzKujX1muWlLP\n/VpM5LnqnVSJU7gJ4nxj4NZuXRR7xoAzHIOntT/wkJNRTi7b9oXU2BCqjSTm\nbBhkr1uBNtwuHOROBs2x/xHpJXuj63BwtKJ/cnW/SGm1Mxs0u3p1I1fVEkCv\nxjcZNvXvKFJH9qwTw0sQ1PX9tbiZFIlT49Cnpf5hriOvNIFK/94Lvqmk+ds4\nhJWi4IapodzGYhU3XoVHTkTxYA6h5TkhBzqv4I2FCUGY6Hv8HOB3uW0BjsT8\n0PvHPkb9+d18mxXF8EBB6B6Gg+Ry2iaH2LUCjTtie60zIxuyXb3Fb0oFPPeP\nI0frhpw0Qjb7FvUmXS/jw/mUkqEhlXR13/NX3Xh8q/s/q6YkgNpJNSrm3RG8\nfb6FNJTNLuJFYNcwEG0S8LOflhPb1o65BQTiKYdB5RZ+JVMGgFQ0uvs3/p4j\noBa1OWZ43F0Rb4R19rUOuybSomFouk65PkMdg6wYSIN3BHzsJMLzMN31mzSm\npOxxNchB599gL/2ws/d+LWhJEjKVBzW6W21UcJnCO+khA0apLrZeBO/kH3DF\ncunb8P4i1vCeEIzsr4xHo3Lq+78zSEt5lT2xHzvtAMbX8GBevylxREnYU1J6\nIcZP\r\n=mNF9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGmHCkpYfHi3kNXflK6ZWU3fYQPWMGGXvHkO9dNAF2HSAiEAlC+ha5AgqhguoxCBPqCypIVUl5BYkhDWWTwhB81dNzQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597326203-e4854fc2.0_1597326336151_0.8680704500781609"},"_hasShrinkwrap":false},"2.0.1-next-1597327104-d9f8adba.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597327104-d9f8adba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597327104-d9f8adba.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597327104-d9f8adba.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3QTpp+5okMqGJ2ZzcDcWEnydADHuOBy8MJxhvRS7L9bLISTn0qYGdxveMFv/yI1lJiKmNU/EruCbQ2EtEF6eFw==","shasum":"5fdadae36808717c3760c4eb29713938593ca021","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597327104-d9f8adba.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNUehCRA9TVsSAnZWagAAEjwP/2Iwc6SFxtHMMr7TTQ5j\nzNbuQgSZVlfMx6wnJv2NTQ7uJLRuIygI4rI8EPtcBhunrSQw64uL32wbpwaW\n+k1vzxKjvEimYDwlFwCKnHBR4qLzw52Ws/cO3IgzL8qCO1o5LyMo0hBgaXbs\nPDSyXEkJLAEAvWrNhQnJiteOcfPd5L0M+F/iRSidtapL7xobwZELjLEJDTEU\nADRGgiBOrDAEgeN/4gQtzw4Z2/CjqjFbsti/RUevChXGKQf2xFrm1fvEiebg\nUugjs4lGqcsNxyqPSOoSFxeib93ynz0YEqCV1VpZQXJssjASURV71BazIgye\nuAvsiD4H3wso0B18RXucx+hgz0M1mp6spx4YBdCjXULETm4GGK2XskZsipXP\nlHgupOZGTr9yzAe9JkYB/h3+dGKaFBCSt1vHlebE2rplOPWEiYPY4gNYCiZI\nyETm/upZrgaH6ESHg5qFmBw4q5eIXvI3qRw9J2fYxaTemNeWZajjVuhOz3f5\n6J3Czu1BNzBPw0BBoxdWNvRcmsbbRmAIPkYW5fl68sMF8JWvyEA4nSlJbPfV\nYfO8qyflcNK4ijmL/Q162F3LtjXFMZqzk0dYyvSKRHmy1fO/t/6LJH+MA8yP\n60lbIKYr3PkivNUA6ds3SftWr6utXgI7gTboM4lvn048h3+4x9PskHPdQIqv\nFZ/0\r\n=XfDT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHIL3b+vUTWeJMh1OnObwdus1TirZTpu77gsfL5kc/OCAiBPSEoKcLtpK17LcGuuIjFnW8QoDXdGQvcfijm1LS/6Kg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597327104-d9f8adba.0_1597327265041_0.31955340644655905"},"_hasShrinkwrap":false},"2.0.1-next-1597330862-9edbb1e2.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597330862-9edbb1e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597330862-9edbb1e2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597330862-9edbb1e2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NIZQF29D7SopNhSHSjhMXTeDsdbKYnE3dSHtZGnDZatS29WrDlj+7jztY+ViU3rc1J6pm+y1gxp+QZvUmmVXYg==","shasum":"cb3cdc417e8d23a24ddff52c5c71c5fe6c98f1cb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597330862-9edbb1e2.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNVZVCRA9TVsSAnZWagAAt8MP/0lhQTy34IrL4mnf1myb\nLW13m47laPNoNOy7BX67qHBg59jcyEB9Ou3bZOz56hOeEzMdx+bPc2YYkC9K\na221Sw0odUeW7RxyngvF5TcAXJSharcnRm9XWSraiykX6mhjCj3+nQa3JiXc\nNEfBzbowQM7DGcL6B7mPH5Ihxo9iKW8EFK7UtNfLUeDlCSD1TWDOEdbUMJaq\naHLr3SRGPBPW2zxW3K19Lctfe0FN9PN/Bev5yllx9+5mWKS0at3mYF9K2MM9\nBm+AuHcyh9VepEDLkDnkMyhWIui1hjQt+z/dSgOKYF2hyvdX+2Ab+3HgZQe/\naPR7WB6X9XgavHWJtfTpCze9beKyuEdoy8P/cD60q7zyWxhkmv2BjxaTYkTl\nZFGhi4ZxZiIWgnZkcOgYG8Dz08PhbNrOVUrmdr7GwHKBFWfHr8s+y9fNXHL3\nKfIjH0bnFF+DEEub6XdM5c2PGwj2Y+Ha7jnWTAkhp+keJn6vHaxN6dWu9IcP\nFgaL7nMWQ/7wMBdYe3SN+WWIE8x4XrXIJ23TG6naVampbvD2WtvMucjvymvg\n4wJhgNqdsVJi3OpG6YyvknAWU/ADo8Cd5srsJrxbhjR5RqRLoTMQVp28iEwX\nqDS0ajGrfP96yOGorKE1rKhPR8kIIuO4zqgSdCo4TcJALrq2pPfx1/sVuLdP\n7X5c\r\n=C8xf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICpwYpC/EcNHQxVbGMe8j9R9TqOATBJwdFfx5IqOaZZkAiEAqmu0kveFNsXXeTfFABSFYkiF7TJFRtDTjaeld1W9S6I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597330862-9edbb1e2.0_1597331028584_0.6247171342421614"},"_hasShrinkwrap":false},"2.0.1-next-1597332243-f211c7eb.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597332243-f211c7eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597332243-f211c7eb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597332243-f211c7eb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-brdvwp9cEw78j9uQV73hpMgjnMPcr8zbYU6P0MOW1MAGWLzcsSNH5xyUivOeelwUUA9skhXUr6J3HmYev09J4A==","shasum":"29a6ca8acd52a090fbf582e5b4fe3b40498bba38","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597332243-f211c7eb.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNVulCRA9TVsSAnZWagAAaRUP/0KUKejC43+iQ5WXJi0P\nMbdR2NiTyRqBJVvY4aMekPkTetYkg6j45GrmtI/SfmG0cNQxF47uDxRF/ubs\nwSaJg+tAsrMw3WKoCkFEmCFf2aH2wTPPgjKAgn1IoqGHc1hvNzpXicKlm291\nzAnyOgyMo7RHYosF1Lki84aE+KkkI/mgDBupqsv4/oxr75UibNIifQeNRL0G\n++WkzkTltH545zUtOq1kCi4GFnkcni2aScHU3nY+sRXQuoeHA3drdQaYJ9wn\nnsKJVOz0UQlmmD/WsCffM4LfnYDb5dOuCu6z1SahHKtZAk6QPPIzKp18Vq+G\nOi1TEvCzUA7tRE/ue45mPC6vwczidbqIsjM4jgu+xRuksfVDJiI8nGCuqSwV\nP0tGH8ZYsoUbK3TUJV3VJwnAjyqncJLco7jUP4KKENAUbw97bw5HxRa5I9PS\nE4kPE3Wda6tdIeNdQfFG3K7cwMcEVNMzLZXasL4CeXIktWgyVEhV4gUGAdvz\n/mUdiHUt3plGRTk9Zr5lfS9j9oTGbqILedmYfNUEcC9IRICTNu6wyNLb9wbk\nPGvOM2kIRDg/MA7BpIEt2O7uzI+WfjoCqkYjuyMHd0eJtv6EXPtrmzVbMrDG\nwVZxqBgLptwg4CPO7Ay3ICBiY3VMB+UPfEgKlo2AgYptqoDCwZvpz7zfz+zO\n0oGZ\r\n=rC72\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCG3wTgPig1UB84R/A7g5ONn1RCOztySWxkWgtFcjNO/gIhAPwWHIOJfdaDcbolpzEGLo1A9IiEaTW9Ip5+NYyPXCMS"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597332243-f211c7eb.0_1597332388389_0.7924925058615271"},"_hasShrinkwrap":false},"2.0.1-next-1597332303-7096cba0.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597332303-7096cba0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597332303-7096cba0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597332303-7096cba0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cP/lk3MQztbMXwyrDFI565817JUBmq2eSSnYF6qSg/5ExMWvj4foJELe9SxRwQyBJ5PDf5C9fowaLDuVq9TwQg==","shasum":"9860404b0109af3b193a22c6518fe89512b4b823","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597332303-7096cba0.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNVvPCRA9TVsSAnZWagAAOuEP/jqQLy7pRXdU00BLb/0M\nsbitkLGl3yIWuFdYbjLrfQSH3210gKcGP4LHAATVQlcKB9yu8+0nUw7VKUmM\nAMtZKGfqUfhfL6ZsufgNiIOOYsoZ3SEILqsLoYTC2/Hwk5Q7QcyBesFu2M4/\nSeNRhVIZcp6OuyICyvT8vip5LIaGwfgwU7VlE/AJ2YFnjqtpSoNndwfSAW5c\nyvzWW5y9UPPaeWTccoEetuuG3qDbMe/HT5W8eJFMGIO/9KrjqpVuvP/nIrYe\nh2rOTiFWFyBgJRiNrMKhy45QgbANVTQHpl0soH2X6z4c3STzKLUW42MNuNtV\nr/NaqjaOJz5uHbP4Q0QxhxrjmwFN5hvual83BtRzawL1bVo2qLHn8E96Z0yX\ng9tSF4Bo7u/bnqiNmHQ3g+zNE8HROgGdgJlviFF+sIbAIPA9OGl+fkQfeBaB\n1B9S5M637b9n5X2rzCxitnNxRno0MJ7oHScRZIPsSHPN12V6/HL1N2/eTt4K\nHKJmBTAYDkoJ8WaeGwC4BL3m13MXx0AdWd0yH6aw/uERYAzI0lx1hLauk6ao\n7FzMC/KN2PcVIv5vpF18cyUA9gsVxmRsbBmAaA7Cs7/2uTwmBPK8zX0Xf8Am\nXHjLdfy9GLjcAfmmO8OEllKR9M4VCQqIu9XAeYtnteha7hSpjQQzp8juxOE3\nGgZV\r\n=ZByO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3fVvhavCQXyVDTNh7L/W64hJq/Usu0Da3l/ZUVCfUIwIgPoLh6W7ioFDHpWnKL8jBcvjb+BkfytBWtUm86gv/I5I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597332303-7096cba0.0_1597332431154_0.36170643783759115"},"_hasShrinkwrap":false},"2.0.1-next-1597333863-f211c7eb.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597333863-f211c7eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597333863-f211c7eb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597333863-f211c7eb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-In0GrVB8XmGquN9kjMESjBdS+aOFWtLZQWygpGo/v7OqOyar0yo2oCvj6FpHFJIk69wmJr3Wu4Ra5uo/SzY8OQ==","shasum":"9e103630fded95ce8e7f87b29373ef658fcc67a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597333863-f211c7eb.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNWISCRA9TVsSAnZWagAA7mEP/24imuOXliLz/28PF249\ndThxQMIcgVhqOOrMCyeYjNb0/GkXWAYyIQ/mkc7eY0dF4WGL6oG6bgjQ1usi\nByCn67xLNnL5VIzsZXj5HuNT15ZCzJq019gNBgPrQzPhulYAN2qSGOldBpHn\nNBUV75b/FuzXXFIe5RiOwixIt9J4TPFpE1EhcuNqAmnT32HJOIGpdz3jfH8m\nJJQHlPm/w4B2NHcDw/77ydETlWGWP1KIpeMNwMcQWMQLb95YDh5XV8sZ3QM0\nRAeNQsJ1SuVoELDOEdlkDooOWi17aE9PSOydxhgLmoiKBi6nN09VwO0K5tzi\n2GJMa5OndMKZDsMOQdWPSjsW4Punr4Voz74hknVqsSj5JKm8UVMIDU+HDs6s\n6hff3XYd0cLMt2WSJEqljYQjqvJyzzAitfW0nrmFVp6OJwzrZ/+dG9yTWGWJ\nCTMhwCOQmjF80NFoUKJFEtzW/KL6JCh+aJbDxhSFxEgcuoNkq/TVhRzl7FQ3\n55l3w9lM+VpOtY58sJHGGuHEu/ZDcjXnFH8Kg7SLtzJC9EBFXw3v5e+rDYDh\no/Gc1zHK7r4ep2C7ZFe5pux529m3aY6vZOH4XIWIxnfJ76Iq1zf/qat7FF3H\nssuL5TMJQBG1VxAJ06W2gSoUppTELFez05BluZQFYIXgKDrR8S/C5VvLMQqq\nOxaj\r\n=we0C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFQudRZYh4fpEKn5Z51o47tTh06hnbXix/2JSKm0zNXAiEA/qNG+FkoYgfvSbaCL2i/8ITKssTDt/lHPzdC2JAZAKc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597333863-f211c7eb.0_1597334034198_0.9932162194024547"},"_hasShrinkwrap":false},"2.0.1-next-1597335167-7096cba0.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597335167-7096cba0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597335167-7096cba0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597335167-7096cba0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+CPAQEivWV7t03fUIR+ZJAhLbiJfxYWJO8ugWeOR3CzE1XjYd+QHibVuZBV3I4Fodvz21sc8gIkKWx1aHqP9rg==","shasum":"2dde2f93848d944918d299f0b854632c416feda4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597335167-7096cba0.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNWb9CRA9TVsSAnZWagAA1TsP/1NYusUHkg/0dX1DQuIp\niOVMNqD2rJkDYF0ImBpJXmFPEZOIiHDtqMYI31bAyAKJDiCT2pNoQhBml8Mc\nRfe8rq9hl6SR7Sh0EBkQvXkfJxi/Drg7RNVnSCsSmql9hOEoHazjxdxkMzp8\nEFbrkwVpSeKHGKNPawnOVg2bTe0s8hvPmlf61/kLY6QDnka7fhCW/eJbiqni\nUbC+TmDjqKPrzYtXlh1jVpMK+5Nf1KG/uB5LIg5BZ+ooNJDlSA10bmYzszrJ\ngoLPIYsydyqJbwR6jIAXrf60/hZsiB/WXNL73Tyu2UHQaSdiNINTijnVdNrI\nA9IokK/WVOgAy+fQ0ufwQeVCvz52fYy7CrGnWVEG9SjngHv9VZf4QttBHeh+\n1xlTrHTWYnpw16u8eD5wpbzebEbGHc4dRYxn3nGyJEzOLXt+pF8X78xSKEsB\nzNm7YU40LzPI3fkYsVUg+XGRcoJLb1CCrf/rIs0bD6S9AUafNsyyZJb0t29K\n0PuT1w8j2+rYoKvlQaS5Hwn5oPvtT9ajLa+tWpaIYbFdMWes9NB5C7MD6Qza\n9m9wWDVFGFiRC8b4jWJcDNSnhtazWZizEMo0e+WVyRG1ogZbHe3tSghcjkZx\ntgAlUyMrOMilHEpQpsDPzu2KUAEMOcOhYM7WLFyp3bETuqguuSDOMtsNv3+5\n5QF5\r\n=n/Ps\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIWOw0t9sdSgutJh/2CV22hBx/A+Tz45ArzhTmrNP57QIgcd5uD/QzPoq20hk7dwNeyEodWBAC7DqqvRWeqcPe4VM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597335167-7096cba0.0_1597335293380_0.5002989861934093"},"_hasShrinkwrap":false},"2.0.1-next-1597336578-7096cba0.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597336578-7096cba0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597336578-7096cba0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597336578-7096cba0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PZkYCGnpmqd3WW7XOBAE40JfwQilbF5afnyeIce50ma072lPnGwdeVqCZyGGvcAswomjux77PbUgLiq67ScjAA==","shasum":"c479333a0f60d3fb1af7127390b8e627c45d9d9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597336578-7096cba0.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNWyZCRA9TVsSAnZWagAAu+kP/jZY0AMiRmVItNqfanYy\nKsAbL1467OOcaQaYrD1O1q++qyb0YiITITQw6a70pSgOkiaOfE8gOS+HAAgv\n0JJVl5xC2tco3Ci8s0yiZ7ahtNin+D8YlofjOq2jCyM8kHQymcPnUU0yGctq\n+vrDaGzBfrfHoo6EUDD9y47Izw5SdNbYimTohN4inpldI1nK2YaoJe607tSp\ndKMvnUzj0VB9xifO+qIxQ0hYRDTqwa2nBTFJ7ik3dzdwrXo5ulwwdS3sxSX9\nxfuO0JjvLHXnPEned3kfw8/X4qCG5A7IFsubQiOUx5Ixo7hja4981EupONaR\nc4DjTk+XhJnjZ6Aef4XWeRvehoTCY/4hGnVOipp6H/ub1WzXIxTM6GtbQgBK\nhEr3rLfHr4JNKu8x3R396vymBbQwNW32zdVrzHxBe3skzMfJviMJz/hmF+qT\nH34AFm1pgw4VR+2lpYogMsz7qg6N3qGWqThOvsKorThp5pXGfVPwgCrNA47G\n0x7mPxpT7WHOCkbzN2DW0Y6nMtZQTV/5wbWBF+2rj6RHncgyS8u/km6H2V1V\nhHTc7TNwchwDEwkAj3rzCCEymKA1VKmGMjEKIWwp307V3mTYzwRlJWa7A5U8\nP0Ba9pR41GdGhLylDzROcaww0PZA8lXFkc9gXFSmyT36d6rV0VSZKJc+ekD1\njzq8\r\n=4Ui0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSX5YtKPQEMxjaoptafnPhQl1OzLBdQNz7stkmbSrhLAIgGq9d9TKc/gvdekQhDoRg1OWFGFL3j2WYiOSgv0rsNBQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597336578-7096cba0.0_1597336729273_0.9963407199181573"},"_hasShrinkwrap":false},"2.0.1-next-1597344508-3e7f53cc.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597344508-3e7f53cc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597344508-3e7f53cc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597344508-3e7f53cc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-a2aXzErhdftAP4VVEYBRFNX/N2rKt9WalQ97tVEQQ7mxWxXo/LrnwBCu4tToCJ1VVuHImTCiRLB3BalsjAs4DQ==","shasum":"fdba2d227ce370a36148196f8b1536712097875f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597344508-3e7f53cc.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNYuICRA9TVsSAnZWagAAkkEP/05YhtW3YIPhtfivzs/K\nV/dYttcY3M1HNX4j0DMnLACkXRy/lA7J0V1NLIjARgXhDkMwewt6kF1O0u2+\nZU+paBZMVKIR+K20zzIRYewVFFt0xNsZRCbgVmn5OWIsQWZgRXaq7e5g+pK8\n70zQFlWGqvFRUjMLuMGlK6nF8b1Fxag2Z1XPoUtNvwOyqlp8PZWnF8l+rDCZ\nZTQTGmMQoW5ns9RZ85lvDkQFjfDuqQyYZBVnHb0GL0TDnHw5E3MF27+kuOgJ\ngATE2y30RC9nEHV+u2ntO1Kk0ZjOZerCqef4O0KFbj3rRRT4j4B2vpYNdSu/\nzL2KtfAE2Ew78c3xP1H2x+vDVwa8HaRtug4lzrPC16pXK0R/CxolMxM9bLOq\nzp2byv8kq/gFBHe8aUlM57zYQux3xCORWAp3MZFgBGE5tnO2/5PSAz+t0SV1\nOOamIGexJ9eDCXntGfeYN9iN9TFVBq8eNVGZHmGClB71RutdSk5bqI8t2xCw\nWpDVqgANWKXM3xiUxqKKnDgCmU0H3r2cyzKJztj68+voMg3wUQS4yGldbgSm\nmdGMkob5S4GKavHnxLP+zV29JAzV28P70MfCT1yrd+xf2IiR9emCvZxjjxHD\nxxHa9VxcAOt1xtYhyeuLDk+/+txUb9LyRClmpu4mYFpkDn/okoBso4PcSZR7\nkHwM\r\n=Ag3m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEEiDTKVAI09W+qR0MHm4JGSjMEdNI2EMAendEmNsBfwAiB4V5/LLlLZjWTGjSwY3yCSw3JQiyoZggEAQMWJV69dTg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597344508-3e7f53cc.0_1597344648049_0.966348949306105"},"_hasShrinkwrap":false},"2.0.1-next-1597344989-3e7f53cc.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597344989-3e7f53cc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597344989-3e7f53cc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597344989-3e7f53cc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PXKQblJ+738rOyTcxg6CiCB27uROVyZerJIwPMWBj+zCzX9/XavSL2rYEf5tAajUSVTnx660h+8by90Er0vnlg==","shasum":"315ebcbb65a7c73c140710bb0965951bd253072c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597344989-3e7f53cc.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNY1rCRA9TVsSAnZWagAAvLkP/3uBhs+5b97lQcu1dTxG\nZOPnRSty+qOwk5GBXxnSdH5bkUAatAS265S7bZ8EIAqavv9WxbZ8Yxgd5yyV\nivX0FyBe4uRrmrg3n/w6anSSxI4YF9f2jp8gFY2jmjy1bPYmogDJGR8NNqV1\nRP/bQB/CgmNNDls8ODlPgGICAQVlmN5pFMTPle0CWea3ySOLFBbiKgXJ7uHX\ns27Z0AzJtj5xYnKoJxNY87KHRNccbQNtbs5vpP/noj/5mZ0op6SCPvQHhIPs\nvMBd3s1W8ixiLbwjBcp/BH+ysicTnw9v7Ab4ipc5iPMCtdWZODyfolPR2qTu\nUUs9ezy1CT3jHTOl1rBwVkANpj8YPvdiE+0WkbBF4/8taU6HjkQaqRdCpOKy\nlxdbnsr5yO4dkQ48n858WKgaMYt1NZ+BKmR0pu0hOQAhoB168so6ISG+DVp+\nX2egB+ptFt1tp8pJZvuMIe+n8yhlHWvzVxr8CNxRo5p6qa/CbcGcC0Q6tFOL\nTFj0YRNMra3Eu1LIUnW9S+H57dolccFnJSlgtWY1rNJHh5Tqrhfd2/ToApgH\n3SCgJeHcymQJFpfPpgPDSSJ4KJ/p5/qEjev5HE0VgXmYO7QbReCA7rbbGRni\nBXAd3xmPt+WPbCfTTp2/cwxei92Aj5FbHnVGJivxyvrlzuU6n7uVVPoB3JhN\nBSGm\r\n=rm5r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoLgt4i8knr36B2kXSkSHmIghAQfL9lNixpVXXY5sx7QIhALbZIQ/FVO/p56QmbCyWkchMOAoCwFuixHihUVIUdzu2"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597344989-3e7f53cc.0_1597345131380_0.7683914639259088"},"_hasShrinkwrap":false},"2.0.1-next-1597345437-bd0d34c0.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597345437-bd0d34c0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597345437-bd0d34c0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597345437-bd0d34c0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VG9N+/XZhaBXV3pHR4WgTZ9ddiPRk7CdPUxwaekD6o9eqSKUMxRH1YsIMcgf94O9A2Ja+6AJuFOcykJ5OMogbw==","shasum":"a537134ef79418fd55d7eb7b0e102b498cc76eb7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597345437-bd0d34c0.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNY8uCRA9TVsSAnZWagAAJnIP/i/XibHTFFeHxyEtnHR0\n8xEulwDUoOq84SLtAtTDdGnw/jK6CxOW9A+22jg7aOS8B9pU2Y775jLmfCtv\ndSRnNPbhDskS0Dt7KFiHNx8SJfhY6sGP1XxNOgsWkBFHbY8sfhYcHLRFZD/c\nHHwR3tHaLRlvKb6vBuKU6HtfbxY4C5+ftQRW1x7P5L+IF7NtvJV3A2be+8jq\nHeqgBhMoggKiUST37Chys72tElNMRTzVVCcy6OUAcZQCdNM6i3SVWPvhCAo8\neUpwXUXXq+SnmK16CLRtFJ3OOiAh0pLHbtXjCEh+/8BHF2ixa5WlLvuSxzu/\n9tK0QSWAzN5PPzHg4DGI8a2ozxMQVhE5SVSRREYDhGnAvOwv7jg8wqPmeC6S\nn2E1CkhZzr2LL9JJKJQBXAFXc4bvjd7cr+osu4TYdWAvvC4TXuN1SwxozJFX\ncnPw2qK2sRAG1n11AQC/fNDmeA60qp9bl/0oVDb6F+7njwFMKf7mNM0oC3Gb\nx2gab9EaviXjhOd6mgkPgm0kaqpX4Fy38gu44dmBlMA+Yt1DcUdZoiEqvnBF\nJjIC4HECa2838pjTD/UDBFiPCi/dnQkrRN/hS/KJONXbNvo3gTX2UZjW2qAk\nWDMC1Y2U1kDHX1CqlNY/tBREa2d2NjcqcELeIYdSaV9uO0UFBrynMJB7Bhr2\nTeMh\r\n=BqPo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICTr8XfKgMUe/h/Eec8SIu9SLE7BbDVMwf0eB4ubTGdWAiA3HnCjp3l3SCIOTvkTVebIQqZbLCqA1r8oEip1fzESyQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597345437-bd0d34c0.0_1597345581865_0.16569157546200475"},"_hasShrinkwrap":false},"2.0.1-next-1597345983-759f44f4.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597345983-759f44f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597345983-759f44f4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597345983-759f44f4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GznozyzfD3Jbycg+BUUK9mTWs8VOvVtd7oA6dcC8eSawYsXKLw6zwjxZsbExTAAKZ98lMCVGgUp6ljoqt4wRyA==","shasum":"e8ade45ce3e46f3f06ea5478efa715b3c5c4b9e3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597345983-759f44f4.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNZFPCRA9TVsSAnZWagAAcugP+weVbih/yh25Hwa/lh7Q\noKBTDzK9b9MlzsIAxAnz+rrd04I17eWtLnIydiEzuUogZFUUoLXw3oQ0cFll\n0J3AHRDNuiCpvdWNUnBfQEEA4wyptWQi9BfUlorUZIOIxwlQCVterh8c4Xnx\nlLbw799aOLO31PSe/uezUE+J3jy2zbi93wsG4J7vcQEAXmHzOGF+rgxDUWlP\nQ/LDgUlbZFXXBz3LhEuxFad17nO7CxedNdygHvX9f0JX5HfvJ2eMGs+O7okI\nyarNNqQB+G/V+TqUGRKAgQEcXQXHLxkha0V+NXj7pE0BSJiCkwFLCzaN0sG8\nQKeg+zFcE6Ay/qWPGlPE5aKsLT+QgIx3/2Hd+CBJr74+ijO0k1YqV8NhanVn\n6gfYhJs0tdQ6Bf3gQK4iWAR7ppgLl75pLgAt6C3WULeaYvN/f/RZI9kwx8Z5\nkkhJjnFv54YmiJ8vFcRrWkDyNcsBeZhS3g9rLMD9Sg7qGaT4FJQAqBLQ8ajF\nV4mbvspfSpq92QbdfsCaAEiLX6+Rjrq4wzDNoinW7OmtCuBGow8/def9qzrg\nK+2//OLmMQzY7Cx8t2xxxt51VHWEmY2Mdt5JwtrcgxR28ju+iYhqBDxeDQrl\n65Opqm8fxhqfe7wS19jywyagZ1HjS0rPWzs2zWn0hQ3/0R1ge9YRBGQWOobn\nz/Tv\r\n=U5ym\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAg6ZiVQgxukdyiBS/ukpQDk94fRIeg+JbrMg/2mkYUdAiEA+1AO69LU39mc413xrNV2wyc+Art10Odobi9Q98SJUWg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597345983-759f44f4.0_1597346126673_0.5560700879072398"},"_hasShrinkwrap":false},"2.0.1-next-1597346104-13163c5b.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597346104-13163c5b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597346104-13163c5b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597346104-13163c5b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ac57P82KmhkzNJDPMJutE4RPoVZvSaShAuQZp/834D9pqGBxy0T+SmvHUzvmROF19/yUouVQClJizZhKMmz6BA==","shasum":"d6729781c9b9025048fdc6449548ff584a2e0743","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597346104-13163c5b.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNZHECRA9TVsSAnZWagAAVeYP/0vRVEzEJ0q9C7TvSX5u\noshfNcO9dz0Mzre4YQtRobDkz3vG1bIKjbLGfD++VaQDbh88eu7aN6sfzmIj\n/mF7USHjctdu29GpWirsuyPTJIfsWjnS1slF+ohSQeo92mC+lB59Z/Rn/Ke6\nPn4lMM3hdliqUKKL+pkLzCp2LGOA24Rv9LdoF8Gn+E4wOIHyxdfLx8X2ngP+\nQe9xBZJqcF1bhbzOLkmiyE9nzFkHUSqmbYQbQkoLaHo1DZN7bkYwW1XkLDG+\nPj3njnNMQlxKps8BU4pbl9YrFVnfdBJXfzm+0+Uc54Kx6qwE2N+cuSolYr3M\nehCtFz2Tu014qCClyc8CWxSZ20+yc7QKzhMVvJCW6VRJCSSk/9uQvjPtzg3N\nF1m6OcOjwnmuxJPSSlVlXtDbXgc+9gPSxATe11rkdNjBvgxeUBuDnU6pzV12\nDIZORJep8K/sCFTHg8QKYu/ka4ofIicUUcxlsw11ST+xbFfyE07LVr17NpmX\nx3h5lyTvRXeJSH3fUMGSv1PPeDLEomQhQszd0aZhLotIi2zGqSlahtVbDiLL\nr2SH/Uf5dWFTP/U+lNAkD2d0pR3bmrcojG6AAQ5CRaHCYuNdXLzTsntD3xDw\nrZ/HMPMvOKLLufv6FYpeqyglTbmC6euBER7IDDv5c799+CO58uKBvzIRWtSU\n1B6d\r\n=yQsG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/sSA/++4WUBPRW+SZE5/mRZ1EzXGtkIU5+X3XXITgQQIhAJo5v/TRMV80X5JsWUhNz2OjiR+tFlOQLEE6BCYAz1ub"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597346104-13163c5b.0_1597346244137_0.03647358950304391"},"_hasShrinkwrap":false},"2.0.1-next-1597347302-13163c5b.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597347302-13163c5b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597347302-13163c5b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597347302-13163c5b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-S0ceohkWAbnpcK/9BHQjc2YTrvWNytGr+GkwB/DFYjVYslysfs0ndiwPA/qF98mdVHkr9w2dk/wUUrtNrPIt6w==","shasum":"8d48db7f7111dd0f1753ed3bbb66aae05cb2199f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597347302-13163c5b.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNZaPCRA9TVsSAnZWagAAhv8P/3jpMov9wT9Akfb4JDYL\nk+RuDlj0cAWrOMdjXzs8YjkeIKr+7+kvH3v77YylgU7sbDWurp+cHNultOIw\nQ2UbidNi5afXSyIA6TrHUkClcW+aIwTJV2yFhL1ZFhHAEjod6aiXt38s4FW6\nYTwNZMegT2c6bDGXnfYJ7SdrRNRFLR+Dv7mjug1fazmMP6B+DCb0f4PDjwhO\naOaSQwj3OMWaD/B9G8LI9VRzm7Zyp2lN9bgp+sc8/D4B4fmiDzjKr1o7yClH\nD705G2W4kgKLZE7L5pn4/PpRYqRv7eNrgd/tS9jfHeQOJhlhEm/4b4kVHsaG\nI4ye4TVM31/D4T7PE8jvnJV82xTriV1Q6fa0fMMHy0dakK3VtR70Hou3+BXk\n0VZbsTom0rgyjHhEQ0IBPEwxwHRIpCh8IdhYCyMmzNl7/y4z3M5EuyRl0hPZ\nd3kOz21VgkktUqjYirJOevzjS8wMZZlBh5PXMkq/4cJtuHIWdUMGjaS1tP6/\n186iIXs7QnAOH17vCZRU+r3jWU6IrtEMUOWsf3zkeDue7nvaaKsDqhNJ9vel\nx6IF76CkHVwIVr5Btzo1dtR+H9mNEoMn7Wn6DPxyshGKmhecxKwcAinUZjQl\ndqFQXGURqmdyrsBYirfKnGsWX/q03nhbsKAyBmjmyyZwCHfv4s1Cd2pQU+NS\n3ULf\r\n=r+Tg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9TEZD+QB2+D+Ae2JULm+Mg5i/1x/Dr2dJt4Jz1PwaSAIgaQvpL6xn9GuRn7RYvyieTeInr4TlilbDsU22TzWY2iA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597347302-13163c5b.0_1597347471036_0.5040997993761898"},"_hasShrinkwrap":false},"2.0.1-next-1597348775-4100afc8.0":{"name":"@xdn/prefetch","version":"2.0.1-next-1597348775-4100afc8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1-next-1597348775-4100afc8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.1-next-1597348775-4100afc8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+6hYl9NcDjAjBoKT1ywTR8WRg29S4gHm6zjWzYLi1aWPmYrK3P6kxLTGl6/BIB0FobDAohaksHWbOXIofdbWnw==","shasum":"bd9006d0598a61271e6ecb5cbaa8e23f4af1488e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1-next-1597348775-4100afc8.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNZxICRA9TVsSAnZWagAAtD0P/ivUiGcujWuRm+4pnjWY\n8K5/6coIpWbT3HZdP+idg0jvqzcKncUv2g+qSgFNA8qhyLF9RxEcfFL/sIbw\nyznIsWO9hv1xjKhsVH6NOc/8S5fJtA3/PWCRoQ0TeWmLF20znqFeCn9kAMel\nTZ1RkSZ6kzA6BXl9sp4pfKS4ZE0K4Yv+b7WxJpd9w0GHQuhNvlIOWK6XKazJ\nR15kPvDcikoOp9EY2/zIyhfSR6+LXkKKUtlFMjo27iWSd6o3rAVsLoJken/y\n7GPTi8DUwQ+dPagU1Asp4jVtixx4uUQKVW7M9Z/wfABQjDIrkeaUE/YPkilN\niKmjBD5VPy6R/CDOcWUVkggAwNmZWYJvf8NoouXJd4SVyZmBOJRsEkOx/MU3\n++LvIUBGxavkFzZ8dLQXzIpcIhmo4+OUvaK0teNBsojxGLniMVXa89ep/gNX\nVJpFd9S9ouljgPWURL3BNTr0nPy6ABvuAKGQK1IK8fCtd3PSTeFXlvGUthdO\nMsH19bY7OW+n1+VUD4ehnyd6+MQ28Qp9ObPvvnPz56w7+uhg20Mm7xw6KVN8\n6U0mVAKLfQGkp8Fi7/BYhUQf1iLpO1Vyljj1u/CTiHn/NYnejLcUz5fpZg4R\nLpN66et20ln9CTvIMDY1AQKECHz0rvUfGgMWAACEy9RlCLYqd0rIihXglAnO\naxwI\r\n=fPfa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDwoDQ/I3tN3PahYwUQr0hD+dkZk37imYeV3q6RWbFYQIhANRTwj89sstXt/jiZ02dudXFxNrlITIzdxQUZZph0J/Z"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1-next-1597348775-4100afc8.0_1597348935936_0.3241027457340524"},"_hasShrinkwrap":false},"2.0.1":{"name":"@xdn/prefetch","version":"2.0.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.0.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-J3Kf2oFoYEmJ1gPh4zE2K4/6plDT2NDkm2HXcjnyovjGMYqxwmSvR+ysPzofkSt2HVcqzyvMCLQ1bzgZxnbTfw==","shasum":"76fb480c092ae4e2805fa85b7349e62b426ffc55","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.1.tgz","fileCount":56,"unpackedSize":104106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNaDoCRA9TVsSAnZWagAAmnQQAIULBHVpQZRU3Xvtwf7Y\nNwWXCBqnGstEGH67LRp3ol7waGfIHIyeqfxLJDL7+O2iKzPxgrecEaRN/zOU\nzOnuKln6ytYPqv7aAaX3kvhcUpoyy2XFMhCg3OS+x7Q8kC+o3VCw6r8WbTDO\nhhwjZ7sJTHPSXy3+hOoQWhX3FlUcQxE04ZtTjF+JU3oUvNAAA+K1itYledvO\n02yJGmAdEsWBAo7ZELl6E85hEI/irknkup5vHAJZJq3cAK3dZDdbOdhpY0+a\nVzpy0yJrGTONaU6Bgz7DhGCGBytLEFNv1CinsOEStjJdO9M0ctEGswyvOaOM\ncuRAx0FecVAvgVtI8XRc9pnbSN0JHRTHJM0zm3VmaWEfdXtoo1+vJcLIsCoT\nzf731akhpqbH5PA/AzY5pazstKG+1eRl8G90husgv73RNXenD0SGPtz6yaCx\nCrtcoborpxaP2WOMvFFAFtVUY+6oQpm5Km7rGWXFGsS1aBNGEvu0vXx2esVg\nq6Sw5a9Hxf6THW5GWfPaH8/Wp3HeCLghDfCt/+wCky97ouo1l/XrxVUx+3ph\nQrjOHsHlWTzEdoAv87i6CALjq4CSeAsKAiYIlmUK34LMLcDlolNtParkPKey\nz8c4v/hF6+b8C4lJjh+0BRhjqw+AUm8Etyod4I0/l5yv68m1FdN9K2Weu7UJ\nSAmf\r\n=760E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDFpNb88V+g2wfOOj+AF7iAn2PSPSzkyPu9LmVDQzoUAIhAK9WNlYrSw5A2fdbGmWMOpVGA3ebvfOcLdsFDzIvqN6q"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.1_1597350119817_0.6038425252146435"},"_hasShrinkwrap":false},"2.0.2-next-1597349994-566495b6.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597349994-566495b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597349994-566495b6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597349994-566495b6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SrRlfkKzBgnUH5luodXDlwNtY/0DKJPj0hStx57ai9z4eO1CbNLqVStGMwt1krYhhyV2zLu/vRTRQ7zh816Oig==","shasum":"2b75a2a9c074cfc0433712c82bd607940ab2362d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597349994-566495b6.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNaEHCRA9TVsSAnZWagAAvV0P/RhMhSxk1FcwnRS6AL6r\nxhJncV5eZkPaMqYEg0l8uRHzkV8M4fRO8rE0j81p0LnED9jgJ0cWTBvM1K3f\n9EhnjA8KaGJvsROhRHz3h6Ab0Il1dDHxe1ua6SrSofb61g4GYHQU3Yzd50cP\njnRJFksTYqOfStRH54eeHQUIPwDq+uwPew4SO4rilqgTZj2mnQNDiXgFtG8h\noLYhNm8ep7dOFCLscJ5g7zofLuSqxc/vCV9S15wjdNs3xuQb/t6MsusbAWp2\nWvj40rsdfe5/TDIqebyuK05tqhiMJwRrgGQ5ljB1+rYbZp6/x0rdILk11U3x\nhdGj+C/EWacaaL99gZKihbFNEU+iA39xKZlBNzFZdvnSESd3/mQ6satNnflX\nAZXCag7Gmz/r7WCqXsnHNTrjLyEty8Be3waxeXBWM7eN4iWdh7sgY/dKwoeI\nmC1w/GUN5OPmPOFlZqp52RiW6qmKHwuyS6pNDoX0WIvc08FhBZgsY6ztWqQZ\n2MvIEwjWA1i/MZohZ/Tm+K4kJXm5fLkbPUvCT5EOLJnZ1dx/+s+m+Pe33nJu\nQSS6a1VcORk7yrbf4QoHU7iDoNjEp8b32O85uhOXcRyQhggLVKx1l7j3M4Vv\nBo8V/m50F/uxJ/u4FX0GZR2diwFSeqvIGzc12XsH7nukIolhz63R03Hhu1+T\nY7df\r\n=W2Xa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbUcjvyob8CrZML9hoQOFb+r5hm17KV+e/fbJDl+WkpAiAwM+UqH7wy7rZzO5pj53ysaqXSxJLnFPM8u3qZcXElXQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597349994-566495b6.0_1597350150598_0.5210473686146839"},"_hasShrinkwrap":false},"2.0.2-next-1597353011-cdf8d0f8.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597353011-cdf8d0f8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597353011-cdf8d0f8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597353011-cdf8d0f8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-n5yOVZlpiRvEa8mFmf8ZjhhuIUNMazNa++Sm5JQH76ArNEkgVnDgo1Vwsij1wOEW9a6voSfaKnG86t6uhJW5zg==","shasum":"5ab1ad03e24df67c0e0e15cf5d0393c0ff858059","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597353011-cdf8d0f8.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNazMCRA9TVsSAnZWagAAclEQAILegy6mhACUwcfHtjIk\no4lDyKVc9o5LtUX/IFiPG8QgCTpctqOlMnGSrMLJzf+fe20aY+vpmpu3qv1J\nHbuf3ZkbVoWEgcyVNWFNaK1h3uFpqS5CmCVfqAsR/+Iqpb7bF1CMxxgFBaD9\ngrmxjaTt5/l3uSbbHu9jzCS/peeytPbah2fpaCRB3dR/e/bGQbctuf4khXwO\n4EQzurIoxoYKc26Hq9aqb2p7r1PO2IeCNUsfPkLGHPoLCRMxJPxZWzQSBawZ\n/h8fyATe8y+Jg2o0xNfa0BiwhM/GVCBHVXT9DmiKUcq8DVYu5QcBTshHZRrB\n5jR7hqvOzcwInvJXBqHy5lhYgaWee+94NILbZWGtMAaZK6ublt7fAYaQIxZo\n64hq5kZvKSg+6R9So45riLm5wEFDrTPGgiszJNO143oPtjbiOJeQexe9mR8O\nN85WMSEzDhK1u5TRbFTziQbPkluEP8ZU+G0j9TRI2q8QyMHXRg+REHFdXC/s\nPVKzOxVdVh67jqExJZZWeg1F0vw/ONqkPPvVfWYA/iFTXFvQ/JRUWLjwNWEZ\nXxfIH8jb2gHf+0M97tgAt+cG2k4iaS6ldDCLg8nYpliInTY5WUaGam6Z+x8H\nwVEX0ckhEyztMoM9JiksRlY93vjVe008W+9MFGiMj6D6VOfB0cMgZX0HiNSe\ngUwu\r\n=4PYu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGt/xqO0z0jFIpULS2sT0MmMIAH9LyiYebkfmJv4d/gaAiEAg/JLrLVl3AuJbSiS0rSs7Aor7O7BeBt5M0uXf7lacXc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597353011-cdf8d0f8.0_1597353163530_0.9316857771378879"},"_hasShrinkwrap":false},"2.0.2-next-1597354003-32c76c10.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597354003-32c76c10.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597354003-32c76c10.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597354003-32c76c10.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iwMHSKZ7VYebQI2yDhbHNHBJ/lyFRWDHMsSKKMIqmxQt15lyQgfhLoqyadJLAr62xvv0GpZmrfRHl0KPJEMvlA==","shasum":"b09120759d3a837e613a72f3d234c29542101dfb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597354003-32c76c10.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNbClCRA9TVsSAnZWagAAp1oP/iYswq46gIlpZflNs5W8\nPR19VUi9mgOXy5v4n7qyFyw/iCCCNDk8Ly993jGKvJHKr8x/QUnQ1Jo153F/\nT1F93g0UXzrNG8auNbSNHphUCXI1FvI2Ki3ocLExvtIjg1Q20zLf0/kpLc+N\nS1g+FmBmXaIsAohxo+mZkywPMgDv0WvvHgdXc3avyr4Mv447MCPu6HSEoNVT\nHPjaexasbzoEl5BvjcRI2yyc5nLKvKb67MXTXBjhsLIRosn1cIqFVl/gicnF\n/31SqZ9CFMv9G8aAMgPMv81t2KIXz3ZaL3ddeQqSqQBeRLx0c1mF+V/fVJ/Q\nVosSkTbpExH6ZwMY6s2oAm8/7Kk67mJ5Ks8TkL+IAdgHeUYqdeSYht4jJcz0\npNl8EkTqWw0d3rao5MJ099QnqcP//Y1FYK/xseoTSxla5fT7k8tP3QzMwFOU\nQg7ImeklwcppttWYsJomSoa9Ul8zaZggvfBWTWJy3oeott2bzgMIkmSaIAbc\nLq1wEWpvH1UlPhmFBXNODso/IId0qGVWiSt/3NsFdmbvoD89cfG0K7+U9JOT\ncep21kfAyHhWqMdAj2vrQYQhegMsLbh0dv7dbkYYeo1HGe6WkV3EeaOJete1\ncKaG+9dhKjgecE40CmQbJ0FYVEL/YWNjGA311Bui+kw9U4owwis55Izbag1+\n6fBI\r\n=so64\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsZkhZt49oPywRB41Yij4/X9rB0KOhYFjXXKY1WJ6pawIgVPecECT/Q0A5Nqc35ecFxw3qvg2+NblNv/cg4P7AgSE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597354003-32c76c10.0_1597354149459_0.3348809355495428"},"_hasShrinkwrap":false},"2.0.2-next-1597368267-af8f77b9.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597368267-af8f77b9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597368267-af8f77b9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597368267-af8f77b9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WzmR/iQZysc+zo/3TZNIcTtzwTLQgKvb/xRfs8twdNQwNMMC7aohS9ks4bS46XQQ6mAkjqrR/KXSQUkG2WDsbw==","shasum":"ad45094a05d2b8b8980076f1757dc05437c0145a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597368267-af8f77b9.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNehICRA9TVsSAnZWagAAgKkP/jwB4h55yT+L5v08YO0F\nqvBnyuWlE1a9ie8XqdJV3M9oP4kaVeQdfZHQxjal9/d91wcmVHGxaILohAce\nAvjEyhUMh411JOmXSCVJY7LepXoS2akJDBDpZOLI8+E+MnicqqFiJHjtI9+I\nM3Gyuk9JxIIGSMC7A94aeJNfPpw3CcIXRqltW86UB1bAUZ/W3bblB/5f+hdm\nS0pPHsku7CZl+l+iwSUMUBUyK3NIrhhOzhGiOd5sUnNQ/SSWDtEZZtgh3m21\nurv1kYaIhs3/8v1ES1Z0f17s2JW/qqwnW1d4zzGxpiuKW4j64zkX8sKHzKJb\n+01xKGt9d1LKsEABIRHMB8FN4gsu4iuqms4DW3pUy9uwZHaU5lSlvJu4Wo4f\nu3uxtdatmmYLcFSZ8S9r2bRI0GzBp8VAvyox8ABXROAu+ECgAq6RBI17Pj9b\nagaImjlrwQXmAeQzOKetSN6OShFI9aS/h4HBhMjhkcYwu2ohleLit/aaxMGy\ngPO65bNjaT+sx58l68j8XBsCVYCZFoFibBGz7Iw3FF1mVJ/nIxvW3/uoRr0D\naPZj+o2p3zmwybM8DJhWT8tVHFRNup6oFpkrmFlbLBQVCvZ2Ushs2IxHJwaM\n6H2DrxAaz4ZTf8lQvKbhTLYnEv9ttgmhqy3EDPZSpJRoPdmnqXDCafW5472A\n1lD5\r\n=wkqb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpx3rJG2ouy6NMIBl1xQ+lKZm0rW8VxFcNz3nB3alJrAIgWkamdIOP9KV0aZ9RNYhRKjdUX4qi+M4y2P0Ejx98byc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597368267-af8f77b9.0_1597368391785_0.7127122274546946"},"_hasShrinkwrap":false},"2.0.2-next-1597407428-5889206a.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597407428-5889206a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597407428-5889206a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597407428-5889206a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-u40/F6rhbBUQqmr0vE5x/gWXFvH0wTpjod6hXGJOkSwfZ4OhefL4q2ao8g0KiO469epDClrVsS7EUo86ApYlIQ==","shasum":"e416bd20058dc6d8e5f0a2651077b7d954cc01ef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597407428-5889206a.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNoFQCRA9TVsSAnZWagAAM7YP/iB1s8DepsqpbrkVOhS+\n/O9HpDhdD/5v1cS77v3oM9wsI64NH1cufSA8UjtLTyp+TY6IaqX8CNJiMsDq\nug499ILMbQDVgxMS9Wki4DVkeyL07mrzjdpWmLdvU2pAdl6fl/DpqQoYy/3m\nHrCtH6qcN476I3G+ZAHxTE+oiRyVdzzp8sOOdGRBJ7XMxNIqJQVxiBjKjGPq\nvosDWqoPgpLZqJz461qyvXiDpqm31b2kAyjLsj5sHB9xUHimlDPNTnnfxYgY\nAUPmGQ2xcBP1b0k6GmiyuBb7Qyrq/zshPu4VwXILtby8uXODqpe8UnAV8VXd\n/K01+aMIPL1SiIBiXQiBn/vzKUNbnRscDMmNJhqBgx2wW1uWHF05AW05J73j\nDqv74LqEQa+n8AzIox4iK2yl0klwUo7X+kIzEH3fve6hcVM10UVxfbTRG9tn\nKY8aHsHZzhuQe+fKcDq8zBTi1W4Q+WXlDOQGp/yxgob+pkNSrq0VMIXck66/\n+9zZnWLGrNmJlBZkXutnuMuVuadAkw9bvRIAGEMlUNMUYAskWV5muJE2hlWS\nzg4/pdDuQ8WYuaXSK0YmPTVfo1tXmidXA4xeag6Gsh1qYmUA3l4LHCanEFCU\npGHp4sklFnKUKTdiKiqMeBvHUvCQ97MxEKl025fNextY5kM3LXy8+bCzB8Y0\n5L4i\r\n=9/JJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmTteiHqLq5Hyv5/utn5j3tN2FWwIJADE460QhzPdJQwIgbttJa54kALR6x6lhfnz7ViQWM1g1/Ujj43vgDp8tMiQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597407428-5889206a.0_1597407567516_0.7906391989152053"},"_hasShrinkwrap":false},"2.0.2-next-1597408349-9e87af75.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597408349-9e87af75.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597408349-9e87af75.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597408349-9e87af75.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0hlseCsdPZqa3yXpBhMf/m9TsihweETRUZX0s3Q3E3U9hdaUfhOjeniujmHBex7pUeJt4rukjr+DBPJsfHo33w==","shasum":"def2c61ff98bd436d5a9102f548236954d9c7aa9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597408349-9e87af75.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNoTgCRA9TVsSAnZWagAA7GAQAIMPw/ayC7EGFRZY93bd\nXQ40/TCW2BwgxXnh291V5Qbb9kftZQJ3NsuxDoEM/WEWUlUp7LDb3GHO0Ww7\nc2XHEURJB46amRmN1TP8ny7iC1ANUo94Bvvrr5TN5nPIRyWFhXEylvjC3BUS\n41EDCnszUEn8Mk1CvS2+J4b0RD4ai5zuKfI1e+6cDDWas+cxOwRRbb86gkhg\nxb5Ba2s7ivePRnfDW3iPSvAdF+PQ17khnoleq4G1eMxcBFUo0pJp9kJKNj+F\nl2Y/QmbstU8Y3F5+mO1kSQj1lssMGbDuedUpgR7i6qZyuyeeDcV1dxzj4+Zp\nUwMe9CBbavokG/cDHSd0nFscjfD83YRbcgZOunHuY8DlZiJ8FuxSNY71VlUU\nO0F0XuDjLCx2ZBk1yRA/AunxJKYxFAj3o/KohEXBmbh1ztiH+hGSWW9roTTg\niUHLrj1goCMN43VZGyUUg7WAdzZiFCm4SMWxx6aDxaRLHYEiflLrv71E17yc\nTSyFv5+SBnRxy01CkqaLFnT0/MM5fd+FU53KFJkxSPq7FUMf8YHi0+rBYbC4\nWb7GgP+8Gtvp7HWthRcstOJ9VYgPVETaYuqKS85ndLt8E960mLlvPBC3/34j\np/+wTEyoFp00lMohnTVpxIHckJfJa9KazwBW/JpGrVQVXsbls5z8sQVgexr/\n1TiD\r\n=Cosr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPn46cS2HpU9DLWc19ve71XxQkXLpkGM3PYA5y7ER3iQIgJqJM6zztUSVy8qmrlXQaTOuKQN7/U6o2WPCNhLrmc1A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597408349-9e87af75.0_1597408479552_0.7626048716875686"},"_hasShrinkwrap":false},"2.0.2-next-1597411199-381a2087.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597411199-381a2087.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597411199-381a2087.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597411199-381a2087.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iQjomuI6LSCRGPT8YV9HVcgHn8EktmKzYNPUJls1zG4nlqewFxN9wQ8BopHO+whBaFOUX5l48y/l3ddptsvI9A==","shasum":"7a9c39fd1a3fa2ca88346c4f7e8658e15671b4f2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597411199-381a2087.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNpAkCRA9TVsSAnZWagAAJooP/i20JAJHl8nOMgZObl6A\nOplrlBydKP7Ku0i1Sh6ikuL/qEoKqG/sBd2KhfiW7Nzk8zs5QVv9AP972AON\nlqiVqZcFTJRksATgL4RuZNgPOzwF9waR8s1qofgKH1zv68/l8JOIdudG1Hm/\ndzcOW/I0iOmavcqvxR+z48+e43SZocCjrJgT2Io+6OrgtqVSJKk0OGn38LfI\nwP/WsfG8RPPB0tf+4CE6sjwIp9UDpbwHT/8TQHQXhz9CwQxPGVgimFFlZNEl\nGYK08gpElZcI07OvRn6IWPLRIUJo41CgQj6bHcQBAX/RfFqkJSquo2Q1q8Is\nC4Ss9KK2k0WTBFEEoZm5w0eWqfRHfsYJzzDq+v9nGq5BqGDEeZNZamyUntmq\ntqS2umRzf2XlifxH680ALsraVv2Swrf4eAVZ9/6YyQ83Smad0IIx6nIyi1GL\nmr5bs4CmEZbUYfVhqty1Lvb96AXPakk+PfHMZzbUeCRTPouj+u1cQ/gKtqgN\nd2OoW17hpQ0YKaUXPw6OLnY0S5E6HLR7xPhB9wurxOkSsBmcYV7N6khTp620\nusc4hsXKFa9uEu3PsngvRmhAPI6k1MLXLSYTvdcttNQC35tMC8yxRNQmweXY\nMMah2NoyqGjOPl2eYUMteybk4r66BnLRm4y8XPJf9PB32jYR/d9VX3QtASi1\nHjmS\r\n=D2CN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHtzIPxgRgrBU9QSdB+Jxy65qsux4WUETHn6L+QkYugcAiEAnlRr8do7b0ZGhJgmjfOGd9Jubz7K6k8Wt/mc13n+oMU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597411199-381a2087.0_1597411363540_0.17425114619552273"},"_hasShrinkwrap":false},"2.0.2-next-1597411881-828819f9.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597411881-828819f9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597411881-828819f9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597411881-828819f9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VuOf1hxXQSqHkjOrrYnjogoHmarrXNH30Pn92b/vcZ2rGazMihaE26Z0ACHKN/mfEBdRnwUA4qrhH5VQ2I8VJA==","shasum":"5139c3e02470b1226b3e36ef90b7508e25ad1c32","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597411881-828819f9.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNpLVCRA9TVsSAnZWagAApKYP/3kS6QWq0kdIRVAnjiaE\nrYhMCzzu8bn3QzrqsfZ8tQHP5HeGazoLIVU7JQjaZOJ36x2cfT/3KmIXXmNE\nNrDHMaha/MI6vXkJxtDkilf+u9RG3SbkSuHj0cO3Olg4M8yT4NdQA3RVCCMl\nqkSSjaXd0zaw5djHt5EJFrxvtG6f+bg1ZOULuxok7wBHXy8tKVKcRBFs436C\nAhz5c+3ak58PVIA7u6WbY1VfWeVDoT4bBiOma7SEOA9i6jbKHiwabfbgah9h\nuknbSnrbFRucoRLZHQmVPn8qMKvIND/NCoW39zmLy2tzWQuEF+22xogVUXY5\nmaynBVrNzJvFBhgTp9LJeacUmNpZCbPVzj7zzcwUtnNUvNwGyQntwNj/xpCc\nxguN/r2P/nytvLYejJKrVmWutK72+oykT9hjfJeqGWHRmbhNKMN08tYLzFlS\nQaXMsV1KHT904vH7RjLYMxeFne0hBlZ4SKNLb8gpQlmwwjVq4fmDdhNI1BAx\nBpfvRE0VpmO3vJQbaLRHORL08/BYcNoAGkS9bBI1UMTmn55trXbQ7ldIxWqp\nnAxzJWuAWFz7JKNBT8vfXJA35sYLEpOWPaTVMb9c4Z6kjDd1EtaJOR3u1phl\n2GNePxbgkDp9/EwZcYnK0jkIw6Qf6eC3IbBycC2/7FEg9evaZSL5Nxhxtt/7\ni+Km\r\n=OIMg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHAXdvqM75spHQ+s/DA+ht1fb8D6T3eZvlfo3Hwn1ZbAAiEA1AaJTLqcWoORnTs5x2/L8RKkRnP/m+kc4jy4Hf/2xIU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597411881-828819f9.0_1597412052938_0.04740069834763183"},"_hasShrinkwrap":false},"2.0.2-next-1597417313-e1f6b2e9.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597417313-e1f6b2e9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597417313-e1f6b2e9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597417313-e1f6b2e9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ro4Oi5pujzp20rwd/oKWBlyZ0fhK1S08USP+Rh6e/KKMDds/pS4o1/JhU5q+7NI5vtEm5dgKpI+lOOMTxzFG9w==","shasum":"1fcf83b8f3b96f371c5ab46d41bd5b420012c799","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597417313-e1f6b2e9.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNqf/CRA9TVsSAnZWagAA8RAP/jW+VuFylXc2fKiKZhDB\nzM+tCmr1yJdRd0wynXRvffUwd4ZuAu6n5c1VJIZHsoeWLJArZtOMwgK+DJSs\nJZau1ZEDyFtVDVZb77R09qn0dc2nrtDHnmVc/yi8FKAPq+shO2Nrio3f2dIg\nWnwIytZQBLK4/SZsZvgWNI2/RoFWW7LyMymQgxqbRvVsFEfXLT/Bo7hElLBf\nPyuKVirI710Gb2zbZJVrxZSicF16SLmT7QNnPizCWY7uvRuGLOG/rayyFd8M\nlJIz9Bn4Y07YxzEVujspzRnIq7LJwcQhHUMhmijt1M5h9IbpCHuDSDV9HY1W\nUn66p5ISMRZOra0MkngLlW8Jzb7Qk6LM4qaJqhDBudLd4LlXigeVaOFBQ5wK\nfUeh2CcFJ5ETc0YfZCgTouPMOv1JvRsnVSn+speUmd5pfmnRyA6Nvd+YwZq1\nUHCeMbqy80Fqd8DFqBFDX5Fcbdsvmu5jsNUcUHN5IxWuoIJIFKcnTRBX2uuf\nKJSZOg3dVlb9AM02qbDggXQm4mO1sDmqR+eoyk53r6JJqN73uAufzBvdJSSi\nkPORmjFozX4PXpq+wh+Tgy+FGXehxaS6yB03no2OLvfDXP64AbaNnY9gbCXp\n4i0LR8qTRKpjGdwSIbcB7aXYAez6bWqGBfBz6MHonr5V7+OyJNYerd/l5S3A\negp9\r\n=ktbS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRc9F0l3V3153nAHwjwghi71SxYJyJYQ/v7VZNkoCbGQIgRma1mTjqBPfChy6XYdGLGBnwiLitnQN5aIf7prCsdmk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597417313-e1f6b2e9.0_1597417469200_0.7322203498059712"},"_hasShrinkwrap":false},"2.0.2-next-1597426437-bd242fea.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597426437-bd242fea.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597426437-bd242fea.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597426437-bd242fea.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Kbc2kp497CRL6wQS2S6XcuKIgQkhrU1+PeLlLAK35l+BSUj9ceby9p9j+er1KVIajQ1bV/imFVjH5qcHPKYTvQ==","shasum":"704ee7dfd5570dd3c8169e8f0538280054fb53f7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597426437-bd242fea.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNsuUCRA9TVsSAnZWagAAT1EQAIY6Nez6RBHDwIsgMKAx\ndzTUpi1K53+VnrF9oYqmgDarVRzZy0vhwrVwukvQDeSZuruX0y/j36qrUjJs\nmGK4YPgfbSlCAAv0Yh/Wm7ihKLIIkLGWfqIOkJmBTS5AO7G64sMwelS91iOP\n8kUtBiDqrl2477Z/bp0Zmuxv5+o3qVqElYwrbbNv+6x2Z225um1Ib9rtU+BH\nbRt+rlZkNWrDps2ZZaTj77PHiDoFWNiUb0CdWtLpmIV3t5ha3rtJTYQ1aejy\nRLgsty79H8qDlUmG2RYKy8MP7QbYKX7ECavpJnV576MyZMdHJ89ruu+FxX2S\ndbqSUP8h4lZ4kL1g6saKpyIOlrNX5RU/MbOSeUvYQntf0etQ7s2tBdwwJiu7\nFLJZPUYRsJ4J5ZjXEgmvTgIGZAOF62M2e6hhOEDO96302tNBPF1Jv4Bctf0C\nQ5EVvNNyEbCt7eVaqgBgakyVEvKylB0XYD7kl0GByLRucLTVoKyHke7zf5zD\npyGT5/B7lFCbm+cQM56bERB25DMDc7j7Q2qxoBH7T6jrZgn52xWIX2mql/zG\nY2ZE6V3O08oRPTcVrTSR0Z6a6H9jFs4abEKWBguRdSSUqe8rRQOxFMiH3n8O\nyeL34N1POgO3OkmQWxuUjXlS3tj0tqb7dPRfMQTXs/RIOAV7yRffjxiVoeWD\n0g8U\r\n=YsiZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGLqbcuJguQQs6Y80/G/OoNFC1xf1GZVcyki65IDJGtAIgQ2X4PKt5T2DLhvogKV1d4Y1y2HDgOT2pldtvyhW+Yvg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597426437-bd242fea.0_1597426579724_0.2661304063117935"},"_hasShrinkwrap":false},"2.0.2-next-1597426949-8ae0b5bb.0":{"name":"@xdn/prefetch","version":"2.0.2-next-1597426949-8ae0b5bb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2-next-1597426949-8ae0b5bb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.2-next-1597426949-8ae0b5bb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Tt1A/KVk8PSRYMO8c6taAEgag0p6o2E1izFawCF1c/7Dw6r/y204sBwofB8a9USLKYmc8/rjn6Q37M6/D25gAg==","shasum":"d3405950fc4e043768d0c9fa3ab6fe4dbf4d6016","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2-next-1597426949-8ae0b5bb.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNs2aCRA9TVsSAnZWagAAacQQAIASjo9Ch21rvhKDSaWE\nLxaJc04bYNZsbrj00t4j1FqIs6j0HoJwk10gzdDtTMG6olkS+92ToVZO7Zxi\nYJk2mnuUmehQe7FgcueMeLZrjHoTuC063PSToestfDasl54pkLqtebWXppZX\nm9eNMfTD3mJGHLK1Szv2LbSNjrA+bnSaBUZiU3C94OoUHK+OBh5XtvfIBMBh\nHcYtGxzcrHzAdI+ARsgcbjmkh3pLwT66C1afHP3MwRcsvQwR7dEZ/DsRuo6U\n1rn3FvGsZXHNLqctMhJtKNVAds6weSLBiHix5X/iMJfo6pbulEEmce5b/D+W\n3NdLqNNlzdOYs03o2jmywJn1U5Q/NpIRzUR0NvfTm8V8+NqCpdYge7zj4OtY\nt6OCxLLBQgRthpCY/HZ0kSAa6/X3DEbmTFySvaTN3KURYUBDUmMZSBhy7R4Z\nppzGyo9QQWQqjtvBS8sDTeKgKSmIXM0JbyP3MqslF2Cza9nwQc70+gcf6fYK\nR2w8JgJ5EX6rb9LI9jAV7mCPpwasWTMu+AlddpGYBC8NKYDzRec2WFjhItrZ\nc3uCbhFGC1CLvK4P8BwP/gzrecYmmQSLg8P9DYHTeR1hefwRZU30UT5mnSCf\nK/UUjloT+rCb0Vnoe8kL+teBrbzcntFup6vwdbJC/NZt+i4y58LBzpqGAp9S\nFT2c\r\n=W5gj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC915BMiyOF1IvS4XFOnWZIOxA/2XGqDPKxFL67VAG7HAiEA1t3v9USpbYdhEtLHFN8+XtoGvvs9q8vfLFT6iNwjZgs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2-next-1597426949-8ae0b5bb.0_1597427097804_0.4465216553119764"},"_hasShrinkwrap":false},"2.0.3-next-1597426991-5cdf9518.0":{"name":"@xdn/prefetch","version":"2.0.3-next-1597426991-5cdf9518.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.3-next-1597426991-5cdf9518.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.3-next-1597426991-5cdf9518.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OxmQkHd4J91PI9fm1sJTqygXp4Jx2zlp8oLxTsuCDr/P5Y5VGRUeP7ie3rhKF5DRri3DEFBnSomUjGKnNH0GvA==","shasum":"7a8d0ca63b47585a3bc57fb1a1dff7fac6c799ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.3-next-1597426991-5cdf9518.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNs28CRA9TVsSAnZWagAAMjYP+wfwp8BXQbhbx/u/kR3q\njps8DaYGZghqIO6ZJOL5SHJyvqbycyjTCOc7yyfLzhg+DC/QlSEDgt20RgMc\nSVokwlrsctj7J9mqJV0AmJOULYjTsuJIoMeWadhnvSkvH0spsf5+0eJva0vh\nnNe0jAraa9yXt5cLtoBfWGT1f2XrxKmujR1r5TaPGcl33mBRc7kg0vBBs0jZ\nQWFp/VM3zX5+hU/njcJcUfI8kyLe8RMrC7yuYhb+v9FvY/P2F8sLgR7XZh4J\n3P6z4oB1iml9Z09qeskBDZc7Vqgct/f4gvPIUb4M+uaGmeHjGL+46VrAn8b8\nKDSp2aeq+4/wHI7JJdwNoXjKCNTlvXCt1X/rDWcxBDZ7iTTbkwM3gAHvBEED\nE8mxhhQaBAaPBv7Ybm3jTD+Y6LFwfckXZUUrsYsh/SFbv+mXZwwvWcw8SARc\nj05kCZSWxVXC0dV3mKu8oAk+4XqebsyaPZ4lKssZh9/01W2ax1fSXMYkqXBp\nS1rgF8AKKu8X45MNC0a+U+6OUyjQkL7kRlI3JSuVan59wJtp3etmCXRrLVQi\nkW0Keerz8C3QO5mD9QEjXOl1FL/omJLFBPuVzrA+HpXUr1UoUP9DBTbJNEUq\nTY/cPZMOommj4NP04Rl7qaOmdpdBnpSkR7Ab6OPCSNLLpCgeBbHheiuF+YoG\nDG1E\r\n=xcbL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEetJY/laM3GUXPyhCGxU2CuTtCppcK7ZEQSAC7zU68EAiAVWLk5yJUD/3/p3kYCbxsUxnElNkUvtYMr0Nke4S0g8g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.3-next-1597426991-5cdf9518.0_1597427131924_0.10269881599278596"},"_hasShrinkwrap":false},"2.0.2":{"name":"@xdn/prefetch","version":"2.0.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.2","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.0.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eyKcaeF7myBG0Natuh4ynugnEctVQIpX9VjZm/Z6ObFQPlejkc3v7pCGm2hbYn/G5aaGn3yRFpr8o0r6NU+ORQ==","shasum":"ed04aefdb5d79380b2ef6e4ff738cdb2b3c18434","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.2.tgz","fileCount":56,"unpackedSize":104106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNtErCRA9TVsSAnZWagAAoIQP/jA4k1KxbJaeLFPoeFOq\nJ73+N0zHh9m26WwZm9atv9D8pwbRM/d9/BdKb16OTpvBAkMaONqSqMIgR7Yq\nPKE5rn/ENA0HBOxTMqrJF4rPvWIZ8Xb4zzExjZCbr51Ck1ze1gdTjyBVZrbg\nxfB8N1Kuf4jJasrQNAGDwwUC0zqucLuObVg+cnksV/S9bDHgZ5oQPiOEqNrM\nQFaa659/sXQOYmVcaBQT1+971OS3PjqTEwAz0Ikd2nTRalwSmIJfS1XXmUc5\nhOlyQkI7HwFXL8wfSRf6wV8rPV2ko6TIrr3Va+5B1iKiUhPqafRi7FGfii65\n67s5ryMkSX+DIQnpVl7QJcvKeZabmdYBs1LTP5LV5CMzu+zwLxOd1cETtr1R\nMFctXRkfFsxZmHx7rO6Jl+FYF1cnFO5u4eFLqP0pdq7QRRlerO9zewdKUYst\n++fd32v3dovVi3/qqJVFTA8B2Px7cSlGbIVhf0do0S54d5LO+i9IGnXwrU6p\nZOM8i3sjFMeLpcl/gNp0BA1zrD+BaQFiu3WQaFpLPzhzoVtx8saUIfYXK/OS\n1oD+5XpVfHLjpMe28Bm3yFMzcyUnzvGdKXPd8q+g6wl6AvyYhJbKoBppptJn\n5hiOAHaCUNfGVoWsON+8Dj6UPeAlrm+hzkUPrLbnPcnSxtRebVyGoXt94jho\nCMKJ\r\n=GmOz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9Ivsq0ZjrvSefiMR8uQbWokBj+KXEFoWvQOc0eMpc2wIhAIFL3hfIHADp6O80J1ANAVR01evtmu49dZwxGhritaIQ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.2_1597428011122_0.6907620251811057"},"_hasShrinkwrap":false},"2.0.3-next-1597429581-5cdf9518.0":{"name":"@xdn/prefetch","version":"2.0.3-next-1597429581-5cdf9518.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.3-next-1597429581-5cdf9518.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.3-next-1597429581-5cdf9518.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mYdN3kJYzENFMUbxDcOSlg2WY+/Mz9dFgrDnAHzezPPXeFsVQJ88U2lr0Uh8RSzW6XxjdG0InPhv2lYwr/aTdQ==","shasum":"e5c8bcf3a37c41327aae71293f568e794339f2f3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.3-next-1597429581-5cdf9518.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNtfpCRA9TVsSAnZWagAAi2sQAJcfP1jF/cJtRSBUgcuC\nRczMz4X99ag1Y5LYWKUqmcf+pQD9cupBS8onKBpQ7Q5clii8/LmFI1rgKq/G\nFoK7AFqKNzWx6OLqfzpv9ixzEZuWR8MupLbgbAds6XSANccKcBSClVSvwRv7\nfPeu3tvBZw/bvUrZRQ6GDe3+b7FeUJqDQ8QoN9hminkyN85bSmiPe5FqOydU\nihqUADOXi5gw0Bak40mFVwB3XAeFNHBsh3i+mqEc9M8t1G69ycenI8Z/hBrO\nmEUH9ihVxNm9ibZZN3HO5tf5/E7yi/ZLSU0PNGKvdhBjsXbhnI9kD3h9gmgn\nITk+qDKxXK71W0LJOuYkU8b5kT1YEwVUtgcfw8Qf+OwzeHEmF+dbEMF58rPu\ntVRnCZg/kRI+I5slAhQIbzQe91xUbXd3vnIFwNpssf21qWy/BFU6IERDyZvx\ngC5t4jbEV3D/ZxR/ozjezQFHrYT3QieqawpvA3X9f5lAV4KtM6ZQBdnGZbTy\nJGvwkiqwTOzlAXJnHppHgDbiHBpCK08r9h8k3e62vLL84e8pcqg9vl+1t+HC\n94EMBi5QqPuIpMULf4omALvo3OJg5eTZOrAD7bhmCFKX0hjaI/IdgoImcF2n\n8PbfOFEa7T4DhG+8keuTElUgoHwzeUBvhPtMu3F1Pon6AU+3X7WeH6zB3WYW\nhYIS\r\n=c4K4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/awOnqnUerIIZd+HGUDIDLFusITx7963FbHLZCfsNsAiEA9rUMhsQ97QJDyua2lr4a8u67XdrD4E1coon5Bk8wMq0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.3-next-1597429581-5cdf9518.0_1597429736774_0.28332923465720783"},"_hasShrinkwrap":false},"2.0.3-next-1597430496-5cdf9518.0":{"name":"@xdn/prefetch","version":"2.0.3-next-1597430496-5cdf9518.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.3-next-1597430496-5cdf9518.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.3-next-1597430496-5cdf9518.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2baHN3enrnS2P/MLaR9UiCTlCMQqY9OGQzZuwhDYlyQN3Z+MtR6p6gnf3QBzlbRjQrzODwda7BsgA/SlDDymRw==","shasum":"6f4f9f0f0f1fce2267adf93e34d59c2a26f0e4ff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.3-next-1597430496-5cdf9518.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNttvCRA9TVsSAnZWagAAZPMP/30RbFw9P77Qv5FnZQIj\ndgOGr60YSte6ItWxn+t8d+3mFQ4/Oe61cLioWzEO6Ge716YuaihOMFaBUpj6\nPb7qd8OaBajl7DzShv6rMmaQ5op9lDVE+HFBmZ9Nj0TTQ+X+rx39LhlK79Re\nHaZ61WLvUQPcfbr8h0hNi9vcn0T7JlBqMVU54u+/9u/TU6oP9fndILVUGfu6\n8AZCCEK5zFYPekIT8QjoHzRMj+ELEY1pTO4ic1m7tMIGA3Mrwn8OMz5zpL3M\nv2Wj9fJqccGZRck4pdKMu9eQLow/Ozpf8nBnY/4NRf0AK8eHTDQnFUl615sW\nbcilHBrh4g8Xc5/5rs/FjhvUopZxzi2MGBB1QVXcE+XOJY921mx1/qMdwrjd\n2wNr4MI/sHctlRChxAtP9ZcYMyCUsWgDvztZ2flhRDfQJfHn9WjPEPYbDob8\nRDzcMbrD0kEASL07f43++oGSxJkn8Bef6vGxjv/pBRfx4Rc43zyN7RSsh77z\nmVZrUAKF+8yqUnfSs5GGkRIPcWJxdoCjxa4o33UF1VhPmDIqAzhXswCKm2XY\nOShK4w+4vhMQ5vGTTpMOltg+99jzgsRVClxenXk++Ii0UA5h85UJmUDos3TM\nfzQ32U602LuSPX0GaW4ZF1Pqto9EYN0FGlYK+mtuthNvf1zKTpOAQO7BEObH\n20G8\r\n=Fs7w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPLM0S37zni3Rv++FyYLaKmZYSgi+3y7PXTwVFiaYEAgIgfqHPmsgkI+h5wqH7z49uYXg0aT1CvY/EdqrnvfU99Hs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.3-next-1597430496-5cdf9518.0_1597430638818_0.07950627284749068"},"_hasShrinkwrap":false},"2.0.3-next-1597445678-e66bd347.0":{"name":"@xdn/prefetch","version":"2.0.3-next-1597445678-e66bd347.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.3-next-1597445678-e66bd347.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.3-next-1597445678-e66bd347.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HeWKsW/EoNwELIotlxGYEpPJbzoDl4qVDxBlv/6ayLJeyGBkvPOOXjREItfMZqKQCsV89/7l1l+bQEObyTP3uw==","shasum":"5b32d5a6a5fe30922605f83f3aca69059e03f3d1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.3-next-1597445678-e66bd347.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNxbGCRA9TVsSAnZWagAA6x4QAJ/sEm2q6Y3aW1sBjgun\n5WxnZSZqprYBeS+o7DdrB0OG/rNLkphqEDePztEVDrLKKTEaD7LaBXVAzvin\n66YNqUCNDC9XhfsM/0aS4yb+VhUQLvYpJs7Cko+EOHEt7Axo9Wwu4GG4mbzT\nkCrn1U7pSpQCV9dlt75dL2zhDu5ByLek52GkVXLUSS1EgBNn/AdLSPz72hh+\n73WfyO8ASUF+h00rfFmmLAUm8nCf1d6d9hzjSI7ABDdPBopYUZRopbLgXaog\njGEH6dQfhnQG71sNMW+u/PRoztxNPrDnOWq7Hr+QJqZQweQaOdIu53NeaRpx\nbsOBo6yxDYx/oCE3zz4a0I0Deoz+Gbl4mNTp3wuUhrL4zBPycjocKz+202k4\n3cV6y9DFkRTK29vibvTSswhaYilUgW2AXQ3yE48YBeJsJKeJzMNalyveojdy\nB8hkP/yYVBARvfl2eJjvjmbrlqpWz/MfAWwmPcC4BFH12fb6hGH55YJ+Dg1B\nAoI69uIwoXL8p9IXj5P9UgYTpUtWwAB3rNPNwpER3nG2/TmzCYGIg2bw7+Tx\npVV2UX3m3cr2vDDffmj90ieFp5KZPQ0ZXickYtiIyk+kC5j/0/ThrDEFFR8I\nDqcxa7g1cuq3Wb0Aue+QXAdweyZRcn2jNRUo6oNvryMPd3ukiKe5SoQSErMG\n/QE7\r\n=2yGQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEWsIZsdqL6X6gLxSXXZ7/eynaQar2D0znRZZZ10CABMAiEA2QgtbpZp56oYj2mG9mi3DXX8bvGxX1phiYnbvoSPm18="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.3-next-1597445678-e66bd347.0_1597445829553_0.6872613581392775"},"_hasShrinkwrap":false},"2.0.3-next-1597487181-dac72715.0":{"name":"@xdn/prefetch","version":"2.0.3-next-1597487181-dac72715.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.3-next-1597487181-dac72715.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.3-next-1597487181-dac72715.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t3mM0m/5dKQIc731Cc4ebffgbxA6lFsH/h1B+YyDvntmSrbpnJF6B+F777slVWucsVdQyvO2a+7J9mZMwLcqDg==","shasum":"88b880234e1139ae8d02c45fbf48ffcae312f915","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.3-next-1597487181-dac72715.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN7jYCRA9TVsSAnZWagAA56wP/RhTburOhH+zYa/EObYy\nlqUbEXh14rIJBLirXUKAr2oZN+ekdkzFjt3+JSOfouMVpETQRoV2SKVnO3tO\nwCLkB3gaq4LPRgp2DJwA7QJZjAGJLtn/dnS6gXL4Tj9ztQeJesWK5iOTsCg3\ntbVRqavb1EDhKs6xhw/hfu7npl5acAZT+8zaBBAHDUODDqWP5rh8iNlYc7q6\nzRm4guIaXoAV18Fltw2A0ta9Q4ObUzNcUJoflel6aUuh3cXdhJ+9ypSsqncX\nPBrFMLn0Ip/e7howdTII7liFf4TayxquVCDIEHSFaxQB3cYuqu8G/YNnF2TL\nJICSmvqw0XeNRcGVU7Vp86h2JFt8zc/tKhJ2M5ajARc9e/8GyLXnQhBTZ1b8\n/osVTVE3yd4HEcv5GV5tndcsqJOHGoFLYIvcGAWPw6MTXPlSj6RFJirsWHNb\nLeWY9RVg/cNZRxxQ/+Jd0uozIoGmWVwtxdgnTpoCYIISsigLPIJBi5QedwCu\nt5zjx1a900oiRTBkingzQKX3iKDQsR6ySGMzXU0WtHoKaBabEJBVoqa5aQ8a\n1gAJu5BYOjTpH4OK6DTYc2uG/AzxO6zDuLozJShp/kpZGe/56Z5pyY3Yudh1\nFEnK0EMQQNvN88lF7U9vbgCo85RGp9LnBMVTrEf0/N3AmXrgIDlKB5ItCnss\noL/n\r\n=zbMN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQCf4QHN0Kkrs2J2874ng21ObIaaB3I7qfPapJHvHP/wIhAPHlIqmnywiIHUVcSy/ppZnQ4zxDmjaPoE3ZXGeDniMq"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.3-next-1597487181-dac72715.0_1597487319756_0.024942281183561343"},"_hasShrinkwrap":false},"2.0.4-next-1597487304-25d12892.0":{"name":"@xdn/prefetch","version":"2.0.4-next-1597487304-25d12892.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.4-next-1597487304-25d12892.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.4-next-1597487304-25d12892.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sZeOX/DcD0MvJ5F/751fhuoeVBZHJ9BR5EqMOxaMVCsostx6DXCDWS0UG8eUCpoAjNJCtS/ifmCecWaoSVKOow==","shasum":"c63bdb3ce98865683ae5f784aa29523227fb25cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.4-next-1597487304-25d12892.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN7lKCRA9TVsSAnZWagAAnHsP/3p0v0uUZ8fO1CXq0e5R\nCZ6awvd3/lxrwbC4RBbCkPe7mOmbZAUmNAkK7Aiy4aXfM7UAkjK/P6al8yrL\nM3lhU3ur1cE0lnCBjtAL+Cg6t9n65XF+dNi2wRCzwEmJBE2jjaTaerqb8vyr\nEb5O0P1d6e1P6uXhXhcoy2V+JJQw/7pR8My6w87RfYRvJFDJoWBUrEgSwgIr\nmvYvD1aMRtO//ugqullJ4vUlV5GLJrj9nPZ2EocmSF2raFEjPsDvpWbrgObg\nC376Et30+qs6oqXkaIl/NH90UNqiLWO5cLp7SnzhGwatN/acqp0WwXwUAczn\n6mqp+SCZFpr3DBjVyCv1u8KE/VZ6toNtSYQotGkkXSF6P1XKGl9WgnyKkyNf\nrLf5ypr1oTzxErT8TchMd4SC85p/ERAa6L4XVJQBX5mQIWX7siDtK4M5VmWi\nn/H7plalATkmzXFep5UesyYTf0isKKISFyGJxdUObrVNZ15PVx8xE/9Ec/5Q\nxn8Q/EI45O591+mwrW9A5eJndW5GHvJn6jgrCG3JYuY9TFzUOhsGUI4L3dQO\nWnNHmkqOFAt2m8zZCGCzLArsxtvC7ZEPAcDWqXVR4puUeqvX9PMjIsXDcM5Z\n/iaz3gTAEa7S7IWVGqljo+ZCavAX685xW/oVVfuzKQpxeFa2bxkRsMRduhwu\nSsfW\r\n=Gulb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo1AimaqKa5vFY9Qu1W3G0NbAQGUBKoCok+AFc5/nwQAIgG+drhjouWqe93+xy6D8a7ze7Pq7lOdWcVrHNaN6HuRw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.4-next-1597487304-25d12892.0_1597487434214_0.8666675249411682"},"_hasShrinkwrap":false},"2.0.3":{"name":"@xdn/prefetch","version":"2.0.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.3","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.0.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Rif3wvY3LMic+lg4tOpmfjyPq84DWjzrIgvuKAI70WK2MGLeIIJTVUdbx/T8t4pQpQOFWkW67K7sp6HRxK3aYA==","shasum":"3211bc3262161c33acc19066bc82521da142b407","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.3.tgz","fileCount":56,"unpackedSize":104106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN7zuCRA9TVsSAnZWagAAjVYP/14G0Zzo3Usg5QBRNDtz\ncTlXvADVrgMNi03kHRJj8qGAmHiZScy1qypr8XPQ5rHT6e2TChPNQ/lpWThA\n0yuFwsTwJ8JjMfbRwGhxgorOYdcmWh8ot24jepUN6Gi8k2tyEqN8GNdb6XLw\nfRPLJNop4RjM9iO/1AiB+6T9RsThkdaoC/3UwSAsrj+Gj4CNWA7lNv5SL3cC\nzv3uswkISB1QnDrjMKVIx5wAWcfPdfSnepCYEWfAElDLjPli6V+redSV7vEC\n3EHOvOgEze1/bp94m4qUCWq+6MhJSGbhMblqUQINflcvHPufgNzS98XfLjy3\n2GA8J01QpT86Uu72BODkgxCmeGBacOeMe69WhM2AvgOBucJoMk4/GMT4Spgh\nWRF7lHBMbBECJXp1VmqgZdSJUqyllsoxQo/rUBmzsv5znh9yVik72X88XnPH\nINJxc6HdNCQIUGaRQSgEmfbuMZYT9PrvBUfsdVqLbuSy82TVB3cAA7TJdo2r\nuvxc9ophJk4XNF8PMEAOrUpUH0XClNPY/yBUyYJqEStnk1FrpHOvbHrchwId\ntOZPJsBnVb/HKqHFrp2tdTVYQV6rzrEzsBLT+J428xStv2mBcmlr7tuXPU5x\n4pSgUDApn/7X7gNJbwVDoYIpsTCHf30cfuhRtnEcZzAww862ASm3c8/qrco2\nnUTO\r\n=gVUM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBEEmtw2YtISGmyV3/Piswfg9ibfjXf9KSNoj+tn3dMlAiEA5v6AaDwYaiISg+XqUoPSYdiE20OdgT9O0EhsdL3CqGs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.3_1597488365957_0.5874467139997122"},"_hasShrinkwrap":false},"2.0.4-next-1597658152-e16d86f2.0":{"name":"@xdn/prefetch","version":"2.0.4-next-1597658152-e16d86f2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.4-next-1597658152-e16d86f2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.4-next-1597658152-e16d86f2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9TaXjf9G1Gh+af1ie55qHwS1HY6i8t8FmN1UJ0cRgzowVuSQsFZkVbQfF/LweB38S1/tlCHbUkI2jMGOKkm0hg==","shasum":"46e2eec99f6c839b820e247a821bc1f447f17531","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.4-next-1597658152-e16d86f2.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOlSqCRA9TVsSAnZWagAAzEIP/12sZNgyGjZ//l70rTDu\nbrPu6WzQd3cQPscw72+6nzO4JG8nryvsNYMDyVQH3uAv/5zFGP6J7u56CSoO\nb6CTlQiyelSpjyGW5jArErqMah3xfib8B2APgcIG6OeAGP6mAkUeo6MS/F9H\n3Zdl7EjoiFm8D0TRm49pKyfZ4EKcbiYLSe0Qbiu0wnhHf9GdkgmzmERCQmIG\nSAaUqhxG5+bBmR2xHu7Df/bTXHU5gVxad9YlPgWVCf5vUJ+y4N5GbDBXz/n0\nc0qm5WrkXSEAxN8tWCgHvVDdh0/g2h6Fd1BZ3E1GqCtYu/IDjz2yd2CtPEH+\n0jdaGFUF7+HV9P6kM/nCZlKaa95HlqBXiyQrwQMl0FVvK9ofl/JC/DC5NZpd\nbajyOvCjN2mSFiCbki2TPDizv8fNzDptp51En7y0bcMaSfylzKwEi0CrcL+n\n6jAPEzDgoYTI5jT+WvDPK2N+dH8CFL/Bd7db4No9GlqMNXCNW2pvLh+prqR6\nbvft3lAfJFpZISwmEsEbDg5WIsNe2+xngKPWLoNd81nqEEOnB8dXrKRgC7kr\nX2pItogeyja1Squ2OYzStkY7htt2QVDOsmll10ih1X+O9u2q+6L2wtfBYESG\nBL5/R+J7tFKPpQAeoudbYQOkliQLYRNJnMRn+9lQuwy/Kt1yBFrenTt8qeKv\nadqk\r\n=kc1s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCqwFWWm5lrf3hq2ODJ67S6CmRE1lP/+zHw8cWdBLoDwIgYB1tJvfnBqUPsCpX4W+bPqvAJ6ZMdx0ly3Q0pQeTQas="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.4-next-1597658152-e16d86f2.0_1597658281832_0.11569123867375986"},"_hasShrinkwrap":false},"2.0.4-next-1597659092-da85a29b.0":{"name":"@xdn/prefetch","version":"2.0.4-next-1597659092-da85a29b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.4-next-1597659092-da85a29b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.4-next-1597659092-da85a29b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mBzxVv65BG9vh4CbFl8c3c9If9txwWI+WBzmGLGF/1XfSaEHnPn0+EqKlKxtXwjjimElC7/ibSuOEC8HkeldiQ==","shasum":"5acc63255b0e54c67a5471b9964ac9db35647f00","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.4-next-1597659092-da85a29b.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOlhkCRA9TVsSAnZWagAAjrUP/jU12dMm3nHWNz3z+ZZV\nS51dZult2vJxNflh0YkUiJP6eCpaoGooy4kVz5cOaBJtfwn+iXScjPPCVU0N\nwyMjuAQhE9r/vat88M/UV/BVcp+a3shtM/CFebwo+iFfeZSkkxZfueDeWGly\nylnlLqfQwOZ8lGcTQr/bMXgTIyC2hmgHLZk2XilpeXAAYdJjKLx1762Jk//Z\neliM3J9ADftomWnuxMY/c9PUDBa78WwD7xnNLBq9yRJb94Wj74CBkSFvhZi8\nhmGnpiyT58cUvOxkRmqWQUu6MYptybAkFRom9/YuH7yllNUDehb4e0/CLSgp\nXNjU0wjfUd7iDHEegLEJnqeWMFh/L/7+X/vq+7/hViPKNdpps7NqOuAOdtUP\nR5+atuv1diwMwhmwZIir0C3Syzr97OjN5sPC5/RPljKgNQkHgkrGA+x7B0jM\nh41AEj4e8rbwA1sNMTVzKXc5mAQfBgzl9z1t/rcWIAtsoaAOuufV1dNrkn7l\n4Fs5Q0td7eHq0Ew56HX0yLPcFlTat4LfT9eSe6tU6GFQa9EWH8qe+iRX70PS\nUJKU+MS8bn8QDsb+gPtKVYYK4G9Etokdibtt2eToPrBWqI4fLmPtWD0b2h2s\n8Z0BHcyxk7jxWj6E2zKmmnyC0FVmJkccrjPHieM985KxiYriidJHiiCwbaIm\nc2Wd\r\n=LHJv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBnaA5WXPuK6aYp6nXgPD3YUHIf6f4+l1UOcbpbIGpSFAiB1Zb2Y9zuA2+pguLQrdkoie94wccQzG1j4M+qBJJ37Nw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.4-next-1597659092-da85a29b.0_1597659236161_0.9526344800086841"},"_hasShrinkwrap":false},"2.0.5-next-1597665704-0d768433.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597665704-0d768433.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597665704-0d768433.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597665704-0d768433.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vDBtHlfDWaU/ASxI8SC/uAm/BGb77tGTTWJu6mMK0xzmtChMxLKu3bshliqApM9N2TDBgRshWHgVmHGcz/CPyw==","shasum":"973fec4af25fb60de3b5e4541b8aa5c99533291e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597665704-0d768433.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOnI6CRA9TVsSAnZWagAAxj8P/3ZPGyqWo+8AoWW962Nb\ndyVFfK0DbR3EndosExEG53KRpwZu+iQM8r51m8UmratE3psr14sJ22tvSMVz\naDPENVe0w/Xf8G7nAUbXsxWxeME5VlN9HmxHJnOSd5HKNEVJcumAEQj90IAJ\nhSLL/xlVCexFYp/uiYELqasgplX5/3z5pPmojTLHKyiC/QUZU1BmeegkgabG\nooTJq3z9qDo+gEAMlXJmntzZIyU6/jostGRgz78Yu7weIEsN0dX5kPa2u5Px\nzXGdhzdxNjYosbz3GdnxhNQXpZdQtzwxVzTsTQNijbYR1/M8JHUJak64nqZt\nz5Qzku9jDeoZJpJwRH1lL2VP7KrezyfEwEvoXQlOnhkOiOoix3W6zWqWpvU2\ncuGip+F3vcCD+W8P0XMFHAAJscbSTN9Ff93by4EyjY/34MFlQCEuMfrfZcue\n+QZIua6vn1st1TMtaC7H/Gxa1501smYhVojIZVTYDqe3cUAU7tWf4DDRW2qa\noXAygwxCpbvfftkqhTcW3+4I/VarbVouOWNvWOpHNczZ/+EweeDSTukQ32zR\nehIuX7oCoM0ZxwLoM7BfOijSo894yJB1NCP8AvhsJTlXPGcQwddUaI+pXdh3\na+G08SWGlmXNqYaa3dk9n+Vywhq3Slhyo6EutD39TMP3P9NRZ6OUEqfWupwk\nxQpN\r\n=oStg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICge8Bo5zxBhF+KBEVI6ViXU/QKPbOOc9RVceVZJiyJ/AiEAi9CrNcHvk3o7zuWaXc1FiW5+BaX48CgR2eWUMAJ3U90="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597665704-0d768433.0_1597665849771_0.09759614496148106"},"_hasShrinkwrap":false},"2.0.5-next-1597668308-b2f79f7f.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597668308-b2f79f7f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597668308-b2f79f7f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597668308-b2f79f7f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RIEg6R6p435EBIVBeLm2CbQb/QW8H2LQ3FC7BPPvSoqUk85g7R5JE73I2o2zpH1b6P/0Up0nWY88ya/Nusvrkw==","shasum":"0b19d59494520988f5626b15d9d3cb1173e389f2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597668308-b2f79f7f.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOnxxCRA9TVsSAnZWagAA7HYP/2nM6kk37KRw/m9zwaS2\nzpO2JZUqHZesXESSc2N5AtHwD8z2MvSpQxzA+DI88uBHWnxmUyzFK2JeSLAl\nHzp/xjjOamvz5dtDR/4PRygk7dpBVJVMYNyrgZ+pB1p0HqJ7P+GFO2FF8J59\nWAh2y8r1oT4AwojdMjuHHcmwHAGBeLipcW/grkDNCo3n5qUoRH2GBGLctDl4\nY0xfrE29giarAUC4naT3b3AymFxzcwhjTSlK0jPWUoaoxexsqLACStmQ02RS\nEcq5okcXxCAGNC7KkPvFy5DszePSRt9W5IcfO+dNOD5jpeI7er3In4jgifbc\nEOuosIxhgHEOlf+db54WczY19Uaevi2WtSiAbB1l9FDjkc8VTq+tUxf6Mh43\now1mJy7Bd/UIdkLXGiE8k5/WGU4VX16lKoJAS8rWiENjClZo20GoaWHt4UXv\n2f6ctfVK7eUoEb1DFm8IJFdeCxpBBiFVcZ2WiY2I4wXB2Lo8q2Jk+Jr7tXuU\nLNvEBqEHx4UHRSG9JnzH3+IOxQbQZR3yWb7a3fdRE8SoDHYzrHAv6N7vdz63\ngTYXjqOZvLlrUwdWNe7ocCLUloyQJxYDG5Io/vdpUOWJK5a01hDEG5mZNSQv\nyXQKsKa5GA9EIrYvh8nF1CcxXNb+ZCANowSx48TFJRbIoeNxRDkn5Xm9PnUm\noJi2\r\n=MYJO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA2TzBjIHfnn0W/RmLvnvp+RYLIhBGQPio/hX6xLqPi0AiEAslX9myQ5am75QyV0Vms7RwMHqXTTt5xwyaUk41QTA94="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597668308-b2f79f7f.0_1597668465148_0.7500874730294083"},"_hasShrinkwrap":false},"2.0.5-next-1597669219-449650c8.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597669219-449650c8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597669219-449650c8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597669219-449650c8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-gEvVy9k0rlOAyQwKKg+TeOZuWzcaVVcMxX1e6/tW2Vp4WjrDfJGau2gVkfNYLIYzRBu7+JFtxOLO/hZjsP9jpA==","shasum":"bf591a60dc3bd92e528c442cef4b2b9ae52a7410","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597669219-449650c8.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOn/zCRA9TVsSAnZWagAAtNwP/2WCGNxiSJ4u4dzhEwHJ\n2CLmKq0LD6IH2udYHox68U9lXX4bEs0ccKJUxIUmkw4/h4PyvMGcPiMfBijE\nfjEdpi5I+xWBfzD7IDr0IqjsL0P1NRSBJv9M6kpRzueZb47HFs8N1Dfxk7NI\n7Zm/myFQRNaeA/if+YwC6AWj35T01fXZBcCX2BeTQS5ehG1nOmdCJDjcoue+\nzi3BUjGOtluSfBWfm6nLzpUgG6bJmAmYrDBVFxgy/1FcRbjq6s7s9j/ll+Qp\nYdFe81EFu4+J7NpmJtgPWjioD2SN0gYBQobjvVHkcUb4KG7RvTu0vePPZkqP\nUCsq1b62QvltEPgVBkUWW/tZYAC6RkNjf1EUsTqpR/r7DiEqy31sTPOSZD0c\nmTwHpFgqZIYWZ+FJ10GatDGD1TaQOShaNhZohy6bqJpNa1fUx0ltU0JYYeeS\nUQBppSgKGB5TBM5zm/chaPj1nXwTCXU/dg6bIcDyUpGASVnjkJsCXRIY6dld\nBIzc+1ZPRI5ZIvlo0oaD3HWvtzh3Uwal9USoV/imkt3HDFgHCUZOA/avtXnw\nUArSNSAaeDavx2BiN8Axar5eMIQ+S+MrSMxKCWRCQEr/iGXwVJD7PK0yb2bP\nH/TikkZHoAmWQfSD6+Y2CYUUMsO3lr/WbbP8T1eX4DSu1kV3C/uB9LT0bqsJ\nr8WC\r\n=vTlx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBcudaQ0knBKXukhmeFKhVKsZfOWOvr0Df0bMjUxsKQbAiEA7WJbeBbckpQEntZBRUERhDcLBOrRiEtN8vWevjvP/NI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597669219-449650c8.0_1597669363407_0.3084393171942075"},"_hasShrinkwrap":false},"2.0.5-next-1597670827-1e01ff9e.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597670827-1e01ff9e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597670827-1e01ff9e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597670827-1e01ff9e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VVR5Nada1VwS/399Jl+g47H13rLooPgRtxUIT5XrTtP4rIa4h3b6ZK8ZVJLEzLhagb+V5Ss8hTOgeFg9IIiMEA==","shasum":"2cc60dc047276d05ae226cecea7768c5da835edd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597670827-1e01ff9e.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOoZMCRA9TVsSAnZWagAAKaEP/Rz2ZvVmMvGfs8bBOqDB\nsUExGI7HIPi0P0i6VdZDQ8Gr0baTfTvB82gL89jvZDoaJuzMfXYlzVS25Ipq\niD8od06gwLWmyl/Tk12OlBwj9k5Sq6RT1roLq2iabCVElFLywgeQAN0RxIG8\nb5PdO+YleZEnlKj3COyI+ueLmJ5Hck79cX4M66Hb3rs4P7+Y34YJ5bSQL1S7\nUWupS7+/D9rRl6Yf4LrMVdzVJS4n+Fx6+avx77cpmJJo5PmDg1MehvmxkAo0\nFgQ9IMR+FB56PH9sGD3U6gSu6KCyujyGzf3vODKlfM1IEWZEe56puDZLRXS7\n2B1rEY2QFJls0D3r+iacryh8hbKCtHv8p1/ImJWpiXhusBw1vJ6ukdMB1Tn7\ncsTNJ/9qYp5m9R0vNeh8QGbCC4uYBAMTQUO+vpyOIu9MPvsISwdy8mIKM2IE\nYZwXCFLuT6QWJQA3yVBBX7jJIM+Fzhred44OxZmhdBivFPx0jotbVrnh4wNL\n6pmcc+SW4HeY2SNw0j1uGruZRCbDZ2/7ln2qdXfrvGrbvw8w5rOcL72hqgEa\n9AMQUUlkGCM1BxIwKUrHIlwtrNN9qFq9JH2/kkKsB5JqOSrTbM2GiLMJYJKN\n2R7GsnfBH7oThYpo1N7HkFmY6qYmqTvdJoNzdrK3GH8qANoV9djHFxhAyC/N\ngJWi\r\n=vCG6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGznApl+ly3DCmwCGWMN3XZgEpEbQxuM5S8Zv+JoCtsAIgNPCJ2aujXDFvvJLAQA2RzeXnaXU/hyHGv5+1lQJQ00E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597670827-1e01ff9e.0_1597670987263_0.8806862593507028"},"_hasShrinkwrap":false},"2.0.5-next-1597671877-6f632d36.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597671877-6f632d36.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597671877-6f632d36.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597671877-6f632d36.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cFPlk/JYMWTfchmVd9NqguT+LNylZj+xFFxebIfC+lClJeX1n/1RyFbd6hOuxx5j4+hhELSf3/AN494tgGqvNw==","shasum":"fe4a8769fda8249ae1e6deb8614f35c5b3688af0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597671877-6f632d36.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOopQCRA9TVsSAnZWagAARi8P/1tr0tTsCoo32raNAEfK\no9Z0F3Fw9KBn/Pvdv47xGlx3Y9Z3Jbaw4LWVwZsTTx4AhBBS6Y60gFME3UPo\nHEiZNxkAxkQQ1mpPqRS4iod58gCmAFm5ws5NXamIpfAI+zHnYjYuWMhLj6Ue\n43Sjzm4DWUfn7puYTmbzcffpuJk8+Uw1U2LCevfdJ7yN153VhokYvW4+lVXK\nc9dK9dmVAfsmYyanoUVO2pXOePvuqlKO8xxzJ7WXbB2kmzUspgQJlN91LW2H\noGU7YPRQURrCEqOMIcU+D0bP2+nfyoD+zPXbQbEThUICszezqQY/4ZBVtd4G\n7LUOJrYDYGJaAyhGfdlNR2PbiHDaDgZV9SEgmPxrIu5Mg8T98XiSOnqTQpM5\nkzaY5GljlMVrA1jESPI8mQywMyMaXUw1GURRHPEeYSH8FCAxYa9z9EAdSyej\n6DnRv9R2nd4TYRGMQ51YVDcRMoMno7MTYDdA4V+cmvn5RE4xsBLbQjIBeeiV\naOYka0f1nOt4dW5PJd2xek1uSBz3TC8iIlqgRAbXATt4lJ+Co/Mnf+FvqFNd\neczKV4u1xyYwGQo7uTqK4YjYlefGdwydIosFCkR4fdsFqM1kUOQjuJHJgdrO\nxIDq5H+96GV7ptNkv414FUjL81dl5+f5bovj9FWqZIdxGNxh+SIrbMhC082y\nZhPP\r\n=BUjn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFVInuD0jFNPM6OkLGkKpHWqhQO0W8V2hDh2X4uGLxl9AiAwaQHMdfDF97mKWcoPtCPSWrxmvMRQ5DHOBuOe+H+Wrg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597671877-6f632d36.0_1597672016017_0.09932678906016368"},"_hasShrinkwrap":false},"2.0.5-next-1597672217-3bea9935.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597672217-3bea9935.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597672217-3bea9935.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597672217-3bea9935.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-buSw2img9E9RmGHNQHw8t8Q46S1h8Ok+3ptvbzINiQh7L8K2PrKdbrRJ3VhL852TuDY7q/0HSdxrd0TdRX99Ow==","shasum":"f5cc66bc3fc7643cb64d58461a36c891741fd5a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597672217-3bea9935.0.tgz","fileCount":56,"unpackedSize":104296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOouTCRA9TVsSAnZWagAAh5cP/AwGiRyZnVbVA9snRDtX\nQmJbxUmecVxDaNCFGT5m1jMaREoBigOnXbhQhc49Z+uMc5j6sH97l5rmebaV\nF4eVPieD7FWUa80XmMyUd/yYiphDN6Av7TOl8lE+9Xf37sPFerqEReyGyMwA\nJI7bi3HE63K/SwV43YR8E2JKXHQaRfJeUHJ1w37d1TTPWK+vt5hLvtiEYOsC\nEZoEXEaB+ne6MDaBtkSf/RfRhbwdUBGpH4G2Cto58GmDPxTf+KFCfPgG0qA8\nrIvVJDKgsOXB2FFIW4tXQzEKFuq6OUYSm7wxj9isA2TwJJZ1noY37sz1McrT\nmIJMmnBwqX7ThVRlZ2nIs37KoyV8cUoVv8GaQ4qY8ukEzVuJ43iMWvW0eNd/\ntFw47CpVPRZdwnMNW0nUAbYHHNREbFUSvWKbUYJgmsOLHTbnSZYrgZuyJrWu\nQ7E33qEi5gCuKbMKCohVBc/KtzHGw6WBBUTaJTh0znM+tVN8zOXgJtfY0mxS\nyLl5q3/VocJnx/t1b3EVQQ+Fy85kE/rIXSZLvcLPPnxFRzgQenI8hwm9J/nk\nnUoyjmB+EkfrOFBbNuObo7oyNgQHfRTGRU4ndiO6VEnadcFCCEvcqRsp+Yxv\nzQ+/dZKbMmk5qaN+QgTg3dCsgBPsajGE3IVagouQ7FuVI5vsKQeWDElU7mxD\nB1zD\r\n=roue\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3srWbFEptWbf1JKSGpWSS4Wl3agbECUc22XTjSVSm3QIhAJ5OaAqey+IbTNZmLMYQBPKuMRW7yrVAeDXdf/JUAV2x"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597672217-3bea9935.0_1597672338927_0.6005793748894785"},"_hasShrinkwrap":false},"2.0.4":{"name":"@xdn/prefetch","version":"2.0.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.4","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.0.4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jZ+zbAE3m7uxvpKlGuro8MYF+pz3B/l70YskbZ2U2sD6bEKriI1mZwafCPObNru2qwsgFAHFZ55aDfDrk3OKCg==","shasum":"add104a2f4d86dc5f131d1eb61e80663ca34d22b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.4.tgz","fileCount":56,"unpackedSize":104106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOo2qCRA9TVsSAnZWagAAl84P/2qDEaAuvkhnodRyZnS8\nFA58Ykj2I0lxPdZazGM8CzBtuO5A5qnNnj3v2OvdyaNdhsPZl3578YE9+yMS\nGgKiYTZFT+MJMmWhQhiHqrMQuI8kFRSuluA7MTN7/HbvKbsy07K4Fe7YcIi9\nIfB8ONX0tgTk/dcGU5w1o5vdCiRLD261/mm23FNd7ssGA0n3+67zYNTCOVUh\nFZqf1oPiAVtDOfJOWiJZO098NYhLSie/aam0xQNu+8RjYERTrsNmf4Kialnr\nhAzEBoyiGRpFZBM/Oo0H3u7RKvLFPm/vGGCW3ksUdVtq01bc8qGtjsmMAZgI\ngWuQqz4LW34BO7NSlmAgFawN4qTkh6OGEFtNrMlAgWKT8Xo3nz/klvnML5ut\n92kCM/lPbPsTZyPMCS0ba74YNM7JU8Z0fvj855ijjMrZV7tGkOJpbLZD8fgm\nqzEAf9TsxAyBMNvjxcbZvs99VIlD5ztqBydxa/aSNCLgdonDsBx1TwxYn2ah\nHfDI1e7n3jgSKy3CrbEbD/x5hJVUorLyI/I3mFWjx7HOKUH40CtkQAf8G/RN\n0zbZZygMQOYxtfdAOlw4Mn+ERrM5AcwX9Pe4yZYunornnIifqDZuRTkunLWP\nn1i0JO1skB2xgT3GJYE0l0mxJIuHoVNpd3XfJTsthsttKZuhxPEcRdixF6Ky\neRnJ\r\n=1qaH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB1BZnsWA3N2HDZc4WuJQrsRpMItcqahbgeFHGOVagulAiAHXy+nVAPNo7ypRDGFgeqDmhga4xJO3LTKQFQYt2spyQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.4_1597672874123_0.31944364314423424"},"_hasShrinkwrap":false},"2.0.5-next-1597683914-21b721c0.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597683914-21b721c0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597683914-21b721c0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597683914-21b721c0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BkGGFfBp/L9IE71Kc4NiQdwSln7ABKRXqmSzGsLsQdf37xrb/FfEB9WSvKo1IhoQ7bpv/3Uol5YmJT6hHTs59g==","shasum":"563124ce48b2a3371f06ebb73274d497022d8e9e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597683914-21b721c0.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOrlaCRA9TVsSAnZWagAAHJcP/R+EdBOMXuRvdddgSvpv\nYZhFCnCsyxpdYo9h6LteSWmCGnC0Du2I3xSGNKslYu7MEiZGXTwvmtqW3M0F\nm46t1PRfXPmcRfqBGfxDOmC45DTq6tNo0oIxbQ1Tq8EzNwhimBmOyed8hP3d\nofCdw0Ms7ZYL18af9AYTq8tp/zVRcT7h0fzQB/bG/7dkICL59vrGrrIbOb5Z\nJFeLFiCMuauIPHATn24JyADUT0zX2FPd+8fi69VTn+Ggm5d7hat1HyzAUSz8\nrbv4CjTFJNeyPfMwbQBJnVMYoTVTuFb3ZGwF3Y1F4NbJ/8e3pWIp2z+ua8sR\nc0MByy/gTOF3uAFQtQrGPdAYSiQlgeSeZfHplzdqOjjGuBTsZiT5M4/lESiD\nvRArpoqZXs57unvfw6JMUcGXMHgK6eFl/OQ+LjKVx0dXSQ+AKX2q6MzlOZpV\nIxteCw9/DB3PpRupgURqmcmez/pLww8I0MXePcCX15TBY+P7PX8vCR57rMOV\ngJ2y00jto0ZWixFPsHhDEHrZgmshsRb8caq3w/ng+eQpZmAfdOJrraO2+1Lu\nsUANizaeHR7SCF3eOPlbKYutJ7G71967JTRPFs4Qve6vE25jwBA+6Vm5QnBX\nE89aU3kR8XUtMX3V78j1kU95er3UbyQZ1KlB+LySRChz17TZ39/MPtTTQyN0\n3okW\r\n=4DkS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHFGw//TtT/FM9dux7rLCUIRMFEGhxG5bUszN5fWIW7+AiAYy6xpRqhXT0vQ2RLjpTvAITsGNUrjCKsmOSYqZPDnfw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597683914-21b721c0.0_1597684057859_0.8073396513887183"},"_hasShrinkwrap":false},"2.0.5-next-1597685497-9337fa89.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597685497-9337fa89.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597685497-9337fa89.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597685497-9337fa89.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yZevPpEI3LGgayzb2c5ZOKnEKktqQAgr0EJFuREv5/5Rm4AKP5haHi/1pLBHD1j1Qev433hXw9UF3aJxBKagOA==","shasum":"09df4c489f129318c3e6490b50e8843dd1ff1afe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597685497-9337fa89.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOr+ECRA9TVsSAnZWagAAqhAQAJPjOJ2zhFmUlosRrmBH\n00G9w4SwNHRPDs4WcpAPk9kWAtq4BFLxDyszXMhBLt6z/FPh3UUtE8S6nXzs\nWOhSBTxl+s8cFG8j423ZJA3aF5E72CZCGiy3STjOVOn/VlH/4i9mO21KyzSf\nd4Gud0MwZ2duxpJDK546vBErFJki6lJXEUcvlqSmVvu2FQm6Mty2qPlFgFw2\nUbgfKL1dosFxeJTVs6bSHSf7qC0FEccaRR1ih8q5dD7j110Udd28cEiZLOeU\nipgWaq5q8kiD2ZtYgMzQMfeczD3xdrwbsgTga3NzEh4hm29C6WRc+vrOfgcA\nQHBDefszU64+8qvmuHXvowXyIfYA0SeMAZmOHVPaw/Drz3Mlhv5bfnKGRze7\nKYAJzH2fXwIkBd1T/eIykBjeSwRAJjU767NU8TI7F7f2IUNW5WbvVctQxG04\nZMGWjrdIGSIFe9vz5zkR7IJgYi5JXlDkUmRbkmFWHJ+Q0jT9Bnz2CaKFw1Pc\nzRahoc2byEZ+t4JBIilV0KFyxogTlAAdiCPBlJNonXIq84IPoKyGDF8pBEHY\noXM25BNtvlBAvutfghOIhVbWGYfdsFdW3mUMl1wCSle9vbfRfhg3UaUtCXHi\naV4MIhc9dQu/kIQ9fJ2zoFn32YQTTOzKC6aHy8ZM2Z4g/Mb74amiU5hg5eGU\nj3qW\r\n=ZUq2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZ1GtolQLwHNquVx49R0Bq30QGi1WYV2ZknJL0aZ7BDAiEA/mt7pf+pteRPmSP8g9Xeo5qfV+fCx29x5vRtZVJVGro="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597685497-9337fa89.0_1597685635523_0.829248968853405"},"_hasShrinkwrap":false},"2.0.5-next-1597694193-3a02ab41.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597694193-3a02ab41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597694193-3a02ab41.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597694193-3a02ab41.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VRnKTROyJKSB1DJYFo8hG0NZiwqEKKDLXS9O9CHS5gtBUuy6MFFk6jXnOY+n1Rb46VRvLTO65XT1lg0glpLnQg==","shasum":"dc40d0359f58ff01c1d8140863a03a25c340b5f1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597694193-3a02ab41.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOuGICRA9TVsSAnZWagAAW94QAI4LdReYdJQ9gvaa91XJ\nm+TEN7P0pGxjXmvMG7C/yc8xTjj6UB1jnQEXBSFRAGg/2iJ6D36ExAUANueH\nqVAapZOoZv5HEip64TXdkATRXn5bfeS1n88XOEXSS81AeOuD6mi9MQvfpP73\nuXMk1mXjrb0RQcS6CWH4hHYtbbi2OT9CwAKD4kFa4NSHomgizyrt8p3GRfBn\n4ynavR2ph20fgSxQ+O9RJDkeoVsIuprk8rdo0xmNdS8mb9Mdz6TVswxFr0C3\nzqZoaqxqve+47SVqw6vMpKVYqr0Ib8sGVfhRTLUQX30WPlWO2Sd6IGG79P7e\nUtB2USyL2c04Cfpt7FMxZbHvlnOcjLtuZN25xwlXirBmt9sZOAQLFqzwvJuP\n1CJ7DGqxopkpQQOb8k+2eLRBepZsG9DyBuvSvYE/UtrcW8R0EaNeXDEv6uWU\nZnkG3qea5vXYHRc3gh7Mwu3dFJfSzJHTKYFp/DpQGJHghzxkj/949wd3Drl2\nsLizkGNYIS0bwIgXdtbW0AD+YwnA8eLkOp5emYHHnaooX/k0WGrwMOfC8ubi\ntJW4YvMZ83zhfVGZxCmZKiSS9/aMnP6NyR7eOIKm8/Xy8bRswdz+IkevI1Fo\niwjOJv5OyO2T9oc5DXWQdGTG+pd9Pvq4RdYT7RuBMcib+cBMdPIlnjsu166G\n2oxG\r\n=Cjme\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFAs8DFzR4jQSGQu5MpWf5fq1LL6DDWSt6yFHtD0mLQDAiEAqkg1BAHcU3A7ab4OQyH4J6YuXuYJrR0QXXEm4MkPAZo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597694193-3a02ab41.0_1597694343943_0.6646324607634262"},"_hasShrinkwrap":false},"2.0.5-next-1597697358-04fa30bd.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597697358-04fa30bd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597697358-04fa30bd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597697358-04fa30bd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YUom1f5s13wWUqp17nTNA+A/1Jmtp+o6tDYnJPKsxzs1fBPV6eW/LuT6nREY6bPLSOSIu2rKgC7MZoorb3Nr7Q==","shasum":"c6f1a1e4a0b64745103d2ce93b41627e6a3ee94a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597697358-04fa30bd.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOu3qCRA9TVsSAnZWagAAlA4P/jRyplF4TIsX5HABndM5\nyiXoClj1WvDEG1EfBcF5NYReP3/epWfRTuHjFXZYE86QZrs+GWFeygjOV9Pp\nMzwmySzkfn0ZT/wpxGuH+WzTqLk/8IvkVbhdVXGEABUyxmStjq3de4hFH3UP\n5BTk31EAC/eJ6WGnonpOucSdsRE8IvhTyGPLjfq4Dsytcergk2XLzZdNmfYi\nYpFolvULWbnzEZrbxRtbkzWWTQwX1IG0dmPeItO6ADm9o76aW/YNwsfv7EKY\n2GdjujLAXXRFaaL38UBKkyoAeeoVSHYnqMy45xjZFxD5AKPllmpuL097N9/o\nO7vYsOp0UDOy+829yp94c86Rkl8ivnOzdMSJu92+TpvWTGmfWVB/CzZKltF0\nQh+ryMVgXBUK9GxHbu6j+XuItS6lJgR1E7TUrSTm92qd0KK+xc9p9XAh1hjQ\nnnunPQuBE7pF5IjHNAqlZ8rmTwFirvgbqshzLAjaNlDhuYw+mXx32L6Aa3NG\nwjhE84wZmQbNUXy/e6ZB12s9SUlOBQbSY4dd88apVdJI1aqPcRqdtpM7/mbw\nixOXmw3dgIBBsiWrNf83VJ4qesolVy+jPzyrNccRkXBNJhhGoYZZvjulcYXY\nDUaTFezXHR6b7zlnDIDcxC9UZvUI20uwLhYlncSslNeI56wI9SUMmGVzSMQZ\ntWqp\r\n=a0RZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGCVZnl4pHRJVqJlJyXM4wrvcvuEziUlld3iguEqAavgIgGbh/nyedEI1HMo9dlVirTMt2AJMviJQlNV2kTh9tm/Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597697358-04fa30bd.0_1597697513505_0.27163844256810266"},"_hasShrinkwrap":false},"2.0.5-next-1597735223-6721102c.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597735223-6721102c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597735223-6721102c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597735223-6721102c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0Es9PJpW9F5kDcjcTtdgCEBjVjfWpdbf09cjP6YX+r2fWsmMnam4gcNwmgSBYK5DnR9Hy1+qHznfX5zjJ6Qcaw==","shasum":"8f9b05d952bc1c94ab99aa5501f5cb7508a775ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597735223-6721102c.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO4HnCRA9TVsSAnZWagAAi2UQAJpe1KnRu/gNAdTDUtky\nDdIOtTOcjUMa+uAZ6uD7NxR91xhWBon20sS12lOiamydMxi8Lg16Z5EQsbMp\n9dMGVwO6QuFJZ5lvDBjm2LLvlLE78p1Twj0083Ct4YBoACPZaGqn7bi5BnVe\nSS4gd8hu2w29TiLq8ImJ8nkuMYpRVclckMlQ3KwHrRIcwGgjga/53f6lTpVe\n26hJKvXX8bidheL4hLPllZcqW+7IZOxz1J/+le85BE/R4q9PX5DoMvjQmFXO\nEPYcF9rRtCXpkdolsLv0hXDJLdpE7OsE6TjRJi4wV21lXhz0Gn130MwzPW+O\nKy4Z7wa3833pYPZpQn30u81uEeB7WQM7vbXtoUetRb08b3zYuAzR2xcSuFPO\neZgKbvNvIBTkxZGTxrf4CasNYi5LNbuu1mqDam47AuqQh9wYuBA87HwEbHtU\nYpO/E6nq0IcP0tUDwULbIklA9fSBcGZ8JUBTQ+pA2Jz5v5aVcHLS0WBahcpa\nIqV8cXDvltVZ4FmNWqpqaI4wFuJ7zSJnImA7Wa+j8CyTMLipzHfgMQcPVknY\n69slUpspm4ul/5gEA8/I6KJANUxw3IrKHKQa1H5yd5vcPLfWKTlcRbIfE5B7\nXGah9xZSQzsvBD2AqvKjFXd3d1krrN7O7TZ43koL6DB76idIu7OyAoZbJP35\nLJXL\r\n=ktmK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwrvdpkcEk+Sf4c2Sdet1fBeO2i9j4XD/3LVhZbr843AiEAmH+ccXpj/YcDe1nhmjrl8dD6Ruv6yhUz00bSGlAyqcw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597735223-6721102c.0_1597735399559_0.5089292646287917"},"_hasShrinkwrap":false},"2.0.5-next-1597756969-d0ca5c03.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597756969-d0ca5c03.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597756969-d0ca5c03.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597756969-d0ca5c03.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EdNFXkTnaU6oYBP3hLn5UGWaj5Ho2JxuJFojd4fZaNeL+KEHxa9Z2CW6O82bU3aU8gL2z04Lg7NFH2pEWIxnQQ==","shasum":"3e70461e05d10ce6bbb479292a3de02dee81f80a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597756969-d0ca5c03.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO9acCRA9TVsSAnZWagAA+xQP/3Nny20J+AhM/Qb12phi\nFOJEF9u1n0Ap//LqP9efDp/w/S7Lcn0qotYQLz3+JwWLy0VU3xheoQNQ5q+C\nNXApetQsYY6LzgyADLLOrjdRMA8pcw7uOrqzcNusMxX7TNPE6m/6yxTVZiuY\nKr1is/cMr4dHMWSi5HdAT3yC4vMR9Qu8DvscYH7ld1cK+p1Yq9ds+Lb60mPz\njoDQGlyyLGygFFqbJ5mNlhYVGzUi2+RvJ6ujWtRHwQ3HjsCWR79TgkCdmjVq\nBYNL5W6LsqFBo+AlHETHFg/an7MNN3u2E6RPgSqxjBnfAhDWDh2S4HnDETmY\nCpt4az2ThXUuCQfRQBBEHO+KxNcqJoiJ1dUizhxc5IKa7Ue+/fnbccP67+X8\nHHwo6DIRrjc8BTomHApS97JntA4gVKZxUTMbB0Nfwdq4+d05xmk8yajjafvf\n/TWXDuaqDxjWrDrHm0ocheKlVOpkEDF6BOipZKvwFNCGou/uAsGg3nafrnKY\npoOYWMIFeC/V17HB4Ka7usaoAzDVdoiEpNOxYc33SvyDy3XvW28POIxqUhQX\nkUJaX+9FWOpLxJDBR0JN9GyD5sChJF2FhMwlby8j6LJTDTmtGmYVkAjsn8aC\nUzwoO5vYQ+n0OB8rNDZ+Gx/R3DrUHZIA6zy3enXw2U8coabY6XwE+TbafnSm\nbf+1\r\n=Uyru\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLD7MBLMl4D2S0Ej684TZ/356kheohwgORqPVRA+UBegIgDkYqbYliNlcJuPSidC7h2pgBEaK2UjxDaUA8Fir2jvg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597756969-d0ca5c03.0_1597757083711_0.36867357679554824"},"_hasShrinkwrap":false},"2.0.5-next-1597757551-81dfc75e.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597757551-81dfc75e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597757551-81dfc75e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597757551-81dfc75e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TA+DbVNp9idXY9CfvHSXbAW1HPO2tZcNQAhqV0x+9ct3gDMS/7D1752NJotdJZaMrMJ5lGdA0sc4p+ExLq8/3g==","shasum":"a56955a4f5f34fa6b1d983ac9a90be501859feb8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597757551-81dfc75e.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO9kLCRA9TVsSAnZWagAA3pUP/3HQch/U4IWcLVgNjHMc\nxqmzvPbEzxy7aLdabkbdSdNWa1KOlkE1ZFOhkslUXvsHVtImUWKspKMztI0i\noOFL0d9IfGGpg51+sujy5pLb0fMyc/ig0u9hutO4jVg75dG2BLBVlpOmyDXd\nriz1dmwS+uxzIuQlYt2Fi1wH4fW02T761VFQ/Ok4Rc/dg40P5vEgN54TJEvw\nPiR1JL3lrHyzWDYc7Hbd3GFoFmT1faLW/4/qTqkd7/vY8pySAe9WrTAThJSq\nQqTLwfk+7Tlrx1qm4XJ9tO4n9vKPmqjQgC2kLpTopmH8AzCMSQa4EfrAYmyH\nlCoIZYR4WQ39bCX9a+mcIbHvgDQl6v5YxdYj9vFEGUyyzqOCwSmsmn3UGAF0\nFcGluF+7CM0AfVjJ0LHSYh/rl5AUxH9TX8VKrfTKcZavyWmVWrIIMMjiKUob\niupjT7QPrHM8oefbELVEo0+0EsOwSzumYKt9gdBapQ7LzfBvtHKFGVfCPZk2\niq1xnHOLdUAgMoK4Ic+hC+EWX/qm7T7WSxW3ptlye7ZgOmSWlFKDfkqPo5Eu\nw0haOLPU8pkz88UP3Fwl96Fvg6qq+epMzbqoi66V1+Xx2EwA2RPivZe1PYUD\nnBGz+E/q6+5G59KzBAyQ2qoTCAfnpoTdEqNA9cLKr9lf4wNpAHtvMAYkbAex\neiAY\r\n=jaFM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9zewJYs4X5bHViUho5R+3yyGssB5NgOJkn8kTvTwI6AiEAzuL4Ntdb3/lxQWtdVYyvPBfxAZrEupghHkuUQxTy1z8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597757551-81dfc75e.0_1597757707305_0.7863521188473159"},"_hasShrinkwrap":false},"2.0.5-next-1597757648-338577b6.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597757648-338577b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597757648-338577b6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597757648-338577b6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-euzirYcC+l//tY3KGXjw/pOVMrm9fCV0Ijv4ks6w4LPrEDlnyrh53lUC8GgXmLbqwDFw+Wv17OS8Q2gVZnUKBg==","shasum":"88e57ee01932bc8f2d2c9f968e5e77c9d5fc2532","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597757648-338577b6.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO9lcCRA9TVsSAnZWagAANOQP/0gAxXz/D8r2gfa3jeUg\n/tq7xUdzziVZWX2AbuVyZQ3XCIxprbnbvayRY7Ew2Ru+cIoDU1WK8wSWiwyK\nwG/jCUr03P/6BApwtylbFQouuKFHkyn7ZkGJqB7CdtRSw4+Uul4w5TbMbZ3a\nJ7rIt8P8sMmRt/UhDIJh4d0yK5qcF4kZczUkDnc28cfbfdBmaTNtY/67Sn+4\n/IErbhDnC4HNNQBcDVi7Wm3FMcDHyqB8SVV2LHSKSh83NkgL1DeoszRJ95do\nSX08OGep76U/knzAaZdAAx7FNpyBkpiNqXqm48mlMkMScbae3v21i9WTbo6E\nsc38Dq9Axq6/chOLnJN4+OoMBry7qk5reZ+eEUCHaZXavjO1/BZbJ+uvOlw1\nJsojwrhaeKFtw/AOlJWg4WgdgC397xHJ5QyknXjy1boLmZmAo8GXd6aRPp2Z\nwUACP6iUAT1U2CLXLHu5RWUcuUZr+C759OEsIfa2cWq35jYRwC6YUbH7X14C\nm9moIMpHAa89Sp0KgKeQb8o8ksM2YlUicM7EvMEFOEhAR6eKSS8m893g+pXk\n06ybF8+mNaUl1ORnXd7LlgqaTirzfLQRNxPvUfJXsdv3yLoRfg/ijwADCCg9\n1KDNBmvx24JN5LnC7lSsopjxHNLpwEY1ucsVPZanTWcp6TVvdHmNfuTW1oFc\ntBh4\r\n=QxDI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEgf69neG/0sElXADZAUN9IYAGtCeptTDknTOpuPyyiBAiBpBQLq1f1e4SR4zo3SAst7jDuzHpwBy78wha9M/skBnw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597757648-338577b6.0_1597757788209_0.8435287654257653"},"_hasShrinkwrap":false},"2.0.5-next-1597757794-a960d622.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597757794-a960d622.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597757794-a960d622.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597757794-a960d622.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yq98tZnfw7xWAMKwkJrj0BmYGsAwSdl9l9yN3uEfbeSBGOXuDynrqWkM9YGtRTYiORPr2akSXkiq84kv/WtVXw==","shasum":"edcc6b3419cb71317f4fc4724b969660b90a9d82","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597757794-a960d622.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO9n5CRA9TVsSAnZWagAAG8wP/RJqRdu7IWS1z1AWcp0G\n4B/1SrCa3c0lVu8FJyJCdprOLnzluIVgl9dK1OV+AyqVhxJ9asrKlaAbc/PA\nVAyB4LERLkmFur/iGhf1E5OnDUSz7+EysdmZTrpCiHWQrdfuxJUNOem3onGh\nTlZZpDz+FtqS3RNBRmqH557IFmv1Zcal+402dux+B4LDCupvqMazYDIrTKqQ\nH36kwm/gpZPLfYsaB9mpyNScpxQlnrQYCSlAuBO3CqxGhzIUn03KH1h/WYxt\nk7atEP8HMf70yVhbauzKisVM3mfs52wPekUVgOcREIm56PVKzuOwMFiZwC5+\net5V4+TCLQZ5IbCjf3yKbwAPj1Znfg3tYBE9zhOAKzCcOZ+umhwzDdyBZdW/\nolpH2KUSf31qqt29hAjbn6Sg38zBOReru4JQrBQ8wfKvQNQx0pGETnxIHcg0\ngybNGaLKZmsyiLFj/wRV2GkGmVeuwMfmCmgt5dWXuoVSCeAXGKnT5Rok7qf7\nEY/ZYx2LVD5QQT+DKugbWrEIgWzruZe0Xq6SeUSw8CFIisktFMpLX68w2EHT\n7vVSeaNj3AhQHZy49oA13vn9g7qxx9S69MWJPGMVhiwVhXEKOScUuNYsfwOW\nQMtsjYrSD/1EFildRsoDviUZ/MuRaSI6O5LpQeeM6Xti1I4Rirw4a21qjvxv\nwYbk\r\n=Ayhq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAJpjd78J41pQd44ccgcMoEQjrYw8aKXK4A0/luWhh2gAiEAjRnSxiVtbSBi3Wf+U247Bqb5asj7BlNmouVSm8nRQ3Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597757794-a960d622.0_1597757944789_0.07285878666025969"},"_hasShrinkwrap":false},"2.0.5-next-1597758353-8063dfa8.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597758353-8063dfa8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597758353-8063dfa8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597758353-8063dfa8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-J6vs912KXGKGNQiSIM5siJSeFgyUE1G+Mq4eWrZhtYbYjkKkateHfxjL8Zu0zIkHG+7b6lqr0kbOW4bCMPgb2w==","shasum":"1d9eed658e283829f788161b853db1ef5bbcaa90","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597758353-8063dfa8.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO9w1CRA9TVsSAnZWagAApTAP/12Y/LrOP5XqnG6BwQ1+\na0GVH0qIPRpRXjHS4L5+4h43LO2ElG4K9dnWYwrfpUIxi+P4LtH34bIjdiy4\nOCsJ82vOfn0HmIm+Ix4S29b/3dOWfz1GIy5Ahz33t7GFyPzM+K44xT5ptkFK\nUTDRIZztT0yhWjXmxRZjeiS0ZJ9UM6IowFhYf8277fknyk3A755pdGTqv0lZ\ngRMXLitVEhkc/pt9HB3NwS+tKeQ7POMbzRTcSramx3q3FJgnw1KAqsQKtnuz\nuKgX9b2yu4aTulZM0EFOhq2qlUpmsQDqpNXpQ/RNL27EI6x1w0THNNBJtQfk\nJCcwWuNeuMLp9PUEhdbqeYv97M/CSpkERNMSb5WPu9FhYLKTcrBJCk2VLLmr\nMsTXZSUi3oISpaZTnZZWKQo4dFWgbRSXQYic+dxh+bYnnA5QGhqvawmJyKM6\nr7i91IwcwkKqY9QczY0qcgteoDSRUDmzDpGZq88CGkjTSZtq8O2B2jfHlUEc\n+bl7tjblynvlSNsI4S+WdWraPbiXVY9EI5QvLI3ksHmMyvPstaOeVNly/cgB\nE4+fHjRTmu1mnK6L3Ece01cU1aYt++sLLY4G8TWDYW+DunoZ/c0q2gd7m2eT\ndHFDGFJjuYjVotaYlWwVvOHDsQGXJQ5CtxOBY/h3VhhAx6YTqzUxkki33tpz\nySb4\r\n=cNTq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLSHH9eXZ9Vj+9DLhcw+1c0s34a9zDIdgwjsFSwp25LwIhAIig6rScvB+zuUAN2Ef1ORiCKFSNCLMRUQ4hNO9k77eo"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597758353-8063dfa8.0_1597758517157_0.7547214196962087"},"_hasShrinkwrap":false},"2.0.5-next-1597760047-8063dfa8.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597760047-8063dfa8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597760047-8063dfa8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597760047-8063dfa8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-18FOTgvsVK1NVXQzBfxFbtE0gMqa3Pny4p6yT3pka+yhb08/u1cpgAMKtQo1KJx1jx0JcwdMN6t+kpOmb27DYg==","shasum":"fbce8d897b0318c8f7969311853a075f3b8d006f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597760047-8063dfa8.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO+LECRA9TVsSAnZWagAAAZ4P+wV3qThM8I1cK7LxfR41\nJ4TBxbi1Ryi4VpSciiGrcf79/WH7Cp3AMwLBwENukFB2P51bsD6bw6nbBQEn\n8ZreahZMY0jwBN3+RBVKcYNnruYs3dVXshLgd8oDdCnxfc2ACFm9R1DptK8f\ncUV0CGZsxXHmniHsWMcKNLwE8dXwLf5wXrpR8Z9dxKc0yLOJ3U0r0s+ddN4W\nugb5RTh7eoQK/kWbs/0cdseBREOAOUZb9cWUU26wnf1K1MjAmW6aTl8j2m4c\ni3BOvx/VtLqiGDapfNyfmv8SGda5Pfh5aDUC1zgtfmEYrKhQtmoifPCsofK9\nsIjxVqaPrZVB+t6oVlguoPqRkIEiuudOFHxSgyqjVwx03SlXNiESIjQBuwMr\nsDKe0lh/9lA3h9wkEQCmYqZQxgwv/sXscNnEJdRop5bTkUfVMfT/++Nu70Qy\nkyrEEP0AYGibooAFPEWVXYpmrRc08CZECVYHezpCsWQUrO8w0DWxb8cDlI+Z\n59p15bg/LG9sg3thxSrfokb+w0IYEV14regTEnpQ0DD3N9Cl2PGlf1GhOltf\nGVtihclcX4Mul1Q+VjHHgWIewdwEK8QnTKllRRCU6CyesJ7FrrDohxtFzpPd\nKnboH5sMAuHx8qGR82NVvafy9nhnzE13lVT2TMbIns06OTdeSD96utqUKaB9\n5sBz\r\n=cD3f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDknwdsfeEn6nsXCIZK7XYcQdQQ7ysjwap0H1heFB00XgIhANWrmk21u2dWyitz/zZtlNYAZ0SccKpStP8EQQpDd6ID"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597760047-8063dfa8.0_1597760196241_0.7899766574883205"},"_hasShrinkwrap":false},"2.0.5-next-1597760858-2f20f81e.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597760858-2f20f81e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597760858-2f20f81e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597760858-2f20f81e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-U3GRweQwaWkKTOximpeIohhSEk2nnQUyToi2Tpn2lgFAaALchtA9Q3G6FFXQHiZTXxC4GxB34ld2r2ireeBFRw==","shasum":"e18bd4ea5daf07b4fe50b072386d2bca009c3826","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597760858-2f20f81e.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO+X0CRA9TVsSAnZWagAATs8P+QCd+iML1WhkO0IMxdeX\n4VmlJdtK10mHg+PDpmbyZRgqibbJz9fxKl1VkFmFovHFRs3yQ/IkqxAwks2I\na8CFErpx7HJtpTM0bIb2vB3fMH27Rk6oes85fB4pWCLW0PjrCYFfD94TeEqc\nLfny0jR/X6aOY3W+lu6GMcCXzwO6PsmrRR9KMRPZYQAkY/Tbw7W16Yv6saKn\nT0bEFsqAURxPsUjY/thFLBC5G902+1bQEHNBdc4aJd/ctqipG+1VeOBSlzxV\nUnlJ+W+JBHet3buInIo/IH6nS8Fxz1avqtMZspmD60ryJHQwXbvcSbDxqOdQ\nZMHQBvAlPH8l0NUz9BLiwX49g5v/5H/57VQ/UXQAjaKPfBZF2BK+otIzivfa\nu/XxtSTxiV4SuAepx0FGPhwaTi9x3xrZfhyTMZznDKWHckF3U/pd1c6YgRKf\nqAmmmhUXHSlX07nenmX0qIygGN4QbUnVtYZaiTyMwV1ogfbmokyI3e5tm7IV\nkt4vPCCZdNQVdDrYb2GgZbdI4whvryeRvy2UKbtjHV/1dd7JmAu5eIXLjLFb\nX7g3oOBz0v7lsRLNIFN+3qx7VNOVkVjGEsyO790JCvq7kxRgQMoTDPQ3py/e\n/dI/xM26cKQ3UcGy8LZ0P0wRZBi2IxClB+uskxBFOFvcWIbcie3Uc8eeQEN8\nHWhR\r\n=/3rJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSUOxPY16zWyXXiUTrlP9DDlgwS7yasDqazrfXqlMj3AIge/EHIdTRpLmdL2LgApDbDEv0bAWkaRxZ2rAtcow1n6A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597760858-2f20f81e.0_1597761011591_0.079229066037098"},"_hasShrinkwrap":false},"2.0.5-next-1597762572-abb5b88e.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597762572-abb5b88e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597762572-abb5b88e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597762572-abb5b88e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-za8W7YUc4apK0y5fsDCd8D+wZtdDO/+KWgUUS9e1qH+51larMADrwWtXN1+udB+pbRhZpqhK0dRK6uZ0vrB+7w==","shasum":"bcd9ca369574012319188493f77ee153d607c331","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597762572-abb5b88e.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO+yjCRA9TVsSAnZWagAABXMP/2igxz1YE5bmfYLypggz\nS1vsSjXJ9H2Pi5FyfgenfxvxnniWyBifZR9/cq2sNBwDhF5EwNrRpPRd2zHX\n9/I1BvNC6DxZJ5knU/YXEwoVdTo1VZEP0ciA/UjJccksDbGZU+/rKud0WfML\nJupQkxlEyHji7q3veLN4T01f7QPMOxbppsEvgUyweGU/zKyJHQQ37jGWRHQR\nIOsHkZhjsvexATH0kwIEaCbgP48P53ePnOFx8SLgcJZetZ6b8jIeuO1cDHQN\nBVmpS2CH0UuZA9oBap5K9GIIgtqaLbBSUaGj7HesJATsb7mDTN1QhjLpF5x3\npapUT8tQbgqVevHiyLtgaumiZaDKG0QS16ewLHng1/tycr/Di930u+x1UTlf\nzqXNJH7F8RS32ibM1dijfI/B1MCaRfL0Zjz2iswyzmJrs0sZDW47yj4YA0Ha\nCUQ9OrwpHhW5pAC1ZwpFosCQxtfRwGgYTBesNF1ztS9ryHprI3Z5UtfKfRNF\nkVF1AH4u2Cx+BdM+vW9IoswzsFW0gaojxG4DPe9E2c2Sx7jva5QO3uqvmGEf\ntDCGW9k5LeyG4IGt1qs3gJI2EKzxwf/wXZ4oY6WYu+LAhi1GhuqAMh5URZWT\nnmSQnfVZie6XFL9mWAAuQAuk3c9RNWJ4kI68iJsm0WjuAtNbihVMoKWC+yG4\njgxG\r\n=Ex40\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICpNLLhKkpTC35WPzBK2WjHX02yUUknJKV/FqXiXwGysAiEAsQmKYqU41bUviR147WZZWCTxJeKZbVc8dzIA9RKlSx0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597762572-abb5b88e.0_1597762722934_0.5552009301167038"},"_hasShrinkwrap":false},"2.0.5-next-1597764745-0f7c65ef.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597764745-0f7c65ef.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597764745-0f7c65ef.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597764745-0f7c65ef.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-aouVn7Lzthx3+w/Z1im0V2oMTBq3F0W5dCRd9aHAAnK92VnR26MURPNLHFQ4YRdvqXcnwnVXOSL9tYrIgwQ5ZA==","shasum":"b3ae8fa68e1d63e733780c423450393c62701f0a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597764745-0f7c65ef.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO/UhCRA9TVsSAnZWagAAh8oP/2XlG0OlzqimUMHkQCTG\n5cCnx4K/0VkzOq2+iT+A4vJFm72b2P59Z5/zo3BuEFcPymbbem7hecsjaGDl\nB01cJfTyxcY3O6fPCe1Kfy8P7lo4KKCWzj7Hrk/z9Ni+YwBbzjjYTlI5T5Fs\nTpw4bVQuFtoo3d2gU8tHZL7A9uAOtvFi6mPv599FX0EBgJXfC9YtFhIwTez+\nvxUxRUQHvzP0zAXo+kLIy21Ktn+za58Nbw0EdsYfiIhxgIPpigfvZN3+pPGx\nXzIE5oQCQ3lQ66GnIvfmiCIHHKxXIaCkyPfkHeok4aOuq5TqljtKE0MbObdQ\nCKfOrpAIzf+sDsk0tan/S9Sk69tEewu68b4FFWzz1DpQH42z1VzzVQfkXbQF\n1c48FslFDAraHT5a3zQ3Auo2vyDYRtMvsRANkyNmXx22YC99RAUTAZb/WuHr\nrMfNPjjL72vUmGReZumeUnQ4KXHRgjYev72UqQfj9igwaG8BwN//NwYyfpcW\nYLENqJzA0MZqrBlvT/pi6+varV32SzQZV5U2dtEbDMnRaOb9BX/8/QxR+tPz\nLI1HJC6MxOSP0yqIBbmWCvE+8KbpIrVBavqqRIhcnSmeCpIrpDTXTaQ1Azbw\n8Et3dsjLNrABzWo/TC1DtL8nv2qUuDIMHBbMwfrflMk4l33R5eQMjkkuc4OE\nrdRk\r\n=mliV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3P7CwWSaWTxIqFH7YrTMSi0lDIiaYBwO8drKOVFKvsQIgeeJbvkJPheAweRpKax5WY9b3AsSfq2sqwK/D+4ijhR0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597764745-0f7c65ef.0_1597764896742_0.23205332899595676"},"_hasShrinkwrap":false},"2.0.5-next-1597766574-ef9446f3.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597766574-ef9446f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597766574-ef9446f3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597766574-ef9446f3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+4zlkzXYDbi7TzdleLSDS41tc68lek98gkbwu8xGyxxCkdhTRPOLF3wybLRcdJZSHl7OzG3I3L7I9ns+JyxinA==","shasum":"6408660ca6c6a5269816201323af44b6abc01f45","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597766574-ef9446f3.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO/xFCRA9TVsSAnZWagAAIUsP/RpcVs12cb24o2VVaACE\nIhPIez8Z6+n9UE6Wf/ja8E8f+3nxcpPgQkHPRm/ZdbakTDUSVbSMRXNASH1t\nzHkEr+7GLaTNqEWcitshYHeQ2WpQcHOlGZ6wNmWC2WbHjLfadHQ2dhwt+HmF\nnZ+UO/2RYWS1ZdDX+uK6QsNwCWWQ8YbCJdxePXtPCNtKFy1QxlshsVwHMav1\ngGbMEvzt/Dfk3LRLGu25y1YO7X8G2uytfmy6Q2ziUNKsPafQlMRyTFrWo/de\nNkuVS8SAFCBqsorZ2yu8cShksI1MdD2WLLwUG+wLfjV0QcWklueJd8kgLU02\nfnscBa2FA/ms+X2IlIlftGTHBHaDYU/S5arLWsN14TLGa0wc/OcgsYp6nNqy\nj2KRdg2UQsh1lON04Q8ftRKDQQyOW+1cGkMQrPBj9wk8o0cL1osPDvIso/V5\nSv+pm52BELd5zMOhBwrX7mdPoDCUliCr5F4MqD8N6aAYb26QJOoMeXK+qI5V\nqp61TmszUj+GTAsVZzF7YSBPFKK50Cx6c1gXGzW9mcT3UJYBRvbZ9s8XW+FW\n9+l2Hg4+IIpsh8i9vfaD9VAFU02ivWImSMA7xNYD8qpkPNj/Cr2YzW4GDPt+\npGrgBr1yYYNa2fjJO9m5P7dMKQUD1iHHPexQ0d/CtaU6BcFyYAKL/7B/T8Oj\narTR\r\n=FiaT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHaFesOInAEsnaLpO72jWPGZUi+ZeDL31RliMaoL+rxAAiEAvMIgyNgnPMHbKipVfg766zJs1Cf4oCFEwHH+ZSzQqOA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597766574-ef9446f3.0_1597766724570_0.12204148131100889"},"_hasShrinkwrap":false},"2.0.5-next-1597773550-c63ebf1d.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597773550-c63ebf1d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597773550-c63ebf1d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597773550-c63ebf1d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7xPYKKOQmTnZzCWCYTmI6T9PV5DMZcwmwEQsx0tuW1ZToplrXPEL8q8TniyXuHcz8NLxUDBxbdyCaTZWJvaF/w==","shasum":"19a5fbcd4603b15fcbd6d63ac59f658cfc8bd306","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597773550-c63ebf1d.0.tgz","fileCount":56,"unpackedSize":104160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPBeECRA9TVsSAnZWagAAhEkP/iJNUltI4C8ZvNm4N+EI\n/7TbR1H8zPCdzQnZy3KxLlVXc5cP+l2vrWRjt44pOhyabUkwpa+BwmoQ5tCD\nX2fkLGVuQyi14p7S4AVEZbP/cMD59H8jealUs0G7tQ9s7/Ze/fx8asb5MbeC\nDFd7T0lamkpohnbl2eU/6n74lR/7/crM0HaTtQcDwI7shw4cS2MOtKFTt+W2\n/uRbYCYzyImG4zKT2D/x4FEVI4eRyDWEMwWYGgM83MvLhqMOWskaaaNJsYtR\nrJsrCUX5ncq4KVZzgpOrRjdPjHW7GEl+gZm6iGbqBPBEDJfQ+yvH08potV6j\nV87A9SDWWFG82MKak6/fWk6nqUeAhzhzrg/n1Q++z/HB0UyFmbrn1VdZoovF\nKHFU4IWSEU4mHvKr9H8HK1pQKJpif+63PsdhY6S1F5FbALbuLw4Ij+wIZ96j\nW81LqVETZweLpHA/O4rHdvSfSeYgqKhxLTY7BXQr7ouc8D3cGQEaLaxBz3/V\nreSDoCt/HxlwAOyAOBYe1O85kX8RTzPCEmvNMMxyOTEWsz5xgTc9SkxsPSZB\nuLF1wgjRnszv52gyduotqqOrzeXjxjL7WyJjgK7798/CCjMo2hsjrf644lWy\nnazs6XIPNq1ro8XNOkw5egKNzyLldFrM7pheGLpZd3No3H7sBmB8hlAzl9oA\nQMKR\r\n=rY3Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICXlm26wKSdtZ+HU98gVQonSustEuWIH0Vx26TmqJua4AiAHiLxD3PsaE6QAn3bhtT8waqGY9Y4UAcllcoTTvC2zEQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597773550-c63ebf1d.0_1597773699736_0.4378835922508939"},"_hasShrinkwrap":false},"2.0.5-next-1597773572-f601925c.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597773572-f601925c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597773572-f601925c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597773572-f601925c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wNO6CBjMNecYfnYHc8tK3WypHb2LZMa2VGfoMDcSSAuxUZWeVAO2qRAmpDYE6CXKfN4W4LMnR0B3DD4bHQaGiw==","shasum":"d3b078eeba3f8360ba681c6e29368ab0902aed24","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597773572-f601925c.0.tgz","fileCount":56,"unpackedSize":104296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPBeYCRA9TVsSAnZWagAAmN4P/jNjflSyWR+7zRwhd9nC\nNZpYrXFdRNZNV5nUNniiK/lS/RKJFHjBlsKs+Q7wDLBL1rLvEbUpR8vNigIx\nL3XDmedETKbhLgQV4NOS3Tx9jJXFH2ugYoLnMo/MqpiJC1Cf5LRdhre1Uikg\nS27Ywpwtdvzmyu5eZgoLWqFQ6G8sK3lcfLdqoT9xCkHPu2MnlQ9Dpbiupc3x\nL79BSxjOtnw3mzbyF2rrIppq74cLEW+CouSqvVVNzXS0S4Rvge3wazDhHPGC\n8d7nBPBotE3RkiXeskwSa6qe+boPUP0cIzIVKPJ8aYc9O2lxVupIAV/UYAzx\n19KSWeULlsCaC3rDvD00b0a2MpGch19Vc7KeRPxM82zba08XRyeS29gsxifV\n/muMza6LEvVxPA/3+TLVH60uKuL3Jtnk4urhnqyYD53ic/FHnpbU8CVStYbx\nKpa2I5tE9YXv4UOjiwI64rwkl6RijiaOj+3GjhoBxTrcRbO7yDmeBykE95IB\nOJwk/MC3ums2IqIXw09LAVajIGPOTpZanQfWd5El/f3Vc31agMOtzy97IAFn\n+H2mhyh6kGe75jwpU0DYRWjemx9nPFHkYujnk0lDrbfGPFJZTUFy090kYD9T\nPUZWwi02Bs958g8x8yV60FGL1R0cdssWpfLr/QIOVDA+U375t8db+08dOt7+\nkvjp\r\n=tfPK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/GwlfF32RAXeivK2i+e0jhY4VHD+kL9K0/8Rs7tQwtgIhALW1ZM24WZMlFhxQ/qk5w7j0WMquYuSo0Bt2IyTaIIYa"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597773572-f601925c.0_1597773719758_0.190426169457526"},"_hasShrinkwrap":false},"2.0.5-next-1597773628-7cf4c771.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597773628-7cf4c771.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597773628-7cf4c771.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597773628-7cf4c771.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-z6zl/v5MXCazxIeT88nTEe6RYDJ7Gd7OOIcQ0lpqaisGSVJj4fHnHBjJYfQ+xXqqz5T6FHefxPzgEzStsN+3Aw==","shasum":"23c2bbc74fe1cfff5c8662e3822af7f809b87883","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597773628-7cf4c771.0.tgz","fileCount":56,"unpackedSize":104296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPBfZCRA9TVsSAnZWagAAWZcP/jK5eJhgEJgzKYvUwrXt\n2gD0SQH+fjBB1PJK2ytrzuxMVnNyVkWTAzlpaBF2d+4WHk8BB671a9QlQfQ5\niWSgiVtUb0NisQxtb/zyWXO/XrwujYbs+dlporKz9OcBNAzJEgIt76lS6d3t\n4ObNVO/+xMxlysR6KojqaMHQk4sg1H1DRAC8YuTDDTNBNqbtMmNaTRkWonJc\na+Nvikm6iiSgy/Dc74u6leXN7g+ZWfmbZIRHr1V5kKF9KmW1ugjqXcvM4oCQ\nQMsQibvnnJ7a5Mo03w4HVrQ/lShVhrC2l6JYeqERf9/7iMJENBKwLagcV0Kz\nxiUdgwDq4SBAFxxkQYp0H7J4wt4jG5mUOuNkIzXit3QPp0LGmQRaHT6NXKyR\n5g6qGqb772EZuIPtxmDS5gAnaTYQeLKrNiKtbFdYyMXDKyosrb0Hg5zA5qEA\nL8poDfqZwOG1kGr7AKcFMNKgxtxeTbaVpxhQz4sac4FDT1HGH43qGo1YpTQ0\n8kuyOqsN92wYn+jmbAzkVrbX9E1MkdYYfp3/ZSkQHw46xaKG0wm+IAyRezgC\n4iUfguQxRJ1RAeicRDjz4w4Tj7MvS0yE90DCHlQ4wsC53KHktwVUyvCedlkk\not+gDuV2ynKGDEwn5VhXFuHPuLx9Ru++XMtV5geo2U5uO5k+VrFg6w3DvzS0\n6PT6\r\n=ZbNv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCb3ukzG2QFFXmo+0pUcqJAra0hT5OD9iOE5DXES60EKwIhAIedxy72HT5Nu+PIFnuFAq9EbHWFmJ3CDU+2/VTfFS8T"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597773628-7cf4c771.0_1597773784754_0.42729995543936794"},"_hasShrinkwrap":false},"2.0.5-next-1597774464-dd1542bb.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597774464-dd1542bb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597774464-dd1542bb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597774464-dd1542bb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MzY6n3U9Io7DPtNwi9ehLxJ0UaA2g7qRegvpzioK3/sp6q+TnUZno2W2NtOiB+7ES+oqap9WWEEQDOMr8nSbWA==","shasum":"57bbbded0774e8c31bc7adb6154aa16410919abf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597774464-dd1542bb.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPBsICRA9TVsSAnZWagAA1NQP/2An1P2n1tXDsA85oMPB\n01EhFbWJt9NU4vboQta7XRwlaunnArEF0oImtFaMO5DYksm4kibRte6CpJHL\nuTTY5EMjA95YnG9a6g29bMlYvLppmI5eSjTb31v6OBdLjJAJ0Qs3A7JInUMO\nBmFXRYHdPgqUS9IKvBrL865qwAy9YhZIPMT6zeJpUsrssxeMnRmzWnmNIdnn\n6uC9NL68d+OsDDxvlvCiwTFX7MWLNIkBO8J/jCXKSy1WBL5F1OQsGOT/p75y\naoBgWT0awXHnuL2v4thHfpF2k7OCTDuLRmfC62AdBiB05/WmM7ihGIshmZZl\nEwUEvn93P/9Q5rogLpkI/9vYQ0iD8/fTbthGJ5KH0u/kqvgUT0wzoP366Y5P\nS5cmsXWOT2s11TTUIVvhsGTHyllMu9eIbLEh8kA80kthxw96XMpmrXVdKn5j\n+MFZ9RhLMB/u4zogwiZaXbBEmq1jlVSRDiZ6pnNsy48Ok1W2PkMH2+2DtdGx\nu9Ef+4sBl9savi+xRrmUlLE6OQoXDGkoMIc/ZLDR18eUU6cQ9Nuaknl4MefK\nB6ChJ1aFaCNukabHt3eqC7paDuEA7MUIkR7dhktfeQxcDSMjrWcM9srz+3jU\n30nNOHzF3GypzXUFdY0qVrPZ7w555a/rDFY24hsAISuPEM8vc1/rccWOeDaM\nyoGh\r\n=A+OE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHo6jXOYMyeBrq3qSRnFWQNwH3DN9p8214x2Sy9Z4tQaAiBUhuyTkuA3Dc/aRRQ8TM5KK1dE0Dr/VXdqO+UkUB4TlA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597774464-dd1542bb.0_1597774600100_0.9446069775403436"},"_hasShrinkwrap":false},"2.0.5-next-1597775108-bfa19fce.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597775108-bfa19fce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597775108-bfa19fce.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597775108-bfa19fce.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oi0n2F4I+cT0RzPH7at3akzQekn14JKivf9WDwWoTtCqvWqpTqxhCZWScHlvy8DWlF5Y8Da8lNRPZLf9Ny9fOg==","shasum":"d69eb58695f9117e959774832a5bdc5c6512fd11","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597775108-bfa19fce.0.tgz","fileCount":56,"unpackedSize":104296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPB2kCRA9TVsSAnZWagAAQIAP/jIIHnQZ2DkTbiOwv3Gw\nxYXwl8QmGxEQGUMzFw+Ze0CfBlkj74JOPq8+mmOv3GwGj7BO/M80cNVhUoqg\n99se9u2VJwWxX1RDQ14CCOMqhLoiRDb5l5ToH/5kHVjmB+H0jRclF8yYQeGO\nPywGhaVXGDkoVgHeK662vrXt8deFOfw8WNLGEClKXtypwcKpIAozOuhI2d0A\nNZmFsHQ8qmNBEUg/W0QpBP41S8Lh8HNZW+F0UnHuxu4fWwUmWo7qBcO1PT7v\nfY5jjzb781wfCmG32clo/k1hRQ3zwbrnOXVw4/HgE/+vI0Sqpl1LTbzwf/3c\nT25oiugb5lylH2nd9bhknteor+453ed2ZF4Mlz2JlziA/N5f66dBuFIaOuhT\nZ26Syp7cLJHhPHWasZA9hBHo8he4R8qXZa72YqfZ+ZP8q1HrrfQ4XpNh8l9o\n2O3knjmDiCxBDutjAKtQxwQiwdpuvLW7sFcA6xc8hzpZHc7fP39hFSraeGwi\nEgh3v5xgB4X4xq2aX0sNViIaUN3tV58JlHAZ52IygL3SqIJB75buIBMbsK4p\npGkfRM7XtC4f4uy0ipeGuwl5IFxxS4MNZ7cdXqvgi+YnLK9O5eQwc+ImtEdR\nryj7VQrsRMJTushkf/z6jXCRwWEiBDoC62yvN2LW0KakovPpEDUarxqFKCsd\ncjXV\r\n=xfdU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDplLnKmYGxT3hoiinUYETkt1QLgmbrJ8SMxA/W+2g1KAIgMjL4edTlhwrrb8w+pl7A4sszrV66xVKKja94iF4rTxg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597775108-bfa19fce.0_1597775267748_0.583991912172106"},"_hasShrinkwrap":false},"2.0.5-next-1597780246-7cf4c771.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597780246-7cf4c771.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597780246-7cf4c771.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597780246-7cf4c771.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yvCo0pYv5zFe9VKiNwQyx7KdXWpTxkKVuED4Iu5ktJKhUUJHX2VwvHKqYUxFsvxZGVlGUExSAdxbEW3Lz9zvog==","shasum":"ffacea3f2e1b498f7d865182cf43752b5dd028f8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597780246-7cf4c771.0.tgz","fileCount":56,"unpackedSize":104296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPDGhCRA9TVsSAnZWagAAo24P/2p/Bh1hHSUm6i99571D\n5JTobQhfHk34eF8qAM7a81BJvbtFip+7vZsdr9mSyR/Nj9nVzYQwetdm6uA7\nHEi4c+aH0sOBZ0xqlEFg0WDZbyXxoO+Lw1CYbnGd+0zOtan4yeVoifAh05k5\n7M7A2wCLpi2qCvRgn5CKDAJtHJhGgaZblt/8Im8huLCVoC5VPkrHJwZpVT4j\nZVRc7QTvJ+7Uv65a+D7dqvSC1wE/VwWEVDXeM3ZQvWIggPZF0mQqedc/MNXP\nyeWk4fOZrhPZwD4yGCizB3WwZLDcDbc3YNDVjmQ55DkTA/UQVIqKW0nLb2Ct\not6Szu/jSUZIf/tiLyvfsZLJOBwkqe2kVpMz2Ote3VxJ8Qb0NnOvIdIGSNrA\n9x/5tVsqVGpL7fPZ0dHDGPVnRK9wYw+x+FsT51PbPG/yBXRrwWIs9uT+Yy7p\nvDUVbE6MzgatRd9br3iJXtk+dXwd3mJfLnooveCLXtrx7K5ynJm631fhjNrL\nye4EdqB7P4liuknM5de+LbvA6D478mavZ1DXk5c0byGCDs41bISG32nk20al\n1Sy7P4YXCHyfLbhhvCWie7iBqeiPhPwKBGJQ01OVrtqywt/2y5YUMXDMF77g\nWLdHYeD7v4uAiz28uP4Vszckx76N8QN6q61TVypwq+z51jpEY9CtNVFtCzCA\n2uuw\r\n=4Iz5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC0WEk3bv9VP88phGwImcyV8nAEsdycHS3PVSqJCN+1wAiEA6GwBVL0JhqDKdvpXP1ax2Y7G/2/fyns18n2pNlMOQ/Y="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597780246-7cf4c771.0_1597780385209_0.3334078580251725"},"_hasShrinkwrap":false},"2.0.5-next-1597783670-d5c167bd.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597783670-d5c167bd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597783670-d5c167bd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597783670-d5c167bd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WjktpOUilgdn4C4ejLLsBPAGYtbVevqiGfPfXzUS33m8rXnO7zWgrjZuOFRUGE1Z86jN9/EYUs03NHIp/StRFg==","shasum":"1faaa417f80a4f509f30cd5de6918276f0ac630a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597783670-d5c167bd.0.tgz","fileCount":56,"unpackedSize":104296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPD7zCRA9TVsSAnZWagAAquUP/30k7AGFxZFQSoxCMBh2\nVhuOcOg9HUtAy5ce+3IdqcBH5KlVXlZMyvViZB6Pg2zO+XCgKerLhgb/BK6D\nYNoyquAQpAQ3tq9RwFVojeMvqZH2N/wYFA58PPY4aHVPcoPcFW6iCwn1fQ4a\nKvBZ+ccjcxgNZYuVZfD9afuUy0oGONR4n2fsdzmrlY0ywg7csOe01s+VaT4g\nd2WAClHP1lDchcv69yB1iB6d3gDV/bXu5mxTxyiUF/PlxwcHC5105jhDg/rd\nMkaa2Qr8Naf2t3DpT2p1F2Q+XydOGxcM6Gdj4XGOqsOni98zwLxRDj0k7V9X\nvEa5PWIp1mFQrfqV8Mtid+nSyu7nfMNwByzFkkFqy0khOwvlFcU74yJXUMuY\nMcR6A96iDYQKZR7J1a8WnTjd1+vHg1lmB4IyhjpH+H9jiRs10UBFuqbwSptZ\nd9neUGcA75mWLox7TWVlRFLEUzTaPRm4Hy0UOQHhn0FYfy5db4wu66mcCTER\n6KANOPtJwnuC3w9ffzPclVOc+uUvekL8oqtYI8Hy//xbUefZ8FOoyQPgTGjY\n5+o4YB3II5HePsceFNnLiaPoZs0yP6GQep8nTNIdWrCuqN0xTBQWaCBvd6SX\n+OqLQNNOPIB2NjYAVAEVsKoHylI/pdMtMrX6qt22xVo9yZQIBC4i8pawJZFz\n5Mll\r\n=aXfu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWESb/kRDx2qUK66L6D5rTfgBe41rT/TTyoaIhDF6VYAIge82bJw9oK2vWjDX0F2knlbJxgQ3qFvgPTCOmyfQs/yY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597783670-d5c167bd.0_1597783794927_0.4500898488670926"},"_hasShrinkwrap":false},"2.0.5-next-1597786246-eae4aa26.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597786246-eae4aa26.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597786246-eae4aa26.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597786246-eae4aa26.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kRXbDovrCthhyHpyNRSMQT41cS/oNzLcBl+ylsx/oSMIxKcI63D4F+FZXEO8nQDntIwSPlJ5aLIifceRgiIVwg==","shasum":"e31f31bd5d7a38d81f91c53ea7213b81ed68fc9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597786246-eae4aa26.0.tgz","fileCount":56,"unpackedSize":104296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPEkkCRA9TVsSAnZWagAAXXIP/Rzyn2Tw2cXzdYmWxt2x\nCSjTk0Wp6B7djwC3xQlw9cw51QMdNZkyA/UoqSl0mjazmEpUL/+FrSZXqbOr\n/GpBbvFLNhZj8WByXAMoUwVKzARaXAchG4GKdKUWIdhe7Pu16+8eY6QlpsN9\nkPoyv5ajCT8iaG3+sx9s7znFkub+M3Us3lQDgaVZisVvlF/n9S6nT7NQ3Su0\nb3cvtotu6MdBDwHyvtGNGfS/cXATeLFlLIuv0Ql9ZGTGT2rPHCIvZf50l5/H\nekOK/YsSmUih1LB1tigQK5GS0xzqLzOXCIBdHT+xZBtFIcrOpA1bJ12S03YE\n6ND6Q1mt2LcuGhsTtm5yf/UkhUJZMADDfBOT1wlOUYpLeOUHeCtW+MQa9Bs/\ngmWkGYQCCJyKAOl9FS+c4c6GSc05fcyUNaOYzdIhS7tB7HsfPgUS3ZKlFRbB\nJEjba9pLVsVe+HazIO9EJK//JVSRxNTk0qEw7D0MXpAYRoizBjSjV/0Lc4XX\n8V0ivdcTPu6COu/xs24gbfsWBSSkZNZu7akmOJlOalkVA8ESf0sWZrGxGQjU\nTIbe/9sdAKf/vci0+V7bC/+2Kde6dgjmLaDsmSWnTK541gMgfHQ2KJrTkmqS\ntICMhG+oNBvb25WvPiLg87enmJE/iGlXz63ORMUDOLSXIJBu7NQ7sC+dHwH6\nQYok\r\n=A3rK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0BG5dKpTZANdINwJQ66hgfeG0vVP5huSe6dYjtXBpVAiBATpNCm6sDDY++XqCcOENe+qat5+48XfIVMRl9/cZ1QA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597786246-eae4aa26.0_1597786404212_0.7138131519916959"},"_hasShrinkwrap":false},"2.0.5-next-1597787058-33e8b7c6.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597787058-33e8b7c6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597787058-33e8b7c6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597787058-33e8b7c6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YPkmK/gYYmlLGki2tvmLz8/bv0nOkCneIfXsXCX+lsUI3Q5it+l5BttiKFlFUdV5SpWPZFW7M7FxvFcyPZjdqA==","shasum":"62f5a9202cbba4fe4cecd1deab76bb683a5a8167","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597787058-33e8b7c6.0.tgz","fileCount":56,"unpackedSize":104296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPExUCRA9TVsSAnZWagAA2LEP/2BbtKT75Xlnegzaze6K\njRYlFIBkl/pUP8TeRdGaKfuwyimZn8w4R/HjtWl+4HBpVOOKsYphSpUUZgTj\nIjWnaEHi4Ce05FGFOR5zFBSL4xt+dy/YR5C18WnMmnRHzI+xOwqsDpXBCiMo\n8KjdElZ6+a++Qj66hO7qtr4RXRSwtM5HLIQPJQKwpMHihsw2hXYQaz4Yxkfs\nzLa3gtomKAeJ3pBuMb19i+KGPrytHndWN8/Cs94WKFXth1pS67lutbqVVmdL\n0o4BtDfnTx3GwyOjlXoEpb3Jw/HuElWMMGnq0wUaunVXanf8e3WpUgh9EBe6\n2s667Jxg5DfD/P0DbFR2wnPmItvFVsQDXMbFc4t5UlTO12N6plO8uMpk24ak\nr4INDXp5pgSBDanj2KtmuTgma/0sWJa6K0vepxMvqZKhQ1b7t1D63pL5nPQ/\nJDRzA6CgO7htEml3PGNsOJhXusVV1OnD3CD/Aj0/CYVGw/dI8zvsB1xN94mw\nJtshTHbdKvjAGCfZ3UbEQv0BWhHgMO8Js8CH/eUy6sciTKK7O13c3N3SLGNK\ntS54gQPJt20p8C6AFcadU0WkWd1XJcEPzvrVqENZDg/yuDfVf4/FetmKgi2C\nJLuGzQeVbiwh1jnW4LBTJbAMsactlE0jovo97mMT/Cj6nVWxEjeS6aWVAox/\ngIf3\r\n=ODQT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA/zbzDgBgJBIwehQpGxbz2RdtnM5hW5vFPm/kf+Zq1XAiBbaIcQXcKOeyJ3zLnQQK2yubXhzs44k3mtV4uNgAbEgg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597787058-33e8b7c6.0_1597787220217_0.9073277096735224"},"_hasShrinkwrap":false},"2.0.5-next-1597789402-11528e29.0":{"name":"@xdn/prefetch","version":"2.0.5-next-1597789402-11528e29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.0.5-next-1597789402-11528e29.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.0.5-next-1597789402-11528e29.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-p2vhs3OzCU5hyDETd7Ck8xZTctpqGkNDFQ+wdKzXU79La8PDFpwZoChLm/2GXXMVv8GSl6oCjgjWqVie3pOJQA==","shasum":"091e3ede22b653201104f55a85fa53048d75f421","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.0.5-next-1597789402-11528e29.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPFVyCRA9TVsSAnZWagAAvVgP/j1pXeYGzUtb/VasTJEN\n7BhMZqQeU26GUBC4rCt7sMcstaMXRs27psZpXPQwvu+ZsMHoDfgzsGUslAiq\nau0CokV66tujLeaLAqKAJSyTZ1FJ9UUKeGvOC0Cpr+rZjFJlg3u2cK1LqJH+\nFZL64f5qFme8tR4fRTUtPla67o9cFtabzalSN2+MbkiHwdmtoZbliOP4IaRg\nJ9OX+gjFF9BlTjq1+gCYKFalJoGzwbkgjOtLX9x28yEy6WXAK/8oPD3pPnTH\n2Oke2/lqRMXkpTSEV+6UzwpfrKp0LzFU9iHvdmHYcZkdHhOfBISNBnfJmPXa\nbqDE60AuiR2XKH98zc1xvuL1YtHtHKaHf73HDAjwM8B4RIbdVDBEageHjv5l\njc1idVI6gwVIjwdI9yRnjz6VRYTBSuNAwII6zpx0wbagbsyWZpoHM2BPXvwx\nfZkmN4CuMCbAHGB4pn2i/DAwGXqMLl0jbMEw/uRfNnUE64msAHbt5lx0H87S\nB6v0cq1pcqYBZ00rjkfVjbu0hLl9OQeIiTfrxnV3eEwG4oFb7851C59IMFQV\nx7U2InCYcO/Khc3lkpsNQgiIJ9ZCvbGjcl3pXai+DVTDqEmfMXczxswHPIne\np7FdVgtNBPqsmVodWTDrba59aJfla7TF2wkSEZsOcpS1Nrah3FX+ps+XiFEj\nnfpe\r\n=5NcO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEpgvMQ/T/Psbq9UrnxN5iGH7Y4k3WQuhGfsqraWvR9yAiBQxw6m8aBrwFGXoZkTTHNs2HbBNNVhCJU3COEF9H9gyA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.0.5-next-1597789402-11528e29.0_1597789554354_0.4982592571968181"},"_hasShrinkwrap":false},"2.1.1-next-1597790800-c5397a15.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597790800-c5397a15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597790800-c5397a15.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597790800-c5397a15.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-u6uTqi9dzOL1Tkx4+c3+zNKOKW2t9C93reEwarrDAkyOtWrNkNv0f4dRpU11xYJXds/gMXUSAONZEVie33Yfuw==","shasum":"3fc38b9aec3561b6146bf05786dc16ffb62b43c6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597790800-c5397a15.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPFrXCRA9TVsSAnZWagAAaOAP/0XP+qMvsnkolE0BVuMo\nXS6HfOEJku4roHEejLhv7mA+r/lrTL//9mjA7GZB/MApCTxo5gOr4xJmtZvh\nvMr9yEzGcYLdsQLX+WJhjDrcioj6t9aylh5/Zrd8EiBymx7TAKzGo0SaRIiB\nPGcanYvUqeo1BSSyq0CuHsmXjimbIBbuE6bxk1u1kEsbrLmLOU4rwvZBN9F1\nNx373lhlNWBIZC4mCBzKfGSZXpQ62BdXLRkV3mStcw5CH3rqdYCYkPauNA05\nARqBGenibWOXlirYa0T12W3DxVmkLrch9nxOEbA/ayaiHF4eukP1KrnX6TvI\nffjcpv1Ksns7F5bQVk5dUj1KJiKqrMVFyYphEPdLK6juqnUbBQdvvVnwEgPr\n1GjIudcbOsvqM5iLkhVY4l3tyAcfbXC250jf6M8jWOIZWfTsiAYB3KkWIUNy\nHgz7oB/pBcyUqV6d1ig6QdtwwdGl3tN4XQIYrw1t4XS8g+sdbgmHqHvcCNbl\ny4ED1C84FMZKN3GePbkeFXp/tId67SC8vEm5+nh9khR3oVSK5INk6fD6gBod\niWqXxveprSO7uP0TELccSS55qqtNLc9Ro0B5aaKtyn7UPP64cX4JtlhjFWTE\n7hrC3cJqwcsKIq2ubB4B0MWIpUPQUY6Uhi6pZIchvntWzwt/I+T8qau9E04H\n5sb4\r\n=sPj4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIECTXyfRdNRk5RqqvqN37+6qvgy9RrF5EqnLTmXLVN/UAiEAkuxtzv0umtPfRmHUpAOWdysvdAsr5fw/zVzOKNmADYo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597790800-c5397a15.0_1597790934718_0.884238564992714"},"_hasShrinkwrap":false},"2.1.0":{"name":"@xdn/prefetch","version":"2.1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qqj8b5praCN7OPj5M8cSItWdj531OAEFxmHKmomSFMHU6tGaE18iZt+wAkbahqLkWtXY4NGQRRTKKSYupTTfxA==","shasum":"4a3fa582cf4a467e10b27d10b0111d51ab59e06e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.0.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPF5FCRA9TVsSAnZWagAAK9EP/3a5fDnm4DZ0tXXdkw1C\nwguSwLiccgiafz/Tt8n1Fx9WclgKSVKY/DnGoNrl2UV45bBWwne+qDG6cRTF\nsxlb2G2bDJfVaBGoXREypPNxEal5M1w//WP6eiHJCG27hzWy254NLj8kR6GD\ngp8lELk3FtYS4ahpQUYahoeNkydX1/iKyC3HzmUmkzLqZLBf2uFl5bDgpG4F\nos2X4/nyhWQlLC84CTS9u6t7RfYOGmzdOxj8XJRN6/3VQRvWxBD9KAeUzfvD\nGoM/A/ee5rpERfeGRBb0XUR8tqwTFMT46rOlqeNEmBrhmRXwliUcpuwdCq3p\n2Lrl/vaWAT2+6u71frwUA9tHfVMbAcdq/fqtzw2dXx8hfrGBhqE3U8JunWbg\nBcYd5Yr3ThIlFiTYE5MfSxVNSgsol/WbwVq0GHeVzM4IPOp3tkCYLjxbTp0X\nbYdnTDL2SzXXMvAYrO2A2xeLAWmFQQOIU3yk0BBlS4kz1ubRhcG7GNVSHYzm\npXPZAnlFPJ1MuIXv1kkB9iHR+/LuP2xudafh/2vOjQ1RksyVUKONLCxdEeHA\n4lThz/OHp/V3TwnWj4ZyjWx7zcjcxstkkuvf6/OhJFyGXRde+ueL52KTKgVp\nME95zeX7bbO6za6kIdrrvMgawxk61Apj1NtNwRimi8rMGK1SIkCGTas0eJtt\nzaq3\r\n=ZLra\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIL4lm6SKkSlH1t5AEhqtk7Oc2Ld1pJ9UwNeN6rSwtjQIgV87V+70XR214Y4ZP48Vo3PQUvkATpGQ8zEEMgbOXlQ4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.0_1597791812785_0.22204907380928063"},"_hasShrinkwrap":false},"2.1.1-next-1597840297-29b52ffd.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597840297-29b52ffd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597840297-29b52ffd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597840297-29b52ffd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EBOSHcD3m/RHIOMewTmO7uzVsXDGx5Ywufy4u7hq3PkuIJvo8F4lyYejyiIDuAsbLiR4cLuBrUbnxVtJqRM+yQ==","shasum":"d85ae64f920250bc5b73fae0dc7ea2abd057aec1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597840297-29b52ffd.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPRw+CRA9TVsSAnZWagAAoAcP+wdeZKwMYheb6+m/CZY1\nRW1rrptjop+c1oc6nj64dot5ho5f3H+6nTRo01P4riESB55tJhevGmDoLBEk\nzngCaFtWau2RPqyS1GDnLjFenZ+xR+HVL3sgvKmm6zJpXuFuGEu2EXI4VgMJ\nEBiPuUCMKF2TvOBHfTMkkbo1FOoy+yzolVJeJ6PS/MiTWnta4bSWCTSJyD0W\nzmUjmBKnAFR2IlQNZKn7bih/2evGzEXhSFYf6U1oP7i+mzH5CiGCKkUrsRk+\nhJnjJLYQp6tQY11kFjg81Pil4yYNE1BCQ2SW1ucGnMWQB7lLSFQ1O549dvGK\nlUeGAzvqBKVIQfGnujr3e4mMmsPUOEKQNB7EwJD3pCCkzmchTut5ukwG703b\nrgblKy3GtcMKCqpoAy+vBSUMMqyP+Hmscob0JYkfaD967CwkkufoHPPb84G9\nF3DvojYAuxllYHMaBD34z5PCU5yRU8rmKGzy2PDuNV9waVcvrU9jEu7h82t2\ntPrKGhtfvI19txBwTI9Mdp8fg7v+ChmHrn3V3W5AcLv9fBiFHC0kkDcrS5/b\nVjp20GiqxW53Fitj0X4M5vQisMfaVpHcIRWfUelq4mUEhiTS+3Zhqe+grgsU\nNl7OQ+tDVeMKg61qbSGOwa1F2SvfcvCUWITcPlWFVznoUpeYY45yh2Ox+4Dn\nzjyj\r\n=HU0w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/VZYRWtSvhyumVS0v/guqDWid9kuXxYrftrXf4Se1BwIhAKzhvi1IiB7SG0XK4e5ulEstrjV53WFtiNI16utmrYOM"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597840297-29b52ffd.0_1597840446355_0.9377049156814394"},"_hasShrinkwrap":false},"2.1.1-next-1597853580-3045583d.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597853580-3045583d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597853580-3045583d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597853580-3045583d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RcQHAsmNHaMDnr/+Dze0yIGiKfysgKtZxQ5YlwTv8G8cPMV61THL54MF7eu8LeicRfzrskuV2LXYYUpnv3WkbQ==","shasum":"d78237893abb4c8baeeebc537419f4f1c1f9c270","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597853580-3045583d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPVAQCRA9TVsSAnZWagAAnywQAI/VFtkgIrcrxn/ib12V\nmf2o9h+wGKRoE1sHpPrEGW+0DUMZSH4ukIuiUl7n90cwWX1KkVyQWksdRKgv\nFlM0x0BMsDZsnLXX9RlvWy+fy/PAcQmJzY2zVj1ttYJEZuw1dMttxlVAjcYJ\nGTgMg0dac6ndfRIcno6lbqDV0ObmuGu8RJ8/gIqQy5tL6F+aLtn9ty3xWJES\nh0PHuRUmnymRj8WE+l5cv1f9S2ySlQ1r28XxYtin9LqQMHjyEnsOOovW/Y6w\nCgxrL5HHlyQKR3+A8mgADO5MVkqZ/YSLcTCEpMkcFNQRw/EWWf+JzMEhLtVN\nlfkWGkZ0zwUMI/dOHOAmTSkbMnWGfENT9o6mhPphtAqkUUespXX5h6TzrGyj\nJnEW9XHc+MDI2ghqvnGCRd2E0UEkD+1TQaF+gdIzjNMErkJwUzsTbgG2ukZ7\nHdNZ+HiQnFjrRu0rJHzdEZDf88S/AHnRWrYmLzz97sl8ks6wxstvTsG8w+wN\nJpUQu/WsEoROOGNFF67eDpQP31goimSY2NLokAhJSuHhQEg3yCQAKqq4Rc3o\nGy/P71xvJ/0UjIjrNKubl89/323TvJyDNK1JT1PGOqWWNzWsLlloWOfMXxw3\njZnZ0qnuuP9WhwYVr9L2v8gAaEJNI+Fz5Bg7anN+UNpLZYZaqzazyVnm+V7i\nJ/zh\r\n=MAvb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGhd6lqgf8Cd7LIlG7b0bpEfCMaLX5usPGiE6sJKGqxvAiAooLIOnbQsXL33E3fRHDjRG9jJKlMS7VJfSCCgk/LcaA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597853580-3045583d.0_1597853712204_0.47639705902261476"},"_hasShrinkwrap":false},"2.1.1-next-1597855175-a3ec42ca.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597855175-a3ec42ca.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597855175-a3ec42ca.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597855175-a3ec42ca.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-l3Xa+SRO8wN7Ewty4DiIV8RBN0ks0aJ7x2ltwFUiJv5D3c4kxptR6nCdAfbm6MfXukXpEKh3aWrBZt9EGuBarw==","shasum":"3ddc9a38e41dc5e50e73546ff97b5e4aa092dacc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597855175-a3ec42ca.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPVZdCRA9TVsSAnZWagAA9CwQAJJmTauQQhpnIL39lm2t\nWh8qjRfLXNrfk5y4p4tpBzYO12P+pXmb3ENM2lP5MhlNWriRFbxWyn+LKXQa\n2pZ3j64QiK3QTZq2hvzmsUBtxvhMh6Iq+ellIvpjXG9/idZX1NI9jiHU0e7O\nDPOlTc4JkcdsIGPDY4vE13lbp+uN8hD+wvhpCft/IFnvnuLSLCqPYET/hVla\n31UbhKhqMYXolICaXiuyqkqHt9IbobrfH5o3uLizs9fqC6iTiGjMhA3vobms\n3dxr1iBbgFwfnMt+iIvZmooEcWlSCYlWgCEb0yN1SbVJIrMkWGqYV9d9rM20\nRsRIqYPO2yZnrMsiS6wwHWZGZ6uT2ZcJgiu/3raXF0aI16YztXMiNt7N6SLT\n3by5+g+m4Vwos4RozdUD/b2/GWCK16SVXCfiHhZRHTTxhBZnzSO6E2V+aCGe\nBJkLz+/WOsQVpQN6ujfeKvcrT+z//cgZFxFV55ZhzUvfQMsevzh2G2PW7JYM\nhOICQQI00gUs7PwY+z4/tMJmEglxdjBCbRKJtQyuQaULQ9849a++DtqSlaJ4\nmrSOn2BJ11594ipn/SwtWCczAISwwt0x5i//SG+7gpDpfVRCvsTPFvJhf4TO\n2ibQakEt7cRZQSYJkpSCRBG2fZm6BeSMQonIh3CTbyseo/pMRSyjGG4sKgTV\nzJCz\r\n=bCEJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/ZUuGYbPPP7zcxu96OPGFMuRcMgnmWG6sFVKLhDMljAIgPTPZ2ivdqRgFZy3DXsxsxnJD0R9ew5PLHdXp2gcWDHg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597855175-a3ec42ca.0_1597855324645_0.17177323548104861"},"_hasShrinkwrap":false},"2.1.1-next-1597855677-8e6d9df4.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597855677-8e6d9df4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597855677-8e6d9df4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597855677-8e6d9df4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VofqtM4XPCVaB5mr2W2v5VZg+iUlwBI2/MZ49wswhBemff05jGl+1djIDbnU7lz7Izmnl6TURPywVV7rzkGctg==","shasum":"583c441718c5d4af2f9ae98cb752dcc6d7c8a715","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597855677-8e6d9df4.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPVhOCRA9TVsSAnZWagAA0IsQAIZAhurEFSsrJ62D3YXN\nZkamFlRbKus694Ye33V8upCOoaqqZv+zkggLXCuc9iCyeiY1FlAuX3M/saMC\nrNjnLuWb27zITTRoMtVfvP9Du/L0lqMQ1LH7b7LBkPrvxqaN3qmStzPtcuEw\n+KvK/mjhQpAEhSgX+Bm7h7CwEqcE3z9lDXU32z4OfGfaEVwlRi/cCVdbEKvT\ntmhkle95dArBGuRxMTZwqzyLbU9/v5U370EBRAB10XQx66GQW1r3ZZhiimzM\nWd1nEMFl2osL5Ia6QihjCpFUjOAqUvAlcYqHRkmdFY1+kHjmd/Kd0TzwWHKM\nLUWIHw2uNUr/AXVyakp2rj5vf/ahJtOoUQtul0DvTDnJ+Kf085x0OBgcneD5\n2C5uucJKkg9dVtclGAbkpp0OQjJQIuy34/JcqGQ0oy44al6KGoY14vb8oCle\nV9jSw67h14cfHbUtokk8xLk5GZ4uqBaFkz2EfI3Xfb92fVVlgT0/bDs9YEIf\n8rI0u3Iqji4v6Qm54qA4wJnLAZ8WBuJ5MPT+SYhdlaMlHGUJZCBax4Fj6n9V\nPnohdLDLqdkI2XFBjHyDgb/HK+wdzzIllyk55LQ0zME/YcFzEftR0GK2KP/X\n0c+L+MYIH0I34LKBTY46AdSkjobcV0HFy1ujNp1Xa4+mOeckdEn7FaC/UwO4\nki/O\r\n=BDVQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLlNW0SfB+tRO0t2B0GLrGDU4X2XGq93/xD6HB9mpgZgIhAIwB0qgCJdKXh68QFtLpDfCZP4VcSHi4vof24uT4BqAl"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597855677-8e6d9df4.0_1597855821651_0.12030446758295632"},"_hasShrinkwrap":false},"2.1.1-next-1597859455-8e6d9df4.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597859455-8e6d9df4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597859455-8e6d9df4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597859455-8e6d9df4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-evHw3SBIMtIi7wzgksR6nRhUxcG2ZcJYQhw0tFT7XrY4xBU1O9UmnRT/IsFHrvz9UupW//RIWxiZWHa3qHCi/g==","shasum":"6a67c81f90b373d689b0951be571f3b4a1b70e1a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597859455-8e6d9df4.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPWcTCRA9TVsSAnZWagAAb/kQAICEqY7Kt/iwIbg80+kX\nhm6WSQxkb1LoqDBTLmfgv4eJxU1+wRNX4omRPlg5SHU6bDLAZA0JnhmEzA4u\n2eaytn4vpBgkxxUWM7T4ioxA7iWfuAN8rcBFNxkUlaRI60wN7u1CW/8zUoKb\nGN/q242m6oZV/T8CQFx0r14akhYgqCL0e40H2kARhVGUfKiWrJD9KwFq2H1K\naIXygErblXzoCUvJsMQ0zASJ9jYyYmhcUeljm/KgZ5KBiNGNbQcTuwOVHDgG\nYE8DVNapvUQIse7dX/etfNMj25dOF44SPGiYckykY6swqVUt5oSUmExgtJZm\nxW+msgnSkAbTeVhl3A/kI+MgUN/K7qr1BieX2j5tYsuVPdQY11PGdAUCL1Gw\nX7paL909V+4FQJCkXnzb0DQbnWOzw9w1PO3x6i4OgBo2r+x8lgti84gJHe/w\n+3NJ/kPe9We2y4oF8NjF0Nw8MOwy9Md6dQC8V9dNjyJqkZj6U0Hwizf5H5FO\nyCBexDj32WXm2iPYNLVy3XGMjuqifdROP1USnXnv1HZDUJYCWvVS7wl3jW0y\nxXIzhUGS7qAdAxYDyVWyKexrbbkCPpJQPGQXdbLfGeLaAxluCZATPLtoI8vV\n48kCOhAalFrCRx0MaAvgqXKgF18NNAEwvndpFHWgVQ4gnIK43/NF15Ottht2\n8Wnc\r\n=YS8t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBv+nTeyIGsFtvNEhjmFJqPUYK/5YR7EfjOmppRB9wYQIhAPXDOTNdj1C90uQ35uoxF7NCq6NnWedgGUPlpciXBtiL"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597859455-8e6d9df4.0_1597859603212_0.4757262826849966"},"_hasShrinkwrap":false},"2.1.1-next-1597860467-2bc72678.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597860467-2bc72678.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597860467-2bc72678.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597860467-2bc72678.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-twXVhCSDTGE5xwxBMELLoqi/AFORrdIjfctxMbb9Qv5lBEjxdjZCqZ1vTo1QKOEeMIO08NkvTwGTIr3eQZqgPw==","shasum":"c427a59cf68e527ad894259acd5d80d48b9929ac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597860467-2bc72678.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPWsLCRA9TVsSAnZWagAAvaEP/2lgXndoI4vBuuGR9l7x\nj/Ue23bUDb70LPI6H1IKvip4391+1V5eeJqxE5vD+fESSiu4nbUaEM1W1yHZ\nFt1O3CizlBXkKuGkM/VV+FVmwCSS43p2/IZgeo585ACJhHJg+y6tw0ie6K5d\nYjcxYt+w0Q0sDs6y9IrmvQoldkiOjRY4r3O4ptLrGhqzrqtEUMarg9Yy2jTT\njhoNozvC4w3+E4d0vrQO0HsQWUmH4223JoyyzA1vqSAF3yhh4ZqXdM9z+qtp\nT+M14D+zle3EISFTOux5dMUi7SLMFYIDLwCTLEJOdRK2MN9Ap0XvWz6Ck6h4\n85sT1k9wNEY/iJ0PzUdouziXfqpZOHhmvVn1vvS3FmA1VI+gfEiAmd64hyHj\nCna8/fiuvC4T95TSBttMxw0CPn2NNiVT+1dP2snY1r4q0pe8B7t9tT+qoyV6\nngXSf4gA2dkG4sa6wcsZm+N3N/YN39LkZlgQMTcRkg5PDJmPynMtTVunCTAh\nOwB1pAiYHhcwHU6CJRA/5hf3JJmwHC4+TbH5jNcOHhPnwkFkYxpwkDlZ7D4N\nX4PFugQUBx61Feq/WWFGfeIxgfHwgZV1Sak6rZ/TexEqzVPygHwckRSZTzrc\nrEncowEQgkqni5eTJg/ElzK1lthlI8tBprK6WJ3e4YesOfOm5n3elngcYCA3\n/tNj\r\n=it4G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdsbomR+8kTKMzYsFvQQcEF68umSFUUMMf35bIt2ehdgIgdWMCbqQOGhsg5fwSSXbhDOSvcdPTSZM/0Crry14BhIM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597860467-2bc72678.0_1597860619509_0.21389465724614198"},"_hasShrinkwrap":false},"2.1.1-next-1597863537-8aee349a.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597863537-8aee349a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597863537-8aee349a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597863537-8aee349a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BkUi7Jiypg4+gXtmejiBD9SHZ46SlhF69xsGWeoBqDFmFnDEdyOFFsoDXkyrVTPdGKIDWs53P7Gj8Bt5KNwoXQ==","shasum":"92b51b9fca65a06dc487517fde14e5876294d1ae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597863537-8aee349a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPXb5CRA9TVsSAnZWagAAaWIQAIyKWm0/v7FdEkKYLt57\nie4Ja1shf28BhnwAufoYJIGj36JFWJGu8Wr6Rw8zUc5gI93dOx2mmYD/e6K1\nXvP1p+1HdOkaV4NDow2W3VuZO+ys3YHoUnvUi1GgBF3ZsXfO9gV4se2XL1C3\nXahv5X5xH7Ry/faUY0FyCnM5O7YT7qs+WGsuuDx5Axo4BPWAv5bI3ly+yRZc\nNHZ4Tsza55VY5GknwIAds90oCFqFbJi0yIQnm7aB6BMTamJ6jUvlgWqoigp1\nnQiW6UCwD6dOSrcKSpI8IQeRqMhDMIeouRWxyeEeDIbgH8K4bd+rCehrzwBg\nFGo2jK0iCSxJSXaGVzjs7GXSiKUVFs6kRd9brLHIClVJ85iyVx0gMJe0BT0Y\nYSubrHDPWOZy+KrYG/Ci8hMo1fUW4cLEmMvRUmtpMY7CUEXf3/x56YiNJzyU\nZkwj/7lseo5EZhAqi4u2knyjU40Jt47+pgVka36+e0/7yapIQHDo6s1drGFk\nxDiieS571iLqWEuv3ahiViT1IHddrbNaRC2Q73v1lpLgrbiZ3r9D2L1+85bP\n+tx0tjo3IilzZmr4mC+0SpYjIfuEotliMQQbQ06++pOvOdbHee4xHjKoVizv\nsMlnJnR1pu5IQomm7Kqo7w4Y+xgceiLdwDJa2UMKmXZ5f3hLKqFJvkKBU+Qn\nRFGu\r\n=5IWa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/VQAU6HLXPTABl3MVf7cEqFbpiEGFkN03f+G4a3QtIgIgRRmMAhVb3lamxUMYvxom0HC0Usn2FJ/6zC+FWVSGVAw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597863537-8aee349a.0_1597863673199_0.697020270212819"},"_hasShrinkwrap":false},"2.1.1-next-1597864689-8aee349a.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597864689-8aee349a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597864689-8aee349a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597864689-8aee349a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HnVNN0nPRuPc4cDmX08DfGBks5fS1M2ezYddUuEFoV7uFo/glEQsOyTrM8U/pRMUU/kzNAItr9svsak2CWkElg==","shasum":"ced77de3d3d79573c7cac144914530bef2e4a238","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597864689-8aee349a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPXuLCRA9TVsSAnZWagAAOe4P/itfVkQkMt5MWzRZ4pGA\nZqhsM+DGUOPIPmofJ83lblQwWM07OqtSJdK/1gvh4ypzCPH8YLKypKLVrGEV\n/7Rrg4J7H7zWeDvY20l1aYjXSeCi3sHpPHxWiG2OceCOqxCZ+cJ7AX0HldA2\nAmMY/6B9lunmhcKOVT0/iHngEyPrGNNdbNajkRP3UuhMkWzTPh/0KzFCbqdR\nG5zLWSI/W8kRAxU86RaiOhUZbRj/W2RcXdGgmk5hlkL7uE5aOPebRruTkSlN\nBNO6gTXyoCaEzgzltN3x/uMJ8Pj4LbW92ac6ExVEEOcJGk9qP0rwrYGbIP4K\n4BCg3/l0XfuTKjNx8lq7bUwSPs51xD8+8ke2/hl4ia95MEDZykHt8vRb7Mj/\neMRyrUgEDQSh18gr8hDwXV50IzwW+HabjqARdLfIL1UdFRse1dlO+QYpeMSK\nHqmRBFwjzFHzYU06wHZKpizmQrpMncRIaxz0EF/gK/tWhsIqctw2MNoqyeeV\nqm8My8xdzyGgYAbhsWq/XaQlSr9LAfVOnf5REBa7Xbgd54FkEHqwPC71B1OF\ng+ctCXlj0UlzNp9ELgJSVOLVchBaLdAS+Slq+SNrkixP/zLphvsTjYwt+pH9\nFC8Ec0nHgvIUCKrWNKYP1HYv3yZcevFqpllE23+yNLyZnaSp4JzwpAvAMvZs\nNS91\r\n=ceg9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLWw6Kj0C6kl3O3WLl5Us5L6pFSMtWvztVxZpOLIg+BQIgEFSJ/hwqNfgHL1Di3jll2b7JJ6e9lsCl2Z6YOF7u+tI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597864689-8aee349a.0_1597864843301_0.37106681890045223"},"_hasShrinkwrap":false},"2.1.1-next-1597869772-04a5120e.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597869772-04a5120e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597869772-04a5120e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597869772-04a5120e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KfJpsMttyWDZCogd+lZUELaxDhM2o0JMvofn0Ys1N5W4HSoxPTkWwiaUiIGPKl9St0rGvdeN5TQIEVc1Zfv0TA==","shasum":"8fd1814d80bafe4693bd999044269c7c383b15bb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597869772-04a5120e.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPY9KCRA9TVsSAnZWagAA36EQAJAFxSgyiJk+LzojRgNH\nNTtpEhQLhVVS59H+29VDZ/jJ5qGNxl2zrzn77PNA5kPv2hUtgFQRdh6Jy2eE\nNuI70jyKjr2IWnRNgYm/siVC48GS2Kl4jdT4UWXxZvNhOK/Zjikt7vn7IpxX\nmIGdqCCWprqDph9vY0A+upt6/GPTWsHYzQUWustAVih2BOt2PcDKLo34uim9\nR7IrDIbQAvX0BDsUS0xt8URAeaZlruKZDlyHTcdyym9H64jlY+StDzhUB9eH\nVNO/NONgtf7N/q0iG1T8zSavtzV5EfHHnhKp+vdlQHvY2zGtAZHNScVkHF7l\nVjsGtPwEvF0KNRJB5oERt9xLszmZbH4TFNr0j4KPQlXIKvSNERz4ii5IMOoR\ngdt6wzeb8qeTDbQXl1ZYmAwOOXLv4einTxGH0bh1EMyqvrp5PaNSfm50B0Cu\nFShdsswRuYsCMPtgd5AyYZrnCwMj44jKYFpLxraH9hh8udapz3iIoLhab05A\nMjwQalhSrmq+gKR7Wwv6YtEeC5doVXJ3tSwlez+mFOOULIkD6nW5YrJEvfHs\nNr2VVmMepSjDjdM1kX6FXhQeU5k19FOzfVUgzjFdvGUSTgRVhihisJhRVAtv\nmj+bgG0NS/tRi/h0V47/mZuNidFLcJXHHnub7eW+rs6hJksxi4NgnvmBpvMu\nUrvH\r\n=mFTV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIExZLWuSLO1jr4+xODriuQvri4QJtRIaUWGu8irmiT69AiEA6cP7btnElF57SYiuMSc04ZMeWfyRvAqv4I8T/jeDt1g="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597869772-04a5120e.0_1597869897659_0.8820501956923807"},"_hasShrinkwrap":false},"2.1.1-next-1597870219-06c97be2.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597870219-06c97be2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597870219-06c97be2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597870219-06c97be2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oxf54OM0GXoCdcgCqfDOm9yKi6iiGskhRVIlMShWbGkjH85YoCsaqdQwvSAmAj6BthDM9F8jSuD8WlvRskzVNg==","shasum":"3926163372266983e7ce2c537ad7b83557ccb2f1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597870219-06c97be2.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPZEgCRA9TVsSAnZWagAAV1AP/iZAtr/laIWzKppkexh2\nZ3mGn30XUl6mT4PukjpLTxx08fWRwInFnvuqMtylCtjL7QyEn5Rn9Qhcmq2n\n4pGhK2glNMmMoSHP0xpGS2+0X/QDddgIn6eKFGu4UKvr52sL2dthLiXTtfCj\nSY+gg8hb8wZlrsRak+4+EDYjMiHPWJJtqCFPeBw+E8xYaPFICWhSNN1oYl18\nsA3jRNrBb7CNA1ZuWYbnxxG4bgLwwIhxNLxfsBd7p1MvSC3K9YRxC0ehu/t0\noS33xusRW+seZC7rlxcTFwgbqJxgPcczNlPEm68jDMhZVaao1OdDvP6ltpdm\nKT5Nykr6DST2rwRTRMl7CZdyorvMFMZYt/69MOonVtFEwVZpcA5sDMCOP2/p\nRUMd2JrNIVc7uh+ZCkWAzBxllT1lVDRdlj3O75ZwJM64LGNZVk8CwfUB6MvB\nUAZk7qS12XEooOT6oR/vQm9ppPXPA/1whw1C3LhZI6NaTfgiLSMZw3wuzV49\npLJ49MTSFzFjjruxghlw8+dMTBJvvnZbuMHUkX6fHs4lrjlGk53g6O93JX9m\njCiCkFBKgcukJjK1qgKJ9ptRi2YCc6NP0eQ679FC3LQJQVEnbu4cpLr6Wta/\nQQ8ztPkvpEsu94bYgq2bkUHznIGHdh4qiKM1b+ASRCzOdJBelFx5XZkTpVvR\nLVnL\r\n=ZJ+c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBYyh4obzUOBQZypSt6KM2HmFI1VZw8Z8Z2NN4Woq7DAIhAIiV/YPorcjZ6KkdqX+xNmdeiTj/zDk/H8udkdLaHlVz"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597870219-06c97be2.0_1597870368420_0.40993648000393734"},"_hasShrinkwrap":false},"2.1.1-next-1597871105-88c801cc.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597871105-88c801cc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597871105-88c801cc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597871105-88c801cc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Oxha+qpxDQjcpWYAtuIaElwPkaLT2Q/VM4Be+mr/lYUsn2mv4z/CJ5gpdnpuFUJJrW2o4pf4K8jCt3SmfevWnQ==","shasum":"6b71e72933890973ad19aef5f2ef81a95e2d7fdd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597871105-88c801cc.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPZSUCRA9TVsSAnZWagAAxxQP/RjMUZjJOhHFcIGeuTvK\nfkj8GI4OcwrCJvY1qQjsOmWeGURecrbMqPqlAKD75xy+sxb3vg9wJ+1LI3hJ\n85IpuIhJ32qsCdx/pruFyZge/kr44MNyXoxkdS+BCvjMbMgC4tkwLDvJGkJA\nYNlqPdP4LoLnER/lNNiLH1AtyMYDBPYtmrDKeULt+P9ZaoG/tEpjMuQ7yiAU\n3L+CT1ShISeG0TZKoaa28Z0e7W6LSK/MLwMWJzP3mTZ/vAilJ2velO+/AIPj\nik/e5gsrg6x6XSWDrJYJqyrwuHL6jWewjlmtVWB8a/B7f2RpVdMpO13ft09R\nyc1lLcCkqL83uCrIdCFG9/Awuo9fbmIrINmtGfWfnlhrCVudo7jP+0YWaxyB\ngkoeR3pC87faEQQ+5H2mfnofClK04B2TfxBI7tdKvvwt17VTPcKvaDXWb1fY\nUl0/EQZA5oacAaoO2zm17nXBTpVvfUoDWweh1GAHoQl9/GCnI7fyHTca6tV2\nNrZxD0JaoO4bEXU6yTPajwXeIufrq/TmlE7DVHFbzBxH4puVxhlMW8fKsSXD\nk7ePwyCEajQEUKjvUBhfzhFP2kB6y/TO0LgUjqfOX3metdiq60ZjpUk3YVFm\nlHjjTXEKU/jZGz0wpdmQxqf3inMFHAHJ04D7VDcClWmoDbVgq5QFmI+msR5G\n2YeI\r\n=/jG5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQxrr/I9iu+98cHu8XJ1R/FUIUdXEBubo2/KYJ1xfMEAIgOaLBaTGwMsSDwOy2NLVFSylOYWgJlZsMkS3ULyPwas8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597871105-88c801cc.0_1597871251915_0.9599337044597165"},"_hasShrinkwrap":false},"2.1.1-next-1597871191-672b03ed.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597871191-672b03ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597871191-672b03ed.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597871191-672b03ed.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-L04BpGJ0xWHeP24wGSKRPzQEC/WabKSRJLlxl2mCBlL12CBmAIA/t/H37LWGPCubRw+CES2PkXJs84GOD8XkDQ==","shasum":"caa2856b9caf1b459af0c1f910d68ba1c243674b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597871191-672b03ed.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPZTmCRA9TVsSAnZWagAADyAP/1EaccChm7353jKkkaLg\n3wfCzm68lH+DDE7VoFOICLo49uybYDErjm/UwhLUv4oA9sz6t6b/QLebeKjc\nFhnVAxKAbHAoqc9kEzw1L0E9wHuiGsWNPUDebZHgQpgt8DvaOhXSsQmPbUpX\n2mXp31e/LQFdyQF+cAJ6UAUerfXwv4BYXNT/Grcg71WeHfay4zfB+t0HZYXb\nkzkezU3z1eNfoMmYBgrnltbI6c0orozAhfnByBTeTkLIolJ5Cxi/LK51qviD\nKlDo4S/rQNQML+GobySG8cdOkBK1Vo2kxftHjSb/8UyXnUoXviFkRBmw28HN\naYQFRYU67NriZ9tVsbU6sREN6FG7IrrSelClZQ8rVbYW2gwAVj7pwkktUqjM\nCR0PeNSBQus9eKSJIOvS9DA5TnqVb6bs9KIqsmAEa6d2bnozm+hwYYvS6E0g\nrXoKei9fVqbP5iuihr7bVm8EwCuJvTJDFtTIsql3sXgU3wY54DQAkL/LD7rl\ncgilWiqt15t/sliMmDeo03ZmxhXtfNSw7YH+h//HxtJW+nVtrpVkho2Kzwv9\nSp1sN/OXYPUvNNuJR0U2ydn8nb/O/wVN6FBrmi/cR0AmFC4NclOHLxmtLHlG\nGndYFq0K+SA3xtLuM276IKD2ycSJg49Klf1WoUsu9YfgsHKcAzyi+VatK+q7\n58zR\r\n=y2Tp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeFTXFOmfZpAJcM+wWEBLnHA97PycmGdDIZMSUJEDuAAIhAOldsaXSbs2p7lMcsBqC3BBfFMv82aSfOlQyEUY8B+++"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597871191-672b03ed.0_1597871334327_0.17418930523228493"},"_hasShrinkwrap":false},"2.1.1-next-1597875608-4f4335aa.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597875608-4f4335aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597875608-4f4335aa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597875608-4f4335aa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-47wKkcGim/8DVTqGloHHg5CbqGg6QpZx9tYo7ekoBwPKJ7eo1XWV24LPgXw4RexNekbP/Bcp/QR6yeP+ccoy5A==","shasum":"5b5b82115abd59f7da127a934b31c9888a86db73","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597875608-4f4335aa.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPaYqCRA9TVsSAnZWagAA1KUP/jj/260Q0PHUouQ5oOY5\n9Rw/2z0mQzPcqfcB9WYwLbQrOu2RJQrPN8iv4j6G1Ulm+ZPKCdAe2oyz0fFY\nIoxvZrCxBvk9iaH6n+x5zg8l38W+qTvtmaLT997FvaEkXZcBxUwk2WTuD/5J\nbyeL9k29/jR0UeM2b0SsQveyFJ6wRMy2+W5M0Xgjet0WELOTMh34KjRT8jtG\nRvvm+XIMc1HctK6g6dSKZqJXtZzbGj72Tk8D+D+VoAD7EoxXahOI3FIoslPZ\n1xcVs/Lq909uvbt3S0khm1aYpP4hL0FA8gcqkOwqch4v2jfzDoA7p1iHynVG\nGpGqv5Nz0pijbevlpShRaLhoYLZfdf6LAaxujpmcmS67RVB9B36I+RY0Q93+\n7hsboWzi49S95I5Np8lJSXbJqRVRxWsMwIDFlAMWzY/rGkSYbt6LQHQH8VGF\nhXP4IgesZj2/0wvXcVMDzd6p2m0RcvCaE/1cjLJ2CJAFrOJ/JM17bB1qfA9a\nPwqCFCQbiCktiHF2e4c2MkPwXHscDrQt4tYdf07FGsAKc9um4gP5Abd2iCUG\n9zMjBEHAFV8D0kmlV+3wxBmicgUCca7706N58RZ40WwEdaQh69otUhKL9gx6\n1zTZQ/QQNUzCU9O3LBXrRX7MFz+Pkm24J3n3HZRw+1C/izGRRSgNPjsoi9p1\nTFTo\r\n=98F+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD45PeB47F+22uIjJ2/nUMIV6s5c0lNoAw9srUQciN1oQIgUvS74nwJ1k44rMxvrD500crZbiZG1eKWJ9YMvOrR3Ms="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597875608-4f4335aa.0_1597875753874_0.44434490822072203"},"_hasShrinkwrap":false},"2.1.1-next-1597875693-29faf328.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597875693-29faf328.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597875693-29faf328.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597875693-29faf328.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-islZPCx7paEUPn5UAeCnvtfv+9hIRvt2YaDrkd+nuZmHZxnwLSp5wyLXOnYLDAEk/KiWBsqk/JXhv1YJjb9/fw==","shasum":"a712586eb141d63332e9210b277ba6e714671b68","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597875693-29faf328.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPaZ3CRA9TVsSAnZWagAA4sMP/3FE2oy07SpupdA6u/56\ns16pVnmQjHAYY0kutls5FUzgRMRlqNDThVX6XfDd5qUgYoQp71CMdv6nZQ3A\nPCwsp3tfgwspW28vh+WZQYAEQ0kMPAb3C23tHXF3Ao6vRqUVQBqiWIqveh/O\nX5Rm6WYjkQbuMMXOj8ns3fRTDIIALg62AUvNI1bQD3tmRUQqUPAG7CbwtyYe\nm62Hdn8JzmxRM3tELPeTX/spmutYxEFTtkY9Gh61uuKzxgFKKk/Rrlz0tP22\nXKrNLz+R5mbL+Y5fbyGzFntiENYE7/bjp0tAK8BUrEqXWTjHYni4vAA7F81j\ndVnBohQTrmjXnpzEvrXV4a5IEXfKww7f3AbME1tFlUYZGAjep1NiTvDzyacd\n3ZJtRd8d4kDm8l1XokAucy5Mp10mEVrX0NKGEun7OgqGYbA4mGRyiEF7d8rC\n4cx8gSy+zTns/4b2NXJ2iQ5q+vKpYpHSC7ssw37q5V/IIQP2nKEZ9M+YozOA\nQuwYX1rXeX/a1ASD8fKNzl7nlXIcYY7BUCilo03ncfUAYy/BhL0Q+Nz64S2Y\nxUIp9582LV8NWeRXuLR/ZNaFSQFbOp8TVVpfHMODDbRnMI61t7NxW1oCxrg8\nsnwQRzIqxeA35zW3KzB+RA/O00dqrTWWrjRwgPt6aqAZVFoQYJM2+ia/cYIc\nfbfX\r\n=31a5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDawAOefbidXNu81x1VJl48OkfvLqrHnS0rsnr+LCmd+wIhAJmMTZy6X5WS40z1Fl9218BBsqrsUgeg4020z+b0jds8"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597875693-29faf328.0_1597875830723_0.23869969206767028"},"_hasShrinkwrap":false},"2.1.1-next-1597878575-8f338472.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597878575-8f338472.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597878575-8f338472.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597878575-8f338472.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AMQMXuCF1zyjVgQucx2Tuz1dUeHTpgGGPpqbTkWnIrJcGlGGHPhaK0U1wq7934venOOgkxthxrKj6FOFDaoO3w==","shasum":"da0920f21147fd032b8a8f51f2a8c8d932410d61","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597878575-8f338472.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPbHDCRA9TVsSAnZWagAA5HUQAJ8KSRPV4PBDJWt7Lo+v\nkt2IdU2tamy/McSVlJgC7lzBP5ryJz3c9RxQBgDB7U9lgLCJiq4QivyE/soE\n8eUNEL9AwXRcsJ6SgK7vgU3bFpJivSHFBBgYpNfEhqiwVsuJVoT2XiwLMgv6\n03Y7iN3Ks5p1ckJx4rxnnRzChJWBaflvmnea/Uc9GlMgXcJay4ix7i70SZA6\nNB1Qfwo8meBu+wn4YLQe+vs6dMEnmMiE0oj9xz/bmArKTYnXZG2W5oZw5z22\nDdqtnFIItfur5QEcSmEbyUMeCxRi16IyQuWAkLwVAJJCkTXuZb5CfAzJ5K/5\n/Awo+b0lwrJ8Zh6JG2rWixZupi8xcf+UZiP27cWgBXfdkVgh9MF5w5yUo6dz\nB7qmeIbFkI4r6limEA34QOkvKl4Bty5M44X3OK3iwim0D/bjAT5CpXXhYuK/\nN6Calo24hFiyo+q3hfTQw4xE/EPZSEwLUv0cl/gdNxA+mLLxAcCPJHNPPWiW\nlB/7jFXDidh+kuMpFoN80CXVkrz72x0I+SilgHJlurxt8q0PSgfSWlqe0tP/\nOFHuM9jaKRqxeWeHaooAKYhs+E+wJbYiplEtiCceDl+SIQrlznkOlzCiUeMV\ncSPkUa35bRrxeRVdRmNUZUcpzmr/lEC8mZv/LxYnGp/1jmf1lLEHqjIPXlLl\nowLI\r\n=9CEI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDfSXj8xpl28QxYs3gsJHR8gFXg0pg8IdcchPH42czdPAiEAwUTnkDf1tc0PrPW96zex4RtuqBPrOqsYWtxstMtue7M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597878575-8f338472.0_1597878723248_0.2319235326656537"},"_hasShrinkwrap":false},"2.1.1-next-1597881583-831266a1.0":{"name":"@xdn/prefetch","version":"2.1.1-next-1597881583-831266a1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.1.1-next-1597881583-831266a1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.1.1-next-1597881583-831266a1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5MtbPJBsPsHqf7nVT/YPOUdkMWdW5xC7NNyqrejeKNRm+I2x2WQ/DEE8RzlQgqEIfvPjuaPEdnVyjlX83rodag==","shasum":"dc5a51a3b1ed86bc2f421d98d4bb9c782f19a9a6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.1.1-next-1597881583-831266a1.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPb2WCRA9TVsSAnZWagAAivUP/AsOlqd5qTJFtKr/Rqx/\n5Fbu7SemKTLBI+OXZ5p0QRtOS3qy7bSHaIUpdhpvN8wqh48oZBcLAuJ0qqoA\nTuzhXga/ckof6/TnHIf2U44nxDUZIQXVF7F8ElIX0DP7qzuD0JjSqkq9gd64\nvL2EpeCX/7YvMKpclEkhnoNrergwyCO0J20+SOk/+WcCvPudx22exsiKcApl\ngqPwJvFDVAkIxnrLC9PxhjuN+CTO2ySqHCvPfNG36u/ZXXnz+uIU5RMTqbST\nsOOEOFINkJ8oOwpqcBGOYwjSyu0KAy7kAyvyyFbUSY9iDnheF6JJo35s+I9s\nKOaeo4F7iuF7yr14ceFwMd8BSKNjk1mdlFuOn5DbbAD+8DYQvalthDrfmQDr\n6eDbSVCLeRRlIPpVW1NbqM+1v84TiCoaTmQ37HmfFN23CGa4Ys/9arHoPJ/C\n6HSbE97stumFBd3mVpQYWcW3qsFyAv00d9wEA46E3UtzfE1BQpKuNKZaW9aJ\nhaMIKnRFDc3UDNhuslG2C4k0kMpKQ1l+izl+s00pIYSmKEYqHwD4v7DixGHL\nZD9JmGfK8vgDZjm7I52BNwFGVbQaxkumMVK2jpCMTUHgI1jfJ4v5ACVR0lND\nGgIuC6sliHptff/rlaZy3wZFgb1zT9hx7V1EVlY24Kzg69jgrsR68rtwcDJW\nk5ng\r\n=kg39\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOO49jign8yYgDUMEeoXWscbM0wXe2TI7npZ1q+YHU6gIgRReVEwochRYJGGdcGNACpI9vbqiMIB0dxw/hn1QPDdE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.1.1-next-1597881583-831266a1.0_1597881749540_0.5627237017757498"},"_hasShrinkwrap":false},"2.2.1-next-1597889287-a9772ec8.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597889287-a9772ec8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597889287-a9772ec8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597889287-a9772ec8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nzZ9SJhwUPKuA3fPxKnALWrbRBUNzSbPbv7j2v8K+qvkoNWWBDBOhwBr3sYmHINrKwM5CPbDUcFr+4ALB2ZGfw==","shasum":"ee4013f572cc19af7628cb85b81bf1065e117928","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597889287-a9772ec8.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPduxCRA9TVsSAnZWagAAuokP/RrR5JfJJtOfiETkN2PG\nomtIzB9RKtkjk+27P3MAr1P25ceVSQOxo9YVAY5JRLIdDfI62MNlCQE2UpWN\nsXWkbbgk69jIU2IrsRQtGpd56CkwwhkAlrlJaBEYLWmmsQreO+wgfL+5/j2B\n6Q+gfFRH37MpF5UUVmjSIIVHN7EWCXYzEpYOGizy4CGwvORON87/tl2LwAW2\nj8x/ihXapSGYoTNbpt7jWHL2pqXw/AzvTCSQMmOhAUvLnOacJc4GwHdL6SnP\nIlFmfDGWsTsTjfPmuqnCHc3XHHDMdaNLycAr8fRNrIXxanzupaHeFXlmHdRm\nQnaT7WT/+9lJKw5mS9R4yT37uNwBcnIBhqZYFOS388g8O/juZgO1gYzA6lCF\nxU9aqYEYklzesOcrVoSPNh5mHYMcQ8bexdxQ28w2MzN8usDYeTox5s1LVgfQ\n/MeM4NZavTY40k1/ekPBDCawSKAT2sFtdQfTlMD0uETnNZJVbQpBQhX8aW16\nI2SDPePMc+h90FW27yF6k3h+gy5s2Sm539mBuV8pGkZlh6asUEDd9f4O2UU6\n/GxBVXl/an3mNK33ODqVhrjJVH8WbzO7kTngZHcsZT8srMTsaLhSTCQjKz3V\naq1TW+t/zM87tArA+Ila5HjyFrAwVpMuacUmFD+8f+qT+Yw6EW6SQN90JXBt\n6gpX\r\n=Wmx1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuk22jzXrsjxzqh7L2DsXKW3AbqXraeMu2u02u4WNhRgIhAPa6e6fWyOeVBl2N6zqD1AMo7vfY3ka+V+G6xmIZcV4j"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597889287-a9772ec8.0_1597889457441_0.7917966087777542"},"_hasShrinkwrap":false},"2.2.0":{"name":"@xdn/prefetch","version":"2.2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-T/lWXi0JAKdSmurHw66Y8+uwJrs2qxItpdyAL812UHr4ko43zQbkC1msmrTnfHjZ7u5eJbawZyFOT894L3Gjkg==","shasum":"3df9215c74489bdb1dbf1500d6179d387afbdd8e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.0.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPeFoCRA9TVsSAnZWagAA3kUQAIzMz1vLqDoS6zMfP+Xb\nDMZJTBVgWKTaahMsPaUIuy0rqbrBXtLQx8BupAF6/QVWCbTNOGApIHQ1L2hq\n6j/3A9AyQWmq8IMg7iMD0Vdtnrg4oBFw9tLhtZ+OQ1Sbg8um8nWyQTrzTVSm\nhB4vDnjBNGpXzH72QGGTje7HERogrONobGqQj2gAcwl/OJW+w1c/IQFgKxh1\n7kuSHhb9eHwTz5OlSWXKrldiNPPgG+o4nnQ9yKBPveD2/+tNBOeNHHjsgrEF\nHZcUvDAT2PInPnF6OOlc/gNzfzmO2OAnllH0EpwLL2YM9PDOo10jgZNfc5di\n0Nz3BXS3nxUfv6RO3h2HlhQWS4186am8uFQYZepEeG04vextGj/u0KKc/ywx\nWpRqQoUh4pk1NnSAmL2S8Y63ac48TKSVZWH/T9bgY+d8XNIsKhHu49l9uwFb\nxs2g+BXfMCTlCHu2wCgm0EiEj9nXCA/AWawisCPN6Vwxz1I/mRpGwDcYgUqo\n9s1iMRfYew1Qq+BolSE1YRfQUU8ZRDXX0yWkSvxaQ/VOtKIljvpvAvAZH981\nA4FvELJtffrIdVLyfULP6LsLGZwsN/YDJ01eP28Chgm6hrhNRAQj9uW+bUtx\nEl3Cb25WlHhddCADzGMb43pObD93aonRzpZ1BRe96BQ3jAnTYC4Z1qCGKxQo\nmENI\r\n=Kxza\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFly9kKJSnAsowROgIMXjUBVeiMe6I0T9gg+kxvWJ0PjAiEAwymJAr8TVjv/HvSkdxaJzlnAdpf1X451skfZTXve7+Y="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.0_1597890920127_0.4174072233112076"},"_hasShrinkwrap":false},"2.2.1-next-1597929665-aeaa2cb1.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597929665-aeaa2cb1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597929665-aeaa2cb1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597929665-aeaa2cb1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PAp6944oOvkioNubuhhpUY0LPb1DUqRDYziwEWj4rSSP3niL15dAk3vHjdCEiNdct/oi7EBxEl35809CS2ChJg==","shasum":"48a484c11657a3a012ef67ef111f433bdbf7765e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597929665-aeaa2cb1.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPnltCRA9TVsSAnZWagAAd38P/0ww1ZPc5KHwg9HyLSeR\nPpYSg4xpMFmeFpY0O5GUBoGasJbSl/nB/yYQGQHe5XX93Q0gP+tUELZTH43o\nmEikZP6ygY1Fb2Mh599ekXJQSz+kS0UrrPgGeEL+UDjTBQRDixa0lcHaGm/p\nb0ktzrkDGn3T0yu1Q9sQ8ohtZf4XrWTDcMQ4fo1znSQ7KUjBoPDOft/WlKO+\nioVHvgpKKqdq93Oyhu8Z/f7pywmMF8W8DtWC7yzbvMkQZOjmHriqgOjlxm4j\nnjgwx4BASAVHSamPf5vxjp4O639bJWdKbXDnAyVxCmm12saVg0DtF5earMhF\nNSvzh0nr2W9d4ya7CPSdQ23aO4xSk5KiHo9E8/dsqp6xkqoKDwVs8Z2f3qL3\niZuEQAJGIOfx0/8TUR2lS5XB+OC3Al4IrLEYuaElpofyweVY21ICVaPErJVr\nirijPzXplcF02O42w1JtFrr4UwtIWqFs5sYJU4TdMPObguEjMmk7wNeuPhMK\ncC8NIE03gc9NnYrLyzMppqvPbzfDwrITHjEx0a2s6fFBe3hlQY3TpowpdWg4\nzX7RX3razIvaysEAJbs+OlLI/uT1GUhOTyRvTv98ACyu7VgK347SOIfuYvac\n++kW9ta/iv+ryOJ4nQx/IsbI50wELWkKcEbd1IfVUebqNf2tHXJAnGNamgjm\nSDji\r\n=BAII\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDt1roxgDqHPUCBz0zf2h4mym8Xx0eSjHQ1d24Cd4nBQAIgV+Da7c15m4d1W6oKdsbkAufRn5v+vymksunxn/1C4+s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597929665-aeaa2cb1.0_1597929837424_0.05875607427474061"},"_hasShrinkwrap":false},"2.2.1-next-1597931828-a06bc161.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597931828-a06bc161.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597931828-a06bc161.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597931828-a06bc161.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VPfYpzWt30tKB07QfGi5OUyc8mRRrwftJkRac2EBzGp7DrUv9fnBGXmA/IFGexM0Vgkfc+e0FVF2Cbq4BOhimQ==","shasum":"756c4d01f59ba7808b97f1f3d40d0fb7f23e8fde","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597931828-a06bc161.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPoHXCRA9TVsSAnZWagAAsLgP/2S7QOhWvUaXJZnqDhWy\nzASYrG0snuSab1Azglk9q03xEAlf8j7+SrvdTJENU3CehIqSiEF4yu/2P9PW\no3rNJ8rS4KzQ/9QPvZt99SsavMJZCutzrYubXD34mhxjcUvJ09dnV8z4MddL\nSSU0FVAKWLM7QSos2DkfuNHz/Py8hSYsSdVXYVZWQtmZ8ZURVbGVrNcRCfGS\nzTruFd3smnCF+suwA62P+Glv1WgoqR+RFRuPv4Y548jMC0o81NSKBH6p0JNl\nx5MF/XmCPKTs8gfPh2Q3gevAALXJKj/1H5ErSYxtJ6hwSQFvWXSPJmiy2eCj\nFN272Zd7oZfbuQYoMu1aklzN9G6DskfYC1NQwkBrF+Vq8TmKrZM1+flabSzM\nGNHy4pBenlULMr+Q8FDm8y7xPo7gdEKZx03XhLEKur6anVR/vCw3UP3nlvQY\ntr12ZPDVbnrAOFhNmQmxKOy/O36wxOnNUl1+mnxG4oxYibDiKGNMp9+wdh/D\nDUqkllHzQc0sj6MJiAMghHYY/oGdiKOJK6GcZ51sEL5UmZX+EYgw34H5j73n\nC66Zq4JEuB/OF80GpEOt5OGPOOjKttZiq1A41Hzx2uMpcgq7Xoopg+UuFX6t\n9R/f1K4HzZlOoTgemNVz8tyB58jkXNWQGD/2IBEE7Bq7FN7uwpkj1SXaG/N/\n8ymb\r\n=LrxV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBXgbDoVkvtgFvRXeEk4l+zvm+eFnaRlel5NhjNa5/DaAiAPN4a+vmV+kgbXEItfVIvmhpn/cRAD8ID6www2qYJPUA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597931828-a06bc161.0_1597931990560_0.6116262598545119"},"_hasShrinkwrap":false},"2.2.1-next-1597932138-30cff415.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597932138-30cff415.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597932138-30cff415.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597932138-30cff415.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3vFh4h7716ibivicp1KldFNaY1IzBh8L75rQ8BPteFNeR8cYQvUGKDizUNzxJI/ZpVOrxkfF8GHyjoJ0ZJky/g==","shasum":"2b74685c84cfd54693d1d3391dad7e5b45d4bbef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597932138-30cff415.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPoL1CRA9TVsSAnZWagAAsrQP/jtYiqFi8C1UdQ8fwFHT\n36JzB2THqP0XXO9KOQ7FT3Y+G8IpEGIZqGWjglDXGmqpMuQVqIHJJzkN00Wj\n0jutZILxlsfK8U2IVahXhxalpO8rQyHJThR6eq+1IFrVUCKAKcNAPoznFTI7\nRXSkCZGhWs1SZkSyD2mJFpvZkJ7ZEyjn90FugKPPSxyxElCbQ7Wx9HhWrV93\nLb96jAQ/Ha6dckHH2NNQTqDES6xKpqskM53Z3U1qUKjnlwq95P+gKpehsJwf\nj+rDyYgxPI+IkM4orgVaJmJNi8zuDV4fBNjjESow1IgtgmDeoYdC7FUGdu2v\nBngS0OqPUpnoRNT0ngGGOzP1T2P1RE5e6vA8MC9Oz+qFUsc5u7HAwAgsKogg\n1bgzuQz4jZnisO/hEU/cjUUPpozT6Fitn/buCZTWSH8wDV9FVxcjHqQraKts\nhhiGHtN7w99+Xl5AS4xffseoC+hXKj+RhlQH8GpzLiCF2KLdCOXEl7oS+BCT\nBnQNg9KU2uqLvJj33qPekSYyc/5eouQoayHYFGVv59gDQA6Jq4zorujXDzN0\nLXQkeD3V8jSU3NONx9TsgMqr6eUil244SpLb2MjDDCpSkwwfi72gdpoFN9G0\nLfDPxjy59EhrvH58XaJRSxIiEnpAhSIPmk2BX2ShdqEyrCPNZWvM/77iBzq2\nNOtL\r\n=4Jcp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFAeEiQmAaYQTIfxzn1Cma6hmPOXF4RIH/BfipUizOqSAiEA8YPZxb0m3riPvxYKcrqyy8qDbPbbJrnjJc8fQnS9v40="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597932138-30cff415.0_1597932276985_0.1538102256540126"},"_hasShrinkwrap":false},"2.2.1-next-1597933592-30cff415.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597933592-30cff415.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597933592-30cff415.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597933592-30cff415.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WtaEvylNgQe5PBkI9bOJbhekUEC9BJrUsDpGOY6XEW6CXdBz4IxihXlJo5QaMDXfHOQ/EA2DVm9NQuPhXXJwig==","shasum":"10a98d8e010416228606b56c3e099f93c3ed5b0e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597933592-30cff415.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPoihCRA9TVsSAnZWagAA+tkP/icUVc6P86Xkr6eOzR0D\nr6eErR0BXc3u39QUS4hmreg8i0Ybp8UMvJLchCkRUiONL28cgp/hXFB3d/fY\nYYGfA2e1vkBcv+hSEOGIuR/P28+JinLFoqF2yFQaWk6KwE3WWnOTl0OG8G8r\nsz1Uv6MDuDLiXY/iBFFfguY7SIBBOPI9Hpdlm2xe/KNcsdqRmXSZCwql8I73\n1ji/zQjKMHk4qu9vpIEAbZDPu5z4JQRE3Jh0YBk5mzvGcjZItlT+qnPcmWwY\nkAyjmCPM0VNx8vP2FGKrlMZqspMnL/yAlvbHNnXFYfleFD+Wrfg8XcE1RUpF\nwTOeRWAHln5q6qjtHBOf0acDaei82nEaPR0LakiJ2JMF9PhnV4sAiTcSF69v\nz/TT6HNlBMBuyVlEKh7AoP2MRgMwHKJEPI9GNBJvWQwjptXWP/Tjj3L7KwhT\ngliKtSt4jRw40KzJiaRTgutMJCiBJhe/GWaBFAf89LRmHybcbx4lCy1kFkTM\nbQx47VediVl/7/XGKwr3DP2DCiXGZQtRcYwx9bPx3UCeArbh1gY1MCgZsx7M\nyUGAQP0BTHITilE2CAturcse0tQ0nrcCS/4Y8TUNv1FvJJFbhQuNBR+zoaVq\n10MJqVMQBVhWayM771ZkEcqUPtORgoHu2lDkh5QdVIExyrosBMfPO2PUR1Zg\nc+5Q\r\n=YHlm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICnarkikRYwmaVYXM2VRhgWaCEBCHZ4qVkaJMD6YMcmYAiEAn9th+B2SRVpoV8m64qBfvamcunDbp9LAzLzc02J0tM4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597933592-30cff415.0_1597933729318_0.5513687911483702"},"_hasShrinkwrap":false},"2.2.1-next-1597934334-a06bc161.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597934334-a06bc161.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597934334-a06bc161.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597934334-a06bc161.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BepJnWNCWZQAV4LM6lSif9ppwuXZ2f9O0guPehWlylpCtDLtZjpJHnNQbLj1F91Adf1zEOE9mZJA5CBBOy3QSQ==","shasum":"f1f423c372f749ee138c3a322ab007aba10bd577","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597934334-a06bc161.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPouVCRA9TVsSAnZWagAABWYP/2bDaO6XUofYl2Es11Xj\ndTAsq44szBHeY7461khWrWsOL2RJwivW4wFUudNptj9Z5UOX7rZRP+VdHa/B\nqOWyOeYvG55mg2xSWC5DJqMJvAe7p9mxCSBNcMPOzqyvv8iKYO6j0Ip9ER9M\nfHqVKe8KPT1/226VIOf0aitXXG9Z2mSgtyJ2rGMa5uC/s2zCcJ5idonKoDnc\nspF87TIPaUQodh0zca78myZ9Hn+/nLOaeW2oXAXvf0Tdz4Rj0mCkh3ryV1dj\noG2wp7GRLvWYcR1QmvZAGuqlb6dDQWxMatf65EJcCaq6oUYJocSEO1rSNLeq\nd/X217rKsP6WIvQkp9RaUjaVW5iW60I4sIwyL/84WB0hTxHkeaqtwhN2pKf+\nBw5THg3baOSKec7SkSVf7slbvOpz4nN9RfAVzuquY8D2bwvpu8S8yzTQ0Bm4\nKHTiRHAwNGdU9toJGMg8Ysjc1EBQ9HZnY4scLmrZxF6ESf7GfKfVoUHYISyz\nWqUNeuSi6TvygNIXmtFMjW5Z3c+RxoD7er9MW/JaJON1jDDhaxtjTUWn8/Ae\nsw6M5UJAZLRB8TcK7/Ci6gRwXGM+EGodVe1foHg71OAi/WDvRxMEN2LP/iea\nmVUan/gdvRpfTYFOP8jiNn8k3YUFk/BzrmOAegnYVJx1mDt3l109dHUsWehr\nyjWK\r\n=zEpS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDk4cEfVWEv7PduhD07sFqQxdUTUIgE/5YiJa0QE486bAIgFRx7OG/Hk7ZGC7mgYlNx+GMnARU9B+rJMjot3S1WGSk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597934334-a06bc161.0_1597934484629_0.2585815362938366"},"_hasShrinkwrap":false},"2.2.1-next-1597937730-e7114708.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597937730-e7114708.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597937730-e7114708.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597937730-e7114708.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RYzIuDMGsZOsqXskAy3gruHqC0+Y5+n3J7RLeIy7GnYCvttPCaWFRxwo/S5hLghJ5qY0G/8+kXFeOsZDV1U4Lw==","shasum":"e8bd9dd92e40969ea2606aabe47b111d657fdc66","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597937730-e7114708.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPpi+CRA9TVsSAnZWagAATT8P/jt4LnmR09OhICi2jkQO\n4DJL4HasXzBGao3FvDsWgK/xDXXdfz9opveiHM4H1GeYFIb7Gae/7kbvgWqM\n0ZfIbg4dn+F+l5zHCoEw+Btni+2E6jkhqW0rRUM3F6/Mp+gPKVqrNN1akQIH\nxwDbNfaR/4DIWjMG7z+YshEbXcf9AYv/E4ggQ7sRIgeCfZUA8BoGivUmhRNK\n0lQxASmjKBbFUn/Pl/9H5MsL5FWmhQ8iJhf9upaaxd1fq2vPrvDn07fDLRKM\nyNw2rXSwNC2E6TgMi8V0x4vP9G6sJOLoXgf4HHpSlppYoZea1tB4G9Y8RH3P\nOrP9JjzALXn8UK04RrMt1FYY5BOb4S3cnOqup5w90ziRq5aCrdMcx/BuR95d\n1jHwWwX4l26Q9yhy8wz23xJUI73ZCl6q0A4NupbkQ9Ae2PqjNQ+fpd4962+6\nDvGawZ82WSKLJ3NPgsRTIlSuHkA5i3EfbQQ6wu7vZKxeacunUIY55TXaJYuB\nekyfvVKGVmPMgUHzmiWhkKS8145K0UpoXIvflw3sAmFLCOIUcazuRDK6HL4s\nHQW4wu5WHsZ8RQUt0Od9ZftjHcz/a09e8Fso1Uand/5DwOYKj2IEjpcauJcf\n7WnlCN0wulJDhKBlkDjHrFBd4XHUP7JFJjznrQF+ly1TnAZLIrqklb7Pdno2\ntjFH\r\n=f2H3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3HKLGmcdmeQU+QeEI3zeya/0WC/5HF0gcPV8z6a39jgIhAJedSMNtMblLMFdUfB/zUpSm4C5i0hoZFKnG+Q8nEQEZ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597937730-e7114708.0_1597937854142_0.08077496476312396"},"_hasShrinkwrap":false},"2.2.1-next-1597938784-eed5ece5.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597938784-eed5ece5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597938784-eed5ece5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597938784-eed5ece5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jNKQOwMrFFeUQ9bxRzdGS7vePHv7CMe3fnlL69LdHZfFM4cmJbWiORQ0E2Z022l4W2N1DdDAB8ls37Au0jJR/w==","shasum":"c8406b46bdf3c49e85593af29f062380eca7a55b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597938784-eed5ece5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPpzmCRA9TVsSAnZWagAAsUQP/RhGeKYNLMtfMsCchKCe\nMWM1VAnV3bkg0nslee7QFJAiDwF49MBKHVAoLJnoOOpTeuWZbbarwF7Ac9S+\nmWThoDd7l3KVmci/62xLlIkrwSYMnGJAD1FveE0XJCcscpjGS2Qxzn4irQiY\nZzSj3jkU5UlyLRRsvpm/wZVy8x55N3iG85UKiDFBFiZy4s7+DZQ/LtANbo7l\nDQdhij6wer4XnY1AJ30Lb+DHLKEFXLfvrkhxt4rsAGgNptztQsoEqqxdwaF8\n9O4BFJfkqwinfpxUIGsJezzGdxt9Gq7EiS+qUYIE22ilQ46LBjEeXn0LTABr\nAw5m6hHjRfe31YZD902eAB0jEmbZtBpModuDP8qXhzkJC3sA4WgYrIdbL8nC\n6SeJSv9t2Xo96Pyw9hgG7oqyMD/AE04j4z8mBPm4yo0AnkF5a81mtWKa3BQA\nEiVpOPKuZr+TuvQswzsHADX2sEkL6lMEylSHGuGbahitTk8EROGlxXRZhrbA\nnNT+jO90hsnGeWpjljr5H4exv2fQjYpE+Rmfs6U5TGfj8cmGyAmCrv+R37KO\n/zOg+AsK3HJVvOrBeFuOMFxr9R8QNIBSE76Ejh583rFunl+EfORiVm1TEyPp\nWQ7FN5vP8VWMBm+Bgivywa/TKZZ98rBSHg4klNEtR/f2RDRHz+OWSmoFkWn5\nE9Ov\r\n=H/Di\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIM1nX+yLbPEEisuTSwUouiSaRF01jdroI2/SqB3uhuQIgegoHPRE07K+XqAC7g9fJl5JW74UQYkLo7VjcBXmo7mg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597938784-eed5ece5.0_1597938917788_0.9682746426604447"},"_hasShrinkwrap":false},"2.2.1-next-1597939783-eed5ece5.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597939783-eed5ece5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597939783-eed5ece5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597939783-eed5ece5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-fsGeZP2hTin6vGy48LXmgF6xFX/g0hEaX4B45ha7SOgUS55gV3w9q89Nlm4qFMrLd70ZYvq8wc18SDNJFnSqYw==","shasum":"f084d3387798651417ddab27b56fb98f01267f29","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597939783-eed5ece5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPqDRCRA9TVsSAnZWagAAF2IP/2B9DhoQhgtQwrikdqrp\nbiQDiCdwHxuI6xM15Ri6e1A9nEZFjtWzedYELs1/jxytDo93VcSisULmPjqV\nZjnbx/+191DEbRRnVhNGcuhG4h1Mz4KiJlZhvqrpZ4QVzCRHN1h11WqsvnQu\nMOV9tE1IUqpdFXY2MgheFXRxSrYEq5APbtVpLNCDLBHc9U7JE45kb3gp2CfY\nDJvXWRO38YrInwBTEAmyoRPaDLQVjTv/K7fUBZ2J5DxRJ6Wgxx/cRz7QHUNy\n5Bgx1i22aKBOm94nFprKmY1YKqMq35LKTFg6VOS5eRaoDOgFn/7pUpPd5yOW\nxhmsYOszoEfO1reMS9GCen+f1eTVGgLE4ZMO1DhU9IAr1J/kU8wpxg/En5Qv\nprwQirv1pQwVCpXnu6ctbXmmRei2dAQMMQsYYrtNRqZn4GGatDTRgD6et+7d\n8MsvzkclQH+PimUaEgbanAkTzrM2CpgeE9n2KaOshk3LRtjTbbF+jErcaDlY\neoHY9PidCGINYOwsIGXfPMV2KP4V/jNacTyNQh5Cj+5Ulr8HV2Xc+f+9LzG1\nU0VLfv+DQbK8F/Qe6rejU9GvOUl7OqavMQ/7N0c07m7rg128pQJpnUcN0OJd\n3Ujjvqi4QE+5QSwR1NFZxJ0/Sn+EkV4squ+bIMOd7vXeUGgOR9MxKw1OBFPc\nqVrP\r\n=ynfa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA2ckjtyqa2rqzZrctpBb8GSh4HEVol12NfL0JC42fiGAiEA1Cn9tDFMu4TJzrrn3ifj8cttLcJP4kvl27SOlvNNhpQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597939783-eed5ece5.0_1597939921396_0.8625442589135648"},"_hasShrinkwrap":false},"2.2.1-next-1597941363-30cff415.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597941363-30cff415.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597941363-30cff415.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597941363-30cff415.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rxklUj9icJYGP0K4BeMMfW8A5YH416Uy2bBTpG2hzeOPT18xNu8RNW1SuXecfgxtOwZDYrG9kyJHGaKoeh2uOQ==","shasum":"f197b6c1fed04fc03925e916aba066066f788a26","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597941363-30cff415.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPqceCRA9TVsSAnZWagAAWOQQAKQdS4o/y8SGS+Ax2Ixg\nfZpcIVA/WbzG1prNqL3wGchRgZVlusyMDDdx4FpCJgot6sxmvvq7VT/ZF0Vr\n6Wy0UK4noSseM/BL7kVOphcKnid/pozdraCjhl2p7Vy2b302SslQ/8jZU29M\n/odCuiLn2Ux6PpOBq4o0H8KUUGh8duZMrNRMQbH8M6M0ce7Sgy/ZLSax3vmY\nd+tnakwnc5jwbDv3REhqs2ML5p8r/OKVH6l6cksuVy4OVnaBg8PEVQTAmaLp\nTcLIdXKmgOWNR8ucpkUCkcpiUspNm7zJ8+IeqSR0Y0MKyQjvYK8QSp8cajgu\n2UCNwDheSMlH+Axb9I5exuVTti6tv3ueX6YkE8Zh9w9CDDzEdWozNnrV0l/N\nnI6LWMccXxIF5gmgo1pV4Mfij38qGqqehCC7DPqrDkWYzmu/2lEMyddc3F7k\nAQZJXvOdylwJN6urJAcIscI8/UrEdt66zSa8sYl21FR9HuIUbh0+YCw9olL8\ncdTwcy9mICqD+kOExoLzJJ7rQK1zbLTXdiA76XOnbFDp5H6yrIwojDbQvg5C\nMQju9ZM73FDIm953llOgeIgqa4vShNIcZPGdM/ILnImMOxnowX0qOi2EYmWx\nSiIU+CtUaid2nGuBgvRI36ZJ2WjMP7tYpxIaO1JUndV0W1WT4AIud6qy77TV\nVOd8\r\n=hKyF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQNXfhTQstVcN5ZikbGWgUCOIdkrP7saLrOHQj8px0gAiA7zTHJ47ltTiv+86LvCplrpaBWX54yDggCZFgnDDHA1A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597941363-30cff415.0_1597941534435_0.3912692606110577"},"_hasShrinkwrap":false},"2.2.1-next-1597952587-30cff415.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597952587-30cff415.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597952587-30cff415.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597952587-30cff415.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UJZyiml1WhpUyUfLhMgCiPfII7UOhVmjbTlgAHkJ5/vTFGByjLLsfdrz18Kwxw0geP6s5u0Nwb7ySK3RFwi5hA==","shasum":"cbb705ca28049ac745b13051cfb338c13bb7d643","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597952587-30cff415.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPtLQCRA9TVsSAnZWagAAqakQAI3SQ2q6KudauKHVooKO\nrpRIdxVWNegUUrbEuIFry/52UjW1IzQsrB/fRHx2d9Ch8aAlgXiM7E/rgQGV\nzNoMCxvtlkjaWje6rMtRP0iIASmJqWthwYrrMfhBf7EjAW08Eh3lX0FncZGC\nvVOO9eisW3UUWTb1UFuGc5EIwCZiHDgtl06L/ez7hi5bVsqueXqlC85wmVIh\nCpDK0M3SJIkrWxloaZPPw0bPHA2YFPUwvScI3kXbohVDBuCV4kvAlB8ZO8u5\nKTsdVkMbt2RDWTmPvKJGMVVlDIvgz50KmKGFTotBkvnn8rC65W8TIrjYMyNm\nXWqQwEzuWtK0or325uU9bREIcIL0RHlzm+eT/KEJCC/Y7hsCdKgSj6NFk5X9\nA4GJk38CctoaLNQe4QLudL+Futl1Y5fKo4GdB/o0lnvV39QHz76P7uR8v/eg\nYNSBMACYZyVWw31VI1/LcMjpEuKSVdLJyqUOLVmcRSGcFW1z+lNGeUG09S/j\nDBCxTsBDlc56o6M1uN1HHzyeO7tfCcWoUcmUJW4Q/gLRfGJEHbK585995Agd\ngEJwR2sGvzIQfvYIlIMAFoodOpwfLwtbJFtGC3la0GqtZZlkXZF9sukKu8mf\nYYPTUxmSArVqt6+9kK+iEJudruLIQ+39OkS0itl/FQTMC9m4TLCuxwD/Ccmd\nNsX6\r\n=KLHp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8jlXE17lAeD6Jr2QnmrnlTkXe0Io2RGp4z6OGpCiWPAIgCSlJMORedVCJnb/hM1oMrJDif6pv4PRehtYzeaTgtW8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597952587-30cff415.0_1597952720254_0.005145714553074665"},"_hasShrinkwrap":false},"2.2.1-next-1597959456-f524f830.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597959456-f524f830.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597959456-f524f830.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597959456-f524f830.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-QLgB5SaYg8bzn8kLggKb1YZ0eTQOgznTignv3ftg+qFoF1S4uH7vSlZbZKnjnZaoatYDybiJwwdCgmzNH4Yk+w==","shasum":"35b14ca953d5feedbc89704d94ee6d6a86d6b081","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597959456-f524f830.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPu2yCRA9TVsSAnZWagAAEy8QAJJxVmal4celc+m1Vx1a\n6NCjTwEDvUwIcPnwD08d3eRivm1qjuVSvrT2CSctRdWPNjxDtApbugBAi0gD\neapeHdniH5n6OvRjPuyN9p6jYZGTWDKN9lUj9EL/xD4poB66qsipyeS4VRT2\n1kZCZSNHyv8v+4jiE8HjtPu44UCFJQ6bMaiXDMB4YcTbYIXKFdVQg3JsVjuC\niJs1Leof0xTqvbV/eRe44PmDP9cDFLBrBYRvURPun310lI3Lo/3a0awUnN9A\nH6N7mFOFvKB9mp1dwVEqE3EXQ9pIYiWESZn99mseIuJtvPrTrOnMI17pVek5\nMeOUhYEJi0BQpukpbjwqWS1HIzYnGRSewGG4kA8FVoSXtcilq1Kb1FPwDjAc\nb+88I74P1Tb2E7QWhJfHQ0BtINyzmWLZCpWY/4pLMROKm3cnAd+BLPoDdl0N\nKZ5CR4b+YtWg+uV0FnSurCP465SVktTXngUmi6A0A1BhvU0N3aGukITQrV0A\n9g02UkPVkviYRErZHIxwu7+RZFOSSfXhA8/WMUMagKleI7QtC1AYhc5x4xam\nWsGARZ6uHRyJzetOAxjAiS/1jQPOfd6KiYvCJwx/6PfF+UWBCaBiDTUp7hYC\nr8n0P6tBat4z/0B56L7aPiY+ms6G51+Cxv20dC3FBB9Un2xB99P7295GdSqD\nI1uO\r\n=xfKD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrXZgjPrWAt4vUBrVCqzXlBYfXvprGzB8oSWdZirVb+QIgJxlj4K7lCyPxiV0C8QxwmMJs08uzjSBLntiiiS423e8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597959456-f524f830.0_1597959601818_0.6523798526287823"},"_hasShrinkwrap":false},"2.2.1-next-1597962156-063f6baa.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1597962156-063f6baa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1597962156-063f6baa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1597962156-063f6baa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RBszt9J+E21UVecth59iOLhy5sJpNiix/+UUMqdCRCQJasecefYPC4QWPrXhh+pSu9HJvOtr24hYN90Y/9aPHQ==","shasum":"5deafe0f40acee5377bc2a1a90f41dc2f77469fa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1597962156-063f6baa.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPvhGCRA9TVsSAnZWagAABvMQAJ0sTuc+1uCXvOpzNyDJ\n2LpfM5bDNHJ4qwMN+Zn6ucUfXCUGRkVaoKsM27ZNp5gEjeWXAugm/fan8NOF\nFHs+hiILJRcJZVWrY4LxwS0Pjz2mNdtLoKa+UOGPrHsN4uOcp6T7+JGNQfY7\ngOg26PZSY8ypokxmdTsv6HXqIeksOYgVnIgzLUXYLe1SmC1uJSDXpTyklRQk\nIl352HCaYzJg8RnVK+MTBjsBPr/j+o96tKW0sIGwZ92SbyRyDvb9nLI9voxW\n3uqPmhJTTJfdRS7CojUU9EMq2VEFH4y4FMTKPlbRuOg5qzcmtxxjkrWrcqIm\nWoYzmFJ0ydayKPL3hfw9d8aXbJzzZCZJ+CccNjVyUT/Am38yO6Zt9WQZ76wi\njs208pmKqpnrcADiGiuwdMTZYJ3ujq905pIJF3lLIkA+cRfEH7C9mBE1NtlF\nU0eN3Pd2nK+012IhDuIKnT/HJwxzws/w5IUvj7WgOT+j6vNFaTeNpBJjm9QW\niBxJCF9pOl3gHmljSJR63lRqY8xnB4WCCu0KjSTtO6kqzzG6y3tuW3SEvMN0\njIioF5jm4Ros9sha2sb/KdgVuKV3AgHL4rZsgxGtBcXCFTWjkTXjT0FMIo0O\ndcNwxMxCDWaYk5C2Ky9/MR63FiygMEYvnVlTuq2Dc0uu/IXW/dss4V7k6jiK\njC4C\r\n=8CXx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeIPpmVZPmuI4CCCxqDXh/TLFG9JTwvpuzO9c6x/apsQIhALMZNggSBwV/94ke9TZvW072YLpxvAeLO2Th3l3fgO93"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1597962156-063f6baa.0_1597962309906_0.6834602059417003"},"_hasShrinkwrap":false},"1.47.1-next-1598011024-6051392b.0":{"name":"@xdn/prefetch","version":"1.47.1-next-1598011024-6051392b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.47.1-next-1598011024-6051392b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RU0U3Asjw2Zj5lvpG22DABlKGC5/2u9pG30ZaO7kLf614aTkwBtaQSFuxn9i9KrkXPPN5OBqlufPGkEvOUU3Lg==","shasum":"87e1adef21cf892f53458c90f812457385fb37fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.47.1-next-1598011024-6051392b.0.tgz","fileCount":52,"unpackedSize":83550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP7jDCRA9TVsSAnZWagAAIm4P/AnXa3C55uyCuXU9tIY3\n9h50pFGKQw94V90RJC56LyoW+ojaXp+Mv7SKpSq6cKj/C/7hnwvd9tdawNzS\nx2dw3GSXm0eqv0Pkl6gzZ32uPIF5gW1SFo3WkwPzJtwcNJL4ZU6qOWbcI5pG\niy53bvPD8inVD4TvUQ1A/S11pN+9pbkStUIwXcFIDddS4X0HJtddX/nnzfH4\ngFS/+UcybvXCmgBFR3kOHqgexqS2i1OBGfXkYC9tckXQBywrRConab/5UNG4\nHhTlluIs3sDSdSGk3iIh8u5JePBL/vwUqr8MTbyvHnsJBOrlWlrND+K7adw4\nNVza5vBV99bYX3U+EbeCsJYdIszNpWhHITQ9LO7MVpn0wQbN1WCiodKGKDHZ\ncCON5g8VJ8wD8S8wqYJmEgFpswHj8P9W7xzJa9qWTGpT4TRNedf/ib+YXYA6\n/iYjR7wllMcNcThYs3LQGphzMV0P0aE7lZ9fn4gfY8Y9QhvuuM/a2T3rucF1\ntvLqskLWObAIvZUNlJzi8cqgpiSP72QOD5QTaIXRSl29qH1Af1M42O485EHK\n2TPzq771G7T+jhXvgxZWjc0yjNzL2xGVUIuUCGSd8oDLSPgM6lo7waSRVdnr\nm9nFdX01tMmEuR7QpiW7XsE4S/UpVTLNPgaF/sSskFpNyCJ1/WVZ5Rbs9cB4\n9Ele\r\n=YS7M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpd8xgI5kxexG7O6Y41h7OnwP5viYCVxG4oPQDD+ULjQIgM+rSNWIUi99FaLCTaJmfNCNYLxokiCcnNGxce3bVUA0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.47.1-next-1598011024-6051392b.0_1598011586878_0.5706979110199921"},"_hasShrinkwrap":false},"1.47.0":{"name":"@xdn/prefetch","version":"1.47.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@1.47.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Dt7fkgT5md9ily6mV+1vJohRktalUGOR4XTSa9WBf4YBxjtBqj6a2yjwppQRMHPTapAEuF1VKiwES7ZZLtrfqA==","shasum":"44d2c92eb5eee56128de88768dadae0e279808af","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.47.0.tgz","fileCount":52,"unpackedSize":83523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP73eCRA9TVsSAnZWagAAYfUP/i0LYQkxv6Lz72lqqs09\nsIXD0y/vhI3tlGnPeYweZ2s0T7TKWZ4Ua6bjVwKgQfNs18WwHuOOI3IK59LY\nus39nAfMrG1pfOTk1y0mtO1GpXrPsSFgpx6WdgKLFImD5BAoAnsk7UXAM4mr\n5enz/eqL1/iOXz7iBOXKKME3tP9MS120UDWyU8Gf0hhpHpyzRdw57ZTVpcsj\njZY50CTqqEOd6xa6iutMKgSOXYa2CToK+9+NB7PEYAezB0f7LnM4tXfCiZFf\n7QVaL/tqmB0wQCBXA1/71ZDj2ayNxguYhbT1DZGhjM3OiKvdmnZUlvebYqHE\niSGCdH/9yoa0Uyz3EvC26xJ5lbooFot5NsqfM8YGFa/S7gfPWaTud0XAEglV\nu/HZNasG1Ak/lo5uk6QcVadmw+XwQWiA41WQJBDQj6cnLsITG5N1wmcbELPd\nCYvjzrvvnEu1QPI4HbYyDXaLKk7u7wAf3G3T0EbqrXvdcOJv31Fy0cQ6fjU0\nT6uqtuMDxub7alWZpGEWoWVRaE17odVtnmccRuAKlHa/Fk+NXHzDlndBidMg\nsGp6y8Q+k50gx7QxQZ3NiaSjpbITSABlss3+k7b9/9ymPFnbnCIlLhI9d2R+\n+qkvwwDHQAqHtTmbIvLwT883/3+syd/2TwL5UePv5kitaJuciIiibp8NoO1U\n4Pcq\r\n=/GZ0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkFXD8sF8alvUpCl88UxmFxT8nfgTVBTL3QLBTXeoF7gIhAK1zcCHz8PmklcaydFHaavm2XVda8EyYi90lf8OrdXX/"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.47.0_1598012893844_0.703564569858482"},"_hasShrinkwrap":false},"2.2.1-next-1598018145-063f6baa.0":{"name":"@xdn/prefetch","version":"2.2.1-next-1598018145-063f6baa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1-next-1598018145-063f6baa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.1-next-1598018145-063f6baa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OlLwYnrLZiL05raZ7DI0fpmBhhD7I3jCVerXCAizPojVQmWv9YwaaQmQEae4cEU2Mys9rFAAPHrhWCkzKq1NbQ==","shasum":"4ba17299ca15e017557f724783d6dafa6004e5a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1-next-1598018145-063f6baa.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP9LVCRA9TVsSAnZWagAAlsoP/35ZQFsZSRklcH0Kg1Ez\n6M4y1YiC5rZke03zAlem0g97xgKRHSS039dYzqpkejix9MJnQQoQaqpVC1HH\ngiSfeI5BibByy3cS83jRlmkwpFwUbv3LRSC4uA95HaVx/yw1sBurpX19wr2L\n66wxxTBoYCnBUyjChEEiRPruZGwQCtKLbUgan2sQfxioyjpwJrSXCWNMAxMO\nMA2a17vLtk14BlGZIqJm2zSh3AIz3S8Oz0ykLzY1bK5bI483iz9k02SwLItf\nDyRDPaYTeC7JM3/JVDuyW//oWveCduPIClfwQ2ZduBCjafSIXODsVlM6uKY3\npR3MQ+q8Yi7/MnhFeN1J9U0k9xyCaCWQD4ULaWHU2W/Z34wYDCV5jw8DRfBE\nC7iaRBSvKCxV0omA/OuF5ULhmXh2LADba0klNTzcvgOfy1R3tfXkYt3hRK2W\nSlNrrYawSscGNnxk7pMRc7hVneNf901fP0xhgNZ31R2ZUefDm/zt+pS4X/nU\ne9TCi1XFC0n8j+8X8jYqZ4mQXZSAdbGZCnWZnl9k9wp7u0g4Za+/vEyTT4fS\niETVowNySrlKpeFBvqTHT8dkT6NuopJNn33D+0E1b0lpshXa3Fi04B8UG0Cn\nJ319IriB9nPDiXSwhyemyM6ezIW14QWzGl5lquy7LJyWjSdZpCs/HaHAUe5g\nHukd\r\n=YRki\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICOY0r3nsSG/qW2NpjMnc/t+69LDyf4bvvrwhQvpPD00AiEAk9YTPkWdg95csgn8iHa6hNh4RCmBvJBGvXjHCHX+lM4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1-next-1598018145-063f6baa.0_1598018260625_0.41956068321394246"},"_hasShrinkwrap":false},"2.2.2-next-1598026898-9caf050d.0":{"name":"@xdn/prefetch","version":"2.2.2-next-1598026898-9caf050d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.2-next-1598026898-9caf050d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.2-next-1598026898-9caf050d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XFebLus6a0+FfuvdxNb6+odjumdDwhOLJtaeraDCNn/a7skNGXgLYtdBYoI3a+eGB3WcyBCo2mA/2N6+4JZ9NQ==","shasum":"97e041c7b6f6841e60ffb2793889c9febe8da3b8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.2-next-1598026898-9caf050d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP/UjCRA9TVsSAnZWagAAXVUQAJyxRxah9SSP2e54nMc4\nvF7H23BAcYOc1uJ+ZNEtM6rJHSZwVgOfzgrAYYYAJ277zfQTHomJv/GMs3PG\nK69ix6WflR+0mGf7OueJWzQxP1TmOgE5QMZVE/UijBBKmE9OsZxo2hAIAIhJ\n4eyYihxLI3OlFqMvWjtKDZl6zvz9go9VYM6aqT+9EBJpwigopbQEyiGOzTLU\n4wqg2jhqDXXiZZnMxGmD7EGAT/F6LnnokiyvMcjHXElJysibicWWSfX5DZnF\nIOYM25GJoxmCznAAaWYlU/PUkdRy0rqueYpUv44QZxn7cZh/qXo6Weu6s9GP\neaCrmEJkTUpznkSsbH3PfX02azwV5PqOXpddvtCnXdNdofp7RxoTbAB5Sv3n\nNl9tmAfd1k6qnnieMsqzoVcbEzaKQJ/MUTCSaF2bypOASKAtfGwC8xs7gLSS\ntv5lJ/JyYTn7nh/0IskZaxnSmAUpythkDPe8PUYn3aAE+eDcFQZ7kcmHygIB\nL7JsuHTjr7FEWpY7FlxuDp0XYf5qU5FKeXKGBkEGSIJCkss2aaxFn/D5q/z+\nxMXWO+1AZwVw81eB+mYTQLRX7v/W3b4MHQ0CnWh4x9WOGqFhStyp6p2CW48T\nCBREopJCIF7C9juc6cwvop6APu1mdqWBp+w3qwA5j0hbieHX8kIb4rKbuCXO\n62/p\r\n=bA5R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE/72Yo1wilDDLhM0E7S3rb59Z3AbUsKWU3DwvZiANgdAiEAlTQMuDTDTQLFOq9t8uqlv4gWxKkMt3sNMAGwZ6P77Mo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.2-next-1598026898-9caf050d.0_1598027042611_0.5400432308071668"},"_hasShrinkwrap":false},"2.2.2-next-1598027588-9caf050d.0":{"name":"@xdn/prefetch","version":"2.2.2-next-1598027588-9caf050d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.2-next-1598027588-9caf050d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.2-next-1598027588-9caf050d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-J4ynhr7R7SmsvQGB8CHNZLEoaFfsN+PqNEtni/scg8AqCdUXuAeTKwchhig2ogWt55gOgErbhmDKJ7CnLViMNw==","shasum":"64a340c1f7ee22c5b22369d7aeefeccef7ca3f45","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.2-next-1598027588-9caf050d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP/ffCRA9TVsSAnZWagAAuCkP/jj08QIcj3DCf/hk2LKN\nWPDK34WrWQ+PendQaW7osnGJ/rnVMl2KKYEwk0F1p3dHXg1UHsGqQNCGqzzT\nPL+l1zKegxp93KsPwut7+DHqgTr4WcvX0m0nh5Rgb3Zx/WNg4cspTW3Y/eLQ\nUn2q9XNhKgKuKs3PoDQ1Rfv2S6wDsWiSkFJd7ZTwPLeoyucE7mirL8FfpYOR\nBHqaWv95EWHt083Z8ZkZwOUscvMUdPfSN4MqEgiuyCFGVailNNYcD4jctrWa\nYFes8TJYOO+e7HfuKIL/23NwQrMG3OD7s+7YMlc3QkQ/iHzTyiMxXV3eUKdi\nfwwSCdfcQsuDTCZTfsUEQ4EXO93Mn9wAPp+ZRkFK2iCv+h4o2AblorOWAdS0\nsCRNvcQumiOVAc8gox6REoPWEMu14Zz0IVGKO5su/lp/pXf93XhykIWicQuH\n9Fy0zpOOi4XEtDhKAerJTOcZ265I76iiGLJl3ItIIgd0moJC/rRn5hIBU7+U\n9H1EeeVYRiUguW08zOGVjH3A9iEh4nXdcFzwptLrk8GrOrP7BfCytrFK5VWZ\nZGVfAkwb3I5EReelqUqSAlThmoc4EGMAjcM+WeBk912H0EKXqyxleBDF5kor\nKq1rTkLTm1QusRBjkaM9ONB+ZGe55Kecp6m70+tTNWboJF1c3hcZwBOfZ/nI\nCjfu\r\n=eQfw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+fyyYO8U7pLjMflwF4ooWtcauhgO11ZirR1zC57rkUAIgTN93jjWJE6j3rKu8CP7lITswqK9SneLmTM0vELKKjKU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.2-next-1598027588-9caf050d.0_1598027742656_0.7220908365570695"},"_hasShrinkwrap":false},"2.2.2-next-1598029281-d07b6b5b.0":{"name":"@xdn/prefetch","version":"2.2.2-next-1598029281-d07b6b5b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.2-next-1598029281-d07b6b5b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.2-next-1598029281-d07b6b5b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-M3vjKcRt3H4mEffp+23g9P7hdIH/faK4Lf5gOtlCpNsb0GBYkTRcFDNxIuPChiyF6Qz2UsH6Y9wgaudithykJw==","shasum":"ed50da673873071c21999c3b28cc35791a59ea95","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.2-next-1598029281-d07b6b5b.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP/5/CRA9TVsSAnZWagAAFGQP/AjXbm8eaI8gO5DLftHR\nwWv2eB6XgL0XxJqVFhOrfwPF8MAWn6yHJ+l0a/73L4N9SV0aP1PyWQGRXMXq\nxZBwMLlws51r33hm+MauM9+glNZ+FikEBwzvBsfS7A7ywa6vrMyMelN4ZnUO\n+laNw4lPvW6JN2dbXos7wNnWqP+ZBt1xMhH/HHTqUhamVvcGpoQiOkadotJF\nH9EXp3IS6iy31IPCjguo5W9Kwy1jx9lwxexhYaYu/uXtSJOjNPmWC4DFN4+y\nWJOoiFptNIq36CreXQMoxk54B4GZnOQ20XiYaHSb52CApFATdOl60jo7HmwC\n/jvmwwhrdBVeujHiiAujgP6HJHNslSM8p/mp11xk6Ss0aSRcaU4V+AXAxYCt\nQRn1w+STV9lAhqXR9TZNZupKLCIEvHXOkd/f0dxM2bO5cDL1RwOXSHI5ze2R\nk3PFvMvKK4wgEeLXrwmZ7GYCkkR4Oa+qvRfmlQkk/ucEaXC2SUWtSeMzKGR4\nTS9+xjpp6PSmYbQw8faO9k0zr54fG1K0nVgzVwmUndGPOSMU/3/envT3tpgp\nEXALr39+DiKnq+CCndwYYH1L6Z6LFKzz0L3FEqZt1WZ3hH4mx6I//4l95Tke\nxsQE8PBC4aJNloh1ZZ+Lfb1jo2YazoYDFjxS7iFE5ZIRTx6vg2CJa8lFlG6m\nfPlr\r\n=hOFO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbN5mNTa7YWoIquLRrmUYAc5/zal0+ujoo3pI78tUzYgIhAOVgQ387vgftBJhcHxkZU8gEZaS7BbfhP+vNmLeraUrk"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.2-next-1598029281-d07b6b5b.0_1598029439410_0.6473316571420389"},"_hasShrinkwrap":false},"2.2.2-next-1598066805-9caf050d.0":{"name":"@xdn/prefetch","version":"2.2.2-next-1598066805-9caf050d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.2-next-1598066805-9caf050d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.2-next-1598066805-9caf050d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FIWmuePlzC4+rpKqQqVpKnk+4VFdBFn/RMkuFtjptv01xcLubjtozvrDzs70p3RxJx6dsrs9uBW1kQmS+QURDQ==","shasum":"ce6dc2556135f87357099303eb6ee1da7d93c092","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.2-next-1598066805-9caf050d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQJD9CRA9TVsSAnZWagAAObgQAJXkwykwwzMWj5eNuUde\n4TdxIYAQXmdg5x1OWdwaMdj9MCC8fRpdOX/SySrSpV3TLxUVcLQxksobfZ0s\n4kUpN+vBMT9A+F5DCM9+Za0lVmAndnZNB5UppwbVMc7LPpy5TGaEFWdK4KSe\nHpsIth7hdGHnO8xGmu9bVmUR7ySFL80uJOxGQe2LFa3MAyaJOUzxdsxub+hl\nPlP0kVK9pNx1z9+3ktV73K1hZ1ezgdVgF1g7uJyga53fAH2E8Zx0rd7eTM2x\nY5JqSbsXzFPfMcxlBoiSTYCFAI8HJaoui5y4Oi+ACj0J/SHaxdRm8FO6jqz1\naKsQK3c3rTSEdyNq5Fd7s+NBpZ0Qn+7W4yrIVaxOnqXp2HJCnYEZeV3iPdqj\nKYDq0D0GsKBQMbdM+qJxqzSBWuSqoEOeotbanr9Vf1FH+bR6U47Hf9KnOuz/\nSEmrtCl5V1VJ5X6NpjYrGdokDZDxVOKwDjLR2G/9bnLF47hKoCcK8FGND/u2\nC5enDcL1ArlxMfVGW3/QYCDYvaHDj8GDfF+VaP/EQzBR7WMS81WqJJVwDHts\n/iPWT/hxFwdAeoaU0+2sPeLO8IDkDf2Q/p1CygKtwtt7m4fqR9zYVeIQcXmd\n5Moq3iK9yOqSeBv9TyVuL3jNEZIKN+OaWDY0Aqvy/ERPwURora7UT0SJC9by\noBrY\r\n=ItYh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6fLJ/MD4E3zHPl0S2P/Gya87jjYRkP9ALR6OcR8Xb7AiAtU43+5YupsvMFY9zfJt3IbzdQQ2oxXIVqYsSnwzMLrg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.2-next-1598066805-9caf050d.0_1598066941012_0.48311908906167544"},"_hasShrinkwrap":false},"2.2.2-next-1598078104-ab598e0d.0":{"name":"@xdn/prefetch","version":"2.2.2-next-1598078104-ab598e0d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.2-next-1598078104-ab598e0d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.2-next-1598078104-ab598e0d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FpnoiGJgKFz5NQP2y7oDkfGrYFVoYZinjrcoOU6HQwZhjWVizJu04usvXx1Umjlp8CFWosH96yAq9qAMwFZVXw==","shasum":"610848d737ce0044118e6ee890baab4fba23f165","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.2-next-1598078104-ab598e0d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQL04CRA9TVsSAnZWagAAgoUP/3OPsh3l6kvAr6GEjx9G\nceDkgSdxyzVehRURevA8BHHYZ8vdj37rXvzCgCyWP9cX5fuMHmiyFgaspkmQ\nX0CTKlzX60OgjhXnDmbGCXzxSoE/Hf/rBTr7LLOzSd7fSbbyYOCk7BI0BMGp\njTwaJjhtzBjzykPdfS6EUNL6XmNBtAJeZCv1LE69Ken72/BhHo0d/Ro7ebr7\nq7wLMKZHDmdejbfHfKIrdEBRPS5rfmS/fVwwC531GcpLg2JIE4zhtcQ5R5BF\npV//GdsBAO53aLB1BrJeSwWGtPVW0t259TLlVPAn6gksWhWkHODgtvnfa/O9\nQxvK+QuhO4HclBuhCE10242TiEu1esoCUk5hqbqv0VczOOFCHU3CKEfx0Hhx\nqfdfJqHMcXRa0gzuLspaReW1LKW8R5Nh9G5RyaV+VtF2C7Z23QgYE2wLbN/Y\nlCe9R6mVpzhjDFcpGssCGR3nU0M9C+dAtozHpou17xSt3xgJXiI8vq3g8gxj\nsovuwOtbWXdyRERiyabyaTcOz7Wa75rPxJ7Vurmf0xWJmE+OGyT2ZFUJXL22\nz2dz3KTQGoRhGL+MMaSia/NprihomRhWbhAgwod9LUnIkVp3KX+aPIaFhdA1\nnro/Tcbvh9cPMCv0LBLzp/vsD8YjhPLH1kiY3V2S5iKua51QT1d/kgWFIYuG\nO66S\r\n=wf6Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICMKcWURuY+fz0NOPTf4FRTlH3SlvASnUUGN+7Ne83/BAiEAothjs1LzyrU9AUE8iV8Y3eHfSZTHn/Bk8OkJ9cdS9O4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.2-next-1598078104-ab598e0d.0_1598078264195_0.8205830267763223"},"_hasShrinkwrap":false},"2.2.2-next-1598078717-13d1c8e2.0":{"name":"@xdn/prefetch","version":"2.2.2-next-1598078717-13d1c8e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.2-next-1598078717-13d1c8e2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.2-next-1598078717-13d1c8e2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vmkxxqJJxpmacx3zyBZyEn7JCOTVuMQQex2/xwetRHALfjCx1ulvVnTkDrXrLMUpXzqkNQbwhJD/KpJXTccwGA==","shasum":"19a497c48c2671ffb7656aec58fe14d9b97b9e62","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.2-next-1598078717-13d1c8e2.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQL+OCRA9TVsSAnZWagAAevMP/i1qExnPY0yZtk9e3OFV\nQ3FwLv1lKPc4oKwGF5y/BtRi/tnRBnp1Cmqk+Zft/LLSDU9hkSm6EryAWESZ\nXvvIWIX1J4sYOcQOg1jEJR1/26KJGPB9A204bOtY7FM015iqeN/CA341uRNv\nQy2ojgwUt+QwJ32qkfuSrZm/xDb0HOupVFb+JZ5oKOkisVOeNa4e+dM44yWy\nNu2pFMeUQvEdWDB2vPxO4aknY999aTpH8akKlMExvvcSStKBqIjuowCyY9uq\n/Oz0uwo3jiwqdqLjxB5dAiHYc2J3pWH+qZWwKlb6dlR8bzDPcYVj1LQuRcBy\n4qLPMV9KzTJ1aYWMuclkLSbqjSvcZsRuoZQrGDP0x8HNdvXBh6JT4W1IOAXN\n7M2fj2HkMEgdXS5S+mAzho0YQgJ2nbH0muVEt3m8fJ1apw4b+QTEkRLrm+B0\ny/lUQ3v7XSIVaqMbj7PiGI0Bg09nKkVEm2+6YbUJiQXdG0zKnTIETh8kHJqg\nwbidOEVlMnTsVgQEwsvuBbbXtvDokmipR9WZAbZ4YrxucUquIZoIyeeTVrvr\n7tbVo8tu3t8UTm8OFYQug0QFNMfxppZK9UjqEGr6L5FvGJTPJnp2eJicA8au\nE0Z3LGElY+Rp0bACmlsdIohddNnE1H2YvBu6Cn+W8XS23nPwIIbJng6gZMLx\nXgpO\r\n=jc6G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFQC+uOM/nQCexUFxThTfptJbCoZuq2HtNUOalm59kDAiEA552uJueZ5jI2Z7uKLWiJhzZmckHMPc7lwDicXCArPGE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.2-next-1598078717-13d1c8e2.0_1598078862219_0.189204055668458"},"_hasShrinkwrap":false},"2.2.2-next-1598079919-7917afbe.0":{"name":"@xdn/prefetch","version":"2.2.2-next-1598079919-7917afbe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.2-next-1598079919-7917afbe.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.2-next-1598079919-7917afbe.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BxQzRCZDYpDyvpgWSTGk6d7bFCIPPKkuElTjIiARjZOOYJsapu6aQbNxIkOIVEpFdKBGV6e0NaGzMN+2e0eg3Q==","shasum":"0496a179810b767f5a0784740ee657837e01c51c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.2-next-1598079919-7917afbe.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQMROCRA9TVsSAnZWagAAkVUP/19HeYsDkx1kNZhhwgW/\nrrGuhvDb+rO/Mkm0kzCEdBQo+Q7qRHLIg+mVaiAVUyVPWk3eTMSn8Nv1KSTX\nyJuLCNUyDEnSNOGJa8lDeY0ExcrtH+W88IsqbW7UL8dAEBdLcBgbsiTpDlf8\nDiNoRTEB64BtBwgt6Lf9+xUkNnvNcXI5fjCaLRcO8yo4inCyiXXmfR4h4dBk\nJR6Yo/4FizLNfwzhcNJPi7yAGFQOU8AJYNNw4WpxNzZ5AFitok+qZxYny8KH\nyGquKSZOK4P/xPjs2dDBL857WOwVXQRRg8/ng+0C8IPM+uhV94RKjX5f2TtC\nAonriwEi+g9lRHc9qYH6vFi75B25wYoPPp0tN7gqXyYYzjBpkLMIHmFdsQNn\nNkmLn4ULT+04PoNGt4oRLCWuuS0VxhdTotQrys4i80sPq5RwB3sV6v6ZfsOB\nj/pdun7LmHT6P/mPH0rZLs2e3jU24VJy3W+Elpn/kqHF2v0p0hCK+x6/Yd7M\nixeKTb0F03WXt8DUAZX9juey1XzQUTHzs3aXRLKQvR/mf5UyRq7fFJKIXGnq\nzilbzbQYTt5vWKPb8HlcklyK/nDGoEiyiX57d0faCzNIHrJEznvwU7frm5oJ\nciJvRj5HmzbV4yiH1m305K4Rs9H7LzFxen0FysrNyEOnrCHLBHzLfpe6/JEH\n59kP\r\n=vGZ4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDG/XN8QB99YPTgiOYOB6f9IWwHyAIppjticQsOfMMRLgIgEvqRcUqcqBh5egujzpfBRqG9IsDOxMLX1sFs2zUiv2k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.2-next-1598079919-7917afbe.0_1598080078467_0.17663039807040026"},"_hasShrinkwrap":false},"2.2.2-next-1598105364-87d59521.0":{"name":"@xdn/prefetch","version":"2.2.2-next-1598105364-87d59521.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.2-next-1598105364-87d59521.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.2.2-next-1598105364-87d59521.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-fglQHC3xy5t40oTzoU9803MDuXaPJDvcbzMS4uIJt3WbN+i0LtxvB9a1AweWeHy0XinylsT9Uxfo3iA8zTuykA==","shasum":"b7c90c3d999c4ae5f9616748ad4545db7b549d95","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.2-next-1598105364-87d59521.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQSepCRA9TVsSAnZWagAAv0gP/3jwR7eHRSlAyIyo2MgA\n3cwLg0duNbf46MY/xbNOeEW2GzegNaGBu+fx2eF1FHNlRkPQnk04iwJZIcLG\nMS96821Qbi7daaXQSw9zN2DwHAhM0BKQy5+i+zEvjt3uTDDJJrbl8+NWNlmh\nF13WASYPdpH9Ff8CnWXeBM/Jgx8WeZDCyuywYIyvMmHhgk6GrgYiPpAGbmN9\n4yxcotxZqPJn7HL5aaC2uDFDBiPhw8zPFKNi9zNbj+QmSh1rPQIvzkWGN0ry\nnUW92fstMI+k+5JhCnwxF3HwEg+j1QfxpmCAtVP9et4RU+t9hhhM+WHkCVCa\nEmMv/ddYjJeMdqfJuADN/nEYqDU4RLO4YrlVjrhYTStYoPXzoOcgaIQErL+d\nb/CH2QpYqMp6K9WzB+6arOlVwFmgB30rkC3G4qLUA+SH5vOxCWnCoCWtAulj\nTDluhYp7or2h2cxlZXSDS/0nnE3fa2pV7HiZJWK1rjTQsAUb6vyzGZqpVvLh\nq0e1HVYzl2BRnupaNMeh/YypbdMRtjDBM/gqtUaAHtF04X7cPKpRdOBQFxVK\njbsPFh59t+OZ0BNq4TDscFhJSMbRlQbzoaRm8vi7IvqZjRS1arVGQ2OCbSx+\n4FZC48alQjfula3KTh5xUYw/LSS/QHkIyXaOdQjkmGX5s4x042LV3CBT6e3W\nihGt\r\n=aiO4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAjseqqXMEdLlxZCDz5rfTNqM1fVHqEhJRtPFI6+/o67AiEA2LUVW7rZhM9JOLnNCam0vaGCOrf75Hk42MtU56mLRaY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.2-next-1598105364-87d59521.0_1598105513320_0.7551941156372761"},"_hasShrinkwrap":false},"2.2.1":{"name":"@xdn/prefetch","version":"2.2.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.2.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.2.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-r2/4Tz1mQDXpwLO7o1zyZfl0aHveRVXxeHZRPzmVZIsnDhIvx2VojKuYZqujyn5LL1TX1J8LJzAIzRbBF4hAig==","shasum":"432b00c76942f5545680ec7ddcf5080755060b66","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.2.1.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQXhiCRA9TVsSAnZWagAAJVkP/21oGnyxaoipl7WYVJYH\n38UeiayFh33XdbKvjd6fKlqPbTT8NTVbZCTVHgLjQdoiqJEmPEQv9SNDbhge\nIbMzOgom80n/fXiJ17ZnkIN62Jx+m7nrsFk0iGX8YsnjwGsd/OU7KTiI5qHL\naOZ9jeiYbgApx42/EAFkyJTUc8jR2RCKtdTlgOaoL8hOcQ2o88YBxdkgv4yU\nGTs0+ju6BB7ifG+ALoXBG6QOXArGHTLLxhFNrLIH7I6F2+BNY0tyJ2i0w0U7\nirsQOHMwz7wOrks/eol5JqTNS2y58li3Jy/irplFgZVBx2m4OTQ6dFsOR8a5\ntRwbiXAzM7GXGR024ln/qJSMTY7dFEm8Mna52PsqQspOAq+HbDltMW5t08Kl\n4GhU8gVGCvRdYIy/SlpAKNcRyQfo9BjVcHMCjtr/ev5A4s0cnmKZQyrAa5Ng\nB2XVa7ZL6ckTYx35xPzibTGZhhZmzAvKRcnDGVcTA7/T4cHD2d+NujPvvf9X\n5elsb8tbPcvOKx7gbLQdcsNHwmoBxivNGa8mVXjjifXDKz+RyRVCdG/fpHHz\n05sBJILXOKOlTgbhSuHsGesc8tvMQcbAd3TwXh3pLoBlTE1U0FgxYwCnySwr\n5wnop4DepxOHyxN0vh/SPwc/g6+YHX1NNQwi3wUvWNaqTS8v1b2h7aH5YXas\nXMCC\r\n=Pwd6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFHe92cd6pdwv0Fu+a8fPGe6OhpduhJMtbQdfZPT/i4HAiEA/fC8CURU1k+NaYAVO3xGMm3V3k58wnog7psDBEyecHg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.2.1_1598126178255_0.03690208793200633"},"_hasShrinkwrap":false},"2.3.1-next-1598129360-966fa6fe.0":{"name":"@xdn/prefetch","version":"2.3.1-next-1598129360-966fa6fe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.1-next-1598129360-966fa6fe.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.1-next-1598129360-966fa6fe.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-QVKb2DjLh/qBUvHGMviKUUzHN02ypu1vAOI8CwUx3HPkmg97fiVA7waPDsziJC+cRvBCZhfcqd+ib/W39lfi4w==","shasum":"606877ea9c558a67dc4261cc7357227550779ac1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.1-next-1598129360-966fa6fe.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQYVWCRA9TVsSAnZWagAA4roQAILDgUkQ8jqDnW4U/CHD\ncbXyt7KhrLr0p63IZwnkldQ6Z1ADqkOhyIMytqrtK6uM20iBET0/DIQgfwiC\nC9gf4JyP0ykyf8JSIqgbkWgK6RNsBbYMMCgtjccbgY1w5r8Q6jZKRcjSTEti\ne06EzrQQngzCYL+6cqid7rmZTWfbs/J0SoCbPfGrDLI/jPWe9rCTBKxg5kYx\nl/XZ0XrdYivTgX9LiFOLy70bMbPzEkp9Etsa0MTRicabOQozxtXHLdCOUCOT\nejgi9ADQ6JqJEAMUTQUEkbkAFktgLdFfq1w6ExzNb3jyr6p2BZPqOaYd3+Wp\namOV4CjcggC4XHjnYggEp7BeUoskLFBhQshVaCwh/t8kTTaXMVmFX3iTB0dL\nVEOhInzM/B7iEFrM6K4Kq6XvlcSUjHH6DtbQTrRkAL5iQBZChn2pWP0PlWmW\n1qOOP8Bpl+1ZmecgR4FaXMs5lj2d6j73SCIkCVkA4csDoMB6CBZ9mzTZfpoW\nQCgiPsSVP1WLpC4cKu8UY2YEyEtUT1XdtZEQREnpyPCWVWlUXi8K7ZQgya6N\nqwtKabPYcUWP8aDQ4Bx2iUM++yFo3UkGStSkn66V5Bo+1l0boG+v7Kspmw1a\nX3FL34uhao0e8HdYOyYQhkHfd2YMc+5tkChq5kqbSxmg6UDqVZRVRfDWbq6f\nPH8z\r\n=8kSx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbU6Fj8roSUMoM/1PJactA4QOhYGRThBe9DbNz069qTwIgT2W8n5/odLR1nJLf6+VxsZ1LCjct7JMpPxVPivezTME="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.1-next-1598129360-966fa6fe.0_1598129494323_0.1268254236124804"},"_hasShrinkwrap":false},"2.3.2-next-1598130821-4470b23c.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598130821-4470b23c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598130821-4470b23c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598130821-4470b23c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t9jyT72KdCN0Juyq8WDPinLd0gi5hQaI5bz3mRCy/UOB6mztqDcJ6/LpZypEBV9nUf3ememkicInGZfGLJZLMA==","shasum":"42ff0049d7f9cee6fef4079022c903fd70a650ba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598130821-4470b23c.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQYsECRA9TVsSAnZWagAAqTYP/0JXxaH0CW46bMIFVAIh\nhJaxZlIFAj+Uos9xw8o8f7Aj/MzUU/6Q6wrDqMU2m06nSKI0BqILY4+ojs44\nNQ55i+Vt+n2pcfvgZcjFWyYge6W0TpaMZNEdK3TZPxGNWOuSwnemPV5nPfsD\nCmHug/Q/LGbgQXsoTZoFtM4XW5KyDUfaTVub452BV14cCKLN55k/sopvdGjA\nyQGgOJSYxLL9P5S39yXTxF6udYC2C9mHHxziZ5r5Nfz72XFwCNU8tX84DR+/\nzjXnOMAJmxmUtDI97d0v/RHpvZC+DOreks+gOXdFa5sl5NBUBE8btPRXwhE3\nEuSBa2USqWZJv92QdhRzVlrS03YbghWfrAbMCO2+0AeTrbMyUQOA67aGzqx6\nHyIH9z1s7QfGHL/rRlPADyLDs3XLTYp1QVnEkWpLlDc3sgQ34Wc0Lh2ESYoV\ne0NSj0/6HuYXESYAOVTCNDRqP42ASlxqiK58gw9g/7Q8+yQMZ5mWoks3IUe+\nFCT9i4kqCN+GG3MoUUBkIXJ1rJ5UvB6sjU5Dh4UlQJkEs0e8Q/UO0Eh4SP72\n/rx2ggfXEA/MtCXTlajeA43edgxdvzX4Pd4kPzvaGO1co0DwaxH8OsdCwhLI\nVYNkEITzbwFJjLd9QRRY9J+lOIbSPsoQ0Wtn7Ng2DUQTypbUEb4Ky372uRM4\ng+bi\r\n=ZEHP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFOLJy/ryp0uaKspfXl+w/75fnUz/7WYmDj8nvuMJOSCAiBljLrDc+WxdI//vnEyGphdDG6w7rFuVPo2u1Z6r7clZg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598130821-4470b23c.0_1598130947624_0.9925683721912351"},"_hasShrinkwrap":false},"2.3.2-next-1598133017-4470b23c.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598133017-4470b23c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598133017-4470b23c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598133017-4470b23c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-bUslVvjF9rP6eWB/3G95t/fORE2lOzc/rj7WT3EScT4W1YJWJOr/RSXN0TxWTH/WRfeef1TqTBa+3Mpwlgh6ZQ==","shasum":"f0872c1ade1d04a6e34437f7a48416b4bf3ee82d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598133017-4470b23c.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQZOYCRA9TVsSAnZWagAAKVcQAKI513i5Vlz5m/6dhfQU\nJUBlUDnLk7geHfrKkpPEIzQkrNYemESfLSAbgsqZ/25EXIp//kyywmr6/wzN\nGPk7wjvWyjuswm56+s8qq/AXhcHmnv0sPJan3/GYc+n/tC5fPVAVEIQ8m+yT\nvhYuwaj1b2hbmnpazfgmtBG+gLs5/JEVRtsrqC01Gfb2PfPt4ES3rWcs/aeJ\nfdi0eUs3Pki4EHYBFd55GkSrP/ZyEec3shtnw7vmgE/ayBzP6YITZOJDl20/\nBGbwHp9688dZFJVc9N4uwhFDIkZWeUtvUypKftGH9bTqdJcvlAznUZWm3j2A\nCuyOvLa66qoKjQMgaF1yK/1WfxgyJcGL8glHJKJEbyI96xz9TynQOHkxR56U\nXjKBNnzzaRq1nwx5N0zwP5XTFHdd4jGvh8FRddkz+YiT2gVTxVKfxhI09xAu\nD3E7IrAftHqwQqthY/xcf2KS56UzaRFHPysqMuc2zbFagCQverIXVCU8OBOL\n7kStp7V0OBp3fvQwhJUMYhHMuSiQB5XLuqT5C0ALZIyW5w4htRd6WLl0GSeO\nQj8D8n3FvR7p2THOzqP5lHuNSvjxbzr1BLqItbEDiEOT6sdeobmhU3yxebKa\n0Li3NbhXQmMzdjY1XskwwMMkFKruqv2LXGBW6lMVL3Hxks9DIWdpqUFM6MVq\n5Ot0\r\n=7zR4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAxQuxH0ye6aDaBwYVh78QW+TP5aTBG66BpJhNbtu1ArAiEArPODNhoYCJUwk1Rg4pefV49jnBKQFCRG9K2wba6p7OQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598133017-4470b23c.0_1598133144345_0.42733988880013407"},"_hasShrinkwrap":false},"2.3.1":{"name":"@xdn/prefetch","version":"2.3.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.3.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Hnsk4KbzszvWvZZesFkFP4h7Xna7vusdak7HkE/u9nt3WOjJ2U+pmv33EZ6Wdz7cAwgWUcBcpCZPSqnVDbJVzw==","shasum":"0a06c97a3ec5edf8cbac0fbe099d69b1cc12f0cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.1.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQc1kCRA9TVsSAnZWagAAejQP/R5hSgl9gXRMr3874evM\nK2qM+Odf0todg3md221nThxYd9AmwJX9QVljBhsFXodyM9twpiE/Wo64fcHa\nbZbKlYnG4SOgGCaZdvGm7b+kZLEyFTJbptH0trQVAOm9EucNpk9TwIjixYX9\nVpSN0mCjz1vc6QTDomOI98PjdCRFgiB6tfCzFXyhDe9vk79r7l0pmRUOD9PG\nCsmc92klYWLHbvLzqCSl1oyrg+FvGVgJPSdxbcZvU8fJfkbO3wRZJ2lNhXBz\njhbtSQtt9dJP8rYbrdzgWfl29pThWt9F3n4o7NyUZTv1TzhQazdUHb7XGl8W\nSu+3+HWT1FEiwy10bSVdT1up9/AOTLUXD2TZEIMdJVK0k7nqbCawbaku7K1z\nni9nEEOgrMR1SAs8X9guzAJB6QY2BJVLyBC9mrL8CiCvXoatCiTLyFwTR2Rq\nocJWQTSSl6B+RdMnMoRef6QfYT6IJ4HrSAs2YQG0lFXqVBee/MiM6CAYyhQI\nntW0H9oHOBekJTXoVZ2V2/pUXio106w9P3QH7d6zmgLCaefBI92CTFYFY8dt\nZt3HlXJQsGrp1TVkjptQHP1MzGbLKXYQtVb0emubaR+V6q2vMKrb19g/yGMD\nHtHm2oAI1HwXa5dgcZmEVglZoFWcAUGCg1ilxvqo43GHNmbmK08EEMfTVIZZ\n0iEJ\r\n=t3Yp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHfzo3bKXrs7OAt43jfx8QwLHeSYGXKCl+MnurgO2JP4AiATgeKBJfBjRex+c3YRcDZUQfzgwuO5sHoI+x1qlQvZLA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.1_1598147940157_0.973634473001384"},"_hasShrinkwrap":false},"2.3.2-next-1598265120-42473c34.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598265120-42473c34.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598265120-42473c34.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598265120-42473c34.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MMPNL/5k2Y1OGFbZIK8V6T+CNRz0CUiTk0N/BCzPVTvjWFcKn1hkt6ymygtes/HTgqW+EQWiOhqUdfblZVNj3w==","shasum":"29a63aa61b1740ef33d38c3b1f89495d2df92bcb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598265120-42473c34.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ5evCRA9TVsSAnZWagAArFEP/1goSwTdkb3pa2+HFNIs\nrBij7cI5LrSVbcCr9achb6ns/fJgEF61d9U3XG6UKTEwecD6E7SV2ivwkxmN\n+7L4s0xdW6+j/9pqdcXEhB4FjNofqwZtrjVVYQfLl2Mzy+vIaSbBBiHSnE8a\neAP7FiaxUi8MyMc3Zwiep5vgBTxAqSwgCrY6SNegLAieSz8ldIKOQqR4N50o\nnAELYBdIwGhiPZuCoj75XXfH/uuyV2O/elyMppA/kIV4gHAP6gEaQKOuAGzk\nCG2N5JIysBTMT6gQ6eNWVJQglZtvtYIRDQrx8BbeV0eloehVNjiDatOjVCBr\nWoSsU+pTWhkqjDCQ9iqkuRdABKr7XBuWK5S2T2Tjy803abYGvsgWg2RIsj3u\nqmYONEYpIHunRDFI8qKH0sSOETIosVoiZX/WVkrBcelL+kfevqzgj9SB6brP\nSP1GiAcLOJsb+zMRb++tJdcBtTiZbAWW/kYS94S+NxgXmc2/DnB3z8OTHuR3\nA7Cd594YMtk5pkM8I6BFfhFWTQb2UdP7+CGv4D2bT0xltQDj8n4vuA1IYa5s\nW1zceSvYGtaIzW+T6Q6QAtkEI4WkRrJtmMbDJdezbdQHNFWN+/jajOdp2gOR\nE6W1BDcSGSrnkocpflOg++mdKGHsc4V82f9f3nEIRyOpiNmDGJ3kutGsjhpf\nxwR5\r\n=Rl6l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFKKzHQXLNN33+pMwdCfADKp21rLTMv4fwlkxsh+0YHjAiEAgNTvVaGpGj62ztusQ+qWJgzOEMXTuWKxsN6VroEnq4w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598265120-42473c34.0_1598265262873_0.4741624021768307"},"_hasShrinkwrap":false},"1.47.1-next-1598265422-bb0cb955.0":{"name":"@xdn/prefetch","version":"1.47.1-next-1598265422-bb0cb955.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.47.1-next-1598265422-bb0cb955.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tMWSSs69aTXSdGq3yXExTCfqduY06vJBOQvaTOt/DS+25VGbt7Vvfp36v9vwHR9cJeC4CaWXPNnGXuEq/ayeng==","shasum":"ff1e8be1302b7a50db291cde2df2c4f091225785","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.47.1-next-1598265422-bb0cb955.0.tgz","fileCount":52,"unpackedSize":83566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ5qJCRA9TVsSAnZWagAABNMQAI8u+ekK6gtvrroeJ0pF\nHVTVW/gOJH4rOUfxYmFBI8pMyzhHuKiYdw9uexV2cPCk521GYY24Db0bJNtI\nHOtc1k6z8M7hSew1W/3XvEM9kdjzjw1emUPCYFGgmhd4zh3PS44kNu1dbnJA\nLKBzAHltkIHOt2oE7vmLTIqVEfMQZG4TD9syb8kSjeR63JQ0Bs36WhLUVDDB\nx/pFd7pxcsjEBmOUauVS51AF94HrX9446pXbzjSkk6IAYi1HJwBGdSj358Gy\ncVvNqnkY/kEOE2ci/m89fX/ef8/vsHokdw7SZuP1xjvCCygRJLiEyvD6Adzv\n++JeCpTBig/PHkXTVVHThgO11P71/6LhblSW6xizmfOT8JwRsEJ9ibh7D1Nk\nNn1ImZp1G8lOs0UDJCABzNay6xI+4cAJnvDuGEKkEOmwLNtE91ASuu2X0oye\nB/KIcwpcl2twaMG93faybNs+Gr8zHa1RljwN+qRmR4GiqXqaRBVmH/QGQhTr\nAugaoBXfg6s9wJCLjvG2igxuLQWqNRSfXWtzq8bmTi/ZtQqTNAWOjaRV/3Gn\niwmBqVJefLe2RcJ6LneC5cPBcfBYqeXnUML9Nf5ZnoqI90c5QJcCHcnwBId0\nWlmSmrS2YEfQgEHoIZM/qd4j3jL4ZIyfmJA1B241bitLqVrOqmZGvOh68IJh\nbrrA\r\n=4I+U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGqAhJSWQDXEGaSyftvpfelDIzBBQlAYx22W/j/KVSDsAiEA8yhDcQwWDNmsx/Tt0Rewm7Q7z/NyQSA9bW4uYXvJiHU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.47.1-next-1598265422-bb0cb955.0_1598265993434_0.04769722928233944"},"_hasShrinkwrap":false},"1.47.1-next-1598265868-5aebadbd.0":{"name":"@xdn/prefetch","version":"1.47.1-next-1598265868-5aebadbd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.47.1-next-1598265868-5aebadbd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-A6mfe3Dc5RAw8/hUxcERtXnmy7ZinDIJz/Uve7/lGltquvi1s+uybjfg0MWQnfY9XCY4/COpkrRjd3wMxUntjA==","shasum":"8a2af622f9e50bd7de285ccdee06caf40b35ebaa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.47.1-next-1598265868-5aebadbd.0.tgz","fileCount":52,"unpackedSize":83566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ5xWCRA9TVsSAnZWagAABpgQAJ1aA6YJ0oT2sopNJdBa\n24C2tYFJM8drnJwh9zXRBvktFBuNGH2GyqU8wnGrPqvU3Zq6VwcNyDCKibRR\ns/tI83RdjLApXWpCZdceqiBnwYuIQTNH0X06T9Bz8x+Av9PkCKFkf2BzouhJ\n3F5qqs27uQl/3T45CB2waj5Mfk6yG92kcolUdAQuxx+WE0GtBQg9ctZZQ8OQ\npk7co35K7mhLdHQIiuj0fEwqKfhqHpRemCHyvZIDhV9SXwXYxNWfXam+ZlZy\n+gfeoYB0IG/yrw8CAcftMeOY9HfYDQxMJL4egLzOliVRPPoKtrYuKGf5h0TQ\nHtEUPXU/QWnJPMdYd9yDnXCxb2zJdDSDnfla4Wt3cjz0F6gOA/oMM3PIOELj\n2sTj6i6JH9I8+FHEE3Fe8dtrN4rUTwnmvX53xGcNg5tUNlk5O8xxn1x5TLB5\nCElh1ximhFU4LlYqe/hAzkNsK3Vb3QMvnkGUlgoJTKU3Jq725jvI4dWnumg9\nHEgoOgKmLFE+akYkmtI6k184SOkhOgVmM1+gkVRkTQyro6/nApNYNxCaeU0F\ncdrPPn4IGP3M4CGZjS8e4VZSR/qrCk7a2TC/INJLhm/ASqakZAdhOn/zWOmu\n6pFaI6brbwc5cy2gxCM2m98LtLo1OfoSvLT1atMCb2NlJ3yqLOx/7Mr1I2zB\ntzjh\r\n=2VQn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFXVT+ySbWkRaJl4UVUYrAutMSLA9SloihXhx8nGOLS3AiEAhihVfT2xdraQRdGyKaYF9y4xT8LJjAdZgLM24lSgc+E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.47.1-next-1598265868-5aebadbd.0_1598266453622_0.22894475579494866"},"_hasShrinkwrap":false},"2.3.2-next-1598267391-fbcb9df5.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598267391-fbcb9df5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598267391-fbcb9df5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598267391-fbcb9df5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/AXxJFFb/aOkYQTljwPm5SHmyg+n/70HIai6Yds7obP6I6rZLdf5Sdm1YIYKCGGYKTHSEmenMq3yQ7lQPXVwjQ==","shasum":"9f908b017fd2abad6bcb3b810aee7af2f436e773","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598267391-fbcb9df5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ6CXCRA9TVsSAnZWagAAtM8P/RAORlWUI2qaE3Id8xyX\nABL4Ntvj8dd3QA7Zb+Y+aMwsoupdMMPDjUrgnVR2uvJWm3co6QM1x+aLXuhQ\nui46puOs/i3ip1eKqCIbYJFcLJ8l10YrtEZcjnFqUgXQAPL8NozVcUtT7eaZ\nGoS2QhDBoWS1KxqdRHzazVU7w9fuLcufI7D5uaO+2p98hfmJigvCxyAFz68p\n1e7/8Q67r2yQqv4qGMkSocWwPzAdfOLH/9FNHJCStxGgTIibIrqpBewIYChu\nzU9jerqP/oPRJAsU7juGB92k3gkVrml2T0XT16FsRXoe+wEIB9PeKOTcCOro\nJtAaPuaAODGSqj8+E1upmOEzyPNEakpGLIpsDb8adQp75VjHWgY5txVxYZK2\nYtvCGMRP1Gcv7mtVE/GUh1wp1tq4r4+z3bX6sGnvLCzN9KLHMVU64kAjxGRo\n+aOYP9/ENdxSIkTOCU7Ctzf5IY5eMHm0a0limOfIegocdTf/7v1ud0fOVw+H\n4kUfQJ2r9UvQT7VXCbUi9+XySp8JxqhR1lUlWZY5BxfY6uGifA2GWiSe3S1q\nytVGu5l0iuvTYfOz5t/7y+3RjPcKix6rSzDWFtKHBE4Gj7GVjpxjtPX32EuU\naHI/L1k1i0c1eR5JVnrlEwO8riff0AjfzXvr8JjfHnTEfkz2Ztwa+qPYHZpH\nsjAD\r\n=9IdJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCWIDrk5ZW0yNG2nWeYsTVv3EunBxKQaQHOK439784cAIhAOzQ6anVonBLelevO7IDSx8jV+Df3ALx5cOZf5S1rhWg"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598267391-fbcb9df5.0_1598267542584_0.38094882563554733"},"_hasShrinkwrap":false},"1.48.1-next-1598268302-46367a13.0":{"name":"@xdn/prefetch","version":"1.48.1-next-1598268302-46367a13.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.48.1-next-1598268302-46367a13.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-w2cEZkrRIg6lSLQmcwnoEcq/kGTzCG5Ow1jNDKeFiqIrkvug7s4D2c9I8yvMMlyBJUdkK1szKghjTPiX5qgQjA==","shasum":"d87e273d424e38667f19e27ed378ddff9ba91967","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.48.1-next-1598268302-46367a13.0.tgz","fileCount":52,"unpackedSize":83566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ6XqCRA9TVsSAnZWagAA0J8QAIZD3gvhEBJhQST+i9pJ\n4MZ38PC+yD1hfLKoTOL0veK6LGYWBPpC7YBsAf4r9bBRzR0NTfiD6tmfkqKa\ncOpeWjsmM4BKUGH3xX3qsPbNXbOSDD9RczsL5P60EmWakoGv5toIfoojZYbM\n9WRO5BdqzcrtDTXEPZyIEitWvNZ9bkJHjnS4l1h4NaP+njrxnyExcZRW6inv\nBtom4LReiWAylMJeK0/WQAWEZP+dtz7eCbjghdvMRk3IF5GdbSbddghQ3SDk\nXOW+HiTHX7CF/lgP7/1WFqBhZCpejgN0zPzGPczxAv7uZToahspHwTnAuPF8\naF/uWYZuq7iUV/8wgQJgJemI5VCXPDfvvjrtxhr3dgxdmqr1LiJxcO/2kcce\nz6EOANQX5ntHAq79LMqPZ/BRrx4P0VUbuwn4BGh5hxS9Dx6OK7QwQtG7CMRp\n+rAwQVDOVy1LTvMfp2JK0PyY5R1Pl3xWtS1Rrw2Fo1TqRl3YBCRkvAzUdkGD\n4CgKTuwlncX5f2evHZBh9EYio6K1whWBLCXFDOaksF+PvzYNfeRRPyieZdFg\nv3ncKeUbUJWW1PO9wf6Qk5FOiwOFKvx5BI0KWIyFUrlBanTPzyAwW+/re2Cp\nLv5HRWwerI5Ys+cTBJ6J7t3em1cHDuDjmgL8DbZ6O8Qvc+AKWdeba5BiS/SS\n9eQ6\r\n=AnO2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEqlhm8z2khtfxxPHuVXF4lb9zSOQvy1686tWykNRZ9QIgJ0FzL7YMRl1eJAVBwfefmlJqtGPskVarmrBHgCGu6BA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.48.1-next-1598268302-46367a13.0_1598268905889_0.35637628308729297"},"_hasShrinkwrap":false},"1.48.0":{"name":"@xdn/prefetch","version":"1.48.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.48.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rhS2vY7ORR+ZbGcxGWOHYDBI/V1+UqIk7WcUmSlDx1i0QyeDYHJi5oySj/BhQ8XK19HW40OADjmbnYO+rje72g==","shasum":"386940871e6df387cf80ad1667d951168f206e09","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.48.0.tgz","fileCount":52,"unpackedSize":83539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ6hJCRA9TVsSAnZWagAAthQP+wfnlOr5cniQ2+j4XZe+\nquxgR4Ao5hb6RpRWoYDs9hOLkcXhbjr6RB0nlhxd+r+en7RAiJmr/Qak4QHP\nRXcgc1cbGeWdXFYAAe8tshmsmWTxMGDy/s1o5s4UUWu288G7eZJF6x8jQwn5\ngm5fSW07G/F81U5kIRZ3NVsoyHLvBMyAlTg9KzCVECQ5YaRKVgZFTrn7cNxD\n0sO+l2jjfo7s9uxhtLsS2f5IlPoBEc3f37VaYFJuoXYDorGYp3UTEi35yy34\nxWaCG906e031UEkfGXUQ3QWn/TW3BnWl315odRDdNpv0Gc8i3fg+/vzQ0ahm\naidjVOak/nfNjpFi+5X6eZSscZlBh6pFvkGVhBZM91qZxQyWir9hCSOZiPa6\nLgyP5w0y78LkPitslDTHeIEF8XYo0OAgVWD12taqGTUZFn8MhcNInEAXoInw\nLiR22CdqHl294gihapi70vpdjGqkHPwR/x57kJT5dmXGams2Q2ovDLU1HT1f\nbKUXZTupR14flcOUvDdIOqZw0vQCbRJEnj/j4+fkk863gG9AKD7m61uqxjth\naZ/8JrUJbBqRj0VXHoV6/treGVjpbLakIgnx2PC3qzU2BMv5CZTiomnWbF6t\nT5rUApS2/oKgrD7gFq5RHGP3Q/pCla6N9ftfxwixsAQCfTm0/zbpEWHsxKuA\nJVZ2\r\n=Gdce\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL5ZC2iVX8of9u9/kIMaiy2xfQEeEfG4HfV03a6GJT/AIhAInWDUUQPN/0xlml5Fd9QK6NI5YCt0JSQEvcfSDB1l5/"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.48.0_1598269512587_0.3267622155021439"},"_hasShrinkwrap":false},"2.3.2-next-1598288525-7d6db5a3.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598288525-7d6db5a3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598288525-7d6db5a3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598288525-7d6db5a3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-q9ZuyCU3EDnfznRaoQhedJPnkmOUGHhxIo8yvL8x4aKJVi2a6UC8fXITK197yCGjw/+HGzenke5rIklDOO6SvA==","shasum":"eea3019e3c4ee8044b3f241e1ad66b0931a7bdd6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598288525-7d6db5a3.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ/M1CRA9TVsSAnZWagAAbKAP/1GpCNQckf8hL187m0nC\nrFdWzXUhGKwtwnFAf4SOSO14G6UjJt3/u4+NdNFcRCtLNM9yInjaW1zLRM35\n0vnh5oxfLPe4yVTyhSkjjZxSiy7LCt/Sc2Lbu4K/Y7dCi35B9ZtYlfXKlgju\nDg0fIl2A1PVjVc38nT8Whvnhrm5/x79Ne9OxG1U4HmRhFYwFImzsA+5lg3+R\njYxwxg8tPLILxJe3WlNc5u215NC+PKR3CALcU+VprOVBI4uqkkJQHorYs8xr\npD0VHmrZ2oY0VRrSdzscO3GchU0tIg7uOsLrrW8xEnFLtpjUhF1GzkooMIJ+\nw+6+j7o/Da0XJL/9AOMef6eNJHf2sA5Dw1WYjUQorSDruOVaMPEcQjvNGIG/\nedn8yM6XfuihstLi1pBN//Lt2HUsB4yLCfN9c0geNh1TOQIMnxiai7W5inXT\n8rT89VKx6RDzqpKbvdy2TBR3eJq3wAwBPqVSIdp2ctrcgGJF6O51K4ONgutW\nz2M+fjsTw0fsskVB+jQOXPJZzA2ZgRTfBtAx3ZWeJkZIdtH5mo/Xh1mXhAwZ\nv1IQt10Eu15WrxqWchZwnuc8tSo6QAsDomxlMFSljEiyIA/p4qnhvEmVQDdL\nlyksIW0PxwBwVIqDchANMgpNYtFRnToay7Wmg4jkelO02valkNF8HHXkNNXr\nDPL4\r\n=EPpy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPcyPjzTRY3AHEOKNpo574KNk1VB6xcB2Jq6Y+abWFpAiEAz6Hm1ra9j1c123JWJTduy79XOOQ300Z+fOZ0N6ROHJ0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598288525-7d6db5a3.0_1598288693363_0.3085127190350556"},"_hasShrinkwrap":false},"2.3.2-next-1598311032-8d656c42.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598311032-8d656c42.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598311032-8d656c42.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598311032-8d656c42.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dyJ1vPDd41g4y5uuTvWO2QcX2MXPlN+rOQc18mTIaNhTRyZ5b1c0IGuFt4e8O2AYrgP5s+cJRzil5ZrgTu8KEA==","shasum":"d77b5cd7833d0509a45d917ce5b50b0438cdf504","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598311032-8d656c42.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfREsGCRA9TVsSAnZWagAArDkQAIt/91Doe+INI6F35Vgi\nxd/VnD/rt6m5NQYwxNAa4km4TZ1HjPE3hrGQYt/WRAIItT32tPojKZXKk0Ar\n9kqlsTGuLuuM6+YM7Vj2PpOIaVZG0NDdxwq3wMB1Ym7T62Yx58zCM8NsNZPK\nyQyQ0K3AYJ70sA5C+1MDgSFqRRfK512vVKFpmtJZ6e/O6MzPV9XbqIwrsc86\n+2MHaqpZQAUEOqJeilf/7aHLzV7nExDGVvhLReNgFjVqofUdwOfdxM2ryKBL\nKVyRX6FZ4L7PIh4/kjcAJ1BPgcQTh+006pRzVOuZ5KbW9lr2qS2IHBf5iPC0\nEgUhbp01SdZLlVHtD2tuZLkr14Vvtt3kddv7KKv6XSyVv4bjlRtG2y3YeUup\ng7amMShHqssN+0ereeYB3psDYhx8FYGfjf1NkkpQ3CNdnVuR656BfkYE+u4z\n4gfANlLh1qQv3QpamwfYQzHo2NxAtG7gxl4nopUDbCMVVxpeCipiHGQa7ZxO\nSWPb7xgV9KKe+V6YvwxkOxP12rvmr7gCBnLO1KHQYiJTacm5nm2oDoPQdAg7\nICMA10FdbToGU7Az1ZBAwLgjv++mXCTtjysRaPTTAsis86QtD7CZ0WeoIDzx\n/kFPp4C/OSiLbfbAYa0ju23AySNn74K24TPXmEtf3FrzxZ4bL4uEIibHw5BL\n4gFO\r\n=iL3q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFCmnZ/Q+uKRHRU4ig05goVQWvPQi2Um5lRwGR+cjNbFAiEAxfqqUumgaTvDFpQHHLVA1t5yPp+BZipKTtsQA8S9+bk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598311032-8d656c42.0_1598311174479_0.5447678625036483"},"_hasShrinkwrap":false},"2.3.2-next-1598347523-ed4bfd8a.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598347523-ed4bfd8a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598347523-ed4bfd8a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598347523-ed4bfd8a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sTEC/aYNbLulYvIZTLiiCFE43cSFx0j3Pmo6uij2BRRMKA9Jji4/zWQp2yVTBdUab2luJ9UUqfYWh5hZC9wx6w==","shasum":"1d1056197b1eb1ed501132dc36293b9b96ef6a8f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598347523-ed4bfd8a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRNl/CRA9TVsSAnZWagAADacQAIiuwFafyupMBeisI3sQ\nJvUORL66SGg8eW2Z1L8Fh5muNMmIzvTK8tsqlPwmaWenG2KmVrVZKRKcg8eG\nflPcfr5rOd3+z1e3VGvw5V7XcgAKQfbe7K4S9wvObvlAKSKasUnIBw4DMcbB\n5Ej/C8OVgL2C3fKU40rD05LQxQR5Ys+rd1p9aYT4Iv0ZSsxgnq+zHVH+NJD9\nBxf6XXYaNv/k/lo8LBelZHJ1QC0nOXoPRhKq/3KP7idUkfpbRizjrmrU7mIw\npdmBMf1FjJyfxGfa99+xwBCTOG+nhcuQF6ZcGwXUCAx1r7EeIPNVfquGycKY\nO6DiGQdGlfccQv3JHLMDY2bGtmd2JBM1GgKB0DepqEsTn0ztL1IWklFSYrie\nuIMyuPYwQ+B+ucjAwtZf22eJlHwTEdALkn56ioJR00Oq7dxH8mlbtiPDs81a\ntHcH4Vn4AYGTDQcmj/x+xlnKeJyUq2s81ojn7fOcgh9mObAgcj/JB/ivyFES\n8hr63LE0nU2IH9gLNs7oKIWVVrqohn18vjipL1hn3F3LcGlkfg/O+CF4rhMq\n/DRjcCAjuR0GbB2+lbnZCfRYEigNIirU4zXKupCeYwVznRbNKypAN69sn6e7\n4v/yJ1yb3+r3u4HQS8phOLN5o5ZSYFSlaa8neVX9VM+qp4r9CCtk6KAJX4oi\ncm38\r\n=P3vk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWRfic2tzvSl99WYLiTcHy+jrVdIQ43Z8gv2g7exC34wIgXhP9lTkQ8hj6D/kaL+resehVJod1K8LTagMMRlIOuB4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598347523-ed4bfd8a.0_1598347647022_0.4948892193320056"},"_hasShrinkwrap":false},"2.3.2-next-1598347551-c7779255.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598347551-c7779255.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598347551-c7779255.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598347551-c7779255.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JYMUg/D9MNtVFzomBf/SIUDkhGHVaUbQ2OsAMgUO1Zlpeq0fuEenQ01TPumB+oCHMjduUJNwzO84+2Yd1cr5iQ==","shasum":"4586e80104972bffae78e5a4eba254e9f13a438f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598347551-c7779255.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRNmfCRA9TVsSAnZWagAASTcP/2Wu5QDVOc5w5lpVCcP/\nNRxYjyVlOC/NoMCHgrkKk0Blar/yxrx3XDS8AIchSl0819dV+MnI5Lnluv3n\n+LUHZ6jMLBoZ4BaJFc3HwW2XUIOB7Dwb86QP2evhJKIZCWsr9a5kQDeWcaEV\ntLQvp7ns7H9Nq/a+5b7EtS6TWDpK1PDFdjknNNYKyMLAN1bKdPfOfX7LXAxK\nswSqXScG6zlGlErhekxfzi4WC9OaN3INNir2S7rPtCedMYupg7+60C/bvAB6\nJYskeHKrE0eySHhvsFRmL9/VEH/3D+TfMGpbnbowr7PRXvX3JkehQGt1kqme\n73uqkO4o9H9gOeURjMFitWyPWa9Jz8ok03ARpW7nuLMBV8RKu6fdaKc/2Ix1\nH/21lkn+BsqB/HaUeaslhNBlYbnGCh3iSvbiZZ9uG3sUkHrHfVENYDpwPqAa\neN+Lb6VI9aEZucre2vJVDWMWI8Um2JWkVf2nrFixZ0149ABDj3R65OUZ75pE\n3/9hri35gxfBkqx4pzwKiF1xFTjfE1gud9tN4vZpyLk08lJza5chrC7owTdj\n0IwG1+5BspMPA/Wa/S9sixBUi9/uQQt9p/brqDNIF+NnJMbgA7os7fDSMDSU\npc7LK/QCwSv1UxE5U1ssknQMmzU8bZEYsom8/PeF+khGMLtFUjOqNmuA9wmr\nzagi\r\n=S20M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICMpXHnh2lhhEn3QWR0uZSbHudfXFT3BdvkG4yMT7n7hAiEA51b3IsyjIqPcD9t5u1wPl5EQCfO3b98ikbFmhoVkrqg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598347551-c7779255.0_1598347678871_0.5835945447872832"},"_hasShrinkwrap":false},"2.3.2-next-1598358062-87ce1c52.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598358062-87ce1c52.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598358062-87ce1c52.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598358062-87ce1c52.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wTXZ98AmywJJllWf/HIycYxB+QESQSqji7Ssk6JPFK3BauU8IHwv3s/vXyuI8DqPJuK4V9fFF6HgYK/gPaMCDQ==","shasum":"7b0b7cd14db781d06cd96348f54e53e048ec4634","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598358062-87ce1c52.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRQLGCRA9TVsSAnZWagAAsJwP/iGUDJO5mTf7qZTbKj11\n94YzQV+1TRihYxCInDbz0NYpYYzJqlEoU26V/mwBenfqAIZWr19TuTmLa8ch\ndLp+oRkXfHGUmwWzyl5GLAzMqhqg4SxtS6MCMqy1LuQBNsieQa/C1Iml7EBb\niFOKV6hUOhVMSQJ8jfek8WvCUqVfwkRwGPMyDNaSOB2gOKae3WbM2ApNxntA\ncgn7zF4VOqHaa+YVCxZwZfgltfY+87wgG7W8/w4PQRFdLPLEvIpxskkPKb9g\nMqhxUZuaCUQ5nJ7lXAfIEX+8Nt4tq+RaCuwJklunxvgMdsr9+M8WWeQLR4zB\nugJ5zXCSX7Nq6lhmsLOPVP1b+IRkxuEzUb2bqQ5l4O/n0tLZjgFtTklFTaN7\nhqXxt8NluK+QYreEl716Q4LfJiF7WqNxjXTY8KmsZb2tKWw+uSLMtcCjKUWE\nTQSvxCnpaif5KQTzFgcT0SsUTl1ZM+fXjEoPiUwQDS7kuw+whTDrrbAzDJyq\nT9AujiaQA+RVEVmj3LF8MAqvHSx50dDzSEzHSZhAsA+6VFgbk4wouc9p0e37\nWGouFKPiX3qYVMQj5Ge4dOyOPpQlt8Ppu8eIN1ege6+UVt9kkA7ymV+RpPhE\nOJbbyr9ZSYcpTTmEBRcQCOkC6eYfUov/JAzfbJxKmdAQrS0aURhbBvU83YVA\n7VuV\r\n=70h7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQf6wPe/JTQoNmmMOI4Ala3mBxEXtbV14qcQrh2pm5KgIgCuSyOyOi0NGP/n9Fv4fLpij6PkjPytEt655oH7c8U5E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598358062-87ce1c52.0_1598358214427_0.9888274666250849"},"_hasShrinkwrap":false},"2.3.2-next-1598359015-c9522060.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598359015-c9522060.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598359015-c9522060.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598359015-c9522060.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MEB516N1HD2zq3zlFOojlRuNC/+OXTo+mvKJKW4SCAGhM9m/RMmPnx5EDjFJaS6Qpmzzb2bLNalx7GRTLdPjSw==","shasum":"8757328a4aa7e81a1b54efd59234c55e2ba4a7d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598359015-c9522060.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRQZxCRA9TVsSAnZWagAAwjsP/1owHbz3Ol3K8qUooz/L\nnib2VSt1c0SvdK5o94uSAM0/KzT3IzRR8boTqA2ovu5JR70x5qt5WIwd2J8t\nj7W3/T9TyCCle+tL+VxLfBbSknYknMcP6PgJUraHoh8sTudri78oSX70aUFC\n5yVGsx9O+fXGuo6Cp5IRbnesdSnF2y10k7myWzSPrgd9O9nuhkCQzSvoiUm6\n+mwa1PmVOTP4/2HG8wL+Sm0pclYrhErous2xj6Oewh2VB3THEzMUFiNxCpSF\nAZZ15MP+jDwrkuEW+FUi0JtKUumOATKqFatv4U9z1nbpLQlV5bVyJX55lCKb\neBPs0B0i/Bv5rPXuzJWPsMZVDm4psqiC2nSrZIbDJbKKfjdotdYkl980QJGw\nMziETmlwDRCW5qctTrSW+ivpu1B7GDroegfDFbAADms27V/71b5Wy0kEiHXD\nncOfbGeC2Qifw6pNQdn4l/D3EX7/89RL+n6iM+qi14Lzur3GJ29wl73TPH9K\nT+ryU4Xl1PBOzcEOT2QiZMQiS+kuh3GWt/zmv9oC0zu3W584mayfL6AW6gMU\niehGMAFytslVTcjfYFHrtl4q7ujRNBQSa6di2RWsVL6zndcBaluaLLxG1F49\n3tBmJz+b1HeivtRe7v7taecOMw81RtuaMcBXTGWzeAK8PVK0tdHAteoS8kY7\nidVb\r\n=sLTK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQ9x++K7JNcaWsEeLx/A2bfAgWE29vB+kk/VbaXmMxhgIgRqNGFXBSSKFQjUoXcO9SZ12wWU7bSA/5QEfX7eQC3Oo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598359015-c9522060.0_1598359153541_0.06509316674537224"},"_hasShrinkwrap":false},"2.3.2-next-1598359080-3d61264d.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598359080-3d61264d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598359080-3d61264d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598359080-3d61264d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JBkdW1ktZk5pyJ8FMqXyDrSe6p69BrHJhRsu3njHLy2gfbPZ0n5KABiEY3Kno5qGUbQk9RM9PFJJM+3Jf8zJ1w==","shasum":"5d3ad0d7fc3cad252f03b5f1f7de45426ae3b8d8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598359080-3d61264d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRQa/CRA9TVsSAnZWagAAG60P/2BE2T7cGqCu1sxO5YnV\nkxMOD8ob2WgjBEyjHkCYeSPNc+o/ZFZsV21k1N3/MyuxTLOSZN5OyIOTc6Zj\nirRwNGYHVwbVT/kc/rk/F7vAVW08RVA7D29PT5QTMExgimzpuvynoR0jzIsU\nwoAqQ5fH/7F8kSgL0zWEiyEfLuS6UtgFj0vDVaYHJ6n4jzbBNzHoDLWc+L44\nXvXJCVDMdxzMPOrn0uDvvRYe55D3SOQtsWeA/k//oVoTJMsE6PmIaKEOV4l1\n1YWMnn46Kh6meh11e8myCrK8kBSLTKGLMy7aZQAOCWI5Zwo2P5MdfLelrIA8\n93gInKVQomA49xVpFPaLADjWq9L7fSfKz3u3JwVAFg4zIvHHwORQJEQ2RnJ5\n9Mh6PYgc6PB6syXf9RshjJHcq8OpB9965gZ9UVv+l5n+QayojtyKvVxqAjez\nQUgI4vjqoMm8xbj5coUNpasrlG/g7JJF9oUA2pyllWrg0ZGVsqC7LopdGTB/\n2BslYgF3k6svWNRP0KHJaCY4NcL7SK6iHTpPLzCEFOU8Zh9Hb+uSvkNeb12U\nEK1plpqWbT8LynBn4YBS+rT/yfYtYN+cIqm2OeBuVBxm6nKg6MnCV4P9oLth\nNzPcNF+M4Ew5OCBKeP46z4y4TXzjCWVRpIovhyk7/1+7UIm5U3yh/0fPEmmL\nzmfu\r\n=fka9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPQ4tQN/EHFDUfcxJwNPM8rvC4Fyv48jjebaHh4xfV7QIhAKHLcup3cV3jsXMPoUxU8EE8RlvrA7BvCSQRzoF93M1q"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598359080-3d61264d.0_1598359231414_0.26674121632383363"},"_hasShrinkwrap":false},"2.3.2-next-1598362190-9b823fd8.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598362190-9b823fd8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598362190-9b823fd8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598362190-9b823fd8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4vJ9tVCaopP2loEs9ZFuPKSA+s9gTLRwK634mDhETICqaLl7UntrM5bl+wI4DtN5Pw5FtJarv8B2gBo/N20GMA==","shasum":"4bfc7b1e325ca3fa57f7e56cea0cabdd52076c65","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598362190-9b823fd8.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRRLvCRA9TVsSAnZWagAA8lUP/0lL6mV0yMcvOpId1xma\n1SHVOsF9KTs4biECsU+gjrbzwF2ApUbLp2hueZhVytoAaaSz67G+ChYS4YfK\ndhq4kMZWOvB5FuWEiv1roM3EDkLMYVYB61n+fFwFvEoK6+gkmsxJe1QQBkOk\nOId46j1tTc3OWYzEhKASlnwkQa+aZvugcg6+jyPWknQhAaVzneS+PjMJypLc\n+O9+hmHgmey/GQK+b7iyzkY6Qa916ZI+oRSl9a0Fh3yEf+lznipV1U0EXJV6\n2Isi/9iGebKMm3fZeBbdNu3paSC82CYsPgHB8x9aagE/Z/dvIX0jzlXJLL9r\n97826Xn/ceVgt0AcpSa6eNG7RcuaIiASNfZL3CaI9JOd7aK+PiI6jKormGGP\nirutpkO4GxumLxE8/LCH0SANAPeyTrKaxK6p1smXlHAXIxH3dS9skfboBj79\n+CPfnOVNyhM1Rjo+UGDVe+UxFrp6zv0xwqklHk7cLKUNUuAUH68VR0ri27cX\n2v5UtAHY5mdYEc3DtigahtJNhsf1P8mLx2rhL958/AuNsHXf4S/tJ1A8K2Jb\nmgpgS08W/0PF+D1V/3h65rqH5i7UF6ohn/VzvK7aTDOe1XB4x6vl9HKaxrIz\nmIsaAkfawlbR7IrXc0IAOTZhgRgg1ql8RLF1GjK42e1v+pjM83pzQPdhWpzi\nHqDp\r\n=TrmY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA9g6AlIRVzn6Z8e+krhM7fULaG7G6CtUxOWmU/Mo1bjAiAwzK4hEvbX4Bcw72dpDFJ5qMx3IHx1U0xxaR4BwzuiMw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598362190-9b823fd8.0_1598362351318_0.8207979222948345"},"_hasShrinkwrap":false},"2.3.2-next-1598362665-bd191f24.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598362665-bd191f24.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598362665-bd191f24.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598362665-bd191f24.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9WwquIRuOwClYIXDkEg+P3pJrZpM8MSbolOHt+BsKCJn7axNqYH7IjBkxpucqNQ0T4QTLKk/1u391faoOmrGqg==","shasum":"08038c299a003a0b1e670fb5de4428f547312706","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598362665-bd191f24.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRRTDCRA9TVsSAnZWagAAOWgP/AtYO7hEUUMvO9FizUHX\nUJsfU7W7XEWpfK5NDZcCigxfhwNzPWmNwhoaxMoa+DEoMdpdiubNRmKsCJea\nJwmxV+k6P0fWPaXTvJZtpjRNcUGbV5r+vd3+IX96DzMtyg5kBNtSCiEZQyFl\nuzbuZtgIFpzxfDUYq+UBLUPewvJ2YH5bvXMcMFeRlen1VImjwuJkxAC6pDWD\n5TMUs7ysVtVNQkpXVf3nvQ0vtasSGFl2FVAv58ESy7XsLJLPAFH+kKBuiYtA\nhZ11TJd7gQ48t/8JVDUfaK56ZP7P46by+va/JE0xnl9c8b6gYwTbN21c3kVr\nb3IUYfRWdFF+9I9vEzzU4kfKYvVDPPM8l3Vwxsr+DQOPxM+oHAr0GKrRpDh6\nE4VxjOabT58EyX+a0jrgF8WFBuCyMO1kOJXlqYb3Eszuvo0VuGYp82V8vweO\nbQP+XsREThMFw4QW1sjLhWgapfFnTSqk/EGAaPGDac9oeYEd/HaGTc19yd4/\nKlQLKFZEaTbGRGdkh6bqqrlzrmvFePAwxU6HtBIrD/06RkS6PjBUpCL2q2ox\niYkjAT1A/caaA01B/11yzhdp7Prs/WXWJs3xXvG3Y8uvAita7EIGwseDuRYz\noCS3p0fjxyE1aM+jW32XLCibwSp0pPSOOXz4DuXN06K5BK7NzW9JAJk5/sQZ\nToJF\r\n=QTGq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRwCn4+D1tM+YJOrCJZRgg308GRK88ZSq2jhc5HB9jeQIgXeHNgDaK6WEovPyg6Lyy8CuwfRLnrgasqliCZYqfqvs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598362665-bd191f24.0_1598362818534_0.7651739018459067"},"_hasShrinkwrap":false},"2.3.2-next-1598372021-9e2f344c.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598372021-9e2f344c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598372021-9e2f344c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598372021-9e2f344c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GS33LIyVGLYyJ+oXoKfisytqdWBU7WsUqWY2oZwrYatxMWrbHf/sqcnxooh1A4qBqFDz/gtenu8amhUskVe+dw==","shasum":"149a4090b214ee0ee5e43acbeee54cd105affe36","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598372021-9e2f344c.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRTlCCRA9TVsSAnZWagAALqoQAIvlopfZeMpvvaZjbRqv\nDcNb/J8z/ii86R9GUWLJr2rF7p01cosIAQLbW2kijzztFDZP1rlab/kkD2N9\nYHbRcE8yD1SBqCcZA/g0mcCg6MP5HEd6YpWo2FF/iwf02efK5N0cL37+m/AP\n+b7MeEgBsogEL073WZIYd2LtObz6cPBbEpLM+6ikQq3rVM++AJH6AlSlrH+n\nMqPy69jrxifazvc9Z2Z1oZQzJJzOwmxFXuIPYACv3T/Vckj6D11rG40SeP59\nqFDcBZQm2DFY5Xr2nQHoXB399Mh6eVDEy7MUvTOz7FDffE9wSgUdPrFmT0bp\nxx+KtqN540XJJ0R/DwZPKpAWNNh8Z0SQsuWwkcib/6LYqerJ4HUS4slPGH9M\nIZUh/MtA09iQo9nIMO5QpN7HxmM36RWQdniVuKN2qbh7ShVp7uAJ4gF9qh76\n6+zfXKvg+Csf3+BqTly9C58FQvosfTqMCYY0sn9VEw6Zb52l7xhi5wCFrzjq\ngDu03FSj0BRd8pVEnwiJgp7rRAirireTBLMPMg67oJdVUXWeizj9nhhQ2msu\n6Pw2TpADqdIqkxzjFR7xJIxaUNPYL9rJIpGgNJf4ixF4Pgwrpcsib0ujo6oQ\nOYhPhDk9gpmEcII25GTy95a6SSUdx2QRhOSUnvoXvmbaRDlqrfkqMMA+oA/k\n0/u8\r\n=ESTz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAdLkF8Hu8cFt2bqHJHonn6oaw+wyeE/Keww5Zmk1QiTAiEAvAv+/pqB9GX46sYp2w57Sbhlwh/ZfQNY/8JQFzwO9Q4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598372021-9e2f344c.0_1598372162189_0.8808514467773461"},"_hasShrinkwrap":false},"2.3.2-next-1598384617-8d05b97f.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598384617-8d05b97f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598384617-8d05b97f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598384617-8d05b97f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wpxnNjX97StGAIf5x+BhNDGHHIK02knHngzLqfOhPr56uQbZ8rwdv7Sv8P0MWslGS1K7Id2o6zMICbA1FNM0Vg==","shasum":"67987a8e0c9a730314ff525249d4095d75395a9d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598384617-8d05b97f.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRWqACRA9TVsSAnZWagAAymUP/RANtVt4bPJK0GyI1J8X\nDZ7N+UtCqPXtjUzXF3BrG4tcXcW74BsdvKbUP8Pfr5WenBSIS6/4KDRm5ESs\na50RkwmhKb+g3fMF0hbnjs5cZEFiDMx5UZvknQ0al/cw27eleJVhb7qYdNsg\nXEMeKl1C2L0EC1li7BOHXXq8srveyLhIQ4zCCRtGBR+bso5TNQtv5a9tevqr\nHa0Be5RCHUPR2ePs0dTvB4vkfART1CPMm+xEqGxISHiS2S2M67MeIeFJuInW\nKtOR5hyO+IteQeNlt4nUefvHh89bU2vLOsTnWp8aADGLgjf/bv9HJeiSU9vS\n45NR57pZdvXmVjHVQ34hurklf20bKS8ALjkZeJxSo7sY9or7SmX8xSVDMkwx\nOz7COhqvuAAhuJk1v/WwbAWF/5An7dgEK6C2ORkF5B6CMh+hHGZd7RiBK3av\nohpfP55eSNB4hpsgoNhufrKgXsnDM/FB716roX/8f8nXztfMRCQbyiMc15hJ\nAnjD+joSCc6Q8QUYzsR4tS/Zgz+yKMxumfMn528pdBimH2MoW4ZYth5PTNfx\n3GSN1eEM/tWK6rAgu/r8aTnldMUhU7gwWTMY0+L8+rKjJD5aLtwdoAGh/PW/\n6WHqcSuAJW5880kyy02vKp4MorCdJwUUEUD8Df5brEMdnILRhXxRUwCGIgFC\nxAYX\r\n=S6Yp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAVsz+4YrgvyTr7qm91Fxqi7LEmijj2RTDUiuCDmq047AiEA2H+CyYIYV6z6W7/GDL0CMVNeeOrGCIrIEfFXenVWWGc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598384617-8d05b97f.0_1598384767725_0.21705825645772392"},"_hasShrinkwrap":false},"2.3.2-next-1598386779-66e41eb5.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598386779-66e41eb5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598386779-66e41eb5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598386779-66e41eb5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xK8Od3i7WtE4Au06eiNYWQt9DwWYKheP+NR/hjBa66T4ks5Vopyg3dKfmRZTheEbJPlRwqIEc8XXskXkYH6X+g==","shasum":"fc74768eed90eb4e233b52659884740746019544","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598386779-66e41eb5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRXL4CRA9TVsSAnZWagAA0CIQAImLCZY+5mD/IsHrMipy\nCSX7MnI+qXYtttuTifiJiVoBSYOBfu8KLk2KZ1pc7wsUyxQrx2nuOP0loW3B\nDA59h696K97BnIEYMraTKw1NmzX5V5Yg+ieb1qsuzF8FRbr6Axtvykt3FO3X\n7TFDevDJ89T0TOp6bH2HbBA1dqR2ZIorfJzAX/pMBrrH5xYyyeqzWdqQUUcD\nD+hS4LRlDJW0Pg5JhjnPJ56Iy6cjkQEKc4CBI3Rz9jUp1/GQ0kpIHLU20LTU\nJxY1M7yNSfHAwZ4awRQn3yMhxB49p5iXlVUoDWpZQAAo7v6sHrr9CBsR91mf\nj5joLOlYQEXdBp/GiRlVqbgzawgBgSbUfqOUezELJPr8DcxPyjbKr7GJs7d7\nb3Hlex/iQuosHEtKaNZh55roMNq+QHPwihUxglAUXhVY0C9zr45XCw/kctf1\nql0gIT5O8VIe2Kvu2nrB1fMH3tHAlU4dhH4e4Clf0ziioCv9kSdwLFlW3QbX\n7FrnA3gSWgETtnXNG14kcfi9IKTC8mIYDx2Q2PBD0b+KWDqu9jiKalHiB09u\n5ufziqx6K0nIyegdDBvnJXYbvkVDW3skYcnXbEiTMl6TK/YrS6jgMQz7BwYZ\nvDsUOa1d3IFNs8LLkUBwbcI3eTfyhx4glp7s+TMGPnO74WGGL6mroHsXxXVg\nHrDS\r\n=yFul\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDn3DG1C5FRClHX5kJn8A102Q45b5125Pt3DGFO4jRl1QIgOQnz8AC/n1skK4SJljArsB1JwscjQPnyjjiEZHopG9o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598386779-66e41eb5.0_1598386935567_0.40519621279992224"},"_hasShrinkwrap":false},"2.3.2-next-1598389767-cf60ff98.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598389767-cf60ff98.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598389767-cf60ff98.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598389767-cf60ff98.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kMj17ZVWkn84JtIkBPcesC8fy29MYHz0j0QtbeVdiCH6baImoYbYUk/tDikcRoyZI53VKQ/gHyUqtJn7EfLzcw==","shasum":"b46142ef7898d5ed6def70364fa091f128e400a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598389767-cf60ff98.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRX6NCRA9TVsSAnZWagAAhO8P/364dhzmeMEwMcsF6C25\ngG7DilcWtn2bYCM5xIbmkx54dtCTrVtfK2tJB1+G+Zbdhwj+EvwX+Od9CUO5\ntdmBRSd2sgEl4BwKdAVC79RfErPeRs8X1IGMLHjqrt/9GOOHgnwBvQ7lXruv\niyTRFHSjSrVn3+xjnMfqJV6rDNqTW56ONqKpIluNC1d9HqmPerp0R69x/ScU\nvPlOcvrXs6Q8hvRSrmMQvoccEQJmaspR5qnVVTHEG6Lf3XuXtMHHNQ/bMZ5D\ncuGw4120OmRQ/Dz4l7HoeZ5Vo3NJ+oUR7kfR45YiDq98p887OMeN8PmJDfHQ\ndin6jY5i8qOqvfxrVGdunom7FRIrqLLBb6VsISXrf2V/AG/9nQD72R+R7e5b\nQLmcZdUNEzPJKZMjttsocjAGUvhprIdkf0J8fPOUhnHxkH+2D6yZPMKUO+ck\nmxPI28JRLNrqSpaQ7c1EOtt8P3sGxIcxN4RHI4wQPpSDSx1hD6Ee0UeM4Cpj\nh88cwCExWqazTESIZNE1MINVt6yhykkLfndRcsUg1kebTMd0F08YG2299U6A\nLpkkKoYZKFUhoDRgBvk3qRcO4BWvxw+i2NzXfuw7pdSCnTTzpac9ZQU7V02i\nsk3xPk81xnjQPn2P1VuZFzEjW6M1ZZtc2XkHXrmdmVL56+DDORjmhyrPkfIt\nJZJ6\r\n=abh4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCn/fW+/cwDoWUfAFENG4YbCxR/FghJpNMb978oDQBrsQIhAMS6BfmGr6qVF7TkXAwAaPlVzX9rLY+GK7RbSF0xQ8IB"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598389767-cf60ff98.0_1598389900872_0.5370354734527742"},"_hasShrinkwrap":false},"2.3.2-next-1598389805-cf60ff98.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598389805-cf60ff98.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598389805-cf60ff98.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598389805-cf60ff98.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8iM3uiDY4J3T7UVMI8s6qkHm+4/HfiKyJK+6U8thUuP0dp3RiP93M2nfwR1ygXBF4QAVVnwtp/kpTonxUCNJ1A==","shasum":"bc321f5aad57ee2cebffeccb227673b2e2c9b4d0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598389805-cf60ff98.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRX7MCRA9TVsSAnZWagAA9ggQAIqkbd7ePaQ7mcPzGcBf\ncYht5jzlIyX1A08mcNOSORyXZP4oDmTpVjcQLtRTBqHx+j/+7Q2IxlrIwNeB\n/DzqOXtaQpraDl/1Wxe8labx88S0yEXL5j1h+lbd9wjb2HxKl4OD8n1XYpUu\nZcZrE4PqFQj7/Ujlt9Fh4EZG0gGs8RUBlBmQrRAlIUdreM3NYl4w5H9a2Idm\nyDi5iNup7WjwvDQDKHTU7jnqLmBRUc1tsC6nLUWd5GXVQPJMTrIG8EN2Y4pk\n5SU2OgWSn04ne8IcHeNgJGW9BfI/Fpoe/1J0Z1UCKlre5r8HUk9q7hChhhmv\nm9EPR8NPgTAw1+/TCimOBEbFryQo/iyEO5oXEBFLXIJGOIhIp0RtVzFE7d6I\n5+GvE2YRlqHcm5g5y9b3Yx5SEKdFgeflBoctGBvYUs8hygkonKNRT7suQd7j\nn8iY/c4w//k67rTf8wKdBMJKyUVXVmDz3YRLRhjRbGk3HIx+oc9aWMcS3vF9\nPS1W3xO66rK8FSAXpEk57Uuhe0LCFpG1wdGsxJ5JHA1funZifDTCyI4BGuVK\nYkFbBE3E4xKC9otaVnd+DfyneauxtvGkDuwM3VzPIKiagVwbkTPVlq61lBeM\nCEFUs7V4K5ujHBEghpW0PjsTECzIuIgb52tWhTSHvvfqX1cyaOESXtbS7p8p\nH222\r\n=7/Mg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSSUdTv6MYRU6lO4TsSsuXVBptjFnOHtbT7WMGNTgZRAiA+LLnVway8hSL5i/qskbBu+ui+dYycXzlMC0xCuhBoLw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598389805-cf60ff98.0_1598389963891_0.07234086929556605"},"_hasShrinkwrap":false},"2.3.2-next-1598393403-99d3eb55.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598393403-99d3eb55.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598393403-99d3eb55.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598393403-99d3eb55.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/2XDt1DKM/uKrj3bgR1oqzQYdBcjuHCpEy6vj4Y4MCBK1v6CNgan3AAb6kGQyku1DBV+a1PzGQgKSwTjVnpyKw==","shasum":"9447459e718359c40d1c66a16629bd7aa58e43b4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598393403-99d3eb55.0.tgz","fileCount":56,"unpackedSize":104335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRYzTCRA9TVsSAnZWagAAsB8P/ioO9GCpd7DFzsdPOdS1\n0RxKfZg6LAYxEKMErTsHYQ2vu5229/4GI/ph5tVMTMygTjtezze/p7BSvwhL\nl+mLV5p1bZjOv6VQTjKn4YuXM0TvIV+TfUOlY7nM4ReVC5D43MFBRT2dyvYJ\nnk4RnhpDGU/JTBEyBlugPugkNnax9T44cyilcKMvjXbPJvZALhR9DO6p0v5y\nAW886U+GV2CBApeqiNsGZzdKGxe7h30fngx7Grz4Wgx8rh8PoxacI1Zlc1Ev\n7Zr3hXIDYIXlg37tInS4MKJ4kdgBqZKzCBj+hygzYZg9KZngEYz70adIL0t3\nGKkYKBj3pK6LVxVDWxUderKRMTE9EA2C9toSBeu37R50VssRCl+djeu9stfO\nUIQVOr0zkn8XJTRvjXhCqCaNrt6/0NPbY+Kgb+vlHPIBs4Sk293wjLSG7K1A\nlckMAqAAay6QpFnCFPBqAlzAxcoA3fG95Wl+Rb4eQFjtdJaAH5VBFhrPRZ9C\n9PPjwfA7GNYAaSOo/o7/FbrgK0cipla92+BW0XVuaJ5D/WQG8iUpETPfZPx4\n9jQ9fRtSWRWxbXgHLgnyGKruGEwHflIG2dPdVbp8K5wrgFPYGhEKKWOzwWG7\nGyK6M/T2o4LBcjKpNv3wJuiAQs018WaB/po4AyvKjupeOUN3rUEZ/9UydvuU\nDlmM\r\n=H7aL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC+LFrF1ms56Mr5MfJl8frQfOjPpqwllBP6eWIGQhdNzAiEAqmlyDtEyJHIqVuSAPYH7GEvpTFh2fifv2qbOASJRS0M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598393403-99d3eb55.0_1598393554994_0.9828432966936669"},"_hasShrinkwrap":false},"2.3.2-next-1598395965-8c63aa9e.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598395965-8c63aa9e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598395965-8c63aa9e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598395965-8c63aa9e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GUdwjEdPWI0uo1NMzAJcNPpG9GH9iEGaI3KeOOs4yOsYi25EBg71qle+UTX2tZqjWxoFXBrhG71WXQ+R7mYCsw==","shasum":"14507aa57ff5c221f0d980206fc7d0db3ac631b6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598395965-8c63aa9e.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRZbcCRA9TVsSAnZWagAA/sAP/1IIudXJeucJcv1pmSen\nj00WaDz84820wXA36hd0ZAlHfEMv5t3/JUF/46eSBQzWSxzdgkEj0AcVCBox\nR+xFeaUucOBqYwcDiDRYMFuz8TOWToTMjxlqbXhXth+NGIEqpVX/MM52TRdo\ndtZ+apwFUN/2QP7uiQlw3pAmjWXbsT2ae1IRLBnzqQdTV9EoYD6PHZtuQ+4Y\nzBL28DH5a6yTp0Xaxqie4Cxpx8JazSG+lxMc5xs1w/uNFyTtidUB3DbIgLAt\n2vwTbGEapJnXwtCiojKZrUWn8m6kNUi1i5LXkBVBTOAXOUL8zqKWWpw1xLMv\nSiQxd56A3BTAq3xp9TrKLOwlf+UTTd0OIXeysxVk0knZIzxlQfhqhD1pfRKq\nH073EUuFOmJVMhJP/ZjSaKWkLYmNpeDijwAzI4juEk85sxBakVeZ5DF1y2g3\njUsFQbLpQATnr7fN3aC96xwEnjoBg6Fmgn8oUt56JV3i2vIoa3Nu73MC4yYz\nxKBHN8SMBudIq+tmPz2m55XcVfEmHhBKarRsH5Fhh1EsLW59yT32Jgpakfi4\nHV70paLbRysY/UPnus28Iv+duUiQwuPIM+642r+fEInH85RKz2cSjV9DsPIZ\nGrmLiukqEFKwddHLnNhgRYC8Ip3HDtoPhhuw5Q8h/7n49FYllLGWkBih0l5o\n5XmV\r\n=vd4x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEaKMYo4CS8FRpDq0j2iQeve39bfC5PEpBnlUbSakTLSAiEAzKLEbN/XNPkAYDHMwosmM65E+GbeeWUAI/32QmwuFqU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598395965-8c63aa9e.0_1598396124438_0.4577085135506571"},"_hasShrinkwrap":false},"2.3.2-next-1598439065-c0278e9f.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598439065-c0278e9f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598439065-c0278e9f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598439065-c0278e9f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kHnCwRQ9O5008+Al1EMhDYWNosQKrVNB9rnmqIxqP8dYeiQI6TBXwXi3A05634NZlJvt+mSN8ezrkWcH/cpDtQ==","shasum":"bcaddd4e929347a472b694f324c96455610df667","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598439065-c0278e9f.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRj8ZCRA9TVsSAnZWagAASFUP/RelBOfWbjylcXpsugXI\n0Uk7mPYktIO60Qdp/iQ9cCSjur7ux6HsEXh1pbka8FevpxggPt2TZ0Q3Qloi\nna/kuKajpeBNsHVfYEInV6u2S4ffHR0+Qz1nIyW/lRoMgjZNnryzHK72omzq\nFCQOrurV6uWYrWyEwiNvOVYn9utV/tHI43uoUGxJd+ATRa7vDIuaMbl/1Y9Z\nfxl/XEt1kPEKBNpDGaEZ1TprabN8zkFJrpoJjQgtgkTlfs3kFGqbjQCVZihn\nkLnYeNZBF80Or7d0CRvNhIiQUbrLiqPsaEu2X2SSEcuDOHopF++6qf8PjS5z\nKraaEqSujjVGX5UK5SINffX7HoInOD0o3zEmnYw9h8QsH9bm7qpUE3nZ1BFy\nvsxL8gIBDFGoorgm+MZ1JH9QA8urF5doT79YF0fSYyCgz3sqPydnrwir3f8N\nSBGEWVwE8Fy4j6YTXEQ7TdYWbtMn9gn+g+ewzjTNXc9VKLYVx7ZIir6blzo9\nPGJNIbHLGs9F2HkFAAfUMREyFXkF1rm3RYoRsIxMaSEYh06UGXLoe7WaKvAV\nJClU9Q8I4lXD76UtT5xl8bUqGLXB3iZmEntbLuy2gdwHvuChYLqYmfs9wqwM\nlHEvOF8GQJTtauDR20LH/qMpd5fE/ZbyblULX1ouwKytApd2nZWbQQGCRBo/\nZjTc\r\n=3SCw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJbv0ZBoakE32E5qhMqHSczUfmJ8xEjhiglvdsk+VChgIhAJIMM/oSjvqA30bK0PrwpkZs6iykADPp0vZDz9j/sf44"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598439065-c0278e9f.0_1598439193154_0.9471813906958786"},"_hasShrinkwrap":false},"2.3.2-next-1598439616-0cd0e631.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598439616-0cd0e631.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598439616-0cd0e631.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598439616-0cd0e631.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-m+BUYZTOsKhF1fRjDISo9GGx4m3z+VSusc7XLjutnsilFSYreKwVzwYynuqpsoFXx2Lh8LTRV11UUQOokSx9hA==","shasum":"da85a0368b16675b4defc4fa410fecd944804b12","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598439616-0cd0e631.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRkFNCRA9TVsSAnZWagAAaLMP/2f5deTlqeiGaCcNTTCa\no5N6j/uRPd7GAV47GlbM/V/T86Y9qq9MF1q5QBYX+hPIM2byA+ozD3qsr5et\n1ClhUC7R11IYYeju9JmPbVa5N3GJju6lx0nRJeyTUpSNPUVQHf6SrCg9vaV/\n+NkF4tlww9GeyYEnbsYQgbYlQIVuLeEtyoMROc0r/Ik1+Jn33jGNfqEdOTeo\nRXwy1g6NnvHc3sHmSBsedncahiYTQUddDAEm0OK5Tyl7PTFpev1ldJHzXVdL\n8gZw/b/Np/j7vczA9K10c8Ix8qiejwp7MmviXR6PyTChXVkDmK/H8WDPW6H2\nIVQaW0XdywquqwpAGDTua+ETWeL7OlP1dCgd8bSn+z2fvOfiaYvwa1C1e6XR\nRMEzNgYmZ0XV5Z/YFXs3q3N7U1MyegiLO6m5TNRJ7O/KI1BNcJ7bgbgVj4VX\nfIryF/7YwZfWB+Z8cZPYnXMZbqEFA3uIS2/ZLyHTcDvhCZfB+Ipp+w1y/oov\nZzLU7mfvyr9Ay4/htkTrIRzA8QhdGVzWaucWihLoLLmjuVY08DK1ZRDC4047\n30viAidTGYyy+QxfCGA6EU0cTBS+C7q+SkN5LJ/LVU34BcR/cUtH+WGgPCxX\nVoJg9XG18yNYt5vOB5KifOmN0B4ndtaDpCz0QeRPwjHsUZ/Q5uu4g2HWdHmo\nxR95\r\n=p3Dm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs7NAnFitHBpqRE7e2NzuIOvxzZfEb8wYf1YqPcdW9YQIhAPKiRYDYUm7ZvcOdnsJDB8kX9qtirKF3GY34Gi8HGqAu"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598439616-0cd0e631.0_1598439757445_0.9477789982099072"},"_hasShrinkwrap":false},"2.3.2-next-1598440694-f9cfb551.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598440694-f9cfb551.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598440694-f9cfb551.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598440694-f9cfb551.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dyV21z918n7teMobizjKVMQugI6oWwZgY+N+dvCrhAAb00Psa1tcxMS6wsX9sRKF7qQRUS9Jg8BxmCgbh3R6/A==","shasum":"d78544e3e49e5f259ab1ff74c34b10f9fafd37ca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598440694-f9cfb551.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRkWNCRA9TVsSAnZWagAANCgQAJg4WyTBlZqoFr5u2dSS\no2GJmjg64uwCC1+xDEymypwQAPICH7zNQmjejhs0OQDgUGSHr38U62B/bLcP\nTUmSqUBLxiaPDpAaC4aU0QvBhq5yqjlE4vuBdaBr+cT7COyXp55/01yQFJnd\n+RS9sRglgENJri9JrUW9cgJdsFL1luNSn1gKtISwqYHV59E/ifGVrIuju67F\n+mH9w5/uZ7hzQ9jnLIgqmnmy9WpHDsJrc5jxWlkLCpa5WCQgwdOZqG3UBC54\n2pmrbT8dW4CRdX9bRPqjUUn9RmvaqqodSOaLLCfJPrIHPNdwuJWGFF/fjGHC\nwopUJJZTFowY14fQXGa8foX4+g4GfgjNbkFDi16DeWMrk4RqHhsI/QNBy5Tw\nz9F9XwgHOL6PPTOg0cigwdcZVgpnzPJ/4SI0aCgZG82AZL8a+w2JmkwT/yJr\nYJ1z8fEmpXJghWC0FYDaovzYhrq8gqb29AIFZXPq5HhLXcIxCmAzTm8/5NtZ\noOmEpzG6BndgYN1DlvH4Aq3bLN0XnrBIcnsPn3/nL8pfdNNPz2yQ7oJyyr/z\nrGtk63SBELc8/bqd4j9BGJ2D0fvhzlcdnAn9y/neQDBHc4ipZsCtu8NNCHxG\nQB7tD6E+JvM7T3qfXpNq0wpldJ6fN43KP3pJ//LlZoJoMYhY86JNsUB5n2V1\nEEkp\r\n=cmtj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGwxntJNDVWSrLbzJOHoQ8CPNmVdzEdclj5JOaLBVvD2AiEAuUA1Gc53Rlj/Aan3afuN6juB+MTTkchWQ+IMbKfM58A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598440694-f9cfb551.0_1598440845317_0.13182154468101914"},"_hasShrinkwrap":false},"2.3.2-next-1598441720-981dc1bd.0":{"name":"@xdn/prefetch","version":"2.3.2-next-1598441720-981dc1bd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.2-next-1598441720-981dc1bd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.2-next-1598441720-981dc1bd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dwHGMQCUbAKrL7UhQHdPFOjKJiLP//QJEvilhLt6HbZJk9FjLrXPO8NQvLlS9+Xk55og75tHYc48S8tYvWX6Ag==","shasum":"2e3213db12f36b750e48015e696a948bc5c2b208","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.2-next-1598441720-981dc1bd.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRkmYCRA9TVsSAnZWagAAj90P/1ohPwKmS3zYwbGns5UR\nAYnXmJKHCkDJE5Km2/xJmviJ/brQlk3usQEqC/Hr5ChhnoIfzSXvjA4D4iR3\nDUfbCVKpj05V8M0eB2wqjtK4KqpfgmvNECoeQbd/s/JZycjNHwLi885XJI6t\np1jt2yZyOFYMHTwkU5uIaWROKe7HTR/0UE+A/76VDkn6AyucYdgzf9Nu04nc\n+NBWb16TdSHOB4XIzrYD3jtIQP9VeO0thqVzNpw8lSqwsIDhmmBQttFum6C5\n1YIA1GIVKs/wTE0nhMccDVGbdGPAI2/shNkdgJ8o64DXm5fVScFWDxR08KiE\nd3zeuXPtjr5kRyoabqwvFd0evXeEBiXbOjlLaETbDrnQ6fnVO28M9E09l+tf\nhsDbgu76qAYbVozigoOFfcre2z/ElZWb3243B5jbU1nwLh3O25f/6Hv3FA3g\nJP044wMeKaE2Ouff4PH2RBNMESiO56CMrdJHVUynEOB7AFfcaP5qEUn60dYX\nBp9AkI6+g2/iWXfgm9PzhS6tSCW3E5n+hnFxaeOFFnKpD2NxSGtEK4YThyj3\nXcz26o+Zb9k5iADEE6mG4Xo9zc6bXmgpfWPIg7WEvw7WUtVn+hW3Z7MgGZXv\nejnsyMKrASA0B3apSTGC9ApcbA3C8s+ypEQ5gKOFyl1mgS+888cNUA0aOk6G\nRCFp\r\n=Vbcr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHKDbL6e5+6JyTF52FrrQvHscWizUY83aEwvdyYtfgs0AiEAkwVxFOy839oV+RPEf59aa1S2yIWIuj8m7EOaIEX0AAA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.2-next-1598441720-981dc1bd.0_1598441880490_0.5217003692565638"},"_hasShrinkwrap":false},"2.3.3-next-1598441814-eb3fe2b3.0":{"name":"@xdn/prefetch","version":"2.3.3-next-1598441814-eb3fe2b3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.3-next-1598441814-eb3fe2b3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.3-next-1598441814-eb3fe2b3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ZtiOPec5Q+OyORbEwzlc1FPM9bMi3Z6qen708MoqhvoUGt0Ej43RZG2ruK07HiHmPM84ihnbaEYAXDEP2VJNNw==","shasum":"41199abe3b48921bbad1d1a938063a7e4e51e236","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.3-next-1598441814-eb3fe2b3.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRknfCRA9TVsSAnZWagAAF2QP/jrvGwCF4dbHDqaRGxZc\n43315JGsLdrDd9Fqc0aLQW+VxYjdhS1rrdxDc0dUgoSD88FDZ3KfAlSfOTfP\n2t516rBiNBG4ibQPNSxYwVK4EVoH5zXWULrYT/Z+tsq/5jn4TQogyR3lbOWh\n761teCezTUH244OkB/gCtQELDMDE5gZovUcoGu+RfDdEdzAAYc2pPCdUjned\n4zzoJnOLi50ydEtXUe58RNHoVCVnRYo20y158ommhgg7B4Ay0HPBpYotzgtx\nYkDLmlszH6gpdvTbErmSHvdumX1GeXDezGGT7MjNgUl0cSX/1Duk/nlqs16A\nHw4zE1JH8ZX5OGAGbPua3WtnuJypNineBDISNMGuBZ0tR8HtJFqGT0E7kuZN\nAJaQk7p74lioJIAT+f42NtlFFaGfUGfSmy1N1sKB+LEAW2QWdoCbF4VZmzR0\nM+A1zJuAtdA1LW53cxlEB3cHZaxAQVLwHnpx5SB9JviQB9bZHgNjQeNb3/yh\nUhhXbFx3K9UI048BVY1645opdA78fwsFQjOo6yAKhWJPrSjftykFJeh/QSvd\nGEweHFktJuipQCoYr5HfKNYGqceoGKYHlSO2N5XTuY2LkflgEYX+iiXWqVFY\nubBrDzBUsi34azYq762liPob758qyWscI5wHornJVH7c2U65SsTFEZCT00T7\ndi9t\r\n=MT+a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDdQXtfzduODKGpsTDPBvMTpwEr8csMYyIZLD14r29gCAiBJKUcrFYLvx2IVyWAKSaPBHpS7x4lmopP6x6BmbQg5rg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.3-next-1598441814-eb3fe2b3.0_1598441951360_0.49366432268543115"},"_hasShrinkwrap":false},"2.3.3-next-1598441850-f49a2d9a.0":{"name":"@xdn/prefetch","version":"2.3.3-next-1598441850-f49a2d9a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.3-next-1598441850-f49a2d9a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.3-next-1598441850-f49a2d9a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PuPtF7G2ViSwK5kkLKIEe1IGtkwvGKW8ahfGfjkLPag3RTuw5g8pcMRmE7HTuon6VZqjR7MPMhyf59bvWAhzoA==","shasum":"44e1256d435f02c597cb1961ec2239fc492c626a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.3-next-1598441850-f49a2d9a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRkoICRA9TVsSAnZWagAApggP+QCIGsSMF717IuFDWal8\n7fDxd2toeKdXWrrVZ73J9KIX4g54haiIBJrgQdl1LNRB+0ePeiWLWge2XUFJ\nod5UTG/iuSk08qx3XJlfExsmIJVkMag8sgX2EUYEG/rj1FkLwJ40UWPQQUgQ\nWzlmSs6Qj/PAEPRoVLdMenaojUzSt8N5ymUm+gNSOmY2AeNngwIypow6otUe\ntIybySbCFwqaWa0Y9lQZ88qr1v1wqiZLs0lwlIWOE0p+ohNR6AjfBJeus6QD\nK5usOhaHJ0ZoV0EIeYdOAN9IPbQ762zrOGGDGdKRDeWln2nq/Rdn9tFkvyIj\n82Uk//BQvp0FyXnmKRHpqkxiDLpTpE3rxQE30jvJ6lOJcciecCs8qXxXRReA\nVbh4wR9xwNXG2pf+CIxTHzjEdCPiZBCLtAzkUfqvuDbtpBBzCdEyjAElzIAr\nAa7tPM9KiaKv+xGnumLz/u00WgXyu44LQTcWwyHM0PMOu5A25iOvSm5bB4+1\nE9ektKUDlycFv7SYvuV9RYPJM7gkbSH9QY4B+czDXegq+CO1rrsyjOX+YFV4\nfME1Bo+uGqQH7It5+ls1aR8PqYICdgXRGmARGaJOOTBYXoHMc6M7QyuvtpcA\nB1FNEyFa/AxXxa8VTBhzBpmHUs3mY91gYOWdGlCOjt45GRe4g2MYzm7TMYPz\nujxW\r\n=yBCY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHMav/97quWRg3YAICS81K7Ntse5carRXqXva6U+KbYEAiA/g5D/aHo52GcqT/FVxV3eRwKIo570KV3oGtwdyflVOw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.3-next-1598441850-f49a2d9a.0_1598441991644_0.9524633883065416"},"_hasShrinkwrap":false},"2.3.3-next-1598442966-f49a2d9a.0":{"name":"@xdn/prefetch","version":"2.3.3-next-1598442966-f49a2d9a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.3-next-1598442966-f49a2d9a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.3-next-1598442966-f49a2d9a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cL0A/aRlKUt83dpOFgk/95KZhNuyY2xbX/EvOGpOU6IX8rgNfOLNqttmVegkaSiyHVruV1CAxRtdWa45Z3mJCQ==","shasum":"71b0b881b6a1582431b43ada32ddf290905f87a9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.3-next-1598442966-f49a2d9a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRk5tCRA9TVsSAnZWagAAsnUP/0GsdNKenpm0MWg9Vz4a\nYrmddWWSgyeH5qtya3Xm+hDx8NC/K/HPgitPFebg1TiWTs/4LzLL7oAmhT1j\nnHIcuC22zaFNfBW4x0FUiQJT5jOySmGuDQoLYD1wtpMjbuM2ec5L1vhollwW\nl77D+VzTQupTxLnf85vf8znGCJ5Ra+XMqLlGgXJ28fRiCQBvcL7bRSEZH2LP\n9LAjQdGDqa9gAjR7notyKQyDC6smqRVKLWZwtmF4GVu0MAe/owSFOEGUNUDH\nShKUFoAvtGoU5jGLeB3zQ/BjaaaDngo9RVGjG9ayz8zwqeoWDGb8lzWiOLHB\nPIzHjD6TUPwOBLPvukB09XLRWBh+fWfoMqKlhaD8e8fZPv0Fk3EEHTk2J/o9\n/8pIJYxV/wPGxNszNZfF+yUmh+bTKd4chkNqBYijxwZnBEUb2pCGthfyqRkx\nLUh6ZBf6kxY1CcLDaplaR7tZ3SrQ5l2ybfoZNQ2cHzagNqA+u9cXLJRQ4bSO\n+03Wf2JdFzlIkzJor9TlkHVYJcX9jj3Fwcx/3/9d9Gw75Yjyi1wW0cstJS2e\nswL2xJP3Hzc5cFi7SbYgc2QdCuPWDIsrfIgHw0sxnM7sNX35TKz1rLSb3Hzm\nJw6uKdzS7FM6IgzvqF5ieqZ81nzv5o8Ub12Rc23g+1+DN3eCZgwdOY8Ot72P\nV7HO\r\n=bPb1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGP1j/bIZHMp+aHiVv7LTw0oZZxT12qpIndFVnDmdxVmAiEA9uy7SWesG54EEXWByia0p6DicvSGAa5RMOxm/j0Ycl0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.3-next-1598442966-f49a2d9a.0_1598443117395_0.25359494333761723"},"_hasShrinkwrap":false},"2.3.3-next-1598444882-96009724.0":{"name":"@xdn/prefetch","version":"2.3.3-next-1598444882-96009724.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.3.3-next-1598444882-96009724.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.3.3-next-1598444882-96009724.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-F7jKq9f5d1ti6K5a3pklFNzl7whPMRhhcy3kjVB2zlvUU+/Qcy1Eb6KOZx43amuxCSdWLUOUaiGsXyj6eIherw==","shasum":"41450a1bf7086247d682ba1acf39144473d0ebfc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.3.3-next-1598444882-96009724.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRlXaCRA9TVsSAnZWagAA+FEP/1amYp5EJtcSqZ5PEwHz\nxx9ZjWe5DaWknr/ZKcfP61Ev3OSdKaT6NUKe5RrPA3OakvOtROL3IvPy9nv9\nIT4ekOFUEOawD6YON+Kf7BU8xptnVPHzSRF8WWQOy3F9o5ghdFp/igmZCW1C\nSSMNr3oqC6Sf1ELheeBc6afjFEw35aMH5ZG2qiIMda9h85fqYb3VrT+JdE+T\nl+o9vxX3veAa40jCGMNy1Qi49xGubawYVjzABCi+q5zxYv7PnsDPQV41EzAy\nPM8ne3/eV6bjfORdQK5xiE6JVFi92ROZZxTVuGyGACFd5bZckxPFI1+50CmA\no43Gs6hUzuLB8xdq68Sel4PnBbZrpQ+8osVKD+RtcLuRGfqiuvfxNqVAAJzD\noRG/Y8p1t7Auzps+yO0JrYEjSj61R0CtYB1gjjye3v5IrPBE9XJhpGhtpXQ3\nlAS3xwa22viO4fG9F0CBRZbYRl5oPy9IN3DegkQFUj3jgnU+h3hq0jsztfjF\nCtzYiipbynRQmrNLbuxOu+9FHI++Li/eTG8LwbPVLEdXojrY37xJ2FN1GvBc\nDysz5993RnSw4JAfRFdI+sKvXlybljEmKtYN23OqHvblBZi6bV7/JJlV85bV\n4mGZRVtzlS0KhhnTOzaGeLnhV2YIdXXKWpsN5GWV8wkQoGTHYCkDai9gwB+/\n4ogw\r\n=t3mm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBSEv4ICmBrKQI1pdRzvhYMNE+Y91h0VmslyCMcslPPlAiBZxGzJvQtDLBtQJBPy0mf57zbWhmNMkDAI6lQFpKYaRg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.3.3-next-1598444882-96009724.0_1598445018215_0.5786265788450187"},"_hasShrinkwrap":false},"2.4.1-next-1598445276-fe8e8d4b.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598445276-fe8e8d4b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598445276-fe8e8d4b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598445276-fe8e8d4b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3sisWBxnANX+ius4ZGY452xXQ00B5U1vuOmw659q7pRnSsWPJirmh+v5XQYRMM8UZGjhvTnDvlQbj/fh4viPxg==","shasum":"deab30ab1fc7914fc31c6479b655190e678f8b80","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598445276-fe8e8d4b.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRldlCRA9TVsSAnZWagAANN8P/1xYqhjhRIOYXX+ztsVv\nZt5beQdn3S9Ty1iMgWRdXA1Y8hFSTxiylF1LYJYyLOmB1D/pgnRbPEpy4N7f\n6tG5ZOuODMFWzSImfGpBtnDLIkU/15d/k3hhK/bhnsKKd42BSK9cZ1QuMVhV\n8Fg/qLu+0wW/VsKJYfoBCRZ3AKltw1cN/CnvI7zR2//NMH+pEyRp5tieFPXP\n6RRiGg/qehV3QQcMey9pD5Jd2hJGpxCt76RsIXs2rHByPopn6Z1EyJqPRndV\ntrsdDY+QMU8VWY/gW0EdN8Ws5Y4rMyhRhEX7FwSHGbt6DxidRghpCfT68iVi\n7bPNlIiANM1+89RQzj85kdVRGjyZ3LXivIP51HGdgsXeu4JBIcx09UfLocBO\nMOUPzXoWWAZx37I1r9vbat2C7Cmz1zlf3D1ie4rcSyFA8iQJpm3bl7mtfz1d\ntiQfieXVLdCroOAM7ya8nJCYGz3clMLUr7cRgHAUX3FoZVDHtWwjKRttLf1O\nyQkU/2DgeGPs1PhLiSLHq7WNRDgjfYrJo4DYgyWYa9cYFqY4daf215z/wxL+\n9d6R22bB5e9fx8Y960Z/JBlfIbRcZ5y1YsRH3DcwRFJB4GI0nx/P+B8VOQfV\n2xALLqLqsGZ0DgDahyju4lFBYYx7YpjosMnKU7wGRBe9IOrGtZOzU+d/iyoB\n8Jv+\r\n=oLlC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqXNlSQbdfTR9Y6tXVKuQbEH8nDPC7gPVXHLATn8QkQQIhALaOKJrn+KlHmeptN4ULmps1ZiTnkfG1hybDS40j0/vT"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598445276-fe8e8d4b.0_1598445413293_0.5902994774844414"},"_hasShrinkwrap":false},"2.4.1-next-1598448503-fe8e8d4b.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598448503-fe8e8d4b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598448503-fe8e8d4b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598448503-fe8e8d4b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VkrT1CqRqkWcX86jjAugCJaPxchdj6OKNbhGDrfGtkU/aeAxzeSWYi5E0ZaVi8SwtOG3JNsxSlxM4lggSDeflg==","shasum":"315aba1fba0496108f80ad6c6d541198afdf0e0b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598448503-fe8e8d4b.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRmQRCRA9TVsSAnZWagAA040P/ilc7INO41Gb27Ljzwxb\n7f3Hy1BBQLrVJGnK3nYK6Y6sMqzWWrN3lP7OqDdZ/fk7cJX95dzigKUCN3kN\nIBmLgwh3gsfWoZ9kmc6Rp1MjL5zAhd7vDEgzL6rEuGvwulTMInLKW3eVaNuz\n7i+WOPDzMtF2uZLPKPF76n9iOeLYKfaKAQP5RqcdgugZ24sfhEurcV10SGDh\nDvootewU9TwLa43TeCTQvvGm+5vmdNNCcWVjd1V5MSHvFzCmj3hhi+UyGA3B\nLE2xHI6HoMORjkOMQSB53rV7NcJ4+Pxs1tnVHEgLa59szYwV1FLovfrNs8gq\nC1g44xNLlqXMkmhEikUpt/4RucGnyP2gda7DRPUjlndK1+CD6pdxNoV/kEvh\nOu3KIJtatqYfKlLCq0OJ9uWHTz3R8yBGIFMsBxcNQ/01grW9I2lENRZ4McG/\nlfYP4dcBayUksnC4/d1Woc62JZFKdSdTGgGa2IOG0X47lnYhampZdUUzjwGW\nQQJEjAofI4x/+u4gvtuYDQXv0e0Z2ygDrVQiS0fa75T5TWb8fFhN9ojhi5wv\n5Ri5rp0WuAQpemvyfzQIfs6s4ng5QS3/OMOtv1kHSPu3aXHnuc6RN1+A/GNH\nBwPHJFd+Kn7UK+wDCc/A5jhRWECHuFqHZ/hRMCu7aghQWXeh5uWMZSnr5nIf\nskAR\r\n=N/Uk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdSKCSMXdTUJwokB4VD+idw5AwHU8MuJyVy6xypFLMmQIgWrgz9M345fvWekdHsa6E3S8pVCJr8FeERXf/nzZhmrg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598448503-fe8e8d4b.0_1598448656543_0.19389352052194142"},"_hasShrinkwrap":false},"2.4.0":{"name":"@xdn/prefetch","version":"2.4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Gn9WZN58mUwUvnnaC0RcZezYGHQ+AJooLTUNGGKErp0gNXj8Mco9TKVNtqlKWAia7dTbB4TS135edkZr3AAUnw==","shasum":"f7fa257cdc5fed16bb48e882f9e8464d8b33dff2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.0.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRmh6CRA9TVsSAnZWagAABwEP+waFXe0MN1elI57uBtzx\nmzd2CZ4F0MnjjauMHsP6XNzRmYKG6l9tKMybFg24sRyNErBuzDKM/oShavys\nVyI/OUPDZuSTuzpG0w4A4KDdOX013LmiS4KdNOjx+XlKGOMRgquDqZSn7nQM\nJW7rt1AShDlXYVTYZ00LbrWjVzB8bIFoA4agPBY84VDJ/WzF2BhGOeeLvuz+\n4Cm4OgVbmpf1kisijTJpuX7QKTOIdz3Uzw6C+g/pPqolGQvdByC9jWGEJYne\nbik0Jhbx2nU9tG1yli4F80PRlAzbHUuxKT9goDcP6OoppwDQywC2Y8Gv5SyI\nbwrOqMBMRbSt0wD14YDKexO2YHrf1MEbkACdrhaSVZ6dR2p7kh2SWfxlzBIz\nPTcv5NHHO42YP2Od8N+avLGjMGkg/U58qwsKiKh8vlCO31kLO0DYs4IckqdM\npH1F4cRp+kG4VFzenRsaKrIlaZAGlPGDiZEvkJ9+igIcbhAoPupHt+mFYMmV\nOfdADdvPrzLDJdsDO170fInm2p3MhCoUHJwsZBnEDO3mzR7vxuH1QjFbGznf\n6qf7UIbXTmqckWAIHAM4F6Fphrs9P/3Y8XFvsp42b3xSvr0UUqLjMjBQhRJk\n6aF1tCNsbw0D6BE0NLSEOmzQHnqCqzxsrBPDUJOZthxCtKKe5sxumPrzy1TM\nQQVK\r\n=a5ol\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8WHtPx0xNzu9llSXpwKuogQwwVJ2KQYLKK4E7evk6lAiEAzNYiJ9pkwmrBopqZjKewYpGWvkI5E3EbP6MbVSIqxSo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.0_1598449786337_0.8038264172485117"},"_hasShrinkwrap":false},"2.4.1-next-1598453444-a9c7bea9.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598453444-a9c7bea9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598453444-a9c7bea9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598453444-a9c7bea9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nhU+5mwbgI43Vix9r5imlxyAB3nhkduU7q7Z9iq2TLeuWSL81bXKECX2K9h1qJu1zE+GDw8hwNT2iD4fzPmn6g==","shasum":"a2f6b437ad686e3241f29be2038aae89f43b1c54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598453444-a9c7bea9.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRndSCRA9TVsSAnZWagAAnH0QAJ2213LnhXsWHgVKkUDm\n7xXtRMLwRTNnwvh4FL7U6yO2eJo5K//u3WWvm7uLZRPqJrRW4XXgNOLl25Mt\nKfowesWg6Edrx1QTBTdcZgY/mWziG+fknGMvjjGpP4rAHmFArekmNb4DnNwP\nO3J5J0IpU+JpntpZIwcqPjaXvq2+1+PYdkS6P2vHhrG73Rsunl+6hEQzzD+6\nbib11IW3fKsk8qELZ31pfWi8z+HDhmM86slPU6GAamYxppjoedmLXweJWq8Y\n5t6CA6B1GxA4E8DEjDMmgGsXvz5IlYtEjyQkyrIRJqrSCfWs9cZdKtklvUgA\nMUprZJuc8vQCmjAgsfLD1N85h+rIMNUmte2Y41vcVFKAAddIbTCJ0QfhvPZ7\nLf2VlhXyEJAHUvlBcqHBdkRCcB/aRZU07BhAgJm9uZclMo5/vaZaTOafL3fK\n+SlJR7GRu4RcCOHQyGQtpHXCLqMwMiWnoEEsB6o4aDlUUfkBAODgUx8R0khy\nG3MVG/+ux09c0H34opb/9OzfsegpxY7jp/EJq6NoSYqsKNVtmuG1QP1FPhD6\nW8bnrSaUhHb84g+Keq4bsBeMvclaDlcAOitMkVQxqkWE4Ei0l2feNHIkyTRa\nXgZoO0yzYBxIM6Y5grkFeOvU1kdnxWB/mnZuRZa96bOUo5LgNf/vbpHCInH6\n2Ruj\r\n=tPmz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuwjKl9pzj61bGHP94AUAvyvBQ88pE1Z3zJfIpTMU5awIhAO7LNnKMGbT+n34sE20XqsLgMnacjwc+1F6JDpuRhhFt"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598453444-a9c7bea9.0_1598453586359_0.27074556537585637"},"_hasShrinkwrap":false},"2.4.1-next-1598454233-8d6006e3.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598454233-8d6006e3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598454233-8d6006e3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598454233-8d6006e3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ix5Awjd2OgMNY+6SBWYW5vaamXaDobPIq376W2uWto9q7+FFigAYVc7mNtTXiUIETkx/aBJtyMuPh6ZSDP0/mg==","shasum":"87b987d15dcd24b3e6bc628872ef4c5211cb397b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598454233-8d6006e3.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRnpyCRA9TVsSAnZWagAAmTAP+gNW4Tqks5kjBkBjzzgT\n+bB25Wzh36wgYIl0tm4cg4j6d+ueHOTyMGIRKX4XkQHwptIUxe3hsLcxsrdL\nRjDHXOcpcVPXQ7hcIZPRsGkphS6hEFA8MiwiqGjpKwQcOSVEu8RxPdrMT/AR\nXFPXH98pRa6Y4KZD5aBAzfJzGMcmCjNV48yX/exzeKXIKGNovczE5MoYAh/Y\nYExlMi6FPdaUdc7/VfpiuIL0tvrzVJ6SdscjH+F/IS8dPl69apVwU1oIRrv2\nPAcVrg01Hj2zb3zKSTc8K5g7IWTsdm8XarMDSCfholqHiGp3HaAKlhYXsKnO\nIm695RWnufWEESHTbmgQvZ6u7Ug19UdVDeY8kEgmv+Q1meKo+FDHHuxSYLEl\nL5fTXgDmvsHRQKSlErPKpl6575XVQVqEDqyJV8PBCllkdYb5ADV0RaYZSxkr\n1V/BJHXtmTjf5TYanVlvQ+RPCz53NwccceLRuIYkJ6qsM1b8uFTzKS5G9Iej\nW0ERQFewa+sE5kRDkZIBMSD05XftOYheOMfk+TSacFjgcdb8at5RkPkr7rzP\nbrOSvPalWMiwFZQWFgRyEg94inuXBAAqpG8YIoV899pvcN6JmwWsXm0KHFvH\nC4sjUzciOqz90wb7fay+6C/Bun0ki9O6VriCJP3d7VIPPim6CtoduthfnCpy\nmPr/\r\n=eIYm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDt9WE16saLN/utcU9iWVMsvgm+Z9hn5/sMNmw5JDfr3QIgH7OOzofI1DhxiWgkyWm4rYmEKLcmlR4HlbaqvGIhp0w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598454233-8d6006e3.0_1598454386352_0.14998747929034062"},"_hasShrinkwrap":false},"2.4.1-next-1598454437-af4a7e21.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598454437-af4a7e21.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598454437-af4a7e21.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598454437-af4a7e21.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YkFAHCf70zVRzW4WiS/d7lKnpCCw1MbALO6RJasGq6SzsFyMzCCnTdZLw4UY/4skoy4oARnblrZJA0H3vyjL8w==","shasum":"6ea164f82b07e5ccf41395387361e449d74f7ba6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598454437-af4a7e21.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRntBCRA9TVsSAnZWagAApFwP/R4txM9hZnzlVCGroqz+\nSZzfhnBIYPxem4sHLUtXnO9/FrAhf2FiXmW+ijw45Pv0h1utFtsKLbKIySAp\nt9iu2t1IaGihDPR9ZcSc5OaSx58BKt1O2ZISxCBElK/w/SrMu+5vKIhXc3d9\nLoczLI96elPsW0psxHWYY5VtK5qrXqfddTAH5C27l9b+ZPJ/AzM94qRcLaf4\nqWT2ni/lJ5mVZoDS2oVTaNzPlqxb5FGfMqOQ5oOFWjb3D6toCt4exxXeOG5a\nXGsJRW6qEEg58z+Hz3rTwtf30gzZ038MC+zBfCoHp026lzoUj5WCYzdHRWvt\nRswAnyRxrFXSssVOB99HQ7W6NK/8qaFzk4azlCDD79L1/BarIbvlF/0/IUUt\n/kvVHcLjn/odtErKDOaZpBlSgaTFxwfhcr3yO/aS+XROGbEgW9w1VgfhRVwV\nIsCcEJXNuqb3GWukwgQWBZPAEj2CjcFvc5TGr0NQxh40lew2gfsOtvpuVFMB\nZm7k4ofynYheRKfloVi4OBTZ4azxapAFWOR9qsKLosXEFiJbpM/8MZ+ktwby\nY1hjs168ksgT2T3BRukEZNjuO2N+vzrUVwZkqT4RSwmBaBCDRpoD3/3R9HmQ\nBkCqiXWfXzHuOU7MmHB9QMqdR7lHJ/OzPC8OmCd0P3sAJz9DSziZ9+GKJAbp\nkS8d\r\n=Hx9E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXkOCMNLVUXv91ut6eOejEAXzmjJdUZdCvugYrCGk9nQIhALu0oxqP9s1JjdT8V38CzEXpq8flNwqIM7VcOX3ELq3I"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598454437-af4a7e21.0_1598454593462_0.356902704724819"},"_hasShrinkwrap":false},"2.4.1-next-1598455420-5a4574b7.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598455420-5a4574b7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598455420-5a4574b7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598455420-5a4574b7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-M+0sCAtdu91Yh8MqO7p2VdbhjwLumIPA0VpPOgpt18tUC3BQNGJNiCVjcm2oV9uyckR5jdfI5mub1b8m4l8klw==","shasum":"044a0d62982c17e9edf3c55f70d28b76f45663ea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598455420-5a4574b7.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRn8ICRA9TVsSAnZWagAAAoAP/jaBvHz5AYe5u2w0EMgq\nLraEI9TyMpvxeKpskLBPcSiknsyhZfWnGs421lQVOrt+JvieU9dOBw6yS5JP\nS1cB8EUBXrMfgpi20WxTBfgXRS3iVROWraZxKr3/aTGrhXLF93zSjGuYbyqk\n5HXTRnOEGISB8hkpFTTEa+pCZqYIVmqXf53Qqh8DAF8sLZmsVnupnVkE0/3h\nB0O452Tt8mOio42kuBnXN6eLy7we1bXFvZ1br+ouL1746CxeAvz8ixOSTLM+\nu38xayZX1sAk2Ku/uFdcTzIMnvRuz9jn4zYwxkSGoRwJjiBbbnD4eg98wNaO\nBLfXGFD+NnTrFk2tVeT5m3LTAmUgoxGxC7vhRFsKiEqy/NTWj2J9BmRz9GnO\nlXyxoFjTTCt56oBS4QgMVlHvZc8W2WSLUASO/OV92TTP6zyQl/V8uRJVwjAX\ny4glp5xd9kh+BrHzQyGlS9zTrggLBoQWIYgogHRe8KGUkGLdroFZFT9+VfVr\nMOzFfCKiSw2KpOSUIk+OXm9psaF71uNbVpv4ExsXZASbJ22aLvM2yuJDiRei\njzjBMNiFZdFgSaIr4ixOSqP23tUyKI2C4a/WGviDuo6oLeK/VSY5Z4+TmJ1l\nwo5TtktyxAUTtveOx9aUNhGzE4EPE35fkLnsH6ki0whJRX7ipTpFpHr5pLfI\n6z1h\r\n=HDqO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD392OnDNTCmoLhj/PiLxFhgwuwQOyBRTOJ8bI2wy74MgIgBJMtdohEX2FK/0+g3IWrpvrkC54zjmHnaEu+UlYjX0w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598455420-5a4574b7.0_1598455559860_0.8044032608592502"},"_hasShrinkwrap":false},"2.4.1-next-1598455785-da2ca773.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598455785-da2ca773.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598455785-da2ca773.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598455785-da2ca773.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ERtLr6+9B1ZCQ2G0ePhbrf2HODQOdHUikE6YI7EYpCGKEK5Ra++kA14OO2fAghF8sfzmSNSbc/YkW2D6df/SQQ==","shasum":"e1e1668c6492778364b4a307f28c143a9cff4839","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598455785-da2ca773.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRoBFCRA9TVsSAnZWagAAWMUQAJpLRHRCTUOrgEoF5fjE\n6NHhI7ayF5ujZ4rF17ELu7qQ140DFAEiRd1DyF42mMf8aR0zf6ac8aNMPsug\ny67WGN9gk4PRlZR/ZHjVNJE7W0g7XH5X0XRB14QggRep897p46yHekYkTgcG\noUbi7TsEJk9S+no4TCtBOt5uimZuGOAFx8yVAgEqbmzpRPbLfXAETDPAdSb4\nb2J0rrctHqr7J9B/L92190hDBA2/xJuJ5UlwQvegFMjszfDCzwAjF6ZrP5Dx\nc8QfyZNXvz9nkwH/FtHKb1tl4Ifk8Y39NSh1oQjUme1xwJshMQ+bk+4sEEbg\nrpR410Jl2yCrz5xupalfUcVk5VHrNnoro+hsXqc4AiO/R+PcClAyI/o60dOK\nHE72YktqP9zVKywlF+LBXdyJLnAE4cdVVO2g1CpkX2JwliVqiRb6NRNQHKaX\nujNlsnGEI/qtnzVCERwxsN3k5ZiqQ8GgKlGncEvPMFwIWo+j5ziu5KID5lrD\n/TnlGpSss6UK58MIwYER87L7D0XxGKL5tJqiwZfYQZuZIrhl2qVx0XPoZb+m\nCuZ4eBbrxawv5m6MpN9/c2Xr/bzz4fHn/BQ8/+IBFIr9naSCR+lQtpzoS9kS\nLyKrx9NESYcjvXlPScgGjzyBLFOedInblFiwE3cK4jbnmlJB/08132Hgm3zd\nTjfU\r\n=b2UE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCR0+8ilby1ktkZyC4GGZwLoYM/L9M4wbqdltGFzVs4pQIgbjGpdiYXMeU7Dw7e+/+M67FFjssS+pSB4dAWxQpAdGw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598455785-da2ca773.0_1598455877433_0.23265095923630863"},"_hasShrinkwrap":false},"2.4.1-next-1598456749-d61719c0.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598456749-d61719c0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598456749-d61719c0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598456749-d61719c0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zxX1hcyvS2jZWW1Jy0rAUHP1Vsfh4j+BT0h0TDt5pPKNErB0pWaOzVQ+SFnVfzXSPYlu+9FcA6ll9wTvT/gNqA==","shasum":"fa33dab4b99ffb9b15f50f9034a9d6250bbae312","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598456749-d61719c0.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRoQLCRA9TVsSAnZWagAA5woP/1XAM9yFWSvkFtvaHVg1\n28Tx8MNXQc+/7ZojRSzuJHwHeq14EA/fiXoX87MF2AEzh8gIJsKx0y/ebJvO\nNltmeMQOV1IOnlUq+Arkh26yK6YjpPB4HDVWUljNK5/NrpTyPtyHj7PB5v0S\nOB62xW/Fv8eQy+J3UrzsOjgjD0cG6cjdCWv3aSGMtyI56SneFHUBpZxin/WU\nyoQGzqmOSdW4X0QS0cmIxgbeKcr2eT9gSX3L3oz5/+GMxQ5yYtTz6LFPtpOz\nhl7L/hQpGnFAe43Z63d73g9qqKk59MSqe1zaBvVxAq0MWjnJ2ZJaro3ucgoh\nHSHe7UgVaMdEDk1I/UJvLde2IoAorQGBTROmVzuPh2NiyxtBlab6qeT1dRa4\nkI0TJW0777ps4KzuAc+QCcOuHixyJrQm+iPD3CvRMFLKv0v+pV9ejzDiIYJ8\nwomT12RreR8hwmVi5ZqMNQu2vn90SMIvBrXVFgNXziQh+SGUoWrtUOWMY9/u\neLYBUr9VrvvgqJcc48A3IoDzI5cwlmUk+/uDnwNbRwI0WtVLZ3wvW9mpROFd\nKFZI9rgIllq3HU0YePRCPjEt2Z27zHQsJW1aCpaY01UnzCPEwpe50gae8xcS\nbgdQfGrAxgREi+6OW8tGlG1xy2Rg/UTx9+SJoAQ9knzxIPnxja2N/pSd+ecd\nWTXr\r\n=nhvn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFFhWfG3fpqofC/rjSz8/8Ek4h2pWhtpmuujBUChpGb1AiAUxNA2oLxcsjb2y96FmnCBiMzjRtQRVhuqA0u4rmy5zQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598456749-d61719c0.0_1598456843230_0.11716559974341645"},"_hasShrinkwrap":false},"2.4.1-next-1598457160-54af56d6.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598457160-54af56d6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598457160-54af56d6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598457160-54af56d6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oYOiJd0GGkDZXhusCz2TMpR4BxiT44pxF+s8KgRmtTU2AqVZnEiWDVDVggzkNMaUNZZCZaUa06Jiqc78JmJwig==","shasum":"7b7ff73351e1b6833c523e1d573e05c979b2332b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598457160-54af56d6.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRoWVCRA9TVsSAnZWagAAwbYP/i2xhi863CsO/kJO4Wmr\nYoqd083OksbxY4OX9LoPTZtSU6+wF++Yvh6OPFv+KkAvUzBaxhtl7Pk1dqec\nWJ1FnvJdGoC5TmYxPHgvO7ORZ9e1d0vSC5fQ/J8O8bvAKFZg+i8DD6njVlx8\nTu9QBeeHeJsvruGFx9Vj85KlrabXR/LBXy2GXrkHBrZobNRkB78Ixkc0Mej/\n0TbrN5hZmC1Afiomh9zIUawCSLcPfJ1HKWFfEY6Rtr80p9zgGav8997Qpajc\nShFg11eeGE3gxQO4tsnTwoGE3zmMUk/h7K2u7xy/QFYIK7CPlAED+fTwaS4v\nSXHjZtCGo3eImgImKP0QINFYjdE+frQul6BT6Ex/BChxIDIvnqjCqPcv2NMX\n9Pvezmr1WCBFoP+iF2vzkSlas33UC7DvILr/bd+nufK7nCPsUPC8A1N1XU1W\nnWcaCBB1dEbdoxSp+DIsgrKjShlmAmyjS36V76LrYGonguechiZyu4V7kE/e\nT50Bp9DKk/9aVWdPNRklRdnDXimi5mm2N+X+fRuUfNzNwVXpzM5GcIvvchO/\nigr+UMHaFUXV1Bhh8jyJYfPKM6m7di+/TvIFdMJOwfDmZQibjR8S2qAl556g\noKsxRLnuBMOrhFyk5FcYvaAFOYgfFamXaXgVTjKAloMkvfM0qxoOGIHNM6aj\nY84i\r\n=RPkQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2CsGioPqOlevShz5F79ycvZ+8qj9WUN/maxA8db+M1wIgdGEsGVMUlOyVb1TEXmlJrXAH6lqx4NlmEXICp1ZYVjc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598457160-54af56d6.0_1598457236815_0.25432794257293945"},"_hasShrinkwrap":false},"2.4.1-next-1598458310-d5007e4f.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598458310-d5007e4f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598458310-d5007e4f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598458310-d5007e4f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qzwGmmpTxRuGMY6Dkc54OmUCsaee40RmOEA8sg4daMBAbefPNRKSOLK+8onrsfJYfyvMfUKsRlsuhnNByPuBKg==","shasum":"c9738ec2119384adba94f53f77e7057c8373f8df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598458310-d5007e4f.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRopmCRA9TVsSAnZWagAALR0P/2MPClY0Xu+DWc5eNtub\nQhvCypK6PKnkPZh+sLV17hW/QzjNr/j1TgEe/7iZCoPlDPDFVmykdyLLHEWo\nSBmL+msoQxvYGkqJLfdDwfNAst9yEuvZUtrBQBvIRNXpo9jmdA9ef7cYUAKV\nGfyAnoSyc49fRVIKGY1XH6VY6uclmtjbY6UOtLjQaNWbU6k5sc45SOmQnkDZ\njJzrZC74m+T1Z7gxfZKHE/Fstd8RaRYfKwjc7IrM7LDLzN9tebWbBZmeaoxC\nYoGwp0lKFxtXll2yaiDoCh3H1jP+32tskPdtPRixA/YEQZHf5P8p/JE+tMO1\nynAY+YBKaHXo5C3iotgNiXsn9tbmWm265IEDxqJ3E7blUc9KBNpXWYAG6wIK\nPjuy/kQiKV7sFd2wQ0mfuuSbNvXwu+Dp9oypeY0iwx9iqcNJmbna0BYGXTGN\n37kCnR29Sxcab0zryVMvTxTvnys0COdZBcKzo6uTkk15ajhQ8zW7gov2SfYx\nC4sgByuxFq0oMiX6JJjUS4CFGwMQxh9rFgHSofpSLilRs3A22krSvGzKvxNZ\n+JBjmQANN9ehyMKA/jtkcwHJnNAjF5JEZAP5t7ZFsYMEvAaLgIqquANVYpI0\nVzAFVe8WMUpDnsTFsUiND0FfSJ47WPoE+GukPY1idZM3O0rH3+gIs4Jbb2Pm\nuG5N\r\n=ozBw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICflFuU6I9LLeuHBqmB/VlZGtMZeMQ+nnzuZWtlmLdtjAiAM8wlxqpd9uOPo8t54WeMKrOHiOecBzHNlozdE7e0Opg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598458310-d5007e4f.0_1598458469970_0.6363764974010733"},"_hasShrinkwrap":false},"2.4.1-next-1598459582-d5007e4f.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598459582-d5007e4f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598459582-d5007e4f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598459582-d5007e4f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sA4fDLppSon6zAbRuU/DZFO3DXTf71BIr17WvxbfScpszh9UdNFO2tnGDeDKgXpiHvvCqeG9zN5L0ziMCpkqJA==","shasum":"472ffb87175ebeb48647861c9a3d32e39168ba81","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598459582-d5007e4f.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRo9MCRA9TVsSAnZWagAAhWcQAIq0J9VIBYLbdAGK8hCa\nyisPFhBPNSPRYJF6uO6HXhoYRJmBTiJ1f1bWjuTCNs7UPH3f4FtLem6dMy0X\nR+XpTDb1Q4jswAhY2OJr107eKvvq6XHBOE2kEz5GnaMGICswfhYSkynr7oUF\nIBe9a8QIwbHcYuvQEl2L8uC4TKq65NRcZ2NTatN0ZP5EEjtFht9C80D79jvU\nzsWeckeezICFcxjEssxNVloa+094u3wdbE92i8FtNQpvLtQBj23EbKbRjVg+\ngm8bnOPtTzKFpATCzNntOlESBzWl3q11r1pDY3PVLA/yXSABS2iXeRpZNG3k\n6t6aBffceUVE2C83e+/oCR85OqVepOCrITr9wOjHMcWo4uVY+mnoi4V1BCfm\nLCiQRuFiyAc3hSMhRKF3REW5nevVZeviAHuUzxebOzmLn6Ec3kNEIVccn3tc\nzk99jzRhd5UJJejXie7qIAd94uTfux5NyP7OXgGo5CVbDRyZtjDSV8keukAH\nIAsqk08CcaEWnnZyNX3M0PF3Eci1OxVRy1o0qJamwxwVcnwpKhZ4+ZIBmGtZ\nVKwNm+0rjjNLAWQJYSlk6cGtD/nRKk6upfe1cotiRsoNnBDpXLxIDhqBMMC0\nuWauNFNBE20AQBnEZ9NhBjHXMLhXNeaMWg7zWStX8Y2Y5ilHZzkr6mj7fvRF\nAXo3\r\n=llZT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHgrBcL2SpOL9VzkaCAOQ8F57+TSH4GZJQfjtSgP+dwIAiEAiDGHo1qkORX2syeue8TMlhhf91auLp0oEnFgO87kfEA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598459582-d5007e4f.0_1598459724302_0.37445243925807037"},"_hasShrinkwrap":false},"2.4.1-next-1598460571-5866de05.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598460571-5866de05.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598460571-5866de05.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598460571-5866de05.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4MRQQh+UbOtwtHEym/KzIcr+lD4c3Q8yTNIvoAk3AYTUr3Ty4lSQlhycwQorKe4e1X50j3DhMWHKvRqXk4FcBw==","shasum":"fa1943394a1b179c006b18e775839710b43ceb29","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598460571-5866de05.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRpMmCRA9TVsSAnZWagAAoUIP/1ggKdM5z2/Z52c+84aM\nvE2buJC9ZO30A7w56wBvYg/Y+dhdlCvX5RSru3VMKSJdcq4AIdWY/eym4n9V\nlfx2nzrVlHHwwmpNxbNqBjCdQWzgJtqpM9lL9rn4rJVMfW5I5K4Vtl/FThbs\nE3GMrYzDjMqdVBO1GP50nxD5K4O7qzMt65Zgzd7SP9MM13zvI/9QCb4N/rPz\nLj3JRX1PWfE52wDij30tx4Sj/rH4Fbpz9YhmTnfBan3xbRDKnuDcB0TuHJQX\nTflvYAWDUjGNwr1azTOcRcuKCALfTDYoC7Dx3MTw3gp+soSJrf+f99R8G+Ky\nMgO2zoUzeY8UPiCiNW8fyzV2NsRUoQ8jq0RlxZdXf2ZmYKOGKcgqMz+VLFO+\n2wAiY6PKrFuLbcaTm6IX4Frtf8rPDka0xX6jV6lapjVZiE0GWnBgxGNtIajG\nkpmD9IoGAP3oxDy/Uzsd7EdanZ9jZxmBifppWVdmLq4PNuRniCbabEpy7FeV\n2/pTa3NLj8lDZOXa6D/yx4BNlue2b6BmScwVAbrcgc+Rgg0+D9ThoY4OHVI3\nhX7ZSnS6VMtx8vNgFgvCDEK+5jvgC20KBf7Gl4lOJvX+d9KLPrx2z8WX0Ceq\nS6gHzkdAL4j0qVVEWxij6DXx20FyslG33laqPOAkfYPh3DnSGMUTObtGVisb\nDSC3\r\n=XtPt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEziyavJkE0rkUdioAs0fHp3ilrqK6AIEs82IlO5HJrBAiEAwvoYwlHQfpL51xHLtusEGJyamZ6dAJKM24+8zh4x2OE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598460571-5866de05.0_1598460709981_0.713258787175455"},"_hasShrinkwrap":false},"2.4.1-next-1598461028-5866de05.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598461028-5866de05.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598461028-5866de05.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598461028-5866de05.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iH2vPF9RbdhpFWaEKOatoxjqK3WjUbBXYoMCLiyNnYZ/EUI4y8YIobPMca2mL2ZRKMg2jlEcbhYJnKqcBmtMUQ==","shasum":"01e63af3e48fc02df57792d52d60f09ff0bcf9b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598461028-5866de05.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRpUZCRA9TVsSAnZWagAAdwwP/RIj8QIXKZQ9cZmf3Z9b\n+nSo0io3MB7ICEbjph4R8WQUUJ+RJLL8kXqjk8Hy29PqHnQO8JKjhQbl2DRI\nJo1TsHqhJsXUCKlRVfCSTO9pRMWwDra18X9bRL/oGPl4L2ZBugWN/S02fO3h\nFyRL4i6p9oVG0eQeX/1bjlpH654CXGLgN7io0Sa6q1ox0OZDzxlxXVqlfBzl\n8aHmsx1wesCzFPfN3NVXhiGUJ1ZbH7ndvfSydwEimd1Mq0yapTyPbuZl/Too\nL6XyuTJS6+dzQ28a5vvPQMMxlSaTsiCClfu+7tnxRbpStt1O/PYGFA84LSpc\nb75VXfcS2X9NHyPyziJtrxYUaIVOppyI9iV1FfKEFdTZpGPYBqb8e06vNOxa\nUhwk2LAnR/NXJyhdWzVREsJ8xyB995ZJd8SmrB0M+Dwp85Sc3+awC0e8SKNV\nvGvTyLLoopENRaRdlW6g3Wynd+RCuVDodMK6/7RhYGX9KK8h8btcWnU/KvQ/\n2xvW+qQogscj+FvWuibAT7PWRXa77Yc5l3AoMSnc6RyzIO2vQ4SymH0Y8egV\nPpWz2tKz50s0QCdWocE3X4E0pzej7vt+IFbm7wjKgYrBRT1WN8OJDl+hKXK3\nmxuN6svSjuhGxQlFrURrtYy2w5IoslfrR1I4/QS4pytxecodiN2HHOpeGayV\nd9mK\r\n=ayP2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwvgs9g0m6IN2e6HjJkfJ9YcV1rtASN3OFFoGRN3o15gIhAIaOdHsOU8LkBDY0IotkIrmR+0NcVRMbOAa4hP06Ah1J"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598461028-5866de05.0_1598461208709_0.8334203583491877"},"_hasShrinkwrap":false},"1.48.1":{"name":"@xdn/prefetch","version":"1.48.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.48.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WTETlvJ1n4ZwLzAT+QwA36vDcbDdVoLRJDW5Bo61T+zyF77vNYNurNQbQQCz6gZzipSnxLR5hM9V/ogkUqUtcQ==","shasum":"5f4dabb80d0c4c42ab8e5208fadbb4cd95eeeeb6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.48.1.tgz","fileCount":52,"unpackedSize":83539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRqQYCRA9TVsSAnZWagAAu00P/iIKysD+MD5VTUPagBOr\nZwmeked/jQRKksP8GmkXQXZjjtRsYUqrZo/dV69tpYvU5yfSnzKFhwi+g3F4\nClHmomio2ovWohIMebkdpLgwkuaeBrAzvvWn2VCXGNcgn0tAFYz5Xq3M0wop\n3ooXaDTkBsrXh36c2qeFtZpduQX2F0boPUlVcTRXmtBcxAD19KFySZL/Cc6S\n3YcZTf/6sLgd6bIUoJPR4+e9/bXjFjyYCyAUbhosGKWaZ1f1/FkBeAvWYwWt\nuOGdELQS8EIQkDTzy8kBV48zpFmsLNYGuIpi/MklfIpOvgLF35tMUjKh0+Jv\nMm/G3Q+rJUMKAmoYGMSktPFaWYiVcFF8Y7X7+97jPfsH/+9/bpdePGwgpLEM\nUIE2hj9LesoMw4pgbpOlWOtq4g2scaOwyuVn+MLVLgkRqI/ZgeUgvSBD0dC2\nInQimqXdLICFkkwYszM28z/WU+rpf9fjfIm4U83ZwOE+z2mB/+ouSOrKWGhI\nYtz+TAUNP6TVW530728XhGZxDHVoBPXwxa/yOIt7wEAT0h3L6QAOD4vBsZD1\nRnCldPJLj/jk+uR5+tJuRvYia5U1oHbWj0Eyjjf38aHWTCnAX6X+lcnpjpHn\nOYhex/ctwRsnqVXfqsy/bF/vbDKc1iUYoOQiWaxB6/Dl6WzfvBhfQKYZYU3Q\nD/gh\r\n=rr9Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB8LZnY4iI/XjAufREOPeGb166q5ckn8P3ARUdizMBggAiBDooF5AOxOx1i6xVQclydx3X75vcTksFz1fFBqajvGDw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.48.1_1598465048087_0.9595913794318718"},"_hasShrinkwrap":false},"1.48.2-next-1598464963-9ccf21d9.0":{"name":"@xdn/prefetch","version":"1.48.2-next-1598464963-9ccf21d9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.48.2-next-1598464963-9ccf21d9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FG/cFA1TgbZbo2mYVZc1jxhiW+Mk7/5zAGe8evf2orEhT81iqfWi79XZTGD7bsyRlmO0xnHSBpFxjCPFjFivJg==","shasum":"c3aebdb07951c750ac811c3154fd81548f50bffa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.48.2-next-1598464963-9ccf21d9.0.tgz","fileCount":52,"unpackedSize":83566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRqY5CRA9TVsSAnZWagAAku0QAKCqNswC8vVTNj2Q+nqa\nRYpYdDp20NQlSWyVS4sRYFBHVXxgkQKBjIW2SXWG6ED6VOAFEB0FCCV4RHu+\n4gqVeDEIDhBwsX82SjaAz4fJ5iGiqDU5vD44zMlzWa1qnZnFdN9imhE3ZfBJ\nQuwLGW43bbCcSrCFlPrZFxjh0gucr0nx3Wh6vVsB97yLIAycbmwTwyeGXRv2\n9VA1Fw3U+Db/1VSvJdHXSIbcHoLdx/3wOM8Ezp9bLbuiNQz2SXrVOUenHGod\n1LDo7nWZSBD07Y+80TKk5qtJfa+O2WnFwQNBCX2YgoCvYHr8rvQyCNVbmN76\n1mqupJgrVd4GJalRHe0cbh0HIb+SBiOV3vbfzh9JoCR2xNQtoWKSXxyLeVMK\nQJlygt1rD7ekY6P30vdDNeWX27W4v+frzB22jrF3yN/iDwlPYoRvUn3X1OfC\n6NL8EPiUQSuxbD5jZapp0FA81SqTkPUtIFss1Z91lBL94KvhU3jY80pXVz1J\nXF3ThoWOMyl4yOkEdQOOxGyAaoD3SKiiTT7U2li854naAhq5WVPduBk3XvGk\nKNFGhIn5aO2XdsaSUQc+lPH73Ll29RPg5z9Ym7g0WsREIOCxuyhH0qCtaVOT\nxSCmmclOzFb8jPFxHBQTr+ecn38IUgcnrwv9tjtDD7pQ+/yIWCvEAUnIW0kF\nwcLp\r\n=CNcG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE7rHPOBEPkWZtJaEUn5PsLMnPYydBqgfG3ZwfDOTKkNAiARAAA8Ls5L9ZW4a7Jhwvqa59tcHqFmwQz9zs6Votkwzw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.48.2-next-1598464963-9ccf21d9.0_1598465593180_0.880327802482954"},"_hasShrinkwrap":false},"2.4.2-next-1598466571-6412a60a.0":{"name":"@xdn/prefetch","version":"2.4.2-next-1598466571-6412a60a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.2-next-1598466571-6412a60a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.2-next-1598466571-6412a60a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lThAhUXqA3yjeq30bl49Odor82ozvp9HdObwYeVp6SPxGPxzY1ObbxdGiI04satSJp3TECyeCJfNEQBa93PpVg==","shasum":"05f68e2bebaa8f472f4ea7a0f12210c7ec8f0390","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.2-next-1598466571-6412a60a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRqqZCRA9TVsSAnZWagAAkFsP/0SA7Txa/muuWyx583LX\nGqEKbi7cVETUi2TEw9bSgO8TZKWkr9g3lmhAdglNk/6KIxaqa4IKvAhtSzP6\nx1VEZnLXenv9evwNueV+CZhPMMG94WC30B/Wy0HJnjoFfLKXWT/GKWwAAuSe\ns2yXmWWSZWkMxOaRPA7BQJwtCiQp9kxNa8k/4JEqYsB2AkzEo22eXq4jg9zB\n90JSJYH8kqDcSc+BVUPO+96ztBumdOnGmOAsdJI02RJbkTk2R4YcShrcZ6dp\nr3qWe3fVMyX9OLmFWFYfk6/dPDRvVqMpQ0ppD10nBtAaSWfqXlg81NpDfpR4\nhSzOxO/BvuxtQMAWrZnkJrvYuSW2+UXECr9jmsn8er28hOuYOpmOHzTpCke3\nogdHchFHCHul1YjBQG/XEzUBOeVRGeixOiYv5AXj01ReWvKOJupkdfdYhvtd\n051r9Skg/MirMh/gl1Zzs05orRYzILqEiEceeCE/inDaI6zyWe62bS7gVGan\na3gmZinA3C1dznmZs3EGX6bdkjrp2KIui9FD/FxRP/R4MqmEgZd2PLNfSvAm\nLFGgVeQeE1FRthQnZ/zaH1rkRhkZgh9OtlUTIXx+UMsMDRvHSdjT2WJ5I3yY\nEJiwlHtQ/RpWnart2N++ed0rT36VRzGc80WjB8Yy2TOile6VEFtC34TaK+FI\npTs5\r\n=E8o4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICkv97ZhrKiUURU2ZFTcWLE8MJjeI3fWe140s0dOKUnxAiEAqcOSU5+wufyI3cKgwUKNg+NgX+U5gpCbC+cOVsFI5W0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.2-next-1598466571-6412a60a.0_1598466712699_0.07521964128390501"},"_hasShrinkwrap":false},"2.4.2-next-1598468870-2c6fa743.0":{"name":"@xdn/prefetch","version":"2.4.2-next-1598468870-2c6fa743.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.2-next-1598468870-2c6fa743.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.2-next-1598468870-2c6fa743.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-h/GstesqFsBl2wKVfqVruQfCkJ/y1aO0jQvG5DFfxruR7EgoSOtpK5gas1ZGQpgo+69dJr4Z1kQQvKdc67tG+w==","shasum":"dd1737f6716cc42857be6be6b3f6c3f522541348","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.2-next-1598468870-2c6fa743.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRrOmCRA9TVsSAnZWagAA7HYP/jdsmiieW31Zfkbm0ZCI\no6gg8E+GapDK8htbQiOkfZyDjFrvsi46srsLFdumTURrtkudMlJKddPNnRkP\nes7dCmNZ59mzLsJshXaWGdWpdfSvcQ/89mvbgkxPRMWfoJXz82I3kEG6SmvL\ni3uHwIi+r6VBDYc4kbkisyKJVXhp9l3EnUiiYnrYsFnHvYzFw9I8pWZ/tGr/\nx5j4I1gu0QbBdfZEYqGPXhu+CFvIqzaTfM4aHkMiYkJzyTXa1xHPv9kVtsX5\nttRTgHcLs8n/t897Fg4WnpvAdSmOSYhBA7QI7szCdoBODEGgpkmfDgVEMNqz\n1kwxLQfW5ykY4rMKJeDlwrvFbdzIpYScChggcs0pxIAXJ2ml8h1+Blo5kFPd\nnfuc277RLJQIEDxbekYqWF7q8dGNtmi7tRKS9Dl/H0rxzjDYWJHi/kd9DPnx\nUbNSw8GjeS6MzyznYjFCP7rQmC5dh7IYVDO9HPSKxScjtYCXWlsyPB2yUCeU\nTdnizkzmt9BUM9bTsjSibjXIr7j+vewldYJsOCFhrKzz1tAGIW8P7E8PdQV8\nwC8/JetFMR3F/i3saGz2jxZ4UGhtiMLUNJmnNwa38ama1aado0yVX+lMnAIQ\nnIw/ZHiYdC8wDytiEO+NPt0I69wE4J1F9cH9yb7RG5xol9vUknUfzltfZle9\nAo/D\r\n=cEot\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFs3CG1vLkWwSOkLbIaagXCz726DWn8cYMY2VQBy9x6NAiEAvh6liYvXDUU0/rEKrvGiRK9H0hVHffO3W8s0DZfEHes="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.2-next-1598468870-2c6fa743.0_1598469029715_0.12324608434000761"},"_hasShrinkwrap":false},"2.4.2-next-1598470440-3868a808.0":{"name":"@xdn/prefetch","version":"2.4.2-next-1598470440-3868a808.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.2-next-1598470440-3868a808.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.2-next-1598470440-3868a808.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t4Bcc0acdt/qDr+/IrrGZD4ugPMjPzrsgX7A3dhdRC8lcd5bnQYOnQ52Iy99W+AIErVysx29OysSpZvFTwEZdQ==","shasum":"cc3dfd7579572186c61717ad0b330c486722aa53","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.2-next-1598470440-3868a808.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRrmgCRA9TVsSAnZWagAAf5EP/3fjkr6VOUynwli+CDeQ\ntTaYuCu6MRpxND0KXDBh12D3kyk0PATldVT5AzbS1WpeBM9KRVyAJCtsntMb\n+O6bTzWyUevYIjp4wPb4/CJIR+9CbcGD9nlDTMsIp76YfcjdZZMIi+WS4b4r\nEufIVZRNjyvU3KyZ9uo2msD1kr2ml7gYX52PKqM6j0IthKaPu+Q0TWpHRAEF\nN6V201IAovbb1RX3IiQrVCYuL8OI+q23PmByhVLN3maveHlGgNXJ3c9+WLAs\n7o5P2f7g9chSnODV4ybA+8f4H/aQrkIhweWb7GUC62FZyNQoAQugqnn02bH/\nihb2L3AfCcyNwAtK4vPeol/FUwkSyrWWEpZAHM0eTVsssEeL2+zR7n7uZrXo\n3mAZJnnJfc2WtTC26LHwqvB8PrZHkpdevkyAs3YakSyjam3tIjhLuSgrBwQq\n1zH2J5MCGZwlNTL5KrzJPrnbbNGuTkQo6wvKJH8kjvnoEz1vDamJFV30Z6dT\njPW4hKBlddKcCvdwWxMrVVibTScfhg+6axsRzeC9aC/z6JmRB77erbru8A4n\no9Q1JvQY87JwfIp5JcD2G569e18WqNBHPD7IsSn+2sKcDarbi5fxciNBcWih\nz0WFSvqlcmUwjlUjcAO0T1JjGswR8LgcyocDmvTGofHFVAu9ERzBH1Qt1kA8\n9guw\r\n=kdTt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDnM1AkRRu/yfI7/xWHOTsk7iyQfLYpF/kR+cI1iLfjwAiARnq/01DkKN+WwpHents/w8cH7POFFpxYdh4RVz0LWtw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.2-next-1598470440-3868a808.0_1598470559935_0.6934394045789065"},"_hasShrinkwrap":false},"2.4.2-next-1598470866-3868a808.0":{"name":"@xdn/prefetch","version":"2.4.2-next-1598470866-3868a808.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.2-next-1598470866-3868a808.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.2-next-1598470866-3868a808.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+A2wpBfQyhRrAUR6LfaZh05KSfJ1WYpStnEXvDRdOHnE2n2nMzwibDLHyADZxVdwEwMVLOdMtXgtzZvBRD4wBQ==","shasum":"22836d49508d737bdb73260068bbd7390d040dd6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.2-next-1598470866-3868a808.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRrtoCRA9TVsSAnZWagAAnsQP/Au/qZ4Rm8ivUYRxCe8V\nlFHGe6QLuH/mJkQfg/72/HrQMPSApaCBESmCB3LRUcUq4tDcuLkpdjOzk6XX\nIkY11qxnUdEJE0fsKwow65TRqGuv8gMfcJSTnYIDyIUbuxDo6aoUhpOazeH8\ntyJq9H06wA7fHtNRUq1g4iG98Zvj2tOprsaOFZZoJd40yX/O4wdqFzl6+qDB\nOUBfDmohabhU/Etb7zuR3aG48HJIld9D6QY2IwadzVW33UF5/EDx2lV+YXbj\nztYIL5VmmepWJaFDxLB6LFZhhHM0k4x6ssnworDiBRwBG8lFIBYb9BD8rsOK\nvUeJP6qXI1RJswiOFXAfXFSBL0W1OvLfiXwIEwJ57xr5m3aWpNiKFvEK+EAF\n5mwCV7P+Vi5/K0H50Clnj7heLYL3Y0kvi2XxOWafYjBH6n1UxuOKz6UrHYTU\nue+whykRa2DVAhjXqEspfwMwmKbNZCGMv/f6W6V/CLnrQZIZzJInhlPdcxql\n/D3iSd3Jg2bddI7Id0eMkarbrEwWpBuXo2Hm80zKyJwOVwqQEwXI1gDUwWYI\nQ6NyVY6AQu9kF9p4txRgR9Ye727eUAWLU8K8GvGNKSKDUyLtH9c4cNaSgRgT\nbav9qVKVuVH09IDoLEHyyZNMAws6BzVLgwT8PrcIaa7PWXd8AUsrzJdKNADZ\nkxh1\r\n=okzJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3frMAPVhgD++4pq33AxYSF2NVZ4iJ2Ck6EqkMZEhAgQIhAMmesQlA/6PYIMYaokRgQzqip15tm9DlAJasaBQqUup9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.2-next-1598470866-3868a808.0_1598471015866_0.9960299589695902"},"_hasShrinkwrap":false},"2.4.1":{"name":"@xdn/prefetch","version":"2.4.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.4.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ewIGi97CjaPnGlqn40Ro6oBWGzJqiFqGrqiMoAeSEDmaj0PJ7Z7BDxwcmhXg0iIPjR36Xzenrc1XAFYgrGGQFQ==","shasum":"c9881a5746ac900bc7fdd57762091532d1f691fc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRr+aCRA9TVsSAnZWagAA8ksP/3Q26RhIiqncBZYQRCuP\nGjzBqy9Sw3uKRE+KmDXB/Rp0IEEYm1dFoqQKeruDCjgU5fxzUOqRqXqZxGqF\nVU8JHHw7XZZmTW+0O8dHIt4/LXHSSHfPhOhbxl3YKZ7EAdGoUOnaRj28rZMM\n5wNJDfwXzljkiiQIzGFCwaua921fw5+SF7PlbdKSkouYvjFCavZBC8qCCrJD\nmUK1E2TEGZkrzPi41dopaSGU+MMpipwLHWv4+7/H/EOaATs2kbkwsUpmOuXA\nAmk/KE6vjz695BynrNSx6gfouHa0erBF68KvK0cpRQNUm1hmmFurykO98AMV\nGBl4oQJm+jMQNFnn6ahWCAvwE0s6oPcQzablumYTPlCdEX8nT5QsfITkm9/b\nGmpDD9MrJrGCed6rKpjzvrsdKMo4mXZIweimZ9VO1MvokplfLmH6N9OB4Twd\nLbyCs2QBQmEVo/jwFKH4yOjGR/5I7qIJFoTUpVu8L8mMOXAyMD+v5GYSW+67\nT78VfJUyURoeuzt51ZyRP5LgmHQGCLUTu6zJKZ5VsGD2mz0RXUo6T9sOhY7A\n2XAFsNFgZXiJDjT/vwUrkJ0Vv6R08yLsd6mkuECBYJsUxAi8ihpPNa7auWYa\nOokqyN/OX0cHdcpS4xlgFXUG93b/+7Iwc6qnYBPVenZV0fvS3CTb7NzElPIX\n6f1h\r\n=wW4G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDu1lBSWZBDmOiE2NRQmNZNLX5nneQr3BeE2BZZxpJ2gwIgavZHtjL74/4xwAmBJ/s8ae1+8pnxjC8saG63tV3A5w4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1_1598472090038_0.47555039946176647"},"_hasShrinkwrap":false},"2.4.2-next-1598472235-0252eb44.0":{"name":"@xdn/prefetch","version":"2.4.2-next-1598472235-0252eb44.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.2-next-1598472235-0252eb44.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.2-next-1598472235-0252eb44.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kVOJyFTMjVQWv3LnDUNBMLhDxpbjmwZ29IGS3dsDGpS6VNJaXGYc9DkumJryM17AoFS/wqLitewo4cVUGdQwDQ==","shasum":"94d07581420bf95762ec1592c13052dfccb20e2c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.2-next-1598472235-0252eb44.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRsDFCRA9TVsSAnZWagAAuJUP+wY6IipyxLlVVlyJK08q\nc9xPc+9Bj2FiWb5+g3YVDNh0K4mjYF6NaRS/bkcnZzMrCArjxoVhfQVTdAvk\nW6tnSnUccq1G66juXffK7wKErWFwh1jfsVVXXG1zlutpVLqMxnxnkHKvUnta\nVF0exshQIYNNSixdsvQ2Nm29zrxkXLXzDxs8NS6aBf2D7dOI9BACO03Yy5L9\nowHu3M19+wSy/dEsUrcJ4C1y7J04mEaaVa7ZwesaV+zZyVwE/xj+pecw62q7\npFCauGb7MfmHcPSbwI/5EW9VvGzoW3HTkI8THPJPse0+1wvdjawhj/kaWjuz\n52oBZOer/aThP9FJUHiLuM8so3/RIPdaTXkJLTC61pQfbZ9cmlQPfKVWIO/K\nfWlZ3AUEan5E+VgJbfKpr/cHqwiC86+iJZf4ZXLcd4L/Na5KfWF9uPfWEFsb\nYkFF9WVV2C/XkJVqvZ2juZm8sSn60DD7xC7s3viUBS3ksyLzvlvRA5omSyZu\nxhboKiw05X59OVKQODWcm4F3nFC6XdkRkFSMARhans/i1yvrz32kH3gWSSqA\nzzNBjW5oGIs5XgSErXPGGylkxNYEev6/mO1W87jWOU5EVJhLHs6PjVLSZdwZ\nI8TpNBRH+Z22rufnC9XtgPRmD53ej0VEkBFepap/jayZ+6jIe4Dsr1y8bAhz\nNIFw\r\n=FMgi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG4oG/lf6xFRhHLa2WVITsg/vbMj+FoyGp3pJ5bj3pQDAiEA6VYjxsa4WGT4aE7I51LHpE9zi1ym1WAWCA8qvPOO4dc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.2-next-1598472235-0252eb44.0_1598472389282_0.1627753053873775"},"_hasShrinkwrap":false},"2.4.2-next-1598473779-b4730947.0":{"name":"@xdn/prefetch","version":"2.4.2-next-1598473779-b4730947.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.2-next-1598473779-b4730947.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.2-next-1598473779-b4730947.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1It+N7FEAJIpDZwNmZ6dtk/F2XLZu/NXmDxwj6yd5ptw+5UE/iGEIg6u/arE5WpM+FL3UvRhs4NJzTyyAlfExg==","shasum":"287f4e9bfec85e32bf0065a02aa7e59142840a7b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.2-next-1598473779-b4730947.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRsbNCRA9TVsSAnZWagAAGUAQAKOZSroG292VMoXJmPMJ\nm/dnaJY7pC8Zqrkv/3eAqQgRDUN3Zu7WnjaxNB3UK2QS0RzVWsh53DCCfenK\nxs0l/EYLXdm8JZLBIm72LWWyFr8J71QwqVlFVpMQ1DVSnFMe7cnIVRgg3KPa\n+/uFOBlXBz5Q2YXYisIE7SqOXzrAn1E7qPzgDUmmokc4mvtjLCWrVk/F/SQN\nV2Bf+Pd5vG9eO9oHHfeNlLxifPaCgIQ0en9Ybk8zHilGlnJ0GaYh7gaIvLDA\n49c6Jnxniq9s/cm4uQSg/y0occycDdIjBA+lg3y09ceLFt7z70nrPE1Is74+\nFZ+DAFOj82ByVbdgYNErjfC7b6j+RJOcbF+vmwZJEODaBm0MlTIEeT4BWrqJ\nZvImVzgYuE5wDTH/Dc5p0XZ0unYKlqGr09nW86QxiapS+ZzDdCqVJla39stS\nZug/IGDeVpP/7uU6IpGzUNSCTG9agb1ppYhAvjgQVJZ0B4wVybMXRHQyK3Mn\nv/jDzO0xlbcAzjVVUIKmfonWxp9vAqsVPFU/+7DSFTfFwjLJYm6pz8KpC1fM\noROxlV20H+zN1AkeuUu2qLjIKxbEHeaEc8T/+IUtQthILcYOx29QpNNfl6Af\nwNQrc5OZmFC1oNuBCpmbXzL9FF7ztXe8msEVL8IuyYM6kiWRyF0OoVQlo+96\nyuyw\r\n=VoQd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFykCFi2+DhVR+kVts1JYHwuXlaw9fJW5h6qqDNXVmh9AiEAo4IA022pqr5hGX3q6TfKXYg3NQhWH1gLCnW7vP+hVw8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.2-next-1598473779-b4730947.0_1598473933041_0.10330915549137365"},"_hasShrinkwrap":false},"2.4.3-next-1598477257-f4f93890.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598477257-f4f93890.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598477257-f4f93890.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598477257-f4f93890.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7Ho4mzEI50kZZgIIp2uHLHUEjubfJ/+PemTztOLGI4EPdgT9d3Xov75AI7MZslvjhNPkzcOQsaT9g81w6ss5uQ==","shasum":"18c2d08f3212f237dfb1483e0a9a8cae2733dd42","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598477257-f4f93890.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRtRXCRA9TVsSAnZWagAAedsQAJ5JEpHnBPou7ZBnrkNt\n+tLXTF4BSaDFkSCctAeV0Gf+Gk0E6Uivm43sQWYfAsh3gxkAQrNFVpFlI8UW\nliW/trJMmUWZTHp+18fjMrc4D1ZKDtyr8tdMdTySWSN5YpjFVQAhJexg2Zi0\nG2XhpSy/KFEu+MnhoyjuopZHO39Le1cA9V48EH7Cf8Tu4amkPkRPZ2zwhtVC\nJ/WPFFruMlEQ4Ne8USCCGWImrSd3rR5IFM6vrAbIN/HGtyeVD3+BmZTbpBeD\noh6FsiS3qWx0bf1BKH/Ly/RAc3Q+W2AJUqH4+SaD87wW91jKjnFiaaa6JZq5\nRnMyAHjMcMdfRmwMvtRnGUVnXUYBrAy57t88XOC47cAhQhEshXCGVffuEVCc\nuluRoJgZ7RX6gnwWA+0wFVAwTXTen8++XRXdSZwGhoQ18qmATMqFdouzn7KF\ntYYJzCLdqMuFP9cBYwU+FnfT/dragIaHKSkVxq6pWtyo575mKsVweafXHSkg\nXEnCsw+6fhnopbdjkpBBnNDKFHc/PHn+rn5c9SNt8+YZmmuNODSCOW11foSC\nxpuv7jWmfIXqdG3pVlPbXf+M7dRLla5OMWigx+jiimFgz+aaZjntdhZwsRSo\nVyCwIAhEjHQ+XdNNN3WCmPt3tAECJVzAkRkzimsbZcqPJC/Zi2KMHDb3Z4pX\nQQLL\r\n=P8q1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICr1QPYtI0jr1FrRsKW4zKq85SuE1W0A0nPTuH7zbQQyAiEA4dB6lsq879SCN7J/MMyP++ipOgAGGZc5p3aHKGxIHJE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598477257-f4f93890.0_1598477398747_0.7427312212391763"},"_hasShrinkwrap":false},"2.4.3-next-1598478068-f4f93890.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598478068-f4f93890.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598478068-f4f93890.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598478068-f4f93890.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3riYpzmcplX3EozApyj/e66TcmFv9O+meuTeg0RmPztkIvrLIgVU8XAsfK/GRk8yM2pR7jEXrQs9yi2bBPev9w==","shasum":"91316a3e66ccd25e1730f2f3212be71543dc3a15","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598478068-f4f93890.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRtd5CRA9TVsSAnZWagAAr0oQAKTOc6+kGt1WdzVBaYWR\nMVfazW9y/KVr/Pxe5+f9cMgHxL7v+KkzaFgbmSnTkoQEqMXDKTu8a33tu2E8\neVW9w8DSoULUXOUFTGBKcF2LXHMt11iu83p5/xF/dVC6xRx4K+eHRIJ+JN50\nWGuVXijCciyNCFHUv/xNc/jMphUX2ZiS1CupG0nPVBXUUiD6Q8fHIir2r+Ny\njENtqIAZ4MgQgittP6YDNdED7TxOEdNF5gJ9cu5dqVZqkzoL7C6kj1DxcbBd\nFruWebrzE+32wlZjZM80i5QWlUXW+fDiUwTq/VIMJh2fGFunQbpqGMIlY4Xa\nxOlKS8Fk0CaWlQBJ/cpmgLBbCu6UouIH23Rsi1Pva/DQGsC6BdIt6MVrPLR5\nx+ky/jN66l+8uP920NbxvVAgY+08sbZ5xLZuXbFojIbR9J0Kbo4dDSjQjl1C\nayZkvgNwucG/xxOLzX4rg0aZXV4Y3r6AYhmLaBXq7Ou90xcFcUbgzOKEK0d9\ndM135yQHP27MTRWF66v2ZYBUXp1WJu6l9fNBPHxd8auXjy/Kei1TqNHsF3ct\ncy7M0DI7F3WBJfljU49Q6REo2jjfr91Op+Bjc8LfDGgQ0Mt158NrHH00E/S/\n44GgcD5HOa97dvs91QZJ7vAPajRGqRw/Q1HSzuTakNU9yqDZIVldwx5RsWmN\nmlhm\r\n=LjLp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7MAHjcFtzwniQLSe5e+lQTxhfkXe/P7t7+tlIL4RjZQIgEfUqv9AluBxLwNPpYEdMQIAS4HBfEx/7YDEnW/vsWKg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598478068-f4f93890.0_1598478201187_0.20777117623328545"},"_hasShrinkwrap":false},"2.4.2":{"name":"@xdn/prefetch","version":"2.4.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.2","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.4.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-snRbHQMb179ZCQ7SR88wGmwcVpD3o6IjL62tzTmGSNfCBYVQsUOHH5eB7VPiEraFAFIF8T18maBp545Kc7JEeQ==","shasum":"2013be5606dd79e0a349543c681d34a2d5f370c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.2.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRuV/CRA9TVsSAnZWagAAoagP+gMq/BYELC23AdCS629G\nnGmH/hFvG0To+4UaeAdUA8dkS4JpKXlZlCV1S1aa70pYrtukrvq77Zj/kCBl\n2Y2+p3o78Gel77F4DIdZjPUk7+lB5QdEjLI3UgEHIY6YHnXAyqb3jzHsyPCJ\nV77Gm47EVKf7FPvmIZZ7RCw9aP6u+1Tqevit/Tf/6sxdw314JSoI56zTq9OB\nkiLHeaNSQSBMMbVy1Vz7QlpY1cTQyK95r35GlLWRNtO7nu+1um0KlUsUT4f8\n2CV2dLGdH021Vqw57aSuoxHLgJdfmdeKCqicHelNr8Kw/oFqCxTSSwphju74\nORwao8Y8xobX2UBESopp8MeBRNWi5oekKn1oBaBejtWUrzuLuqCFL2OkS4u9\nKcBSe44fC20yR+GGyFYDanscXPhNtiSo0esdOq/sKojtfMtOTd3rvgnRtPu9\nsUqCrlUwhoLEPQhOggbUktoV5cwB2sbJMACrj/e0PpWnXvyW8tfwW9TtvICa\n7DLW7DA3PkRiBzE/j25oW5pEUq3eM1TysOl1+lsWGF0aDTFRgS1xrFV9Qt7N\nf1fRsezLuGNThPz2RezkgtHpf/ZyzRXFdZW+mQ7AF77dUkGhRIWFBIzMrvWX\nMpvxHdBVk4uOaaZ+ye5H38rGZQdnxjBLxrZbiE72KMdfiJ8IjmNIGN4ENQ/r\nacDZ\r\n=3f5J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDrePz6yjiI+TLqFEO60OH0l0+11ISC5tZC0SNhOTplaAiBFqsPzad4N/Bx+qIn8ykVZbnRmFbALeaRRCbqEnywirQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.2_1598481790769_0.7229655983594532"},"_hasShrinkwrap":false},"2.4.1-next-1598513578-54af56d6.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598513578-54af56d6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598513578-54af56d6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598513578-54af56d6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SKGgWfFhDnkzfBT0/87+4Q3hbEQGtlVkw/q0B3qoNuTGZC7VMpo2HhIhtbtaZ7ocgRgahz5/QD0Tou0zDfckcg==","shasum":"8b7cadce851a746053218d09bcba23e6a634c97a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598513578-54af56d6.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR2IICRA9TVsSAnZWagAA5FcP/3D7iR5iGkmlGeZAeqIl\nvIpJzubjx7oE/BmP7H8AIdnqOwBt/0Q5gsIkmM9QDEsolq2kVXTifx4r0RQ2\nxVz0vop22KzihJ+6CvqwvY56/wpD77Xs+ya3m4I8+iQynZKhpqWZhIXd7Z+E\nNJIeg63zrB74nfslti/GNlsDr2ZK/3Onrv8K+j+AqfE1bLF3lul8Bg/l2HAN\nr4ettcuDayUgrV7MshE93MICxFQl7NMd4R9eCZyUEHdD1rsMMCZ17D8lmUID\nP43cgFwwKfgjZc93xYzU9hgtDibAtPp5Ep+MQbZDYuRHi8UphFYSjOAo9q3k\nvxCNO2W+mpbujShq0bbLIzo2ewZvyOPnXzTVsRAtIwyJq9GqwMZdnrIQuZAo\nall7S7MIaLHc9LYKYcZmgbtAfQc2u8GFmlopkIBTXL77LFJrg/WAft/lbUJy\nrFVd0Z+OewOXEUV6s27iPNZAdkSilBoE5F7gqWPJHR7BxCzt0mQF6QGIpz59\n6smKiy6AFQB2KzU2g6YVveHaQD6bbTGn/hVjWh4U+1t3985/UWuifo6BLDyf\n3CddyhLDarc/Daw4XENgeCY3aacw9YXkowOqHDc4uF0/6Ej6ruy1NDAwBMxO\nhu6JVpWu2QNrY+0t7sqWByZaVsKEo0vO4k5lU/Fo4eiGaMX9tV0r7lwy1Xam\nGDYG\r\n=1lUl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzptzneYlTrvsvpD4Z8Y7zfekmzStWDoDQlZSQkPdUsQIgE7za2xsXEPJM7CcHCZj+16Sx6Vpqw9yze03DVXBC5x4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598513578-54af56d6.0_1598513671995_0.31890933278895894"},"_hasShrinkwrap":false},"2.4.3-next-1598517629-b5f1f466.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598517629-b5f1f466.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598517629-b5f1f466.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598517629-b5f1f466.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uVopvCweh53tK2xuGVo25OgtMfkw03VTRkr1wUOV6UvESb3yFB/pSvhEvWxdGAQ/+WIZxuMr9PJjt+akcTuiqg==","shasum":"1a3bc1671fd42ce8b5dd4168231d95e53d9e7fde","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598517629-b5f1f466.0.tgz","fileCount":56,"unpackedSize":104276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR3IYCRA9TVsSAnZWagAAPzMP/isECNlu4UKBf26lvuic\ntA5hDjGgHfeQDbqjXcEFYJjpMppuLA64qgmRrtTKoIqrxxk0vr7ekw2LbMWt\n4e+q27FtF8leJPa3TuivqiZ5zwekzPpVzknck0bUXFGwAa0MYGuiqrsFa26G\nRZ0XmRQwN12DKMKjSgrQmLs5ZaroGB82PeUo5UvrGWeK5eypy09gtbvVC0tp\n8zDyktWKnFHt6astTTbuTDh/SZ5CDR/gfIeghc+P1wzq6j6Iw7ARpn7W8cbg\nwXFtNwWx+CsrTG1g10tjfqUtSetaouDleuLv1RegSJTQA3rTtKS6TmUlcRUx\nu8iQ2Nd4jMpX6tw93C4Egmwc4rSPovGk49KtreasXzxVtZ4h6bmFMqwqg3eO\nyTDksuNEROv5EnT0gFqjZcBxBrHOn6ZR5Fl82T9hLrJmwRz1fKOi43d/2yAy\nmhF8CoqdZr0wvbMAdF0ug8yjaJjesARkrERD1NRqT42nFeZdccGirsQmELA1\ns+Cs1hKATiqplFTTFMdhS1Gd6sT1ySM9qfpN5ET5185ZyQVPyocWGPbLnxwL\nyQSlp147NPfyWP8eo5507fTVMKwnzB8I4MUKs76fury4WgUdWSUYc3oyIgeZ\ny0Hz2c5CIuzH+Hen4+n3F0DNiZ3kk7GQyHwJELTbjur/cg3NzQ/kQWNJ5GEY\nom77\r\n=O5no\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPOjGjAq2tbGUDuYW19VYse3CIQMudmeq7CEUdBiP3UwIgAmIFVnMzo76sRxqKdZItiVqMg3BJeQgYfahoFhtFtBg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598517629-b5f1f466.0_1598517783635_0.978227928868397"},"_hasShrinkwrap":false},"2.4.3-next-1598519508-3c25dad5.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598519508-3c25dad5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598519508-3c25dad5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598519508-3c25dad5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-u+4mGtwHMbI1JdwOwOyBXYUoHEat20uhDvS5CgA+PeMpL6izdqUudGl951G44jHH9n1MCzh8MFyM2POmLkjxeA==","shasum":"b94796bc188921aec9aa4f7c24cf9f3f823c0da5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598519508-3c25dad5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR3lhCRA9TVsSAnZWagAAmtcP/RxoV3PFjAmbqC55d99n\nC1KbZD18AV6kDBP2CW1pKOBn1vwr+2cYWN1aDe63mmWyvhVILZL804FKJUIW\nHpWyvnok4Yz5drJqD/8pza0Tw84flZh+2CvBvUi8yeuBcAiBuy7cXIcAwXqC\nK3CXcs+aV1qec4BqgTZjYqnAn0vKWzONYarhgn2UwwXnnrQdCKo9QxWSb+li\n/YPJ1eVpltnsIViZvUOF5fyo7do3jo1mJuyGgDQuglicrHLpMAUav9sgoSX4\nJzsBroU6ep58F36CRYI8ZbJkEIQz9OIIcOXUNOtw1aBYMm/0CnAXiIS73G6X\nce0IZ91g5A5t+A7EshT5AGlnP5rhl+Dg2P1DNFguquwXIZaEfyBQceKUAzA6\nxqG19rR+HTrWX7JDFeWucZufjoyQKtxCkBlIrfLYfUJ0KFuBLWY+lmL/04fo\n3sgDxMlgCZS+a0U1Ynqjgyt36kADbuj+Y98NUWdTnMTbxDkS4d4UHjpeIOsa\n1vwZTcdusLzghjjjazDxlkidT3e0xoq32l0QMJJv1/04Ds11c3CAdrR9z1Er\nsDtFxb+vuhiC/bt2a3BpQNp9aMafBQJ0amZaLFxZsxEYWstrcO8resh7cT3V\nijsDlMjmmueQW0ZHkFOs5QCZ2Fdlu3nvm8+iKaJQCC+A0UMDco5MKw+weKf4\nGhbp\r\n=h1z4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8wB8kP03TbJoWPN7gVaVR2avcEdRvMvM8aR120LzcuQIhALalzxh+JELna0zz5Bz6WdDpwENhraYOcEc8a6fty6+u"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598519508-3c25dad5.0_1598519649320_0.5997167392822387"},"_hasShrinkwrap":false},"2.4.3-next-1598519803-2b4f860a.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598519803-2b4f860a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598519803-2b4f860a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598519803-2b4f860a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RLl66QP39EJACdYagbHRFkoqhaThhMK8dXJq4NlesyjZQKItneWPpabVX4hBIZu84qvl0vy0bXPFEQhKU71Muw==","shasum":"befcf4d5613b388d1d2a82bb3a19ab7f9af0d8da","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598519803-2b4f860a.0.tgz","fileCount":56,"unpackedSize":104276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR3qICRA9TVsSAnZWagAAAL4P/1C3Bl8PRQ6FbHX6aVqB\nDZqJm3foSrPgjzU3v8B1wUzAETMsKNmAaCmf4POtHcgvJTpDiwHL2F8ymDDO\nwbPjOYdeEEZOcqdCpgfdQT/gwgypei5TwOe4ODseUV+LV4DgIZioGp81Mh3y\nETJq+DtjSGlWJKHRzk/me2IOkDRhFfKyy7arFvwM8g5kfD0IuX+GlepndWoE\nkMgZP2F/6ek6dl5hirD5BrXbup34Fnd4Hri+QAba6rPhRFD4MoZ/0Zar3SjO\nMD4df6Jf9XrYfpufeQJ48l/UILjkAHg+LWkGCjEl8dZbfsGnH0LI8cvSThJN\n/xQO/OlbblO8O7gwn4kvTX4mDBiLksZY8DWl3lI5We165/DKyVe6vw7MO9iU\nCt8BJWnTiAdE24n9bFdJjKy5yhHQu0WKsFOEJBVZoLfD0Odw12AVfqyGqeeu\njOntRhoklE9q455OH+pUh05WGpkjeNlGjDyveF6FnnzHIGOOKIbsM1FKL/Ag\nNKO94MGIle/RwjsUp7FfVATPe2ArgXwjEEFMwUhuGHoV0Nb9KeA7f4/G994l\nU/xXI2uZLF5WA0aaJkRHW6N4JyaoAB6Kt18BERRkM2TrjO2iaWgazGb8q84n\nLjjs07Gzo3AiPnD92sk4ZgEuUKlDKbVvJUy75CsbAlc+IIQ/M7aCUTqq4aB3\nvLl5\r\n=0KaW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC562ySgsUggzzFf8lHkHNulEJJjpx/hw32iyO8/x9kyAiEA8n2OOzu9rkhd+Vug6BP17UMpaKnFJS4cTRDW3mbLCis="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598519803-2b4f860a.0_1598519944119_0.6832721684984553"},"_hasShrinkwrap":false},"2.4.3-next-1598519988-9b78c838.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598519988-9b78c838.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598519988-9b78c838.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598519988-9b78c838.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-QVxGyLqAgmb9SmY5p+PEcaGhtzi9vP1k3QHF+DLcMh06whFLOgKg5rPfZqrTQzqQRSrPogq3HPp3GDcguOH95Q==","shasum":"328cd24b8fc90ed00f07b11b41d87eb6dae5de49","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598519988-9b78c838.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR3sECRA9TVsSAnZWagAAFswP/0j2ZecOiAbT4Jrwpn2M\nFz2VZJJ2tkQsjV4f2Ri7GxmXhjJ8OAg5DLre9u9S1p0vq+UcdXjPLyCaUXLq\nY0bgKmyuAFEQFi8xVhvQEsoMrf0glPwlIZrNoeIoOf1kLUcIjRwI6vExeS3p\n8MdQYbKBwibJvH/m47fLNpaH/xBc9Yd2+8LOXJyDlY4j1nr3GQqv10eALAYK\nahDuUb14C38nV8x/Wv4IFcc+fhVjJXkq4LVllWHInJYUSkiABmiabbC9Cw+b\n4OkZy6CvwU0DaU4C69CtcYohXwjjrx70+C4RW8n3zEkRdz63ytS1bpz/MuGv\nbwXfaq7oLf8PXxLkSE2Ul0XuIZCyyYkskGWmD6NEp39OUM77CCU0vHbF3Y0N\nw/2GOzOLlw/kO0SLP8g6ib3nf6Cabc7VVZCHaoxiEw+uY/r7v6EFDyt+hmOz\nGBcVhns8MM2onToi7sY6N897ZpmZizIG9Fg3LDx3Oj6+78kCGNjKtOtlM8ph\ncpkb0X1s1UXjX1utzrQcrTsKM9zU1u7bV3+QQNyjRuY8/M7mX3iqwPHoNQlK\nhXHAjdvrirI7ugoYBFwmJbw4mkqPXSaqewkDneUumo0xIZll6sEh6acFe9Og\nc03Nrvd/eesi4J6ppPSI08MgsTa20kzBhzpxhR66Q4GYhzxEByXOGuAxxMtq\nzmLB\r\n=IERX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICkZF9c1xv7Ks2jKyk8qMfVbolqD3gXPuj6xZQJ3Y2u+AiEAvPPWgr+bW+sDX5aE3PgtkljWw3D8eObIlY7RmWg2Qcs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598519988-9b78c838.0_1598520068244_0.050244053074117945"},"_hasShrinkwrap":false},"2.4.3-next-1598521092-55cfff36.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598521092-55cfff36.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598521092-55cfff36.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598521092-55cfff36.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3+xFRq3zLyXmKOj5ERtKESlS+KqdP0zJFO0iSbzmF9taQmf5n2+CBViTk5dGpDSgGp+2kLlKfJfUNtNsCVlKMA==","shasum":"1c8d0123fb7d7f167de3003b6569a7272f8361d9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598521092-55cfff36.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR3+iCRA9TVsSAnZWagAAhKoP/iMiM+0zCaaQdZMh05//\nud1KKeB1Rw3VRoFR0HGCE7eUwbSYov4Dj4YEfrpZFQhSnCHa6Fg9D1dQfWfl\nEqLh6F1YJ2znoCk6UxxqKVBJPXlOHlgdpqKW4AHipZWn64/XUSi3SFkHtu42\n5dje7YL6+0KFbhTfoOA1pXnE3a/klnTjPCaExShrBf4rhpn5LhkSOcfWhhUZ\nLsZmAKlQHb7689S8aGBq1pdv0PMsRY+RtUTNcTn0+lZeAOqyTL0KFYMMLZZ4\nICzZdYZbiZuYI9xxFASFEObDjMeejCgZUIfPFXzTRvpgEtR9YlA69/UKljpN\ntUkobnOSG+VH2iXsLXNpeamVFQbA6f+ICL6BVfRDNcdL7uZsNLHcBGepBExU\n4nnzu66i+xLJVzrB+ksa3h7Xw6yoMZOgjPIKfq1hH1UrmM0m10ciGisjvQxm\nKxFjIriWGALYD4II0EedJ4YgUvqYZWReKrdHVwTTgcJC7t5LhP+Og4XDpElq\nRwAc1QBA+MnaUQyAnZLxf7rrEqyuTBeHhLa85ckLX0YrtoM5Y34PdXLEb7H4\nQp2vuFaVsikSUHimAvjzw6x6O15InWukkYwxGk4muil4C/kz6/TpsdOu85xS\nbTXH6AgizD+mGfHIfDMhvOxXk1F+IpauTEUDGFHPW1gO42NT2bGbImPTIf6T\nvbdK\r\n=VysI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqMRb/05ODP7eO2lqAXg/kk/awFzjCdl7uYFhj0+u0WgIgcegbTzyHC0nyzRf8lkcOYr/MuwREdEJ1Efw9h3472i4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598521092-55cfff36.0_1598521249600_0.11928311056729868"},"_hasShrinkwrap":false},"2.4.3-next-1598521775-9b75a122.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598521775-9b75a122.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598521775-9b75a122.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598521775-9b75a122.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6OHb3Tfr22/3GbtzrcFPzjtGEV161ZLTpbHOwN8UptyhVgAIQLp6uVlSyPgtplA2V+cBb0FkhP/e4xpgsMOkqg==","shasum":"5a26f96bf7e585f03a7b4e633f0ac2fece0defbf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598521775-9b75a122.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR4IOCRA9TVsSAnZWagAAsA4QAIfFXHp+g8FVTzBo6rb7\ngGCivGrIHkpVl/g3lDJ+V/SLyqG7Tjpybx6NKiVNdtRkaVe4BY5NaYnLBcNb\nLqpAQ4J4foLehs3jKmT9c5H7ZZ9cUnGsjBsYiOouYKLGsZl87o+QqkAJ1A9+\nwrsPAqHl/XmXLQufBLaxSNGPHyrUT55diFuWA6LzzoUkoSmHJ6npUtSieToh\n2zFWy/QnOYZcToDgrKrMPtOWDW23b19bFBecgiJ8uL1rapl+Rc8Q5yXAdts8\nnpB678hZTbsOSlaN9KJttzqn4F9hyp34tskGJjM0K0Yae99DkhX6+Ai0cp26\nDcG/r/F4YuoH6MncfRj4UWllKvJUpZvCZ6pj3Tc3DSPbZo540GoloPSkbhON\njk9wlIaTKmGiVUdOYB5g4s26GHynka88Mh5E/+o+wSPZbUIFU7aKX0Ds0PnJ\nFM0J3Hdb2xso0ZywA+nGVcTK+7LvaPOKYDXspN06GKh6e4cXTHRqHylrLP3V\nzbqOgBvz7F99SdGrNOOoTG8HFgH8Y2uIH7JXakA5chk1g4JnkyaYY3atN1/c\nFroZYnkV6xg3vHRNyHuHnYDxkYjatBODQ9emHp+/QirycziMG7NTclhufSVD\nYQ5WfKmHsduBx1EPMhJAO45UqaASoNyENocGgTEOW7yW7vbmuADOiTjD7CLb\nHHoA\r\n=dSmf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDHxRejV+KMVci+iRJozkKG92z5Yx6gMucXA1ZyOMzqwIgQ2qT72FWJrozd4sRtNZEDVwNw01ohju7l+0PwKX+W1M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598521775-9b75a122.0_1598521869486_0.686723385810122"},"_hasShrinkwrap":false},"2.4.3-next-1598522979-044d0629.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598522979-044d0629.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598522979-044d0629.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598522979-044d0629.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qTHOsAuWmI71fXe6B5EmLVCO5jOnhmKha6Sy8pLcZUn/O13/GgTACmT/437zBltCgZ+fFRQQ1ndL8sv0dwExRQ==","shasum":"460dd576e76405aaa1d64b6d6b9fd3bdf28eca81","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598522979-044d0629.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR4a8CRA9TVsSAnZWagAA/NQP/37/MQ0rGa8PEYrNxRq1\nA30jBDTC6zWoTPYTnW+0jcf1SmTH3i46OVr0N1ZmSv7VpV4tw5Su8v/rqyrr\nM5qQmArgG/QBIt0jbs0nTJEUc7aKs5vs4qrJrCDO0tNwXD7pIhCuZPa2/z3R\nqB06N/FErMdrZhpNnk5ULDPEFxBufV7vsl1y28jxWIWeLWKpGg9F6ztLJLMy\nfJ3idJvLtV4b7FfQkR1vo30qq3mYFNMFuV/z7+yCulJgMfI1Fo8wmIdQOUiQ\nuIOrZS/LzJrZ1ybUVTqMk58ARz/2M1DhjyIz0viTIaWgb2+2HwkA0s8sVywO\npc8T9WLeTxlJG3US800+3V1CcO2RZE2yZxhqereDGxUAdj25guntSo6j7MvD\nl7Dw22RqmCuc2mmH6IGdnmeL+6nkAn/3EyecUcoyYMzDIv3bT5TMeeh3HRTn\ndIEu16fSyqOTZil4wjA2UzHitAT0cs0jglO2yxxCSIm6FBCe1OL0DrocYRTV\n3VGrg1CkTCYmg43r8hFsXCak9eCTDDLQfO67+bd5hmSuJD4DOxPk3qYiNcI0\nfVj9TYxkXwQwjj2VcR2CZrw8tacrOUDLTvnKpEB66i5/sICJUZygjySb12P1\nci0DwNqrnSHRk3v+AA0tS9ximRGbkCSgsqkRafWL+ZYMl+A+3BkTZJ4AbjYV\nJ44y\r\n=+BCp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCS6PmI2GoWrB7oPaB3mIRxeVj+K5B0ZyMjVST88MifYAIgVBM6H8U0jsm1bGFcOKtMpEVw7bXBK54kHOtdu9WtArY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598522979-044d0629.0_1598523067339_0.34726929601661527"},"_hasShrinkwrap":false},"2.4.3-next-1598523658-d16826a7.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598523658-d16826a7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598523658-d16826a7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598523658-d16826a7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ptYy319FB6h9c4GmPqochEuF15/B7ef7PIueopVNfOumKrBa3aZZNPPFfq9R/qkoYS9ak/h+7PuPRxWvxTayuw==","shasum":"053ad9fa91bfdbde0efed0267e2e339f37f71d87","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598523658-d16826a7.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR4lqCRA9TVsSAnZWagAAsXkP/38qWOzLkHLsfxXxUSvN\nEUx7eq7/NIp9ii+6tpq7q/XpJZx1zZCIdpTJGSqEU+a4FOPANK2lxOV7ZFws\n7y3Cm9LundOVizb27zRvDFKLziVPNtScfN57WXMfy17UHVgV/3AfSvm9+EGi\nwUcQi8wxj36bNiIJQIYsBzCggxNk8zc28ojWPwr3Ojz01eUsXKdI6HkR0x5P\n+UHFnZw48MFEK0fdY1xQ6zyCWEJtN4fcLRLm9Z5Me9XQvh1WbA7h/E0nWALU\nM30hfawHw3R3ZjHTWa9CbMSXI0YSP/Mf+HkdsogOSPE48pmAGRs4OcFlLVnn\nTnPnrljw89WAEiM6yNr30AqpK1zGS7QmpN+4d1L04hL29hz/hTbz6KuXgg0C\nwGTFc/eApM4neTaBw0twqdoXWuhpZ7U1MlOT1T74q5h6LURlzgFi9iCyK++5\neICXqkThRN6MuEecGyPC33DffLM+4jWxPlKgZ3sYWRCzOeyGZaSD9WoCPZTx\naCMlAWSXRE1sjCo9fYGj3NLhXdhngoo7yPZ0oqNu7lQwI30dRswSkret3Azw\nBsewoaNxIB3JbzkeCb94AJNd7B3EMANIaZv9F2lOE7latZm9AoFqmz+TFlw7\n3LhX0H66SeYJRGoc2QkP0ufM3l0K5MeZiD3ujgcgKEX9cGtyQZcxivinPm7F\noVM3\r\n=OCR3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBdr9lgj51+FeJAlARB/oNJ9MGktXeVYz2cHwDbxXInVAiEAxLerKKEdSxxOdScTGt/RCjrbPKWF+7b4EpRx7kkzaEA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598523658-d16826a7.0_1598523753737_0.7207658141053979"},"_hasShrinkwrap":false},"2.4.3-next-1598528582-b8920e19.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598528582-b8920e19.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598528582-b8920e19.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598528582-b8920e19.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YwVqRdVSj8W6zun1u36Db3/JMZeUNctEVJQ8o/xGNJ6ix7rwqajt0ERhFz0K/1wOkvsdfDWCpPmWfz9H2p+yUw==","shasum":"504d6c6358636859364e0395e99a5b7c39bddc9e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598528582-b8920e19.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR5zVCRA9TVsSAnZWagAAo1oP/2NZ+EvY2AFoXsnJT9oW\nuZnWXd/vtAcKghNUJK7w9NJ9H8Hwbu33/7/T6e6bqSyBVnUjZy9QtWoCNEHp\nxkRygWOKOyrPY4spL/e1M4uuukeNAij0rmw0nqFq3/nPe8KodsMs+ZO0Yx/g\ngJQKs/F78ym1HQHTXFXKk+zw7r+Ha1X324Q2AKdexccnCZtLagbluhivo5dq\nJfsLr/7e380lxISwtYSzengiYWeCbP2SkuABWCKhWeTFaVz9lKwLSQ3gDJ64\nTLR/vQPivqSSP/ss3WCLb9nKNeWBwRWO6VeKtmBUeWkmBx9i0guIQyfQ9x7h\nHT4wqdnkYslBjR0+jlJ97m2RxA/YtPp0jCW8WjTn1YI2LxvDqqER7mkIRg8g\nwX0DtvKLDmDDrEbl4G9xn6coAihhz5tTUjgmz87cRmGe1oOf1EVzUUT46BLu\nMzV50gP43iYIkaP42rp/Q3KM+XjEpjepkALRsEv2JJSS0Ddhh9cs/PfM8pnu\nliQHDdNICk5q0Fa8aWplHB1qhz8xD6z/xqkHUeLmaDRu6QE6Skmjzb5Xb95q\nHBj/l1lcxjpOBHj0QGbA7uucufBJdvOvCqwZIZonrh1LNJhUdNJT6NeJ3is5\nNa2JWxuMVCxrAyM5jxouc6JAN6vF5JA5SIoi//TksblHmBBccJ1QnpsjfPd8\ncGeT\r\n=/W0w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICqvUeAcdg+B6yD0cwuJRHfCb+96ywI5RPcZE4EXJk/1AiEAohpcCvJz41uRjKkg9p+JauQWC0Y6KjaLi7PG06tCll0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598528582-b8920e19.0_1598528725124_0.7006024691289536"},"_hasShrinkwrap":false},"2.4.3-next-1598534513-ac4dcf53.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598534513-ac4dcf53.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598534513-ac4dcf53.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598534513-ac4dcf53.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Wd388DVOAm+PAocwyXIgWuP4JAQSA2xgk9TFUmj0dwlZ33ql20orcbFF2NeJrmyVr2DiceOYkP0Jzlbfcdcu9w==","shasum":"6b6db9eba949e3e19466ae30d14382bfc1e31a03","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598534513-ac4dcf53.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR7P2CRA9TVsSAnZWagAAmz8P/jWAXEdd29ExYNY4AmHb\nBo4j2MflGrCMS+AhWk6w6ATJmmJF5Z9bKfqRBUCsoo+Mc0NLsvNqmzIr7Rvo\nYkI4fUo5XQK05PKRV9NNHsR9gOLn+3GPV9C0AU1G3eOirmPqUWOJBPzgWH3N\n+yzlJA5mTM2taHEvKu4mnLwTF5Cjavm4t5LYegwTHKTNeeM/bqASzdotOqmy\nR1Nf4b4j+FaIjEP/CVCleZtQVUz61hDbjUyNBWxRRNg34u1GgCvg1/v/4au1\nCYu1eJ+bZbxGCXBEgfY+C6sUrWz7pMh+rtERzOoJW71QB/Fdb41fbc76Slwt\n7o8YeceKpH8W8b3t6SbMQC+1ktwus4aPN8EFYToSiC80F/PiIR+Jpyrtnz6C\n5YI/khHYNIbZ25nKnAiUhditH0lVIjHjBZcw4jYOWPIR06p7G1nTmYfsPuAL\ntgF+mVjL5dZ+eywfsWja2nYd6R4LotHJOEoCD7nU0D84LEoY3ma3h0c9L1kB\nsE0AR5pQLfC9zMsZ6dZvwI8OP0IlGequoptBBsfI8nC6lNXOpaWD3+MUIxlX\nw4lKGtTRyARk7AROZJbKf3zhpDLR3tVn4UHX8jaIBWJnaOCPd6A8nyCXI7IR\n5YkHfxFf0ZodbTxSZl25JZ0ViritcRXE1YurozOccpCT9kg2ic3DweO9jruF\nO9i6\r\n=79AG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDp2fXggXKFT6m5kCVn0KnRHmUYqKUU3AfWgvdjoCTzpwIgFl8kvJLMNy2O+oqgDlMVs8GO+YmWBpjlwHGyDdUhPIM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598534513-ac4dcf53.0_1598534646123_0.40438289393220184"},"_hasShrinkwrap":false},"2.4.3-next-1598535744-ac4dcf53.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598535744-ac4dcf53.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598535744-ac4dcf53.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598535744-ac4dcf53.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1xKjKH/XCd1LN0BRAXrKxVVrpBPw+w3Cvi2SzaBxTS9Nhjv+fMguq7R84eRA8T7U89xILW+JokzrrUe2VbyB3g==","shasum":"c222710f722a288a151ce8329c1b5b9c2f9d05fa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598535744-ac4dcf53.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR7jGCRA9TVsSAnZWagAABaIP/2tGxxNZow6u1wjZVPbk\ncMAFokYuxC6kgjMIeNvrSHbdCTAPLZm63V6Axfi7jiOw7w/byRyVVPBD21K7\n+jQTDPscUJubZ3R/2RPD5rtgGG2EYzv7IG1vhgxRXaxqtxYeJzIfB50mYITU\nJSIQCUw75IZfGD7JP1s8Joy+pAZvSFYKjRdt1UsixjG6ihFC0yLlfKBvxqEc\nQr8NvDZnDYjlVoEbCuK6i4LcOztpOWdZUSl+PBozFajifsw7RKo/dVpsUbc8\nwgYgGPQGjpDMBGLHPBkbfmszpGBrHZgAOUH5AoDwqb4IXxC2XTadWLcPYrN1\nVohuN5oLGbIZeqUD06Sufa0nSkNgLuaVJnG4XJaj+HvXftcV7f8weuDgftlY\nAJfIbK03XgXRr1p+p86hw5KloeWnXfi7FwUaPm6I1+6jsIOCO/I4/rNzpA2x\n7mQhRANW+fAPOxeX4PEtHnEPIi69/IU4Y4AZGrpVD7C+ipIuVCk8E5QV2Us/\nAzYqlc0iQAgwfT2cpKGntpm7b/d61hod1PF0pAYwlegbV6fjube7AhLsHGbY\n3NhKoXsilOimWgJQjRl3KGe7QlKkf2P7Vz/OxTnnOoIcZdBXypEzdLA08t1M\neoq1ZuHCjzUAQToZZp4nnUZ1CBzHRloW8ofHmBXsENtYql3WKA8iiN7unh8J\nR2gu\r\n=3d1i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD13QZ2kj4IzkXmLfEfXv8el48mSH0WcD+EQ3t6z1dMsAIgSRF3uboA2jcrT8wa+3nEwUkR+pASuW49iKUib7trUWQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598535744-ac4dcf53.0_1598535877876_0.9922696875300714"},"_hasShrinkwrap":false},"2.4.3-next-1598537527-601d3a6a.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598537527-601d3a6a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598537527-601d3a6a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598537527-601d3a6a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kGOg8gptN5kWA+nKvfjs9fyzJ1TgG3cIgdSgtK9lyMj3ppbsvGpRZBOYASGVynSzpSifvxQz/AuCBVnTjTmvgQ==","shasum":"aaf442ae43e5cf4d1dc546bea4807fd5c93c3864","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598537527-601d3a6a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR7/RCRA9TVsSAnZWagAA7n8P/1kYal08HgyprbmRn812\n/Kp7BPk8/NhVnjv3roPf14LQ1DoO3jGAGIs1qKWre1NsxhPmafC/+t7c2E6Z\nUvsdZgEUzWgYhjPVTiUzRnbDTR5Vun3pv3KA0jf6iZliwmaHds4RZCrGqMij\naPxkl3Nn9cnre7KVaxSRtGeIikgRfpo0pK4MCSDhvvHr3sU01lBRuz72ieZ4\nln9WBFF0xnXnN+gf40+UdwQHIACw9oQDGh7i+XVZVmxNOsdOozFkzc2ItbDw\nZI63eCe/SWvlXTOJPSdZtH+CWE2QvRJKmFKwfyRQSoK6erZNTRT1vqQYIauc\nTYWx6FmqSk9ZJP/PruKXKo3pMSVLnUCtF+XUjzzFhFN3XwzakvMe4ThOc7Vi\nNqf7Tadlokk/gqROUFNrO1O9Spspwtoxtg+HyJMKYaiAfAga4Zd+w2I6dNJX\nNFJMSLEh8gKSlto7k485Gd3BYukGuLU77sfmCYdEnpOq2NJMmvu+2uDvYwYO\nVA6TplGbK63qbbpdGfIfOisipsTgkkYE3dF9tgd40eZ7xs3yxs+Qs77dwTtv\nrPm6cmaOiY377zeGcrv0az0NbPCMzPEGeMdlmyo7lrovMpCK5y8jErLxOWdp\n+qoZtfFd9lunGQV0UBT7XupILqg3hDM3CoRAEUe1xgnqKgLWtTdTpEaYRRN3\ndPTH\r\n=Mzjk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZycH5b77MfSCNMzQVNSk3YT9syloN3vlqSn6dTOMB+QIhAIAFzomcaaMSMSHHzgM+pWIi1JC5b5VlFRksBN74Oq/f"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598537527-601d3a6a.0_1598537679286_0.6526039080315664"},"_hasShrinkwrap":false},"2.4.3-next-1598540824-ca543081.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598540824-ca543081.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598540824-ca543081.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598540824-ca543081.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dWHCc1prQ7eq8QckTksl6i55owFrBPHs3VxsD0fHPMcxqwj+As7WxvGgFCBeB7MrjYHYzPVaoxW/Y736CN7Bzw==","shasum":"4013e3385a658064aef27dcbbe4ae5d460db14c6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598540824-ca543081.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR8y0CRA9TVsSAnZWagAAzUwQAJOfrvswjv0C3qQE0MQA\nONtJ7dT5tjcxzChbyxbxESV8PgHAUSOtOIJhTcXddBKezv+sHI7r3P/ukHFH\nLhatUHhLrwyl9bnsU0/pa39V6LDdMUqSWA9I5c3+UrCeo9ln8y049c365ymR\nwireVar7yZ4ipjCbJT+ctyiqLpMCo7wWnoJ/dxyNvTv5/VgqtBSaH5bAaw8s\nQWxeop5Jn60zmX1HACabonrsoRMoiVAXJxg5GzaJgsrXhFIHe7b+OQsixGZ0\nXdZaapyAhavL5hfGiQAjcamvn0KX4bWvAXqhi+aigbGrFSUdM0aL0KZGmAoE\nUFBsWTGfEEZW07ncU+kD9NFzEy5FgprIntgTXkKQjZ9LsKCoyZBTG3W4R7dN\n2gr50vmIrqwfnxtAEfJLHAdvAmq3YsSYHC3moFBbiiFRCfOQMoVPw9JjFNuw\naViJ+h/q27eNNcKUD36jjOKhmMi2Oqxp6eAda0jAjJXG9yh/G6FAbtbutpT7\nt6uHh9MkoMKn1AbdN7b37v0H+Z7tkTkyCqPM9is+lMCZ98KYwXnI0NiYeDmf\n/J01c/9lTqb4aR7q74sW8K6lI3/zozRmnaBCE+EydfEHAI4a7P6yWHWag+hQ\nRZzEjFaICr1fOeoJ6/lqZuvU3Xu+vXgFEDBZd6LJaUILkV6LG1Lam0WiMmIR\n3VFg\r\n=TYBp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpK5hUzC5QsPByuja/WVvKumAboLKDOT1h0xWww6OnugIgWuL5EU0TWFoL4UKuzuOTMNHCEskjEHEz3/+73iYu2Ms="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598540824-ca543081.0_1598540979899_0.17147800280661163"},"_hasShrinkwrap":false},"2.4.3-next-1598543671-a3ef15d9.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598543671-a3ef15d9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598543671-a3ef15d9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598543671-a3ef15d9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/Lw0cNg1oZ1Oclq/O8ox3YbfhOEYR4Iqxr+rbyD/6KIfitop856Wuutg2gOwU7MANbKZuZKgD08pmqOE+zhXmQ==","shasum":"6189656425380e3a2e5d481014b93fb331bef208","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598543671-a3ef15d9.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR9fLCRA9TVsSAnZWagAABhwP/jgd39XaY5jUH2ve/QIz\nrCgu6YhFb5DZu/xuyw58MtMI8jfASYaVhfz4X842GulOKOE/fbYnZMS5jjyw\nm8Jfz5lQ5fRKPOB73ZDq37/arNIJMY2Yy+bKA6Iw5CxOhAgFBIg+f7Kzqv3R\nUgTK70z65Kwtyz3DW/rZnkqUAunZjBNKKxe6/S4TcKo+LREnC7EPYkPuDlCD\nRYVpJQ1UG1IKNH8fWNoXx4KESGMHhGj3QVj12vLY5ec43xGdQKfOO4OKslFU\niGNu6Kly2DqZ4SmU6KHtfdRxCcW4L+QG4OZYb0lvA1/0Zp1ZZ5jwBWMZRhO/\n1FRvEL04FaGgCNgEPF0aCsnnRVZu0SaDHEVbgG270j+PzRt2LaUkv7AWlIkz\ndH+ep8uyAiFkp5gxLVhHswxQQOXJWCXpHdXs66Z3DtnhUqurUBpZMYLQjxoE\nWwowzRisFPSj8Fnj1X9TbArM+7tSRXTNftV2CdqY8E3V/oFMS1mVUuLER8o8\nLK7Gu4AjRv/rvYxipPrTiwvDAqGmkCpDaYmC24MNh1HoD77GY6TntApYuDte\nQkkfULrPg2ljR1Ed3i7EQX0OnVoprMSSbiAcHeUd/YIQ/plB7fqvZ4wYxcDO\nLPznNaIN/BO2X1fASSNrMcGUMJrjUVxsmY2kitBfK/2M7FcgSr/sV5udGTMx\nRZ/D\r\n=DRef\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBU0x1TKyH4AinUC0IPyeHi1AH36IKh90e3XM7VcLK0EAiEAuPVuxPP3IR3ctmOYFyQtlDmQtVid5kbBBVKedoOoWQM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598543671-a3ef15d9.0_1598543819416_0.24123921999868014"},"_hasShrinkwrap":false},"2.4.3-next-1598544100-a2029533.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598544100-a2029533.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598544100-a2029533.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598544100-a2029533.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yiBxSlOTN456r0RK4mH7xa8HcwJ4mTed3eo7eMjONGu/Ebfo3fOBUjTe+ynijtaRgLw/T4/OyODKK8KB37eMeA==","shasum":"4f1f1bd25e2d6146539fb70a838ea8878dc8c092","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598544100-a2029533.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR9l/CRA9TVsSAnZWagAAyisP+gIB2Rcxe7ZK7ogOeQ23\nNQTtmprtI9mp7MwLOXdoEgvRCpUhSZxHxrrkE11qiZ83wKTBHo5p5TZYBDpg\ngtqtQ+G7UA4iP1JCSKnplz5+nAxjtO204dOj6VA+F8Gf2DlTQN6FIt53NYfF\noLosUeR1Bhcix7sy3sMPHyVIlaYf6CMTd7hZfV0CIIsVme4jHXy1klhiVZdi\nA3yg/1crAmrXTIP6S644pDTUCIP7vfhEWheKv5UBdkCaeBXGfg5aJKGjPpeq\nnJOvbHNixKIMO7TA1m5cXPsadym/INO7bBX5UG4wlf9NhwXaGMe0KM+i27L2\nt1X7ZEARIn1RamErmEoM9XyrpaTW+rGMSH5/Jt+xDLnvcZHTnjEnmLBAFyXC\nNvYX7KL+Bav/o8Odd2LFuAJYU5kSsbk0dwIB0obRgMPio6q3IK8dDi5dKuRK\ngkXB6EB8KRXfxQ2J0olsmVdxv+MWEZNXs0olqWUhbU8ZCXOq6ah7/Pe6Iu28\neG0Q6j1Nr6kzqjB3iU9sMGq2D/so+9tu7RNFKdWPnQfQ65peaKVYXWE1FR2v\nxld1vu9oVWS1HwaLYtQFA0o4pYS58Uwuxzwjk0tu7cvz34GQpSq7IpesTAd/\nP0yAlezb9Y3MJ3oRTCCjK/jjQWJ1Qwnu0BC38cgZVXU8d4jO23RGi+98GQpm\nOgIC\r\n=BfdV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD59f+uMT+W9xtCEghw11nlzXaLnWnKYNVgZjbxreLCMgIhANd5/MslYqyGFg0LUWm5CnoCd1rCahnGhXTqB98lAOFg"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598544100-a2029533.0_1598544254668_0.09924921343689186"},"_hasShrinkwrap":false},"2.4.3-next-1598545650-3b025dd7.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598545650-3b025dd7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598545650-3b025dd7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598545650-3b025dd7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CGvimf4gAzXivzFoBTpKRWMTkBypfFjIwzhOJQb4FDyWtDbYw+gRPMtpZhzhYvYqJ/SeJdenBxlTPhLAYmw3Fg==","shasum":"3848bf9bce862e642ce6008097a6a7aa7b511c63","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598545650-3b025dd7.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR9+HCRA9TVsSAnZWagAAuGoP/RTIoP9W+S37whfEYlJW\nbkN2D5HGDztqxHNsm2FrSbsF1rR/jBw9PysroGQWdVixRpXpyGKNZszLJUsn\ntE1D+hcmCzNuM94yYHkbvylucOJXPVbnce9DTT/SqRnk4+rU0YmT4PFkkOgG\naZb7DE2VGOCU+5LMTsIbrWgqKeIfiJRzNk3E7zG1dMY6mRpttsoAheGLKL1E\nTU3scVO2EfhGTCZNlezmQ3A+3twFk26QuHhWTdA3j6NGCxnBqufuNFp9oc3R\n8nk8I2hQTyONzyL4J8Hq4VBLhHzlWYZKhe4bykMtX0rxNB9P1OszOl4nOSmk\n9fwe2On6/djdljZ8BJDufq90HKSZwVVPzAD5FsIz4aPO0/LU3IgLhg/mKHel\nrnDFUfNqN3RdrnO/EDrJVDRnRSNTpvEhbFNIP/zaVKsrNorb5iaSX43Akhoa\n/uywQidrxZhJPbhD9ZdgpFdF8O4dTWVzeHuHTIdZkKDtBMpFoTRmvc0xRovX\nWp7WCJKBle+5DRt8/X802IU6QhBp+Mbd7f+olgzCyeZCiyj5+MGUzsQrPs/F\nUnfkZrUTFFccHvIXSZJllWtJs3Px+qutvCDmK5w/WouBgx2kZNfTOV53PL6s\nx1bxINNqEvuXQEqqyvgIv9GQeiDajFkMA3lt3/4gBAD6V7h5dFr+YJ64GUi4\nCfAW\r\n=pqLw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFFRyvv7XHaksf3qJ6vN8W7bk7w1FauYWPgqoM7U5dA9AiEArPuUon0J1d5L+PNtv5DrBqzLjYxcp5jMEx7UIfua2G8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598545650-3b025dd7.0_1598545799459_0.2707816508177976"},"_hasShrinkwrap":false},"2.4.3-next-1598546155-46ac3d6b.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598546155-46ac3d6b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598546155-46ac3d6b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598546155-46ac3d6b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-s0K3ZIK1RmsxMoICeecsI4V/s0YpRWlt6vFqELOTbJKqc1IWvX1Bz3kJ9Gc01xVjVYmQoJ7jFa8DDTxv9w7Qyg==","shasum":"72a6a23ba388255df9d24dc5b16e772bee433592","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598546155-46ac3d6b.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR+F4CRA9TVsSAnZWagAAA5sP/1j83Uy4ykPj1ykTvblE\ncmo1DG5s5WL6AeNzhSQIRbN4zNmsARwpP51KLuClubbxGmaaUyxhDhHSKpZh\nQgL/t+3I6wqzn7CqWec/Txllt6P7SZN7crIkCxLEe6BBjzUMR5fcpsUc62la\nTSIrOVmtokC+X7thJeSDRraxVtdXsO3lHaCVUde+Tszuy6OmZD4QaodvUmkd\ne4y9O0Z+r4iLC+3LQ95HWDFv7Qlq8TLxizIQv7oGX1n9R+nndD5IKYzjIyyt\nrGRyRjRnP/CSIx1Rt45jdtBhdvcXM6S43FLzI7BbWyHapOk4ZolMezCg1CX9\n+APvhph7tTrzpoL0Y3tgFKDR3gymcJEUH4whcT/nlSX5usv84yjdNgfbCPwo\n8M6IkncI+wDABZsOcRe3H91xyqDi3VD9VFcsBShOCCiGoOHjSMg9xfLQbfnE\n1XrjUskq2iA1oXk+wJNpNG4iRM+wa0JrpvZRuHrY7rdDl7pXH2+l21pRQYLn\nrnZ5TnAsB+AFLJIh1CkB63hvnjbL8oO2EVByQ7a8smQmf0vimjpSTLD+uJ0W\nMgWmIkSczfoKgEawTQKRbuWny9WqEaE6BZkHOAF8gHeUrDxDL+t+r63x7y4c\nvuLPsvEOfL26eT2Xfs7jrk7N4OPIdeMaqjIyTxG6Pyzp0rA7IslBVJa5YWmq\nwgiF\r\n=mx62\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHyjHwGDG1rR8tToMKzvZ/xb5sqI+zqjhG6e+dzaQdDkAiEA94A6jQrg+TrGKgev4onlJ+ILuj++zX6vaP+dA/GKwSM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598546155-46ac3d6b.0_1598546296506_0.520585411556193"},"_hasShrinkwrap":false},"2.4.3-next-1598546250-8b41ec87.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598546250-8b41ec87.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598546250-8b41ec87.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598546250-8b41ec87.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/bnqF7Q+g0lFggGEYhmoj+IlFoN+g7lHVnfe08JRpJ3UUd2Z08jrn8VmKuqddppciafSoekWIMH6ks+2EbVtqg==","shasum":"ba19c0a2fefd5b7a1f6f0192f0fcb49881e428de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598546250-8b41ec87.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR+GmCRA9TVsSAnZWagAAkosP/iQdwO6GZflfZSWDbqu0\nAjuvK4Tage1dKHqMddFSthvaBm+V1sKCP6NR0cn5oDXljabNHJZq/m+EWxmj\nSqmXbxWxIvzhowe1jeEqYJH97UyySP3gC//BpUdvEBYJqo7pcCPjKRpn+OAl\nVp9f1Yye5rMHasV+7nevBd3gty+JC2obtqn32aYRdO5hbdI5e1O3va+447yt\nKloNQyNiPB69ya0TH+wLbtDo38Awc5pEb4fxm17l52ZDpeZZ8uvFpehWK+ua\nTeKNyN0t7x93/AqYERNPCCMciaBoJN/yBSloXYq5JW/D2VLEldBwgTZiIP+K\ncwal1vG07CvtFuZbWcvrV6J5SmWapNYRpOb/qIBktWPzKFITSqX6gQBRG+Tw\nzcZF1JKY1f5+0zUriq9YpKqbWvxMWuKWUGy2LxamNirnaReRwhGoejJ7UEP8\nBRxbmPQPlmdnmojWLCcFozGVjcK7N4bQb2JfVpclPKvKuMy31yN6ePnebmEe\n/JzC6vlOXKpBAMhJnFtw1XfPLGLkvTKsdDsS9AgWHkjEbuS+Sp1qcazilFOC\nGDNIBSny2bQjfTPMGl4osOCvPQmq6g7ge2shIRkUC0scFny6G6hL5E1gjX04\nkWBITzJDKW6QJVHEghP/zso6Ecu1b9nczOxIAO9/Wuqdfh5+xhxRzTD9rjpx\nPUb4\r\n=IUlj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEtF62BSDIp/NDQ0KwlysJ1bccQRMaSxuRGsbHy7/BRfAiB0if/ReuPo0ZwgClbaLKwDBGZl5wdQMPBlhAjLWqsRhg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598546250-8b41ec87.0_1598546342171_0.2830149851287027"},"_hasShrinkwrap":false},"2.4.3-next-1598546215-7c2469c5.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598546215-7c2469c5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598546215-7c2469c5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598546215-7c2469c5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ijddVDbXeWr23V0PaDbIM7DUOdR9F9y701lHEOJG3u8dF/2XxJ/Q+hwfcUQFkJ8QbgJHxYtjGJEvLHGam9X1qg==","shasum":"29b04889d4af40907aa23a8dbc072ff860dc13c9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598546215-7c2469c5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR+G6CRA9TVsSAnZWagAAHqgP/2/qBSnLtdL5NCnkENQK\n55+HPr7tGSWF+nlrg5L9UXhqH2ketHoCfr0ojp9Cx0Q6OVMAph9sQrXb7sAQ\nNT/UTxRDw806ns2l6xsAU+CUsF7hToqDnNtyo9l3BQi6FtlwWVUPtNRki6Sa\nIzxH2j6wtLEsOe8wPbMwuiR6LjGEZKdQIO/FcmbG3e53eqalUAyQJqg6hPJo\nLZa/5UCe7TS8afpyFjkDW+iS9bCrHxWPPzYxc3lYYNSpaewtJVuJWwhlhXt9\ngJ/6llEUuFZjm6yV3NK2FUf/3h6Hl0wtH8GR1xGeLXVS7ZvrIHNibZP4Lxf3\n/4Os4EtWIs1xY96Jy0OLNky9m14NZD+Hvp/KBrlPS/rqdCZik7i5MEjjkVJn\nqtBvau+sEuM5G14BIbsRAjkQ5xZFne3UuvSswAZVRuzi2OrmjFD2vfAQKEOZ\naGT6Iuaby6N7oYJXm4foyzbbTUbzVPCNSEph0OSwDbQHzKmESHttMYRKAMnx\nRfRkXHPz12oZ0S12RbCH99OTUyWUexCfwUDTmeNaUHSGszVhvcKKSBaY2Ui3\nzLzOvTEU+BfyqYlAjx8mfclu9PRF6jRqEOloxOcIST7MmZJFYr5Rk7EaGlG/\n2MsvpJSCqyPkXX5OkQzVv+8LLrQTsTT7MOuWPbeJEx7jlGZv9D7lYvqJ04lm\n/3aY\r\n=CdRe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2/zu7vXPplbMsLC7S5A8ErGB5nN0KuHpnc/GTYOHw4AIhAOfQNcS7N++HVC6Xs+iY+X9+4NKILosKjzpt4FcfxXmU"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598546215-7c2469c5.0_1598546362465_0.34304438602338205"},"_hasShrinkwrap":false},"2.4.3-next-1598548037-33a36284.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598548037-33a36284.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598548037-33a36284.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598548037-33a36284.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lumm/QcJ/WxfEe9vW36yeBvyxGA6gcdbA7O+XF43GvuxSr8rSh/YDgiM+q1bQn5w7tPXWklqD25+H0P3fC9w2g==","shasum":"d1a46d0be13ab7cc0b19adf1ec8b67260ae01d96","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598548037-33a36284.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR+ikCRA9TVsSAnZWagAAPNsP/1TMnWpErO8r++Q0wWbw\nLFPeKqyP46iUTYBVRXpnAqAf2KjTfPEKRmSc8q0EtV0O5qZ6w901vwMjEoDj\nhiHtW8cMnZBzgxfpy8Z8W3NcxrITlSX/a3T4wyXVi9p6qudNjQch1En79ehx\nBfRaUH8hgsunnSHY+BKwvAKrrZAF3WNXb1p7pZQQlVugnc+iL8ES1vqrysHz\ncf6YdGk7JdETjaF8ijps9gJoqKG+zsNnOCY2nMyXJKXvupaDsd3DzVeAZQK7\nhl9b9OUBVDGMpZg9AyEg4gj3LwlEWn6VfHRIj9oeIVWdZnPaj8kamEdiIy87\nlhGTR/u9MjYaCIn0+CU7SaU5mOVwJB0RjEt42YmEGOvxYjwuvAz/umLCqjE5\nw3wV+niZtZ5WhkUlEjCWp8OTOhsZHcu62LKtLGrNiS49/HA7uwEzHbai5zuF\nZXrThghAF2nLLIsUOR2Idky7g2D8tlBAPpLG8UNoKFHfc5Pr8I+OuOnhMBOw\n2UvYrcRqrNGiAUqwuOvP2xc3MhODxqT5bW3BD1aij5IxhCV4TzEIOwhFGmQZ\nHYRVhuSxAreP9w5ZYC6fU3a2APeFBZ/Sji2ySZQ+ryFt2yNvLZApqur3711S\nKyZvHm0fdxyAmR0SwIlUC6QGFX2iyeRq824KpdlNPApXwD1TrYa2SnKA91Th\nXE1A\r\n=UKcw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgMajvxrJ6zk6GRs3Jqv42lnXNBQhQ93BZ5tZJwvvc8AIgXhQevTNoPwh3ySCdg6Y/bVq24bBnaeDusqE4G7p1sCk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598548037-33a36284.0_1598548131977_0.4521152444960974"},"_hasShrinkwrap":false},"2.4.3-next-1598548814-33a36284.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598548814-33a36284.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598548814-33a36284.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598548814-33a36284.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-njZUwloV/I+3ZvGVoEXBSrsuPuNF36I3r/MWtkm6753dhFwN5capS+lFWWO5jUvbeAQ/UHTCLdLAltSYYk0T2A==","shasum":"2a5a89eb2c8194969f77b76c9097cd03761ed4de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598548814-33a36284.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR+uqCRA9TVsSAnZWagAApogP/R8eNaOnKnIwXCJeesdD\n4wSoVMyZErGhCSBaj3P7aUetV51D2K2qZk/zbkO23jO+IypTefvgrhX27U5v\nqeIgeMxHIXIFjjfohJ04Voa+flwyO1PTag3sBSsXctnwuycZcOJmacTEux75\nwZVSW4w+ySkpGDzpED+fm29sVAPIqFDVhu1WrrT9GEDJpuk49iM2nQEpGpBt\nPpq7tn8gAxVUk3vtuLTI4LnSHDf/5ASz/CeSyxgV4WcMYnlAGJBDoMWaJpK8\nnAZ2FTYRRcLtZtIWuBDeRvOLEuwtXMO2+JyQlxVsqkjAwKOOLm3nFOMyY8i4\neJZuOpt+ksQYHTrj+nrajePWazFBrg1bTA97H5bkVvMFOJtfSeEcoDEnPmIQ\ncw8AijVPQqISPn2DPbVXEHbVxzcSsoklqcgGoCdgGJzD6x/883+PnnGgQXLA\n3Q/9qsDqiOH8Ue6u7p0zNT82j0HwcC1VmTflElr7C7GLqr9T1cfcM9iG7x+N\nv0BhoqJfMOkfSjb9ViOiqiG9jlFCdWPggL+FjARpIl4c0bMVLR+AKdZ4CYeh\nMwhjugy4sZYEIRwfx7r+8EkmF4KTBd+k9ZU/8m14GwFnvpjL25t8ZcfBr1Iz\n0bEpWAwrbB1nPrljEAEIaqgxBykCPZYDH5RH+0ozCvKKYvdEZHIh7ysKgTVT\nIbq7\r\n=BG6B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZlBsJpCBc5EWTmWwcNYX/fCsTsUSPQa0TxwoNstpp4AiBDkFQ+wZDev0oTqyKDkl+5s8onNiGipy1t0v/Im9SpBg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598548814-33a36284.0_1598548906159_0.7824015757827951"},"_hasShrinkwrap":false},"2.4.3-next-1598548795-f0b8b5cb.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598548795-f0b8b5cb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598548795-f0b8b5cb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598548795-f0b8b5cb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nZzthu/6+yXYfLFvT1b2tXMFY/kShcmIf0yu7rqAyBuVZYvgMWx4ZViuAHuXsjkOL6bbpxV1J1RxesLYl6iw5A==","shasum":"afbe853eeadbaa03bd45258e21351a916511b38d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598548795-f0b8b5cb.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR+vGCRA9TVsSAnZWagAA+fIQAIV+VHYcUv4EI5tr7gnr\ntQbOKRhIBO+GFQIGIkhA2+8XD3PPF1pxis/7V4PDeAbr2fE4tf5VtxRYgD+8\nlktfGa9lSShblbVMsvNyDTBAwGdPIwrTOfHrgkcFtC/0K3DiDyO2zb/3Ghma\npkxO/ahBHzLbQfzzMetIRBbqiBVt9TS6he3T0gRBDgOzo9Zs0TUAHS+0ftYl\n8oXEYjD8ZoOqBsADNtCcWW73gnCFnjnBGwdmZ2MVqnTqNcQSiVAc7Wm0oJ6k\nXMqTxA9nwNJMZXlV/X3lZ/5Gs4lsBhRyu5TgJyX5SSqWSPGqJUviCOwHolZa\nGUPIuosn3EHcwkSCpn9CyogRbwCIxCyYQzvnjwCrHQZs6/9AW4pgWDgc9jVr\no4+bU4xgSyGxaKfKhU4Tm712Wf6zlhQreWRw5NBK2PWKhhXIW76KP2VrH4VG\nb+7Tqi4CTrNvnUVca2pFp2ZD7u89OF25QPGg99pKXZs+41Lb8UVxBmmQ9rij\nbgCRmKYGANyKmC8JSR8TV5STV2H1aanAQmE+fVWH0esUYolQzXZmsB97yVnR\nDKtE8QrW8z9rOWvWHhYZrdRuQelFei2LlE3WQ0UrLSsZLb6crrXbDpRzq2z0\nMKm7bsa2Nb8g+UEbka3wPhnJfizqNSfl1QVS89IIZcXuK4QwzyZk8i0gRkVC\nnFkM\r\n=0Ghw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCl0NHyPFr0K7UYlukAxIaf+NbFM2ihEO/3z533qslKWAIhANL2n+jc/MrEJVcG5IkfMI4w6k+CJZ0jYZBwLHtdQf8h"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598548795-f0b8b5cb.0_1598548933615_0.6819670796483099"},"_hasShrinkwrap":false},"2.4.3-next-1598549515-f0558f9e.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598549515-f0558f9e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598549515-f0558f9e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598549515-f0558f9e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CT4g7nBCj1r9GaQfmF3sjsr7pOdXllZBp1JD3PqIyU7eCkZ+0T+MR9CJVXH3+RzggQmOowL+jj+lzmiTeFbhFg==","shasum":"10ba9f2108c0f10740fc9f1db25b0b6937bf17f1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598549515-f0558f9e.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR+5pCRA9TVsSAnZWagAAYfkQAIlHphOvdZeMbNp+99gW\n88yGMUDgENwzxKRI9EBQfRFOMYDVG2TDE2e72n5GvSd628LH2K1neLC23cxu\nhqRpCcQkPo5KX0sblDZeFelhZocvRZgYurvhrazgFJNWX3r6rF4gxl88T66V\nzV22H80MyeyGsMcOHgPXEHZLLfwopcBhNRSRG3viqLNJbYMtigaVUdVPDjGM\nky7vkSQGFj9b4rz56eKvCqA9O9oJc8KrrUXxKSkxaqxIqpQE22JyCbPQl3Tk\nKRaU+bpLNFOX05VRSVmrl+OIcGrp3STLwjvauVqDh1aagZwYrIzbcxNM5GUc\nzCd+Azv5OJQ2DrQ+rdzyDE+hs5n/FNWfaS71tfVB5dC6BUuGn/T2bK5G2zVN\n47gPfcenXnSNZAgqUsNtehgDkpZoEfebYRwCRvPXS3VrOQizC4fS1DMF/bfv\nR5xOPkrdgYBXJ9Re8y/E2jvr1gGW1ZRrstSMRdc9AcpNTgmy6bE36NRDOpnh\nINkF0c2ulUiBHfxW2rw+LsjDJinUu8je6to51PKPF4x8R27GzMtUCcLWLFQG\ngwoqZ3PH4SWKpM8sDx1B7DS9WQL5uNT+bOEriwCX4h9BzcnLaqOZPkYBYMZS\nnBaOAMxgrEpvsbu1SamebKlVb7t7MNwRvFLIy9PGTL2UBVSqQLAYpuugUiTg\nIJWY\r\n=hWGl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDojyQxd1dbrWQq15kcNQfAQ0g7Z02DM/uzOG25TsPeSAIgTkUMQ/r9IK4LaZjq5ZBqFtM4SQG6opH7UmzPHZmEyKY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598549515-f0558f9e.0_1598549609078_0.7730639511284638"},"_hasShrinkwrap":false},"2.4.3-next-1598554585-2ac2a31e.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598554585-2ac2a31e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598554585-2ac2a31e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598554585-2ac2a31e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KOzn8FZY2PJ68TAFpGOOUirNtFl5JeaHrA1KTfZdGHMZif0FDXuwNPDCKDh/1ZRJ1cugU31AOoXLZ15oJiGn7g==","shasum":"6d30eab1167fce32d8c7ab8137df72c44e034937","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598554585-2ac2a31e.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSAJ8CRA9TVsSAnZWagAAWBUP/1M9YIWtwhogHtbzVQFZ\n7Ws50HtRVsfk/tjoeLQgUF+TariPYUd0oJ8+FNP2qvvji+B3TK2tl1jH0n7i\neKRj43mMHk+0XU1yjW2gKKJOUV/oGAuvljRdy72ARfK490ziKlFAbDiS7Xnq\n/igsJoyneoc0L0iZW9bGPBHlEvAaNHx0UIay9Dtzv2I/wG4vtWGIkWMlcnve\nsN14DkLKEXw7Pub1w/B2+w/Gq+H6+xqeNJsPH5dhXZd5D7nT3BWctLRnAe87\nxka8bAFHNCcTEyC6UnOpO4p4945rSnOFTPB1v7nkW9/n7Gn4qw9HgczBMUeX\n5iuqbChmMPpFr1rXHTloTMm/X1zFZXfTeUc950LARNZbVnFaM4GRmjkl47jZ\n5vn38p6D33dAmx/3gMVhkNmPdtAEgMqfpBrOS3PFf5Zm4zc1PiFfho1eT+TM\nWLrqLB9brHKjaT64wsIBi6CHQUssQsuzdyxUBzWOHOxMOElzovuJRSp1dOSF\n2hY2fU8GTdb4L+2vCFG5wGUXlh01Fnn/OpKlmaYo1ozmR8JbsWR2IpKsfQ7V\nWJAaWqUJxf0VGBh7YLHlDyM09jEOY1vE7rCwHJemlZokEOcaFVQHE86lcswm\nRSbrUuKG47JRFmFFYw7DHEB3lGwzxUF4k/uqSjOqOVRDeXGeUK7tdTzKOIjx\n/54j\r\n=m7YD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjauGw5D9MUsH46U+vBwjjbnuU/kfA+LySR1HitA2i/QIgTfqwXu89dwFfn2lBxRw01HUHGyVcsVbuqc+Cc14dtWs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598554585-2ac2a31e.0_1598554748145_0.7811970754799697"},"_hasShrinkwrap":false},"2.4.3-next-1598554932-b511dd3c.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598554932-b511dd3c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598554932-b511dd3c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598554932-b511dd3c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-gE/zYr+ePpwpj9SqD2vbbsztzHX6pfnYItBmPya3W6kynJnKywB2E4VyGd2ZOKVFDiwWtdhwp3wJrdyyBSV66Q==","shasum":"ee14dd6418f1b8f6ad82658fa6fe4b8f51db5370","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598554932-b511dd3c.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSAPJCRA9TVsSAnZWagAAmgsP/0m0i66GOfXDSUg9uzCR\nDR+QuIncXXl/sm0c5X1U274LtK/F0B7Q+yzxnNVZsekl1laSSznbPNfnHkdV\nFxXDPERt9oIXPRx6AD6zqBYMHSZw1su63kT9n+5bh/i3PGLfhsl/w8swqELQ\nwF1y898pTizZg2ZEDYbXoGr/r4XfC/t+XG/4wm9JaXP/V0w4sgpNd2wuOL9e\nRsH7zBT6r26HlLNjxwrbgXnUbVS7WhLYUloQ89ZmgA7lnhIwku5T2HzQkeTc\nhU/XExkES8FMGbA8MZEb57V2TU1kUyudkFk1fUNedAW7JFy3mPkvxNKCVs1j\nN/SnebWA1DA/YQ9qUtLx2dgYJTNkMe+pXi+BBXeD11h32uOtYTi6EEV2kP9i\ngEl5mXGIy+cg46WivcWW6qcro0cRJE/Angf8shaSvQ3XiNPgsAtg2vrgciIz\nTc0aumvhI/PbMjEoA+9rmEgkVw4BSrx6ZHRmD/nPai5wBgnTj/I0GUA3gaqB\nG7DtessRoF6sVUcCFkHUw/dUvtaqabslPUcazEBR3kaz5mg9MXnptkCf4OJf\nay+WJcxTTwuhVFS9L8JCOJEbInWz7B0PNMMgDJGAsgLUQjeqdBHIZMOF1PTb\neWiEgXu87vJqjK1vn7jDWynuUOWHQqKPzymc9kUltFgZe1YT3ugr8y25gsbI\nYkTn\r\n=G0bK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEl8OIZLIiGkSR8ErcnJf8rdQL3ApUYiRzQ5b+12NDqqAiAA/buhZy3P6E1yGAYH3R5plNz2geGi9dOXo4/uhlQELg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598554932-b511dd3c.0_1598555080598_0.6632308907527014"},"_hasShrinkwrap":false},"2.4.3-next-1598555067-6558e1a7.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598555067-6558e1a7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598555067-6558e1a7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598555067-6558e1a7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dkSoi7VQRC+9U4fECxv6A8nFfUErOXuOlzAz9uZ76E8/C6iAD0YNr2ditCkcdT7or6SwWjxLm8japjVHT4TQ1g==","shasum":"d737a6b03d77f833b79bbe44d0642ca8929fe975","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598555067-6558e1a7.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSARVCRA9TVsSAnZWagAAbo0QAIbhWtwNJkWlzNzRxqiV\n3+B0NSiIwpHyhnSDzpIJxZYeIB/IDP6zXnmeXbP3D/9Ww0INxBprYjaeBbtV\ni1LKknI0wnSd0f1gMbT7fA0s79KV4JYuM3Q32/BLX6zqif8f1rvpiYGesssf\npTt2GjFozicJYRWlgRsBlIjxs4/e47uh5A7uZnMehHi6NxBudcmkQ6ZisxXd\nhZ0v34mLq3nrU6QF0BrkrggyTNhn4fLWKRqkjLDlHbT55AY43QBCfRLl2xPI\nqOoOC266hL895dgcET6MXbVDvHyvK0XP2O9pyGvfQsvDpcuouLB4htnUcxjl\nPN8EiBLpjI5Jmf+kY+AZ6m1F8sHOzfSFNFRuR7slrC8FncU/cqHdb5zcgJ6q\n/Y60JoSvX9NtGXOl5WXA2Xa5hrKPLcsrAFczEchFcOnFBBe4TPhA68/e1Bbd\n+18AMw8UsvE+AU6+C6vWv2B0zaZ0DDRwwkpsUejnsw6e8eEdw9OEg1AzEN9/\nSS7PEVT7YsWjPAdaMrerYVCXPQJTZLJMXkdizXcfy1hile0FU/wokxiVf1ss\nNqL25MgSXZCYBrCDIPcdZbPMOLU9xQCwCXUc4V5NNNr1ChOEXc2ul/ikDP+B\nIhCcK+muuiIAWAPK7Rtj4hSKjkrdpaCuhSp5JY/ap+/4jexXHZeii+vrKDCm\n59L3\r\n=GRX3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkNiGcV+aaMS/aDfp+bsJA9WDurpGH89eh6uK2rLuw3AIhAOL4D9dqqjoz49AKTmvLRYOjKvWqbYGKOpjo8u6R0xL/"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598555067-6558e1a7.0_1598555220957_0.9093942624652513"},"_hasShrinkwrap":false},"2.4.3-next-1598555146-4da9acd2.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598555146-4da9acd2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598555146-4da9acd2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598555146-4da9acd2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ZFgnzg4NSxcVTDAcaQLPSwAHzIgJQPpJIO0b2uyAMTwN7MV3ORBb6iyBoyaHg9Uo5FPQcIVWpkMV22MlG9OT7Q==","shasum":"b9849ef6b1af490257cf0b492c9388d46dff379f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598555146-4da9acd2.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSASpCRA9TVsSAnZWagAAMpIP/AsuQY2LqrUtlbfA8BLI\nQAv7BgLEv0BStqEc3KvOM8NGc3P54HGjmsDWmw3j6uKtxxcw3Mo60v+N3N1P\nSOZ/Cqzh0zXgfNcVKMDJfciGkGkzaUEjTf+1OHkHGlb1kpcFWFMw3WgN9y4e\nXvbu0YW63tNOPxutDezLKWDpzQQF48OkFrqcvQu8VUopFkXBQOpGgi8Zmn/7\nXxmUXApjaFdWUEe3k6n2PcK1aXl7AXv1AzKxRr9ZhpwUHxdjNbO8TtWiqxNr\nesUVeZoMYk9lz8/XQSxQsj8dUrhPJ7gv8Q182z1MpgNK4abai5/vyZ2w7yd4\nFZkFwPZkLVCIJ2NhyMORWxRetWHnMW2Fnl1YmWvcLSoOdGyv5JIpsFU4I/ne\nwqGx7NcB1DsVoo97/cYJms9KK6zCM5LopOO8JYMUy8PvsH+6IPy2vbWTEQwF\n12QCgkXqZY+YTygx7NTBdY7bzi8xZBQDzEROkYbEAS5nooz9wq9yFlOghsdD\nUqxN75KFAoOmJonYsc8y6HQRNgfb8UqZTfkEKaPIKfIZ6mLdZugYvydGYxgn\nAbHi6aTR5qSvzZMvjMkpTu3VbcasQ7HzbCR2lVr16lAsDBgiX2hwwDz2d2NI\nuWGzlq3imGpru/Nv54hAchnuXvC+4N9saV7Ypsh9tFgt5Ew20daQ84XUmdkq\nHVCT\r\n=g4ln\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFybRiJZG281jL1ex/Pop49bnVZEo6PdwkMi/8FXN6rNAiArL5IA58mosFZ0pNx0ze40TvOJ1O+nmi5GSD7B7g0GjQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598555146-4da9acd2.0_1598555303690_0.4315877325003714"},"_hasShrinkwrap":false},"2.4.3-next-1598556966-058c93a6.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598556966-058c93a6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598556966-058c93a6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598556966-058c93a6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pbr2ZLXVRphLTZBP0SABh11GfXrotYwRfQ4bD2yqnpYPdoh4Ont3gU2f/ejzCkpOgsh2fVFkDlFq1N5eb0nI+Q==","shasum":"8d6c3c59d012306577fe0b71230ceba8142b5ffc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598556966-058c93a6.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSAvHCRA9TVsSAnZWagAAuYYQAJChY6tEDgNwdp9bUlny\nskw2lZrRmyBnlNROG0wkp/mXVl5KM0ieExE3Sg4Hq3ee7NyPtZkOjizU92UX\nFBFNK1zy/5wvnViQrU7AiuseXTMRN6P3dSdwI+qZv7MmKlt6tXAdhi19110x\n9UHvpavHW26T0wZNdSMNfc8hqlHECQLU15LoeLAmapxfucZzg+CWoSnXxsld\nvwXApYV0GHve8oGklUaHIfpgbBheWAFbDyCdckNSCzJbCW63xyEOnfr1Kw+v\n3JZlyZNLPNhlyiBwGKxYfSk9X36akJq9mR8Bo6P95OIoEolDdzl/pW3cmJKN\no0ii59CTw+GYaCTHQjo5KUehkjr56/8sPY/hIZ2dFtFfBLGAZIldwIZL1h3R\n8Zq0xAv4gM0+L+M15E9KpoEBmeXkUkO7wBsYSgCoIC7iquDDBp15kThESz1n\nVNUb+u6nKTcgp/e0LlBTHrnMDru4FPQEx8cXPoWFOQu54gEm/HYaK/31UK6p\npVDHyW/AMDwyZeufHMD1vEJeD/O/XufD+cT5IAbuBtqikiHyxgvNc6FJlLPy\nv3L3X9FsLWH0XxZqFr1Q/lxkcOG4v7BzHHjgCMNPJJ4EmYVT+drFCvCAfh5a\nQF8dMyColJHAXkHoRbCDy8Lq743anOzAL7XJSeHg+QHvHmly1acL5HHddGeO\nsW0f\r\n=L4cS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHJvvfO0CtlDocmY+B8J0Q0XG3I9p1OPqzSoKkItWSyuAiATMFp46iBQFl9XTqR8Ch/PAR/5fu1GwizrthDBxsPZOA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598556966-058c93a6.0_1598557126513_0.2932807880714108"},"_hasShrinkwrap":false},"2.4.3-next-1598558125-f6830a3a.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598558125-f6830a3a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598558125-f6830a3a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598558125-f6830a3a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ESu0L/i7P1eVZ4XuBLcDBcSIjYV4Ne3QsCQiIJhKT7IpS0GqKfDp+S5d5DfPzRi1ZrceFF1WW6QIKGNxGetNyg==","shasum":"71b6175079f47911934bbb39f0f5288ef8c0720a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598558125-f6830a3a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSBA2CRA9TVsSAnZWagAAJqAP/A47MuHoXDtr5DqoL11G\nva4MKP8y9vsaV6KxCeHQBewzW/EBDtZ2WnLDU1EMrtwXILJMrXLmoMxuNfvO\nFtvw/iGERW1eirE2TyUS4N2i4lAVaA2fx+4Y6KWXJt/mM6gMO4T6nX2ceusl\nu34ZTj1iDTVdl7xDcgiHuOxMNOKEnkN37MWJ5RMN+Qu2pd62+TgO2gbdIJ5N\ndeZDZQqfkPnWe0aE6F9fEC23REvIACMj+50DLdNs80+WrF8inQeioMSZecri\nRwNRt5YzP+Okbg8i13T+hIDOm1SnX12/NqkpNB+SBFrMLSC+NXCgpU7Mzltd\niJOBOG3Uz2ppRauMSnxibRtKbavK/sICtcYxMstPI4v6tn49frolD502mhGg\nnCy+51vMAaNjjDZ4H5p9brS069EC4Rm9j8+pE9UwDhlhhOvAhtT1vhSFof4h\ntpV9h11GY4c52hzSu0vbknf3pWObDUA9hTFIK4p9z6vAbqorPS9CkU5Mb66d\nVRLrAOdi28n3fIkPLq+Ne5oO8Q59Urg/HiB3OgErD9EmNuRWNr/cAopfuKDB\nz9PHvnyu91nLgs4ajGshM3nd/VuGDuUnR/znduSS5LsFbD+r2YDqJTCwsoCm\ngey0um8dNvvcDr4u9QVumO0E1ipAcjUcprKOfV1+8CI/cFI5PVapC82NcvNh\nwhKh\r\n=Gfle\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICIyQtD5BF0Sv4k5ih/peM0i4oD9ZmoxDC2lB0/EHdhtAiEA0T+Vd5hnEoD/zxfl4pJVzuVv5buFWrrUO5rnWk+m99w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598558125-f6830a3a.0_1598558262139_0.10659215329029892"},"_hasShrinkwrap":false},"2.4.3-next-1598560387-9fcd2760.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598560387-9fcd2760.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598560387-9fcd2760.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598560387-9fcd2760.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Ai58XSepVrIhEymVRtiTuM9JfEYxstVu+B43ptxcM1niBqexXF5xootc4NNcjX+VWnhyhAmg1Ow9VGXk5ufXiA==","shasum":"ef30135e4b2b96a1903fb663da131c65df94419a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598560387-9fcd2760.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSBkOCRA9TVsSAnZWagAAdXcP/A3+2HsNNBqNCo2WzdfY\nltZYC3rVj9RWIDJ7TLbiP/WS5KeKMbikC3p80FQGW+3Lcub4Y8+5hMGBFtLL\nA2KTDzv5o11gsJ8j8cmAPnW8BMzIIgC4jynO5noKunBp9q/UylWAzl6AF4z2\njA8BSe0jnMXVmURcCx1/MqFCak7yEPxO6lglv+54l7nj9Y9gVBBSe3IFuYPp\nwBmAUChF5ZPuD8xK/SPbmvmADXAtnLLDKZE8k6nctVJubZBsnFJzEycZTIA4\ndMCxNik+C5fqJ5RzUW6QtsU0gzS4FB22c6FsYhQAReiE5kHheYbRD+QhItyL\nQs8EoHIpGO0YdFx0hRd2G8ZpW8rjQnWHovhnY7FHGfscicm3itvujjNyY7rO\n/KZy6IGP8LKVnWT6EuhKr5GLf80ffTulLTM+pf9HK12uYzPRW5aYIcdMvPvT\nLjpqg2m1YStLE9UyT3VzfM6UUxayp2JRPvewNZqIONzaieecGKdDIVS3+Jc6\netnEyk0+r8vD88TOvZbsLQtOn7JcfSnd2q1JUyVs0pgzACuTkjYiBn5r3jhw\nHLEWt62GkZPsr8eAA++9aSJaJ3JSIuD3llTDXdEypbsd9kXXGsAN5U4rzgqf\nzS0gPNOCf0ES4LgbdidKOm7E0MkGN1iB67r7NV5PIP+yOmTxlVOQjdFj2MX5\n2rHM\r\n=oysh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDg4CUwoVpr+MDJsuGQhhqzd4ZQ1D2CINGzDs5H0GzevQIhAPENRnFOBqPGG8Odn+FBiYQbUHvwBPdIbGlEEALMeUfZ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598560387-9fcd2760.0_1598560526100_0.5294569106697837"},"_hasShrinkwrap":false},"2.4.3-next-1598561912-3e1360c7.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598561912-3e1360c7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598561912-3e1360c7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598561912-3e1360c7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2UOwEc+B7FBOz0ZGkGbYmLD/ACnXstBBIs1UQtlAG+ZBbl/72CHKs2/6VkPB7BMc3jo5yyZyAhtDtpirChgdUQ==","shasum":"30e36a5358229650c7ef7fb9cc27755e0ac7970c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598561912-3e1360c7.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSB8PCRA9TVsSAnZWagAAgJsP/0BHkLF/69mgs0bDwdq7\n9jGjtT9iCk1Eha1feMpPL7HXkICXZ6jyKL+hs0+ViQ1u1rEOvqouxUaW5AH7\naihlHHPvX8BJ4PSKwa3xBDib6ikXTlLtvA/kiRgQ1bSnddBfkjnnhU9V+rZy\nFcXOtCtu12MHHkyUPTLCaUxKNpZ/IlzcneIB72032zOl/umfn+4TGghAKQAS\nRGXPD1bQbEAXNvNuUYsIHKxOL4CCNH2ek60oEYcMi+5JgUsGsFRGn2NjfAa2\nGwbolzxkVQ5rI50Im4AO9ta5D3erWGWtvdtPxtxmjKOmC7nsYUE9dcZussGB\nSzQYgAxJuKquyYg0NPZMvWUGtp0/kXAlCGYdVlzKLNuHa0hkFj+36NOuONmp\nFIFyeZpHEb8IqOLs+szTqzwNnQzOUZJsbKOwj5+kMZm7FYC75MWblAbseIS4\noWUbEEdfBdioVGLyhz6Qjz9VwyHCFVfnmU4VR4eaJlGXRJ9wdiknJ8v6anlH\nBCGxgah6SQnLor0ggo+T4vxSU7LgUpLmoUH5tOlbJP+1BPT8TPPSRN//IvOE\nmcJK+joOZR/VPQxe/fk0tVzPnVssEe64nnn/ylYfxXVORMWL0c385hEqm9+r\ncOVGxup1LOHSh5bk0ptYGD78ezZnovQZkux1cBhr9eO0rWmFBUPQlycyudWD\nyPwJ\r\n=gjOJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICaafbZtC1Mpf7yu27ZMG820/T7rZKSLGt8yqqLNsHFGAiEAsYwSFKMcs3dMD6g7fOkfCnTW7y3LGQ6dKP7mRIqo/o4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598561912-3e1360c7.0_1598562062891_0.5820580638770321"},"_hasShrinkwrap":false},"2.4.3-next-1598566293-3e1360c7.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598566293-3e1360c7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598566293-3e1360c7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598566293-3e1360c7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Q7UTd2jImOLGWRzqcr50I5nYw9f+Z6Zy2RbzxfB7Rww5GcY0JN9QqJlBUba/IBTq8mNpLroy9FlG/V2VFBuX6Q==","shasum":"a21f4ce59055a05d4d9ba46c9d3401afcff7b984","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598566293-3e1360c7.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSDA7CRA9TVsSAnZWagAAGjsP/AiYac/ngzxtIT3hSHdE\nTMHud89jSwDC/BLEed4oLnYJAOMSJI05wKeljU6sM9W7aFquKDmkbOEyRO/j\nouLsRSqErP58l0wGXnAFMZlBCbeIRw63U0k8EBWjJXcxu7tMHBHlPaVOAhWJ\n5DgPbbb2WTahHKf5kMTO/mGsZoOQSpGJFXP4B9A+pdJHUODqAHS4+ACYUtzp\nNLltfZ14C/8bNR3SczzwN5QLYlR9hBHOm+Yjmkc+ia8e7hFoR2X1hk3fQDnW\nsDvXVETjfdEb0t70G5kJ9RAZCjSuYBLp4pKkUod7wN+Y7TQz4JGopsl2MWt8\nw0flksTUyCal9fQOuj9n+u9ZGwq+1603AWqbv+vg+5bdo9RWbb0riTeKAsIO\nPg6AG+MdHR+1WZzC9w7W6/5arEP3vJIBYiBSzyNc+goscwmfNBd6w3i5GGkK\nsv8g8NGWic3dv00EZ4qkve0RlqiP1tLi7QFcZp0q6+mkNF4kp6yT9qnp1WSa\ndQ/8iVJ8ptxraQj8mhZleqmLEclUCVy67yylh86MNtBfnMRFn42Z6dJAz/2X\nJyXrLxwlazzNJQxj4FEYZ3HV8L6oXTY1kM8ZkB695OGmPNLT7ULTp/gq9AqO\ncqQHFAHnU3ggH296v4vL2kEm0s5AWybCUke6aFOmZjuXG+mID0Imo6iMcNCS\n3ZM2\r\n=goMv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAt8z7vT31F5ZqHgoWHVM8clKzqyEScEgyPb+kP21rwpAiEAtUq+CiYbgE1AbPpSviK9uNXVyP6roCMBS2JBcKQkW9E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598566293-3e1360c7.0_1598566459215_0.4261151370805696"},"_hasShrinkwrap":false},"2.4.3-next-1598567697-222031c7.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598567697-222031c7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598567697-222031c7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598567697-222031c7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9oukV/O/pzlBd0P1kwaLbVT7UP2bDfXo+UU5hYOTE09UZ9rY9SblmPVK9BT3oCOcUUrs138n89qUdnIF7E1Zbw==","shasum":"8b27d26f13b282b6acf5f869085204e8017e28cd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598567697-222031c7.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSDWrCRA9TVsSAnZWagAAaEAP/RRbbcx5G3k0Ci7E5cSP\nsa6nd8IcpFFufB1pG6AOrsz6/8Sz+YLIBCnM/+ie5ZJtpuYnna/VMfzmPps7\n2EcByQX33zkeyQch+tdTHX0J8141dtQ07I4IYn3p879NlQJapS5n1gZMvjiS\n4lmeNseh8w9R/9FmjAcq/X6Av6r95CwFsPuREiNZJQW/cV7WJPGDvsi5Jwnc\nbokZdwadpVNnnOL0rGUfqp7SH0YVYDHeg10itbv9TvbJG9BZB8Vb6bNO3G1a\n9bcYqAWisg28OpII6yRcCzmeJkQHVcq93WxI8a/UPTpj9sJ/f6c3KallcZKR\nxkpUq8fPKiu8PQIZEKgf5DEy2rdjhQlKj3aDeRn/j4zREi/qdG1V8YlqvMNY\nUS47eIRVDPbSsLUJpiHAjlOKLDaSCAJXgQyrZkkqW9qciQer5OQ6qR3YRGew\nhvmC/8iTWM/obhzWKzz2FyW62EMAPTVB4hOAZlr1Q8fd3zjNyOOCxiUPvS6k\nmsJOyRvAzSHLhjrBYNdhnhbDSV7eWkw97u1Xo6qB7MiTCx7EIqiK5Fxv0xVE\n7mP8T6G7is/rpeQ8dQ+QWiUo4moJMf5w6VpdXVKagDzxIjh8SvIfZSarlUW8\nH4rawHqT9mWETKJJY1jSxS/Lm36q1mbL91Q24cMsgC3eJyAcnXTvPFQ8eX94\ncxeW\r\n=n7Oz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7ByG/VBUXOwQqJMR/SqpbAyqvKawwIFLgm92iuGZ7tAiEAkToIUBJEK516U3p7UMUhmHOWm9vGMhdM4DCg/YRdikY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598567697-222031c7.0_1598567850827_0.6395042112723068"},"_hasShrinkwrap":false},"2.4.3-next-1598568575-f3b0eb02.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598568575-f3b0eb02.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598568575-f3b0eb02.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598568575-f3b0eb02.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-G8o1dHe7oITC0jZbKYvRKb3VfNpQuYSXPVS3hW0Spqy7R6t2v107/Dkpl3JaMLG/verC3pSVP2Ts+58UtTNv0A==","shasum":"2b5df35c3b44a771e7051574245d86c66f61e94c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598568575-f3b0eb02.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSDkTCRA9TVsSAnZWagAAicQP/0If9SBMXJr1F6Bs8DAo\n3ETCvtJCK41nJzgjo/py3d+z8QsoedsK5ewwAiaG7a5w3CbK9SfxT7lLUJSB\niUS+Yu0I4Omo0wrhXUHd9ELor1274Cdg6HxeA4wt3tB0Zg2Itxjj+odXHUYd\n7mfaJbfhVC3TDzrGHMH1SskKBCQYDwyqR1SNow0tlqzcp3HOZZQK4bWznriI\n6lIMsOPYqNedP4i9EJ4yWxFdsGHI/JoeI8qDmeswOuL4u52Y7Bfvy7Qjc9t7\nTw9F0VOml3wkZJZf7/ju5xmd9YdM3ZHsGpsBe02eLg+wNYxma5aHKqB+xEWs\nSTUIJi9tW2Rgv6vk4ood8HjBRLvW+uYivH+EI30PkcohJ7TQVQ5p9ZjqKE8f\nVd28Ah9xAUngqAY/XHjAWuF/bb1tbheKBRPEIFWGJhnkZM1KIxkEzSFsb/Gs\ncm90VpCTLZ887+9Jtay5WFlIM5W804rv3tNT50lZQZqS++yePxjM/mmQ2rNC\nEMSPHSLm/+0EeYI+suVglX5+l8EbpMDAFCpYjuKNdga+ZCyDwRutn73WRUrr\nNQeAH4rmZJN94l2DIornZq9TzZrFqTBLpCF+UN8dAOwTy3ovXXlUjUjst9Qj\nnaLMrXUYmXU9aOgTTHC1JhhVBEkpE/3BAo4AqmKOMifHkubIaLZTiozQR6FT\nwWsj\r\n=4ror\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfUjpkf+k8gnT9gKeVotnY0CpLv9ma4Lsj5Rpn4HanqAIgRspOwRAoJX3iWYTRSS1zVVWDkqerdY9tR67saj+zvQg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598568575-f3b0eb02.0_1598568723489_0.8569988080141848"},"_hasShrinkwrap":false},"2.4.3-next-1598572600-a22d3ddc.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598572600-a22d3ddc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598572600-a22d3ddc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598572600-a22d3ddc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nAQJk/guUFwIgbGjjCcIo2+qMYnKKz/wAD2xUGY+0CY8IXoKK+pR1jG+/A9v2xLI4oBxYcz8vVeZp5sm9CRwnA==","shasum":"b4a3857ea9e76e56032ae8e1c2a909b7c381f1fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598572600-a22d3ddc.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSEi5CRA9TVsSAnZWagAAaigP/1n+P1Rvtj3YUoyh0Uxb\nkLKFxCbmwlHta+EmQwf+VnZo1YuTptC1Y82+oGO7DGBTV8Xop9sWyqpEJj9Y\ni1OD6ROnPfaKS9VwnuQWkxzufrZEDgpFo758XCDcUzqvE438yc243B23u9WH\nM6fHOtyCjguDeiU4lJCoGdG8f1s6r5wJh4OuGaON3bivekPhvfKtKx/V8xD4\njaAbw7Ckrw/DpyCGnAPwMK1OjIAFSbKT7x2s6/J0npRJJUQTtdZu58FINNHH\n2Vwe4KxThB3/8fs5Z9cfNVU/e6SmVVBcakcnz9qXrfLcilKX+JhwMzgUQP//\ngQJaFEkP3Qid0Jrr1prE9pMJYgYyDu3PTX++VGFGJPQ8W08tgZmkaDRPzjSo\n5o51KMvptdESKGGi1qvaQsfbAZz+Ox7CKqwOM+ozsUehsbXLZJB0pdSALAZq\neaColJlS1rXKAHgxMivZRu1vLoYvHJdEVupRYmvNSpkjxkVhuluHWK9H9VBD\nc3HI5v1Pq+1csyOoVYJsRP1hSx6H4yQGAXkzjLVL1I+x+Y/opWOVGFmKGbBH\nPhHCrM53Bc1zD3+JBQO9N5Xs/ceSaXLz73F2XimADyQ/HeQxA5d78CrySWOx\nTZYvdRjLyJs9oGJ2kwkBUDG4uc9xMYDrGAPrWvqUNwQz728h+vGTtpEqF2Pf\nf0CC\r\n=2BWj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCi8LNzEnCnLVdE+uwMbYckVqG2p+w+8kz+1m1sjsESPQIhAM97eeSEKVcPbR+zCjTjWT1DSV6i0mE5iMbcsbBqR4sZ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598572600-a22d3ddc.0_1598572729160_0.14812362952021996"},"_hasShrinkwrap":false},"2.4.3-next-1598573430-42f9a86c.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598573430-42f9a86c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598573430-42f9a86c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598573430-42f9a86c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NeptYY48Xa67t/+WQOfgFEXTDUzB+lzO5QhLtJqnMWUuHbz6dBYmZhIiMUNBwNC75h3QFxP8zFPNa7HbaynjVQ==","shasum":"2dad0301c6ad444d7937fd90b2c86e60b0c7f8a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598573430-42f9a86c.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSEwYCRA9TVsSAnZWagAAVZgP/0y7758+RedBPoOxRWGM\njjvOIGHp/vv/w7Sp+Ch+U6hKHOmKm6jVCIwYXF1LowZ6nHIxb5iXlvhV4/ha\nkzNKbzdjU79rfoEwv0sMFcMT/DngjXhhrKpsoDy6yKYmI3CqDThMGS3dxT+3\nPmzBkoubb0GR+PwLWwVA7BoGpJQFOHF7KxvBTr9hre49x4SZod/lZJ05fX9o\nhLD3SKLh8ORx/hW+FHJ7jhwIly78WOFTt3KqSwmcmK4UfrNLfsP/ZCY/TYIi\nlkXD+Jx1V8kj6C58rurOfLLRb8pY5C4wq19rNrjBlvmJwrO4RaDbsQVhMgwU\nUmTgd1w2e4UukKddp9H6tjQumFn25cQ68+U9SVf4zlGqw4qh3/pdxRakcRXS\n9gk62rHD7ZRDNetHrt1bQFlcRgkgDvFUTxVrKYZGs7SD2+T0kjHEl36DaPic\nsG+qh99gwsuW/1+5beikWK0R5C5BEzq2HzTkt1f+kiQ43LJk+6lrWpfKChCs\n/Kdkb20a0rFFz1xOxQ1N+o8UiEZREHDWv54UNNY6YmmipP1GZJ8J0ogz6PDI\nnvhZEvvNzxi1mBVokIT4cc22/U+t4TRTbo+NZp+89VMtrt4UL8crWdKJor0q\nNnG5ZjbCNCBFcR8zptwagQ6UoaXtJLKVAc4VV3s3gOhsasvmg+ClR+NH3jq7\nTw+O\r\n=kZMR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxDBXAbYR20/tvr/QbYn9PZWV3knEKfVe4jjytBaIKgAIhAOGCoppAOsePgipe+AiHpPYbEGnHUPn63xfncjB/7Duk"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598573430-42f9a86c.0_1598573591765_0.9400413196310682"},"_hasShrinkwrap":false},"2.4.3-next-1598573779-0fa5c842.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598573779-0fa5c842.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598573779-0fa5c842.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598573779-0fa5c842.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JPohC+2nWrYe0H2kpC8FfGi2Gjn4nkbbNUsQ5SbmF6jZV3YxsUWBof5eR34wMg2v4GuJJqZpha/Cu+RcJBnCug==","shasum":"450977adf2cb685d10fd3d079aa76b8a40d2ff64","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598573779-0fa5c842.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSE1jCRA9TVsSAnZWagAAX0EP/jNDEflg4tl8DNBKf1Hf\nbY8tXzEq1RrMm/pYTjITXROsL33d++kj3/35TZmJC9Jw8uJURStgIu66o9DX\n9mpWXuFzgI4r6xleNTdqJQ9rSHecMlQNrRTqcM/LQGRan1SdAH7jP8xy9joe\nBJmKz2xS26mz/d5Ms3p0PITjq0Ydt64T9nqesaTHyJRDWCZQ1paaU8R9upGM\naBV49O6yKV3b4TqENqtuKyhwS+UbNm1sH0fbq6cdE8qHwYZOzLuL6JqYnKVd\nmhzGZ6ZHVUXT9VQDgI3FbWPqNqF/jzu/hYEyIymaE/zSWj+LowPSJVunjvgB\nkmpELbEEZAwdAVe9r7e7d1LnI3rKY6MybZqkjQIAMuoLSAxO+2vRCGsGq7Rn\nnlltTvI6uoKXUHSL43On1vRjcmJjAbNNad4tGu2TGJRSVvqqMrGVkPWoSupQ\nTIBzdR4yyx4i0OdX2jB4XsyxfOQQpnlaF8bST4u+nt15IG0iVwwyhGvAVzT/\nQ6TOT34ytySIULeQuGpX61YoH3FNOtJ74v6iVBMyURI5voAySlPo0w0RTCF+\n/pUxBYlnhkyq/Z6vY7vOrc/HUfzgQWYb3WY285oiLjQOlOHHs8eyk7LvuAsn\nMGdwIauAeg3dsuF/n1Re8k8LL1VnEvtcJOMeY2kcOfN6Lpl6jn0YPq1dG6Zg\nlGdB\r\n=AKyy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTvlaugrvqEQYH6iVcZgovbIueC5OcRe5w81cY/jPHegIgZ7INKT0i7DFdzEc7pS0TSBshSSUV4Fz8NCQEy59Jg3I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598573779-0fa5c842.0_1598573922946_0.27717227283539536"},"_hasShrinkwrap":false},"2.4.3-next-1598608146-7b73d029.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598608146-7b73d029.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598608146-7b73d029.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598608146-7b73d029.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WB/Bx9cgN8CwJgnLLpXMeG3eHAJnKX5PVj4LPvZvJPP4Hmu1gVOkpQ6rYMvYcfLPZfM4W0EcqtNvbZkQLxWmvA==","shasum":"f2dfa367753ec8615b8c3a5630b5fad88ee1fb84","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598608146-7b73d029.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSNNqCRA9TVsSAnZWagAAFyEP/Ayf4LqsX97wihmXcBOU\nZfERK/KXltPHh1cESB1SdQx1L85u3dbzx2XIS5CIxqflXBE2qb4YDIMFwsTk\n50ehRbLHmlcL985bk0afQZhUI+gsXdU80uRQlULpOV7AbVfsuAGuirFN7KoM\njYuHkmW+v1JyPupGGuczzk9jSvYuwgEzTsQNVOD9h67j0ujm8oVLVgPiaDpi\nzbZYpYonI/D3kErBgNF4CCcXuwpTJy5FWUcMDaThjJy8tQcCE4FowlpkuyWu\nZxSvS0MwHk2Zt8Enm6S+JSU4pEFpwDqQjB+WXetwBsF7LQvU5bbQS1Ij/t7K\nyXTX6GrdYKJH/crNWlookKrY9fu1k80Z2WYgBJB1qCzw2MHVpKYYOVflX3pZ\nxIAHrmx5kwpv2kwAVrDZ5JYRABPZVPbx0TmfWO19xi5cZU6z9+55+geQNGSX\nQk/3k6v1jZvhP+/59QDuymz11bM5hSCcALkjwMMmYtSpe950WhdpSDDpSPqw\nCJY7HHLLoabMVDxbKIadQp4M2HqXaoOhOHa5AmRTPloahM27L4qLRmZC+JKV\n0tu0J+ZcQ/1uOFZkstYJfd8XfS+NFnyqiWqYEbuEqYCAZCNSJD22IVVrF6/W\n6RGdqpE5bQqRdOMU7Yet7w7WqbzKMWZqm8zLHPx79D4YdzX/rnr5kEUw5qJB\nt8kJ\r\n=UOFH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAovvhL26wpqUQtesRtTk1miLqkMELhkgu+RPurXc7aDAiAEf4tLR3oI8GfDwsBHgz08Nlsu6cDdeVg5eC0Dafn6zQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598608146-7b73d029.0_1598608234314_0.243428655895372"},"_hasShrinkwrap":false},"2.4.3-next-1598608868-551f063b.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598608868-551f063b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598608868-551f063b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598608868-551f063b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-gkdgK9Ul5HwHTkpy7/IiyV/LUYoGOJuMVPiTcbm+9uKnj5xNiQdpQgIjap7xDy2BwCOhGV/uRk/WDbvffdOX9w==","shasum":"6ca07a9f536f59e9e1585728b3fc638e8d45b5ff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598608868-551f063b.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSNY6CRA9TVsSAnZWagAApXkP/RiduX3cqOX/6NfZsMj4\n8UB3IeKubbzwdEuEOpsCZgjOjdNQvWLStlYK4DZ0QhQMtBno11L//GzeHYzF\nrWrAWv99iIesa+TAyO+ggCpCtIr7zXec2oEVTElwhDRDdFBYA+rDN+bSh5Hd\neOHQEcpVRXKkWHAzXBHHRYfF2Hlr+mZucEaX7/Wm/4pnsoDLzQ4Zd3xYMWae\ny8+GJj3AHcNPpOjDdJpkuadDl4IsgEkL6JdGn9x4Cc1MRwywiDt4dJ+wBdDU\nH+kjvWtfogAxiCD77k6gjiEjWrqqTW7nHWwfTySXH5ni9JJRgth+OPAwKAar\nPcnkxEiCcyguTyh4an36/zfqW7XC60Uew5xK1asGx1bHDJsRL9cv23u1Ugcd\nqKTQvI/Yf+AsOkESx0H2GodM31Ljh3nnFGECOdUYi7Ok5FifwsNtYJnDRsWj\nLVUyw2o/GNlAUHJNUBCOikhYwssplru4+JrCP1yS2qdWTu/ENR2dnf6E9Jid\nrYeYPJL/BCkiSTT78+IB11ITfzhQcorZYXLhbFHsDNaSkv7PlHefLrvcbzut\nW3+8AJYZW5Sy0pQgCOtgLezH9nBZr9zTT1HjF5ozOWYN8Yoy9CH6etuEbb1h\nNP4lyB2+4bhiZbx/0SxUvXEXYKDmcGRrejFeX1ntXxIQZoE4rcptdvfToWh1\nhpt1\r\n=Xh1F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF7fmnozcf6PMj+w4jSl2YEgtLnUPGZWUTYPQmoZBBimAiBLTZ8m7E9lvtMEaL8lBX/nFb/cqJxEtt20vLxXJ36RVQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598608868-551f063b.0_1598608954067_0.9978214617949865"},"_hasShrinkwrap":false},"2.4.3-next-1598609981-9fcd2760.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598609981-9fcd2760.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598609981-9fcd2760.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598609981-9fcd2760.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7+EOMcZ+EEeH5WmKOPr9PbcPs+U3hCORkSSCc4JAi/kVgSH2SYe7WzPFRzsw6SI2wEt7vyZTG8f4/LYqnqhTvg==","shasum":"7aa67f049d6568b7c82796fcec88e1b9245d321c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598609981-9fcd2760.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSNrWCRA9TVsSAnZWagAAMEYP/2XcGUZbAUFwBbW6Qxc/\naH+7Wsm58v8f8K/PAP7XrXQLLngukcfBnZOf4g0wG+ldrCbub0LPl0tsaj4A\nsW2ecl1NoRszKWKyLCXTLSGGmEqaqlYPjOskM3BqrTUvVePVDjA+mNDcM16K\nz22+73kjxsZBKY8Z/u2h6SQzVS9q2aUeBPqDwzs218H3qDzX+G+JElAKRWyb\n2/cvEaq5IUOIHhDyWrZdWgEaTuLGsUtciRvA0xJm4uSYyjfLeZ5UzCL+oA7/\nBYt5cDG3nYhwcteLwHgbTyQgRzG4dhjjrQwUQfuxwH/oSyyy7THx3hDLqTgK\n6ShJvtG6q+vd5iLX668rLq968j3CfU+k8O8sxIAbmj0O3xPZBShDHMJzzI3Z\nL8+c6BZsTIn3h7zL34eNNCREkAivpYtzE8OvsCCiHQ93cvpHdN1l1CSKTD4Z\nJ4P1oKr6D9bgABbHguaH/hHdGcAluBtoiYvBaMQoxgUkRMtymM2Lv5IhS9Xg\nuqwc7BndQYuE5wwOMkYpsopK0CYTFrirmNVe9BQJatL19jLyRZNN4w5pU1lN\nNQo4TTejwrRY5aGQbBCWWGcopRzJl5mKAHsNE20BZ5B26FkKSAKlQKnswBdQ\nELid/ywAU6lqfv7PneKMU0SkculFtHJ681n7tEUmo2iFmrcSo8YvD6hxBMmc\nTYoA\r\n=NwdI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBtXFHGPq4fbi3jbtZ5cTJ0gz/Ah+f7HDFkusPd/ggkiAiEAmpVn6rb5RpbCvHLRVmEr3jyRZ190NQCmQ3u7A3ePJLY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598609981-9fcd2760.0_1598610133852_0.11944049981014615"},"_hasShrinkwrap":false},"2.4.3-next-1598612606-c7898967.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598612606-c7898967.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598612606-c7898967.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598612606-c7898967.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2/0bMC6nHdn2gNa9jCTzAln7Z9YPATsb3f/AxfM6AvC36xhpfE0VFAYwaqnqREhsk2bxRuO4sP1mI6RCbs+i7g==","shasum":"8d79c526f6537c0b8a567e340d7fdd274cc529d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598612606-c7898967.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSOTbCRA9TVsSAnZWagAAJskP/25xQS0B6kanN2gnw9Sl\nj5PPx8sA2lVwMDWVC1LBB6nH1VDQ/CdEZm+iOhUshhrTTM27CveW/gydWYf3\n4683YcNwl3sIB5u+nox822b+YPv3Qd5DSodtUCx1uCfguVQe3FoNQ+IOil1X\nsmoRtJJc0UBNNFYP/67UgquSfglYBLNK1+6YvA6WVGLguyG7Fe5TELIL1wx3\nvrkwYg9WHmzsZsdZ+/ZlA+/o4DMtWfCpHfyUZbNh8/AO9KqjsmX9eZvsqvF3\nX2zgLUuEqtj1Hsbg8KWo1ISx7uZDM8duME3p78+Gsl2LUPGxYSqUu/xjglQP\n7XRXK5+esFvEDuN96EqBLd6iPX7atoPeg4U3wwn+wfAJYAYqoEgq6TdpNEkR\nTDccTOLloD0DzluAOwwLNQ09OkbBb8zmFjB1XQ1u0DBGlagzAub5gK7dGui+\nDL782T8AnEHHxDLPvkbXNx2/22A3216c/YzYgYwLjB91osP0q2zIzFIb7tXi\ns588m51ZXEQhyEHyjsVTN8+/6fB2G2VEJUC5s/NxHHFOejSHBZ7+DZ+NKBzx\n49cMl6mJmhxzIY3ycPyBtYx9mjC40YZBeiny2FTavd3H7PtB1xZaWf5PZXqY\nG46ektCXAkh3TFfGWTqMYsA7TMQ2qn0zQx9KpzTmSgjk8sekfFrRbTPPpDOA\nQ8Ta\r\n=YWiY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+cR8OQcX72WQHIGOwJ5cNY+q0nxh2i7ozj+/QdgUjbAiByxD0HIRap3KdleDzmFfHRQByPCLxZqCjPl2Je519+XQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598612606-c7898967.0_1598612698787_0.1521778061372152"},"_hasShrinkwrap":false},"2.4.3-next-1598613220-91315f00.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598613220-91315f00.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598613220-91315f00.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598613220-91315f00.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-o20H2ZUXHQ5t1TZ9g4jl+VoUrwFdJBVpq8haHA+/sRtYdr6KCXJSWQZdqSaxavB0SQxnchS/Cfx0fIOgW9DqJw==","shasum":"bfad27319a6ea8fb65493e2b804790a7113214ea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598613220-91315f00.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSOc9CRA9TVsSAnZWagAA54kP/2i91Ba9K5/BjIpiD8Yo\nTqnW3owD2ZoQa0MGA+IDk4Ykm8towVb6qGMcexg1dKmeB3JIogX18sja9S7v\nQkb5X84ENFme9D3G89rNzHamlaQnMa5siJJ4SXH45InqnCqQrGzjILRLUpTM\nEChFnm+E2jS9QKvhB0z+fyTBvy7jwErFf8/MlSNOyk6UMyAlUXiC+614iWBJ\nFkuBRRF7PgI2rEtercu2y6So0TSb0B47psC8L1gQGTCSbE+/F7DB6TS10QA2\nwZNpH71mlPPJMnKHcCaJSdJEzzVZF6xIfCP8HcEjS8S044uQsIIfJ0Kbs+qa\nqvsL3bhTlViNpezG0XwDq3JkUh5DFVHKKhlIR1t57lzB1yl9QYBmQqt5qOnt\n0IDUChRTwYHBnDltL4j8A4C6KOWqWKh4fTtXZ7dn9XDBG5KL+Hejf/TaSjsx\nDKmxgtGkJ+vEc+Ok45QKabWpiNlsFz/1NeXpcuQctZBDrF4bkdpdZ0YdxNNO\nNpEWbcUZPYGFI/AiyVCShJjx1TtnN4yep107KCnGWRoQNpksvIM5FvNCBbv4\nIIKe/dn1J0IHf5cYeIUwwYYnZhI2n5ZiR5l+T2uFIkjz9Jq3dDgO5a3s9omZ\nojo6FuAqLR9SFRICQRuEhK757f+dK8ihJaIKD0Zku5DyQSXgnGKJPnmOOC/8\nIZ5D\r\n=+Pcd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICCZHVy2huQgzbzTLp/G5x1E1cib5TVQCfkacWgo7GTzAiEAywzqQJQCShIcF9h3fWw89eY7qzugzUOLYuIFyVSyi/Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598613220-91315f00.0_1598613308831_0.9953864658582725"},"_hasShrinkwrap":false},"2.4.3-next-1598614099-09d72ec1.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598614099-09d72ec1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598614099-09d72ec1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598614099-09d72ec1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CWXrV5BKAIVJOxRwnVNau5X0pp8Hi/fLiJj1zC7IxB2INimLtSkqX2cw8XqaUYYbH4XMX4ZDrUhDgCEXWBMiwg==","shasum":"310d22ccb977cba43e7635ff46cd49b4c51b8a1d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598614099-09d72ec1.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSOqrCRA9TVsSAnZWagAAOG0QAIiwFDTYBvmHze1dcCed\nTtMbu0D4dLHDHfVnaa0136feeHwBUXDKcGCHMMlclZZxx3UzcsET4jwWvvEU\nXT1OWxcAhuDS9TK3yCwcq0X8vvmnvXNcXCXpM1BOIGd+vGljaB5phMjF12Yp\nuSoJKfL2dkLZ+MjLLh6UUWiMsYG9LUp2yM3QZ+SFF31gum+GRuucH0yyMxRa\nVYWxkP5uNjoX0lrEq8LwHxAi/CQU3ORasl9wnWKaomGbvwvebQAqXRJnh8O5\nyXrmZ8vJkWqcJOv7rxWyzUpqNj/XD7C94w6kp/qZZd7wX1WlTMgqNcrR+xFz\nsmwvoDZGp3v9DnQZkF7ma9soi24fof7lUaq+IsbjYP/TilJlNZy2v8V5JST/\ne++pHBFqxxt5T9at93OtkUG5ymryndiw7nbnDYO1WPchNePbcqOCe0fkdJYv\nYqnVpwr/rR2Hxzj8RwRTtof6BbwfLpIAui3BKtcA7+7r2Cfu36Od0s/dG9Qw\n/84gi3Wa76dklhqCTdXrydR7QfgrjivTDpUim7ZxbXWsrwmoY4/PQUcIbEQ3\nofcArnPDI9flvAh0OKot20HX7XTH+jUDy7yJgaxlS5ZtZyQ2YVrF7z8ntPXD\n0kKsIzHIghu9Xu3Mq5lG5jIiKh1VxsUzT3DUruQZxbJHuFYMkwJUk8utjEbI\nQbaC\r\n=qDlp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDs+O30mdIcRl/hB19vvXbwW7egrJkFjKzTEOFEiLCagAiEAoWfoUUTTX+5sx5eCM5tAlonUb1pf3XOVK2oO2vaQay4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598614099-09d72ec1.0_1598614186937_0.8630257318877579"},"_hasShrinkwrap":false},"2.4.3-next-1598615169-b6ec5841.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598615169-b6ec5841.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598615169-b6ec5841.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598615169-b6ec5841.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6GiQawSUt81jPcrjR9l1aWZ3NDTxwYigCQyEth10vU+XVujWpw5thG9lSimeuGyZNLxhrobLU20RP6PZEs6B6w==","shasum":"a63f1cc2456e44adf4072c23f5e1e514d03c262a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598615169-b6ec5841.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSO7aCRA9TVsSAnZWagAA4joP/3Dh3wl+QrIhGkbf4zzd\nlluBFedmUlXM0B28n8V3aV8OnTnXK5B04UvCQRcip13guv0U/+JhLecfOW8u\nTD+BMPjytJDFlvHAIiKgh6V633WTIut+LpdyNby7IgLIbnK5fI/D8ppXsCkl\n9Buzi9xOveZBPxnWUQ8GXLKYvhzia8le1bUvR1Pjv9q6sCloou5XjpIzQphw\nSMqhwWUEaAJam9Xm9um1i3hnlWj+U6InvHkIh7YVegGDBNvcq2FEgq7kc492\n+4U5kHibXiTwX5S0bSld0+5yD93ntqpWE2aUaY0CWieQEwJGSYG5z0WMJgyc\nLu2n4NxP9QlfodmXaDeQTklJTtrKGjxEUApT5iNT2bk+9M18mI0yRc7I6+mf\nX+3vnVR6J6ppKzBAIGw5Cs/IXtsEB/ELjNbGudAAX7Y0uhYBpne+A5sI2OZh\n3MFeNPozFSyHVwr3ma+Kiwqa/gBaI3tDur9NEw8DjEdsGOH3+GGGHibt8Zdw\n10ydWOpbmUPb7zkKMGe328NGax1aNQYUy9INs5+Chw1pAU/3xDvmeGi8MNw9\na482LTYGQZqTEC9qz1nph2qZwzqFiky0ScyMQ+YNu1wWI8eji7pCPRwAp0wK\nomUQ+6+rhrewUNFqi/5VxDLlHliSvJwniHBhxlZ3w6zyN1UKhUzk7Sl91vwW\nFjuV\r\n=4qv1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChYauWCPWdL1aVp9hSJxd71CtDpUZKkZEnDpVYqxt8cQIhAPxR1eXdSRJgDfY1JKJAQnKr8w36PShksTu1QSAUIWmJ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598615169-b6ec5841.0_1598615257919_0.458752302940866"},"_hasShrinkwrap":false},"2.4.3-next-1598615532-3a82be52.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598615532-3a82be52.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598615532-3a82be52.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598615532-3a82be52.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KnAAFM3Oq2JnrJ5v1ihy0+3CenqYU1BkSOUgY6Mkbubwz42MldzHE+bN/pu2zHyc5g7i1DrmV+ebH/FJqex3QA==","shasum":"198c89c1e2bcee15fabb9de43ff02dbed6a9b5dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598615532-3a82be52.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSPBECRA9TVsSAnZWagAAbLcQAITVaxv9KrVPi4oqIGyy\nU4obZ1t7yKeK1ydI2J5XfFLk/fdBDtfyeBAZpACbEUsuO9Wf5DD9gh6naE6G\nbKAL1SXh5wEVrcoy+RZ5zbKkLSImFppMvb5ECO/M38bVISl7DEvfIxBmGv2x\nZ2Q/DPaDt0/nfpDHuLHm1CaSFBQKqrjFN5TKeZWfCTRtBoKMgD68wkZ9om9l\nfmXZxrA50PF4TweUeypbUW32KC+wUP6TVoOzfu+9qmreLNe+KqUVxnee1oGv\nRb78AnTaqW5ewUls+UR9CneAT9yyJnidnq0an3BCwkCAHYRFvaz0PVO3XzkI\nsrPHEuB77U+dEf9UBj6YlV9QqwZoRIHub2EWWw5eHNK+tzTn8+bfAq0OL+rH\nq8FCjDQ/Zx5rXpHJyAcUuBpoGr6JPHBGg8d6kyzJgoYvM9nBmS3JvF00KfZt\nUH06faPakh1/yWOPfwxl5GkUTca+EvUPKC/reFYR6byuwiczaIqTDvI+Q06f\n6V2yotb9XHtp/kjjFYOGSa8uX0flncyD0ixKSZy/n4VPo3N+/U0lPzjgVHFi\nihQ9wb3rh5FWEJWOd05eEyQE6b9jR/mEOMMeGJlijUDZFdavkf3qHqywBLwg\n9HN3tZ1EZ6L5bwLNnywvsA+Vi9oiuJ0Hj7wwxanlPg/FCNHNER4JOPqedShz\nmUaG\r\n=hUcj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcRZB+0QHtn+B0XPWVDibqJ0Gn0PeeuRnMva9OiffD9wIhAPSrF5TkzUO7sk1UMzZjrevMXEuvu8eBlIayIYdoPo1H"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598615532-3a82be52.0_1598615619638_0.31920263789932735"},"_hasShrinkwrap":false},"2.4.3-next-1598616568-3a82be52.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598616568-3a82be52.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598616568-3a82be52.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598616568-3a82be52.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-miuyZhNDNIE0074upEvlUgPeXTc2emGYYzKuwYtkn9XDIyDp+ID8FYNoFrTrgwbz1Vpkr0KIkgkQBZ+Oifw9YA==","shasum":"b033998afeecef13d2b99ccc55f4be5eff21a2a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598616568-3a82be52.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSPRNCRA9TVsSAnZWagAAXjoP/0/LkbHQ+DumN43HS1Jc\n4VZyryJ7KzvO1KPjAB5GhXpiaHo0ss8Gvz1IkKurrPR6IgfdQhYR4+tij5Cf\nxDxuFsBZ0ruO5BKjK99ZtvjWsoVYZIs+txtcLWLC/baVJtmMd9M85AFLXwmW\nfycoCVN09JZe5hzVLdA/YOam5m3u9+STPblHZBBTh5LN1E+cGLJ95zg0PjTr\nTUbouvoHLHZpox8ZACR7oMWq7Hw7Jdr0uV6O6Ba6r3gYer7ivpNL5+sEtj9W\nVpqLgt70WmAdkvqKgJPE4wihPE2lSBzAett+zOcCte/aaOSKxuPXh/3RGjcv\nonoyw1JuM2it1lrEM9bHG6zavDGmpiqrv0uRgew5FBM9Y6f/tMpDQIY9Ma6f\ntUlTzlcsys92dZLvZgUw7CbGzx+C0OXJnVUvg2paq16Z2TEHJ9QfrDhQ7Spo\ngwX/Sd1l1tpfRSryU14yW35J8ZVK2G5Vg8XlRmiAFto2h6RJ2KjlpzqXniB1\n+4h/tuuCb6dgxz5JQ3aB2ki2p5mSt8ZsnLwq2f87iQEmGoVP0ILF+aKDfsxd\nc3LyZ/V02P19BdCr22HZOUmNXqmcFGCOG81xccD/xsSrOE49DiIMl61RK1D9\nYBLc4pJ1uaZRXOFI1J9ghLhBdkAgC5X4hUAycVloqqpf2yyWLA+WEEKqvOfj\ngIoH\r\n=YXJs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAbnV618Pp/mUSWgkh6Vp0zrcboizlXYtmyNy3pvmFDVAiBQS9KpX0TBZDLBv2r1tB+maY6Wc56yXpUcbNk7kbT5uQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598616568-3a82be52.0_1598616653117_0.4868047741643291"},"_hasShrinkwrap":false},"2.4.3-next-1598617177-66fd3be5.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598617177-66fd3be5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598617177-66fd3be5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598617177-66fd3be5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2Ffc4Qpj3eK4DvbM4RZ4Omb6lokusVKkYYHus07QsiGeB0mrvRf5GlJJbCM2JKBCC4M0z+MF90f8t8H9U/ZcAg==","shasum":"7cb9f1612f2363bfb54d2ec21d74c82236f1a9d0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598617177-66fd3be5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSPb9CRA9TVsSAnZWagAAlOIP/0f1vMv+KRP6DzmBDstk\nLQIvpsr4P3+H60/p/Gz4gYT74QM4LWT0Ws3+f23AeAf17hR7hGGBymoDqVPU\n6cosisSNKhFZ6BP6jM1s7FJMQ21FrPku90t6jGwpMYeAlZ5fVunqt6/VrVRk\nw0ApRxmR1060/4reJFYH0IFiY2Uy3s4794AcNY25rUfFWq6Ib78pMHNDhERB\nOYZo2eqcgxBWRm6Uq6a3aF6BZ6vHeuepS7rZLLSooNdcnsSXsk+H9I9Roxs7\nTakbJA9p3jQfyHoPuTW3frv0SDXi3Cz6p/zv29Tk9HDnuQWx7QWrTK27r+Xp\nbOatIeIGP1HCE8ivnUBmaYMFo5SXvw1pRPn9FyYmTidqHdVXav6lsl6fR/8M\njj0IWsOk2MSKVx8BPLwS/w2UrJxjXc7sSQYxRUWnw5KDt4J1K8jls50dCMEU\nDDQOv1oFIkQIFTwwGLbLZsA1J7OVlF0Mg+LftLRwbDxRad5Y6oOfgV/VEBw+\nE0GnH8UjErmJfTdNZVJUtbWRaUq0zjSeor+rXTjrTwhvBD7FuGZsQKBwgWRF\nXQUgN6rfOPdNTNw/0ZWOvAV/7yiOJS3UYRIsn78XqJdsSJSUa6euZYLZuKmE\nxu9HXr0KTf64leLCRd64pdcaTsNCMH1fn+cQJx6mFC+J8nc1UHaCqr80xDRI\nk75/\r\n=7UpW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBB0BZdZLuGM3DbqJbI6DciBZVDlLDr4jnyywAtRI9CaAiA/SlE/bRAgl4sWxzczcjBCdpg9c8Imt6IkvOoUV+pgEw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598617177-66fd3be5.0_1598617340726_0.7341657829070409"},"_hasShrinkwrap":false},"2.4.3-next-1598621638-67ab13eb.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598621638-67ab13eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598621638-67ab13eb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598621638-67ab13eb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LFIqjIrVH1tdDAogRcDx5BoFSdRDHbE+7bz8n6yrjr/GvoUfhBkR/PSIngAWNWC1A3xYZ7r7y64j/TNIIwcDxQ==","shasum":"035137ad53628bdf884cc90d761ee6e2d807a55b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598621638-67ab13eb.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSQhJCRA9TVsSAnZWagAAaP0P/29E3v4LGxAfF6rzHF4W\nKuGuYXEzws+Fsmlkc7VL/v8DtxxoVhT5redcXakj1EEoWHXsxSY+LdTIz9WC\nyL2OjnLEOcqCmFossYkjwgR+8ewXFEZpaZlgAMjcD8TEvsuq6BvLa9RaBZZl\nynNf4l/YI0H3I+/tggPuNFcgAqeoCBJFBakRGi+KHUn6V8Vkxhu6snsi1Koy\nQVxb/62i/lSLtCj2vOUrQjnT2ODGpoBwVpciYzuZsv+jbn+OGahZT3t+5Q8w\nUwCHAVObnWTT6HA08M0hqDTLSFelDykw5yZFNqC3ZRvUQkoVvavS+DrWE8D+\nBLQN69t5+KNfTXbEJ7KvVMo7GDUgxJ54dCHt9uuMgQJcXzkmdZI64ShAoXK2\nBDDFYuEdzMglmRgEjIoUh+MdWcMHezuxTdqassRMBji15A0xo7JVlvVhQCew\nxR0S9mESLfUSSDeBQ+3MXm0NchJqaNEU96V5oM3PWdooFf6tmaGGG2/zZ5rg\nHTpgBHYgY2Y7scht26TJp2VFyhUn1eTe/ABsNQ6gVHQCQS/6VZdBkaM/K3+n\nZc/brDzz3vwvj4aK9wfYyX/iZKmdU1+G4WwIRvjB1RaA+l3FpHZCveQvWPd4\n+ptZJCvNhll02P/vwB+9y3cX1MT8wCpLnWAXZ5V4Hc5EhtkJ3B3fIi9Zkch/\n+teS\r\n=bjTI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGEv4H8Sdmd1+lsJibQBcGLjA529bn6fCBQu57XGLbslAiEAoq5+5HuxG/FD3cjgWlqHpBVrVx53xiTt8T+I4fun670="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598621638-67ab13eb.0_1598621768821_0.8774912918532507"},"_hasShrinkwrap":false},"2.4.3-next-1598622549-bb0a29ec.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598622549-bb0a29ec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598622549-bb0a29ec.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598622549-bb0a29ec.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mHsKO//pk3MxUiSdvyQFOHZFUkFKqzdMvmPTyUDP9GOOx5UbJJzTwxlBiUglQLUcxnUvXELU/U8qPioiwxinvA==","shasum":"02db118917f642924a472d29b88df34ecac3dcc5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598622549-bb0a29ec.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSQuvCRA9TVsSAnZWagAAPr4QAIICZdWc4cw51EPMIdE8\ngUPxGyce9NT4iFX3K55Bbrn6jD1Qkx/PkOxFTkPMrOCOfskmv2tkG35Isooq\niBiq6prVvKzmLfPSXBzEoaLJ+BBMbt1p6M2NA0qoyRW7RcnJZzuUuYQEw2DE\naeLvoMlIduM4FQMLwAOfklFfEZIG9qjw3NcDd0Fp7S6vapb/7wm1bJwf5ntV\nmNaFcA4V0G6rr6VvXpo8ekdky4GHDRFUk8C1Lj/T/z8cnJ5VzY/9tlBlKzSg\nzEsbIN9JGHx+syLRv2esAAghFK3VCx45L0Tg/12UfyD+FfseDRJ9jAMb/eBx\ndzqbSp/oz+eGGh1pSsEsABss/djkIuKYs+MZbBhM8DiG2iI8ahwV8+4uQoDF\nsPhX5DFaoRK1VDK6uOFxHvnNX0sUpruXRah5yIl3UqocIaoZiNVkWiLyIdw8\nIMjLi9BYf0IYWlQsYxNPDdTxByTfjNxXrRg10qZRHMjxPS8Ko4MlfvWqobXD\nfWOYgbFfZeJOFqmvKv70VSPNOlaAMt83L7DNVlPxdZ5DBnolxd08iPF12aw5\nZZVD2pwIjHOLWv7HFHZ6LjwU7pYV/TZeyAHlWu5gUCkDhaYrgQLLlYnD0xHO\nXsBjQPrD+uODdesMULxL3AAS1S4BbKfoAvNSlps12pkw4/hVTGeIHtzzPz78\nr5xi\r\n=1ECh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBiq4vr/ovHRggv78eH/J7rWRPb/DB+xZN6pwYp/akUQIhAPhpQqOHpvoFbrQqg7aAV44xCnt6fvH5E1AbY+iHdAQ0"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598622549-bb0a29ec.0_1598622639222_0.717977785286136"},"_hasShrinkwrap":false},"2.4.3-next-1598623112-93ff9d41.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598623112-93ff9d41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598623112-93ff9d41.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598623112-93ff9d41.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+ZZllWDCcmInh6uJhYxPEXy03Cs6T/zdvgCWyk5KzS9YARN2XfIKmRrqOkb8ZtaJ97uLXGXhY7Ri8pd30uE/PA==","shasum":"5a762a44134ebbf82a4b0ac193fb1e5cd965280e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598623112-93ff9d41.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSQ3oCRA9TVsSAnZWagAAkpAP/0X6p3clSsEi94tOrAEJ\nBb31+58qsTvEUhYA7vt0RR5iP3gJXsw1SG3CkFFcGgsTZgdl+wBbVDL2YDlp\nE7SOJbKzqr1Q2smqwOxEemMDynv2l0LBKKM/CKK2o945z0Cg4qjXvKuRtqfE\neDNyeqVaswsioUZPkixfpdAcjimHK4PIdo6e3NDsD+9WAU22nKDGCnMi9ik4\nlTP694/vbWEgnAvLwFiFOJFHKDvNhb11BnM3Jc85fqV4GcaTjbXkVrcuZLBv\nY9ed4lwnCoOwAIuitfJSauCwUBP6hc9G/m25rmXNm+TjTUxNKWFo+wiYXxyi\nLU85ZRcr8WigMTUAxRhYS5rH7wZq6tMtZTtHOrZ4/O1NRx97G5ERXeN1w54o\ns78m282Uq0JOBXdJK/QkE5mnKewb8bKHNK4G24xhsI0uZjaLkDZSRg1+FAq+\n0DpGx4bNzFNdhwl3jUTvSNs6OS/q3jLzAx4De+gx0pOphXqChsnhsQLtZv0r\noSYR0SAqlQxLTEbNl29m+9+UpWHCHA2rkc4tXF/w0QOZba/sQrbO1Jy+76qS\n6y2QeiCIf5VkmICUa7VEbQ77fxsfyYi8UQcJcO+QTesMgZ6mp/jfsUMBopAC\nwTsUHARiwjycD96AJUYyKF7X9sIpWrqqPmoADs9QO/F++yomcf7407/kyLXg\nCpuo\r\n=ikHi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH4fykMplbLels/umIu8rmJBgfOtDt/nVpGzJEBTRjwxAiEAx4nsLLYANlIUZCpJqVJR11EyV6/ORRbhtqAn5CfHlas="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598623112-93ff9d41.0_1598623207776_0.929961702019644"},"_hasShrinkwrap":false},"2.4.3-next-1598623893-93ff9d41.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598623893-93ff9d41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598623893-93ff9d41.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598623893-93ff9d41.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8fGk9yiDZx4sFKTSLbGXAilB2uJOwa88r9q8jEumTYSQs9+MYC/NPtGKwynr1Mt3eSowEAxyMt8lVfpCWzDuAA==","shasum":"2a808b0c423c03bf20c3c9beb2a2d829fffc0268","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598623893-93ff9d41.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSRDhCRA9TVsSAnZWagAAxOYP/3dlif36+YHGtM/ihETM\nBjGkNLFfPKn6+YZb0eefEjomZDavq5/OLNS6Fd/G9pEWQKBnmoAwCxhw1NTd\nw5gf2rU8LsPubf8pDv/Spq+UuZ3waZULp4ft7wiSppoEX3G+48qEvwPnYtCu\nJK2X1b/2sOGa49y8/0PUYphfI9jusBJK9Lq2vMFpiLcb+Klwlx994Ms4zJwh\nK914r2Fx3QY43GD3frnVaWI3Xj6et8u4Mt5AeKr/RFdsprcLDaT78H0dCOr7\nR2JI7kEtJ6fYBNkKKpLk5hunt+xSxqe0VHHGcNNrJSXjDIfHwImyCHl43xYf\n9JYKnnQj2PzJZiJ/OX3b/ckEUi/x9ETpgEMmTA8Jxgw1c9FgYFkIUhYSDCvv\nZvFshzfgDB7wOekAoVgW4v2sQmxHuvwTZbbpB9N1l7hWmjDTLhJlyKp4+rc2\n6wqNmJlXQYK4TW587vPSJFN/e1b6VjKDbTemoq5XYR8vSN7x+CQB7JOK2jzl\n9We/UbzegD40JGUx2ROBfEG+xycUfhfMtx5bD2a2NVJl7iwfKfCHBtGJMuFR\n7R+8kvFAa0AFkhzBRPGISQ6ajEcmMfAsTXmeVvceS1GhnjreSjcH9hxhZDqA\nsm8ytMLZAS6Thrb8kfNByAM0xrCfHaymd1BhkPJClxoPW6AJICVMqjDn8bF+\n6Zmt\r\n=XJd3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTDPIhArZidfpc1dI02VtcEo5YtrtCdJXg/feC8uhdxwIgMpbPzIDVoiAugO9AjAB2vCuyP2mdhOGIoTReGTBAMxQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598623893-93ff9d41.0_1598623969442_0.14171775210057547"},"_hasShrinkwrap":false},"2.4.3-next-1598624769-69f53a58.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598624769-69f53a58.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598624769-69f53a58.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598624769-69f53a58.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ZJf8mlCaruMmAcE8SR2RNxE28c3guYCfQdRBw5mae+cDPgAausbyxJWcVNJrzMtniaGyxaJ8vF3WXD8Yf6FtWQ==","shasum":"6050dee0c42589a00eb29b56c2cc0b6d3030a255","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598624769-69f53a58.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSRRdCRA9TVsSAnZWagAAJpsP/iliCGqUSIbzEUVzz3iW\noG6UQZrEcd8apjDsmjODolOzFfE3YCJJGdJ1VFzMi5E1m1xbFWFPdIpYXkRJ\n0EM928tx6JIcN7gdZkLMDGmHcH7spKncYHnQq/M9BeRDsR3yV3hedJy1t6jE\nwLbhdoksI/r34pR/iAW5P01x++7yY86kbAHMc8+ZSo58mYFchQKwOkpqC/9P\nf5wciQSxzPAU2SZwiXJyflL8kSIcBo1j5OUFs7Yaru90jlIDKCxVISN8DlRw\nEM7oVpJgIE4TPC3uG5pHO/+lRNCE5Y10KlEJZPpZoOkuLZDX91np3ECmMApm\nA6r8Nyxw5rZUP1G0TJqfO74fyTh/nlO//K69FLlOgY3AgdlSoY5JTUScAlKR\nrj1x+l75FY2nW5Z8yvEmk0VZ7WWhubg4i8obMrW9nLAEDroLZugkKGrSMaUF\n4riNlrIWAMMwKJ4ult7rJ/tFlwVdP5P3QULFz3L9O0IouRyX8XZeUfu22WIP\nt92ZVUKKHdxXrSIGxLz4cR6w7iQWyyBtojamlI3Wihchwh9Y+G5cUFxvyR6B\n9XwD60sktcE6LITTVMqEre6sXvMgQApPjyaw2eqAjw0iAVqKviYtG1Zepp+o\nJMNXW0rIoGlkjMxKdCmKnLuYrTPfBNCSyt3HnF7DIC9s17NQcBTRDgY3sWbk\nViqY\r\n=6t5S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9WTFZ3dkMu1OXX+vf99diLRlP8eYnbX3V9g5x//dVWAiEAqCSU1sN7/xLuWCMbPQp1Oho9P6YX4XC79a9yZMXXP1A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598624769-69f53a58.0_1598624860843_0.8542747827640498"},"_hasShrinkwrap":false},"2.4.3-next-1598625267-41a57fd0.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598625267-41a57fd0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598625267-41a57fd0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598625267-41a57fd0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qvWKH15cGiZ4iyPnwED0n0jC4aUU0YJ0+ptmp/x48Z7JBjI9d81WcOD/7+jxtv0Jo6biP6YGMNVJPDPrcYU4uA==","shasum":"0fd39157c344b2321c82edd426a9757d0ee63975","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598625267-41a57fd0.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSRZDCRA9TVsSAnZWagAA1TAP/A+izhUKVXq3b9I6fw6s\nvSNc5S+hqXE8k7UCsvOos7/Sfe26ePjxEQxDc65Qfi7AvW4J5YdZasYYX3Eh\nDHFq23Dj58etI857ZmwD4IWSLHgl0v+nsfWikYVPXBjlKOqGLKjinZw/VXC7\nsEoETDqpXRZ/ZqXKblUV2q95KpJlQIGubnQde4SUMCAX0OwloTpZK5rtM900\ne5XomRy0V2SalKu9VU98RyYIW1acsW60+Xn5rDmVFfoJFrx2MY+HtrcivPvx\nij07mu8Yo/24TNohijWx3P8X4Rt4t0MlUenhrcJh0pRJYYJMM7xuYyDrJiY8\nX99QVlLLdWWqLTGMn2KBLmdjZd7cLljaq1oBWpXCmJx09NJFUUjxJsnyf5+d\n9qAcc5iAxm3Kj0D9KwROqUpXh4xKtLDsf50/y1RRAX64ityUhc25izY0uXJg\nIruGE6YIUKf9J5wHxESn0E1J8gYxUV99H6JRxCoDnS3/RleErrXO7rr0IYD1\nbwNHzJ6k6eb/wRSFzvWt60Fa4p9i9qo4TZzMtWSKhOiShZzKNJestMTnYncI\nBe5olOjTYEsCyHPiDv9OcAxYy5s144YP8D9b4ddzz3Fr9Hw3ajH8zO4M86tG\n7E6VEtTKbdhl44xntUxtJyhtiaaQBObquHZhi3QYZvD6nN/92xy8FvOER4Y+\nvxu6\r\n=0jtk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFy+meXBk4WinIJACU0Nh6suidY8QmfaVEEIW2kUlh2rAiBSx/nmoKI3exYdgvBWd9D4Z90D44GEL6e5k39chitwGA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598625267-41a57fd0.0_1598625347174_0.420387453767487"},"_hasShrinkwrap":false},"2.4.3-next-1598625809-41a57fd0.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598625809-41a57fd0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598625809-41a57fd0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598625809-41a57fd0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/wSJF/+RU9SpaCrrhJ/MCHsRlnc2NTtrAlBxCNI8d9qTjH0LDEHfZQYd9mk/1EgfM8rMVhtGezPTfkHlBx4FZA==","shasum":"9fdab3140cd02bccc05215832d985e1737d2fc03","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598625809-41a57fd0.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSRhoCRA9TVsSAnZWagAAwv8P/102Ft5SmULURRJbbjgR\nGXKeCrfraKfnGmdzOjQ8sfChDhmBQsU3w1lJBUSbxM9PRgvaGFdeJ3n2mvEa\nfRfdWcarEfANlWDo715NJMhEF2bFkuuXboUTcnsGwSFwUUn+POPfGGqmI0vS\nXXPxjIGqgiVeT+vl5LoDDpK8Gf1VVf+NtuuxRw1WNcfsdn18gm+g0gKFdO5A\nnhppdY+dGZh7qzn0U/C64ca+GYaPJCJ392t1vyIO71K7SaflQFe5dlIhtAvl\nX6y1ec7sCarVDjo91E1vjSThl9JqLJIDuXCHGtrbEmnJRWL4ui/yVSR1B91B\ntftF4ktVBsi2FGHONxiZoxBpJlPFgkPM5inVz4rLeGcK0ZbGNOxWA/lDJr13\nu1UT1iWdMNyJQ+G2GoQDyAWTkPKnqg2XiL2YAXRm3iwF8K4qlo984UF6OsGx\nRr8UegvwYEn9G15Rf/C5gORZYVA8C6T/JzmKBSRgKpEOA3Me92O4VKDRvx8o\n/5cnAREGtopDobTiH4kNMgEjZXdhTzCKnseZK3r8MkvR6rmH9zgGdCgLWQ8o\n+XzRUYnFQWILx3ZHmRoSfjdTiPO4bRKq6edg/QARxLWUHuYMQKWN3tCQbVaM\n1hT/Kxkl6C53WOs3w4AGP5omtmggjpX6X6PB3DOACh8x69ISDpJ3K4lueJYE\nDCug\r\n=0Pk1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAMBZSaEYOyg806mcGJ6Det/E2qVw2maGSdU+todPEFQIhAKJVEev8hEJK6rKGk4SM6Hu/ens55MfkjWmfIuPR+Wzi"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598625809-41a57fd0.0_1598625895577_0.39470073602004585"},"_hasShrinkwrap":false},"2.4.3-next-1598628127-ce2842a1.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598628127-ce2842a1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598628127-ce2842a1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598628127-ce2842a1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NbefpHzJuu8PF7r+Q4+KdJyXiZ0TtL/EH0K4rU7cvit7BGgygYA906zcX4Aolk9BdF0JYtLIcxiGuQnao4cZEw==","shasum":"ad1f7f21069087547df7b880248ec632f2f0035e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598628127-ce2842a1.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSSF+CRA9TVsSAnZWagAATVoP/j0uma6GR1jFblP/nGm2\nf6BW7A6p+SaL84FMXCSyVo5PIe+uYHwEOpCYxjecAqtoyEur24vNwe/JTtNZ\nPQE67wdT4vga7YHfF0DJIfvuP1deWppPaXVcKPuvVzIpSHuG1xfWTqj6v8k9\n4NX+XiHeriYtezo459EI0PRmu1vzTRV7w5w3gxlBFy+bRr8N4YmpbOj43P7a\nD23tvHpkiHseeqDPymFuzLet+SkJSagUuZV5d7nzs2MpLustk090wOhT8xEK\nCNUFwRG7TziIMHfS7YhOmLM8DEdxXyFYzEagJowPTp4w5+lFub4vRu1Fndd0\nwILnqvFzOZxTcvu5MLyiULwFmV86z3CE+M2c99SbanQPcknga009O8lb9TIz\nL9fL0x/lTZrxzQIT+6YWFjXtiEFi0RUgUavkeoN1LZ3J81+aJ81k3SeVPvJ3\nm/WFoAUhoGM233iyd5uxWN1FDXt8rjWCqMx9beA41Xgk1aUJsp/3OJFx19vB\nQyAOhDCH0riA1+vwHSsPfpi3FGIoEZs5ar6rinEk7hhhmDbdXNCb9p1Bjp/w\nLRuse7uGhZbma96AcBPd2GDjV5Q4YgdRAr6uzclPX03ZAXjgmBbwF46dYLXQ\ncQMdzFd2M+kyiw/CvatCNWpqzpk04B8lWUvt6CA3516oWXBX1/Erq1V/mXQC\nrGUn\r\n=VLrT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBYDsisYp09e/q0YnsLtqbJRr7mcTBFBNAmRaBcGkbYkAiEA6BgRN89C1Q6IsuLH1/T+5ivGzNw17ZVD/hZSPQPm/IE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598628127-ce2842a1.0_1598628222519_0.719389367246209"},"_hasShrinkwrap":false},"2.4.3-next-1598628978-7016e66e.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598628978-7016e66e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598628978-7016e66e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598628978-7016e66e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KwgX27J/fIScPs82TSxFUPJC46YyyH5tW6rYu0w40/DNX65FpdhuZrD+XjOW6tI0IhkHceJsN1rCr6tLGT5JKg==","shasum":"179153bfd0ce7f71dc8b838bb574ff84f947be32","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598628978-7016e66e.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSSTfCRA9TVsSAnZWagAAQBEQAJgLjU31kLJEqjlHhezR\n3J44LgLhh6vkx1c8TdfSknArec1QKwwIfkCByKcH+2zbt4qzaRtUtGCqeS60\n/Uqcq9XhhX5P79bB8awJYyufCnaXoMjHLQ9uVtCJrq03h7jsVPMBb+D79qY4\naLqq7r7TTKqDtp3l0sjIe/JU2FuAnlABH4XBpW19Gw++ntzpzm4X355sS0tV\njliUJWEDk8yZwuQhvdBjEqLFvZBd7i5zZUTdEzTgnGUbpqJ7xmnArsh+ikgw\n53Bl23zfTeqRRQ1WjfHJkZoeuvz0jOzqFgRRuz3lHL/KcUjiLxCXxFoKfZ4x\nlYG6wK5wIRufRbojv0meCVZfi9dK/ZjlGqiUTKQEUFTksQieV3LSxhetR2Ui\nn0iAwKeBOgAlwckvLQwFtHvTf8NKGbgiLWTwJTWBGgQYT2lJBb+cTvwI5xCU\ntD1eY5nIatcszm74aLAhbVzTDNjYHhsrg0o1MzTSgAhTFiBsL+H8ivD5Ojc+\nEMSNRpKlkGoh1Nf4SmwG7hgdiwmEagSjverVEF/7/qIjm/j6StGn4MG5wooK\nP8/twVXFoVEPZfAvkwlS/JwR3qL6wjqZDvIv9kjpBomY1k2ynjfXbPa7fxd8\nKb6ME/nVkPJhdWIg76hVWR8q7tkyk6qVeK30hNayyjEv3zzwWj/Ph/Kvqdtp\nG0OK\r\n=5QaU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBkLrri6LFN8gK1pH+dC3cJo51OfKojwDSu+xMrqsCKSAiEAiaW0ms3WnGy9ZhQKGmKjCW5rNcpMmKKsTleZTmMIVLw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598628978-7016e66e.0_1598629087082_0.013890390815062714"},"_hasShrinkwrap":false},"2.4.3-next-1598629607-afd4c9d2.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598629607-afd4c9d2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598629607-afd4c9d2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598629607-afd4c9d2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yxtPpV3PRRrzG5mIoFCzff4QlqLHGzpxursmEvXt6LEj5B9T5VogElS9r/K4Seurmw4avI21CrNn+7hsVW/XGQ==","shasum":"c77b0170f7a4a3a434ee752593259b632a311c96","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598629607-afd4c9d2.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSSdHCRA9TVsSAnZWagAA4BwP/3GLYeB7zLmJ+XFDz3iy\nw36eAR980PqVwnpD4QabCPTud9HbhubcPGyqjvVUG6F7QbbYQq2Y1ixdNz6E\nGasRDAm48GbX4HJWAEks82SnK2acyi+ue/S8NpEo5rFJRQw6z3ENAJ08nl83\nK+KZz6bE5JiQgdtQmdJYVEhwgg218B+/wa29pg0WxiDp9XMCX4L8wN70IRA2\nmP3qZA8YRaKF8Y1jF+Ht5dv2GA1ysxhiw6pzHg47LQKeHF2ePKljGY6eNJhm\n+OT3yu9V7nB0nVWfEWXuOeIy+AzMcj4dKsBw+gpwyAElf/4Bm4nd06ysFYtg\nSehYOlDXhH4iw4guxmZaUcfmi1Xnx2QZZxeBu1yb2PognpPdpnUPjQMhed/k\nJpv9ExSI/78JODpckELlAtRdOfYYas+n5UWuB7Hfty4bQwJnQVqJ14CL6Nci\n0aewDT7WthIl6CvFo494p0LPzlAVonLHG+7KqtSiGNzH6zNUuO2XS8Gfm9Dt\n9thlqqUKSRmeXX1Cf35sXt40PhV3gVM1Be8X9esgmK/BDNYcdsGPEZVDzjF0\nDugeu+1NGAGK8M1GRHWpMiiWcTmqBQPvhbp08JgzQzenrtYiH0mw9cpIbNya\nfa9t+33J+5uZ0PL/fHVoj5t4L0vaGDjxfcULdIARLccyqXua4S673J5tx02c\nRVyC\r\n=A1Kp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp3+xbL215BrVV4VCgH2umkeU5JvzZTAdiZdw6bPKinAIhAI/eeNjNCVN7+RrGSKXsLATcQcrJCplGTrLCn1WyztT8"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598629607-afd4c9d2.0_1598629702567_0.9602770266095983"},"_hasShrinkwrap":false},"2.4.3-next-1598630170-eabf81ed.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598630170-eabf81ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598630170-eabf81ed.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598630170-eabf81ed.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+vyuodUSkdpEDKM8U27sF/HJuoVSCfS1z+e0AgxrmLztwWfzyw74e2sXEnc/4V6INjRV+iLncHSGi53QiUDa6g==","shasum":"db02891be219458184448c874becc72c394dc1be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598630170-eabf81ed.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSSmqCRA9TVsSAnZWagAAqScQAJy3yd6exYZrvxpt/6/D\namgWm9GZK+hz96bQO3jJ/Q20Svyr2P7YTH0eeAXzgnXJVkJGnVclOXcITLkK\ngCXqH6h5s/sskOg5gfFYQUUX81xlsnod0iduMuDH76dsK/TwVlfHth4GTrCj\nHXLtVJH38lnxKvdg0NVfp2ik/UGV3fbkFxOEKO/tmuI3Y6utqdQfXmgp0dZQ\nQQcq/EldjqSITUy0VjYj66XW762v4FhfIg/3Jkdd+hm+I6a1NrGvEDhs1/TU\n6VoKObllpwkSYqf4AQSx2+C7uh8y7roUtuDWcJ8ecOaiVIOc0zMB6FwU+9pw\nhCp65aBVeeuq0VURuRGccWlvdYbEHVETHMymkF/30XhTnd4HgjbQxMcAeM5f\nBa6tzOKL+RmiCJ1iYQxHGTZwF1w6K7nb6eaVnj9RaBJ3ol3Xm70s7hpYZQZI\nMVlBn0UWYAwe9nunS7DmTbedjrQNTVWSmiOov+CzQTJXEKZkFpyt+dT+hrac\n+iFhCGVsXy/x3yySxrIDwHvgJXxlcImDzpF+Gscna76h1Ta03TH/rEaJQV/A\nPpFcGuAlJqSYFvm8jYLBqmB1rAxmQRY4iZ9yTBs1zoHqv23nGdXAoVgMaixw\nYKYkcRApiBfUq11aau3eAqpxvVAOkEVFyVFojmUTgO/vRQH42eNNc1nxvoyW\n205y\r\n=dCyA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyUmL5fU4sfS2aSaDjEMEGVTMk2tzJg2zQJvsvH9R7tgIgNXmOv8B9Sb+04QqsEhYZco77wQQ+saSkeXsSdZv9psY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598630170-eabf81ed.0_1598630314087_0.2349539896428392"},"_hasShrinkwrap":false},"2.4.3-next-1598630167-3ff6aa2e.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598630167-3ff6aa2e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598630167-3ff6aa2e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598630167-3ff6aa2e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AWbME2cNYakGKfuShiKl94NJmkfrgwS99VIAy6wdNTS10xAHTXWY0JFIRaVlsrb/DsXevPtEkIXSpNQX81LuXg==","shasum":"468c236562193ad46d619ae6da11b1aafe51474d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598630167-3ff6aa2e.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSSm1CRA9TVsSAnZWagAAGzsP/jBKwzqidaRhOmq2UZpT\nUaAw8PymLo2qhkRI6mCdSOcg0iGoQMYCZ2rxyRNbZ/dmN3kgjY0EXGDI1QNr\n/WFxu3HjSzb1oU2DgE1/tCnGfN+PvBHyPWpiFXlAEyBGokcNrE+OVpD/IdTh\nduZNLzcVLgdT/9poLzr0axr+gWmsM/sfHpfbCuApPaFv9vr+c2caodqNCER8\neQJQA7qg6BbApl4I02CLL+RaSMryagC2IPq4rF9HOYVpHYHYc4xtRmPbO8ez\nWfMNZ4NHvrAQpiXkzZevbDrscLHRA3o392RgvtUtYAW7InrP4u+QNsi3Wukc\nnZdJgoSPcG8cYMWU+MOFHwS/OyZG+S3waGsBI8bmKOoRdn+2MOnnyDet828h\nCUIBHo4ML4AKxyJJxr3F47BMP8atRcAGW87rWDUHOmViuB7Fd6SC8albA4Ew\nIz8LAFynCHX/pfQxC5h0pfAhBHhjPRyd9cayvEDSvTPdPlHsdDxYQx39rx7R\nWckccmqB4ftq6InBWATSzVpkxCmQIMhifykRArd0VfQXbZHted5dujzW2Ls4\nl+95VCAHERiVxhD209bRsoaUHoYDJOqASd/p75NtPQujNSAmwgkhYFQ2nV3h\nS148BBxN/vIxyqMvVxcu0Wle29/Ig+QrwYWqzxO6W7VwwfK9OxpxNEAtOOP0\np1xo\r\n=MKI6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmaA+oEBVwtjAu38gBsIATkaumU1Px27DJpcsaQZs+ngIgOoJuGoQMsTZAjMwl0P8sHROd6r2UMKz1tjWFcyankaY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598630167-3ff6aa2e.0_1598630324662_0.26280740418062676"},"_hasShrinkwrap":false},"2.4.3-next-1598630198-92c3de02.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598630198-92c3de02.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598630198-92c3de02.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598630198-92c3de02.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tTAUAXr25F5Ti6CqAK/a2jWaiTXGAD3gp2xf0Zamunmw+f+zJM71bkJ2yPOOeLn4np6g2gn+mz4AkARWLjKrxw==","shasum":"27dc2bbb1c99b3bb5770668b932efb49f6e5d6c2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598630198-92c3de02.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSSnJCRA9TVsSAnZWagAA0jsQAJ8ASNIZ8COuXz9ePLxM\n3YBqQ4EJ89fryiOyf8jm80SJHfizhwelPIlQFpssqzavW/cE8tEt8IIY4/xZ\n9LiyzqEhrp1VtLzFDPCNjVCAl0Au29ZPWVTZ5+2WWIgJ4yewMSF70GEFZxNB\nd+KMdzsGzrXMs3R6ivq9zXVBE6MvrJBxF5jVJORizpaW/58A05638wo7/vnk\nG0bzSxV2Aum5x5N/Lqk38EbVmf76D8db7PcGeHrzO+nV6OI4eU2DXJxTIq5d\n60FGiBBZDVzcCZD4G/2QlbrW/7sT6nCvxhirOppFVXzB9i8PjJzUVqo0naNb\nIpS0WsGK+0PRo3ZDgnT9ICMStoqFq5byoiMI/LGN0YRIOKs56xTNJ90lTp2m\nc770KZZ7gWS9PyyKlXipCsNmiN1MRY2SePU/bvmlH5w2S9s1nLehasq0l2Zy\nfJR3lz1OymJvrGiQOQkF7hnTLyIuqBXK2lcwigBCsvfknqb0zwAwnFwLKO5C\n2FJgUiATWZTRGC0kim+0PlkXcmd2zx55i52sgrAVh59rW8RJQ3fp5raBUbKX\nkjSjqN5BgVphE+6bXanCqdEJSncha5xfCPXcBFUykWOirQGbVrBJttM4SHiO\nFgy1ElZkVAqFDoZeZBvQd5TkgmASuV07go2zyWChOJoLsY60xg7bis7dxG4U\nQkOA\r\n=OeM9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQFaIjKiAN5P1ZHsg3FG4JCJgRJZtMBlsF59s52nqVGAiEAuVphhByLoI8vQ/vMVixXYcJ6p7DapIemo4MuVGqFEbE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598630198-92c3de02.0_1598630344503_0.1372560135961267"},"_hasShrinkwrap":false},"2.4.3-next-1598630496-5dbeaccd.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598630496-5dbeaccd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598630496-5dbeaccd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598630496-5dbeaccd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SlNJ8zmc6ES999wG0N1n06DLghjHkm6Sx1RvYQO5OHz26l9UgxlSvOD3ALw2QUIaEg/e1eOjXZmnAg7EMW2Lxg==","shasum":"48c3746aabb95e6a8aaa68354aaa57a8ab855b1a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598630496-5dbeaccd.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSSr6CRA9TVsSAnZWagAAORoP/jfjmIvo+ER5kWwg2RHL\n+iHRsLf7VtK3PsXq5h0W9IB/+Yh7h+EHOGFDwIDl1VGloIkyZNPBjNRw4TYy\nwronsXfXAeP4E4x3rXb9w9dzTiNR3j1rCMNAY16qWcWv2KS+Pv3xVv5Uhjyj\nrwPECTMalzNihg8U1wu7tPEA0cP7osqODDtOs4aliU5ValQXH425awoFcgFs\n5qqQlirFUlLIyNkeWWbnJ09yjdnnT7bDmjFYdgp7DxYA9kmq187Be44I3B/i\nYMo3LMnRO7ZUNGZeUQZqAyCegraHKA41lsQf73e/VsaSjf6983P/2xckdRVi\nE8JbqujtQ5BmONgag7SakiMsPnENpZHN39mLnzJgsjFZhtioJ2o+VGTwGbvk\n6vC+VMUbVMYfI5a8gL+s+dZu56EKZZwUI96scGblW2nZOPqIaqtKfNz9MvTe\nBrJjehQ38En7SbOWWkjjyZZMSYWIkHs976UI5tgmp7HIEINMaVxYdu7BT09c\nrxn8pKJevdJ3Wpg7DJjOFqp79FkLwSR2sQaCS70zNuFfKCKbJXp89qAXiVP9\nR59UhNs9XAV376Za8vZ9aLuMMiyF0AwaN0npzcKpGNKvz3uwd45VzTAByiIE\n5sjise8mHgh5FhukvbMIPXF/SHk8J/+gGp2mWgXUwk5uKaQi3xVP0pdo9IGc\nC8JE\r\n=IheT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG6sTZGIJc2PLW7CMy3yimeMglrjOpB8w8uFQJGspuO8AiEAtDrSMtuL89LZsRuai2R+KZ6EX67Zx2Ytg/UAR/c2mnA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598630496-5dbeaccd.0_1598630649700_0.9175284779231134"},"_hasShrinkwrap":false},"2.4.3-next-1598630804-5f79c07a.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598630804-5f79c07a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598630804-5f79c07a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598630804-5f79c07a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-q7LuqGDyzvaNn8hDD0LJdJKWEFDxgTXoi+v8Lh1ENbH2uWkAHqdXn4QrwAe8sREp7YLEghudW6CFkPuEPQxH7g==","shasum":"4634cf88a1c315e3db07831f7551735ed6e98f8a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598630804-5f79c07a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSSvwCRA9TVsSAnZWagAAqeMP+wfuheEdDMHOspznDLlr\n8q+loVfJTmH5azxqa3zSmMVW+QRXxp/QuOhGmZL3fuls8KfFcTUgj19i0VPd\nmg7ZV+YwUOBTA/YNCpz1hLHgxaxJmP7TK8f8HZbAPzIs6TWC4S6AdPp97wNu\nRpejV0OLENGNuzckueMdpQUjY3aVFwW6AFUhfyXRL636oisVqulq/rEC8qap\nvIB1A+zx8bJ+UlzOXCNBE85CTlh0RdK1rRhYAxEz9pcXZpHnyGKwWT0YLftN\nCd/K6Svbn6zVbphwq/W8izq7i3GGBNOyPBn2xXWC/nEcck/REVv7Xpt4Ng7N\n7rezvKyd+dK1gMUT+ps9275eZafWDqdu+G4erFXo0DS+QQiboae5snKXxLGY\ngGwmYg6EpP4zw9CnoAAiyHH2Aid+snN/nvYj4SCiu1BxkEMBOwOZDWweMMG4\ngxdHrmQ3ZYC56SeN7wmsDRINt+d02TEMWO2Jhs6SrSVYbzTKPNWYrCsVklGK\n4eOYcj6GoWDvSRAMZsb/OurlI8FV21SC/wFP9GMgUKdtXwkc2mQmyp+evnfP\nhV5YltyxFBRRts2YOAslMp2O+JyKmVA+AJ9EewZLZA3kl+j6arPIL+rbtKbP\nxfOICrrWU/ONqEltycsTvLFohKhLkmyOTwS58uZD3fgHP0Nc/rrxcV3C5bmh\n85lS\r\n=5PCw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQ/BA3deCpetnbp0IQBVdX3YXnyoHpmmfs89f8P1hzrAiEA2nQ1WZQFdH9ImlQTi7vdGGfKhevVWMbm/lHU3cva1js="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598630804-5f79c07a.0_1598630895545_0.05716644454504838"},"_hasShrinkwrap":false},"2.4.3-next-1598631930-737631d5.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598631930-737631d5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598631930-737631d5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598631930-737631d5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-P8hG+BxXlUjHzoQO1IeWNEoZH7Dp6notOE8HEYbcqmLvPSuhLDMBqLT5IaRljL4MaBXfDn+zqFWzkn3hPYnxFQ==","shasum":"9e22f7641052c36122f68b6610205ffe68b5976d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598631930-737631d5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSTBbCRA9TVsSAnZWagAA3V0QAJx6yYN0CaOXhmK+8Cq5\nPz2dnHRT8WcDiEQ1g1CNQabKWGGyyoKRalJp8BmTAmRWymHhnqSbIuIrLmEE\nBeRCnap1hpBO97IZs1gBYZS0m/eE1FUye8yrVyDyUvewjaQmFXng3LbltVKh\n6BMR2K/HzTPfVDcal4rmBtfd7j99a9ULJpOTg9enjURXOcP3WB6YYIcDFUjN\ndQUHYyDp6THKLY3TbLMBm8GHtPoDh5kHMIA+QIHGN57nrRM6VjymAc/Vsle6\nej/CabyTkxne1SIIwE6ZHNprmVcTGtC7iYsyuQsgnCOnQ1N7CUGekJd88Gi5\nPTk03OOQRTlusabXdDBQDYBu7CcwD0VQNa/4y6B9DeiwNy2HIfeDDn+qmKhg\nkGslcehbarvgyRUGpasp5h5Z2VQCOknBmDvpb/57FqfQTSThWmTvGxODyV6A\nl49qb+mYpZdYuku+wbJrezC8cGvFxNQYN+ZGZzdpIrt1oSXioKJFDqohYIp6\n2bcSCYVVrZ/gZcOKQIw5lLT4fpXaHWzAuikhrAEn1aVZw2avG+Z2uLvRFVk0\nnm+jkV/uri9qr7DyDDO5wtBXOSVbxvavVURz+RxB4aC55HihiCPnOwSjC5Ti\n7m5C0mQCw+2/glmAjXicEvV+61vmvIoqfA9qnyCDgFKmx1qv38Xes5lEoyV6\n3I2B\r\n=E9uR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCevO2lWebGjbmkRfGaxF0SjbqzWaU2NwB67E4sThYRhwIhANceD+PPuI0h7Gt8knFdS/pl2n8qpyGsMnxW7GoKWsur"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598631930-737631d5.0_1598632027170_0.9280314452395761"},"_hasShrinkwrap":false},"2.4.3-next-1598632731-737631d5.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598632731-737631d5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598632731-737631d5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598632731-737631d5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WoyTxv2qOWUN5kbG7vB1/BbMLKZSNexExlLc1tS6bVtXCaSeOdGMnSVJLaCyXVCyOCL/Vrzy+dnLJ3APAfF3Tw==","shasum":"0cb719e00dd9094ab253c104270bd003fd2debb5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598632731-737631d5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSTNnCRA9TVsSAnZWagAA4c4P/3GXYuht/J8WF/+rvdR1\notTs7mZjIu0V0hJ/OCS7lcMRKy54iPfbTDwVcUm6xYrq9KrrpEl6VJW0dekh\no12oImB7u1Sl8QKEFSN3UOPQEq2kldEd2gk1+E3hNhqaZb9mXuI9kG/8U6d9\nUS2yua+tAzLbzknb1IXpbLytqVyhJPOZQupuq8tYt05k824UfaQt691Nxsi+\n8+6GtFtkCDh32Hf2HdnITrQL6LEjMiseEz5xO72gZMcH9Oan1PohOnqeg0DZ\n7S+QhJBkvJCgOZTQ8COXKUpUSx+Wt60/ruTnFu1Aid+gHRcrzP9qvDOra3wo\nwRoLFiScvDKN/TcxUYAv74asLWJpESqiHWUNVi0dFif996O99M1R8aCiYER0\nXmBiCgn3L0bj4kZlx2L2qjMUWujZ+XZvLo0B9VN0ywTCw2onzj8TPA4VqSRV\nXJBQHEdaBMfbFtX07cZbnelNMhlmP13AGjLbA0RWQ2e8N33vfvrCyWRs/OO4\nq8jugi7RrF0SqxIHiWFY95UyZZxRvPyHNrDYSKmR8rCgMnr8q8sFframyVVy\ncHqVTE2EmF270NfoJ9uIplkYCRvj0wfat+Tmn7pqbl3qumy58621+X3iuh1E\n/fjcmSFnADx526rqG3eVmtGZk5WeKpR1CLJeF68MIJWK1G+FOCEGqA0P2EJv\n0/J2\r\n=am/V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3QVxV9GSTKLShwObTmAcct8x8UTBusfaP/jqP5PY2IgIgdkQLlTJRpfnqW6wzq3B/YMbYWrNwgNkCc3ST6FpT5fo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598632731-737631d5.0_1598632807044_0.7231958657271909"},"_hasShrinkwrap":false},"2.4.3-next-1598633438-68eb42a4.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598633438-68eb42a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598633438-68eb42a4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598633438-68eb42a4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-alkZIXXDmNRilo0LUNDLEWvrdfG0tg8/iLRs+jzYI49Mb0vZUFd0uK/viptmnwVoIjoPEdHCkV7PGiSeFcYLPw==","shasum":"6b3cd4f68ccc4a3b0f6786c7e1f3859825f403da","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598633438-68eb42a4.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSTY7CRA9TVsSAnZWagAARgUP/1TCbMkrTJhNE6MdovKd\nsq23SFHdRFZ8+5Cc1LQYjgRCfKiBHeTcPuzF8PZmiiHHXNBD+2HQoyDk2pDo\n866mj9l9FvQhxqeAggTvJyJLLRqRYpPdXsyY+7DblxMzoMHyW70qAxNhZIte\n3ywzqfQBLXvqiFuu9lWQEnEvOf++6onAhKRM6MLmWEg45HWq3isHR51HH7Zu\nEZkHcvmvloNz3Z+m9N5RO3SbWeV93zniIVQuYhtdaGbcrHDF2gRzQT54ph3j\nLHnuVpQMQA9F82JCUNpU5w2/VqdrlL+HFtGrpobopBUbOC4FWRjC3ykweeK5\niUXO0QtPwqPW49YodeM3/73zbD83As8SWOHP8sryhX131CMT4qwEZZ70DRab\n9fu3aGLFvsMgFd262nx811FP8gN516MnOGnljh01aeKQqbUTQw9RJKHlM2bB\nsL4MnvCUZvmKN3orJ6g8+jDq4wEgrPhFvJ0BYYvRArovdng7Kua3NxnOKDsg\np4qwWp1uMRD81xfHZg0wI53/3vjM8a3ILVIJfaYVgCWn4k8PjJ0KhXBANwQ2\npPoUKKagb0oM0dYRzZhE59SE+55y554qtVfosGjkOuvS9Nlp18aDXM5egTFX\nlmK8r1eEG9x2Tlr5x0mvHZxqOgpCDIXoJfRf50Aei2dVKJPzrxiGo3z/zkC2\n1pz4\r\n=Gla/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHL/PqGrp3C6xT+op+o6EGZW/q7WCLj991wsSwRVdcbnAiEAw+e1KV0dNrjHIGx514vSjRWIn3IYqT4HCbEXsqkV4WA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598633438-68eb42a4.0_1598633530911_0.8262924776684808"},"_hasShrinkwrap":false},"2.4.3-next-1598634043-16ed1897.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598634043-16ed1897.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598634043-16ed1897.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598634043-16ed1897.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4PhDUApKmX4vLIDZ3NRR1lKT/+wM6PNVwbEteBCiTtZ/dkd1mZz1VnBxPNZsE594fRrD7+bocwSqRv6CYg31+Q==","shasum":"b058e3b1c9a3a6bf1cdddf42cdaffb808b4157be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598634043-16ed1897.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSTigCRA9TVsSAnZWagAAoJcP/1QKSjzbRFPIBPiFbU+y\nouXooL6XNQj1r02AnCHgSJJRrKV8IKRY21c+rvGnvX3vTnNW7eewwujCqxSo\nTJ8ySYQ8AgUJAhJOvP/Iee9sKEh+Inq8JChF9yiEQHonwzcg6MTN0frpeUa/\nBxD1ScIIhAV/cMY0UuIBvB3jYSGYyFw+vF3nLGmCZyLH6KPdTF0vdhtt3bZA\nsI+Vdh8RQrHNl2qknHv50mWL17qVpJzzd3fdAVQbA2DTEW3DPnYeAJaus0vS\nWj/hbcwJKEiDmCDPJppjWMbOM9iVwZB0R+iHx6jTm8OmA7wVpLiAm6Vg0Il4\n60E2qw7euhFO3zr2ekJbYDIAjGdUac1Q4uBXQiOetimPTPE18HizI3XX18mZ\ns8LvrGQg6H6Iy+N3TKkw/jKfFcEjgfdFOqbK4pGK1ZBuC54BbBmOAiHNd/d1\nBb81M+MjZc3itFABycJBYyDUi5AjHKvYVBAFBXWV1wHlyTWs7U6MDvRL+N/X\nBh0IDh6+i6YQjhP5bKol77g8eVbqjAMOq9ZpH9LfT0CrD/eke1YjdMKyIVhr\nfOwHRFms0bjAJ7F8LGUFBhsXDPneeZBIxRly6R0uHfJgSxXVCVhAj33fxVwj\nlX55hpX98WO2YAiR+ow0rSK8USLLQxktdvKrYSVJew7jYHIjs2Jg1U7OODCb\nOs7r\r\n=V5ro\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0N/3YC+mKPjK6ymJj2ksjemmotjuG8eWR0KZwfPS9gAIgY/S1CdWvsj+Vph9oJozl3GA63a3Uddvs1G8npipp/L0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598634043-16ed1897.0_1598634143889_0.43879460793452507"},"_hasShrinkwrap":false},"2.4.3-next-1598634910-9fc2e963.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598634910-9fc2e963.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598634910-9fc2e963.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598634910-9fc2e963.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-k27Ithd72Mgg0gGODmqRyTJwa5n5EYHqyg72NGHWdZB8yUPhEEmFg8ORkK79w3OUpHfDTUPq7h8Xh75MEz/+DQ==","shasum":"1180872dfccb61e7c0d06262866732a897e048c4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598634910-9fc2e963.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSTv1CRA9TVsSAnZWagAA+IkP/0RCqgMRevs80WfNn3R8\nuk/jJl/pTxqDpaxNbjdJV5lhszrbID/2oOQyCub6LLWhRF9yjZ/KHZ4jF+Sz\nOMD81QOpfHoU+O/NcKx/iHkJFA1wCFSSNjOj4BO5FWGQU5oltfktXKqD2ViC\nlgUs4q0fmIkoCqzCGy7pvzWitleKrQdhYwqjaME4xhRZJpCe3qn62fNrisYp\nv/VwieCrIEqbQ0WhQ2yHbcuLpsrcRJH0vqpb6/TbUuBQJKdTLHcY7nv2nOhA\nKnKJap/r41k03a0tDtrRI0PswXrgDPm0htyLbrBSBTyVXYHkvgKts5h1IZDM\n/H3cVlDx1TDuvKcKWK8o4fgSDYZk/g2i/mEBJwCV6o9s8o4OB0/2t4xt+0td\nxy3xA5FyLU3/5xGLqZu4TRC2kYkYttg99orm27RaKm358evEYcC+SfoOmRDU\nlQ2E4pdYU8zV8iqLPjCC/gr4mdGuIrfJUG9ANXOTVyVRSmwvmjfflRYeA4rm\nLEh7fPowo3eIQ69rQiABcX/rvnaDwBH59z/3Uz67w+WI8+EnGr5+P1qy7Jj3\nz/tx/eQwuGv4UNjXBL+1ixQapO1f3kEmkOx/nCzqT900Nvxiv5DSjAX9FQWN\nuYgJApl6pW2qMb3GKD4/JQHZSjHl3E65my0X6d+QQPJ69yWks6P1pD8e1UQL\nSA6D\r\n=LYW9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGN1Ew0mu8bQIPXIYaljCbEgFAiG2SKXksKpTJVSwbfQIhAPzpQ8So0Nx0m4yf2AjsMn/78/XFmIT75AXc0aMViQF8"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598634910-9fc2e963.0_1598634996497_0.3526535567586211"},"_hasShrinkwrap":false},"2.4.3-next-1598635598-5f7e5783.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598635598-5f7e5783.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598635598-5f7e5783.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598635598-5f7e5783.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N9CtahxagllhZ4miOobe7yQARAKmgrYTKuQ2UkhMHC7nzWjybHMnpePL80ZNNimc2XIDgrYfqTgXjTXlvGCt/w==","shasum":"0a1370b3e5c6adb9a89fe41d439c4e443a836791","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598635598-5f7e5783.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfST6rCRA9TVsSAnZWagAAK8wQAJjPbq0LkCgPK/I5xqDk\nAwKV9xo2HhLrmVHZCXgP9RUVn1TDyBpPlSO/bZYsgeh6iZCgFY6tBfUPv8k/\n2n0EoUZhEDygmWOLI+4yESYSTyYlVgCRLM62yIUCerfRBuLpyFmQUHUSBBEJ\n/cDNml3aHXEC5gd2YTamJD/i6DhQjigMKYGFZA24DMfvBdD229RaHkLX8kAr\n+t8Y+oGGBmavISX59XCbqrPnl36io669tpURsJIewIImXUzKWcuK486FStu/\n0Sp1E7NMaKzkF37H3hV8ab+Sr7XOhi4nSmQdZhfL706qXGrWHwm9A0Cq7+uv\nbKZryfLrbYqWpeXg+XfI5FmAtvvpCuGZwOnZp71TT0sCn1exm2cq/x1Gt/Lp\ne+VZE4h+uKzm5n90qD2RXABpgpcx5NNwhCxWnYaFPIIgP3GZzdbv41Hk3BGX\nIjXX2VKBulmoZMPXbBeBI7o57PcHTZ19S9UhyeMKzc6UNp5WWcRDdOv00ioi\nQXYYYNJdoxzoi/Ik+fDUqOvtwYDwa+DLcg53OmgBtUUQjeAdSj8nJc9W6A7i\n0TkwSjSuaTgNVZ9STe7Uw9wN0B2JRfi2uIGGqrznvmowWh4NwQ6gVJujioVH\nRqCqzRKc+AMPg9MShClGyJwobomC85e0aYQKh4Ib+cBSTRkBgF7Mbuq0mBRP\nP9hC\r\n=Rhbx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICkLJX1TCYQM9ltQpvqAQJ6FhqEC/b0wrI0YVsnQ4H4JAiEArGapKPARncs/Wo/bs2RvArAzIUTEm9XC+DqJBddaeLY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598635598-5f7e5783.0_1598635690857_0.5460734234835594"},"_hasShrinkwrap":false},"2.4.3-next-1598636475-cfc463bc.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598636475-cfc463bc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598636475-cfc463bc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598636475-cfc463bc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eNZB3TYXRNU9PYDNdukIGQqvuGizp5FeZ2Ip/7ElraZLzFA60XWBU2JPQhMYm5mI7AWJys10jMcmJ4fg+A1BLw==","shasum":"f9691aaa19aa20d9bdffffbc02484d8d5ee9284d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598636475-cfc463bc.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSUIXCRA9TVsSAnZWagAAkKsP/A0x2eSrDFgGlKc6vIkk\nmHt42tD/xIQ8NZ28mIf7gMI0wEvij6RQf/fg9OlepysUk4zxqNk19Wp3SLcx\novtvtxIJVesFYa4AaEsrbeer+kD+9q1wC+u3sPmmMRdQGIUSYm9POy+I5GOU\n+IXGMxEdtx6WN1fWazXnFLYM38z1mOYmrhGlXQ0Y6dkX59O1EkA8mxR2krNw\n3Rs29HyJqhH+eITr3u9zxRtqO4yz32PcUVoNz+x5UX4AAvQKc8nZ9T9j7gRh\nTi+fo4HzHC+XpvQLcGhMn5djsdeIxbJ9ah5CLvz3kp7c6JjuELzVC7AADLL/\nptnyIyW1vDxu+/VyGtdeqJ5ofAcucpnVlVwiCMMBhgPyrsvdxfyrdIZKBSZZ\nmh0EinvPF3miZ4WIalTZr6rs47UJu4AdC/F1bW07zbGns63U/VNlkzWqaffw\no5RsqkdTYwwWlkZ2BVWYfoCvtBu97tYoO3efoJWMH6ruukientlS/Lj09LQK\n7j0N0CezrQags46g+fv8CWhAh7DqTvmvSaEnwDSQwdbxurTfby1pDdh8LXjn\nRBjjE9Q/rLligkqdgM8hRF5fj6jpKEL5ts6H+Z9IJD4xDWwLe8x9mdQFI1XO\nCCTvn5cBcfQ+hzwihT9W/3SkM9YOG2dHU1COTZnYYfLzLOcq3o60etEVdfQo\nG/uO\r\n=ITEW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFaSvlPQ6FWmnlb3lAhsOAmuDMjyMrLbOzT1z4ZBlOQ6AiA39zmfD9DHq7ojQpnGBaNBN0ba9ZFIGA/obBqUV/b+ew=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598636475-cfc463bc.0_1598636567339_0.9596608177934722"},"_hasShrinkwrap":false},"2.4.3-next-1598637698-a0aa8736.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598637698-a0aa8736.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598637698-a0aa8736.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598637698-a0aa8736.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pjRhkZChme3B1qstUQCA/Mx0pWfPHLZz3ACmbDEVvcY9OWLEwU7icijDP9uH98FB4Z/AZTjI5jpHXKx57NQBqw==","shasum":"68a024c37e22b783620b4e8a921b4719e3ef0cd6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598637698-a0aa8736.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSUcXCRA9TVsSAnZWagAA7fAP/3hz3FPYw9rwGa2dogg3\nBclZCJyyjM980qjoR1y3kEp9i2zAarmqnt+8Q+ugZjO3DQEpEWYIW8S3ITLk\nTEP2quvhH+iFiZr4jWuzKb2RO01mj3gPiL6KqBZQ1+B/l30T37JMNMD36PQz\noN1gJvwKZlV9I4JkchKbhv5YkSBxcr0pGl6A/oTTGmC3z4tPDvj2ZJ2VGaDe\n1Y/2V79HTW31+zDCV7aHHesMwmMQ70HpixaA00WoGTzHz0ehp6N/8NrWWexy\nbE/7yupJ2xxeCFCx1hgFBhAD5ubCIFIXjhDANHKfG2qbLmrP39O0SIM7Gjin\nvyC6ABVG9GhigbTn2PsgkMI/vyfWw9HgACWZe14OJ3gmO5sW2ltVmX4EuK2a\nB/y342oADISJsY5sYE//ePMziHibcJnOP5165Eg7hK2a1q8XmGGUQChOUeCr\nsaYQaLCeqlJhELa5KKqpb5EyTjc9Gfa5PXmBreiRQpAWmlLALlzwV0wCmw/q\nQzZRLp2aCHsDQBmfNKw5j9dnjaVR1vglJqlw4SYMn+bXlcxseIchJol3dBbp\ngDPawAn3ZFQgE2SFH4MKJMBpndF32lATEJvDxsj/Obb46/+CeGQxg4Cczs2L\nbPepfRByoEH7k0BpOg5iXx7WpJxEfdw2gFNAMaefgvldwRAbfqdlS8x1PVQ5\nHXLX\r\n=YQHw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhHiRQ+teBvehCXo28vWDDDkghLTYm3hRHh7S+LBkuFwIhAJNaRCCIFH9ic+h8w3n8ji27xXRzJX6SSWEhWu//cd0D"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598637698-a0aa8736.0_1598637846757_0.6657457700980907"},"_hasShrinkwrap":false},"2.4.3-next-1598637947-ec14d0d8.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598637947-ec14d0d8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598637947-ec14d0d8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598637947-ec14d0d8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EvlqquWxth/mEjDj5BX2MMAyZgVE4OXpV7OE15SWXeqeIAktpZekylEhv6V5ztnfHSlX6KBzlExXw7+tz5bsxg==","shasum":"419c52b4e1d68a07b6a7a91bff764c18a184218b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598637947-ec14d0d8.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSUfTCRA9TVsSAnZWagAAH5gP/R5gz842zh40u+Pp0nxt\nbpKFGXFl/lWZhQCfEZQ3d9W+xRiGdKu8qId0W4ENBmQDITTIWz9cCQmk8DIe\na6jZH32vyu2huyi+k1sLnMHsxadTfZyNNuIVYTOSZqc3hLEwzE01CGq/1zdd\n3Aedb3WgyBJNrBs5tmH0qWjG02/tKM888Iou1UMUei094ssZZ9q0u3iHZdfl\n/b6ANwDtPMdwAla8hWUeavXE1S755hZsFWNO9HK/WpcYv3JWsQ6xauta/6H2\nZIvonJ1jTzY9cjPmiZnF8dZ+fT8Yf62vR/ApkllN7Lssd15Lx9Uu/2ayBvYt\n97tPmQT72eQM6vdmXNqF26npXqpQ/oiBbYgG0bhd5zj1/sBL+5eAeHC3xtjQ\nJqBBFA7ilk8ekxP87874NAyte3s4xHTH0fhs0UYmYqUHLWSQuK2jhrXlHbhx\nqzLmJyQopsj0WIgpqSOdtTjU4qA8HJsuwfvuvdNbUHvMhodfEQxpfbtPQ4CH\nav9SvL3vOaCezjVwArZqxaXvHh9O5EQHBBO4VHqJFFSjSrdL2t/qR0PZS9DK\nwt87AfXC3jgvkE/MP4M7KB3ClO4m/aUwhX+h5tJTL+HBurM7e3Dgi8Yg6+bf\n/I+qLp+fl//86vQMa5OjDUOKF228E41ugXIPY7rptbqEst+tcU8oytlpdrOv\nUmOO\r\n=7mv0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBUO5iWKsqCB8bP5v35pVVs+ueAbxG9zSWjSEAtPfy0tAiAaJCDECLTdvM78gz9J1GRDyAIxiHeaSZHHVbk/M2jnRA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598637947-ec14d0d8.0_1598638034840_0.43953024800027807"},"_hasShrinkwrap":false},"2.4.3-next-1598639595-5c6e7b6d.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598639595-5c6e7b6d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598639595-5c6e7b6d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598639595-5c6e7b6d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LGzzUx1QaioTH0dSpDp3OYdwiEHJ1HxTaQikIwu44/5+aE09NzJm4nl7AJlRIEMvlfkgkX9vldQc+DV1Wg0pSA==","shasum":"f242296fcfb591567c81bc4cd952cc091d948f8a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598639595-5c6e7b6d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSU5ICRA9TVsSAnZWagAAROIP/ju9hE3pGRnMAiApOZZ5\ny1HSmlht/tbDGDFG6pEG9sbgX7mheMQkEU/uwXq3MBpiegWXVwzcuG3o21Vh\n6IiSTUWazPAkDGbyHIuuQqOhDTpgeJAPenvM/UdjTOt5RCanHN9PDwJxO/ch\n4MRVpxm8OrZ2VZUPQQqeXwlQFtBUM4+0QEaples/cSz/yzhujjkZdUY90AtC\nyG+CQRLIMvT8CQxB53AoSCt1XBJbCrmB7ratU996QzdcfUp0NPoZ+HzsI4+0\nsu6a3VEKtpUhSmQ2bKLFVKDbFDObDuUth2SUcc2/lJ3KxBiJWaoLy5dC5YuO\nwqH89ppEOLkqZ54cmrk3YtcI5i0HqUJ7EZQtGMfBc6yb2tJpCmhsUb7wiKjH\nFRO9GG4HaZ9iELJ6UOmf4Fj1ei6kqKriEALUir8w0byStPFo7kcgaA9NUFr1\nb3TLz4i0Te5C/Entj8gsHuX5gWIy9IZYumYGtwYrKll7FI44tvOretIjHNdo\ncwbt2+DrebtIXjXsC2kUREZcLHPkyPwguqk2AZ0QC2rkfbwNA1tRe6441JJ2\nhiLlodwSo24u7fLc8e3NprVdP4eYO8X2ieeiIVzYots5UsuFWC9x/qmXct2v\no0ThYsx88oh1o66ZFoAK/jHBEJ5bJz3ahLwVirJKFK/iLr2lZ1R7EfT3empK\nfh8b\r\n=d2Ue\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtoiaJVN8qkOOPunHH8Gf7ih91TLOmArEiQUbJpnbLWAiBY36++m6wxbMhrkLxdWESPNCKeaZY60sKhX5aB0oVFyw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598639595-5c6e7b6d.0_1598639688342_0.37211782773006274"},"_hasShrinkwrap":false},"2.4.3-next-1598640501-5c6e7b6d.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598640501-5c6e7b6d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598640501-5c6e7b6d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598640501-5c6e7b6d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YGyrzG92qVb6jrJqNTwvTBnLOhTpIdtsCivgRAFKmLtsvlwPuXPrE6KrfZe0lJw18Qek8zmpJWQlmNk6h3lD7A==","shasum":"db7df27305ffcd9444accdb00f3f5bd3b7411381","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598640501-5c6e7b6d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSVHNCRA9TVsSAnZWagAA17kP/iIesanzC3N6BGlTxB8e\nNMzzZJS94sOfm+WddjZ94a0j6KgoOfaqDuFyGpmq/3xfPMuoFOkgc6NYkZ7F\ny1lcOtDjW9/uT9YUuKQAeq2dlpRKXdrmdrbahHtqAsa47CScAT9oiSpfrMDA\nc9J1UfpMFe8GT/t/GB6F/WEt526gYZWtErFMYqPE/+XmhB+u99Ce4K5y2pdP\nFvArD4fViWmCIlLAc19/3qITOA6YM0Il4+sccX5de8fasieVF2SaQ678zpS6\nf1bQZHLtgFwMpSOHfuQRddTqFPnW7rdFhnQNEZ1KmQZDV0dmZmyCw/uz6iKm\nP2RKfrrLxjOwV85kzmIJuXta84/imsbyl3vlgQKpYSj0yklxfEKmjgKgipXv\noDavFgX7l/LXf8Pt11l1sDhtqCAzvugW1tuvHavNFdARyrZOfHSaRwwgHMYv\nvnku31q0SdFEygQOUEaZeYNodE0kw4lgR/0TYsZasdULlnbnvx4ANbrhawX/\nhx2DdITPH8KPP4Gas/LVWn8mcKUvuJh0T9rN9k/UY05FFHXb8C+bouWYuMrP\nCj8MiHWdeEsmBspJRyPTnMf1/ZcU3AXEgO9MRiX9sPSP7x5xpgz2r42Onr1A\nMs54y8eWOIPEtzn+90eQ6V1qNn+ZsHEzI+SYDj8YvLWx4Uvt71Sw2euK0gYd\n95rT\r\n=VGpJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmkRj+mEwDKXYLdSdLAHxiWSsG+VxTwCx0oL8/8rVkaQIhAPfSYEGRY/f9wT57AAuPyCCIjnj+Ga4a0MYT5w4mt2XO"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598640501-5c6e7b6d.0_1598640589036_0.1247871698528944"},"_hasShrinkwrap":false},"2.4.3-next-1598644967-a0aa8736.0":{"name":"@xdn/prefetch","version":"2.4.3-next-1598644967-a0aa8736.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.3-next-1598644967-a0aa8736.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.3-next-1598644967-a0aa8736.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XfcbsdTs3EKU4TCytrFBluhvxInxFfrAOxMNHjNfbTbX+9kRAjO1p2Rqnvq3v/HAPG1hDtGY4DktCt2Bw/39Fg==","shasum":"24d6aa172c2128f2da150a9d1b57904c92f72d2f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.3-next-1598644967-a0aa8736.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSWOKCRA9TVsSAnZWagAAHDoP/3jDBlhMHgVAvOyb2CEW\nd5A5MSCpzrWI7AW4S5jSVfrQ31WNzvHBKEkT+5WlJU2wCwQErdEXCyDhhGr+\n65kgVT35VWxmngqLTT1jO65sX61VWsvtXN1X71yrQjJph4zIL36+m1bYn8no\nHvVF4gnn6XGprvy8csNm1dqwL1XP5p+MYvV1Sckq0mvbXeRTc/8zn2W1GKX+\nyaZZONJ2AkXDVWJVU7nqEcXR4MqlZFCth9NfrAn2FkBg2EtbcKQg0Ygc0ax4\nU/2yV6RtqVSgSVEqoVCoUdiEATLsRNzVbf2WrYozDjup7G7X0d/3oqGVSUGc\nzbgidXHhRnEplMUa7cTm+twqTG/VgZ1gLEHPP97pZGVBMn8mvW0ozdNfI6+i\ngyGIA9XHpu9j5OmnsZyVcR35Vxle6zicfPhbp2n3wGECzmKKY0Cw9diDFA8N\nQ63lczbL6DhBUBwHcqQ4q3W2KB6F5/SjP5SmVrY0XNkPYsRwykVf8v3tXF6b\n/UHeuw44XkiK26Jtqn12EFe/W28rrAGF9CyehoLtUaRafa1G/dUKWnIOj1KH\npWbc7QcQeUGUNd/vr7OGIIE/RKX/+EQXKILAqkVmbVBzLMfpCp11en0Qnnd3\nJGv+E6KJOYIAlC61+cphFjNYXF9erQuFE+/ytY5JX35rDTN+KVBX0+ksV3R3\nzLKg\r\n=DrAT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVGw1A8SaN4D7HYOUHmnI/6jFq2kxecKpbL1WRIWmkewIgXYozVJoUWXOb8WXSLReEt85lIGWIPkmR4C3Y4e4JmHk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.3-next-1598644967-a0aa8736.0_1598645130156_0.01677436255063669"},"_hasShrinkwrap":false},"2.5.0":{"name":"@xdn/prefetch","version":"2.5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Hpw/S9QOLizjBk+tryz7kjy3E2FCCd0NQc2r0YJEvBH8+vZzI3PoLd8PglPVhu1+6hGtPP41/r5ALOyIBKtCqA==","shasum":"91e73b462046622e9eb4b5ea67fa357113072ecf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.0.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSWiqCRA9TVsSAnZWagAAHfMP/3IYm4pixlzg8sXHwrSf\nCyRneyeGqQQqRkx+ToiguEtoHaL1gXCQQ1tN1fKjgaPLIOd4JqdIATaNYNXG\nGLLblazEE78BVhsW3ZQS/zbb1a68ubk29e4eF1ndpc7+eX67Yd0sRHIXz94N\ne3DjcGsg0+ZtMol8ooR8zg50Yb/tty3ZaJU2XASvSYRBIn6NCDdFICltYkhn\nO3VDpSIc+GUT2ItIHKFRlO4SuGQwr7Cz7uZFY5XV0X2yRvOA/Aq3VVcG9yh1\netAk54nQUoiAlhCRLFcTK39rly69vSLj7rCBJwsdFMWf7ayL2SsqtVCkO5qp\n2hzvaiNjw0t9LN/IR6ioubzpBhJYqP+freE4RhJTpadDs4RSyrqOW5oSjAY5\nlaWOAtwljMz3+fagUJmpPoa1ZqbCm7d995uf/8oQpFhTE87P67qZDIg+t8w7\nOy/Qopq4zFEbiLO/xN7QJmKlhqAvwpbMKujfVJvPehkwbNbFUlPCwbSHh84G\nQYFe1V+qx2klS7gR9jExmGTNq9eHACKe3k5zWleMnRt5zAyYCHeDScNmrMin\n/d9lD6ZPDCW4++5Xu7Z+xqb0AAdbz1RdDThcq2z/IpiXbok8NMYU8WnAlHGN\nvC0qpTyTrs2rPeNaszy2H7Fk9K/cAGJTbE3gncXfJ6v+9Y8EcLoozRJShUA6\n0qQ1\r\n=YXq4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBEztT8AqJAF4DxG5wU7D0IEaK1Vin/rOrjJQ2Pvfuz2AiAW9Ov31fkzH2yN44hfqHtIMQIuV4pRKapojxnsTSLVHA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.0_1598646441609_0.14064499555559862"},"_hasShrinkwrap":false},"2.5.1-next-1598646333-1a9d6b6a.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598646333-1a9d6b6a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598646333-1a9d6b6a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598646333-1a9d6b6a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7SbZ9XDykSgonCYR11Jola/7sqm/72kF5lp8T3KNvkDT0f3yuzl5NqlTrgFTO2VW/FbPQvru/9nEe2Kal8qVBg==","shasum":"220ccec5bfa65748264ce63adc1d4dd3d2db5bcf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598646333-1a9d6b6a.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSWjHCRA9TVsSAnZWagAAE/UP/jZ5cOim1FjJcbZP/ROK\nX+zG4ZyJRxIJzVSi/BiVJcdnxssecnY+nc/6koxd48/6PX9RWEUq9/vKySXa\nbh4x34AFjs8r6qwZPqqjVvy48S+aHCQaN7c5qjP2ir/eZrEeF4rkYrjEu/Vu\n3zdeeUkVkkOYbHXV6s31O35a6UKeoHYdoC+CZktEI0Z/Z4f56cd2YMIkynPt\nB/Yifz5ZyQ52mab/ONdzZXmNSbRSDIqCJYWgo7dr142z9SA5LPjJHRZ2dUPs\nqdDeVRIO6zSiKL725ME3eEIO6ti765KlZvbmKEUAkvMVWAUPRMydaqTQjQH4\nh3dzicp1RrFdYUWxR9zggcPAMVHIMWN8RwckqhJhzGprvbNid8nvGqmS+T+L\nCKhcu4kSF6V5XOC6I7fg0/hFQnn3/dgw5EmLoZ69BaSC8HkvaeKw4epjxuv3\nBlwP6ZnKa/rSm/FsB/mrw7Dg2Loq09OWjyR6mKy57yet8rrtbAWzyU3DCLhm\njnZDZ3CH0rSLezlFaHklunJUFphIUw+oAne2WjacIOD3uPYzrulJRkX4KBvD\nUYfDbYN6mQyutWjIqbhMWNM5N9mfKGCDMczZsPUNkEynxEyBBVg9qr9rzbl/\nikG+PIfQ1BxOF3f/VZiKJ0FYd2RYWa1cKF7dwXS0Q95aURAJBS5blqdCOP7Q\n7vGE\r\n=i7fs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkUov4q3dYk32HNDjr23FHulA8qlmIQIIDGbIoLErcBgIhAOfB7msbolexHZFtmlZ3kjgT5nZUkIRNweu5bepi80lm"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598646333-1a9d6b6a.0_1598646470953_0.36727113636168496"},"_hasShrinkwrap":false},"2.5.1-next-1598866946-6fff5e1d.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598866946-6fff5e1d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598866946-6fff5e1d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598866946-6fff5e1d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-fzAJoZ7iL81AXsHkhuO3yxEAJ4wvHXJ/iUA307Ol+vTpGjDGSwRNOKedvYgMQaYnXofl7KZM125NzewzlAZkxQ==","shasum":"77c54e8a1bd7e8987bb5e77d8287b0f569949c76","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598866946-6fff5e1d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTMZnCRA9TVsSAnZWagAA9msP/0LjWcLgIX+b8kJG19Zp\ngE6TjQdWgHDjo9hQJbbdpnjtU1qlA7vF6RJxJIyt/SDDEPXAlw9mLOi4XttW\nbPo/vPisbEDwCmwNvyaNx7kTTsg0d7QnWpO5Cl7TNX/uFW248kdehm3IFx+Z\nMmViJmoGYQ1DcmouO2y28UZs7LUC4g/bMOU/OeUL78XSVwHDG4ONdH48onbq\nPnya5pt3zD91wWjX0aDMR3YxAlMeehkEO87tfvILrHIcg/d5w6dEBV0bLCEi\nc7ixC93AU+825fWB8xdD2UBt8w4fCy/F8rlGsjAZPFncaXuH7IGUXDxd822S\nUlkmmy6OAXowl0NMM7t1AkKkHxOqcp+5S0sDQtIFhEEv3+7WqYNtTaRIyiGe\nfwNkq0v8xPSHFhIO13DCXg3BoG4nwRd1Jsu71Fe/+qEizbjGMez1axWtWoxm\nJb1lv+OwXyXUtmo91CNd4FTwFROZYCiaLWCZVhHVSNZf9X+VaNaI6j833T2Y\nKplsdMjOhsPBtCJoKzjYqa0OMIIg//LbSCwViFgjL9RSdz3krRcFyTOsD91y\n/pxUR7LTWsxCUhQgLKo799V4u91KmLLVqlOs7duU4+NfZfjWr8kFrz5JnPty\n6h/N1HlyEslst347gdg2xj3LvsIJ887099b/eHB8CwW9k4zrRs8LS6WHK4xr\nXmp3\r\n=r+Hr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgsUmPhkMPlS7aQ+FO8WNXLeolgdnV5sz7QJVGwF8lDAIhALMn6Vj84nyZuq4bOuKy+9n954kxJI/KQVHdDN5xcyY+"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598866946-6fff5e1d.0_1598867047530_0.16417550279902504"},"_hasShrinkwrap":false},"2.5.1-next-1598879987-1e0d4f4b.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598879987-1e0d4f4b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598879987-1e0d4f4b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598879987-1e0d4f4b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Or6tUKTXXHFtKvYJ4Cza4owOL2xWuffJlVbFdvrlDyrGCT88eDfnzrvGyFJAk+F/W8LQ9UKL1cLRyE7C2DBUMw==","shasum":"693b0d188195cfbfbe3ede92992b79e40dfc51bb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598879987-1e0d4f4b.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTPmGCRA9TVsSAnZWagAAjhMP/37HqqUDmGzdZr/A93Gt\nvhAUcNQl3NfigAjXNrgiKGUfBe8jjJ+ijcyDMjdB6inrVJT648DFvTmItvwE\nQqaTrrNXIWoMN1Ik/d6mpOPejQo/gFETZxZLV1RcBmBhkBMLOsNjHoisooyE\nSo4qsxEwAjw7WGNkFt/1s1xitGBkzJBzZjffOmTXrSg7LhAAkoh27Pt45Kom\n4MFoxljt4Levmo4QRqI7yOKjYD2FoRJCLky6BKq6F3TVIiwQ+9d5SvZ+c5P+\ncNy2PJXU2/MquY087AIkBvu8Mlcl/H+cydHzo91GYqyvnHD6JP6ZHjBIbf2s\n1NestNp62PlEalEenycP8hksVarAcvdYaysfJxDnFODez/Zgow4n1uvoJzI6\nt9yi6/vgYcO7M1XGUl87TnmSD1wCj70zW0adcFquNNJ+rgrkhrbwp9OBLUkr\n6jCVByfqL0c+87K1X8WX83mZdIw08koPhjLATNSbPy7IS/dp6PylMSWmWkP0\nYLpjxhgZod7+1idGqiWz+ZhOIgm8cpYka98AF9F/JX9R6ryXIsLrnowaMSmY\nv4yFYLxk9FwC5p3xao/DgI310JT7zDwGoqNogCNxNrD3uC/OigK9JVObZkC6\nfJgXOXsCSDhbNsUS8DjMjF4KD8j5GFwvybSlLfU4NVLGjkTp6IwEqskTu8ST\nEz5y\r\n=tzjm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHN37eC5PDgfh/pID6REjEPevJt7RuZttghcsa2wvU8dAiEAs2svJzwPc81/bpBYZ4vPjd9P3vkqhofULFRUzZhN85w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598879987-1e0d4f4b.0_1598880134313_0.49639689813385734"},"_hasShrinkwrap":false},"2.5.1-next-1598880323-b5e6fd78.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598880323-b5e6fd78.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598880323-b5e6fd78.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598880323-b5e6fd78.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-F3bHvaUXJ8Y0ZJhHGCxV5V8M0R2T3m6kk8tJMSWQVMWpQiPQ6xrdpZw+N4eW/JP4fZaT9B8rzhEVdSMJHRy2Dg==","shasum":"4496ee6f03c9522bcd4f40971fc7b4dbe8bbcf59","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598880323-b5e6fd78.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTPraCRA9TVsSAnZWagAAtZYP/j4WgnlR1+DP4DAZ7/Bk\nDW8yTPZ64pku/hAf0vPZE/cd4s8z3HIfnvkilZWqi0ZMTbR4BzpQD3g15x99\n+zWkeFDHicf2Yzf96r/PFwmI9sE+smYck1x49zX9ZNOyiQW0pV7hOyir2knj\n4BwlxM4BYID9QdcxhFrnzBV1IYWxfVVHFa5yurqclmfj9PODrRNsG3S0WWAU\nf+DLe2+dKF2x3aRRsQjBAZln5ePISIZrWo40ATf/QlVBfHtHzE0TR+4qNGiG\nWp35WqMqiKIoEIkC4lno1wEIJ9olj4zQ0Xfc1rVFuX6R4UHjCGCJPqGAyQdH\n94sXdcX4X1C8nn2Ldqv1OUJ9fysrn3SQgpBVWzHNHya9IXjOCbGI7NTzqTSI\nZ/Gnn3nOQ6v0AySymZch+7l+NUZsT/Vz7qHeD2IkBy92/f/OTIXsflL0nMiW\nUJx3+T7Hu7HwQ2V5Ds4l6/xh00jga3j2zZgP2Vvy3WdjXc/SoG/bp+cv0Pa4\nnw2FaothflNT7pLdcb19DLHQp+B0EbDva48IAnqXcivuwYTfqlWLL1crstqb\n4OD2HTvtcOV6zCn+Xw4DAKNh0k5unYRwpBzuhqO8o7o3Qe9Q6LRMaHjO8NQk\nQVqYdb4Y4E4xVfRynRLIOTS36yShG3LqBY7eIw6d9CmxTZl1jnI6S9KQxLxY\nqPAn\r\n=90E6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDLvhb2qNtxoGkzXXl+cWyPK8fr8u9txhs4qnt8OJS4YAiBg6b9zBHOXMc4c7PsHVlFAwN5re/GqT4xw2XCMc299+Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598880323-b5e6fd78.0_1598880473654_0.27899147687708825"},"_hasShrinkwrap":false},"2.5.1-next-1598880768-caa27f5f.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598880768-caa27f5f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598880768-caa27f5f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598880768-caa27f5f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mWcQxMrynv4AcvgZd4e6vVYI77pCDgJNwbNawIGMNNAqZVucujH6yAn8vWQp6xUXgOGpvNUujfPskq5vEgg7Lw==","shasum":"a68b722dbf9d08cae306f1c0079b8aaa1089ef26","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598880768-caa27f5f.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTPygCRA9TVsSAnZWagAAVBUQAIU+l7XKV3H5EHYJllrK\nQkQD1wk2/bcysbsSzSsneuql3jQFXkzJmrL8gdcpEcX61KYQlOy1W+nVJwWU\nYLiCMV59dmOq12A8IqwlTChS3Y8ClWFmK+/w5Ws51hP2ClTsNN1J8NdwJ/zx\nwiqQdrUdPd/Zngi4VfsHaEtp94EZLvhlHooeKN268uzf6N8ETmfZcT5e419d\nKMN66Fq4db9jfRb1uaJ0Z9hN772BnzLdnf3LeQtyur9R3TwaqOjJeP6Ki/y+\nZeKYEgG28XkVqwSrvDbZcSPwtc3+RwmF80CpiTECpNVXYyygqIEBU+U1QFgl\ns5f9kZKFIno6+g3H/Ku8O+uJo440lyLufUUABt3ucVNTADTiNE8KKNDzNweD\nKdpH/kD5A17LUXqfLN7bhscT1oCBr+wIg58y29eYHeCcHY/HukEQPjM2yn9w\n6YLYd2AAgwtKTk+zgp+7QVmUhyhv4vfWBKGhc1hGZPOtbtf0zhzW331bl0kU\nYvoqNNX5HhTW6PQgoZvtDknlDMrd7zHlAyQ4vpTuxomfUbKHUlqYk0FFDp40\nJQJry8lZR6CEVZUaZMNufFMI22vwnOcjmY1Qi495Za1RBnIBEziwq1q8gIr/\nnUeg4C1eLMzpVcZUHSN0XbOJdjpS/XcYtER6Np7YmXf5lawI9Ow49lOtzLyU\nV9DW\r\n=nb1l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBS/64j7yzWVnl8wBOGo0323anNrUFDI6WK6tUM1cpR0AiB7hE2P8YfFQDJMb200N2/JTsVFyTOXA7DvNM1i8mrb3g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598880768-caa27f5f.0_1598880928089_0.3293361101560772"},"_hasShrinkwrap":false},"2.5.1-next-1598880865-c8738529.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598880865-c8738529.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598880865-c8738529.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598880865-c8738529.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yz8CYLI4yGI8g+TqR+DLLBy2gnZ2r7gRgHJHE6W5pmDS/xN5XQUC6Nahaa059n8UkWNqDyBpBzNR7aN0ZXvnWQ==","shasum":"4549b0f6d701f22aaabb422a1fedc526e87fb1c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598880865-c8738529.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTP0ECRA9TVsSAnZWagAAfKwP/A4vRtbeZAV7QvpbrvHD\nxWA+v8yNr5PNktw5edUmI4klO6VsDCgClekZDOp3n5YxaK1j0WN7lUdkNJcN\nlFN+YpRbFiI0V/H2/87H7YlxTVS7oindh6bxSF49IK+VFGufJnzgANrDj010\nrAtuJ4llcTCRsGCrFzxsFqe+v2pz6BzAuUDeXQFR3QFZX4mhAJma0HVZFiRP\n1jEI5OTuRGlVpQurDEjHs9DI2zMz5B3npCTAJ1jJf07HXuPSRHn+qtj7xGkx\nWktWKUu31k4s3kaaoqPs387hC1yXB+6JxuWx/zVYDo8wx2hF7tSuun7si/7Z\nvlPjNqCcVcFDA+eNL4yX3XDJgkWP1KqTCW4wZrJyAw9klQQu0hLMqXAZ7uBW\n57+rxzVpdd+nAkrx+gIydxzzzmr9uEDNG5ZgfYOXriNRaSEZptT6b219GRzQ\nY9mWbEbqQQ+q7+UW3hlIqQht2xo3b2VMr0WnelzH2+Mjl3ZGfRPsM6p1O266\nBzSZDN0xDHQBUKLbx4u54Dli3rQgfRp7dKDkb+zMzgYmiYCeIIhMWtlCoanO\nN7+Y3RqfOnwMHKK1C3BRpm3PRHIKSYnji9Qsujezw8VEL8zzb6yJqLHRB/SC\nwSj+GItE33VY5gFryazkr+2QYKck2uRwiypQN29UQdSKIwqBCyWL5CducVaz\nFVwA\r\n=XwAD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEgUFLtNlvBBtGf1XMO51rfHcW+At0dam2yPn874RALOAiBUYxek6YfcuaYVNQ5jdRoGVcFXckzhUA4kVSvUoNW6+Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598880865-c8738529.0_1598881028138_0.24278880808841707"},"_hasShrinkwrap":false},"2.5.1-next-1598881901-48308422.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598881901-48308422.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598881901-48308422.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598881901-48308422.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3IG3UrVRJiRYrxflSf/lxWLOXJ/HJh5hbcZYCtZfMoHPY1Se7ytpNzyGv1Hw5kzYcqgl88As+fzWqekzWcstCg==","shasum":"4b1c55911afcb4faa03a1f6b59397de014318a3a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598881901-48308422.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTQEGCRA9TVsSAnZWagAAWlkP/1g3nWDA/2YV81vSlm9s\ndN+B7pPhl+yXZDAFUVkX3uD2kZBsoNetYu+4edIANnkJW+vnmG9cOxqx4d5c\npKSW/yvvkT6yghTn6Rvqm1Ypj6DE3ZUXb67HAP7ytdnaioeFOdxx1UbfpNZF\nzQIquqKzrLL7gz4diibIYkkjZNMGI1ZB9jEdGJq+My6M3V+yWO6nlAXFy1TV\n+iBQNx8QIqOWLpRXH2hYYmi5LBqZTxtWh/L0Lm65bxRDa2qM+M7xQeV0ghWh\nrhUcTOi0dwE2m991Gutsr1FtKkDlmjDPCa3I0iGx3+hrSt/EHWNQC5T5PcHV\n9H6LBE7141AuYf1oT8+chtC3dWenLLgmO5xeIQqRDjSR8HOccQxzABnVReTA\ndNcXeLFMS7jhsWtitCVcXRtSlqiC5oj29VD4xfT1krEcDgY4ZM12lky5TLAx\nJHSxCtIMHjvmPMMP5BUciuBgjWtkw82KRfpIvJLkJ5m1fRsGafW9pX2D4D7Z\nrNRadZ1S6XFJ+R+ogxr2UQkEcJjICQ8sa9+ZMyhxnhEU/msxbmgWz66j+ZQy\nsg1fRJWmpG+XWv+fyFGDPHwA4BRj8wk8lrrZ2y6b6p/c9BR1basyqw0mSb9K\nOcCpZfAjeLWos7XUG/bTwTvCDEPB3c3DqqyHQTXrgCKyGnYSS1ISlaVT/hxJ\nAtP4\r\n=EfEb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB5kfEY47BlV+0OglIdo+UG44eMJ5SzcSqfZfn9r8dBbAiAPALuHnzDMyqc3NZuCQNSckthv/YqDVEzCtci3Zqq2LA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598881901-48308422.0_1598882054583_0.13382658358035737"},"_hasShrinkwrap":false},"2.5.1-next-1598882524-efeb276b.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598882524-efeb276b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598882524-efeb276b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598882524-efeb276b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FjsC70d8hFRnbNqIfZtPAXrTD3Tfngm6g8L49BaDIWrVIUWkF8bDRAuS3d1Ddfrmv+tOcO0P8j3SYBGS0wePVA==","shasum":"d9e7fd0d7b968781d4333eed25f181a54d74d83f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598882524-efeb276b.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTQNgCRA9TVsSAnZWagAAgrYP/ieqHEysgN9c1z/lmt+B\nkXqpM/eatP2wbrSRcKl7H7ndvcWn3JgbuyZdPwmDMbomF2DmZjKb6qpnXnSK\nxYVm51NMzKDqqSf9AFKf0zWh1n6vIzzLdiAtWTtx7ekKUeHaZSaiW2Efew9L\nuMiLFlX5pH7AnzGEzN2OZLlpC34l113vKGEz6LB/9OynyK2cywXZafsfbzGY\nSoU+Fx5E0n4V8W+gN4kuOHAhIAKcnqATVgYhR5Sd2uFZ9MtD0zPB7Hz3gis+\n/0FsWafgmXEXWzKf+Lhf+mx+JOXbkn+HmmNQh7uGGuiqd1xAxDoASqvjpsrX\n1fUqnw1cgB0KlzvPmnW0e4vuqJCk3Vf47AR5hHqP/RNQIcFoBxoOiLQu775x\nmPAWy7IYX97k+zr32S7EL/cqQ+pnFGu6mssdf68FSHbUOt9XVE2bm9tNAK8A\n9NheQZQnggUnLgqemKEycZkjLo28nTlQ350nvjZ20EfNj6QPuheEdgq9iMp7\ndknwCURIdZOUQBAMlDo/PypUkIEQbBPMg8patKZc2+jNykL19jbV/nD3o5XC\nprmz4fPn4Io63URMRttGPR8S8fiZsnZT+0kE1Lg3MQ+dKoncL996p+N3VsNP\nx1wD24Bd2NGTowe3EtqnZYuFNpjLI7bAVjYn5cWbdh+VauKr+z9CiAp9GKSM\ntSkN\r\n=/oHk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiJhLkz/Ir2cP5S6iUxHONtIfoj7RRbDhA4nzQarQybwIhAPmCusgdjnDEqn5fuoZdUEVVPD/nZSb4bssiXPeUZHkW"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598882524-efeb276b.0_1598882656141_0.378454483038253"},"_hasShrinkwrap":false},"2.5.1-next-1598883665-efeb276b.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598883665-efeb276b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598883665-efeb276b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598883665-efeb276b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jybJr82FZi411X0gW+Q3Far8Crup1+mCdsprX/pFGzA2q/nwKp4aAmu41g06Z/yh1biFaCMGqD/iak+GBa47lQ==","shasum":"3ed2eee15b4441d21683aaf13c67653d249ef63f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598883665-efeb276b.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTQfoCRA9TVsSAnZWagAAutkQAIRkfxkihe0B3RWzsk4p\nG83llOJZLgKc5CNIyNNoN2p5kDYv+wL8bnXF18QotGwCD5z8bP/9HgX/pQuA\n7zUnrbPhtTOMV89qht2J4aAyZ10Bae2Ef7jjcpteJecP50PXGSp7GUO2YiGI\nlgMmIiFN1CKRswx6E7c4hL5tHz+YwC33TPWUZp5jBvcQxE/X9D6EqVpgijKd\nX+GdOaCxI/dJvhx2SGH0lrPGjJORL2I/rpeSjnHQ5DG6w3HaLR4f5qDktb60\nZkLpzegmTBVeqyjhDqSiW88maDtLSzf4PVcDg1R5Czes23VHP/e6P3dNuiYP\nk/SgYAcYIf63SC3JtXSn8Qg6smKRBvDh/spcFuvDr0V7NN6upoPrOJWEGFNf\n2jl+4UTdH8DHmvsytLxnsag6L4gStlq/a1XX0Av3XJ9UPyBvZatnltBGuF3G\nsS+3PK7zh6jsANxO2OGn+uJnd6oVt6JQmdlHOh9h7OzMQ9ulP37ogelE6/tF\nO91Af9L//Fue9wNtBMLnuwMBw+V8HReqcOg20kCq4Y6iScIe0HCD3G7Cbd6a\n2+lnQ1o3vpqc3l6ANzO6lkp64f190d6ZyxRXh3mFMLNMdVwXiBB2dKxGBnFq\n5lla4utEmfMevKxZU/L2ew7e9jdIwS3WoEe462F4Ruax1oqcsdEAvi8OgVae\n4dzF\r\n=xVM7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFZ24GtMgTwVP1WmiJMWcjjiEt1QU7J8By39W5SGo6B1AiBmnwq99wBAZD4F/ICYtXfNf7Xxd5SP/Z5978wIn4FRMA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598883665-efeb276b.0_1598883815886_0.7176312268831841"},"_hasShrinkwrap":false},"2.5.1-next-1598889853-8cef67d2.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598889853-8cef67d2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598889853-8cef67d2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598889853-8cef67d2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nSOs4tvb8kD41MgRUal3PKxZzBUOmyU0nud57uLvnYO71nYvI8Tlin2Obz9gh0zqujjL9GqF21XaAbEcBxNKiA==","shasum":"d0ba2690c2fd2d5e563bd958c34555ecfd13eda3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598889853-8cef67d2.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTSAKCRA9TVsSAnZWagAAfRcP/3F93z8uG2QuPO7nQOzo\nJTkc53ixivUMIAhONzobk0DUl1/XrkahIxiXHTXwQMR49Ymi2kCq2H1w7Bs5\nJh1TaAiy4S3JcTNnETB+DUsFeIM7h66UbG8o20sHgscWHn3MsN1m3eTXdtwa\ncMGoUWOKeDfPW/wTdOCa2ebPCHnDC5OPL2YehC73eZ8e1au7Pwzs9HlZjcHr\nzecGIAKeeef7KGCHzKckS39ZhwjbnTq/zZNhPCyzDBeS+YG1Ck8NFGCzQ2D+\n+AQeHfAElmf50IYVUzsKqWdjhBPLI6nEe/vB3f40qlxQAejZYxjQFABMGdLH\nc1KXSqEesGZkrQdISQzcSCH6obmuxyCmcQBx/OC7lSy5/UKMpj3pJWZzjox/\nv2EPcOzVR0pkdDtwb3m+qpTg2hE7/qLjPkRz+Q7tYvTzlcMm4ahrsZ6UXZyN\nNpET9O57zOKU7zqIRwD+lbnEh/yyLgOsSdKHvgSfmL6+4sK96AIrDMIsqbkZ\nKXmdvgkvNhrZgMRYWYZjbJ+bDGku+IR6SboMMeYLO42CISL1yMeEdUHc6hcK\ni6XP7bdTOPhcB9bTpvZfC/FrvX89HvSZYTrXDBdIvT/VX7gryNQBzhvzaepW\nJ4OSLkcShZ0pNntlA1wNTLOlOPKNinagjz5LXRInB1NeeKzrNDPVvtHcNwRM\nLKEE\r\n=j5qV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/SXgQAg9tZUFE4z4M9Z+kowBhWlKQ88pqMg6tzYpDpAIhALdIYnkfOjPh6zwfb6C0jq2lFpu/n+U2kVOuAhCK7GSU"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598889853-8cef67d2.0_1598889993812_0.849850751445133"},"_hasShrinkwrap":false},"2.5.1-next-1598896929-74dbe2f1.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598896929-74dbe2f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598896929-74dbe2f1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598896929-74dbe2f1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Hc7zSv6mNiasqoiYRTqpGalQzk2a04GM57qix+y0s1HolfM/07USHjEHgINg9I+ou073wOVQVWJQxEjRV9um1g==","shasum":"214224d4926a8f105f36df3660bbed582a84a2cd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598896929-74dbe2f1.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTTvfCRA9TVsSAnZWagAAza4P/1PDN6uGPeTogVShE/Uk\nuZbu5U+ACWxc3o0I2qvAx4zhIxU4nNGddQd1uTBYBekKRYsZg5K+MMtdD6Pj\np2T9QRM6Eeo2K0HVaFV6kN/hIHfkeYNnFHxiFQ9lCtrf5A+NLsGuO6NZlJpC\nIvcAPry8ipmpgdOflLeZeTmCXU4a+i3z7ADvggllVTI+uXBR5V9uJtthOVp2\nLn8a+cfe8C6rLwNkpH1iWh5zgJu4JVY4yJrsSVshJDUp0SdGWgSoWigUT1Ma\npZzxXTeLBOii3jl0cP286EzUc1BTf0OpkV68rTOwFr6UOWRaYfV5z/SYwymC\n8+oK8Jl3gQhfx3ydvpvjg+d8K6Oi6glIV2a40MRZ4pGCAmv3ZrbofC45ohkZ\nLqpy9q5PHS5hQzjHKeBFv2lm5Zj5GH9aqpfMDiCINOwBs4tcvFFvv1QxpX9K\nYHcA93w6SY7iUoIV1psglxkD1luPoTGCjWu3z0jymgmyh4qaRQQMKgjSP3Ro\npTknpw7LwRsu7rHFgEMU0YS+l9v6xrANuKR5i1EzytWqDjrzk1fMxM637LTZ\nk+zNxuJ4aTsxSPRNMNy9AX8ANDeDU6GmQTN/4mF9LVqfa2ia8LxPtbN3zcjz\nGQvcY6ySvlTbs/sYHwmj57bKxRcp3d+OQpMXf+rCnBlHC5xYMs7wLlkiVTSf\nvpJk\r\n=V3Ng\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGyzBpGCMj/nch76lEY4yrIVc3EBQ/3czqcHLJf+ebwZAiEAtypuW+TRQ1wub/MZ5ARCvhn9+D82rNIswyMKldRGROQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598896929-74dbe2f1.0_1598897118841_0.3490222604443869"},"_hasShrinkwrap":false},"2.5.1-next-1598925757-dbe26300.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598925757-dbe26300.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598925757-dbe26300.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598925757-dbe26300.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HjZPjd3+eNSJwYVdfQ4ftD35aG24GvVuqyk+k5IfY6tFYyeoOzDpUDW2wwUMti0/Ec8DQiCZtn4qrYgmlb8j8g==","shasum":"49e6c3b182eac86dcff7458390e6a556f4f8d733","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598925757-dbe26300.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTawZCRA9TVsSAnZWagAA5XsQAJUvQWb1uIra74CmPQU5\nXO9V90ajtOVgTqsWdSMx2V7wnZEUF5+FsUpCNwFyprlC3jZvc1UOsqwEV2qu\nL/9kgnEvtjILmTPgju12BTq0y8yQwqE7/dQc2pMMtBrahOdvvYRuuWeXxC1z\nsxz3Fgcahfw8f7N6gSGW2QLk6hT/cmaZNOFg8UvnecaltmzhQyZaj7caT6as\nFg8Wh90aFAwKGY/Tey9aBJzXpkfVNeli0AtpJh96wo0jxKS3YNXCXQIEWHNi\nM+vb8gq49NR0/gXrQS7mVc+fb0roTPsgdf/sRxPKPa2BEd5hzOAwB86/l7nh\nTkbyn/Lj01ZKigtRqhI1am3Y0XrpjVPRo2tYGiiy9OKDDFRcKV2Qz/BRyVtz\nh4F/NegnR+bYX4tERLmAg3ukQWdtWQg9zCZnowDF7JFpXgXx/j9nc2b9uzO/\nMjZS4336cxhDlMplem/ClBhPtlFKbrA6lUtCgkL8Gi3oJa6waBw7GvCA6WUP\nxKUedV4V32+IKEidkN6QlCohPOgaLjuAuKZsvzXaQOHLoHl6TTcsFcDRedFL\nOA3yopnNuJkQjuQBzgZ06YmTydm2ebUNWyQnuo4g9O2jUfa/BzWbZrxZMLuf\nzrxPxCBitz+8peHgQ5Gk7LM694DkRfgPLENgCtfVW47zxw1ot3WVqV7stfuO\nU/r4\r\n=lQwA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDCS1Aj+11IVw44INw8/MBBzmmAAsnqNIyJRjJFJYqy/AiAM6dQH2cKPioLHAGvwjEodHGN67aQjJdisaZwn5M0nVg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598925757-dbe26300.0_1598925848941_0.8898559738755778"},"_hasShrinkwrap":false},"2.5.1-next-1598926910-7875ca78.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598926910-7875ca78.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598926910-7875ca78.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598926910-7875ca78.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-984uU7dfrqwyG6rGai8R/SSMlgeEJatb1N5FVx5W1u5J6CoO038sMwZ/nqfPgtlnE1FXsrbFHW94ClqDpr6NbQ==","shasum":"c80a21e4f293f4f7129d0047914636df0b5d808c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598926910-7875ca78.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTbCaCRA9TVsSAnZWagAA68UP/jGtsYm8ev0Ir6H9H529\n8+2MHmVkB3xwstJKEbxMeNNQPhRF4Xal1ZsPElaV7t8WGLCNqj/3OA4ekgDp\nDJeClW7hk63FeMApB1kkbFB6Ebz+1sBXMLWG8KSnjhga3r3CTpITVsAMU3UJ\n6do+kZ2qmUSeNoKFKml4wCAJmo5kUuv5yinOnlnZ7F29mf9n+MJH18uDXW2i\nvnRCrdVNNP3bJyfeS3J37eTLD7l5P6RScYAAxcxc69YOeKNI5VF6mZzukv0Z\nuacsaqyhdJR5kc7+9nX9++PMplhmHJYnZovgUFie2mc7d1SenYRmbKSaaAjN\n8rSplFP4F3Uv37nHWVrhdZgSFMD8CtpwKmWoUg3iBuEnGx+tImVqbg61v8nW\nbQZlai23V4/qnGup8IaZWZYdzNrJe2e1SFAQYGPU8JWcYJe0Ic8Ja2WvMF5I\nJELhDaLo+99BHz/QC8RTEN4PsMUCVI//fPQuIR+HG9roBeAXsqhDbG8628IJ\nBIqDtPoqQFps3HR82ORmPoqvOKiZrRnCrSh0o5MsP5cteHUj6giC6517PBx9\nkR38BayXRuByfd5CJYWnpKBLsp47ATscxfCbQUbw962YGwSF8ZSdJKG4v7Np\neeRpSIY5LddXrAIAuTPfAUcN1gFL4ll8Qje2RGZrTveFVpoI64bDpeW5LiTF\nO0Md\r\n=4uld\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHQrRkhn8kbC7iqkRts3M/jOiVm0N9KyJAXAwWlzoh/6AiBSAate+T7pE5re3LepIcoqndw8c+JuR5jPWx7uFmqIYA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598926910-7875ca78.0_1598927002069_0.7966408964671405"},"_hasShrinkwrap":false},"2.5.1-next-1598927667-ecd72f4d.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598927667-ecd72f4d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598927667-ecd72f4d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598927667-ecd72f4d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DwK+movjgySHCr2XEanC1UDVVft8mNwbxH70BZbdDbEc1Ozr9OEvDHlF3R7IJCYHnXP75uEWyKijmEh211rOxQ==","shasum":"2554d55dbb330e1ac2f747d742482658c83a069b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598927667-ecd72f4d.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTbOMCRA9TVsSAnZWagAAGGsP/2eO7fw+jp13VS+rB106\nX9Qvzbtl0Q7glc/pDZB7moUPUG2qMXOMq7zNSUNA5GIO47X36ORQ0PBQwVjH\nTMTjiu9u6w0pwUd9ip4H6eY0LS8FDwSQ/LiSLXQzkNo2IUA1J8HE21ykPyIF\nrvCXu31qIThW8oc89yIn8/W1DvJqtqFMX7Z/PEc8fr5XPgSaDzKv81lW0J8E\nwjWXlFPbEvuQybeLxhoL7G9b1PND+bCUy/dq0Aex+7LrMXBOyqpXNh5BIIog\nzQdFYPV9DzY+wF/+Ct1ZH9pyMXuMP4Ms6Vi55VYblkVL13Iz8jIRI2TgMF1I\nUF2VDZDGPmZpsg2Tpel2Y+3TmF1gpiMHARWuVrLT7YOy96uOh7kvC0RtDm7n\ns1pRGsUtB9Ppdl+2lQpe2yZoWIBgv53TB8kOgMJ1lGFZzHYCXqhK6kSlQNTv\nG7AqIdONQK9QnOs+t4D73p0yETV2NVUjKC4kUF3lj41hvGYZvUGtZrjZBjCH\np3XRtgnZDYEC5sudv8hDtdJwdMFPWvQSYrQyF8Gb/49CaGs5rs0C53ooKtkJ\neY0fJePn7ZnclZ8dN2JyuHbHHCxfqkmQ887EfmCENWbI8ACFHMX7gjWsDXQF\nhHrKAZevZhVR2mas2PHjfKNO409j6gNoUi0ZOKHuCK8KyeXpKlukifo2Gshz\nlEIL\r\n=MeKc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp4ZE434gOZlwHWEpEV7Pk3HbkMqQd5lgEfdIkHfjXcAIhAOlkh3LkQmUxXCGoYsyacZDEVJtdtXFWVnmG7B9tdRsA"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598927667-ecd72f4d.0_1598927756156_0.6155962568261852"},"_hasShrinkwrap":false},"2.5.1-next-1598947834-ece2b92e.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598947834-ece2b92e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598947834-ece2b92e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598947834-ece2b92e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9vCwGeob3OEMfpdTtA1WcXFvVUiP2LGbw3qtZqI8zEpkOsscj6o2lpjU+L/gAA65osWNsjlter9jsnARsJlK/A==","shasum":"c5a2fee09e72def1cfbcf3c11695c30ad321293f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598947834-ece2b92e.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTgJKCRA9TVsSAnZWagAA6F8P/3onwplHsf7k2RfvaOoA\nvLycAQN+5qKLpNZcPXMaOJQhIgO2iNz3ifelHxrp9MH89zY75/bS2TBG8UBz\ndOw23j7pQkWD5fFQXtdzHZcGnhro3SHO2cFs8L6j/tqiyHfzfjTXiyz/D+Zw\nLY+9eQzWqePtfTibykDG+FcP+9pr4u4yshSPyEiIHJN95s3bAw74Duod8RFs\n6adA3SDDRGKxuULrB+BpIoBgoq9wlgn8/5uaA8kSdymW51T2rwPNf9VpyBHJ\nRG8f0iF7r/lyhZTnRdpDKoi0nUsZcXGm1h4aAGcVNpaPXVCNDQy48wXT7GmU\npQEY5l1nd+7z7hkgHZx6MOQ0+af5miNRDJIg4K/igfV1xqNYpX47VLcMHbeB\ndZ8tG1QUNKlMedYyTCFWskvycxTWnxslQzFZqlUuZh/zTNyQQQaFfVjHATdZ\nqwh8h9XNbN4nxCv9jVy79L+uXWcSOEPGUasJOBf5L545rx/HHaqTOno83qAh\nPMiTdmpEEPReglfwKenuVCtVmLSB/eVbW07Uf6yYPFCBStZdBEoiIP00Tpg9\nEq4U1wdsi9jYWkurZO6iUBxImW5XTeIGWZGrn4rFtSrSl5LctMtJRMXB4Tti\nmMLwiVhbARYfbe1gr+WTHXmL6YobfgaCtjzxsH+zuD07H3FSvpfUYo5APDJq\nBuk0\r\n=iTn6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvSkjXV3TcctmpOOVpZMdLrt8hirq+JCCOaGzU5tVwdAIhALItfuxriuYl+9VvW7ql6r8/WcJkQ3P3gBPiuuNHxj8i"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598947834-ece2b92e.0_1598947913716_0.40541127138716115"},"_hasShrinkwrap":false},"2.5.1-next-1598948014-8a30f003.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598948014-8a30f003.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598948014-8a30f003.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598948014-8a30f003.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WdXkPQmATUjVMP5ev6IbBlh43YKRtqja/Z0YDOnakRAyj5svO3E1udiWlHmisgqt+RhVOlXYq9o/ZfkbeIuPhA==","shasum":"54c7a96f080a0198507f415b9c4e3dadeeabb454","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598948014-8a30f003.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTgMCCRA9TVsSAnZWagAAZeIQAIVkjl/FIHqxbkWhW2IF\nmM+h2ho0yNrFz0kupVAnw3Q5zuuWpqHhJpI/skgbPVo0Xg+Bidm/Ar1oYukx\nz7kOIedvrhp2MogAK792acFLtG7bFg8uJqKRQuO+ny0QIOVdp6Bu7Ko+yzq8\n0EUx5zXqmN6AUMAZeqkdmFthGSX+/6ZVNzKWEUOGJEiAIV5hb2R0UtZLyca3\n9Sob54YJD48FOLYWjzdUXPrvZxO0mSCbWF2q1u8LNUoC0QS9TNYKGEUph+7r\naPlfSo0Qh9w9C9KZxkqD9vzUCMMCl2pYHTDqac+/gazgpyKTwuYQvKbHSM86\nRmaD8HQ8HJ+5W9fhAxs4ooep/WSWyHHXp9dMDAYHK6GPSj+CLMjucG2J31lz\n13GAotl++6qsp9OtgxH7U86jwYOmvQ1KgvKES/z7jxKEsguFXZIhsyhKYnGh\nRIdVlT+7jJVaaSvhpi1bLLon6fqQgMGn8keabmdJfehZzNDIbBnrZy1AGA8q\nv8wuBKW8y1+8GP+bT7V3KeOt70cYIMQ0lLjhU/G4PhFBb3h5nAaF4ekPRMQu\n1EMbB1AUoe6Gw83SJGt9gSAR0EBDIBL9xPmsQsZcyJJRgpnKA0c54UdqAGWH\nW1AEXhlPUAUfYJOApKO3kZpTFTMUEMLhqIICKscaykLx2vO4oiPgIqqI+NDN\nv2T7\r\n=jjsn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC65YadfA9Osp288dApo+AQ0MBnpsHWOBrskuj5G39HkQIgDhZeFYwUzuUYRblk6zX5glGDv71GIeFW4229MGxKlNo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598948014-8a30f003.0_1598948098246_0.34232501592389375"},"_hasShrinkwrap":false},"2.5.1-next-1598948189-00887b7e.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598948189-00887b7e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598948189-00887b7e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598948189-00887b7e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-G/647V89KdXcRyo5RKefL58wZo3WMgGzqQmEXKny/60v5O2enBLWgdJbDAG0xmeWPTKAENnGXzmhzdq2K2smFQ==","shasum":"dd7e21cb29a9bfe6c122a348766b910eb48375c2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598948189-00887b7e.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTgPKCRA9TVsSAnZWagAAWqIP/RtiCC5BU+B0j6619Fl/\nmXcvxQ8WSLKciKKmRrr9a7PIyHvLTnQ1jtZGEa0umw4qFd9g2VBp096TP2HY\nCLXfVSDKoUmETxkFGBr3gsONQc9I7Aa/GZaQ49gZb65Zv1Q5w3blTETkJIcn\nQQLauMY0UrU74NCIuMz1g11lcryxKNTKeMN/UAr9lt1nv3HYXtTcZFdyUYZ+\nRGrL0Ctj+DOUB0b6xr73vunaD8OhQRAqmKNgS0wIospG++/GlQOhigT5+qhO\nb/hfoFOksz1ZY/tzDD0+2nXgHN3DjZGDuRrMuPkV+If1SLhwjQzYB41lvqmI\nsaeWc/XGBRxzyPVSSrCoVuOExEAwbpsvZ+1KgrIs5KBsMG+CrMaVnW9WrTF6\nEon8vLePzwAt8HkT9LrtCe9g5HfnlXQYJQijATVlcLj2Eq3xs7Dl/NQo41yj\nWbHrqBYXxkVl94o65o7Q4ft++tTaS3VOaXBbaYB872xx7WrcdEmBmD5EjSCW\nVQ6dOl8xsWGrMu0VgXeTpnXWJsj3Bp7TevEfDakOXmJHDnwUFVoqplQaVkNa\nZi++nm0V0nGmq5CfrW0PZUy16P0a5steKMOqwz6nTFVYr53BcSx87U2NJ3VG\nYGS3OG4BYE4esZxoFF/aGG/TNHXcZ6prfMG31OTCNhSWb0KXt7CVRYuJLBx3\naIzs\r\n=PvOh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnYujR4mQTjbjnWZd41uwmMlsTLtSIlkwn6yf333Q2JwIgKvHnQeFnzD/HB5ily1okziExOdjteeHh+RE+rX8fb1U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598948189-00887b7e.0_1598948298098_0.0060305155784967646"},"_hasShrinkwrap":false},"2.4.1-next-1598954387-16c3d796.0":{"name":"@xdn/prefetch","version":"2.4.1-next-1598954387-16c3d796.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.4.1-next-1598954387-16c3d796.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.4.1-next-1598954387-16c3d796.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ov4DhFdUvcmi/ALFWhm5tgRnV/c3X628bHvjYTc/7V9VVsFUJ/ajLThJRSIWoUDO6BPc32Cdl0cp/7pl62ZGVA==","shasum":"b9bbc910696c4f7681cb7c062a398226ef8ce2a9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.4.1-next-1598954387-16c3d796.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfThwkCRA9TVsSAnZWagAAKbcP/jXVO7fl9cYzzFLJnphq\nAYJovLa81olMcqlZdzgVf5T7eO7kA4AVu39IFm3uaxxEortT0yB9gKYKp0HR\n0S1X5uT2E1zN1s4ZcAot+E/Wtjx6+aRG9NhZ2gbA/n1SKkQFs1/G2bm6Wv9l\nUYBEIZtzvpLjmD5KhjWpPUxHuwRexiDYv2WWkN52fe2Wk11RMwuTkrtlzzLn\ndaTA/lJoZ3RGpkNiRYOGxM0ng+ONJYTcl30I5FOFuTNfgfZC9X4dsjlYsZI/\nK1opzQ+ylG2DJIIzHmsAIUlmLfew25fP8XPp5L95DGL6N1FIEzPIZC4cZx8W\nF/yQsCe62jpxkBGfN1Iwel9Iq+dw2UPvghZOa3Vrs98rQna4eQwIKQSCsw9q\nUEEOyUgwV7vogGes4w7AWwcllSMANT5+AgUdnNt6zj6XFhvgHyEh7xTpHB5G\nEGiqiXEKnEztVWWLfs6Kcp1h8Aa6lxeSop+DCX8NMi5XITpUyo0v2bAGe76a\nc2gMtYfbKE8as/syj4ojwDtclzeFAhiJ0SiDL6pCpa+IiqXsJIxfDttjff3v\nCwB8tw8l7yORx2LVJti82KHlyd9pc6xpJERpanbh7fXPVIVyTHAHKBg91cIP\nqRqvsngallGaZHGl35KkGKSjje7ICWOMS8Rq9j+STp+O+5BAD3Z+K00msJuu\nr5f+\r\n=dNud\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5BZoUUjw9BSVcuFRy74WALYbULX6HevYHh7hKrksrOAIgHggc7suWVi/2wMLQcdiSu2pgddAL+BT4NerIt1hQ/AY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.4.1-next-1598954387-16c3d796.0_1598954531755_0.15632014991689713"},"_hasShrinkwrap":false},"2.5.1-next-1598955562-394267bd.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598955562-394267bd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598955562-394267bd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598955562-394267bd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vXLsY4xhpiAZpOOhFdyktH1vSz8UHqOyxAAzb7OZwvWdV4ux19kIJaoskZOW79yAFdLkFHVPedBjNn4EWzzgtA==","shasum":"661b6b779e41b3c23bc5c3359683d01dd85b3203","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598955562-394267bd.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTiCCCRA9TVsSAnZWagAA1z8P/21jzVqymJeroc+H5xFn\nvhz8UGkqZBKCVFKUeakr9iTt6R+6Cheyx3ahCwgoJATdCYG/Pgq3W6WZV1oB\nTNinFfSx5ciJq1z7vquk/RHRRKoP8dUkyu6I8dz6kzd6+q7dX+jQ4nEFSbdG\nioW4LmAxhOd7zINJGMSWaGvLv7LDPHkm2mnSCJuU8nN8dZqMxrYKwBmmF5KQ\nOCNzBoqNJriVN/60HiQbkgt2oiQ3tIMLevD3X9IWiIL6wxLcE3PhyJmbgcu4\nuAstvF9uGLsl1Z1a9Ohr3REPaOY8Oxnl/LN6Zbuyjv/vGHI95lcTw1TfdDQn\nJSmrLj2+3uFIQTtcr3jhNlrjaNT8If7JxEJ9TdoeJB/FTy/RaqujsqsOBCIv\n8hB5ijZJhITFZUMQaiRxiuuq49Oy8zQlJsL5qdLybBFNmT9uB189zKvsPNPD\nFZg73GiN9KjK2oSmXi1FIpiePzaZXlxeqV/nKt8oc4xzNSeI52+OTgPDbW1/\nWwHHXNfkAkMkoAy2erM1064V5VbDTwuFlqccaA5T3SUPgq0xaVzwX741D8r2\nv+rvf5IE4PorApFkRKmaIZjPgNrGQ3rnQxKIE6tiSpJVnrA9RnSQHWLRtCyX\nb7wdVlN40/cjqMnkPMe/gBqGCQCGXfXpIs2O11za3KAleS0eD46kPnxVtBOI\nsTLo\r\n=l+Xr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH7gixrs+u9F8y+x+CZnyWna+xfOiCXkNAH3+dMcuLzjAiA2fUBFfK2H/bFQF9Lw/kMThb1QkUUWWGfVpeP5aIDWBQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598955562-394267bd.0_1598955649583_0.1355247987095618"},"_hasShrinkwrap":false},"2.5.1-next-1598956014-af1e10cf.0":{"name":"@xdn/prefetch","version":"2.5.1-next-1598956014-af1e10cf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.5.1-next-1598956014-af1e10cf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.5.1-next-1598956014-af1e10cf.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DhAKDEw31BmFWB05Q++ZjLoULPTEjoTBFrvxWiF4whER8m+EDjmtVp22VfaCztKldiE13J/CHQvArLwFaAVL0g==","shasum":"d973e7ba8815aaa40a7c140f86fdc532145f171a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.5.1-next-1598956014-af1e10cf.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTiJFCRA9TVsSAnZWagAAPKYP/jUKF+1zfVTJoK98q2Gu\n5dI61j1yUqMvP3vFwExDGDoEHykECojvu7yiGlgxtblTQF15H6617rruXcwM\n/b390GvlugNzH8l7RFc5AzaMj/VxEtPOUbwKJyLGsxbuNjD4UYZYor9NvfcY\nMjIzE4ApVdnLjI41p/iY/QUQ41qhLyuCSzhjWO4gqEebFjBisC2+CvC5+IF2\nVZgPHnX/c3TkwpXPppkvUdP8KHEyoM5F76pl6fdfYGQ5NHsiYfja8b54eOMk\nFNmKphJKgiiAkWL4Io1eE9dPRltvMeahD/lMvbd+FXtU0VqVbypclHt1d0q0\nCmACCxXHfl7sggpFWbqYWxWuvEP5ziBgy1SLMWm8qUD14R3UsFfkx3rZEkOs\nZFmoiaYPUzls9EU1RztEDFiNsfHTW5C6dG1j9SEI8Iyi1/27VGFWFv+rWXdg\n6+eBXb+NutBR2ZXnAKQgzQYG7NnY/f2DrAb0w5Af728s/mD38OSAQ6T8pf5N\nZnNXrflvw7eArW8nEl68YBG5fcGYNQRzA5ViQOVPE6IOkfF7eMf2A0l+plBY\nInRlYwr9xFSotCcH6hDYfJ5v5vVbBrCG6BHlAtTl5Pzu6jweNd9ugij8mPVU\nnZWGvelsfoKLwT3UK+n7Et8dqdq19GmCRS8SvhQXe4CwEDcf9SptGCu8FrEq\nPbwe\r\n=hCG9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsGKF0wL0O1EA4CqNVcCa94YS3BdhG+3ap8lFPcn7zIwIgFvtV88yQYClWU3m+cyAB6Zs67Ak2fKAIxdgFDDNMEkY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.5.1-next-1598956014-af1e10cf.0_1598956100884_0.47525204210276506"},"_hasShrinkwrap":false},"2.6.1-next-1598956099-2a9135fb.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598956099-2a9135fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598956099-2a9135fb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598956099-2a9135fb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-V+Qb8EjHY1KVTtqwJEdOWmTcAvwIPQFLe416ZZCVii6UIsfnfozfaLepvzLtdsHAripGszy6UfvQx6zYZ5FQtw==","shasum":"a4099bba32e313d75fbcba059cdbd66eb16977b4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598956099-2a9135fb.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTiKpCRA9TVsSAnZWagAAwKYP/joU52pV+BEzyfqb6/E9\nRBAJM74uUb9ACKfKe7i45Tcys0CzSBXZfWgWuINdqPfTVbSI78uQXS1eVPM4\nOCtmQ9CQeGqiapuAWj9hMPx4dcy071eBnqNT921HykjWw5X3N4lpPr0/3Eb/\nrJJ76m1QEnHZcHceggiVPShb/lgz4jnvyrksml3n05HlESOYCkix0hGcmLdv\nsB5Jn3OCY+qpiE9EEdGBvIBY8ySVD40tjPLd4hXfrL06YmRmiq38h6yO/n3Q\nENCfG3GNrUtuH2fQsRPGq2y8jcMdGYVaVdDyG2Wd6xcNfQ8Maqhz2VlD7S/v\nklebMTfYQtxCWy2HbLGQjCszyqdztwKx46yqNSXFUF3pZlnVxMNkPrDgpr9P\ntRs58Y/Du/Z/TRF9kPpI/JgOVUegIRdRANWe0c9eHcvZK+iGxpbP7TEYBdPX\npTAJ7P56/G9R8Z7YzZwAG8QZi9w0YBEz4xG9m5YTEQzpoeRcvCDRCuubqwLl\nhsjs3G0yYC4/ybZxoXlnkckc+us0DMZDXOxMWmdMFnQGigldYEch4p7PJyd/\n5BXkufVck4a2dIkUSCDS2/IGch34REv9gBDCkGPSTEtUhk7r2SY5MBlkG+dm\nKA+LcG01+MoCHMKYiej6MVjRxTz3725aU3gnLTy267jQ/e21RkQm7/zkBp0B\nY23C\r\n=7b1X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFoYhsCdxH3H72bnYIB+/UMQVwnwgqE2GXI4B96sriAHAiEAmr8Js3WjNVQmcUzK6VLIXgl9MYdjmt+1TwjMxl53x2I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598956099-2a9135fb.0_1598956200524_0.8577082269663283"},"_hasShrinkwrap":false},"2.6.1-next-1598956178-76cd98dc.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598956178-76cd98dc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598956178-76cd98dc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598956178-76cd98dc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eh1a2JwN50WH98ojFI9OYoCk/3cxSt0d2uNfR9ugdTjvRhbx/OAI5KQ9HR1bpsmX4DPEDNR3qyn6Okal0vR4QQ==","shasum":"60dd655b77d562103288729d80f807962cc27f10","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598956178-76cd98dc.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTiLwCRA9TVsSAnZWagAAMy4P/1+XbVl19JyeyrIe4Vnj\n4Cta5XSK+oNFts2KNOOKXjFK3bhxClKvfLody1cHI/23ZKjnVfAHR0Owjm6j\nQkRUro2s+99CgpuWciE9W0YO5MbS4dbfHIZZVm9HR5rOn8hFRnzyDsjRYEOx\nsFTIZVEXfLydTzIUCrLnqwVXWMQn0LccESEzEfR9xG8dZO04l5icx+GPmdns\ncVmiTIeMQDwBd2HzNqb0j0opuTwJ9vrM61PZ3tUeS3cYVdLL+fxC5iPIU1tZ\nClfLMSAUt2Bb8Nt5Gd1sQ/vso70vIsBahGaCNQWLnRItaEkk5Zcy9kGyhZvg\n2nKy3IOuUDlRuguIfYczMTpJ1huL6a9XJ263sijCtKhzcC+M51cUjArV9+jk\nsU6bquImUIXuw9O0+wN2dMCUSuNRdY/0NqkvsgoCfOvvtUQEz5jVFCe8HJmW\n00p0hMh3yXWyPWsimyelaDpK1ziPWpXjB0OG9iqx5EWRxwEONNxMBGkH2GoB\nPFnIcOOS0ux/ks60JNJEeEefPHv0rrY7x52obcVup0RJu4gvwMiRd7rJDaJY\nfGvVlZvwMf69W2EKPIfTMeoakQRvLE92ZER7j/rIQL/LVvD8gCAu+FXkGbwc\nY5GBZa2/WzF26L7kjFBw0S1XFWaM5mcb5AMqobMnw+Nm4oEfSa8WlovUGNGJ\nEE//\r\n=XhJB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDt33POE1L2/Z+HhLKrySkCd8FZuVelSjJ/Xw68cypZIwIhALz7K6QdtYI39BFHreSf5sCRL+7tn8DzBFhQhwNqzFtT"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598956178-76cd98dc.0_1598956272017_0.24713647162313368"},"_hasShrinkwrap":false},"2.6.1-next-1598956609-2a9135fb.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598956609-2a9135fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598956609-2a9135fb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598956609-2a9135fb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sLtOITCiIaMB+RDzrL48J5U53ynTKKLmJw9+arbiy2JuiK7SdGNrzixsmjjcePleypl0fwp/4VZhT04BDnwxIA==","shasum":"000442b9110d2fc5ce1545368c91d7da4fa19abd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598956609-2a9135fb.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTiSTCRA9TVsSAnZWagAAlXIP/jri6yQlUqtmGtuMwjYf\nvi852i15huOlWS8F7tljm0p/XewW2zbfrkuXcYiKIVLAvMap8Ne3ju6chwZB\nvutR8mWYjth4FJdvY2UZ3yBWNwVwg8Xvb8M1FNV59pb8U5fQ/85C0gKWUnoA\nNVSYkj7DGq0BKr1FHgzAAuZ8mN6NKw0zsKZ1DDGOWahY1odNIWKm0FNPdgtl\n9JQ2J+rUl29CISHfkKFQtGpcK+9jhhs6EYsAwxAojAeoI20OnbKogFlQGs9c\n5vD7OkzTQUJo7HELmPQXatY4o5V7NCbuqI63Eirvmv64YQrhGm4QPtHmbA6e\nP9A73D7fLLsgfSZNF0kqyDUDGcPQ21kI9uTzDzVBY1wnK78jaaVM+zqky83w\nRHhD2q/TAuetLQp186LD/QM4yxW3dJVgK2snI4AqmvBOBqTJFEh7OxvqzoFy\nZHXMskHqKBFkRfKN4fyq1n834o8IvKBgByFAWFjNVNvTdJV6kP9mlqOeXTPG\nEZHDj8ba0sCaPLFupikClUnn+Em/FNvQw9seu/9g8f4i7D+qp1wB/DrYFVm4\nAVJAsKVtXCiQx1jlBO7kB0x7GgUAluK7a3tjDtelKs/r/hDTFO3/nLGWkeTA\na9vqbZLDRFGAXMzDbJ604b4YSh8U99hceHsXWS4ssBfSeW6Ut2IejZFwAvQ0\nBgVk\r\n=c5Nd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhV3SNqHZXr88jArIkPxSXCqIJ58ELf+EVp4bCCr6KZAiEA/YC7D6obXsCwkOw71PB9HCTz0m60l2BrKB34mPd11lM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598956609-2a9135fb.0_1598956690753_0.2142021056407124"},"_hasShrinkwrap":false},"2.6.1-next-1598957852-da6125e5.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598957852-da6125e5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598957852-da6125e5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598957852-da6125e5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-T7ejFFwUBJnSA8H/udh/j8HLux1oFKfc93pJrT0e3zsPixKIP67D8nH/tFoC34yvyDSJQNFDaAtIQphPf5osCQ==","shasum":"686a8027bc207ded4731a33d1b80699626a69e52","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598957852-da6125e5.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTil7CRA9TVsSAnZWagAApMUQAJE8LxrgW7Ly9oQ25lpP\nm1tloG4L2azidid6MFRXgZFxcKvJhS90XXGPzNcKbf+jrtKnu+2uRkw7FPVm\nyO6oQDC5GnW9ZufOI+i4uZROkUBQ5br86xCd2kD5ETwCKhqT8QsHiMfLxfhC\n6YUaW/bcqv9l5HKUCtn9o8eWs6Gl05/4Bin7wcTr+tKRHIFoICA6IkFMj8cs\n36EmWkFAS9NneywtZv23rSju3oXlLUnNW+RlamzLzBEEjUgSk88tysr8S/WR\n4mAiS/wSfcLuCZktSHh8h5lXekyUkU2MQdEMjbcz/ZFj5dKIFkBd+MG1ijsn\n/+o+BTLc2ZCKaVCt3wfRYvM0AfwBJKYaXDUV3zxiV4oe2fA1ANybUNohRoTb\nCdVh8yXMEOTbZzX9ccUeN/rj5WbKL+nnV8bfg7ZyW5kCj7ChnlYEOj5eqEy4\nUWlCpbo/sOhUEXgqj4m+TLna4+fOhZFar8UKgKZRvUz5y/9ol1nP8ssj4vEx\nxC3IyHSOKcjVG2KbiPFWt5/q6ZedFbwimIVqkgQJD0WC8oTFmJMXaA8PDkeS\nr4MZxfTUAt5XkhlQ2xph+2cEjVyfb28eBXAeBkGa6Y3RuBKhPscGyjiByP8K\njI54MXnIbc6+m9WWzm95XothTuOLW6AyUzAjJcAW+9mfWGECkWHfdBzEiHrE\nkjln\r\n=/2IR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC90gj3PME8kxCpBHMWuKFUPdZ/7n9Qn2OawVONKItAGAiB3u7YQQI77OOsSPlkCuyT3OrWgO9PnGfHL7jXH+alI4g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598957852-da6125e5.0_1598957947228_0.44163103102226375"},"_hasShrinkwrap":false},"2.6.1-next-1598958794-c027c825.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598958794-c027c825.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598958794-c027c825.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598958794-c027c825.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4ReF1Nqyst7o+wNIefhYMWdvuWlynkiaBrzStyOZZuEVgmob2AjOHgghSmNIJ+6eHiya3ILCucuha/wB6ijj/g==","shasum":"22decad0c63f7eb6e881e63cc2db92f93ceff6c9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598958794-c027c825.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTi0iCRA9TVsSAnZWagAAk7UP/0My1FZxl8MT7jgySHG5\n8e6lb0Gxue84Aac67W7Ck7USxqpmAZCWQ0GHiMI8GWec7spAAImYV1Z1+kU0\n35z7JbfDbT6zBXpKtJhckHd5xS6jSeU5rELIrcIzoWyHOAU+HjXIEfjMssZQ\nQeiNfBtmoRyAAbSZU/bd8wQ1cnwuuoUF/jH8ye7RX4KwSS8VPuINDk3j6dB+\n15dmyBhZAxWdI53DSDH6yQVdEWMUcBU57rovE52WnEM6frmglj8haugsTe5S\nljmAXSMY64iXqC+SX62x1J/qe11xCEDuYVdo9UurX1DFjOaUGFPq5SMu1eHg\nhM6mJhtJ7e3HWghVIUvby2q5SzwX635zMt5tNuVYgByHc2+GtFsef8hKqnPW\nDskdX+7w2Skso0NhwbglcacGyXdPqY6vpljNk229GM/bPShWZ8rOJxBxgtkj\niTVxqWvlIFBiTQQnxSSUs5GeUvd1wpnDbIQVcYJvaXsvE8sR1SQmKnTGzOjb\npoS/JgpdzvmKYGJhPYCx5ttGJpFCIDP9Rh1EiVqIXTzDzaNUrViqlorAv+xW\nukepgFdhgBeHvzzAjp936uS9VKaanrqI/FlTP0iIDwCqJQxYyHpVxBBLRVv5\nYjJ8lla0CbXKAaG0bT3yDtrhUI0fzTMehB/DsfJiUJw9maas1PBMIbrzGsDh\n1490\r\n=bDNz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGvAvjg0o2watIlB+tKUt2tJSpO5LcXPsfLHc4uHJAfNAiAr8FkO6rusWle5BSomumxmtsezwmNqXziUm433Wu9M6w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598958794-c027c825.0_1598958881618_0.6517005285537596"},"_hasShrinkwrap":false},"2.6.1-next-1598959835-75dd94c2.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598959835-75dd94c2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598959835-75dd94c2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598959835-75dd94c2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iU9VPz/LO5hD0zkX9Zxwb8Alf0UvJL4C5KsvUW+UpDtKT0FQVbak1VYujxeBxioRbj3CuF0iq4DoOpAg00TH1A==","shasum":"ee6760836132bc8335f2eb7b7438fea64e7f9f35","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598959835-75dd94c2.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTjExCRA9TVsSAnZWagAAUHgP/0Uiuk5Rnw61ghaLS/Ho\nEgK3CiJLI0oAIHIiKBOtEha2jmq31Ip7hdhTKlGtYFsDy87gUhEOdybgPW5E\nnzqcksZAsv+sTWahxF7MGxxHmlOzD2rDViQSCGLIdT/TKKeyMFb1QPq66dbk\nAoAtlJmTDYkzRbpsTgGAbqD62QBETrAVk9x0TipxMsD8MKE/iYevsWdJOk3s\nG7my8+/4ZbibDh4JIiibuIy/XWq3P6BBGPmvW0k5RPbfawNylEFF1gF54IPy\ndbb8eMZzBKbxpBTFrM5bUb2K63nz+ookbVn6Nc/ohVbrxHLu3tQhAx22PfZW\nJpylionvi4/qomgY71IPzJ1umy34UOpF+qiKIf+d0/PjC96DpokdwiYXwaWv\n77LTCGaKL+6oTe4sUriZht/LV+wHbODI6/u94cjfMYtMHT6x1qWH+IwimlJ4\nen8jZLXYOLFMDcy3xP6Z+DtZq/1H51lFCUkRr/nh2o4RQOpwodmBvfeHI45v\nBPmmt6qcVUj4PNg0ZzqEVdL9EppMZzZov0P42IsRkN5WHNDJg63pxhHbKOyX\nNkzfHLxf7A4MwJNiBwnFI19JInQOq9BfTs955WcqwoOS/KYcK7dtMjTltPGp\nHNadHFP74bsVUJ5iaQmil8NyN6R6ZOsqrsp9qDM+wyh7x7zrduYtJSOrao6G\ntG7c\r\n=ngGB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4SUPAygQupmklprJhAOJcDnqUaXTM7/lSGp+KT4VFewIgdFGWTxb5N84XVSNVpgI9a3dHDkhAE8d+anObBqrl4P8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598959835-75dd94c2.0_1598959921221_0.6792444764589667"},"_hasShrinkwrap":false},"2.6.0":{"name":"@xdn/prefetch","version":"2.6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+vT4A3k1qvFpB0Kq10/VE+hwo4z/Tqp2SukmoOhVeSFUPPpee21xpP/drrP7CJNFEE+pU02RkdoDAv57X491CQ==","shasum":"79af738158f85830d1f492d2ff9400d04cc8cdb0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.0.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTjfgCRA9TVsSAnZWagAAEbkP/3aylcmOJ1THkb2qpaAz\nAYPJqRopKGHUFMo8Q5U6YDab6t+JT3+EyiSnG++QIo0IMkW4ALvBRwbatduC\nXssiTOFB8uCKqBCpzc2unieRfSnyneS94k/WY2PGSy9RnXzb7JYRMg6izm/8\nDVBYNngutDWzhYPLQHm6WvT+kodxm/wiUIiu0CZoGUTLSEwwW+w8mjMAClDe\n1GuZjJOyHClnvfWt+2pV0vfvHTISS1FX0UO/5bXUXN6ZzwXIYNPIO8wwgPHB\nw72JMJzYJMQVj8Fr+q8vnXWzQ/4gGaIm9BXG13Tbvte26094RKiE8aPEGhKi\n3Rt9P3xQl1sP/CbRH+Jfnzq7MxwXYApT1TPO1rYE0PBKs7MUcMhsSZftsOuz\nChQKflZKquVyywIXJ62Hj4wxdAqjBkvUFKqlIWF680vrogYlNCkZb1Cwbut0\nqcR5yERkfXYLGx4UvnzaH0/ldNjFIxwPZnJkTan7BA3zmXFEmGb2Pw8zdvkF\nUwx79hq0n8F1hVsV529IKgC+xqlPbDXOHQxmw93SR7LS3yuMjcr9pYTXDQ/6\n1z6dOAyngZYxm2Tt5WcrRt79AN29DWAzqh4XH3SXl6gQZ+ro98Y32X8psqVs\njRa1pfab5b89B6gKbdx/3ZALPurdaTa8K38h25zC9/uR2GV2uceUY3RJcvh6\nX/Sp\r\n=xE5Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDs//z1XE0DcukJWHa/+mk/eSj5mCtSzwSzs+muT9SotAiBB5ZNjaRcGkGhzd9rQ/VAgLxizAx+a/Sb2hLplVPWckw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.0_1598961631583_0.8106661380170148"},"_hasShrinkwrap":false},"2.6.1-next-1598962053-f36361e6.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598962053-f36361e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598962053-f36361e6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598962053-f36361e6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yNAoo9LyqquwnKjOr2VaCCi5UGumkMJu1vL20oK7MMobQLG4Udhl3NWvl7shcaOUe3pflCvfjPr9Tn3tM0ZviQ==","shasum":"93efdb8a06e83af51616c0fe3515c65d1e7b9a94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598962053-f36361e6.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTjnbCRA9TVsSAnZWagAALN0P/19dtDTUBi4eOOriY7AM\nVvpVY5aXoJkMeZNGVrdyR89J8RrS+sgGtqzZM6tjzOeKRAXn7IWvZBgk4Zew\n0ZjCypN1nhCjxc1azDyN8GrFjRhCc/XYjQMS9XjXBjLXtYnD4J98hwxHBuzP\nV5+UxMlvsfo3VKEorQQRKpiOxoRPYlzurA0pDESOChS8nTX59tXq5L5/890w\nKrsU8oAftal3j2AV2ZPETfXBaP778m+9+vq46d0T7Pxb028PiZLKA/sDBI45\nLTVbBjf5L2zDaDRrweJJ4GjWbMfKa7/dSBPYquqZAdKhUCZE9qp0XukJJdGU\nq6brsp5AgEe/GCgfKoETnOJIXfkvvLU2sX15k0b0Aqned2zlHcOimnqmQ8X2\nAwg59BwBZTe4DpiEAvgVQyetn0htgmrM3WjSssb1HUxoeyc+auzcTa6J53Ao\n65IPFj2RpeX7Ck97lMJAVMpx1ttQFQuIYS7e6aHe8dJQ5Dn78XOZ6TcPE2fh\n78Aup9M5YFTrI9p+Q9DxQw2Mzf7eUW88uD4pfiiaVU3NiXvojdj5IQ2Uj6sN\nfqLUTD8Iyo7b2F64DobZm2gd4bo3c7a6bbct1iE16Vdl/FGJAZHezHA7xLvz\nIZwzeuUCqAgSKL/xevanNAJH3eYmxK4NOBQrjQME/Vx0oh71k5hMj0KLEi2b\nZZlp\r\n=cCQX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAfmc7iebtMLvgqBAPHvvYtIVJxBx7gMLgMGxvg7V0zmAiAww2Wbs/zg6IG0d+Aoxew2BUvKyIK+O/8aYOsIoA3JSg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598962053-f36361e6.0_1598962139375_0.37677663553461893"},"_hasShrinkwrap":false},"2.6.1-next-1598963255-18e69564.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598963255-18e69564.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598963255-18e69564.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598963255-18e69564.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UkEd1nSwrQ2sqejEBGvvLUz0JWjJ0xfFHNWwG3LxpiPmWrKQ1HxZNJxv1W83m30VljK0ADvJBkKcDJRfSEXt3w==","shasum":"4ba55050523888fa43dfdd4c91a16bcb5f0ab121","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598963255-18e69564.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTj6SCRA9TVsSAnZWagAAPjcP/1qvyV+yNSWbir3c3t2e\n0aBT9NzN/4LHfkZcCfX7E9YoGwB/9cZCpvsl7ImcVB2Di1PAwujEKB807RrQ\nEOvfdeMVekOHqGga4YcJkVwJ97Ar78RX50tDqKiDcF9ZCLSlZOZ7KpCkxb7V\nqDs3FVRJqd86bqHxZFNLFPKW+2h+JGWpTVpg7Z7iQaouo58+0F15ccaMpUXj\noELCZcT5hU7snwge8i/ybEOMuQTo5LYHvRtdlFZKVs7u586/r3whdtplcyYI\nKyLsP6ECe6x1eoW1fpSB9mu+A0bftDvRRmlThILz1tZobBpTWiDlgKdQwEfO\n6INOf2B68AaPsSD4APzoSP2lH0JVo66imeTVgF54/ziqUlOMW9skZaKpZJ/q\nrvyOwrcN7hee1hveyA9xKeCq5+0KCYFLq1s14IyTPc6B5TDMilNKpJlFdt7v\naQW2d924zcM/urKVhE+aoyO/lQHzxBwkt9BFvA2g/acv95xNlT7HmGNIcAd+\n0u/qOl0Ux1x7x1QX4l2gSbWVLJLFN4lCp+Cm8yqnmt6IAEdhIEeuTXy8jngF\nGOjRZKwd4OI4jqaGEYry+gUyvEjjf7s0W9y+S3RPVri7R3feforn2ReWye27\nudu8znt0/UHhPclxCRTqciJ9uySZmPNsw++uXwshyBHyRp9QfKX5Jy6z0Q1R\niIta\r\n=RDkJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAHTmAQG0+IWfdjceYwCQXpnnQiiy9gBwX7x3UC4tuplAiEAyY9PzmC+m7PQaHcgSW+/UX03Pk+iObq23JSkZj1I4Io="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598963255-18e69564.0_1598963346466_0.7108783300615329"},"_hasShrinkwrap":false},"2.6.1-next-1598965142-7f2f4f80.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598965142-7f2f4f80.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598965142-7f2f4f80.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598965142-7f2f4f80.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Nj/r/sjl4CGGfm2IqDabf3BKO3nparzDsrpS0JkZPOIyOdhFr9vkac5g7uZqc/OebLM0TpNjsE8NOhvogytFlg==","shasum":"5410c8fe3a8c485b34e1994dae0c6b88928df03d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598965142-7f2f4f80.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTkXtCRA9TVsSAnZWagAAeXgP/3uOI62QvfpVWyttaLDx\nyjPO9FOXxqUQ1UJ4LOVA7EdZuqB72JtiDyBKnC5Zz5KcMHhvW/OfiXUD7W2Z\nFFpWy33vHT/3cVss15f6q18OAAFbazks7AtLR3fLEzhWCsZOVBxYml1RiSl3\nC1T3X6aWuhY6HKG7INInGO2C0YBgpUxb6ihPSJkCXCPK4r/xadlCAxWWRM6w\n1lxUll6cwI/XW1Iej9L5keCEaL+XoGjsX9D2zUayG1sOHIa4bodtf04Blu9m\nsFAEicQ/je94dYz/LrZrHzgYa00SxQZhom9vRw0E24c5js/BqobLFjsCBDjk\nFf/MeFc4Yy3w00V1beS4dp6oFASOst6AyjQJFs9uyKrZvTcJzJzW54sZ7I4C\nX2lAdMpBR6a/ZbS3xOrMPlrwi0WoUFzEsWHB9SVXVBeeW0K0PWKW8ILmBCQo\nOKw8v9sESz7k9aKwwnib2ugIl0OjltJCylWY9oVuok51hgrEDqpJtE2Pq5o2\nyKbGwnDAa6xpt0T3TAIWqPxcQsJaE+ve/zQen2JfA7P6dqOezoXuR8RjpEaP\ng0xV1pTI5sHeWpN+2xOrmav2Po/6WIeScKlvQ1jDjmLG0iGhR8ezif7sGkzi\nP4aq3VzL7xatrPAlDTBeXV7ui6QoEW683bvfUvXNvnOm1N+WdlYXC/dNMPuV\n2Ri/\r\n=QRHn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDpnICiGIvAVgoM2qg8TAXS7+VuOiYqLO33VB4BWLIoJAiEAleClXU5CcfYV/76c/0Q9Slm34BEtfaMJbNdL5PoxexM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598965142-7f2f4f80.0_1598965228557_0.9676263552277953"},"_hasShrinkwrap":false},"2.6.1-next-1598966571-b77eba58.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598966571-b77eba58.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598966571-b77eba58.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598966571-b77eba58.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2QajCNUm/Ho5asE1nPTBRViOLhmjmc2RgETIPipQG2DmtPTOh+rCoZsxeKqpbk0hXvLUPA/MKIyTgMxnrNd3Vw==","shasum":"890e6cafe23ca0316c7ba759e0da4a06a2f7aa63","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598966571-b77eba58.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTkuBCRA9TVsSAnZWagAAwe0QAJIwTLTkN1DJjQcQv8ay\ns8XDHjDnCY8pU7mepCC6gkFqDocNvgCEKqOoXd+zxSXuc7MkRF+gfbGLkCgz\nKuBXtzEwtKWGq8odTyJWjzCKFlnzvG4mhM9bnXMGjr5YnuXOV4IjgV3npx5M\ng5Nq2FT3bLgYK7u9CZm7P/5wTYgS/Dhh00ZJFcuES/bOZhjksDPyVPdzGqrr\nuktyV2Bjcg97hfd8D/89yNLHP+3fXV29rXvmgUI+5PqncOyA8XOIDaM45yX1\namHcpPiygOpTSUSnTTQvxPSK0L/Qm8cSScnJpaNPX9jakkQsp8xwyDah4SHS\n4KcD3jPrhi+rCln9Rk7AByxPzrrcGxnCrcLvM32QX5M+4IiZ/Lqk32hU9Zxj\neSE8IvL+U47Ki5OVsACRv6d/E+gLPv4wNemy4ETGrI8TFudCh1oLneSNuqxz\nakp+M7kJBsa8qhUE5X+XIqa23Dci4p1ujIwXcXh66burw2LKc/hOE1T4WAdS\nsee0g5AC5cHe1Aojz5TH2NnfBY3WogXTaxHn9EJvP0QK5eZOeHg2KJcFAN96\nzbKqKgFg7ckuoGucKxm/bgmXX0GRoD6yp+Mc6w5Bu3fv+VcPKcbb13c/oTEZ\nfgDb6f9Q3pq0OSMhb7ACcdBRz5MyITe8tH5GvEqsR7ulpWH3TzpyAWXHMB4O\nRKi6\r\n=S8P9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEyp52IgACpqCs9mW9roSBVPh96AKxLBDg3VKLSWFE6gAiByO05N3VSxEmLfx2ULg4IHMzyghcOZlcerDnugpU5svQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598966571-b77eba58.0_1598966657396_0.29639869055135337"},"_hasShrinkwrap":false},"2.6.1-next-1598971739-3e3910fe.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598971739-3e3910fe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598971739-3e3910fe.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598971739-3e3910fe.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7X/25jnAcpZTzQBkFc5VqvIsbsfjf5WlHprv0yuikPTm7kpIm3dS+MY/YANL5fgsv7S4ytiKBbaTHfflnrJcUQ==","shasum":"e43c19f71b7a86541b8e66fa818101cd2fc9f321","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598971739-3e3910fe.0.tgz","fileCount":56,"unpackedSize":104276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTl+7CRA9TVsSAnZWagAAJpwP/iMGoieQErYd+epv754F\nAZh8KUup//qpxZh8VWj4Vfl5TIZf9oXL6a+wkU+tQS5NGnNX1IiFvLFFoc10\nWarn30gGa1YLE5Lg/aZ05iQ1DGkU1lPQg4K7Qta5nYLOtH5SLMdir2QzgzI5\nNq1FZqwDqzbjGmOUOGyH94XJI1EULU8jHxN/1gCR6UfQdPFoqB/hypZzdYyy\nnFX9MxiaBFggUHIi1AYBtVZ1aYFFcp46zaaTUR7X+DYc/yyB8DTS099bz47C\n0rP011F9kl9O0c7MvuJjOaYtde3IEqkfCZwhQvKHvbs+0UurAa6bxLWXWgmq\n+IrX0sjlLIQSjDNNfGMMvB9rolPC7q2vnqpNbu5q3Y+7HmTLVJiuCETRXrVI\nrAU8u/JaU21jU/fE5/pclpJUjNMo+SpEzQs5AplzVD8XPCaUBK1hO3obwQGc\nIST74HoIjfthxn+fGOStsIHI8dmLiHkpVtF9Y7/010agg9iUDWzCVwqgEA7o\n1n9CaWBF+4cM096D8pVN9dm4A+N72wqkXxAw6nYC1LW7jT/axbtK4cVNpGeW\nJqnBoplQzO4O+qAodrppxZlKqD1I8RNBXaHHGS8F9TvL4buO/EWydlbwi1a4\nQOqe12qFLwoNqQxB3AaPRINLNZ1imcS6RHUmTb8KCmwCPRkbv2gokdlGEd0h\npBMD\r\n=4mNW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDerkBoxjjTULoFvd0nC+VnOHGLQEVbCverI2QI87xCdgIgF7DCC8HZirCUSGG2qz20dIw8DYvascMO3Sxu1KieGWQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598971739-3e3910fe.0_1598971834613_0.9056077190592156"},"_hasShrinkwrap":false},"2.6.1-next-1598975124-88e50e25.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598975124-88e50e25.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598975124-88e50e25.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598975124-88e50e25.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KWfhewDxcCQ6RtLUGMsmoeru6qwjjddT73h/0j+hCzJby/sV2qacTMPUHqBxWtaI213SSspCUP5ad90z4eFtlA==","shasum":"1c1d434d19524a48df5dcfd7222dd9a7f447dcef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598975124-88e50e25.0.tgz","fileCount":54,"unpackedSize":97186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTmz1CRA9TVsSAnZWagAAfsMP/1h5Spn+ACTmiApdvmJQ\nxo6LaKRDs4jPRFOBtmgjEMcmpq0C7DeJpJfCB18xV13r8OCL60OUqso/i060\n6rQGIZEjZUaXTnyCRN2+T9kGSAF5rDCxYBaLWj+c8NF2Er/WbqtIkDp/Nyre\neSzXmNIi/zBLq+40hVrhCgE7jSf7LsAYoLdwMRHtf99gLSx8Y27gZFH0/G7r\nA3mb1tIgxfKdiiFMbSZ6shL4Nhyfospg8ru13PxoVAU3hLubKxyMOA248Ea2\nBrvTS8kXoUSBaZ6PJ+PfEi8VrUVARpjVs6GNuUNYLO24Lb6VfLM/2ukFPjBv\n0GhKOoOv8fdjHamjIrEwDPKBHLJckQzk/fnsvuwJJ2bnDu61H8RnWsm7ekgo\nXoZ9578kiPpzT8EJZUHnDW5wLXhGcAEH8iIKZHYJAUNvusq0tU/JEeDlKk9Y\nnmI8YrvN5CBq4GWUmaGigjqLmoC058TyZTkE2P506WDvgkTlZEYVj5WizHNW\njA9sHWQwdTLm58WGaGVTa7jGwm+k4qgQSSWlHbTcikX4D+yp0Hz7NUJmOQap\nQDvlpf+ge8JgPfzv4mjesL4jzLx/ikwEPcQl846lS89Ju11pX29x2aXC1gdf\nr2JGV0iNCceuGkkPhyemWCVzceoiYw/qzAXw+DX0VwE1DQM1bY9+JlLSaykI\nRO/J\r\n=txqX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC70R+iLD0I1pr3EWe7VgazjhS1M2MtaBvdHedwlCuCoAiAJdA0V0ripSpFzi4YOVHqrtPjYYGBeOfGly2am/9curQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598975124-88e50e25.0_1598975220755_0.5985341852424211"},"_hasShrinkwrap":false},"2.6.1-next-1598978302-e688ecd3.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598978302-e688ecd3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598978302-e688ecd3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598978302-e688ecd3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7kL5rMZBa/uIzBXSWqOr8fZYAFKcTdY1xd2vJp5Y/vDCetH/my3xXYvSGpUCZ1AWTyLuopxzUSJut1bRmZZ04Q==","shasum":"d10fdbef999440109964816a64df251b277e4700","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598978302-e688ecd3.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTnleCRA9TVsSAnZWagAAzEAP/ik9rEkCxUnBqmQFDUGt\n9LQ7XE6KlpwFpB2DYb+wdJs3I+BDrQ+6jPr4aTo7jmUeec5w15LetcEhzpEP\nKLqZR13I3loaJhv8MiumY6vCVy+8KD/unsvwYxHudN0I0TPin7AjWl6hi44a\nWuFHrOCotR42r4rPmWA2vjT2DEWRc5VkhbH7QzqSj0p2KWympJgCD22Bww3A\n+jhWtuUaa4RpZRRnmUO7WR7NgmrTJwmz8cRX+rTZwkHatOZcV04Qq8ngUBmO\nRnMRD6yJPg8YQCa9dHSV/ebwXzKENEVgfTqgNm6U3FRoc5crqcH9aFuI2FyE\nq9r2kHDOAdF178KuAPhFQZ3XO47j4AkKq6PmBTj0KODqmhrkvAaNp454hYrm\npVXTr9MUHEXkExf14Wj1jwbQRC+2IDJIKScj4AAEpJaR99Ycgk0Zv5K/UVuj\nbdqrvfikmUD0iEIs78Q3BfWDJknNtC9e1klmW+A6yfjICUSKNXLGvttLLeVY\n+esKycIT627IyueYePrPPGNVgEnhPnSyWvpH2g+jPSCH2XJYuKfI1cib6Sh+\n05nFqW40gbJqjHwII6YBzlUDasgETgIOqDNMfiwMJc6mHPJzbe8IwMaC6kyo\n+3A/6UwZSXmnIIJYHQ7jHZsB4B6TGPsbYOm8k70bZzAoGs/R8bubldy6ReSC\n4PQg\r\n=6KIK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRTOdsrA0wm8WrNTIE6aNUQvDCHURaWWh50anpqpXdswIhAIKWP/kQuB3N2rfdwE48pcn0GDZiq5GhPNolRxBJaKec"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598978302-e688ecd3.0_1598978398123_0.6685195505051653"},"_hasShrinkwrap":false},"2.6.1-next-1598979218-c12859e8.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598979218-c12859e8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598979218-c12859e8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598979218-c12859e8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-V3xNLR//IemL2V3n0o2m4bjApjWaA+M8HTFyzBw4xpsbSNjd7zjXrV6gMjTqCx2ZD7f53jpssxzJpepcmvClOQ==","shasum":"660969f7cba005700228012434b46488bc7bb411","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598979218-c12859e8.0.tgz","fileCount":54,"unpackedSize":97186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTnz7CRA9TVsSAnZWagAA1s8QAJuBX+jnzhNrO4EtixwI\n4oThdRSJXovYSxG8y389rUa7JfT1VdNFjnqFs0GhrwzkNxmd5dp1L6xB/Gu1\nmzUwpGzZ8YfcctMAMLqlmHQsa0dLYhuRJYR0XF05JD9bJMtVGaS/U+89BvhP\nF6i3daV2CN24YA04Y8HBUJAHq102/yg+18AUb08C8amhZoA8bAIyE/I1AtrK\nDq8M5UIwFwldJOGag5hSkt4fY4x/bcug5SyLrQ7Py0Y2Q+WUvbSOVwG0Rpul\nXdfKtChOy15yPYpzQ9+5xJQxT2zW17ipmOM1Cc27nq7h9da5zSKnzK5C6eQ+\n9p6fP6ULpmtj5lrrU1cAhKhq1bl+/+OsfeUIu/PHQuj4FfUOFQKP752knONM\nW9V72MZQNCltt1ioq+dRAH4FK0JTuZdzA8CT+TqmwWIRWmUNZdoS2iW8h6P3\ndeJbJXxW+D5SiKHbOg7GoQXyFUTrNmrzTG4RmVEMq3vX2GzqEkLkrWwaBVoP\nXu7bxKrNBGpsyrtGcsmhBCc+6G+DQ71IFJrXJ5fcVjHDI02bVxu7uyR719en\n6xZeWA7DKJFOaeySKbaAR6pwjeO+9nU3GZ2IoeUwEhJ88Tu+6Y/WTyItdj29\nGJGM7sJiVgJo4CqfT/1FGBVNhPqOY62CDTtirTXR+8kR9+NIcvMYgDDn5Kq4\nCK67\r\n=5M6i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB/mDoI3Bbv9hRKy4wnQGgr+V+lQ24UfDH9RIht1ZNTZAiAYGHNrMppp3gW+H5U3ZYelcXjOrXvfUjIJOQrUrL09Lw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598979218-c12859e8.0_1598979319816_0.3049685411790666"},"_hasShrinkwrap":false},"2.6.1-next-1598979574-da2c3632.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598979574-da2c3632.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598979574-da2c3632.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598979574-da2c3632.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Q3cZniPTKwDwwA3g7AiHj5WMhRyDGC6HYWFi5sxvUBAgYdmT9jYm34qK8o9SSlWKt4IaDy6t1+4vKEkdJW6mnQ==","shasum":"5ed65ad0069108d38e94f84f8585e8a8ed34de6a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598979574-da2c3632.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTn5QCRA9TVsSAnZWagAAK8wP/Rke4KMw0kbDXFv+O9pw\nlDrrglMyc6/TSDodGj+XGbTIRERMj3qHtkvo2ArLkFkH6dIvqDElKHs8haFo\npij368pwMZe6UIrYv3qrkxJ3KSc9epsFpRnv7HuuqHSjSWNjtFSGUQgAk2X6\nfzAXsTjmLyHiIDFSYNRcUMxBXjS26y7+sznhqHYCaW3BU4L5Fet/Kpu5pplI\nMC5BufAL4D58mxBHq1AhD2lSIhZKxrfqbyLVy7Y80Qm7FevinMPIt2UYERaa\nZHdoT0fohsPviIqVVa3zYwEiUGvJ5paa1/nk5jxhyBl80YBlbD5B8pim3xb3\nhrrQUrGUe4y1svl+1o7DP3G3a4zbfahGsppYYNYm+20wSoxw6nftXC53nyZC\nHz/MUBXg5F0QXgeupsOGZs9Z2RhjoAqVnpEy1EArDaMC1zWUrWJj+3+2km23\nAF9BGrrDAJxfevTfDDYya6Oyl72ExZpTyOQnZ2Vi/bWehjZ+Svx8doTriR57\naT4O98iL4XEPJfP9K4EUnVq+Oq8PGZFlf25B8u8h7o+UDzWrVlmfZvG+5FGZ\nKpC84m66kpGpbMyipzPS1y9R9Pt/yZ50ZTPkLoKn0iXGDeUd98mWOLukQN8n\nhHRdLc4OmSXzlUZExdq9zeows0njPvulwctqNnbr+9wwKM6gt6Vgt30VBR7x\nNQuM\r\n=p8fF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDp00gYAQqWyPsxsuDRFtfAoZjeB468eWOCUuj8qCgvsAiAQd4X/m0YHxPn1jhhdFIXdFUHau8xTsaG4oLIcWcB31w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598979574-da2c3632.0_1598979663583_0.19008408759728646"},"_hasShrinkwrap":false},"2.6.1-next-1598981075-3b382d17.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598981075-3b382d17.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598981075-3b382d17.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598981075-3b382d17.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CPHgpHbRMAYVX2NS1h6ucobO0kfN+iPX4tAxr4EJDWvGXcJtgDufZVE8X3mbegLeRHXDsGDHMurj5wDvFyPONg==","shasum":"033e9a6b6b442b19a54f345dd473aa7b51cefd95","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598981075-3b382d17.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfToQtCRA9TVsSAnZWagAAwIsP/jaOM3MTPk0SuEonu0o+\nl4UM/vrojwOI+BX1Gntw+3hVZdX62lgszx4uxalAXy76jxANolnkGpoN+6B/\nsMn88T52nBpXHVeVdw990eUAVioCqd7bSh9CQHTyRdCRwGZu3cY7R1qZydH1\nW2+i34XGsoIF3BxswfoX4X0drCf3TipK21M7y5yjJsrEpChG4E5zAbFgI3xM\nq4FoyhgtoZKh8hZnuAjqL5vYM5Z98ZI5wU5augd6nh4kzrK11WTmX+rkG6YW\nDKBpN35utJnzWKoSuCaL/EWGMRUiNZx3OrIIq37qwv5fFNmMCrdelJrmGx0w\njcaqo4GB/HkaRNI67XGE/JRD8uA9XA8dEO3wuUV0KaUfZc8OvDQnNAJI+/GM\nz7JvZw5m4M3oCFf+Dq5TRy40DkywDbxY9MXP9ghUvFnuAjFZJoa5a1zqUxAn\nIceVyinokgLQ2KHt6lpKYJt4lcjbrYrpn4PmZ3yEMAZAWdwsJN1SosT3h9SD\naJTKwRg0TpEANEnrheiFh3AzdICQ6x3+SfCM+5dSSw5UHCBztF677f1eb6O6\nWnOto2UZGg1TnV94QxMe4kGzKpIh7GMjtSnbW8sH90nMW8GNy0jVZFJWY5ds\nH1hv/S3Qs70WkmprpTgaXbBdCJUWFj/V+2TCVcZ/rDDIBUw8Zoh5C34ZcB3t\nKkaG\r\n=BV9u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGmAD/jbz8ShZep4AqNoGDACyjJnit9VRXDeCBVeYZ1QIhAKoSPALXdEsrGemJtBXyCUbP2H4pLl7tBYqzL0IIZ3z4"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598981075-3b382d17.0_1598981165287_0.9980623097987205"},"_hasShrinkwrap":false},"2.6.1-next-1598995425-104e2d5b.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598995425-104e2d5b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598995425-104e2d5b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598995425-104e2d5b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2fQkjcx8xPi5sGBH/BLIUNiIVYQW61QYTlXehtC6qQQez9AiWdrxD0mzay1unuTqpyH8gCW2UKea9FMxYrulGQ==","shasum":"94deec5a81f801c5ae8efa9a8a7076d7db86a556","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598995425-104e2d5b.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTrw3CRA9TVsSAnZWagAA1dIP/RTi7bIE1f85DGyy4kj3\nKO99s3JdkVBIcrGnkGRGXWSUQRu3qYfiuiHUQZAF3UXPOrAxsG8QiszVOU2i\n4jmT35xbwsGvaWTB19euDhndoP6cdeEZ5+ppmK1OfwmhNI86KCnTjhyJfY/W\nhWCKfn83OnliHrRrivlZzB2EXOFG/iLeyoUaUyF3VZZRV+UPniQpvYZc0nKk\nHXKCf1Ki5N9vP0vfXiB32NmrXEOVrPI/JbDNiloGxwzOXrxT5LyMJ2x4fKFe\n4b1+aiz2itd/lUy4Mof8TKt5xCuKNPrUT9vBnSJTonvvfJoEpm6Y8NCIIfq/\nihQISxu7rKetlgRq7ZMEiL+fnB+jiO4ebsi+p4C96ejpuVlMDcurwxrD6BlU\nCZzU8oGVlF56YaN0G17NpPVEoBo3ncSnxMTRvAtH5tpE24bjAcrgOyksGPal\nECQXq9MOGKCaRUmd0WSecS+RziTqJ9D5rlzOvZaRl37y4GwwlIPa9DnxmK+X\nDJ8zEsLyjZ/zG5AsCxMw141DNH+IA2GvG1ZfA5OCQjkKB5Pi7PDxYB0350jI\nbau31aWLAuvGi/dW2wqBs+4gjaf33zzmD5CQbodA0f50S6QdXbOFAZ5NLn/T\ne+flYrjCxc6YKSzPMH4yGTZkA563pYu+YgTFp9VS6Ws73+IGzzlw9GdoJjuo\n92ni\r\n=LG7X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG2K006khrL9bHExArArFYg51Zt88bhb4+CNGbx1CHckAiAb79Xzcj6VPLFYMJWD8TGwRVE9uMn5NfR8LY/dxDkefw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598995425-104e2d5b.0_1598995508421_0.5751283668695266"},"_hasShrinkwrap":false},"2.6.1-next-1598996938-4e9cb076.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1598996938-4e9cb076.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1598996938-4e9cb076.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1598996938-4e9cb076.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-urWHVzlJRvIEP5EscmaawlXnZyyrzgt10QyRqZBM4whqWB9Fz9cq1jq5Y5+/9q8fdtB3L/tgUW7hfjffKbXz/w==","shasum":"1821ec87f3d6ad72b6b46136275d43d3e9fa6c36","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1598996938-4e9cb076.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTsIjCRA9TVsSAnZWagAA8ZMP/3dFbm9HQdAOdqx+ZgjT\n7hUGvm9GgbsiJ98LBofSoPChBT5w/fO7sbMvgOKIxuFTUT9kH8OV8oERi7L7\nKUUR3TLrUSg/rmP2mqT6cf99OdbAmSs5v6tyXdXMl34Ua8vDaa7wLU5V/CW8\nSaq0p07pbzPQUuC31o9RZ/fB7iErleELDKSazH80fcfrPfsZj7X6gUkfzOK7\nXEknyGSouIJt3jNJ+jJqX4X1kzqhXwSfu6s0YCZme1LsBo+Zn/qOWQsgufrv\nngiaUgbL31lfIXDo/rdTzouqemkBHY7/qHT45BP1MVmFZ61U1lE6+b1MJTXI\nztgc5RgZaVaVRk1UiSkKDPUHnbnmC1HJDk9/yTEl4EYTUbNUIBonHeHjyhjD\nS8s/q+I6OAhH7izySHFEeQV2qeVx0iLKUQOnOJpGbck4AuZ8Y0imD20xdbBn\na+jDRrgK/H7flfy8v4jMndRXvqAgQ3/msX96YZ5kPCwzVuBBPNsDXbqu/zS1\nEkfTHauLwdEvp91PMLL6wzL+wPDY+yKbImWBxvaALGS5iwZh5F/nC8GWoOHy\nU9sk+UI91+viPyGt9nj7rmEIwCX/Ork05O7IhUlP3FjLway4dSFjqORMP/Hh\ntQGxM5m4cm65bBAW22vxvGTilVN7ZaNH6k6x3GkrQh3IJjy5kgWwe2Ar/op2\nDCv1\r\n=0iFv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLx4cNt8mPqrVpgGlsgoH3ylUbGmf8iDMIpiLFMUF1BAiBIXSlyLwgKlTlGhBvSBs6eSwNKj9L3I7JXUmnbWJzHtw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1598996938-4e9cb076.0_1598997026984_0.5755426135248933"},"_hasShrinkwrap":false},"2.6.1-next-1599010181-da8543e6.0":{"name":"@xdn/prefetch","version":"2.6.1-next-1599010181-da8543e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1-next-1599010181-da8543e6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.1-next-1599010181-da8543e6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YKe4/ZkQF1QoBEHLfLrGvDyoB9ddEH1jhyDL85RFpVNvcG+9979xeoGf8fxvnO5sz48Gg88R6wNVO0DCrxQhKg==","shasum":"14431e16a731b448b3a255deb4ea508e427520e7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1-next-1599010181-da8543e6.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTvXeCRA9TVsSAnZWagAABogQAIzwkP66crP1tU2qGUne\nsGmieZLO93LTypUH/3SWAPTh8iL0M9Kff8n7dyqIHatT3MR/rpk2TlwLYyLk\ntl6ZtHq7rZrjlXRUHuetPrZ0BP59AT2Y8c5ZQl3f/Wl1MxNIHJsFWpeWD86y\nhNh3dkTWMMPtpm3EjX0tSYh+rPKyiShtiz/wi5gzm2pYOYl+kIikMSMN7clz\nwgni0inz/hFglLfQOYk3k3bm9vK+FxB6sRcSGsaD0ijwGqJHb14X5ll7axT1\nTjW5tNnXqR9DfHf1Ui02ckD7Z4oHNQ1ujd3YJFIzNxedDA/A+5VIw+pK2rec\nxxR77v1w00Q33KAxVPWoNfbG1cUNo5VECILedGuACFhqjHDsXYyvZkZ6spoE\nnNl7fkP20UE2kA4oR6JJ5V3ZbMjZWPAtHBDRrQ9J/Eh+yVXUfOXtBYrqqrNA\nhiXKz8mn50pAJP+v3EPhS+2smD6+0gkY/toXmQvxa1FnhNEJPJJuwjVlSa4E\nSKlifeDpjaG1ZJH5gAoWsAvgtgXG6MaM+08zI/aPWyqhfABNeq0Y0z0WbgmM\nm6ClWwESiZsXt3X6exZgnFVs7RgslkSlBLveO2Gfe4QXukDsmWGvwpgzLUlZ\nRj2CXlYu1QAmbhM1xO4Xsw/PK3uQZ04SIMK+XGCXs7w6IacyH+csJG+Koj6t\nuyG6\r\n=mWfy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZem0NgPSDCdpmDCIZ8wQpanNWeVo5jBWdSxdRQTBKKQIhAL2aR5uogCdacNf/utqj2YSP/Iy+ycA/6c6OIHLLYJGH"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1-next-1599010181-da8543e6.0_1599010269179_0.8604808635344665"},"_hasShrinkwrap":false},"2.6.2-next-1599010382-097b999c.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599010382-097b999c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599010382-097b999c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599010382-097b999c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-m+qH0cyIfliCPBmwabkza1effW9GmTi/Kwkkg13JPjrYweHb0zsB11k297JxjLcT6stcPzMkFAJVw93Ll9gyGw==","shasum":"392c4632221afaa1b1c9f6a4b1791452474f39b0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599010382-097b999c.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTvasCRA9TVsSAnZWagAAKIQP/iUCTefn10XPVmw9dm7m\nf4hsMliuJt+z4VjHsg6Ihb6a/VmCmUVy/TabM2JA83Y8qOc3UQvj/vZG4G8Q\nOqibtn11ibnywK4x526Bdoe9fq3asvTVSodwTaV3NkWqeB9ppeKa/9G6AnMR\nt2RESarE2XTwhgkl0UIYhwTUS/uJituzfSg64nP8F06epj+nlbafl4X8grZe\nhqgZsD8Czo7hf5WIi4xH5aCMtrLEwL476QWy4LOe+kPDL8xzo9ZVxpBqLVug\nbLrno6RpWUvp2mR/UAhKgTNLsafBa+xxAgoMIrqstWxooItOelg+Il1cjFsS\nxbXssWyQLtXPMwVK4CBLxCwkLaOuhTsasnCCoECr1D7qkS7x5zdywQ4btua8\n/uX7vRb6l7S10cfMdXpSHkCs08NeZQhIqCEC68QbjKXdYxcr0PxIZpHwbgce\nP5t6mgxO8KAKB8aPUfEr2XMViTZ8wiN755W9B29Zc0QZuK0+gE+ysdSaoh5a\n9Z4O2IQNDqbo+YLe5Mp6pggBEGK1R1zTo5iygy1xZYj+L8f9C+nmenkmIdqd\nKWWPqdSgVf4t1Zfda2tl/Fha8YtpLcMn3tEBIymNb3tSmYaqdysTdH2A7ZqH\n4Gq3Q75n6V9FCIabc/oQ9xhe+Rcmlw/0TSVVDygYh3045S0Hk5gy3UmQTAlR\ns080\r\n=M9k6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeegsiE6WaKAdUnKH6mAAEy8ZKA0FGBfH4hNqkKZ1GVwIgSPNhtRCdLRH25eTTrd3vhHJp9gSqEqOgPQ0aF6qml3w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599010382-097b999c.0_1599010476458_0.9366262939072287"},"_hasShrinkwrap":false},"2.6.1":{"name":"@xdn/prefetch","version":"2.6.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.6.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-l6uwG2dYhJLnTBCzfoxrFZnLEbH1fVp9jlnEHgCu7hLXA4TkRXW9N1b2eg65cHvswVc2tuJNE8D1ClMGEpPAQg==","shasum":"968e6e184cefdfa3d590d495f1b0b7a4c92bb59a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.1.tgz","fileCount":56,"unpackedSize":104267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTvynCRA9TVsSAnZWagAAcMEP/2DuaAnyY+efE/8RSdyd\noEwNOZe5PiDO15+MO7TByAtCag4w0Wz3GE0ofR8DQJ+qbi6wz87tNNTxopfU\nFGESBKLxXqJUCzdRQUr2GNLjHC7/FhTLoFV/92VGSmc1QftPOQ6ke5RqbS2H\neIF6KulR5+CEByBfZNBR3/eU05V4Htlhi8aGcpjT0d9669WlaPRffQXzPdaG\nAqnLpbF7zHXoJfjJ7GmZn8m+hxSlkouUw5zEjfdpTeKIVqP/AwC3XpMibI0p\nVQGz6O1C90cC0RIhPDQZT1uNY20VCL/lhV8ggdfMqbkY7SfMd1o45y0tjWdS\nQSpCCsns69ilLqLcKv50bPDJdmWxoW9biLzC7IiGVHROREu/ScnmuA5s+yeG\nbVB5XJzcLl0XAsDSRMCUy04VLqIKQqgy+cwpXPuYPHBMzSmQupad+imY6Phz\nLWlA27vNcOm2D/J3UVa3mFSfQDMCHXnsOQdrwiUkJM+5TVbkz5pJntCjLV/c\nGDm7bbU0chdn/KnEvgyazjTQoX184AVoN3Z/G7bR7ieRgx+LBbURAKtazOCP\nqhep3UGcyIjg6UQI/+YGw93FY/N2Q1NBnMABrJy9F4GKtDHDNaKdljvJFjZ9\nXh5Hlxs733AQCCBRfe8VL3gWjBnwN0vAxsDqbscLZI3qaiByezTxJVVrkZkN\n0+oC\r\n=3DvK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGpvRfOwFEy1MgPrIbntDu8AT3ow02kpbMpapcR5zbaMAiEA//7gF2mIKgFuNMd6NZFjFfwHxbNqGYpA2aTCTAsUjL4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.1_1599012007439_0.8489947227977479"},"_hasShrinkwrap":false},"2.6.2-next-1599032623-9fb16d53.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599032623-9fb16d53.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599032623-9fb16d53.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599032623-9fb16d53.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uSyGVjDh/Jm7vlzGGwsZSUtOdgJj5HV7l9znKSyRgDfaauttd4nTUx5Q5i74aFW4E33tjq1zmPOjIjptPbAMnQ==","shasum":"0ed2b647022d1b5fd7ee49a1abc7ab6add58569d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599032623-9fb16d53.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT02KCRA9TVsSAnZWagAAU8kQAJsYIw71J5IMl/HKT7+Q\nU2LeE+qKnS4jRSXpOxwh8EpgrKcAasqerytUGOtxwz65KZx6NgKofgNNJT2A\nCn81nJUVMMmJoKOl3U4tqXf3X41wl8f3lmLPejJHxCZedbiZB1iozjwbxunC\nRzICvhuVssBXdUTToh3gvgSFh0BsAvmcjM/9GIsoSdrKmRbym/eBWdCfd905\nXmhFLqsvKEyJs4JhEFT5s6shjObVyHy93G6kVLPYTx/ZcOG76szZpEO3R9qN\nIFjFRlt3DkPAymZBYTrpn4kD+1T0VILwn/PNq0vPkPwloG2fHasq8/bPbm8z\nfHKyBIW+eoAsXWUOuXH6vgrw/K0cfX8or4f531b+2+Gk9FlD66uaorO6lPcV\nWDlJGyhb89ZUcRK7HOQnvwv5ZyGq1kMPB3WrWNpORnUjj3MnNGuqRepNqfh9\nLRqxokUFB0bkyxXG7ene1L6r4eXecLJ3e2h1MTR1uNdFItINk7/gxnNe4VRk\n3n4HggUzfxZnVSu7pzfLtwbsZBHXBgsuWNBhlMIec7G0aZQVDb+NH+wMJKQT\nUSbYYGfBdI4ZQYh27yA8l0O0vLPtZdeT+fsUmRB6QUldzNBGxgHf0W4Z0Rph\nFS4y1ryYBcMCsEP3N4QqCuJm1Vq1A6ib8Q1lDVLd2eqvJtxzyYMY7IuVQPIe\nJ9xu\r\n=wvK7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkXGgREiIGq9JkKreDgpwPfGKfvboEAuIj6bWLfcKcUgIgDiygmKGNmzx2iVwJb9Vad5eaT6wK22ZBA9zij0hkDIM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599032623-9fb16d53.0_1599032713721_0.041415622212394476"},"_hasShrinkwrap":false},"2.6.2-next-1599035817-2e06d6d1.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599035817-2e06d6d1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599035817-2e06d6d1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599035817-2e06d6d1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FSx1fIQ/9Lc8AkgZY8b6VRMHXQVGsbB+V4WauU2g2qu4YAyVx4wFVF/7jdwI73SYuHXgzcQg08OE9cCCQ084Wg==","shasum":"12c67d2cac4d4f3c89494c8276398c4a52281006","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599035817-2e06d6d1.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT1oMCRA9TVsSAnZWagAAoX8P/R+/JXHzKQmntHwGg+jp\neet0YE6yfzZlXO7vPHJnYqYz/GmpgmsK0OlnCQDD0CXq2FCdSCwE2VhCGqla\nN5xMFDxHyCL8lk40SI3RzHSTGydMj3N/TljxgM5xmudHOAgUXR6jTuG38lby\nRmxh2XJTy+qsWUXlVkz0RdmrTTWFNrJFrBtL56FNu6t77EQUOc0e2IkhLTI9\n/2VwXbenkAGgDPr/DHTFvvlcuupsW2uLANB6VrXuh2ck0DJx3XmS5x03hPby\nL9UFf9nh/8iDXLbHW55Se+6R03h7jylSB5SM4COB21gneH96vnHSVvGFgTWY\nbq4IPKp+vvmIQY6PEia58uXZzHzGFEVabTgaPQtY194dlicOXwy50RAw39LM\nyNpQtv1PnBwylPg9q3zCJpfbsH4tmOSUY4a7S/418cvavxmAutG1dtay0pHr\nYbVNvAIQZfkEgF/V5h1BNPHr2cg4IGHL3akQBhmq3HruF3EyJ4qNYnDf/dkw\neGvQeOA9bV+s4kIQ/PKHyPk76xPlvDf4kquXuzP9i7aVpuDtgswukHiSh39Z\n5iy0DsCmUG2ctaEkhuAefJvQbSibGSs4aF/P4G/hK7FrgbkFtYBaIjqKjLkA\nUQ7emypyj4TDMJTHyLmXeD7YdC+iHo1VYrc/AtOhtjIjnKEkUkd9rOuiEUTj\n0QRz\r\n=yOm7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCowOYLDFb6/EkytShKWfVrxxfB/e7W+X76nKmRFHGJwgIgFS9pY96Kb+mAsQGBmhY6aYbNSVl9Fdzuy+ptnrXqxxA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599035817-2e06d6d1.0_1599035915613_0.5767076912543796"},"_hasShrinkwrap":false},"2.6.2-next-1599040744-bf04fd8c.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599040744-bf04fd8c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599040744-bf04fd8c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599040744-bf04fd8c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RxlpAQd40NFrwsTxC8D56IUAIWkd7rtWgdsZ3xnCUFHkJWI2MIC+m+YSS4ppv4kN8ppDFt1lzNbgcB4jVf1YsA==","shasum":"a8a06b2f10bf09bd650d6319e470aaac88a1fae1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599040744-bf04fd8c.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT21CCRA9TVsSAnZWagAACpEP/3BNA4osA+O3A/KzMjjX\nWy07bh+O4epUj8MYqxV2CiJEbxsLqA7BhqpOvY2ujfXcmLaWC5XhENikRLcb\n5Y2mHl3yJyN/1Llc/bUe6fds5Z7DddLBFbpfwuuX9sgNWLv2SzuBrlaqQtdR\nxvr94hSokxfg2aQzvQey5Dtj5fVJU1xWtB6eAnh6MlWeRfah0BClyjck2gqk\nAI8o9KAhzx/Tdls6CY4q1ZOHUUYd/BWha3Tu47QIaH6/X3yzWAgu8wa67RvN\n6lwv8Q1jJSVes+LJlYbzekSoP3r1bi75nBJ9v+dOAjti3ozymsCkz/m/CaVh\nBblg1I/uRAN2sxB/Pjyl9ihrWL4mUHyjcmzFQ5ZHyj5UKFTD4fV329P/DAky\nNpXx/SaRPEnVOqqT/7hR7lxd5oQv6UdylBNTL7G1+5GI9j7ekhMvi3c8xPYU\nj8F8YyoJpubnG4KUN3SyBWPJc/uZbqfdIysE3Nt5oPs3PfhE0DwBZyI0LmnH\nBQ2rLdV8b6a/gY2BYx72pp7hggKAMQ2dWtXfp9RV+sSLJffCP5XbN70nd/qr\nX0c6/syrRI5W+dJxCAs7QlLOODGGtAdrruT/YYa/Ekawwt+TAVpDcOYIO21T\nvfDePtf+gdiuFiB2BOfTL9BTmAdqRS52lcg+XJeezqye7wPgcskeEgRhbdGG\nFWeg\r\n=LdNF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAmOT5dfIzrxyqeL8zT/aSzaA7y7O5h2w5p5tk8lIRMzAiEA+vOq8FcSSeZS6+hJTASQoDVsZ6zPTrtG/fNzKH6Iu/U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599040744-bf04fd8c.0_1599040834374_0.7933514938661859"},"_hasShrinkwrap":false},"2.6.2-next-1599041396-1f5e1c71.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599041396-1f5e1c71.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599041396-1f5e1c71.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599041396-1f5e1c71.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VZz+lg1a9b2J3BVq34OaAvf3XS+LAxH8p8D1VUy3IUtNUwSh9SOR0y4J7LiXV/7hiYVEdCKxzkGeQiyQSWwryw==","shasum":"94a84bdba59c553b92fc084a118365a0896ec81b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599041396-1f5e1c71.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT2/LCRA9TVsSAnZWagAACRgP/3lY6s8oERK/KiGoruU9\nHa7ykJb916JRWzt0AajYkpySvL1taFM1bcC3PG/YiR/zc/7LLr9lq21Dlt5Y\nJed96QTgRTpTag+9yVXTU4HPx7TB8ia3r+DmVyeyc88Kxf3DYLLIgO4PfP6Y\n7IrRoR3lnxrK0nDCTCHgSy5h8Eia/IAwSku5Gd6Ek9enkQ9gyARhYcOqPTKh\nPIaV9WHQX03RYdU1AoFPxzB0PA4/OSfew7B5nrQXzB4mwn5WmU3WoLzJ0HYJ\nfdeCnx0U05/dPVAj4PbcWvguTRq/3XpuAAx8wAMMDnyboNuKtv3esGXIwphH\ngwHadrgF7AgHedfIUSBRVjp1JzrTDZisJl19XOidf4fOiNiNK76AZR2F2XfD\nTBCaIKUtaHbfeEyYX0g4lqKBh4HkpvzLPXak35ItKm3LcAdAaHmWxN804awN\nQlAbf5HZl7wzQGlY8VsljaR8WDFdrOIdnzTJFSAnrR4haYyCjPI3T9rhwddA\nG17Zn3xH8wQ0IUa5qDAMC8mdpmiUuaJ+YdEB7iO6o9KxnXaeejn7TDS6GdzG\nDGtY1/cNS0ie5oc27EYBgW+aLTCOUequ4XPeEM+TM1Fu170m9nNpPGdGO8jU\nM25FXkkImAl1xUA24Lmqsn0z2uZh0AhrJN/SCaprtpJLbshx1coDeYU12dic\nWtDz\r\n=I5SD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeXe8I50cTfvZkB3u/chUw1otKOgfRnvX6Vum3XxkEOAIhAMpcxVJxLoUphZwLL1N6DNqKsaf+0+5tXhwHOQ5XdGir"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599041396-1f5e1c71.0_1599041482908_0.9855996831668734"},"_hasShrinkwrap":false},"2.6.2-next-1599057186-728dc0f0.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599057186-728dc0f0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599057186-728dc0f0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599057186-728dc0f0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YKrhJ/UvG20k1iFUeEhcvEsKm7vMWsUDAu13lKErRAKb8oq0lNZRNs+bc6LmLGHS0qi5NZX6rVTXtRhAsWVpSw==","shasum":"8f34bac7fba75cbe17200d1812ce4ed2bce78417","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599057186-728dc0f0.0.tgz","fileCount":54,"unpackedSize":97186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT62NCRA9TVsSAnZWagAApuYP/AosezexPBAfjyjHFYLs\nNBGAyvDkL+6rVY+WEoBKqyKlHvhfu4bnef005jtIw2I0O/KjRm4dZJi3Ddmi\nPaeh1+5f/zrLt5J6pBaI6qd6j78yZSTjM4Mp9KbDpw3yNGGYiw0190GyDmJx\nYVCDkuokyBMmJ70v00xifhDVPSWtIbEq6wYlpuIavrNNA3mbQ9OjiN1Ds8WM\nybcXGu1qFectTaV82PEBc6dCj2xuUech/CCrLh2sHHXnKaaL21fAOC9rpfxf\nwULksUOG4q4KGIIlsu38cmor3waDRs2GzwSjUerjtZGFXxAILQRsORpx+pKn\nEGeLII2Lh0CssN/bfk5KEnlbyqsV8/TOlaHNGiJmjtOxQ1+fjdjgpp5fiESS\nBCixbXxLTqUKETdpicwqRKCoI35dd/2LG7VUaXgug5dKos9+YoU4SZ+LHft5\nx+//Wb90UHxkWrEC7kL55Irw058ifuSNF2F7XmP/KeE/w59CPqPNvem3Z6PM\n5vhrqtLH3GDfU5RQYxYIEr28E6VwREMLRzzmM6/C0gJ4MNtaePgy2yeTb9go\ncS1Y52VW4XN0oaqALR6eYZ+m+cOjSkTnm5TZxMA9gWeGzQY7M7HmG6tpT/K1\ng1rRAHx+RMTscaW7hJi9KddHKz8ku9VC9u6ajxHnc6KtN8KTKEQwrqfctzCv\nZUUj\r\n=waxL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBw1DatLwuVrRNjGyTVx0YwwwExi+GHtEG9Gc/xU9Z64AiEAlba1n5wB44nxbVvJqeSuMVu4972nlF5H+c4CzJp0vB0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599057186-728dc0f0.0_1599057293163_0.6909315809106522"},"_hasShrinkwrap":false},"2.6.2-next-1599077045-93c1ea14.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599077045-93c1ea14.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599077045-93c1ea14.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599077045-93c1ea14.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-H2iBpdZ64pwLbMqkvfwy1SDyd/0U/knmx2e2mRa6qPFCA96qasD11Su/C44XZMpH1v4gwTAtaf7Z3g+BJJQr1w==","shasum":"ef268e934fb8b6fda73bfe30b70deacff2995f9f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599077045-93c1ea14.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT/sYCRA9TVsSAnZWagAAZwwP/igyyZk82wrW78GqTf7F\nyDpktsvaY0KB8bbsR/uYcJCNVCTYnIS7KRCSXzoJ5DGg6L652W0aOcUCWxvr\nyEhZ86geDG3HcL7tmETk1GY/z5iYstf1Q/gccGDxd9ZQvMe7dCYVzCclhPI0\n8iBPjahBRdX62WkEm33Z95ZO4SKedI93k5QPHK2dP46Jkl1JwQOUj+YwjCBS\nVZK8sSA8BZzCI688hwEtT9JSjUBvuq83XBUfuH2IjxP+Qc/njedM6a8anwr8\nmQmEqmJBhEiXbSrd4wKY8S2QaxM5mOTVSrWvwP3LyBTzXYzJ2PbgvADRo53W\nzVOxgpryU4fsF66apZfPZPrIaMFp2p+a//uiyLz24n3tTmm4etuKflIsq4pq\nzWTy1eQok9uZRp7/nNKyK+2qd+r1Z3NbtPgr5QdaogfRpe1U0NKcLBIT7Z+s\nqlc5H5ig7lvoiwLsz4b1LoQMHP7jMMmj9sjluGa6nxVidrqrB6Zew82bF7IE\n8g25ZQf2COCVP/HlTMXJRJAr+jvhT5UvMFep8dzc3gjAn/9gYdLyUuXqbynU\nUxAc0tpybZmL4QyF71KiFY/CKwedVvkRPghIY9DLTROFj6VHjXvw3DS3Cj0M\nLv4cTg+PP9yEGV7pK80YyN6Abq65q9Ntfo2XwYzJga1VKtLZMqpBPu036/nv\nyBLX\r\n=alKD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGzx4wbaKJWrochd5z6hkhwdf2C0LduTqB1foNVYVY4EAiEA6sGuWp3H4FI82dnfQj8Ao3h6yB6//oQ9twxDdGZdVpk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599077045-93c1ea14.0_1599077144062_0.04500547516708786"},"_hasShrinkwrap":false},"2.6.2-next-1599079072-3819ddce.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599079072-3819ddce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599079072-3819ddce.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599079072-3819ddce.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-umDcpuhFCN5tmufH2hz0seZS5t6JwARHgfQ8HRhu5WCL6Z7bIq9eOukRCcBTvpufHd9HaTM/4H7W9TndkueWSg==","shasum":"1271a4248e61d6cb5f143a526d7b20ec2ba2d7bf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599079072-3819ddce.0.tgz","fileCount":56,"unpackedSize":104321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUAMCCRA9TVsSAnZWagAAfmEQAI12StPZ36VX6A9RGXWR\nJkVuaNQwfmDDcDnrMEmjXEpRpVQc50VcPHoe/Ueucv4gncUUiNFwQrLspy1D\nIHhos564XQw+aLpkeRgPv+EGOh4BojtJDHUza3owotG9KFP/PklnO4/UYSBI\nnZTJ0VuIvlqmf/Pd91HH5z7sKqL3CQzJEpQ9PmfoBab4BdUVuQoP5PdxNkiZ\naRg3dQVa1nyU6KWXstZ4GiqhmeksbMhW5by4aQC9HuhZbmpkLMhiCOxLYzoD\n5aXjhnuNHtyPhu1K7LR6nNaCCC1iL3BEwJtlwdZeOi483nUv5V4MxKe7W2+A\nZYd6G8res7LMSsO0L3b1HV2AFFWWLj1oCYae8Ar47MBy2uNABtmYOwTTtYhl\nPW1RO9ylwGxdL2YPtUVjlixj4qInEc1TgI8sJ9PQdKsokpcoYL9dMU+bA4TH\n/me5t9bYtGBmsPO9EMKu4CxfHWHoTKHh/kuH8zRfvZ0VYOPJinSmv0JHoOls\ndtDngLinILiyijUjlM1p+SHQ5HPWzCH4vTMtnZKGO30dLgKHKmrXFySXmn3Q\nBP2Hy6NcjFItqycQlLzESL+RCrB5khQXztO2NotwtHw8v9EQAuCFrv4i4HoS\nOi9432Eam23vSx7X+vTDbiGz3xrFE4gDfLpSoKBtDF96RuvY0r24AgORxMfX\nWBiA\r\n=smyB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPa1gzMq4A9a4WYVrcjadr00UWkbpxs3/fb09DVkwwgAiEAre48uoWfeIEXjCVP6bRJkcDlEIIBnnw+MxeZGuRty88="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599079072-3819ddce.0_1599079169524_0.8731726878273633"},"_hasShrinkwrap":false},"2.6.2-next-1599079153-25b0a795.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599079153-25b0a795.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599079153-25b0a795.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599079153-25b0a795.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t07EVAQROGqm6z7YzX9BdSHn/ptBiCwC9hZiuOTThY8JNhqh6DCz9tqJZBraqS1xQKIYMve0ryrG53EbP0wXFA==","shasum":"b0e4bf72a708d28dce89afd99e16fe700a9d0c53","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599079153-25b0a795.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUANLCRA9TVsSAnZWagAAYCsP/2fFxInOin7i2wlSTKsQ\n4i7ciDEFkv2c7x8k9SIlkE9Qziz3eIMZzmJWqXvxyJAi9WxCRkvtSjBa7s7Y\nWlWflKRafw9CwQYkRnWQIeXsFOgZ4FTrV/m6XWnFpm4cPJjzMhaeajqLBXsz\nm6afjsARU6254cprn7gP7sqrC3Tyz8v/D5RWoc3Lx+lL1YcYf+tLysMUspKY\nvgVui1R8pyWia5u42U1fpwkpzf1X3KoobIhFfsfm9bVdAZIbdoxoJ2WtPTuz\nG/AgWlplbkzCkn5QkbARFO/Dnlngz00zwGHvFgBWuFCyF1gXbfD6Rwpt56Mz\ntBeEzWl6wF0KYORUIQuOVZCnaiOUSGxV2mhD9zGDyoHavJ+Ae4GBuyrs5QGT\n5iSCPJNLOS81VV7Y8Uwx6SIDd2PGJhaInRRjvc09Aefz+EQXXetZrqBdi/1H\nr5QNlfwFNrcCI3cWcSsi28bWXPo2r7vWUujKjzaomvXfKMjXGHH28cC7rLf7\nHjUlKS+2ekIYpMeGy9O98+F6rBcrd9Kq/28cKt6KfFql79Sd0Gf6+iGlfnRG\nIvs7/gYYtSa8P6fhgy/51f9G/xbPLHkKJEP+wye64MEaoovwOT/d4T56d5S+\n/0/zm44uf78Z5KPd0IZIAXJlDd54By8DLQyi1bcVK9wgb3SXOnWpC8tv1KIq\nPYZ8\r\n=o1ci\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB5C84cu1d0g0avuxpYQbx4aXQZG/LUgQKPUyZpPMHCaAiEA3Bnxe7A0SzhQrv5Z5t28gJ5q1AY5dYmDHtkI/TrvQdo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599079153-25b0a795.0_1599079243358_0.1726964830861124"},"_hasShrinkwrap":false},"2.6.2-next-1599082228-6d80027c.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599082228-6d80027c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599082228-6d80027c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599082228-6d80027c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BviY++G9c6MA/sVids+r74t+aWCUrmMJXr30a0MnqKXu6NvEkj9YkuDefx2NcR/7D1j8H6rStCvlyyvixQcnlg==","shasum":"779cc0a3dc04695f5b933f4c6213193a8751e343","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599082228-6d80027c.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUA9OCRA9TVsSAnZWagAAaSgQAKP3G0l9Y2ejU1Nc71pR\nsNuLavadhsH9zR3BRZfKEIC/JxDn6fjX5wwmpkrAEfCVTbpKaH0YW7LUH40Z\nT0oRH9XKKzUL5+VUvSXxMMaBi/zmFqB/XuTlvCQwo0BZAoKLNfVgKpX+70kS\nU32ZRvu0YYbSrXE9m69vRmJSjrnvZQFjxfFgBu4DaV8zIH4TRYEsApAD7P2Y\ngrvb8wH2t2GBfZ0lRzYTlM40oKqzF5cXtGuU4FZmOsOKxfkHHMSyn+XtkiQc\nNlWDiexpL7MgFP+gd1U96IvcB4gZ8UzeHrOfAvN3DZEll7vUGaCniIbVSONI\nLV3BdKzuefnOmDr34g15lnILLCeeDXSyWwEC92vxJCiKHWWUI0tS5WpmroWW\nQTNU7C/13IjG1k4o0/npFiEROpDPjITKUBLlGxsfoPmdsvp6XVBrPW3wHAt8\nn/mGAH1YofDq4FCM3HtLVaO9nZpTc9pptDRl6MA+wcgM6bPghNNl7qHoG2LI\nXR7ETizBudyKgMN6jez7XvLqgszecYpw83UXP7mAXsFOw2+j1yaDTnU17Hev\nPLWXXAtBgYjOeOP+Uh8LawvkV2OY+CkJ0oEWeeXLy0onTWAJ9dqU6AcyzcLp\ngPH8bVZqjZKp01APXDcvUtXLJg6AwmRH4C+quAbq5zM4aDpz/2xL8sA+J5rr\nY8T3\r\n=qDEo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2t7gHnHQ9ZeYy7yD4SP/a5JtXyXOjDtCCKDFlf/B60AiEAinPobD3tebKQOOJuVeDPwB7hfevTcTYhHKRM0prHAV4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599082228-6d80027c.0_1599082317533_0.40706740398548913"},"_hasShrinkwrap":false},"2.6.2-next-1599083111-80b1bff9.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599083111-80b1bff9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599083111-80b1bff9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599083111-80b1bff9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EsLChfWoF11cFUUVoBfxoVvuoQTCYZobJzX4MQfxpA8NwcCkJ/SUmHpRI2RXeAkKFqkGnoqZeQPN0JymYqKttA==","shasum":"884bd7d81e68e2b0a3390b6aa4c843b67f52cd2c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599083111-80b1bff9.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUBLBCRA9TVsSAnZWagAAgxYQAI8+jCz1jh8uFRp1ocTk\n3amD3IsIZXZwnTsHbXRvws4s5WSzxYnxOZ4Lr9eCH+Dbj6ziz9Qdqly/Ug2v\nBjCJ+6opwPTvK0XKWeg0pP4DsUc+z54HrbakRDh6JI1D69xtiu+0hqAIqWbu\nCUnhfM+5/WMyNl5RbgMw+RaM6AZPL8S3v+QKPSm3uLKUmHqPljVUreO8aRjr\nHHUA7HxyrUT3Uy5Una6ktAWXoQJybklNO/9fI/aOPqlCEUfeo34i8yiE419V\nqdFrumbg91VIxJBIeHCVvqTGeRM6Ql1YbZbJecU6FZJ8ER8iyPyMh/FH901v\nONE4w8TBw6ljVeezRz1YK6iYzQlqDcLChbRGrdxT0+bBhgErcxw78BEJ+uCO\nYal5iqhaAgKXgJDPVa1fPpOLToIttPCz4izBuDo6ULqo9Vq2q4og+yVx+dkN\nAzgORMp11CTvd9qru3IvWYykCw84Tjn2E4BG70+L+G8FqUY6Bbw/drdN9/xz\nCjhVqKruZQJF17bNbAj4rDT0RFZabr45U5An+Iy88wL2YY/hR5fjum/bPEcL\nUoQUJt8v97GoxwIPKcsqkxS3jmRoLCXCl1UXqc3h2Izc2Q1lxnTBWOAuXpWg\n1Q0dtYJ4Gp2Y0UDl6PLO7nV+VRlaeWDfW8+8h9szC0CC8Aa/dTPpZAo9HVt7\nMRZf\r\n=LPN/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDms01Ap/FlklKngo0n2RP8qJQOWsGx9XyjsZdytYMsbwIgLWQjGwwljWlImHcPbKHXuMM5EejpAxsbX8MY33GuEYw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599083111-80b1bff9.0_1599083200726_0.6268319506889755"},"_hasShrinkwrap":false},"2.6.2-next-1599083972-6813d45f.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599083972-6813d45f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599083972-6813d45f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599083972-6813d45f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DxKRWxcrXOeKvLBQ8si8BleJ06HvNtKQCyz+/VGzQGtgOiXvxnBdyqKl8vE8fCe9h2qqHeBo3qGv7mauVrCt8g==","shasum":"5867c3e8e1f2f21aac10ece488d1ac90c7e78848","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599083972-6813d45f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUBYeCRA9TVsSAnZWagAAugMP/1P5ueDzeKFbkuo23TYU\njQO/CGvTWGuJHhWDpd+x/+1R6qfl8ot2ec4wnkhNKqz+gF/yHQewXAZxR6zo\nInbvIyhjrMFcMq9QMIusoRjyCv1VxApIhtLgZDt5GgU2ersa4TfDH8IkA6FT\nFzf5bV6K1n3mwTq5QqbQ5lKZYg/EErzDsYBYHtFY0D02z2CslJNHqC0qVHtF\n8Rn59X2Em7Ss0TfiXp3dFkd/+IQ505uIYYKQCNh739ofpnPfgyaurfZl/3Np\n77cujimOP1eFYJwAvbSK6+S6qDOIyvv4VjmKKqndTd+LrX8LMujTsYptMRlk\nJ9+UxoL4lNFZOTC1i/MLWnAwVwXPiW0YV4DZwS0lDBN+tYXXZVCs9HyW9FWS\n6rhPJifC+BNYqc7CYLVbi6fttG9IyzesaHLm3NWz52RgGLefRWVfm/Ji4wZK\n2akc0qwz3aPrM/M0bPqNXqzwj/SsaX3TqeVElOQJb9EKU4hgSnvWGusogvCr\nfMM6NZ0+dwHH8amBUEMtdObW9fiu8lewaiyqCAmcfYqvTnrpdk23fRT3jY3m\ntrJ+4gzZLzcX4G17Wex8NS7dycTwY6Df7LFzglhWp+dyosBmDAuOvl58lyvi\nLIItyB6njSi1z6OAvrsrcPK6NGECWddUG9D0QMROWGyzbTYgiTkR2G8ZPTtz\nqjxG\r\n=TAn7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDx79VEDx1Yg/+tNNGqMdxMTaepVawFQW1FtUdCOvv6tAiBN8kbSxOVOsG+iFcRImt1yKElwHB7oXAX3efVevt+miQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599083972-6813d45f.0_1599084061605_0.7929524487577082"},"_hasShrinkwrap":false},"2.6.2-next-1599084114-e806677c.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599084114-e806677c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599084114-e806677c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599084114-e806677c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1PAYkFvJp5MtBYcMwPpHo63le9IwYp33wCtVCt34K25KT7oebDblLA/rk2ufrXfgM6rPPHbcEhrFwA+tYIDt+Q==","shasum":"8232843918ab6fe979a3d85417edce97176f75ac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599084114-e806677c.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUBarCRA9TVsSAnZWagAASb4P/jemageFTgmgML5PNTvd\nxYKUj125xh9IZ1izglHN8T6D8T2RLsYzqXp9fINx73dpKDrimDV816TzY6Sy\n98cwYALgcJxlHs1nbcxoquJ4LvAh7703NnfVzXESFYb7NApdngtMby1f1UHE\nN5IUOvAiMAaF58CHkKyKIs9/leZdOJVne0Q2nHHbuwcOmWQMBYB3FXwrSm9G\nfc+e2TsldUDiHe5VM1pkjW3t1ORwz6DIjQdBeCY1lxZcYMiMVf1Cje+jCUZm\ng/iO3gihSE0PE25aeXZkidYI1BRTHk0vmg/uOnpcZGas4aKUEGmB9xh820DI\n02+4F3VlRa0pKWjM+opFje0BrQxqMnbSKU2UqNXBIxwbSFHt6O9LEtUFQwMK\nAqzNQqby7YmLPWJMMVBKAuQ6HcozJ/NTsS7LWHpvpmg84BCJ1Dp2J/lPG9ex\n+6eyvH1IMFFcEdTn4kgByK48JJmt4OB7vgny0DsdE6/XNqtsnd8ayI/U5vQB\n+E1dmQAEqYl1Abop+eLBe2VqHKMWvo4j19TcKkOX0yrhmVmDkDC0OX5TaERl\no9Kj4xseoyuWpCsQXnHUCmmR3beUS9HMptWXX4tENYINSBU5SC/P9r3meZu+\nrCZGYaXImf4EgAUpUQI5f+Xl54471BMmlTzTl8H09aX1q3+ipxT7P0ROoHMt\nIROk\r\n=WZfi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzGRlAy+uI/Stg6G4YMdg2ixsVnMgu5jJXemB/Rqz/xwIhAJiusOdNykU5hxzkJ4HIkJGFgDqy/+Dp8z34lLNtA4wj"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599084114-e806677c.0_1599084203019_0.9398102073006345"},"_hasShrinkwrap":false},"2.6.2-next-1599084155-b4667752.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599084155-b4667752.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599084155-b4667752.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599084155-b4667752.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-hBnHqP+X3i0tAq7OcizzkgFjjwnBe346sodYl2rYiDgvmnC38JVgSCYCIT+haBIpoNdDZIoXPWEGzKVIngkTPQ==","shasum":"dfc10208b8993220c5c6bf1b1ec3e5a0f813bcbe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599084155-b4667752.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUBbdCRA9TVsSAnZWagAAPgwP/1uB0gkdq6x476IQYiea\nbhUyQzPwoiqORsteVSbAXNtkQAU/jwniEE2uIjh9Q09iISm/0MkEDFZzkHm1\niUIYKaDLRwATRM8peFTOP/n/rcr/kUsp0EZAY842xNhGXlM428ROLLiBFgx1\n79KETs9Ldnb3Y4p61LUcMzTwPq544tvfuLsWnYpmKinXANY4BR2YXS6nyYwp\nYuXH+TCrik/RMqfsG1Yf57Ul/3xda5c+GjAQ0aFtukl1Oc6amwsTmSCj9azm\nj9jUmcIUOrKPXhdQYBCLEUc9V63hTMk5dTN8xVth0WUVBH3FnScZgdL0G+s8\nGiscS5BIzLBQLSfQx34Drl/C3M5jOhxgD4mqULCFoQjMcHdNe08mdciWBX93\nJUCfARGFwXCJmkD3jakHMtwRWDX68TRH/os8U2p2GU5Mdu7PZdTxRlSGPfPy\n+d8ANyFKZfETQWY9XHSBWRoCpmNHRDrOB5TKm+huqpdJ0MylOE35y0qhKw5T\nzyV+D20g3W5NAgq6wpPVOjFWISYAaVV5NTY3SX1w4TVYfaqJyNJlQKOqkbed\nhZbAzfrZ2wUG0qwwfOVWIDQbhmFdX8coYcGjLbaNhyaFIldH0UnTe6znHJE/\nDjprAvJAm/t+BvrGa772VtcHvwnfbUizgkClLs79j6xGTKR5hLBzFGX4t5bA\nGaX2\r\n=D8bl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFHcttfFTOFL6jsB+zJfZhCVNgmgwrywQk9EhjNDv+yQAiEA0mhXAZX5xu7Dv+X+1LFjaykAtszWIX0sw82xX56XAHw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599084155-b4667752.0_1599084252982_0.4467934285749755"},"_hasShrinkwrap":false},"2.6.2-next-1599084319-a3b77f10.0":{"name":"@xdn/prefetch","version":"2.6.2-next-1599084319-a3b77f10.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2-next-1599084319-a3b77f10.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.2-next-1599084319-a3b77f10.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LAXPB3NSU/nWEzNPiegLFWPt+6l+D+n09VXo/QpDKzJ16mxjwPN70Fth0ffC4DC4X5knDen+sM2aaloaQj8hbQ==","shasum":"843bce42f26eefe13ecf83c79438039b4911a012","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2-next-1599084319-a3b77f10.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUBeACRA9TVsSAnZWagAAxLIP/35KQPL6N0EnC0NOWwql\ngES4daSVeJ4KyWhgqWElkZQc2rps5SAwdVCeT5ctTX6mcPfIuMrZKaK7tbcd\nMkIVN60dE5ldLAU1n2iLfbY0kg6dI8rfjO59mJ1+UXz2lOnlsQFU8+X26Xwg\nss+N3d0lAEcd5cp+dRegYkOy3zc/CTWMYaJlSiyiEr5acQ8nyriSYu0i/DYw\nMHSqAvWXmDeJbv1kMTVjV1Ddj90gyO/7Tt0pnazi6EQ/33boMLA75vWk+rR4\n6xUL2WqIERELgDd5ir+7aMrAydTfv9nwy/18xTR6S0a3hzigPnjHUlj7BOvt\ng9fElvCjCxCWoSVHBYYr3slIdbFioWJC33vJc0OvxatdVoH4pdrK0oRJUNAS\nG5LXffUO/RMYjm3wqn+B63VXoZ7tcAcyxg4v3P8p0kE2wp//JBB5IYxGt57s\nIFcL+pYTzWt5SUjd4z6+1cc9fKHtqY+E0x7E3Ow6iodVRFd1h6/IXPohFdF8\n6LP4kMzgjS2jOs3mz//iAsK2BN7ajbLZ73mTwf3n1w6bsrZPPaIW4f6+DQC4\n2g56BTxYjEaYv/MgN8ZJVlcwALrVRQdWs8WHeQjIQEbNuStNmbGxw5aAb2u9\np1z3I0lfRyV9885uGKQskjjXwJcWq/YN8icFdaDeoAHFA4MZgmzYB46yLBSa\np3J8\r\n=w4OY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFihfCUmu8por4EFtGe3Ht6UqF9DPvdynbgor/oWRRd7AiEAwQkarbSsu8SN+AOYiwuedZaZeQouTVpNAcWjGghYT+s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2-next-1599084319-a3b77f10.0_1599084416350_0.40044807064109955"},"_hasShrinkwrap":false},"2.6.3-next-1599084411-bdc1c3c8.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599084411-bdc1c3c8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599084411-bdc1c3c8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599084411-bdc1c3c8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uDy34qfimF+nVxF0jBFnI56peTWKdS7w5TTb6TkTFOhRCkEbFV+KMsljM75B0uBCUCk/IdAv3lt6GS7qGcIUpw==","shasum":"0b608314bc7d765a84fc8c313d90c2919595ab48","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599084411-bdc1c3c8.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUBfXCRA9TVsSAnZWagAAYgIQAKLYj8sV9xfGNk40a9zZ\nPzQCS/+VENVsSoCU9B+pdhumaMaoLtcYZ4CrcLiIxyOveBE8IH7zhJBoqS6+\nSMi19M2Hamxe8tUJlNHLLsI0GN9NT0gVWGXprnxJL85sz8BvZRGXEc5qxQBa\n6K6ytX5aeBHvSxa8VKuAoX72Qqn58+F0ArtUMcicQGFASoPLrDFkyqFF4raJ\nGgscZCbgienL8NUg4ofn+wBes6vTcyg/iO6dLI65dS6PjZWGHPZQYfRlqia8\nAW5TSjF2Jh3TGXu3WZC1nXzrpdQ9BY1LlzLFWjCntI2SbUbEEaP44Y0dwg+/\n99Nhc8VyEG3FYX6uf1Q8Yq5cfKmljSefVbm4+wTKy2N4Q+1yJ59W3OroHYpN\nIPW4bpUg4Y38Iirwn2SaQedKwFl3QG/7eFK/jPHd7DBrtq+RMtZmZr5Q/8Pe\ntKP/+fgq3lNU5O37fa/gIRsdmuH5GpewXWtLheay2g/f0J7fmrX6s2tPjXM8\nz9cpZyy8bWSgnGtystMViwxtYeAkhtdjtMlOSx6UYXYTmf3XeWFMNOvpxnyx\n7cmPkLfdBdxyGNjPyws6jBFNYqYWQX0ma5ExLk5O7WGxtND1Y4B6EUVCXkBa\nEGGJt9gyF8d7Sh75UTZAKJ63UOQfXp0Bs934Wm5ef36oaD7c5LKBjC0evfbo\nfE/n\r\n=9sQ5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICy3G5wK7xifQkHeUoZU9OPwMqmqm8i4orbhJCOJaj9EAiB/W9f8XmFtyWTnaO0tCXYwdwNa+J9wZ5X3vZZNWRL8ng=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599084411-bdc1c3c8.0_1599084502825_0.23576981762513816"},"_hasShrinkwrap":false},"2.6.2":{"name":"@xdn/prefetch","version":"2.6.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.2","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.6.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WwmKnCTw3oRCcrYBQL4w0z29/1sA+Gtcz9L49muaCqKtaBUEgHplG0C4QdN/BmxlTxcRxvyCVQkZvERK8Cl0FQ==","shasum":"73346311ecf77f8db9d87e2d605f6ae0932c0f1b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.2.tgz","fileCount":56,"unpackedSize":104358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUBgjCRA9TVsSAnZWagAAi8sP/iVzjjk0M+lQ7jOJe18j\nlRQtiuSO2wH/nSdef/VM6tkr/m0pGkZyh/8k+DfXlWBhzbCHKRGVDrqr5f0q\nA5m18FTzgN4xUF5XTpM8dv94KMYfTSDaU7LoFzAjbpFwC5asnQR8XGDsSvh7\nhtuJbsyCjLInoPcfa10u6jw38KN2Q2NmsHO5IvByQTs1lsXVbivkXyeYK/UX\nXxtuvu6bdm43m8ZJeRtIBAuCZLKSvnG2IRLfXMd1uVCqg9to38ZFBgAcPRuv\neKptidF9Wx+J0O1VEsbDRBSPuKrB0BrAMQRZCrhe0sH6KzVJpUlNE73Fhtrm\nOIdYmcC0rLcU58C6qNFra4KimGHo2fcqMfk5zbodXprM3dIAWgcz6texlbHt\nJto7b5yZOdI3wrpwkAaUbqnVRzwoBcK0tLSuc/sdz+THA27RAaE87jCtr9gw\nJ5WqeBxbXCLV3gBhvD7uk10J42Egfj/GgAM1ayPslGT+MqzfiOx9GYuL9w1O\nnq5kXJNJAPV0gGuekktt9k9JWpcZctw6VzN9Lksqfu5Aau3j7OcGGAl5II/n\nycsUxOEC3v4TDSn+gTqTaXlY2AgFZTk4weFNRJD2fd8LaoAyWeeejnArsV2g\nd6JYKGKoN6Q4grkbqQot+JUnazmXVA1oL5CN1g2KScf0X3d25Ehs2XcNNvJr\nSGlI\r\n=K0Ra\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOwiwHKcY/GXDQ+p+dIwwUhhv1SOO1oFEcJDihR83KhwIgY3JMQgGUt58PVnnfCs8ncFn2R1Y6nEysausROAP3wEg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.2_1599084578625_0.9706599397739222"},"_hasShrinkwrap":false},"2.6.3-next-1599085061-a84d77ab.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599085061-a84d77ab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599085061-a84d77ab.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599085061-a84d77ab.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UkrFbpJ3JMrZkTVH5Uc7ozZSDdkAh2ZtoyTdz1M9nXab8fdX/PnSnVU+0xRKBR1fEubZsMO+qXW4tVQ4XYp/pg==","shasum":"ce527730dd76cf592f40f1df34ab37a22dadd7d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599085061-a84d77ab.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUBpWCRA9TVsSAnZWagAA7AAP/1kJnEfXGP2rbXv4lNVj\ni6jUKvw950e49XytJgHmFr4p0GS1665o1QeHLKnB6FzoJuWYeXDr3G63GiTk\ntXgYOc+XzZAEjQiZzyzLRcq9q6k7dbYZvMvyFZFxB8wg+4xwzYHw55UoTjoM\nbxdXJqs/csawwM09DR/L9EjJn9HGUBFAEdV0S9DOY+2lf5+OVHbyO8Qtdb+I\nyZ41eaYlHzFI/mGRLwsI2jmOtTdqoUVMnUC5OAlOboiB3d0z3PCbRBMdGZCD\nQFp/DI8VgIkqHhx1GilITKKz5u3SEcp8Zc7vd4LymxUucRp0Wh1fwfjz5nM5\nMPjusD1VtytoVtkxDoF59wtAQLMPuRP6QlrweWtx366ihiv6WzmPtSQsh8IF\nFi5BIJEflv0vpwxpQ0XHDIrUrAGYgeYjaO3nOmkanZ4J6srGIptph51hLR4n\nl2x5R8Y4W0olw8zpW3MbqRAbaumMTLAMDD0g997yDEtucsSpSTwMVnhWdLk9\nRWZCkciU1HkabnIy3fJCchhRx/k49EV/VuAnFTIaFmEWFpbvAsBfybbQT7T1\nxZutTHSMkggwIHM4+DvdzYeWxyrv1tnPkz9vpMDxGpTrlpIFgmiWkgmu22VC\nXuyo//UfNK1mgJ6OCVa5am59OEc0chuVnjT+uFK1SJpadC6Rs51Dv6KwB8sP\nnwCp\r\n=Kk0a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJnJ0EuvvA1feJoUACx/SX87hWJ+XqZs1i8rpWNMevJgIgKH8xkwJ09s+CnzFXUB/udguzF6Xi9VA/SpUkPTMym/o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599085061-a84d77ab.0_1599085142269_0.6850520233745783"},"_hasShrinkwrap":false},"2.6.3-next-1599127595-9d8b47b4.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599127595-9d8b47b4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599127595-9d8b47b4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599127595-9d8b47b4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-d5e+FYCOmjyECs3iandlaqxkhewIIngx1AGHVyTINr+zWF1dyFl2Ty4uY2sbPsjrJK7cGpmnRZEMwVQqESS6Wg==","shasum":"a4a28093785ce5e3af3adca1417ff7cd83eb9868","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599127595-9d8b47b4.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUMCHCRA9TVsSAnZWagAAOi0P/16enbGmN27EfKc10zHc\nc7O4hYsthZgfGS/ftyXGEV+lmklxPq+Du9ZjVmtHW7d9zyimia+BXWTbkQ73\nPnRjgXHGWUc7SlfvWiB/BjvxRZoIXLpSczQFFZcrhk831vJrDYaG9zU1dZQh\nDGBpTEXKC/z/KJC3qtIhpUoNRX0ev6GZ6mdn4LL7bWs/WuzzyVv/6UTsVFX2\nmOEiU0TLj5SV6Dj4rdz+A0+qjgXEO1yBHREUpxo+kA4QFPpAn1+bPRE+sBj2\ncier18w12+hx1NtHdEtXA1JXkI7/JPCi+ZJsEcC/OyLmz9xOoGVjfBreDlEt\nyixoFEV3fsHyO3klJRDHKZTyn+yPtbsdm31gtRij7xNsb1Lj60A4Ti2rL7aW\ny6yemMKu2I0Zf+tHLULbFL+lw2+uizQ6tjhbOZ3BBJRwiS17H7i9e8y12veu\ngXdphkQ9HMLxeFFGeJcKBSkeDZ1lCWv30pwzCvtNqh8lGe98YBwr7hWcoDOl\n0OrNo9S9f5L0k9uCD8wA4dUTvTG/6HUri5qb2kzw6p6IZFcBjZZNftgavwH/\nG8f1Fm5Depf+mktvVQYHuewr5/uBNMfBdYBIscqVr8LimBKwNnxXGczeOXhL\nAj3AW7LcW8aChV79ZK9Q8XfvOV2v2p8xIe1Tp5YYKg8bPJ8jkbvP1EjpAXif\nCmgV\r\n=oJM/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFuufasaaEaFNnyjoWfg/V8x2YdncKJCAbup+/HQ1TCVAiA3B0oT/Fjpyf9gxCAz3WpfUmhuI4bxR7PhFvbtlPG4dg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599127595-9d8b47b4.0_1599127687336_0.09409557758124198"},"_hasShrinkwrap":false},"2.6.3-next-1599131915-3000f686.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599131915-3000f686.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599131915-3000f686.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599131915-3000f686.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mMVnAFw6PggC2HugLdj7fjSRAO3TYC78Uey2mii8DpVyjE0/tzUisJoKowASIJrIRvqtE54CCpvTqJssB4DMCg==","shasum":"407c7cdbc5447d6360bcb0373ed98a0102d72f33","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599131915-3000f686.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUNFoCRA9TVsSAnZWagAA5QYP/A4gP/K+bwhnvLwvaVdg\ntPQbPTcrclQj9TwPRxqWuFrE1ELy4BWDzuMRC+rWl3lEPKVPjT6Q3EG/8RBG\n0DX8brJ2L8VzUq7CGkQFz6DQmr2RozqiME3FVZ8IgXd4wlBfT1iZKSurIeY6\n4RFCNAz1AOv07cfwsvanEL+04Hm86Djf2dge/qxfdfKxklFBR9FX0Od8FEDn\nAIAjEOUGqEBRKJExDCvufh28pp2gwE8dQn8SRZFydfGXYiJ+qUo++UmMQt2y\nUbs0J3V6+ocnLTMyrAM4oCvp865Bj0Bh6Nxb7avgSeVVIu9QIZBONNi6OEDC\nmtx2wA2vdnakGLHE3vm8wRwYOJs1FOmH0tl0k2yH9eG62tensg4hXumvWUe0\nc6JjsXCmrZg/uhHxhj4mA7+1YIkFowB7a17SNHWRdAMBI2a06CKAfVYeSBVr\nA5N8RI+1qUH7vV7jLyoYzYOZahLrpudf7fqChmUmpeTfhJLPZqk8qQi0zqqV\nA4zkamlGLQ0XG+Q88VkjNZ9YW2oL6RnDhMrWv9h3K9rRYunv9XktdsSL3QYP\nzeCPG3xZ48o9IL3dKPD0wEOtH+FE69ow4lrma9dhNsZyaPRey3yhtDVsAHzx\n/U+TbeO6jNQhPvEGNeDsqM7c/tg1/xxOffEOH1ag2TPoEX6Pkf2Lwcsk1k2W\nwsVI\r\n=5Imb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6S9jwI2S3q4Wv09hBotYZy1QsP6ZN/oDOjd3KArfM/AiA/S0y5ge894NTtbGPFZmbxB1LIvEKxr7W94Dj9VblEaA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599131915-3000f686.0_1599132008057_0.9261657116480924"},"_hasShrinkwrap":false},"2.6.3-next-1599132181-85aa4e60.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599132181-85aa4e60.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599132181-85aa4e60.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599132181-85aa4e60.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8Nbgo0y+eh9XXcn7qW3sdz1Na3nreILPXtKve2FF2hZFyIt6pMKTgYr15kLTjFkIjNu23lp1r23KP6Mt2rVhSQ==","shasum":"48d247a1f3da0fee14d8dc91a852ef7976424c52","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599132181-85aa4e60.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUNJmCRA9TVsSAnZWagAAhrIP/2NIkQsVFFsvUoFZ7BrM\nPRe8DWsuUWq6syCBkaSs/VcnQIdC32LpAxvbZoWqQFaKY1b7wh82kif93hF7\n6b1SAQbOhP9EY87c3w1/gOhcAdyQhyc4CHM+4neysvsO8RE3DKDnhtcb7d0u\nRbQ2LIlOPgs+LEr2O/ejarX2Sn7Vs+3iiqH1eI0nfDjQsLq2nQxVFMs4s+11\nxx0ku95eipllSdtVZb8rSceEK+IXtvQbNVSD4q0UapFxSLmsarP4gBrWzJ7z\n399HF/HjK7AQ3hKdKTHWlaPikN9Fnjzd/YHkIqNY5ZgUJAmlY0MHMdJRHera\nZmEmPGM+3jj0MbrUxxMQfIJSgfCeiP5BzBARiMr389ACWjCggVo5EH7hDXXq\nhmB5b6ygU3spDhB0+xnW4FGb/0qBO48nlvnNR8+7zK6Tu9G2vyqTcovu/h2L\nwN4OOvZlZMVHY3x4X5E6e/rDku1R1EwupPbiOs4dE6nnvB+YwoQKVD8eevQY\nh0W24B/2n0TweCzhhzXAM7Em6SQ46QPhUZpOvivTLJABedlIFfZ9XkY0zHqI\n+qRMvtX1J5n13+pXhtctlvMRuehSVkavqn0KY8d8FzxJEEMgEwYfJbXDBUWw\nUFiOknrPdCNgsqP9AkBlXQFXvvFS8p2aLnNILhxu+aoF2Rog7+lqMwcQhq0H\nRC/c\r\n=Rt4G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDq2yUMQlaysdhBUc3R4F9142moX5/TdBZ0srD3iLEQzQIgPK4R3DtQFHbRdDLej/pi3oi4uce5ZutdWmMsi30Us6M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599132181-85aa4e60.0_1599132262179_0.10164400060945122"},"_hasShrinkwrap":false},"2.6.3-next-1599132204-ebe46836.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599132204-ebe46836.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599132204-ebe46836.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599132204-ebe46836.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4vrc4Dcyl03yg6PrZH8Zz78tggd4QlOfVtW5YExt+9upTsYk6CFqVhRMN9o4R/BvSXabm91mYztlaXMaR6HV7w==","shasum":"9c1c9c4d6f047e8e0b985d90362c0a442a1e724d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599132204-ebe46836.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUNJ5CRA9TVsSAnZWagAAZQ0P/RHW4GZoo/0cznX4l/ar\nyinBlnR3ipm80aTLTCKcAyZwHlrmfEnXvX1M5vEnoPblB1wepD/lm9QoGoPA\njGLcsIkyK1beMusRHR5sU0lbhUw4Sg1ZIpuFliC5JBgr09alx+Kf8CXhYy2K\nuuqNmDRu7Duxn7c+23MvH0VVrJ52ZZSkfPmjEpl1SAQNMebIOeoNdKi7ZxvG\nVJmsBy9BW3nKVG0uNAX7GsQ2y+NrYghJEyCGLybU3aoVMF2wj8R7JSFm+tkW\nAft5gBj1RSoi0PaRqOditfCr+x0pj5n0neDEJ91BnYUwPjMnFh7+kl3F9n6S\nmte8FJCQLGHioXNVCRIhACaoZ9S1tExCqdLs1Uj6lJg1m5arGWXVQJg77ybz\njh3621NIi1vTvMQa3UBhgL9OwZoKd4VKXdxxo+rW2nEBTcsNSyoQVNR0Dgb/\njHNjUer2nQ4nxvDAPlIXdDp6IqjYLVmNt1kzogs/1Xyb0yStJk/YKFiVwau+\nFfTKN3ihUg1Y3l3lqeT65IBxVo4+uldwdeIhygLIsumshUxn6JICsmi1xhCe\nwsuC+Vu34YpComcHguiqP4lrLrS/Kb5JtdrPDucaGDC5hgjGd8Zdypx3GnMg\nAypCKV48zicm+5cEbnVKiTCZPnMUqWgdN/THqocVDDwEzRTnkcRTuIA864VP\niZwj\r\n=TQIm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHyL2Exln5MB3Wvw2vQUTzrRYc3L6nyj57SSfNRkhiVXAiBUdR2OMAEjS6KpL1y/HxStCambqKu9O7T8Z6fF4WO1jw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599132204-ebe46836.0_1599132281233_0.6480585362332059"},"_hasShrinkwrap":false},"2.6.3-next-1599132332-cb518e91.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599132332-cb518e91.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599132332-cb518e91.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599132332-cb518e91.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RTrM7tOAWUv1nFU95xrGXZI5Pwi8fs7oQLd/0uUVgPkSYdVLbATpTsNyaEUyB+HUu7Io4txurydkpTwPkKc71A==","shasum":"1c8c346c5fda6e8e4a81a3f7ed1026f91dfd2d71","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599132332-cb518e91.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUNL5CRA9TVsSAnZWagAA9EsP/R6xOmfuGeMqGRFFRXy4\n3GKMLFZzl9VxVmOnih11luCAnzQW7m5YiEWhdVwXkESuKRMSt+RG66BHB5e+\nCjU5Rm3LZh5rBbdEaMJXe2roLLkj19xSzYfbf+sh+ZYvLGgRyImnWrQJoZ1t\nVAiOgr4nZKFBP4AhBjFhjJWPZ7e7n0nGy3kGWoQDbN9pdV+xLwai0Wikk38c\nnz4rJGk/6NLw+tuctk5CPEyZtbuMV/RbDHzoD2pNW+H0tsd+b41zQwQJU9SM\nSIZ1XkKLlT7CJ1NMzjnil/wtaToEA8MpA4Bypd6+RJQnrEYYou1beV3SXWcF\n+mDqjQjMFoRnP1UnJVoqOWhZADl8jna0vWHGwuoiFShid3ah+PoIQuJFW1GW\nhJpvtckia9SDtCsVcfVP+7liU0rUQXMke4WL37OPjkpsFl1D/RNTsGBpDef+\ncjZKpa9FAAtxuJJPrEurhDGIKv01HytbeGbey7z9OrUHEtemGtimS2kihSA9\ntYKn7QbuXaIdtK55yhQ9ZGIJ1m2VeluTJdIxAqagauymIklYmZBdB5uhv5FF\n9zslblwhvSHr2ko7X2Li2M3F7OnHSnjGHVpCRmGbrxmqy7S2twzDOTdFmdI/\nGrHqhoO8P168/zmLYy/24mrHb0HuCS/iTou52bgxxZNAnFaXqgfdC2bS5yVj\nuHbZ\r\n=V0P3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDao4iP67bzvLyZEyFeXOYOQ9gIsZs5Kx4GL6oxSXn3+wIgLMyO5/pqZy/t9aAYHAsooLX2+Rx2GwJONGUrwNGqW1k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599132332-cb518e91.0_1599132409151_0.9254765889968717"},"_hasShrinkwrap":false},"2.6.3-next-1599132504-184e263a.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599132504-184e263a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599132504-184e263a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599132504-184e263a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kf+2FgbSAn4f27o/gx0HO2JyEmVyyysp+Tbt9zok+EbICsbPcen2coRZD33Sqxku/haeDw4Krj+jJ1vj2Qqwaw==","shasum":"700bc3a454d55413cc92a6271b8d1f19ffdfa9d8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599132504-184e263a.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUNO3CRA9TVsSAnZWagAALYYQAKMNhr3Mr4J55rp2+1zc\nQ9faD2WuUyyqhILnYpg5WmSwJ6zbADoVWR15KEQGWdmFYYrhTOk9Hh8tDWtH\nFd2HdvQEtP9yg56P7DmhVSuALMo1OU1QTsJ2rxe8ZjqSHpmJsoDN1IxxSj5s\ndu5q5mYGF2XzYjI6ewgOiutqCUO3eIa887QrYM7rIVVTHm71SFouacJVNmAf\n8LznliD9mVTdNZvbKrELKP6GDHaKLg/NySfGqrS7uI6fN7DNxsQoH+x5k6t+\n7uPGY/w3oFNSBt+jLD8CwOr+tWZTgCefyNVeLjZPJIJXqrdXP8rGRm9d0UcI\nVdFjVBb0RgOrxF3N+wKvMpQE14eWXhSsSp/3aAjOtn2tJluQAqmhS8Qb1AMk\nDlIjIVJ6iu/vsr+K0B3iYcW6AZ+SeEUq4lKmeewYyF9T5F5ZcQFKHfneetcl\nWXcwAXsgsa2jEWtPHVo5ubpAiJyQADPOVk3quE+jGl2xLjHrAYuZUih6ctVV\na0B/nVUzjUmNNDu5z4ywehl3ZBf0MZnYdhKEqFdOEXdDrEigwyrIaWj/WkRq\nFwjqISVnfGdo+ZRp8laPzBy2kW+xrtM39gVhQZRw0KrDltWalcflgoQX2Egq\nIjXyVRWx2L09I8Fq2xIFGtbNecGuDQRXBt+xYTo0rhlprFUwWFnDYtfr6f+w\n/JKE\r\n=9STP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0grQdmhgg3g4jSvOf1SH03yymzqLVwo/NJKFLQUpXfwIgCtGAP4oJwSB5Ai6s85mv7B7qd5ysOw5vAbQrMhNUU8Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599132504-184e263a.0_1599132599050_0.5915746599017957"},"_hasShrinkwrap":false},"2.6.3-next-1599133491-eff9adfb.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599133491-eff9adfb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599133491-eff9adfb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599133491-eff9adfb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-00975LV9W4tw8RdktEufxDtR4UVIBH1UP8M4EaGuyldrTlq5DWLyOufnrALQF/SM2LfBfjT4AEg4Hwzgw8j5CA==","shasum":"2ed81f077a6b573d3dea4da6113685533e9067c7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599133491-eff9adfb.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUNeFCRA9TVsSAnZWagAAJGoP/274cnkgvkzGflaKeH+q\ntkgTzzenl3V+GrcW59BU9yoWoulMok/kWdLCx8QSkhMS6rsB503BAjfxW0i0\n5mjlbuK3RsXXF5yAmSniINvBijvM2yZiXOidpWskHEhY92K5UhowBYmMA6AY\nkrt+m2ZgIQass6KfbBe5SVFl2ocNGWWxbfESCKoZN1yz3p8v+BsXQaHWqeqe\nNtsZ2GEEr4VNJ88Sl4rcvx1KeE/b3X6eHMJH6lMlb9zt7eSOY2iGAzJ6hQtp\n7SkFJU881EdMeMPW2x4Z58h6jxQto18MNxl5MAj61ijFKQR1UponKxBEfng/\nN+4iNeLCfxukD78uq8QROMlNWdoHRB6IPEv1HGsYYANyQjM9H7B/wQrVFe9t\nksc1dBasUizQzC1J8ZzDdxw0kkYF/+GXCDLbNRldHWemO4JPmHqGNdIlu8Qa\nz3pQBcqTM/Wz9RdUVPnpXlmMrH2Bi5uPUsocSF61j2XwqW8T9IjDNggm2wUr\nYtJEJoavYGnK7GSsal/1VX+oTHuWdnWA6i2yE7RWqriojVq3kSnVLG9zvgPn\ngN2cvPOt41AVEfe8GtLruGPAEkGZoOQT2QNHJcym7EWb2C0/B/oZ03oUOfAv\nifk93MPW5iaewJFcOKf9KOmUIrnySLytT/LxBpJlPAt7aDVClNYNboP8lMtv\n5bfE\r\n=g1xg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEcnu/Bx9wMhbpR6dAJDu9Kgp81P24xqpDs9qxipes3tAiBQanXPd9cwriZZZeToutcKyulaanDV7ePWjEDdgSBZAQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599133491-eff9adfb.0_1599133573184_0.847929075307329"},"_hasShrinkwrap":false},"2.6.3-next-1599133837-f62fcc9a.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599133837-f62fcc9a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599133837-f62fcc9a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599133837-f62fcc9a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GKS8e+1dv061H2GHtIPNReGnopdbxSpudRkwgEP7A39qlZDrqvUJSbgLHmJtt3RAiGweZq36Ks+ywTVX4xCVkw==","shasum":"e88ef576fd0e76bc3d8f4acc8769042f9c9a40be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599133837-f62fcc9a.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUNjfCRA9TVsSAnZWagAADg0P/jR0rJt7TolYUDIJofxh\nkVjRLmqDGef87dmD/72nnCuPxt5QJFVNETH55dvmvlIG3DogBK7OQ5FVFSp3\niZ68nnuJupVbtjv3r7f4Gnre7KalhN4FN5kdXj4Wz9AElGYlAOEOso62ub0/\ns2mmZmkDHMipa9Mfp27b/lHrXhfoDq8usjFAKfjGI3SjJiYjArfeJ6AF5XvA\necgbxg4TQIOujb6RpZOYzw0AHXJ0tvhTHmM0V+iWJxMdqSNNaOfAAMRP8/wq\nI6ohXZ7pB2BntrJWpzr7uFZHPcK0z33yALiGwzsBAhfpRZkTST1UegNlIZ/F\nu5SieEAMXQBhmPX3lC/OMASAPRDs1GDCL8EvqtqhBbjIk6tYWYoZrl7u7EL+\nMvwvhUDXEDx2o2p3CJqukgG67Ks8adNomdmm4lirosajUmDwaUFcalzoeWpx\nCCQtbIk3dhtiRtpNCGaBE2pd8ZUWtv5eB2JkAQBStFu9oG/Jncu+4S1Tu4ZW\nVApdJdN1euhk0t1VFQh8p0z8L/Bqa/rLtTnw6bPzaiv9eU5H2r49gPCxYsji\nsklwRLromUEQKfyzKMFYs+nFSCIblOYu1p/6/TPfp2n31nzzsX6yf7+2g6J2\nl5T9fgwFJaWcyhWc2Z4kLNdYFjcIqX5p8n+N/JCjDWiYT2SIPZ0ZqYx03149\n0NTZ\r\n=UfV5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEC1Jcqp3SjVVSEPjIkl4h8KoAITTskrRwHTaLZilRdJAiEAhHLDBie/KHdw/kMHn0B4OQ/wg4Acz6ImbfJNZGwReqw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599133837-f62fcc9a.0_1599133919067_0.48920568918550855"},"_hasShrinkwrap":false},"2.6.3-next-1599135144-7f86ca5f.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599135144-7f86ca5f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599135144-7f86ca5f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599135144-7f86ca5f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LMG9A5M/njd7xXjJKueLQKZ8gIHTG/V6cJHTIyLdVgRA2klmouBmYdZpiWIxYDPy5d2Lq0AAfpRW7e1a4NY4mg==","shasum":"6ffbcb86003cbd584fcfde5707cb6545401296c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599135144-7f86ca5f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUN4ICRA9TVsSAnZWagAAdUcP/iPgC7t0CH9lrNhCAUh6\n+JMaxZ34M6YUfrP08IYdg8SuKJSzlZwcWN38eRX4wmH3BZep6Rel9jnpPdWY\nFdKz783qa6rJdqdEb+amyHeytoEgln59CfiYHlIHcAd1xl2WiZK7CQkIOfP8\n5+V+Xsj2duNizTWEnzbwa+18bVFt5yHcG9VlMHTH+J+sUdOSPmipq3ZBaGlv\n7aCl5MCUTksjkx73uQkR3GqNWEpolRl24DLtGYD1llD8YnvAKKaciPq4QeMw\nw96NIXXAu0O3M8q/e6G963UR7+R8xNAsl6nPBUGqv+yb9fYsRbNGUr0L7/OZ\n2Jdj8bXsmlQP8CEG87JDAqmuV0TURnnXkyXYp1LmVhF4SCMuuLzQTDXAQ0Td\n3fy0CkIqpdflYcwm+g+6FCAzq6q9ONY3XGVlH9PW7n5wg0XS4OlX35VkDmjw\naaqENGhiwfdvG1Wf5E53CVNRfHaOzLxa0l11viTh6pjeu8MUxw5eCQ9EVRFq\nazid/xvWpemrgNRxYehHbXZCE7rvv2YLfoFMH4lJozvGKn5QIq4UT7NuQ462\nDtgqHFpRTF4PO+cuun/3U+Hkc3k6TM54LZn6UUnWO9Yo+rTk/E/6nm+MCMIS\nhI//4wBJOBUJZj/uj997b6h8iiqMd7Q36I5qlrxcWJzmX84F3qkXFe5XgQF+\ncQIc\r\n=RQDA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdTPrCP5ijXDDo4RLY/u0TqtGQCpLdT/EXZqiGldIs8QIgTf4hLs9TZgAsqBDL/q3/efF17XoQaW+Hmb0nClR1M3k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599135144-7f86ca5f.0_1599135239730_0.6818933146460402"},"_hasShrinkwrap":false},"2.6.3-next-1599135218-50d7a180.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599135218-50d7a180.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599135218-50d7a180.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599135218-50d7a180.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Ef3vY9Pu4GGQpt8JEUXX+PPayqYPJW3tQWt8LNJ6URi4nztaAMmaR2NaAjgR8Z5X+OjHTCkptsbkSwPVxvNy9g==","shasum":"232c4702bf46b4b102459176bd19486c461b7715","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599135218-50d7a180.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUN5RCRA9TVsSAnZWagAA3HAP+QA2ym88NE4ab+TwivOY\nYIawv0i5Itr9fwtPQI6TLcGriC/7+M+JLtzQM5E9dvDUm2Hyx7KXf0OtQScU\nP4Z9PxHdo7HjMmeLzZXEaSpNMkoZjJY2liAca8SQb0QscwaebnfVe59kN+nZ\n5u64z33ebXNze2Ijy3Kqhei8ejM3U1OuN6TP5j7WBuxki6w7fmBP/6RPyeYz\nL2NeUTHb80bMEr43Xql+FwTY11+DOWzgBzMAtj+zZ1wVYT2+r3kpcTdGDIQK\nlc68c1r+dv8v8KybUSRaDVOZcTy6B66DBh05COgyJEnZCO28y39+YDLJg0vz\nw54Z5eydvZIyOwE5Y6RtxQeU0+FmHVSs6uQ9jhAOfbliWF21TGURsbkUeWiy\ninnc7PsvRBxQBmOD0whrjyvE7bAgJSX1AwGEXynJ4SCebvbnab9LKHu05D6d\niTCRWfok9JRirbBoG0Wc4S2ozRWj5vxMdp2O5yzg1YPDFsxIsmtGlbJXOjxJ\nV3Jd1lF0bOpIUve7NU85cO/6jziABm7OLF/6sEsI03VW2bklRIJzF9eyBhp3\n+RxM87/m54+I279nCp+/wCeOVgqxntl3kiOw0iCx51E0k+5HsMuhQJaDoPTU\nros8TyP+R3p4H7mAZlr0mIJisxj+OiEnFYwOtEAPCmshX43feV3va42OoER5\n9VBQ\r\n=yVvQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1rX/51FZbK9o1mmq//MvfnFzcRS3bch7LZh8SbQr/VwIgG1qHvL+ce9KXNl3Rxq63VB7iGfpsn3SNJ8TRCkAbOwU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599135218-50d7a180.0_1599135313028_0.47375305773813614"},"_hasShrinkwrap":false},"2.6.3-next-1599138733-90d3a7b8.0":{"name":"@xdn/prefetch","version":"2.6.3-next-1599138733-90d3a7b8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3-next-1599138733-90d3a7b8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.3-next-1599138733-90d3a7b8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ReSDF17qqSM3zKVGA5gaj4pNPksNoR8YmduSCgRhQuoyO9U3fWA/DBuQU1gawPp1T6XFzwgImLsKb67M+76mig==","shasum":"ecfd615e597cdd543a4b7eaf55f2467038618e95","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3-next-1599138733-90d3a7b8.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUOwTCRA9TVsSAnZWagAAXt8P/2Zql6J9WRaPmDXJP/CU\nKYBTNXjU/72aQNrZcMxWRWnHlmLyiN5BSY9QI6iIIB9vVgyHoM97oYTa0aqM\ny0pTTYBX0+DNPFrT3vrx1ex0JoYwz0D7mLu5NjK5t7he5GTkHAJ4efg7LRaP\nvVc5xqyQVki1swrDaoUPo4y2Z9A4Za0UiINGEWMbSNFOU7xXiREqqVukVP7L\nPQIplaS1NEWW5GJ+UlCtxl8b5X3yMTyTfLRbaZPlsTCDpbGeOtjKS5NTPs2+\nTIGkeUPKA3YvdwnVHSwaGlnSFSEVXUYXOzX0PuaiH/LdMAqi3hQ9HfNMST9I\n/V5spHVIdxT76mXCj6cOdWkAWyMoJAzVLO64AhgOPMKtkH0hmJyU7iH/+7KK\nmAIkU2REMtnYl8WBkGovn5Pz4024lEu3kaglKfbhNWoyqZmXf8PjQaUf+187\niEZ8AFfUW74+dqde7QRgeEjKPbNAwbHVOc8o/CA6MtrmJ1RAmUuMWTK5bsvS\nrJL5fWHQA1ub9Yw5a6BVurHD5qeaFqz+Ls5WzzfPXDwztHLJtNl49VTSPKnm\nRYZl20rnRPD/g8yO+kxWKtnIcD3EoCUIcJfuQOIqvoYmSRA2KdoOvQK6bmUF\nuxMb1KtyuTAZb0YII99w1n34hXQRO7GicWdqnl/u/HJwbZSdfKXylP8GDGMm\nUepK\r\n=YC0Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGLOMz1f5JdrsJypea4GqUUoo2OjCn6c7Z7IOM1pDCLaAiEAw8s8LVZfjKy76wpH+mRXkEVNUzWKe78fu9hNR+AA0D4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3-next-1599138733-90d3a7b8.0_1599138834978_0.2806947092867156"},"_hasShrinkwrap":false},"2.6.4-next-1599139174-7d549962.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599139174-7d549962.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599139174-7d549962.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599139174-7d549962.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tNdmdIIA6nXdBHDBLmyy9AhZT+9G0Ts36bwqRPC/FKOpIs3Gx36ppbwgxZ7snUxdkf4OU0d8ofxvaVuivNhQVw==","shasum":"f338096bc9981ff2f64078829db735f7e3c0c6b6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599139174-7d549962.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUO2+CRA9TVsSAnZWagAAAsEP/36VO/ahULyI8fTnDJ1Z\nmow5M36oIuPh+4V8TpEWESUFMSTG8D/zvy/5y5nGBPXF4NsV0dZsQSXgWJlt\nf4mOFj1sOeEGlbXkleM8TFBN5uigJQxQtScYxGvMwy5gmk36XxKU28VRXDs4\nv2ChYN3MURfQJG3aKU7LElmdTgCbxxwhmIOZi5h03dMkoS/ihiRhomRKgugp\nAns/1LbUTpM6VRpi6N0oMV72zm1I3qBg6znx6XjVRLRII4TetjZZvsIDgV/N\nb5kEpOFt2TZIc4HmUW5RT9zaIzeASkVPvBtpF0ixiFLrl0SlOZd/Az/li7Nu\nywdGAmvHbO113AXeAhU+6rw8MYwo/0iKQnkvAYaagMlZ4iB7Hz+TUZBVjS4n\nohmWAonB7ow3/ZiMlxc/2OvvxKLdg2k/Df+/JZqT8yq7/L755vvHhCYN1A5S\nD5Uc+YHhoBAK6QfsrAQ1myEj2pa4BpKun+edRR7QUs/1L3YUF8UoURa2qt9/\nADU63ZhIAy7hGbFT02v+WBDwPxqpn0HOBRkGDTr1wU9uUoovjyKSqAnIfXji\nC+STJHxJSRo8WTPXt+ma5i7u90Kn8lgTP8iJGSY/zD+3Uks1C1DJ+VEfJEYs\nxiai5ttcvAbK+DqXuNk9Waa4ZZiVB/iNP6TZYpAFazDS3+8qkbCWg4T2OWoO\nTcrj\r\n=gAVv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCULkggcr65OnlSTzAkdRTpxkQl2ZbK17iOPkhYMxaQGAIhAM93adXOel3rVx4QtSTQuFbWGt743awgsavgbDECSo/O"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599139174-7d549962.0_1599139261483_0.6677390740360025"},"_hasShrinkwrap":false},"2.6.4-next-1599139273-d01ff34b.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599139273-d01ff34b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599139273-d01ff34b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599139273-d01ff34b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-idRGFqyc2LSVQDyz0xV3rErMojCQbnAbjIpuwTwUpBXE+VHmNGukVgfJYSthUeHxt+mSu06rTinyk7QMuXD68w==","shasum":"a35fd9c4619e5b1678727d309bb37bc0adaed4cb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599139273-d01ff34b.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUO4jCRA9TVsSAnZWagAARXMP/ApepaEgK5dhyhhyQKnx\nRwzw20y+Uzjd/eKa97452N1Q1zregf2jYa3I8FSISdArHqJgE8noN3P1ZhZ6\nmFfddK0KQTfHnmRMjeoJVkV+ie3I17cl3oAdS23Ic9FCsbRZewp5mRkAhmeS\nJ15NWcfkEre5VvcwcqFDbek1SbPXhQQAVlcwzzgb7/KQRWnE2SWeNku6oOEH\n0ETuNlWeJu5jK7BupZFufAxw8ybMo3BgV76CFL//GfsXHYmskAQltchp9ObZ\n1mS72hhkBSkvQSjuJ4oI4bTQo9v8p0N4rRboQ4z8UigdnS0J9hwHATHde04p\n7eHPF+tF8EOr8UP6Lv/igzhIeq9jrWWJQ7SEGkiNsPROC4BfgiwL40uZwZAL\nc6/u1dBZnmj0ltRw4OiT/dqDKzVi/ChUlJqnaUBw8zO0O+UYB0lP+UocdIJj\n2HMeP2nFkAlcB1cwkXOx+h3APyeoRf5ACyx0DQy0zMn0uIR6W8Cvar8UaIzq\n3CJH451p/yN7ULCIuP4Ul6EaiZVGrEVVAe3cjALz87mH4206m/DTWO96Ua2T\n809cSvncNihFDvSx2wsA9EeKjwt4gPLitXfJQFzBywO+HQIWEqkjTthzNdeI\nlzpTbMLFBuQMCbd/mPQiUnes+vVbaLxhOyWmonCeQCeQALKm2dX3QPK7jfZq\nmVRr\r\n=ia3K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICt1jOSBWAfHiCyCt4NjcBbNoD74F62nLiehE3qACELkAiEAucV6nyX47KpDNmx5cIdsI4OW3PlxN45DF0xklQS7V7E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599139273-d01ff34b.0_1599139363255_0.22703443646112986"},"_hasShrinkwrap":false},"2.6.3":{"name":"@xdn/prefetch","version":"2.6.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.3","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.6.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+Y7gIT0RJQhqItBhBSX5tUUhQACS9kNSRm0l5D/sfmI9YQpoUCJ8mC/G5FDbZfLZGOz7miHVkIrzc+r51DTKKw==","shasum":"0dee5bbbdc9d97f7f96714888b1f7f18e436b155","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.3.tgz","fileCount":56,"unpackedSize":104358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUO5mCRA9TVsSAnZWagAAxcQP/04olDWilxrdItHGiZDd\nBNtw0sgWGdz1AtMzpMdFdabMrxX0yozygtViz5vmylqEMQqrm6DBFQG9Opn+\nTfLuw2AeJIc53XiP6JnMsfaes00TTRMYLAynH5BPv62VHC7VFKx56/XXzQKh\nahWaZe4JWDA253kEeZexJAKkbCjqruUYTkiuMIEhI6ytYT0k1fd1jtkQ839m\no7lgOusNDYO7mQ8WdG91pQDApNTfRbATN7xjNpQKxeeXeUrKBGRr7M3D7e6e\n5HTKtSpM+EHQJhC2LVqEzODd6J0N3Hv9SaNaobfdJJoBEaMJvT8nqGNaq1XY\nYySQ5sW6+KEjnBr3XByraHioujClA8ZNWAvq8+qoBvvTEIcBzgPu0QFDDZKN\n4b3yjoSZLiU9FPtUIkIEAVEUAy+NOSxru1Chjz5HWqo7HA+yf/iE2pFuaPzZ\n1LsqJxzZdlmQLt/W4uyThKn3moPBcC5iFPbwe8YGXxqZsjSnr6m45I7h0L6N\nSVJC6/xtcVhDxyk1Yb5II0+2TfiVnbHkn0YI1Vyl2iRjmWpKIZz/JZN7t/8a\nh7FO+h+Notyc3W7FoRJYYvWLlPWFthIb4Jqot3rcTQ7MkBqOWbcpArLZGG7b\nAGLQ0Ua3jswKQIXkDERd9MLhFFkz2TiDenvqVUkTayNS52pO9qAjHI1fBOca\nN85x\r\n=zALx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG0sNjEGkovujxR3RCxR/fe6v6qdNiyWa+F5cTY7FKaaAiEAjH0FxFJ7ngceRrfQSHPOC17mxj18LuujPMiT3x9EoAo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.3_1599139430326_0.8570377210128923"},"_hasShrinkwrap":false},"2.6.4-next-1599149468-786b16bc.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599149468-786b16bc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599149468-786b16bc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599149468-786b16bc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OilJqzLJVV8wNL5XQXOs0B7AymWwLSDUAXNI7GjUvq++zjDwlnocXYQ1foYfMm0CMGl5Gy5M66MI8ZPqvqfEHw==","shasum":"bde98bd0ca824e572ed7f5af9ff0279d5c45b31b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599149468-786b16bc.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfURX6CRA9TVsSAnZWagAAmP4P/2icbueBwbBsALkhfCH0\nyN+XwO8QjdNuic0zXJO08jtV8YprV4IXoHIkYzYstRPHY3pcbpvl/kHW9Vc+\n+uUf0F/gumoYv68JOF/yZCOiWp61Sm+WspSA6mosSmucIq3TdztY4IRliQtU\nqTmld+zbRI5SfG/H49nhKhAle85Y8w+rgaB/UJHpQlaXVn/7em7POKVemrpE\nl0mE5zCipwVE5pYuOXnP6ubHxAPvuiq3sYvM3JoPsfNvBAlsUDaqywVA0d6L\n+G4qK5jOlXIeE9ktK1dWaZh2M7cHS0e/F2Hf1eY6248dkoQ2b+GEOJA2aFQL\naIsuFATvW1fV6nH14LTsvYH+LG3vSYdkDU1SZc8l45hmr95EqYQ8h7Q24cbW\nps55BA+of62CPI2sXnkrDuhA6ULvLxi+q6CTK2krC+WYuRVULhdt6iAV7IJ0\nfdkbfWKewvYptkfG7Y72yrjuXjPGb5LjQbnPb/XKs2y47AnAQl6UIB3Hilxk\nS+1RZo90ebzsXVnWtwsBW4qUjMz/M5yDFhX4c8/QXCK8gXBeGbbbwEFeRpwn\n3WYIOyogZYBFo3VIT7v5ZBeBURBpc+Ykq9I+vsYWv1lFA/XS831gxOIO62u3\n0X0ZcQ0ha1PCa2ClJIltyTfTSyiaX6qmn9XG2sjqLd5NTYtkmIJYOgM3s9Xw\ndhsJ\r\n=pK3X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICVaC4682qqYHjP3Qst4EgTVao4oxJjQW4FAed7J40WMAiBQZIDlZW/pDh6RCrCREAAOi8DRzonm8oqn3zvgPwsy4Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599149468-786b16bc.0_1599149561712_0.974429444202022"},"_hasShrinkwrap":false},"2.6.4-next-1599153988-9a02d408.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599153988-9a02d408.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599153988-9a02d408.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599153988-9a02d408.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FjjXoJ+CadUo6pCRO5Sf027ZYpkG18RJJZJbqdIJ4OFqr+zCWqsZmHkR5RNpZ4lnTT/9DEUANsxrQYU4hbBc0Q==","shasum":"fa6268527bcbe5a597bb7bf48113941c65333a96","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599153988-9a02d408.0.tgz","fileCount":54,"unpackedSize":97277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUSesCRA9TVsSAnZWagAApp8P/RSERgRi5ILO4fY+WI6w\n3j3zWhQNQcU/nTVdvwo/VmF+h67dTqYNp+MOj9kIvLZhXLO1a/WuUJxmO0UH\nft7VMBz6JKQ9iQNZQkBjrp8jkihIxUWjleJvaPMm+Y4QFiRUchHqrvnFkqdG\nGhVNSQLURa4WHg+5/I2zfOmFLhe3GHOpg+jrfcG4HLfja6LFTxYg6BSzIDRn\nVtng9h2JSM9XBV1rkPvzRQri27tn59dQkVd1r9XNsdSsVOoCSyQlvG1gqcuf\nsxrWdjWeBnNnwqJggnIptW4F1bR5f6EGlWfdcVtUsu18Yyi706a3MaeaCtZL\nYrDLFojJfXse8chXmtF+t7l9YsoJ3ecB6w+t8Sr9X+FLorFw/+1VFrhJsfTi\nsC8KUhyNN+D87LWs1bAgOemFnbbBllF3flcwKD686WFr5NjtQ2pUzhsrAzTq\nJRzEipcg/SPnEEJVcNPSBnkJ7eTv0KQJRvw1SN2H+W5CmZ1os7zhCpr7oyuF\nj6BP3KB/D9aevTMO/CUWk6JqJdkiRqfkpDpSMmn3VB5TbqaIxHr4tbGuijcd\nUVEgQyGa3kA4taNVsX9le3JEpBpnQn825X+XRCI4Z2bRAh7mgci6V5vtVAK0\nNF5Ba4gBNL/U8jKkHzwwBTfxz/V3Mm+Jf8BKgPVzkiuU35Ty5wEzfFpcqcfW\nCfnl\r\n=eckG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFjwdDU7mRIb4YiJxgXqRhAmCO9f/KbapUsyKRm4+tlGAiBhZu33RHFZEP3oHRDPVVMGBPFJIzCltaKd0St0ww4SAQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599153988-9a02d408.0_1599154092119_0.1668103534646863"},"_hasShrinkwrap":false},"2.6.4-next-1599154085-5f50f7ce.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599154085-5f50f7ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599154085-5f50f7ce.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599154085-5f50f7ce.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-n/bU9BRJaz2t4157dX/lMkI7/eXIq+onZwqw/mwCs92ry1snUy2pSLn7awFTEXNVALRJnB94YRZRiAWl5mUYbA==","shasum":"b11ee4fff3f23f0e25546083e09ef0ebf47148f4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599154085-5f50f7ce.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUSf/CRA9TVsSAnZWagAA/YQP+gIQLyfyVTA+ROl57QXm\nL6/HqUYDQY4qToI9ohkH5IdmlfijDyMOv03Z7SV8gIBzHKGKIGQhI6jqsmss\nu+Fywc0GIM9sadsoM/WfKA6axen5PFHotI3bEJPknKB4bFzz9c3wPKiRRC9g\nzjoA7dqIXbABw5Ggi/JFxleVcyvj0IVtPw8rkedBY0MX5NxnVy8g8dQjaszt\nq6UvSylfVwt1v8LHxp9ZH+RwZ71QXqUhlDOqq16Ojl7tab3WRlSq7GPkFdN9\nCb4K3OKvOuftuZ3odXn0cLBW8FJ9ROMe/4s4J4V+FwS0gC5qX5hsFbE0YpvS\nkdsm5RUQnBF7kUp52NVML+Gno+k+0r2/hYluaLIB7CLPJHdDh+mR9JlvmgsS\n1X9wF5hsDJtK3opoC44DTDgDkzFWaT3JaqkpwguK21CCuYbgd3M4qqRSgF2L\nEDgCa8Hz1pP6dFaHZoWqbYpqqzofx2Flmqhz1iRp8y9K0dHobg/bW/RwcISn\nMGbcGUGZZUKPr/hbZVE550cmO5GzyLBiKqExbnUzFI1LfT54QDWEZAXw8hWJ\nYSuV7opeAPhqLYWkU04J/FhytZsiTxd5iywPhYicj2CbgzYRsz3W4NojOVcv\nlQHhuo6tm2COvDXTbRPBUqVch1g4FQjH8KkDabbQeMG0J1xczWdl2ysD1mEi\nOQSk\r\n=/Dyd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1iCrF8s3JqGA+hBArDCnr9OBScz7ffKA/kSh090t+gAIhAJ5+9hbJylL36NDWeDCTRPXBVvOA+ICN7QAhvv4g16X7"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599154085-5f50f7ce.0_1599154174731_0.6531585512125382"},"_hasShrinkwrap":false},"2.6.4-next-1599154088-5f50f7ce.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599154088-5f50f7ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599154088-5f50f7ce.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599154088-5f50f7ce.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rpDmuziOD7J9e6+ymeeBMCRWzsX5q0Jgo5ixGhoc2OBmL3jXVmzBcHWFxmseJ1CtbTffZMovBoDf+ZDt8WNxUQ==","shasum":"db56fce1c5754690c2bfc0edf31761ef2e86579f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599154088-5f50f7ce.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUSgRCRA9TVsSAnZWagAAjOQP/03TeisGeWn0shCDzaDu\ntgB/xE7aPxkNQ+TXdku67ERdv/wdhyDznzVQEMiTkibSUyNa4m1yrslpguVh\nIcE1R7OYR98t9UL3OJW8wfp4c3hPEyLYMQ3qc9ZTNquiEeaI5t6hpqNIhqW+\nWSs34J7FK+TDIEXJ1gfj+nPHvT9NhuDTHCnQKoeeuZV0eVRnmk7EkMRDRy6a\nElO1ieqTs4BS+nGLrXKPyBxDbhhAzhyOaCbDNJiT9WSLFz4SZlLrMrfJOIs1\nbMtWz2tF9BBwvCfNJs15TuWnNr5eIi2xkO0xuEaT8syUEJ+P5eREWOP0+Fud\nQ1OEEFCJUx7e5pkFq5p9eyyvZZqdIs/0RFP7bwLEv5GqsZwYsEU8KoIyNO/1\n5fBLHQkEs5ffi3pF6yo2XMAd9M0ai39sxy4z4U6kmLmWPVChGdqUnbzECz7G\noAeNsMs4j1jLIJVXpaggkwIMFrGnw9kngCHTACO8wbczJMic4E1hgdtyIIqf\nyAzLfhLeKPRlDj/aZ7U8Af7nG7vGtsa/mY0KwuQWIC9NW3Eii2sF6qSQivIL\nOpY6SSfEJacbf4eZY8wQg7NqEHhHQ1naf8bMPbQ9SQMvoCHX4fnAfCVNo+3S\nt5FZ6dn28u+5LCWjXEixzn1/LE+kPOJETYBy00mPuOxJ28tfvBzvhxsQeGrI\nb64X\r\n=9Xnj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxSjCNkZQvpw08zagOUBg5fR6TrIZAOh6RhZPVl90h/gIgXPOLRE/oFCBbtUryjvfEnsHuSI7Blz65bYY8IcO2MSo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599154088-5f50f7ce.0_1599154193298_0.627074179903806"},"_hasShrinkwrap":false},"2.6.4-next-1599154082-c09234b0.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599154082-c09234b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599154082-c09234b0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599154082-c09234b0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GuBINJmO70ZQ7GDhNgmJSlfdcmmTKYinnE+ZKdVb8oIttRRCMq9bMNalLb7bac2N9lbDTD5VoWlKIMWLyWCfSQ==","shasum":"7adf79d914ffb784ddbb7a0aa8939730d765c806","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599154082-c09234b0.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUShVCRA9TVsSAnZWagAANLgQAI+rBSK8ZvsIUBgLEVO7\nTzraUI1OIhGXGrsmgdUBGQouW8eV9ctPucihphgAK1PgeQ+fS5HNxIQbiilX\nD+eLNcwTAuVXkyK4nwGIoKBCzj12kjA60b+WX1j62czURXs8oc8C+FEcxzv3\n4vfoD6iaRrxhcj2BYXp020BpRtPfb4caihQchUlUW7ya3Hf0TARRg/88dCFS\n2GWDQudqWNDgzPw6F+A6wUWj10wm8voOib42XG5w14SAizOzSXQfQh0NSDAR\nTHxVw9JNcvM1oL+sHWl3qNhGllDWAkM5YwSGHEt86EHLI8nwlQWq2w5MREFR\nIGtOhlbVsXFffDnlZAownGIarT6RkfRK7ia5YIKyu69hQIbwqRRxA+BTzh1A\nRwY3FXhEbnfO/Os3P1M4xENxvF2dRbJI5/eed1M4KijlT8Zf2kJs5n3pFCkz\n1zIHR9ilSeO23IgYN4NTFvNUGQsrOioU5e7h5BpJatiGNUqvVfJpw7c/9nYE\nTp9zfRhyEkAeLgMacml6xqGDQoUiNuXQcW96zC+6bIlyycVVKkRWD4VzNXqX\n3vsRqmN7r97y+cis88TKqyN7LfMXQKxeXNEKHfUACdbU/eWD+UroFc8GaBZj\nGNyKCP+Kn6ukXkBt3lxow56VKEGCp/1YcF/COBY1Abyb9A5hVhE46wWf7LID\nHpKF\r\n=rCYF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbpuKXFzchAjBZyGp1scXKghjn6A5h9zlaTNwaNHM1xAIhAO5btbnDfAviZRBhv2N8546kUMH3wutStU85A7xZCjMx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599154082-c09234b0.0_1599154261096_0.563622520546768"},"_hasShrinkwrap":false},"2.6.4-next-1599156300-d9a65406.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599156300-d9a65406.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599156300-d9a65406.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599156300-d9a65406.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-F4LsP4/r6P3wc78HYF5diGGMektDG7mIrF2ibNyyA2FRESX1o/k4jAbCMCcSRMxR6NK5+v+t2Qa/cYLxiIrdwQ==","shasum":"d65aa13563bd34d61ef172b78c66c42bf410e537","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599156300-d9a65406.0.tgz","fileCount":54,"unpackedSize":97277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUTC6CRA9TVsSAnZWagAAg8AP/3z9+pN4ezmBZUBuCPg9\nR7BWtbxSdGVtsfBC6dAOmE9SoFLefGF00WyEH0hnHBs3RptT4ShYxsLEBe27\n2Yk1wI6hgsp2kXgKLq0qkgoGV9zYDfjVo5LFBGAlgcpZbOLnz5DBBIm0+mYJ\nXWzZ4ew3/Dj8HROZtDeKjixyHjN6QJ7rT7S79gULTh1r4q+Lm6EFDQ2hdlu5\nZE9djI7KH1x6BuHzi/p/7aeBrPxhrTofpU4CCVqb2/ppiu4QdeBTwZAsh5h5\nkpzYre9gtwx3Rnx+RHPzcqFJRiKewht/HhSXSVLELJswXxVJdSX3c/hLvQzo\n0WtgCdfRUP66m+D9TAKgZZXQnW0WU1tkpUHjhnEyKXkiesFutBUgInmgc6Jw\nQLDq7tpXyWdaqzG/rCq4NEzHWevHISgxftiKbIqcil7yetie21cmTpg30tSR\n+8cl/5u2BguYDigXeSobZztSHXz2fsKxQHX/GOuG0upqC1DOPP1BDSgWGJmo\nTz0M4mopPkzicBRCog7m3LVsJD+yXjpJp277n44X46zIE0NJTvr+QR+5iYyP\nkuGl3K7Hy0GharaRjVsX31D1beU04Il9+5VZTG567oJ4rLLzhk8sj0L3yA4k\nHT562bsKvXmSH1d8nEzdNq15bWV+8FimXWNovoixz4WxQcPBqR00lUDtcvgo\nE3zm\r\n=1+AL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFF8i7685UFcGEsrcihO8jq27CllZcXT6DN63hUbeFa8AiEAjMSr3lArNP5DFsFHHGEYnpRaia7JP0HKD8AL6Mkc8jA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599156300-d9a65406.0_1599156409713_0.021365448878667648"},"_hasShrinkwrap":false},"2.6.4-next-1599157276-786b16bc.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599157276-786b16bc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599157276-786b16bc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599157276-786b16bc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-fxs9QhjCzf+Fq/+jUhOP4TNoWlX5Ros72R9OOhlGFZcGlmlR6jw3znJWxcmRQUMuoupxN9Akw/yiJWLJtr9HuA==","shasum":"5b18381c8442d8d9b9d66f1a092e5b643a74e7a8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599157276-786b16bc.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUTSACRA9TVsSAnZWagAAlXwP/j20ryGJL08Xhy20PxH9\nsjy5eEOqLmh9BpjWDQceBewpwJNtWfW1E2a/Et7IdTjTn166vwD+BdJ66g1z\ndJFB74CJG7fu1X8d4/MDmPe84zwxLKQCHWsU5p2nno/I4dSCRNLRYykIuiRz\n/t/trJ+MUrSy9rArsAnxYkmbkMnUv7bPuMZK/K/Y08a5kxlAINTodBGZeFJm\nY+1rJUFm4s2XAuvyNsj1JiB7o0kX5pbOOF/grldKlSLCOvbMKQwR3wWztnZH\nlBtZlV/5/I3Sh4UlJ+v7Vz5Qj01K14JpOPH4//Tj28HYk0KQONXaqxF8pucC\n5IrM/PXPBUSQWcfeqUH+DNm3Ffxys9yjpSogPQ1Zfr4p3huWThkXAlG0Z+Ux\nSjgGydcVFpyf+H5UV6AYvNspaQTn7qijaImf3H2INvxukieyfqLVVoybjyNY\ngISghP4MJ6OGgNP7eQxiq6tAhoyeyASXkJQUti1+Iy4KXx+oaKzZTKzWUE1X\nwQT1Eh3PJBW6hjYQ41WhTBkZZQwFEtFl8Og6Bj8R8qG+igblDjFCUbBFCJdw\ntrlyntuhXilp1PKcRTPrtKRWXPhVlWC0BN4+An1K0e9OgfWYOLCjLepwO/Re\nmodhi8QMdsB6pytCuzzeq7MxMJngb9sAlmzWB5C1mSXFZqBgF4+anN4s5iIt\n2jv5\r\n=hRQE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPcTl76CRdS04kIZ89MDp0U4aqpYHyI9LWsMMu9iKG3QIgJDeKf5pxqIPPV8Dl7v+i1dTIyk2WuLU2ohYxriJfXvw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599157276-786b16bc.0_1599157376185_0.5932921612983406"},"_hasShrinkwrap":false},"2.6.4-next-1599157823-bfc603a7.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599157823-bfc603a7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599157823-bfc603a7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599157823-bfc603a7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-bzGZq3N5WqqbBt8MvtlEXr+eA1ng0b+4OkPgm90ryutlRoot8CoudwVLhIMKwlxFR1HiL7uNsps2skMJlbYl8A==","shasum":"8042b39922ef66d36f14b9d28bc180d9ee1b81c9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599157823-bfc603a7.0.tgz","fileCount":54,"unpackedSize":97277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUTafCRA9TVsSAnZWagAAUFgP/3cQ9niI8OlU9tKK+8am\nsDslZiwIovBYL1LJj/D93MfhavLAYor04kulVnkQon/mgQIkVSxMzC3FumCU\naE7RcMz+YLZy9BtFNs7eiADbzAtQQaRYxZ2S5Ie/fNFmVWalZQonxfmVo0JG\npHO7d6DTarumuPMB4hcHz4nKQ5NEboIlzv0vsO9gEcuSMwLawPPCISZhyuBp\naDK882xh/UBpOAI0QqA3K9KZPV+vYvhaEFlQcNcpRrUpEF+KJwg0wrOMkH5O\nWawXc+IurfjDAzkIf0P0UY5ICIsEY4PhoKX+ceTHqiR4PRAHHAlOjZtB240i\nIhBMHeLVdHVoJWJkTLvPPq0HKxQIUg/P02p8CQ8z3OV/N4Hvrx8+MmvKKK5Q\nhfgtrsXFDw/2nNZ7AXcA1Dgo7/Yy5pxbxhr387qMij9faDRlRMvxqRjbPNsR\n6p9JVtBHEF9UDQOTQD9wGnUgLqOjuBnd89n3/z9NTMH4lSBQb051MvmgU6NH\ndQ2kF7uCi8jumHbYf9C6W/F55Jx9TLLBuOPSriMlUUTJGUO3svyivpBFXpQu\nMXB643NTDP0kWW5CA9VuUd+5496ForFBbqGU2c0lzAD8T9+9mcX3E5+DZO2z\noSexjWRR+GHkrZX2SdE02mA4Zy+0MSPuEr97yx/rtjriEwhZV5qOx3r/zXD2\nUMvO\r\n=KCuD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC/NJfsTSTpMykSQwzK8dbdJHXH22w2FDfGPA8sFxQmNAiBiPrlPZikPkCQYnJiaeElBJjxC3EWBM9JOHhgRI5s50g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599157823-bfc603a7.0_1599157918768_0.04055366017412587"},"_hasShrinkwrap":false},"2.6.4-next-1599158958-d6044d99.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599158958-d6044d99.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599158958-d6044d99.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599158958-d6044d99.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ladqciblAB5y7uI7qoT0BEPJZelPMuIra1veGPBXJRFA0SXWOyTBznHc1j2hiMKljdtBbud2NHNuDC+kCyTSLQ==","shasum":"d2a18b47c2b65b0bb1973053e366fb7de3570751","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599158958-d6044d99.0.tgz","fileCount":54,"unpackedSize":97277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUTsKCRA9TVsSAnZWagAA0/gP/1Y+48nKUr/2yAn8H5Sc\ncQ5QQSpd9LdkYIrQpyUwJ9iw333z+pBZ0D81AxnmuYkPnMGhBUPl8tE9zkta\nqGRDcm+Wb1LrOXf2WVIxijjm7XV+o5Qd4o/OmGHuN4/PYg00BbTlGO9TIWgg\ncSPITuJhHRbYLku3u6yxgqyUVALxxoOLMSZ8bQI87nlM+y4Vw4ulvxZY03Ks\nwLQZ/7er8EHOiO8XqDY6/ioEmzy19imS0EcAtDoYFgTWYXjs0Gp8M4pY933n\n1BEYwlzUwZOD6ydZjJlBGBAJyKWjos9sktrKko5ElpFnQHh50GH/97Qb4rIA\nZb1dqy1kap7VCbKBy6ZqHsQPBDlN3czYUulSb1EGBZCYuClab+wNxbyWER/L\ngJLHz13M9mc2oKQixtFgZeE6wyx4TPQqCm8RsEO5qYMoyN8tAF/mh0I9DjEA\netbiqUw/HlwJFsFxbMh84jy57c1YD8hwT+yqCxLaCnLEqjdg+XxDyrTF9XqC\nRyWVXVoeAZTqmTNHvpodcXKl7dwFUpuUj5+oamCPmA021ikCkmX8s/MX0ejv\nPjQwT1x9HZPRch5cBcaTple10rZkGTiUWC3XbR2b8J4BHCu6UQJI8WOVnLLv\ng2AtkY3y4AJTzEeA7R8kKYejM9ANdMVwIrjuO65o54PT1a3pety7UA8Vjl5d\nnOIo\r\n=K0ug\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxUZK1IG7xElU0hOS6MwxkFhEvAQjW4vAbu/S2BI1gagIhAKK+nZkOPNR4xY8JFaJyfCsvoM4Rrm1df66JkNXnsYB1"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599158958-d6044d99.0_1599159049816_0.6218173989098952"},"_hasShrinkwrap":false},"2.6.4-next-1599161692-29d66b19.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599161692-29d66b19.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599161692-29d66b19.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599161692-29d66b19.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wsr5uZchz7ptZf12U6d6z8q9Fxc78yV6mEm1lK8NEsgiz4F8zsQchX4rofZqIQ+g56pJmSPqqyr0gw83xeDJag==","shasum":"dac862e0c61830062027af76f3fcd0b678d22438","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599161692-29d66b19.0.tgz","fileCount":54,"unpackedSize":97277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUUXDCRA9TVsSAnZWagAAh58P/RXRvDyyLf9gph2rlSQv\nMpfPCp0HPZ1hSRnZXUJezun7HPIeaRu5y+jCPdWznWT9YZpVhlyJVIT/XW4A\n2yETh5dxByFWYXTNMpSpXCfzhhtCUA2uFZiHguOAaYUcJH5Om1alnQcMqUSx\nhX/6DQiErSNzk25XiUruoQX5jNr6QvD2Z++T0pwROc7/q/TSll9U/XUUfDXS\nQ0XfdpOZSs5gINmRTiwcFvLiH7+008sLHTMErpnj4D+DzNAK3NgEhqkBybEn\nJ8TaWdK0EjLyP8k6SAppLB4ghPkbIqlMnqE8+Z+ORn7YPrqf5Deyp7EDpawv\npWcaL8OmO7geEZK3XduHBvICuOGyqc/L9xvQUQtOwmuCMx22hUJIiSH1fYtz\noPN3C4mFuLdpjwYdxJP4WMWFqPOZLS6TsZecEcoRdzpe2zDW04JLAxiIPQpP\nck56M3H3HKNS3n7rPJUSnrjKgsD9kSrpDaYEBD7iDKqGrX99mlxiv4QwlNb4\n58dVO9cMFx0LYfMOFewcc2FGREQDUfyVXijXWQQfXtZguruLISh0VdZ1d1zO\nnrQx01RN/GPnu73NFDG48bQ1DcNA83N6g7DjyhmvcvBC4LOgxz+/kCscI+52\nFAdlqW8DVltAvQXOc6LXGkJrCF4Glb0eoN447waSoYtuPKvHnNHKjewfFLRj\n1sku\r\n=mFsH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkLZLRUf7vh8Pj5Pg2aUrJNy1pU5Xxs6d6XNAc0Cz+vAIgNifZEvUvLx8RYWcwH6rJHEH2A0J2SY7C4jva2hvDbio="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599161692-29d66b19.0_1599161794555_0.5796620698773038"},"_hasShrinkwrap":false},"2.6.4-next-1599162124-569bb7df.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599162124-569bb7df.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599162124-569bb7df.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599162124-569bb7df.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pxDwmDefPJk9v2LMiFG59GNT7B+7nvR8/vHfuBp3ljX7yZ/gpjdt8JK5u7iN2wCVtrQokQvpo6eVJ6Hrom9x3g==","shasum":"c729b58f939e48dda70b226fe7d452f10b770780","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599162124-569bb7df.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUUd+CRA9TVsSAnZWagAA2qUP/1nDxc8EfGLZTQH75uqX\n6K1C/ggEF4hdf177Fz93uEMv4Gv3GZvG+oFsFEClH+sh3WSpruTOJsbYPNnh\nJi1P7ydIjbFtbgAVkVRCgWLj6bPn+o4J5Hg7leeePYhbICiNzNyar2CTYdVb\nZiEZz4+42jrQAn75wztEVpqX6+83UkX1MeXSiD5CjtKNRLLDMEDmS31Wcf+W\nQiIiFNXhmA51EPeaFqKLwy4aaPk3to5RvSb+wh1mJ/A3wh303t52RkNkK0qR\nYATo0Cn9HIwmg4Mm2PTQDwuh+s4msE8pBsOFzrjrTAJq3jOGwjhk0ecsEBUM\nIPizR8247aJzc2sQPvCfbuF6WtGFnt5UTThgFlXyhTW9IxhViK4+dvetArmF\nn0JzDHauBo7TjnoVWM89LVRekPPau4uiMZLXDwKN8ja23HEe4hqwUTQJB6dT\n1J9wqrNR1xpIqQncZ43tBQe9umDhvecvUDZnWjxLvVQtAoyZnIC+63wxuNQf\nw8M9QAwTYtWnHSoRIhK2Gqi0mfq0l4/Pbocpi9GYMTakcGqMzCEuOe2j91Tm\nFi4U89zK9XJbPYXeB9o6eeD9ZDvmkxp3DHMACT0qcYf6QhCzsYunl6Spz+ER\nEY4aXJmDbfVfaODZo6dg/R2Y/9cuLcp3BWJwaz8tBM0tMDpZADDYAcIUhvNc\nz9RX\r\n=3z4Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICCwf8GnBWGpuZIFkPLuDA9v+HPjVnm2ubsrKq0jMNViAiBQTp/exS/nDoNCwwtObq7qGJXK0X4EaFlcQ4QGS3zlaQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599162124-569bb7df.0_1599162237739_0.9543708739603791"},"_hasShrinkwrap":false},"2.6.4-next-1599162938-d11940f9.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599162938-d11940f9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599162938-d11940f9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599162938-d11940f9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-hcZSvEZcKiG2t5jY1/phongC6LiWqmEhYvVm5FjyRBUfiW7UYzt1XcWtbayOf8nEt/t5YqQAVeinZ1at1YuiBg==","shasum":"8835ec6006a1b1b619c7945ba0474d8b15c5ea84","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599162938-d11940f9.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUUqcCRA9TVsSAnZWagAAYEUP/iiFy0fOzrSKOUiHQs0P\n1DQT9bZyNJ2cSDpjNtOhjKlYHvCLNWw9fMTHNcPGBPEp0Sj7zus5Q/61/Fkp\neKHYlMff2AlJJTLInf25kep2ZnudhJE6i/vE2N7IdbaNNDlGAay9Qd8SGi2D\nlJ3RdK9UWYr+bKDCUrlwTqZ6D7/+ME3FUkdmABOPOTcYscjKPkgTIxuqq42W\nv3sR+3NX3E78y/vL4qr7f1sQwNa2nmqR16jKPcllEJXdFaUngGHNFzdDBM56\nMmR+ax8YzL2Rfw/DbniDzFydMqlbnQ1ttkUN9yycIb6ZRsZ5cixrFM1JUaV9\n8UxkTu0bC8uRizJzCSu3ohQZotte6fy01xQrp0IZSR8A/Lqx9+N9ZZbJBjHD\nPGAXsa488aisDsCMqsVYjpPajwiw/EOoHV7xlxia6NozdeKXVumQxfYt/N+P\ndvH2gDz/4E2TUtdTKLNIzPFfqiH4dI9zE9HRwhbGwc8jiAlufsMwnwzGXwXh\niAkI9ygX9QX9JhjVmhMcjmIGoXMMMZzIXDFfoJXid10+JZ8q7MDh9CcbAgyH\nuYSJIOX4YQrRSw7WeQesOFcGi3xRKigE7oJK23vWpnoRR1RVTqA24FNKcPqq\ngyTM3i3aIu+4ANAxnELYqZM2+ee1cx5TIV1UctOOQZ8pdNDV5nuV/TNye/TK\nZwJm\r\n=0sei\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1Fqjk7RyVhUYKFjYyM3zxBARM1IZHqdxBncChnBqK+AIgaxUBEl+TcgNNjQUGOc/N8/zRVsVfzJ+S0d0yXkgcJZY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599162938-d11940f9.0_1599163036534_0.7431557990078324"},"_hasShrinkwrap":false},"2.6.4-next-1599167216-29d66b19.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599167216-29d66b19.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599167216-29d66b19.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599167216-29d66b19.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Na6k0PKgvCuzN4c3TmuURPzwj8aYJGvYymNa+uKGfP7VF69Y1bYKJ9qA+QxRiCcSQgH+MLB5jgYcEb7H+9b7Tw==","shasum":"3e521c13246ec84ea9dad63f2a45aaea6b38d4ab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599167216-29d66b19.0.tgz","fileCount":54,"unpackedSize":97277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUVtICRA9TVsSAnZWagAALQkQAKGNVaZh/ubutUEnGJPu\nC/TE0nD2gnZH6BUYriD3DdD0D8T8TZclOjJhKvQAKAxP3A9sp+xRZJDFzboN\nxFSZtnI6CRqdeIF1PK5roO0E7ETv5SWwrJOus9rwHQ+fqbSvuCch98rFBzOf\ncimQkrzu29BQQcMqvmaRmv9zM6YNdOGBc9k8Vdk3nj2wlHDjHiRmlb50juj/\n78xWfDu5js6pio+/ALEObwao1TvsF6kyP3amwdWLAIEofhP7ZZnETWNZGYSl\n7XUf6XKBX0mXZjPC1wKCZhuhWRdaTnFQJtxqA75dcM90W8q1yAK9K16q/m2C\nvD7M9i2xmfrw2QLhqDuzY+EpkXjcfm9q8XTLKPy+SAzbqn9ES0hOGrnlo2ye\nJPiymy7VHOqg8CHCTO/gN23bZUF7zlj3v3P3lhOWrxz/PlU3N6vvnkioJWuN\nez3f4bFYAQZMQab0jFTeV5slPh+EYIKhxz561Ta68LvESS+M2Vn3iDHlCq0T\nwg7fB/8ySOjbM++lTp6WAL0Xfo/hF3zQ3U7P8Yaj4S6CJAOqpsOZSCWm98rl\nA8HLTL+3jtNVy6lQd132Hr1vhRYh5WK3799kynU1LarZOau2fAC9JW3nfa9x\nUr3j8cMH2hiv1K9W/7YbwQyh3e8k3bxtt21g171+1pGWo8cb9JgKS945F0lC\nsjzI\r\n=ZVVb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAJGNP25lvRMxfUav5YK6tUuweyd+HObCmy9u1Dl5j6AiAK7/KiXjnqOhcrcqWf20gxtEXUqEqJlKwEt8WSUqpIiA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599167216-29d66b19.0_1599167304097_0.5572016108258788"},"_hasShrinkwrap":false},"2.6.4-next-1599170503-810a4a06.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599170503-810a4a06.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599170503-810a4a06.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599170503-810a4a06.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RQGz4/pQgKCrkmfITRCIOokBxVjQnC8Zr3FgVpunwHiRsGTTP0M13I8N6Si0y6KKmuMvBq8vAEOtgNqH/HQRrA==","shasum":"548dfc423a88861b6c1fdae91b4f9903e7f1221a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599170503-810a4a06.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUWggCRA9TVsSAnZWagAAtSgP/0rodCl1Cznn2elP2Nb5\nrrO0os8F2ZlKqpq1oKPgPstJyYtyVb0Fm1wGGkuYf/eyaSPluJCZMmpMODnF\nnjieuUEdGxxYlrWmk2D08S1jKSE1THtb1mIhDbFQrW79Tt/v5DtipYH9J8fC\nkoDMAFoMeWVHntZm9aRUWYrjlFMN7OBrKjKyBZmNBTc0fEFLAkY8R5i52iEj\nHPFvWz3ZrJ+W8Shec/vVj9EnQ0TbpIPHHFDXz0+iMwTjbQRJofLRddAc1kDx\na9qiq//zJmKwuhvKhiAuukqZlpzTWpLRvfiy6mVg2PuWQGU4IwCLtJU1EN4A\ne4wRoWKYUUNrhLtBbkz/KLgR7U/7U5ivuJvpM9r6n+DW2t0W1UTb24JLj0og\nCzTv172J5WeLg/phz5vkUH4A/zjokC+nkNW2OCqvWyTqldDPFMfGe+fDP41x\nsoI8llXb2wpUCqGvMmHabtiizYE0/1WQGR1wk1jltok0aXmAdvacvb6oOX/U\nh1AJ7K5mntIZ4uRZCJfpN78J+Tcr8qbNcYQezMhmuR58KSxH4BpFb0o2limB\nIVVkTWDjLLYrBCfNS/1IS3oPMksIQr4mqz2OMUcBi+7ukHe0b5XFFLMOPDyC\nKPXI7AULDReszqpPxfDTb2USiwyYCFd/NVn1tfjaQmUO7wUM9Fwb7XubtY45\nNSzX\r\n=h08B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJwp14kMel0Raaohac4EG6+oalcWNvQuqZ4lK1B+EmywIhAPbesGlvQNaIAXSe6huaMWL9rgzQh28SJPcwwx+CpNSR"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599170503-810a4a06.0_1599170591734_0.46871689771492764"},"_hasShrinkwrap":false},"2.6.4-next-1599171872-7a66299e.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599171872-7a66299e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599171872-7a66299e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599171872-7a66299e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AwVOz12d2k/0xDNmh1tflYYWL7vmO5nePOMyUQAjgfSlm4Nnakii1bowSnC/pV9Vn4e7ucXhfU840GITaVdiOg==","shasum":"6dc6d073774b6d185f96ef2613416849f1f92272","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599171872-7a66299e.0.tgz","fileCount":54,"unpackedSize":97277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUW11CRA9TVsSAnZWagAAvmMP/ig6KuubhECCChH/CtNL\n0snWC02wcdvFg9hVlULZvca0sPLx8EOr/ubuKp9meppn9W2vcmJ2vB6mH20Z\neoPBGwFyqYSqVbQ7znvOONR+jKriRdSjxPLOW4vXbk0eLeI/Yc+mcxKvAsE7\n4jRcedXqFA0trJL3oECH9FoJpGa1gjoP9FxmCLC3p5uwFK21Wb5tw6LKWTN/\nMs38iKYefjYLx27TPpLOX7x4sYgTjPhKugJt6cFX4rNFnFFVzJqjU48iWKfW\n3elIRxiuZcCQ1CXNFHtlpVRY0wYSMMnuzzSc//WvoXfwEqLyrzsAIypdFIYA\nK/sesQoxW+Rpq9HsahDnppgSVcMJrLNdXrr/r1Df0mZnlg+rrBqm90hjtFKI\nCel/CfOtDGaR+9rMiPtU3BpW1xmgp1t2vvN40gIhtwVyvoQvG1QuDol3fn1q\nR9oweCoKujL9Qbplkl0y8JcDPEbQsTZn3PO0xp6qIz3Sfn3ptNLqRyzSvOoX\nicoJiLtq2Ve8/0sU87C/B9WpL85uyxLfrSCsGp9TbIWqfvlBh1BvyTv9FrJn\nb8TgZYxa/JLZ+Qb3JdjpkO/xAYd1XEkLj1WCEZiYaw8o3DUYmGNqRROg7aD8\n8Fzt4PRKm7hUiZJ/ApbI58jBmi6DYzuSQQeUy/j3BqJRwdwyRJZYVZX6uoza\njeYc\r\n=P11b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9SbsTzAbpP6WFiPFAVqYenkTMoCuTMbpoZdzzMcX80AiEA8zEFTOdwvF4vY3G52RW/N8FjrTM5aXuTY99Y+JAb02M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599171872-7a66299e.0_1599171957161_0.3859918137060989"},"_hasShrinkwrap":false},"2.6.4-next-1599172236-a7e264c6.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599172236-a7e264c6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599172236-a7e264c6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599172236-a7e264c6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5q8NQQumEM4U46/coC2IBU/n38k66BWTSrsK+NPXI7/wvL/jstKuG9TbYqLDTyND9rzz9C+IGIvFhO3aIJQLuA==","shasum":"895e93de66421139c7e058cef4e5ea5eb7b04782","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599172236-a7e264c6.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUW7rCRA9TVsSAnZWagAA9mUP/2gtg+4/gu9B8seUtSm2\nMBpnlwujMSe/Ue0PjRaUUlPnERoE4xZuXoN0LeZKEGvbykv9otKlz0f2sChi\nPJ2915kFIM0TBjYIlFfKtMuGtFQSgiw3IzcdgdArbiWksYfGMAB4WSvS7XH9\nxY5+GR7W0b9cxjHgqgX2JskHEukNTjGjTeXPO1t4wY18vRgfNYsJotWT9XZE\nXubz0duauI2N3B0cWWOLXrjuqBOXPyt3Abdy3KVorBV4tluqoPl1HWLBCZcQ\nrxbzbY/GUDyVmM0Hijz9k89Q5eG/INZqCPl7C+V7UoaD+TqnzBqv7GfVCOTK\n2oYP488YnsGUs8edyWiD+mUu4dRYU4vyK+HdVmFkt74m8sruDLCnERVni50A\n3G6MSh3RS5ManfxjQLkRwJYtNgN86EzyzQrdOnbED17LFzgSDPpmGPvV8N8R\nMWqrHD3/R8M2tJ01XVdGdrdZ0GV4bvxpGWEAsoSbZyHSjnfGe+7Gx/qNUBBl\nybeUGYKTR6QJA2k6i3a+qAA+P2/1GowmhUghpQOBTrRtH+7YXNR/O5MIcQFB\nUMtjC8+rVnySnmx5uSWFnW2HDww+1JIppXwmDDk+BicUfwpUQU0k1txoI9mv\nQob06PH0Ci3nIP8qrxidVwVGvnbE2V5eUiCWP7Ydn2wBKSbNrFREeLNeQwqo\nigw+\r\n=mJ7i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJjkzGRU8kjzPCbFIgeeGowsmLjNikwVFMh02TouU9TwIgUFIeDt0DTM+obKAdBPjehre5vmqN40OyHKrmF4Vgam0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599172236-a7e264c6.0_1599172331405_0.954359864711704"},"_hasShrinkwrap":false},"2.6.4-next-1599172942-bcef090d.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599172942-bcef090d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599172942-bcef090d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599172942-bcef090d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-r4ht/mM4R5lkdN0CqPdrYpL8EVpWlWtSkibGK9AtVxBjVqwBemRKxwje0xV2NqW9BZfUfVXFvUmG7xybXzbH8Q==","shasum":"e6d6025697a284ff68beb0ac20ae92a4cf76f99e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599172942-bcef090d.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUXGoCRA9TVsSAnZWagAA7HUP/idik/JhagPAdqCuZl08\nS64Hqd7cDCnuolXq5v4DZBmPW5u1ugCLsje5jeaQpGGQOymhQgK5jmNtIFDN\nECgzVkd2xijapOmjNoqg0PKIN79DFya4FgWMzvcPeYgr3Ln2D3j/WUX8zA74\nC3UFYdLnrTEY5T7d2M+JiHXMyXuRN2+stxG/CKx3x5A9hXsMvNJqzA86mdWi\nrO2XTGdE3Fl4/7BQ8nL5m/aochpGG6tfdIjxc3Sr/Pwh9GngouMB8qXF7vRZ\nYfFTPxsyjbapakAFXb9/ON2Ta4xbOyhb5bu4NWx0DvVaVqoYq01/CusWwU1b\nfSTqcOG3L9MF3gIdFaVUaduENb4B/kaIHAqiC4kuocE6HfLCpJCChH3xPUxK\ngMlsspSoQJhfk0MNO9kacaBGVntBZZ8mHPjoxR6crIUv/k8coqew15d42+Dk\nb1opEsQuCX7RZ0fksL53BGsngyuvem8vLwbjZHtiscT4NK1bjXJB5GykwzQz\nqNl10Q4FCn8dwpM3wjrCmfqNRST+2pv6C5HXZDRmVCgFYHDNkYO3ai76tC1c\nwyBCQmIZmpD2Z7VDqkbm48rUxVYdL57MFBa8kNrjLm9GKHImOaVCzbwDXlig\nVoNUXvK0pVIWJf11GvpP4K/OVFZ3W1rDP+2PKE+6JFqA6j6vlaCJkDjpnt4K\nXw2j\r\n=h425\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEm7yC/mFCcjY7mNhdBjYoBvkiBc76kZwWx0dgUS0TQsAiEA9NruLXWilRYACrqVMxx1dTp9mTmPi9J2MbXwfi7AYSk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599172942-bcef090d.0_1599173031695_0.20962634928250012"},"_hasShrinkwrap":false},"2.6.4-next-1599173355-64f73b10.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599173355-64f73b10.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599173355-64f73b10.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599173355-64f73b10.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mAiqjWG6HW/JCr/RLp6kSGN/wLwZjdvNzLMETksJXPYdJNXDLOqZocMdXmV82e8hJH+LSZBJKuoMrnDHc5yOIQ==","shasum":"f8ebec57014d7cf5696d644d89aec408dccbb86d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599173355-64f73b10.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUXNACRA9TVsSAnZWagAAT/IP/ic0wLWGXx9GmWVMm3Bx\ngOKM9smtrWA8oRi2tMELcL9CK5ar+uitv8egHkip9sbPs4jRyWOLvyAJr/sv\ne/Sc/MJd4tYAjyiIy7+JvpQ52cvi+L3LCMlN6keHtloTF43qRYTlCnP6SUV8\n4E7Vm1RJGwa0FtOCv/9McaOUIywzN4v+Ggm+oKIuCN+BRS07rTj/udz38heH\nVlwwx9dbtiQMvA8ragNfKN8edgsi6mJh95QsWpSWmv5VR19qXTP1m6LgvJul\nZoGIUSVCZNjRbDwx5iwjhRdK0ztl5ZP8Z/8LPSko9/O/01J1jpQPSCb+kw8O\nXlDtqSM8Rpd0U5XgZ/pKZAemGNbDNGViZStlslpJiONC7kehrUUkuSVWn1HO\nn3yyZ6Jpm8huDx8qO7JmpasODsKyGiIBQ+SJUp/yWzJQLJj4TfFMrxVPI/Vl\nMddToT9XSg/YzkcEHVozwPV/udyHGAScpzY7shJlsIh/NN0BtwtWt9uEuZ7L\nswEnD3jZpoZI4JHSOY3GRtZZxYgKwgIffoFdJKDH3u1YmIFFSjhZcznNa5DG\nH/A601EkQwn+ybT8zQ6tXWfiyyF9x8hhA3Enrwr30YVTiPk7VQGp+PqZcykV\nuZ14GSMzWL+VMZ1qR3Zh099wHw4lL5FKlK3xa9iGlXsYQcvkAzTWQsd7irn3\nE9Gq\r\n=S8BF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDw6LZvwN6aYbg+0g8LSaQR1UJ5+I7RTiLopBg/MK9AOgIgS4tzyDUvlZid8AWfnftBy93N2eOJKmTXLBc3iXNT/OY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599173355-64f73b10.0_1599173439796_0.6921115649182294"},"_hasShrinkwrap":false},"2.6.4-next-1599173847-294da3eb.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599173847-294da3eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599173847-294da3eb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599173847-294da3eb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-aHySaGq2DyEynFGgEr6WRQoxDvyQD4Ez9Plr9rekfsiDbS5dRzwRM24+Q6T/K2G+3sjI2emJCjawAxWXVfA8Hg==","shasum":"52e7a76ae2d8191d45bc3a590d95d13623a2347f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599173847-294da3eb.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUXUuCRA9TVsSAnZWagAAoWUQAIDwavbRwsj5jTWX3Nrr\n/+Yrb22V5S4qgohThsUERKxOQzxZcW/WqvvmjunN7OrSj6Kmyh//p48JNZIm\nUYlpwZJiWdel3WYZ6KKMZQJyrkj62sELx4DbkSsaxH8mep1qP2fALYr3S5gg\nOVGhN1eKrLqSTbPwTj4DRFgj9yhC2Jqbv8m5zhs6FIBTEzs65N9ZHvGeK+02\n6lZt/IBdo1nR/OrXBpZBJgrIFjoaOdVv/5ypsXLnY50bbNeulw/9lzy7WACd\nAOJ5N31lo+UyRLrnqeJ4VESJRBohvJsVRSkvOuSxXQfflnj9ZuoipRvGP7+8\nhLk4LIVT9bCLYu9f6Hp3W08Mx+o0udKwTFYy2pROdhvtVruovWL/goCmJnRC\nj38J2NxbXJK6df+n9Ur7jVD/pA3Dom9XzGGC87kecQNSmoX5QlDta9bsGP/G\n9HEZsl6yckTmCBgl3W6+McDIkD8djPn2qhAOz1g0fc08YsdOIJDh9NhIinfl\nQbQAclCb0TtDW8kD+LP67JJJ13iSkZ9kDBWOJ5MGXGkHT0ntjMBwfZG03rFU\nQEMmigSP6PxW4PqHCz7nQIHM5tJevAe4gePNLZ/NMMY/VRzV3LiwRYXToSXu\nPq8B41ZFgtAFZTDuJCMH4b4288xffnNAdH9t4dcen0CLylkhpfWN7fFH0dwG\nCPC4\r\n=6HtB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJamY5fJfu1p/cBR03bXdI8MrkG3zuW6gmtG4rLNGPxAiAVOjzdLhzUZawkts9UoupAGk/IpcFbwPKTgsbwsl0/lw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599173847-294da3eb.0_1599173933977_0.3620086175175574"},"_hasShrinkwrap":false},"2.6.4-next-1599210627-5f98cb36.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599210627-5f98cb36.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599210627-5f98cb36.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599210627-5f98cb36.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-I5wJtfY2qWeyqzL2UVuRLyriHwwVv6NotyVgZIDnffY3ZlrcxTaDxUQEKQ/555aY0t6GfnGMAYKA/3f8XlqYXw==","shasum":"4451fca1ad12812e40b40af1c80184e62a5e6667","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599210627-5f98cb36.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUgTyCRA9TVsSAnZWagAAoQoP/2f56Aoiey9rBri2WbTH\nKjKMLsEehkVVH678OprBmnlAX4uyhUHOZMM0Hm3Zh9oDvHs15fLQAw9O20+p\ngOdOmYd3QunaKgp4ypQxWS+Bh00uGSRMxykVtVE4qSRci5EsiPf78K9Xwp0w\nDmOMXhOkiEHHknZtu9q8I/ul2R6aLWL7XF0N445JE5EGxchRdHaFYL7I5r/1\nkNXem0WBUo8NTG09uAo8HUVjNRi0Z9IyB1daNNF9XeQpQbVWRwHgyUtPt8QL\nW+qlMhDvxZgkRKmz8N7939crXWUZKwcilJKYO5JgAZFbeeoDOY5DylOsq4K/\ntHa7hWltqDyhi6dxDC9jsgQzDLHezhRVI+lE+MzujrDXZJd2PtrD62wmm5M6\nPyNe7Hc/tv4vTxQ9lQuVJr1a6uyKDA3c082eAPbCoyZGOTVMPNRmqeQKW8YC\ncYBggieA+qKO6o5uYvzlTnX5PFUq3Z6JUbVRIcFQTBhik8caQ5eMmvRPcyA4\nLsjHUqxH2YjkRVTXKaY9FM9tk63+kHJeKAP6B8OX3dvLCcbh/qkTFlpLOSeV\nUlomxEHOoySmDXy+z7F25bcjnWA9YtNdg7FRa8tayOiG9JzNy1HOeHZzCKo/\nCoz9TxppB7RYpdjrHhYRzoMN4Bg95UhRK3tppg55FSC4av3vA1xb8MGMyNaj\nnDQr\r\n=uZ5h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEYeyUHI3tyIn4rP+aF6HoWmDlZmMjoYoAHg54ugOO/QIgVOEvS4ws21xsHTEGdGbi4DXeGaqB+MvEK35sY2Lb8bs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599210627-5f98cb36.0_1599210738150_0.8085375029085762"},"_hasShrinkwrap":false},"2.6.4-next-1599213496-eaaded84.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599213496-eaaded84.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599213496-eaaded84.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599213496-eaaded84.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dcv+3aWhE6yZowe1VxHyOwp1U/SpfPlOyc1gIIrGDp1ixf7YpKX6fywPLneP8mEGgYFFAceKiH5+I/gbqnJMjA==","shasum":"9b45e695becab909d861b086c3c6801726fc9a6f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599213496-eaaded84.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUhAaCRA9TVsSAnZWagAAZa8P/j8xortFhBTpaD1oqzsa\nDySudUUpmoz2BMlZPzc8wOik9PmhyWhZOD3DMPmLeb3GrezJsV0PCvH5NvKs\n756yOpeqAx4RjyUX5dpznHEwA6CzCcTJj1JXY12EH1bzWqTEl/OwFeJxHMEn\nrreSuz67BDtc3+sD9Dd2zHUjevoZ8Om9j2GF9FG0qI6XbtVhKHEtsvnvFvrP\nJQbnZa8ky82cHocu8miZ6r3AO9k6HzuR2ddslxIArJp+67vX7Tl4R4gZEKJl\nc1LitoE0gTKhbxz0nZE9kK5aWTeT1CvZ70LrSpWbS/Ifu7biKX61Lu0MlRXJ\nUEY20cqYSOXFGrFGktjuDNrztOKgx94bIuOwJMWBThKv3x3Tp+bmlg2AYWkt\n2HyPh6vm+d9LDf30Y67ub4wg/Rbb0YWfdIvWfBJpu6GXgUcIw1fh1Ad/q9Io\nJ8vtJsFubIDvd4qSSspUfEJrdtjKjP071XufjqYyEbHR/10H3tytoDYv1gkk\nnVqjOfTfqBZkhr/3y8eXXzEWzx0LsfHiY4ik7fmIfywo5xhSooi/9j4lIN0I\n9r2Bh4sPn+ByzDzJvpT0Xlbn/qSgYyOO0Hh3JruUFG4bElv2bhrqsQo6HwWd\nJCRccCSOezCT/J6DsJC2IMQ4jHNvcUgQyDwsayqZ6w4gODxLdk37viCSUn94\niV+L\r\n=ofgr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/nxsl9kffFS5u7I7/lx2wGgd8kJvciBNDGFgMrgub8AiEA8fmZyDymDqVRkDyyjWeUOp4yLqe0FMKYWJbXaOth9fI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599213496-eaaded84.0_1599213593975_0.04881831598725905"},"_hasShrinkwrap":false},"2.6.4-next-1599214118-c6126407.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599214118-c6126407.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599214118-c6126407.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599214118-c6126407.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yYzkZQwheXQTEnQArpIEPmc1pJ1LbhRHyUq1Pati0iB87wtjzV8jKJkdwypic4zXS9dDZzbNeQWHxDLDAI27Yg==","shasum":"b61507eb3d7556a843b26dad2b2de597ed4b4122","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599214118-c6126407.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUhJ7CRA9TVsSAnZWagAAd3cP/RoTpFMbolzc4IrSsmZv\nOeaK7OzHwsAImrGCdw+LxRYMBLuvlqAlqQJtJmYEkedoI7MyMlSBki7zkMYJ\n/eI5cwz4t2hJ/SuVjbJckVNea9/UkNk2sPvfwMMZbsbNLuG6zdCvW5NNDCbS\nyW9pSdkigkboxoAJDKHE9QQjkvZOvFtRBhCW9znStrTxGL6xj+2gq1cRbDsV\nZyvkolJ9Dvfmo+d2i+2vAWYADedCFHdsCrr57UwPR/M+SCzHUEsm85kKriPc\nCTCFgqMn3zerM1/8kMFDQIs/VePwpYCMsR6fFJDa552DTtf5pbNVJ7yiZOzJ\nOh2LqzCRI/lza2fCFttMl6u7vK4TTpeQLhwmJY8FSc8GTUV924X0c/Q5C2iY\nTRNTZQijqL1c81qUEi2TMLi/bIXEYnjAOCZjvnh9d80nkl1i7kicCwtkkXx/\n9nixgvcNVDEczdlZZxgULPkbZsQd+SNz9ubgebtcmiZJj+53X6C/vSNrsDAQ\nOlHd1iq8qJpKNqALoI17UVubNz6rHol0OTfvip00pqmmKsLUyQP1Mb2YJ+7Y\njIvL/iMVFs6PbAjnB7CtrpE8a7+ZlPwS41A3rM0VsqvLjg0kwaHsunLq9mQH\noVADI4jzl+PAa9OZxjkN0kyza4jqIf8MZqIeXAtQjgQRaLm3HwcKxrvuD6xv\nWIFS\r\n=MI2x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHDQi+tLm/ZCKd4sSCkNC3Wt5RBnyB/ScAxGhaCPdRZvAiBqxx/DQkKUIIofopYOYFZMAulZLcKwHfFTUfyWldmXcQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599214118-c6126407.0_1599214202722_0.9204830675592479"},"_hasShrinkwrap":false},"2.6.4-next-1599215641-38283c2b.0":{"name":"@xdn/prefetch","version":"2.6.4-next-1599215641-38283c2b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4-next-1599215641-38283c2b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.4-next-1599215641-38283c2b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RqJf4GEWqxNp7lZOvX4NloIM3tr9lgb4AeVdsLjEkdNDO/WRJsWQs9EuxbJF2ILfFNRXS9nB8zT0ZJa72xbdVA==","shasum":"67e8c827c2732f21261fa4af51b78042796a6902","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4-next-1599215641-38283c2b.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUhhuCRA9TVsSAnZWagAADxEP/1LbVFnH1ymwAZwBOnLa\nCJtybCyispd70ZwAVvBfvtlvtkMWknIPMg6fuNTwaT8mY9LrcZdbsx2kXj4K\na97NQI17eogfAUd3mokJruop+iVnyHtTyTMcaQrI44vTqqxdLX/dxG6w0eXp\nfW3zmassFNNPwO/9ph/N/MvJuHOsLv3cKMl4S28/+/eFBjMuWYoV3YYHyFsl\n9k6Y2gzt3LyhSKbhClDKXSpsWUf6LpmuFiFqF2GoFDKb+UEtWJUU/NWJHfwY\nD7DRCUweWjSL47fpFDm/LiMipWIYQz95WLrFBRpWr7KYnzQqEO7RzSrA9FTJ\n3ahlKqhPI6Ymoe8tnbcmQqNtLwrt4wAAsu3oKxmXR1ZTEb89XoCBkASBVXqt\nfiXgrrEREYy/qtu3xQQn1BsP7lX8wqA3q55qI8hWj1H8PvvhiCNzUyg/SEMA\nLyRMZeMnlX7BhYBW8QLcbN6cB9WrfL92d2oTaP6WfufFusMBMZfRUi3WF58i\nrYi8LqUwwd1weYiyfJb/radaV9FDiJ2TUQTI5d/1bO+xEVWAfReGQI85rCEk\nyg9WvFlzh7j++yIra0fd+ZUDIdLapVpXUntyPAmweFh8ToLFvI/CwPwc8jAT\nrhaXw+iFX7YArGW9LaQ/Y04b16IN9zfecj0y7bGiS2CGgU8u945lN1+ACz0d\ng4S9\r\n=hiXJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEhfwyvUfSNp0OYRm4hiwQ7YVKgyeEwqqiPl75wU5in3AiEAnRI/3W5ZRN/Bik21e86D23rXdGQpdGs1T7AqekSRlaw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4-next-1599215641-38283c2b.0_1599215725799_0.3616115931175645"},"_hasShrinkwrap":false},"2.6.5-next-1599215918-0ab97d84.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599215918-0ab97d84.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599215918-0ab97d84.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599215918-0ab97d84.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Q/nw6PgwsSS5KLSS+IOLD39naQ4IwyyCkey+VlLrlTtZUgEO9lBaoa4TXDmiT4lKAMn72z4/KEoRIbE3k8RWIA==","shasum":"573bc39c9a4a2e99b168aa01133a5b6f2ade0279","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599215918-0ab97d84.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUhmGCRA9TVsSAnZWagAA++wP/29ItOCEbO2VKCRome7D\nfcZAYZ0jHllpBTcINW/tnq8JGeP/bNbavhw+dV3tN8XOwNlrCbCzuWY+sjU3\nQlTHlEesml7WhdnXRPt2XUbgxpdZFh5UJ8WyHLmurI3ugLSyEU1hwKetN1kI\nam7Pdsn8coaKtNpnLpz0h39XTw6PGPzPs2+thnrrGkbqXwQOgCDMDPIYitZE\nNQvwb/9CFuFMVMAp1dcbAfUAsU/pnHmERXsYJphEobOHEUsb3mrTueQvftiu\nH66NmLV3klZSPRNtI2B0WpAS8RS1Z1mu+iORwSZIy5FmlOXwq8qjRsHFAc3I\nDDNCEJu9lDHzj5olwsOAgziNCvMZ9zag4eqT06Kg7YqQu2uSu8hq6SpS1/ax\nvkubO8SJk97WKtQlY+Rt0/CWRbOxLlgr7ZOe7lFbetTqikWFpHx3xPr7flCX\n2tzY05+onN/F+ywboNUY6628FC8OwjZilicpHZz9vsfcqsBr71mhnhNgg3B1\nyC2i3c6hFN7vjobCfmZy1NioquZBY4E2Th01CMsNBt+ivREtCrmTv6A+E+B+\nbFZNDsYTUj8MRR/8Z5v2tvPJTmvjFeQztetAIpNYZAYOH2/cErjISL17iggd\nOGdCKEnaG2MB76/xUbW7Um/ZGGFJwaMa0tb2doOT5LZJvNWD78Yg9AKl+/Rw\nmRUN\r\n=Qs94\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGOXg0DOC9ntVA8YWuOJDXrmlZp+9maSLzg7To4xRmcDAiBjKQRwXh7C3hOC+7wMm4lozMW1CtBus8hHAwjbGGc5Dw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599215918-0ab97d84.0_1599216005982_0.46526468466840143"},"_hasShrinkwrap":false},"2.6.4":{"name":"@xdn/prefetch","version":"2.6.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.4","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.6.4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-j5iIFzpZpCtOw2HaQs1+QHKTrRto+qUMoOniwLh6Yo5BwSJomi8PEgFyzvl1ZPPX8VuhsyPxy2WdHyY3jqMqkQ==","shasum":"d2efe9331f0c736a39fe0c372e57a8d2753f4366","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.4.tgz","fileCount":56,"unpackedSize":104358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUh2wCRA9TVsSAnZWagAATE4P/0vVz1OVVOpyBlQurppw\n+kzXmxe0mY/+ak78bAycI6DXg8pObwPaamYqaAOfXL3fvAT1TONeF5KkPPrE\nhNcv4VFrIZD9OJr8f8zaP1oAKp7DUn9bRcZQUV6/74r2h1pq98WwqFXn2pjf\n0rXz25uK3KMv/0l6Sw8HnBrSpoTJVTeBlCyPEpvU0N5KBL31M8652BNwCwhK\nJlEmGFTYXIoagbR4vj4ovrkJilMpdBsvU72g1bCq+5Ei3yiV4I/gEP9s0Lbb\ndbiF61aHYFRw7O30rn011PsBp7qf1KaUGLeoLG+zG0u+ROQoI7k5gmS8sBdy\nq/oKAzdnwHdXwITr5KzewzVIprdjymo+s8riuMmiv83ujHxe0b64d7cG1OBg\nO/ldNgsM/pDWSBjoD9yX7e5lAVFxmyQaQADjLXuX59SOPKy/xCqlXFpMQg8i\nYAZVUXCOFyjrTCKTxFeHVcsQlNEjEK8QLRtylU7l9NL0RJ6bWsUIqUkFpihX\nd2Xwb1Lj5kbidtWV7y3f3hmXbq153Ld6a1SZV43qHEu42/rBt3qX3YJflNtq\n974Urc8Nrh5lozIwP1HkJnj/V7yQciKIn/IcFdQRr5eCjh2eQTljLQyozByv\nMKO1mNl56Gy3AONf6qx2PKOmJBJJNOsyC7wJGOnW19z9HQlA5j50Tdo5zL7S\n5d1w\r\n=0NdJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIECqNJcluyUm2ZHPcaS0Cl36lyEtee99HWbur8EcSKJSAiEAnf1aQdTG7UY60xLzH1P3/q3AQeLlrFH39groPiz8TpQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.4_1599217071961_0.03085459093729237"},"_hasShrinkwrap":false},"2.6.5-next-1599223222-bf684521.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599223222-bf684521.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599223222-bf684521.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599223222-bf684521.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sB0TvPh/gdgojgxWrZasNP2jNxtKRukbV5t7AzPiU11W8iyX2I2kGzaRP6PkXHqD8UA2oert+6YFwL6JOt5bdA==","shasum":"348c2a32123ec5a69b5772acc515045093db783b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599223222-bf684521.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUjYcCRA9TVsSAnZWagAAMyQP/RWa+fZSuz0+39Hympz3\nWYG6dKA71E0ruRJun7tjVeBZkhXL2Uv0OyYZz2Jlmki78IegwNoUYTehjhR0\nLxgMT83iIFRzi91epBu/aLa84EU+pvXvgyshFRfyZEINDouXuYyf9tFff9nY\nTpD1xX2Pt9s4M0AkrNYpwFaeawcN+sp/xXfV35gAK/wmA+05ZJ5vZOl0LL+B\nlfCJjqyEG0XJPeXd00Qa+A/Icq3cFaXqNb+zh9/qH35evT1OrpuTgc8xqhGx\nOirc1s/mjxR6vszq9cSNLCmUkmKgldzGEi4kXx+Odf4AYVGORc5tLRNxx1Ig\n16c2UazkmhiVfpYf9lPeKTSvOovnPdJhAhsk2CXnl+Cn777CgzNHsU6dDe1M\nZiqxqo8Wmw4L/UwcUtYf/MCX4v/K9pqPSBT1HqTqnnwo5dCg6hoV7mnfwMtN\nCSdTnRr8znNfA+Low50Zq7e7BoOOpUGO6R4IvO0Fcu0dBGdG0ikPw/FIXxaJ\no2OTUxTv8wSkXEtxPmLoEGgZAKxRWIwevzriHYSoKO63DEX6tpGnKKw/vfRx\n6VivLqE9gmzbhe+xkd8tqm1121/7rjQxjwCzzow0HcuLpPhUgVx17nfgu9sH\nFZlFz9MVJ4ASDaS6wJFlphefZeRkRnnpdHXOLusqrpQJAZWETcR28FisF/zc\nmapd\r\n=KY5Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeHyixUxEzrRn667D67XVIkDvQJFjcp9RyT5IjBHBabAIgBL9EWIvGvVhK8PT/E77XHo5j1FrkT/8EvJX/Bs3NSTo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599223222-bf684521.0_1599223323867_0.25101882965106515"},"_hasShrinkwrap":false},"2.6.5-next-1599223545-e76ec169.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599223545-e76ec169.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599223545-e76ec169.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599223545-e76ec169.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wabgqPOF5Pn/I10ZitbP02la43/qt8DUDYOMXK3+r+rSBt1Vlw/gJrkXdy7Q1I4FFJfkb6nrTioee+Xlplj1Vw==","shasum":"79ab4ce97641444e6732e8c8a17050fb939d1ab5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599223545-e76ec169.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUjdcCRA9TVsSAnZWagAAlPwP/jpS44RE/NAdU0B/jUQS\nfO0KlQoZZbw1WeuQvkpO6Iu4OzqA8Wt3+GmGQg1l+aF2u77QR7eyLrKfqKsI\nbsJVEuZ4DPXHUdVfRmJP+c6NUuwb5miLcUnC0FB2AK+iZTEP3/oib3/qDMoY\n0D7oXObXmCZncLPoVbUFQ8MKR4RwxE+EPoiodasRD/SKtcpOn426wv20mscL\nBC0L6CRKwepWG4BDAxV2Xc9kU5UfTn8XxD4tlVd86QAiftsJxDVKkUm68U4/\nNLZC1HfWisq2EAQ2oTdZhLA8mtxDWPCWf6ZbriWe9j3Wv9FJ7Av5jtaZuEaI\npuQWwT+9Kk2okBJM58EEqxnb5/vS4NNJG4yKZFrx6qjCiuo/FYe1AdNtgWWr\niY6qMNtqxoBlkcqsGylq1oj0p3QI+1gWtjxb9RCB7Mr/HBcG4XautLz00S/m\nC4sDpOFaq0NYrdOmcC5QZ6xzHOAq65LOaRYAWWNtWPNQyhrrJxSyd+F09HRz\naP8JDR3DirYYYtiIceE3vHeBBPTTWMHlyVFX7KJYE4zrf7RopIZ5AVNNa4ij\nH8tQw1ifB8mLeraQfNEvSs1DereSrqqe5zBZvPKD2yz0/7kkwrm8YIqiDMl4\nGMd/wY9skFMLrl9rfFB6Hw9je2MFr+8+/XTIgfs0VShQTv6LpCXSLsexAC/o\nD9i9\r\n=8m5E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYpbYJIdOkKgLTNw6wStiIafXhTtfMdCZoEyH8srWTKwIgOwtDzdDOwTtN4AyrZRbi/IfmUUkw+BWB/7/S8MNIvyI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599223545-e76ec169.0_1599223643572_0.7464122427803259"},"_hasShrinkwrap":false},"2.6.5-next-1599225516-738ebf35.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599225516-738ebf35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599225516-738ebf35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599225516-738ebf35.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-x7WbWY9rgSXwuZuNmb1UvrYDk1gGp9WK1lks3nx2yb1Py3srFep+kyZx+YRTsn2gFD4FcIlMm+87XuFEf9MLwg==","shasum":"23af58b115ebbbe03fe6bb0d5c88d7df008cd7d1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599225516-738ebf35.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUj8XCRA9TVsSAnZWagAAJdIP/AzuhglU7X+1dQNG1L2p\n9JmuRLEN3NCIXwRd3pRnhAcwxGdkVVRqUN6pwYfIXjLvb2bY5Qd9gc3EcN5S\nB4RrfQZIRwGVztKIxM6CvlX7WW5sWD3Q34WWh0MLPNPFodT2esJxB2HgWxAD\nxEZfSb/KVfHMnl3q7+aIbPoPcLSSz2z+ZgfNyW4FsImazPvzykKFESrMODAb\nbHx6q9rd9SIXdJCJXHKvaQEjImTNYbzqa3BbWaazBvz/zeA4QYXCqfaIop5k\nWsHgYdiHAJuWE+PQsI18yf8vtlrJ2nrlyI5F2r+oc/Y6mbtwGMOLZAx5A86D\nq3eKikAwx7B/fLNW06lgZP/MuOWHZhU4SgijgmId9Cq+Qunb0Yo+khKm//GP\nW7XgeJ1ZVUTWaysOtRV9r8TX841b8vrnpWFsbfttPln2n9fw+0TRWXCCkbP8\nrG4RwWseL4ShhHpYZRoBlbMZ+GGcNydcTr7omi56RggXIRmRtJ9+C/HDYy7i\nP4LONreS6VxJ1mV7Oa7Zey9IFUJz+OMPN+gIF2rRFHNDPQhYPx+SVZSkwLSP\nkat2I1FDowSefMe+el3o5SLb0IVNRYccTZy8q8RO0s4b8diw6cXl4bmQoyup\nxHgmdJRK34kz9Qq5U3islHCbqwPvVLfznlirMIFLRL5k0QBRBvE1zPLhGrU5\nXgYg\r\n=0eLe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkwtlBjwrqgl7qmX4ts9SRKe2r0+41obO8ZtTyXGjghQIhAIzzGhAZ1y23TSBlLvShKJVDV2DsfRwzwVAq1XeEdEd6"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599225516-738ebf35.0_1599225623090_0.41731838483129047"},"_hasShrinkwrap":false},"2.6.5-next-1599225518-b5c68e83.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599225518-b5c68e83.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599225518-b5c68e83.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599225518-b5c68e83.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ogspyX+kPqcVcRblWE3AN/9A/qltmRaosjghTC+ekvZqrJWIhNWLbxyc9YGFFnE7KKIBKBvaO4KZXtqqqwpkcA==","shasum":"93ad70499da77712687ced3bc70b84d8f0538446","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599225518-b5c68e83.0.tgz","fileCount":54,"unpackedSize":99696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUj8iCRA9TVsSAnZWagAAF8MP/3hLt+hHaoFzJWa1vnwt\nRaYE6vJFmiED6Qe5kMSctpEBrgxZdFKNiEaR4jOxEiwu42BQhoAaR77fAbAn\np4lK342m2+jjew/HLA0fPv+kdFC5BX6TQzzvt/2MQkMbr0W21Ynyc1INZNi3\n0EcLGK3+KxD9WmaoMQ4NuJ74BOXM36okaVCMjG+LzO589oWrfIHfSfgirMjF\nnIXcUi+WStmaZDSALeHto5KARNuVfLNpKAEDLg9gALMS663ZDyxjgdEHV27H\nL9C3hvDZUD7je6jL5PLLzfM4qPYAnKKmQPakz2Mbp1EsiWmctnCc1utndI4x\nj6rYEh9NdGE8G/f4q62PLUl+sHHXss6fuz9IDCrIfagubn8TiqGnO36rvH2a\np7fnSPY10z87uAg9hWgRyPPqUAHBJDbp8mTUfeIAB1dmYRh2h2vOAUBaAm/e\n+w7+/GlxnnuaNbxf+/fx1fue+9PwbmyBL56rt0B2xsTKjWdrjI45tOuNNoj0\nNiaGspdgHdlELAPzRynEHTl30TjUEyIDd1PksV1eHE1QGqiOXVdyjHpTiz2G\nZMU9ue7qiVZoCOTCHQq3OTmYzrapH6vyV7UskN5Ly+I+lcDhrg9Z2sDlT2hE\nzHiO+3o69vmSG2a5QnZ3Fkgv+8geB8l9JzcNXZHrrKRFAQi5J6I4fr368J/9\n7B6r\r\n=YHnI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHMqzA5A7liIMgbGMmgneQqKgJkmRukL0EDwU6AsTvv3AiEAp6wQ3HB3vNYmHvvWottnmq5L0hHOze/KbkCViq3riBI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599225518-b5c68e83.0_1599225634145_0.6216194696995201"},"_hasShrinkwrap":false},"2.6.5-next-1599226323-763d53ce.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599226323-763d53ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599226323-763d53ce.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599226323-763d53ce.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Rm3HLHvRwC9DyylJb6olSZXoC9gQcSZDKNzudNeZSGEusmOUei0m62n2yYpZterFbMRxTYSXXSwnGODOjZNMgw==","shasum":"2356aa86e2488a409f00d6615cf298d61cfed1db","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599226323-763d53ce.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUkItCRA9TVsSAnZWagAA+twP/2cQ3cMS27c+mU3BxPxE\nr9wwittsW2yG/nTLJEQvun7TTnvNsusuxR26pt6wt0R37ux+3ncJ1EyITPC8\nHkZCKzB+2rThErh4qCKRrMtUFZV6x/yheJWnf+VjySZW1N2pO92AdELuxLpM\nYdppi7c+CXaFTyMmJ4VmwRnsfSJJUKJCqpze/M/rRstpbsDM17IKXmHo6kJ+\n1vFThTQnIYD0UWUIxkczHzRhtKlLV3qCMS4YdcZ1YcvNB9FO+9HnKq1r/JLS\ntY0z6a6MuGAQHJVQhc+sF9SRF/gfVjm8yWsu5zv0jszlyVHS23zq5y571tVs\ngLDq4C0uiam7Ig1pxY0hoWPQIHbk6btG5lN85Hypsl+TLa3FyWSmn95tXVmV\nmvFdN5On465nAbD7ZkcsI44dxc6ioGBCSTYywuPjcajMy3aCSGF9tRqYCSsA\ngZkPDV/4jFcyqZPUVph9Il1oyke1er8D5V/XAQHf9VSAYTjaqtkrvFe4co/d\nm6z8R71UXYrm9d447jBlXUlRMOKQP1GdGDrMVXFteJoBex1X7sKQ3JqweP7n\nJWcVp524Itps1L69tWAoEsiNblXjQ3nNsDMY288H2M4eSHZZmbV8u/FljGN3\nVkkh6Hl3s1OOmP9+8OmD6JFARVOGcg31lu8ZJ1QuGMnC2l4USJEY26mnhAUz\n7NML\r\n=sFnc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGvocPmMQ8pp56BodaAMa+TlBJVbMwy7aVpa00jXxPQgAiEA5qG6t0vXOKiVc+x3joWmb84k2WZS1/ZL3Y6QncjsasM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599226323-763d53ce.0_1599226412930_0.5186616484011228"},"_hasShrinkwrap":false},"2.6.5-next-1599227097-48c01851.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599227097-48c01851.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599227097-48c01851.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599227097-48c01851.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3XxpVeWYxKlusZdwdiLfk78rNVaf8bGbpfdFxjT0Q+EGgpDbBQHSzjc5/+6YqoKxw4ua+Bs6b0Fz7O5VOrX3Bg==","shasum":"d19a97e4de676ca6db526f8d2bd2d483b505ccea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599227097-48c01851.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUkUsCRA9TVsSAnZWagAAwFUQAIUoxjjg//D3bnlCSHcu\nJgOeOdECFCDHH3ifC7G33xADsF/t2XJi0zEu5YxTLySyj5FqYlfaYaICR0fq\n6O2gnTnUNxfKmk71wXDYxO1b3P9h3hm2xFqieNDKR3HxF+RnC36I11UtJ6Bv\nWJ2FgjmROGNms6CvMHq4xVi6z/4Ep1pa7Vmx5NWQpFX7A0bN3ulVr4yJV4fp\npwq3yuBhoFbMmxo1mAwGdMQWvVm9pJqisMZT7JGbRI55ynN4xUZ5nhkWop2G\n9+hSUmFYjYPmhGCbr2JRAH+UY/oBOgZMU8ApRq8wzTkAWSHrQCflopGZk4Xp\nrxrLU24vIVWZWl6iB+1nahxztCLCkMeo64LsXFGCqGKwy3hhKDLKK7ARjMg8\ntCiKOpsQuEovBJoLAUcw7u+cfSGl6fVEMPcsbTtt75pb9GLpHBhcWfBayDI8\nzSw7a1EU+pwDK4Qd5UfLpEFAbMKrfqd6y09unX/MSZJd+gpE5ARKR+6K+a4i\nAffiA4uKS6FY8hQDYnbGq5bGSMXQpNppmHJCzHlg3aA9dFA2pLj2tM9nqHGw\n6g3mywfFmUCJSd+avTCQ5MVGD6ysjFu1C2tJp0KKy7RM2sP2BifJ/0YiTSGF\nl+bmgefTa8ogXORTtxJcJH7BdZLVvg/2a/FxFuGY+kCAvYhgwaPm6OczxgOc\nYmHw\r\n=r+ct\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoXdisuxDugBISEYQ0Rv6u8g1s2zJgLPS/rSTEvYVUzQIhAJvYOd8dVLZqX6VM5v7ETHvXDqnihl9Jn/vhZdK74zID"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599227097-48c01851.0_1599227179799_0.9146331302845463"},"_hasShrinkwrap":false},"2.6.5-next-1599227690-ea53a6f4.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599227690-ea53a6f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599227690-ea53a6f4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599227690-ea53a6f4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-54VbRpxGw5swYVwotr3alDOjEuEI/LpM5PuS86oUK7UlBUwDW5l4z/PT3SbAtSBuJVe+hPz2sENv9VSrIKxvsA==","shasum":"dd8e94cebfdc5da64ac446c7b993c476dcc33a01","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599227690-ea53a6f4.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUkd6CRA9TVsSAnZWagAAF+gQAKR/Ppl01FtmsFrHteLQ\nkFDHOQByqA6kEzSMjeYyMmxdiNTKu7E7Ax7EaMZW8NEWZAa7F0OAVKrpJuqq\nksdZk9RxhQiqh9EMvLIR/5HpOrSZMlJi1zlVaDcGJwV4KYWXbW5tbM9bqQ94\ntrkOOgq5QtugmC/bhOYhXtEKAZpPGI61o1TdJWLBfLvqtLgInQTorLGc4UHy\nIHFuZI+JHQkB9NanKaNe/70hlOBID16ifAzlSFbMR8SSRwOnbqoxzU3JUqKF\ngT1twd3Aj+DsJQykD0yCUh7d4IbNo0lF9ql1H+t78rF1QWG4gH06y+3+/h9R\nwfbi56rCzFhS/MjIg5qLvrQyEinb91IVlMNybML3jX2ta5LKj+vK+0jCCjYI\np6/LtY+5U2dSwP4K2xxQXIcl7rkhJS9qIqEhZEoLX8wx+kFT1AF04XOaxj3n\n6x8LgK2E/qB4P0zRxFFp8XSjGed3xKWAwwugtqR0J0hQJKhwVcFo5KDgN7DD\npJ6J6CDTr8UWZcypRPPip6/pIZ4QFX74I4mHZHvYovi6pKROH8ZUWL3SeMkL\nDwNuYcZVhWLRf/b2+XzNOduESPjhufHfoxZ7HVjsAbfh41Cq4Gv2kfCFHWJZ\nodAmZmxyrzk60TFk9AJQP2Cshexy5le1Mg3/UfXM6y/VzWCu6yxXPjl4s7os\n/95H\r\n=i9nk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgzX7Ea6LkaZX72w1tZIZTuAIvGGZsn8axwGoS1eEnNAIgW89sCBVfHu5LPipJlBSBinZo5b6+n89khnbPTa8zVGY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599227690-ea53a6f4.0_1599227770333_0.6108401711610214"},"_hasShrinkwrap":false},"2.6.5-next-1599227891-168af27b.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599227891-168af27b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599227891-168af27b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599227891-168af27b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-E/gjz/iDP3JZSveAKlj6zjupFFQ5P4PSuHKMxsOqMiwscdkW6254npoMG8CYpv1Jf3VPjeWyEDTUhPtNqAMg3Q==","shasum":"717782676ed211a0f64b025fc3529c30b339ecaf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599227891-168af27b.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUkhGCRA9TVsSAnZWagAA5OoP/2ZV2sHsBCwfhqAE3Mlo\n/EPQRW0koxg1hgnTVeWTDtJWgKuiTohKPHrCuaD4hz+f4id2tfNO5oHoNveh\nSjrda4vSOPhNLgyqlL/mU5bDH/EvC9T/97a2geQmoIPM20QeMxiLbXPYcF4n\nfQVU4BHfBNVvP1Q/wm2k6UsBemelL5q6ICqckN/gpjCWEyGCUXxXt6AOwoyC\n0zJq1lRvZGPFBZTDodYXwec10d33mzBl5NWZnKwFo8v/AC0mpdFFiK+2jpdL\nkG3/wsWJRMWrwWlRCzZIxLfocnIJoSYOnu9JYdoJb/MMbKVEnjZRCGMGBucU\nReTWVXEGRCtVpuuWeCqtgcS1OYN/japqOw7rFIW2Rs1X9xvzBNoDy0944mwT\nyzbi1dzU/DIPJn2YvtX32eidHusWavL5UUxXSmof3HSvwlsiv8D1q7YImVhn\nZiFqjmicXB5YoRrLjGT0Xm4VMrobmQcV9keUnPtgDupeIboiILgE3sA83wI6\naVgAYF1bfV6JDhBDArE1nprEC8X/WDa+VvkJZw0MGylPB/aJ1wQpGBsN8w2h\nUrZQlucX4s5FvWM1cJQTl0I0fX+tS53ZWAvg6tCV4As96znzNHAUKTPFfxLO\nt5J5ZwuK7A+0fs9PDsL72s82Sj6EG1YNBpf+6nvrkV1SjTkDTug9RPX6mUTk\nyGYL\r\n=qT4+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA0LAkClq5XOLUxrvQZJPSNmNOR4+rBgPzfzON/RuATJAiBvlATW2BZpuCtTKT7RiMCM3CBWBtpD2znecU29QBWbzA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599227891-168af27b.0_1599227973670_0.0739565643154172"},"_hasShrinkwrap":false},"2.6.5-next-1599233467-5d7a71c8.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599233467-5d7a71c8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599233467-5d7a71c8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599233467-5d7a71c8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t8FZBTptWXahUxhS3yuTKFWjZCUitowMXuC7yOYciECljc89ngz3wDXjLMMxTEMj2+hUT30IA5Bt5JMY2dhI+A==","shasum":"a479774e908e9ed1dd00b5a742c3cba687ea3557","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599233467-5d7a71c8.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUl4eCRA9TVsSAnZWagAARNgQAJdYkqMTY0KKj7VvmU+8\nIFFkK61KXOyD7s5yWvSmDEP2Cv19ieY4Jba7eh0KE2voXIEqtOAFCC1foOHV\nqFhEFLhOGerL+BYmw7XTjxTygZeTkuzBqxbbsW1fKdI/RQ1GX1Ks+P8xGxMz\nNI5TElgWXL0L0oUfmssE0/qXnHtS7CLGDHu2/WQFE5OsOQACfzn9TynRZlRl\naj0vGLvtvXMw3yHm/NBr8ZVzPgb/nn0u3SrQZOIedDUKUtNyLMhn78+9M9Hi\nSh8T+GNOLcUgWgIZNxBWA8Ngys91i7tvq9Z2sqVK5ehr/+iOg/uINqSfI/e5\n0X4zeAjMakaFjPTjmfr66wcq53KaxQlo+Ayb9JPsqxxQfn7iVLOjuzllWxxA\nLZ5ilkjS2UFArnpZ7ZIPgD+mX4dCH+hXoD2K2VB5NHZKglFhV3NjLDA7lLfg\noHthV1cywAb1QxZKirQjJk7vD2NTzsazoVPtqjtJT9VNqy6MVutRt98wvzFr\nQiVZD9U9UpjbAZfkbQVQpaKd2+3OfRJyZChulJJ3DJy4vuxhMrtwav1+9N30\naKLd8R2DZOmI2fNOnh92CzLOZP8hGTrsjWizd7Swhv3u4bohH65th174zoMc\nOgI5ZXecIfF4PVYWC8QLEaW27qcb3GGfjWPqww6lxhxEvy4Qec2D3Jp2u8eQ\nv61l\r\n=BW1Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFIs1D9X1ZQAyioZPDPvHU5HUTVtLPs/a9MWUrMPAUNKAiEAxnEvu/dVkP9T46nIeD63BMMQntSdjqh9IAucu1XXK3M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599233467-5d7a71c8.0_1599233565587_0.04083886045042351"},"_hasShrinkwrap":false},"2.6.5-next-1599234290-37f52736.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599234290-37f52736.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599234290-37f52736.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599234290-37f52736.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-e75teR5f/Wng9FkG9J4AoLqtXhEj4DModKQ9jTLvMnuKdsUFTNVlyWYTBMU+deQneZETZVB/qIDNH7We5ZpmZQ==","shasum":"5bff20ac670425640969c5144fa5de1a24269af3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599234290-37f52736.0.tgz","fileCount":54,"unpackedSize":99696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUmFNCRA9TVsSAnZWagAANf8P/jW+wdkYlWxpKpHwxTl2\nB0zufIqXgcrr56uuDzpUIEIsQr9Og/vosQn5cWIu7AybdLcGU0HA3dhKkXPh\nz56PD+ERgrSYq3WBSfFj6OftxXye+PBZuMNMywP+YhSHJeFGFjJ/r616w2mi\nJcnT/palV5sJBQQscXSzRQI6uzVbeFtYQrfDfbyzrCGWmcvnfsrbNCupLV/r\nFI54jPR+j2K65a2e8q8c8OR3AsbcqPdYXGYAAFgsbVxBza3BW/8QpvqW5LGL\ncBhWtVy/2cpXLH/S/dWwI7HUlYGP3qGoaVgR7o+VAXAO6QzTzEE0e3nslFu7\noo+qXzWzMGj3y/q80vfki57LPK/zs/UClrP2BAGg5RvIEBWNTfWctC/NG02J\nf9fJv+nU0MnnerSki9jq/YC9/aTqfFw/pVERHuHRlpyLgGlmQ/hyQCjCIpwm\njtlv/k3sdR0XVhDsYBAYVL619KWtt4SFs3ytyE2b5eDIKHl+LedA1QRWuxoh\nxKIUxtjoPnjjzxD5ez8wF2DPxAryO9M563KkjnTYUidT21OkEy7UvKVRVB7y\neeO2ELkjtqpaUGFEZnM2tmWJIfIzbTHMtWf2DsBVZry6uHcAaA8HB/yVtrzR\nIDU659DhQrg2LWVAd4ae9uVlPArxvniGym0UI5skkp2fFtGLT4VcSMgTGVRI\nJN/J\r\n=1oep\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICpDFB5k9MqKcmk5wgWCtLfIcZ2DqMz/BbPPe3okaz/SAiEAwnWTWhvye207Qm8EqSbBKWclDu2EKLMZaelajNhNheE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599234290-37f52736.0_1599234380696_0.3698004556839989"},"_hasShrinkwrap":false},"2.6.5-next-1599234706-640d6db7.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599234706-640d6db7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599234706-640d6db7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599234706-640d6db7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6ELASmJ5tBMXh0R8dcAs2/VOW1E0giOUKC0IPy5+P4V0w9Bt/Yf1k7eY3rqaWLKxImquVLgbzLNER/jdH0nYfA==","shasum":"3bdc57fc9bd7e299994461260ebc7105ac5a2723","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599234706-640d6db7.0.tgz","fileCount":54,"unpackedSize":99696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUmLsCRA9TVsSAnZWagAA/TcP/0dBsH89WOPKGM9TAAN0\nekko26dWreE+einM4/N2khySmlgWQP14FhrD2aoaci0B+WTMSi2hC1CIw4lB\nKzgcvIwFCl7eBz+sN/N/ng34waQI7eX1SrmpTgRDvqBDsK1q/l+AaF2/11Tp\nWaT14ZDrpb6nf6i3IZzAGqirjg1VdsIiIqlWP2yynTfWNXIjK75z4wOim9GA\n7fkQl1ritLAH1pKymvuxm58TX7V+4G+3KkbaLuWdLGQ5mRZiMvKQ1LV5C6eA\n428xx5U2fnzgP9Lc1doUOWCvJVWl3NVo82wfn6eq0uu7JVdMYayADeI7PrpL\niQFztvZSxZoezuyq1lJPkrfRKcPjCjd5ke3J2bDExQkM3HIoBCmuXuUkKMZb\nKYn7Ao1PuooiVuKpMK+RQLAdp/26gvSrcHZDKqgRWDhHrOyQseZmqxWdUqZT\nsrG1elQF2I0hykI6zr7vaBZjcuYijqyTnxJWGwu0Jn0uhn4xmT3H9fBrDAI3\ndkk62XqUFkKG0lzfI2colCTJ2amDacOJOjBe7Gx8ICW1sfNw9s+U4ypca0dL\nN7oRbFMk2v7lHAgzhVFuLvTw8SPa89u/wWtZ6P+0x40G/bmj3T7/sHxkRlsV\nn9CwGtY5kfRLVRlXtqxI9kQCSJf8/URwKUJjP5a4YUIu/ryO0bJhbVYBwyt+\nsZmn\r\n=+BXv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmnpqFuuLbyrubN5jz8hVfghhLzIzBnkxOsPOqz1e3VAiB1Xi1kFIJT5u/SKeKjRpj4YC7gxQUEkL5jx+4V5NAg8A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599234706-640d6db7.0_1599234796084_0.8641461576478009"},"_hasShrinkwrap":false},"2.6.5-next-1599234966-843376bf.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599234966-843376bf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599234966-843376bf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599234966-843376bf.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tyzJRke7rdNjyth5jhXOuW7id+F5mpkrocE6NdewTtolWpbVe9sSJN93PK2fcHwgJjljdOo3NaWQF8FQWrWQXg==","shasum":"15db51e975ff8401f4de39bc80734b1789be5617","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599234966-843376bf.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUmPxCRA9TVsSAnZWagAA3j0P/iJFoPjmtTVDD3p/fSN5\n1lduTVgy6Z3a5hKLcISlC1HeqwxnobWRnXBYnuVEISNZoa3+wwCS1AM3MH5o\ntiBAd3e2Spr9Wz30ifFScoaFNDMOyblbiPS0W3bnS0crtsoyZM5RQLmcaS4w\nTUs5zGsKi7yZepmru3cui6JEzf50gPySE5BCgh8b4ldFaVnEBUBQMFfcJ8KZ\nQBqSn7tNYLc0dk/excvRODCTtDvykToXmi99zOv7eX2x0pZBankc2zIp8VzH\nrX9AGuURdZYRQhaSMWQt54GEnfKYkFxZKH+GiiU+KBi/nZofsaF0ukuCtIVm\nAPteMXd/sQQitaFEgI4/QeyzgLLJT1wmArxcqcaqLcurzWew6g+UI3Po0dgf\nYnmFRhTD5v9YO/9iyHyG5X6UmAUx5QqG9OturG9/K47TG7CyTxfSAL7HKRub\nT9JshLdDsW5oh+JyifpkoIYYiOOLWKHLu51y2nQ8Yt7iX1HkfeMTd4hm6d9Q\n4I+Hc3By7y+L61hm0LVYb7mMTNmPz8zuARhVffNj6ePb2WSTtE/Y2QSHS8by\nzstTMskyqnBQmv8OtO2mNgOMk9uJbW+Mu4jAHpWSnQXb5kVHFh46ijCal/77\nhZkuzM0PdSDDj5sMyUmrf2/1gVjo6WMPsYX9K2Cewf7+pm4aokV8MOG8Ohew\nVOuh\r\n=Waag\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEke3WSmAkRwiWgdJD45EaHAaDgbRXUMfWuMJYGLYOgvAiEAr+93nNPhzGW3Ie+xAi3OjiNBNiTqJHG6lhFk/rCFBuU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599234966-843376bf.0_1599235057235_0.2190541092380185"},"_hasShrinkwrap":false},"2.6.5-next-1599242871-d295efc1.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599242871-d295efc1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599242871-d295efc1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599242871-d295efc1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0J92/shcsUEYuYWe52MeZfiIprp0VVfeA2iWVFRr6AoSbauYcido2QgyW5QYqGPVzFuE1BHDugaMCeUwjpSCuQ==","shasum":"546d67f3b933525364726b2941a2140a641a4664","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599242871-d295efc1.0.tgz","fileCount":54,"unpackedSize":99696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUoLfCRA9TVsSAnZWagAApekP/2P0u1jC5PXzKROim6ux\nwKMgFEYEZTUTI2QnlL8DCq89T7cMkqcXoYvC8IitmM5CAXK605wEyTsXBPqa\nDaKAHldq5DyZ1lA7F4010Qjcp8HY+4+DF+MYl4ZYcj+vUktlG8O15/9C/Y/t\nIooOmgX8I2+k4HT+7qM7Spa9ZfSzDkQ+zKRflkVCmfqbcK8O9au2YUKPXAcx\n3xioWmMjRVcMASnJKiOLQlRQ8HQej+8pZ+Y9ERAPDskGdKZvcJOhf+KC5uBL\ndK6YXcYNm369CRxUtWauNB+IX8lmqGZOkLEojR7fM7qvs40WAIW1kPygdian\nJsLT9JMj5GZ+uK4ZZgbfMbANIp5R/1RdVoBmP3GantrX96dQQUW0ErN1wIdi\nK0STfWsd5heTILI+v+Ov/rs9BW/i1QF8s/mpukx9gbJqKBq+6XxLp4cJjg1X\nKBGh6aUl7EtxYX9VLBj++a6Cq0u+4UfdPm0f53EpSqTBaVK6lMzE0Bz99T8o\n1GoZhCovSgYarMR9FTiVsaKDwm9BBLL6Rigyx5HCASYRKZNiIO8oTeHx0vUn\nqup1rFMl15POFe0pYatc5nziCPZo77BT+XQgjmrXtE1ekF759pIhtiTtAqtM\nUSNXZlx7r/GMJXnKvhEEVveXI9bNRk3xNiC33QW5KC39hq33hL+ue6MSB27j\n9Ieh\r\n=wszt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxhFk0LC/1YAA80M/NMuBJWs2nx8Qek2Tx2XviSPeB3AiAmdJx5Vp1SEeq45XHLy1oisY/qfYdGAxhbakbg/XpC1Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599242871-d295efc1.0_1599242974935_0.15714232622756885"},"_hasShrinkwrap":false},"2.6.5-next-1599243514-7b250b81.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599243514-7b250b81.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599243514-7b250b81.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599243514-7b250b81.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uyCSqnT8zAAdveFr3SS6ZHT/9OMLkA65xXmtZIVbOeHnoZUxH6KctjYHL6QT5Dso+ifKh7IzMbBlMRD7nsShMw==","shasum":"5498f751680296b01c858fa745fbbc120203988a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599243514-7b250b81.0.tgz","fileCount":54,"unpackedSize":99696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUoVUCRA9TVsSAnZWagAA6mIP/iXlO3HL7zMNAC+jJMSM\nXMOm4iQ7jZ1zcD5cGO+0daPDKWYZv4y02MeMFjw3BsNWnwC8qQUWW2qHbqY2\n8d+AkFnhGtvB6bqksE5pAdgOx4fyxw/IyY2WbLlesDF14KkIQrCSB14a2KXN\nNi9VgOOec/QppBetSifDbG2+5oALuGSI9h8/LB5KDnqRacGRgzoEBfkg2coy\nh+5ZBiG5L3x2M0WfgM6ylXPY5G8TK+2C+/hzuZBmGZT01csZfaKU9TBXkepr\nr/dgHXlhXlAuHSBMWDJ2J+aQGo+CZzg4qybkEHAhqp1EG1mp3NEqR9dZQGRV\ng4eewPrAmwng3iLP+p6/wW5MYuLDVr/I6o8Ty4X6kR9sc0446VZ7JvML8M+N\nYvP+mUKZopHJ6aAshzCNFgJfh0XziAsjs1/2W36cGWMxQb+4a3RyG+UfNkdY\n2P8+kacWbV08d5vgTeXYuMIRBWdqnj6dCf3EJZr/N0bGWg8/HWp0SZPv3SUS\nxAX05URJoAyB/fIIfEOJwNjF0w8BrR1dJAwWBSBkjjWslfvSUwIxm7hrfjJy\nHwRpQSLQA/7bVlPXw0QgOS0YF8nxEkVu99maemlV6LSYi/VO0wzmAHaxlr+F\nemlnj8yLOoYov+RAQy+wC5KBiwe6pBj7n/Ju78W9C4hOuCFParHnA65yQzDE\nYkMc\r\n=HeaJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQc3tqv/L07MEKCybQrC+RoSuNrMAOofDnwLOTPDE17gIgEUEgXRwniSodianWhbLr7gb+I5s1xEwiRm9SnyWwgNw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599243514-7b250b81.0_1599243604323_0.03563334237524729"},"_hasShrinkwrap":false},"2.6.5-next-1599286424-ea0ff094.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599286424-ea0ff094.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599286424-ea0ff094.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599286424-ea0ff094.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-IW3RbY6CzOS+y8Ly1qedRNSNDEaUSrcecy6lSe12lanaAyFe2EaA/Rf+rw/FzftMUMR1on3EWoT5I8WTxy/SIA==","shasum":"9689a2e4bbc2759b64b125db6431cd994d21f88a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599286424-ea0ff094.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUyz2CRA9TVsSAnZWagAAS4EP+wXfyAFFOD6SfUZqjp8o\nmb8N6seEiHU0ML8MzFlEeNzDjpNPnKgLNvbVZuci2FP7kPmsR/jdUOeu1rXR\nwHlWuboLUOh+tJAet20xUvdHxV6roc6uOnvpcHs36nsgqkZggIrRDkaLVJDM\nbNDACRX6Pkd4XO3JnDyYk9fNgUAUsbrT61frH4lRN5ouzFvbTxQTaSnMkGc2\nDAbCtLF1qAVIHBIDZsLvMjngiV9UV5XBAb7CP5dLgL7fX8tZvQFAWFrUO77L\nRCv8iCWhLYSHj1MNdHzZpcqFAqs7RhqEdgMMH9aHyI25dxxJVWt0VY7HCz4R\nfbIrz9o8tBCafvz9Jho0C6M/8yX7nBsH36vXdYwWskwXlMGtXAzusWZTb6OM\nKFH7WFMAubsJpteNxcAIiTvgtwVvLkUYZjzqkIKFeisRDuDjxIZrJ12YEujT\nA4Xvm41YoNMfcbaqtgapF6pDu0dbHcC2lfkCE+w+pTWa83ia9/l65k/xF6Lt\nYQjrNzs15ZCZsm3Ke/MgePJmZs/vZ0jrHIIclURAb/2/Xqiwv6s9cvtX5avB\n85dtBuzXM3SOXTe6S3gw1cJiC30Q0untm+6RhZ0PjKJM+Z9Q79GfwmngSnq6\nwS7pIof/BuIb5FLA25mQO/mqVvCR8jyTHfTHasU9A4FghXXNyb/bl78bgHLP\nGXaG\r\n=GQKm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNNL0Y7fOVZ+YAhy33JF6pmusN8W4zPMMn7NEwSl+YoAiEAx1/A3IOQBiLyV48qTlef0QCoDZdYIeaTzlAD+y7FjFA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599286424-ea0ff094.0_1599286517489_0.4330790702862508"},"_hasShrinkwrap":false},"2.6.5-next-1599288099-2797b89b.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599288099-2797b89b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599288099-2797b89b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599288099-2797b89b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PxGHlYAAaC0guQ/EZBQ539kHOR9seJFhu7Wl3FtMIMDsbIaxBzn9T7U1SbRp4sWqL2ub80ztes0KXxsKn+M8AQ==","shasum":"20d9a4c8aa419047e023b94af0c7ac8021813d6a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599288099-2797b89b.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUzNwCRA9TVsSAnZWagAAZIsP/0s+E3Kzm8Nob4P/8z1s\nZRxYFjkJHcvnAKYj0cprAPVElf7ODoG/UKO0SnCB1b96LyCRjvo83MU/RLBT\npFrd7Mgs29anlJRKJ40QLtpaEaQFfgSIGcWtBPnarxc4xAFRb1Txo4zIQt8a\nS5ekdWLvofVe67By9Yk3GCgMsd6zsHTzDVUm4pD5P07/zk/ERfdOeUD53Hh0\nD0Wfzd6R9FDsMaLsbezzyFR+Oj9+WN3FNBy8xWwAS02WXbUANhSjY/aFXV9O\na0m9ItgwT7CSbmcNQWExoswlmmey0iItWH3st2iUg1Z0ujZUO1TwPE68y1X/\n8us3juO0lVKtPY9v+J7hicrG8yJ5ltevQ7ND0ESj3MdvfX0kMKokmkUKDs6j\nrEgOLTKl82n8FQ2BZviQ5NntxgZP8pJSFt7wV8oWEgFkzdu4gh0+E2+TPziC\nlUmMWSSqOYdtOg9ePtWo08VrF4IW40C5LhsxOYENjeIszPTzYtXaVREwF3aY\njl9kkmXx7I5Svidi1wRnGdOc7+xRsxaz0598XXnuuPBiqGqXfQIEK6jH9ruP\njA277oJC/rW3MEsCo8HNxWKxwSNOEVjQKdbD+ntad93IPpKDfO/N2LZcuhXZ\nbaFce8j27xm6rBzs0KG9PV00mcG4rZ32Q6B7P2ltNzfnyxSmcxWM13NCBIQf\nDzE6\r\n=FMG9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHMQsOetHamCJHf4z4FF31EYLak/41R7uibiy9waTAQJAiEA6N/DHDsxy/DhtqAc5lCSRnHYGuHiCnvY+pznKgAw6QM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599288099-2797b89b.0_1599288175895_0.46172719582235056"},"_hasShrinkwrap":false},"2.6.5-next-1599289186-f13ba232.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599289186-f13ba232.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599289186-f13ba232.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599289186-f13ba232.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tVpj4jGhvmmLU6AXRBd/o+VYzoIlv8b+ThkLG34FrJOwGqEMkg7zaRpETMjRuK5DCW4NFyuhXOUDGk8jm0RAjw==","shasum":"503fef4db65543e56debd11d3b7d31317b85eb05","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599289186-f13ba232.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUze7CRA9TVsSAnZWagAAkcQP/Rcwdw/Eysj0uYzV8FfE\nRtokcGKJ382/hPTjZqqF9pudtsXhf+Dz5M1KohznRk4gaBSXYmX2pripxTFX\nT4gqKlqRlztmXf+WLh+qhx++ejIoTWvPGnfX+OU6Dze4JklbYM0mnYlp5U17\nCK2VyXK6uWEyWCBzWIPcG7Hy7wc67hL3qj3QmSEjmx/use1vu/LsLypGYLqF\nfCDxDONgWzPASRJaMNWPjEIwdydbtwtjYMfNaWuE3xvFY2ueTq0ccYUzSYkN\nX9hDoQ7m+zQ2tnbyO/1h483kKVWSjA1igpWoEhwl4uPomhAn6u/aWVBU+29Y\nTP3wmN+CQprDXmdUu44CUEKz4eYPsEa8OUgknlns9eg1nNm5OGgoacgzN1Kz\niwc8QErEuiGgX2os+lKkjkKaOP6xsfV5JK+OaP3jZJWN2SDHJRwcGp1O2VKQ\nqe9VYRdBXZKh0bk9nwFu9A799u/k4bBBsIoPE8eIKVzGoLb72GQPb3YTdc63\nO9J8goLORNbw+QYJwLxp/5JrL6Z+O3E9tebtnSkZXvvhbLAl4OM0txbiCJLu\noqZiQdjKPwHYdUdmPLPgKvFKGq/yNaTZtrjUZ7JoaHi2gmkTjWlkO73fvy2v\nx3l1eWFHShkf8j33fInkl/rERZFossUtW+3cnWJf8IODDYe9BwCFs5ETAxDs\nLUS0\r\n=QHhc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLkzWZLS6z7fJ6P018QbJbttJVe4JTQYsWdHvXo3vARgIgOABvB+wrWqtMtVgxgMafOswZZBNpu28Fbjc2i5CBHhc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599289186-f13ba232.0_1599289275161_0.9554141519734789"},"_hasShrinkwrap":false},"2.6.5-next-1599312826-edfff426.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599312826-edfff426.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599312826-edfff426.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599312826-edfff426.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8GsdiilhAceD4/y+qjm+Nu9BEmXNw2jIQVO/IUgko8yUK0lNBCA6Vm6yKcEppqfwuxC3whiNQb0pYWCwguLfIg==","shasum":"0ff5ff22971ac346be1bc810c3ab14e541766fe0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599312826-edfff426.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfU5QICRA9TVsSAnZWagAAC0QP/21fc2q4/9kCy8EQKJS7\nafkoPB5DE7vX6QTKNlbhirvIcdTh/on9uaSucbt6JMxq7AxgRbx+SWLsygDL\nVD2QU3FQxKR1WHb6aB2NffirKAlJHDwblcEMlXqFqWqSQE6c7P4KhvfElkHV\nIceFi3ZN9/6yGgX5wkRv2DFrlTeM6qUeEw/8t4fldwMfyzLDiPoCwqEwY+0y\no41sMu6HCbFcUAT9qSVdYhIJqZveeBgf0yozJV+44i/Kt5t9WDFa6DBRQbRk\neiWijWhPG4NfV6I5jLzWUE+XTsQbdvKmKz2x/aUovW2+bRpB80lXQCkwB7yS\n35HwNe4uD89vzm3ihRYy8lexgPFikc168DUuQ4vlskZnI/3LwpWltQIkqijT\nlCfy12CT4m5cZmgalAp0tMISRfqIbmf8HMDyWwzR96wPF49be7PII1mxHEmC\n+dld9Awph1tVjJtTkOpq5wTFLZ0BIve1j1flgFnvOnvugcFbZZ1Pa5RmhtOa\nB7W19GWrd5YPfjDzKJU89pXXXR+XmzgqWvjDP2Bo3iC/GLPmckN6An1rzY1c\ngBiSJqBvp53kko1gbTcWrpu4jP34c9//D+QO7KGZrU0SvQXK+1Vcwlo7BO2s\nCP7FLUuj1V10NZ4yRznztnw9xvlTP1XYqXBqpZe+CAlpn/khNcZRH2q2sQJC\ngikK\r\n=y9up\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnVO1TNsG/1vTjwgjNMGnIEyyWrzIGW3mZUFrk0/h+LAiEA2J3oRZ/QvCBrygcpQdgeLkLKL53nZnMo5ZCZpcB+HwU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599312826-edfff426.0_1599312904005_0.9588936081114363"},"_hasShrinkwrap":false},"2.6.5-next-1599317533-b71812bf.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599317533-b71812bf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599317533-b71812bf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599317533-b71812bf.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vuCNhOzxg7Cd9cZVEoJerrUIollmsEfJ4dPVki+ozCj9AwS9yNLLgP67wZU+rchBIrRyQpPkUO0IgV4hTTyJHQ==","shasum":"dbde048853a9a8cfe3595d129e5daf55ae11379e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599317533-b71812bf.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfU6ZtCRA9TVsSAnZWagAAhoIQAIn2RH9EEX160h4BCKMG\n2U9jsdXH5W5Fd4XaFWICrTkfoYpur8jPC4gvsPbs3w0wYvnp86JEexNFCrGO\n8nH0v8q/S7vBan+He8jL52sE1omcM7l2x+LtArFqR4XLY2zawZkpsMgbZpzn\n6o2xR/KibvaqBzPvSRmRhT226MPIA0ahuGC7Lb/JW8FGDzJJvaHefiWfP2mW\nxO//0BUmE7LsY5ANaDdrmjU/9ndI3uZYAqEm0AY22D+Q0Pcxmi1yiXClmSS3\nj2GJ7JQI/yVEwmmfRK3g05ySnhkkHBExiEQx3ff7M+eZYKoYD44xgFcqYi6l\nPbWzenhAG80kXfHqSoi1L02jzReHyhItOAUY/V5c/kIJ5ASFfWV0xVfrxVkA\nLuFFc9uS20aw0Ju9VDEJNnHfHS3BJ4yt7nDr2/hE+tEqIlOGhlTff9YPWVus\nsZcN9WwJLeR+Jxh57vAXnCaEWXhVIhoRLa90qgNqSitoZcJGC2K8BaFfvsGW\nRDQ/nF5ReSgpujeY/j1Elqg3RN+ZmSqlk2eZy2peSugyC/n045mcHeEEAnG0\n09K0rpRH+ySCgfsA8q8x+SOVSxFVDHn5SiT+rPawRDRbpRlPvv6NiukZJOW7\nRP24InJQrhFIagRMhqJ7DPiCDrtjHTYU1on3NAKor8u8CTGpSWmAVkOXMEcd\nSP4X\r\n=FxvU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBn1LMhdLCCyu9YsaS+tJarZ58ZCfuyJheq5xjKJmIZGAiEAlbczVKI3ygFgB32cia9JkrEfREs6b/pwYqZutxXKZG0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599317533-b71812bf.0_1599317612709_0.9475256792604012"},"_hasShrinkwrap":false},"2.6.5-next-1599469495-90406ff3.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599469495-90406ff3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599469495-90406ff3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599469495-90406ff3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tiJeIpwOCp/4nIZVIWU/5qepwWGApeTIAouwmRsdPaByIoVRB+JzLL+Sj5YIea9nduVNV+0M6klZafbgP9801w==","shasum":"e9a5eb99a57a1d4df128f63d36085660aa969ae4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599469495-90406ff3.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVfgRCRA9TVsSAnZWagAATcYP/2HFRBurG5oMUUjMuPay\ndkubu99kd/WQVPTzKO5JHmsWeDIepJzBS93FQlgiq0nty15xI8Tw73O1Kr6I\n1Z+A1VmIrvVrFQW3+AoMgqMUzf2a64cgEb6ssdt8d5V+LkDa0d+LqJ5Ls+WR\nLFGJLqHeSndpoG+fQmCTOqFM/CLtgitCT9T8K3xtKnhzs2ivbAtdkWD1uXxt\nbnTsy8klanEBQeR/TXtr46k/EFBTAdcgrJm9f1XX6XbS72xaHFNttK+xrRTw\nXuvOfC7ekTKViF3VozuvbS3y+ROUiCfegZThgmgo4d0QJFiSPv5Z/x2av/2z\nmL+3VDuh4WRq1Puzhu/S7kTJ4xS2+MdN085L0HAoVhgjtsReGJgippRe2QiO\ng13qoL4oRc79kc9VcQEoyLt++jvLccQXPl74He3tPrYBqjavsFrpUDxiSyva\n7WyCD4xdXGCO4KyAGtu8RNuNS9GQdOhPOnopidxVpPG193HvMoEXS701aIPA\ny6++9aDxnJ+3+ug14P1kt+9FyMxzBljcRGCiJYSgQXGXUUWSsYvf3PeX0Nam\npxGWERuFZ46G6G4+79JoD6n+fQaBWlMWoym/hdxR780bH4aZbHku958y9600\n+voQ05RWce5SgZxCnEnyRauBRuWjHilEj1Jubp3vF/icAQWN94XwaiDfjCr0\nSJNi\r\n=fC7y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHWpmg4AqG6mdUJ3nWry0wa1mV5ErLt3ZJEHtkRZ6OJXAiApkxgsMyn4fld7OdkndOReJGFJTTLi0wZY/6JfAXwqNA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599469495-90406ff3.0_1599469585365_0.200584193887134"},"_hasShrinkwrap":false},"2.6.5-next-1599469586-56835928.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599469586-56835928.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599469586-56835928.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599469586-56835928.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eKR8GOfO8Yu7OQSG+fk11DideAiYEqN1q13qmfmSEFFm3EoBT/8+/5/eCczMA7QRVI+Beikz41CmLafAe8RTuw==","shasum":"95406b2145480ffcaba8b52fd5e01e4c03044d31","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599469586-56835928.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVfhwCRA9TVsSAnZWagAAtCMP/A/OGITEmyvapvaWi0yh\nn3Rz+8CTtKcl7DM/pIX0/VXlXo15z1TZgLIcQXIW854DWg+P3r7ZNwxXrbIV\nXfyYN/mIBjw/gOD+oeRHtqr+2NtjpAn28p0K/qdEAENkgWwfF2A7EPrqSzKo\nz98h/7xYPxXbl/UF8FfvoEv9kWvrcQk8bvF+eIWmSJ4Sz2KyMAX/KHqv9Vcm\n3PibdLZuwXDcHz1NL1XSyPpYL40b5Sf+trwBIMiMdOW+MaDCV8gOKWYkXhoI\na9+n4t6Sgm0tO1vbNw6+cCdFqz+0C/gQSbHHpj6Qdq0fKfX8OTXM5BDtAIaR\nERmu/nbbXCEu4ODTPoKukgInjiAtUfKxDb0JKjYSpF0y3BsS5o59g69rdkvC\n2ZVVC6wKUbPFk5/8nY14IeBJaErhj5svMGrzyKvXKZZV9sRYiK2o3+m03o1V\nDqk1VBL+z4tjhX6yiwCIFov7SpZc1PhHplE55arz4yoLTZB+dRNMLVgNJfOq\n3rsZhH11Mj0V2mTSos9MAVFh4W9Bb8emSMN6WCQAWDKLN39IPKeT9ICVUd2c\nMnizJtj/lrBMEqrzbPznp8h+7Aaj++sCB7o/CzKIZF3SgJ14j8kilSEqWk4B\n19ScqKMKXzjlLqbG9Eoj2m0DdTggmQztvdKUNuK6xoi93xgqu0VKEbKZCNTX\ngFDs\r\n=v6yo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSZjt7HvzSnBgwRRPMgsvu6BMrNTHxgcgd4clwxv98LQIhAP9JvbBFI8FiBbQmXUkf6YzC074kUH+cAw45NS3FgITl"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599469586-56835928.0_1599469680414_0.04277800054276226"},"_hasShrinkwrap":false},"2.6.5-next-1599472221-90406ff3.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599472221-90406ff3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599472221-90406ff3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599472221-90406ff3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Owg9gY70dMADKXE34xLqNOwhVltHQKUN83EEue7OzyFDMlW0DwG8Mcn+2O3LqTvg2TuhrRTG+VFvbV2y1j9d+A==","shasum":"790701d55cc35eccf16b98c51db019b93573decc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599472221-90406ff3.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVgK0CRA9TVsSAnZWagAAikwQAIJ+A92IstPwItTh4R83\nRACLnkBgg6xyUDAaN9/9YzSvCA+EAkc83cmbA7Bco43dlgzt5iJFZcMJuB1f\nRHoNB61HrZn7DhhE3rq66xFM8V7+VlDSp8NOVVUeePYKk1Cgv2SVd79sSZ28\nAPJe0Eel/Rm78WxbfygakVg2AJJ0MLr76kFOppRPY04G2wqbJ/71jWLsGyEi\n5Vkc57zASWq4ZuQlk9GWEv4dxAAZKb4CTHKH4b7D0f/X3/bsvAN0J6chAfYi\n5oR6NN6ogHbk4XCpOLgbblS5DkIW7izDvNzRophdMPyG4VPkRmpUzmRPa3jI\nxcEC9x8g/iSNWYMX92un0/OWjhAnTy+38EPjzUye7FtJbkouWU5MRxVFAtgI\nRKkjtfGq8PJF6VHd70qbV9fqWT0CPQVocnFwMWX/YulYGl7fEz0m8RfMSfSC\nZqAEo+im5QCy6HBFxv61lJtRqzJYEIUIwZPbX33vmUlEebKUf3hrnlE+7od7\n2gNlmd9y5emuoPS1dwv1zNj35dQMAD2Qkel/c1buBUzNRkL3P7A37H9QDysT\ngl7jE0D9at9eWmS/Q94N5RMb1XSzDjVtmtybxwLk9X0oucYjhoVmW1PKq164\nDZb6xoBwFdwFIOQVIX44oEYH8zYGE89GGqyUEe7jW+yvP7inwvWlKGHJXJew\n6Coc\r\n=mgAi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwvN0MOVCjLIF0whLbEBGmxvv3IyG/1XCCaqWPAo1VmQIhAM0ouxLzgZaP+ynaAyIQnz7vzxLs4tYXVn1QhNGoTVvU"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599472221-90406ff3.0_1599472308322_0.7566344823780762"},"_hasShrinkwrap":false},"2.6.5-next-1599473037-f966c51d.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599473037-f966c51d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599473037-f966c51d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599473037-f966c51d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-gsjGJgzGV7fPoK6UCvRO6YDe9D1KJmZp+VfbcAfcCG0OHZKfOBIEVzQUFiHr1rORHoNS+uhecX48NT4pZy0IRg==","shasum":"a5feaae5b682f2f835b982a102eca98739e026d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599473037-f966c51d.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVgXqCRA9TVsSAnZWagAA0REP/20gvKNLkTp9F+0/XIdL\nD54obkRqpNC5geqKPu3T3qI1jDZlAspt8LA+aSHl0RoUhffFHOYbWfCRwbKT\nOK405walRDqk7jNo8/gcu1BCfk74r3lZWVRVXDoebq748D4q6Uy+/yftLDFT\n9mKAMdAVj9q6c2hOdiiGyoSoga97h1A4gMJ5l0CJNGITF4XTyaK9gArJqnMa\n/v8uVFTVNZxDV/HWcmXq8+M8Ns5FnivWQweW7LTjHaWLb56g3bcRnb1ehBBd\nZdX1FRPJELNZ21pdO4aX6+J3i3tBsxJuicct/QugIQgeCdw5wVGzmmATl+ne\n8i46PiaGxDghktIvbE35E2MGn9CozArDjwQM6i9eBt0vQHuqsOh+N5XaCS++\nfb9lqpY8jXgAvQqcjgxxf4IZk3wPpV2PzAE79xQewtNeSUacBZrPCnvG5Dvf\ncqwuwcW9jb6AWi+7fzvzk0ak4RUKd0CtwtRK0y3mEgOfsfofE63mPScYqkZj\n5lTo5tn+NrF4RKmXoNXj6sBZ8mW4pCLAUiDYFi0sqlZg9VhY6ONncK8CPLkY\nAyN+1wpzlmFMvcr3k/ijWT9jqU9xa+Mg2XcT/HgdvApWx9uVF3liC8IBtfHi\nC8fRIVK5ODEYJgt7oSrfeoqTm93X9rO9IUr5g6LdiWf6+06YJjbDxpeLKTow\nKF7P\r\n=jo1s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGmVUzVRF8nD4SsJunvvH5IZZT7q+x7yUmgbY27msK/AiAuNFnvfb2tIDsLsl/1vhRi9cxtSNBq4cVk35OQ91n9DA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599473037-f966c51d.0_1599473129955_0.5865242205556593"},"_hasShrinkwrap":false},"2.6.5-next-1599473340-7c69e6c8.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599473340-7c69e6c8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599473340-7c69e6c8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599473340-7c69e6c8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eMjMPy3KkGfFx2UN8pssaNO99vsAfhum/d17bhr1oYiHCScflp12yhWybI4kHWvTPcULAjKqwnmQsbA7uSFrig==","shasum":"cb8d5b7bbf0ad2c392b26ffb6a5b8b796ffc4c0d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599473340-7c69e6c8.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVgcdCRA9TVsSAnZWagAAkIcP+wVc4DPuQDhlJGK+Ri7E\nNbhUCBNImGRGPrcs7WIY0jw3X/hfy8fKe/yPxfXCM7jyAZpb1ll+8F/CC8rp\npnb5TaqgPXoMcwN5jUXt00pgrtQexLXtmxYxI3VGx/r8Qnxu2PMm5MGvVhXh\nrgJv8xP8AKJT0NTIRyFvl40Qoh3Bu+T3WLQJct6aXI0J2YbzklHZZ1lByfTS\nZVApYMeRklAx+Ew2IUtNesuvP+6X4S79SPHZrKFvphbivFyGTVtJhjbfHXZi\njOrlneaHAeT0KvtLAklzwoHjOXlsr7e5X/mxqFHnuZ2747+tNugQM+IQaNFi\nPpOH1q/2uzek92bewkPx9MdPWFb1+ayolYxGnAxKmTunu/xdAeWK7xi82ibe\nWcwLJkRGotJGVuDGI+LJwE7177Ho0e4Evv3JT8KP2AKshPHYoBygFY+s8xhI\nsnvYC82revb9i4I4HW6dTZq5Qa2sGlIjr0Id5qCVV7Cb8C3l4GrZxYNeY6Kz\nSn2mRj4eDJLxBvQVlJm/Jsiwh9VO86HHTc7ZUR1cE3yCD/kgiaW2YhfMh1Yd\nRVTzmNXQis3ITV8sf3C3F1QF9P79xqwYcdBLOfCNOxKtY8Ees8YkQTWG2HHf\nsjSIper0i7/tk4dGjY+3iJYyF6AB9QfQnnwiKjv5GTTxGllnzc18ukkBFPcw\nCJ9z\r\n=Wxep\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9yS1GEUHs3YjQFcL29taxDvFq0mLqzJpacQDulf26mwIhAJX3579Jic092LwCmGNFuGfHWjQ4rz3yUDAzJMmPwEwH"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599473340-7c69e6c8.0_1599473437423_0.642831019650431"},"_hasShrinkwrap":false},"2.6.5-next-1599474040-ca9791ea.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599474040-ca9791ea.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599474040-ca9791ea.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599474040-ca9791ea.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UpBfQ1iUygirbqBrlfUcwt5k3KJhnyVyEmP4Po4ynpSElqVbTW/MgDYSaTQB7vG61c1mczD2/ZJ27RK/G46cbw==","shasum":"c819812d0fb949396ac1bf83204faf87d3c912ae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599474040-ca9791ea.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVgnMCRA9TVsSAnZWagAA/k0P/j/4UPywEcYsFANlkp6d\nB/LJw0Y+NOeBLNBuIMLjWCV4c2hEMwNWHfqx+aHWWfgg1RbY+9MKcslV3gVh\nWORPEdid7Wcq7fDettEmUAo3xOVtVxe7Y9cVAhzhztGhhEtLCSinxLCxFkAf\nSh24Z+gsuzSAvId8RNRY9VAZ/Z4Ldq7LfVEqrosSbs2/WYZWf2xrQEV4MX/9\nhVt0krGtlHmU62vfwaeJXhjyRPMjfSSajJDG72hVYvAvxBo5ZGAp0H+tEoQl\npJPHYMTONJm6ECvcvPgAZ7h+ZTJNRSGQCZcFmYkb3r2/Y7u7P1ARyzajg7nP\n7Zvv7jEEYrrppD4Ubp8WyZ3wfrl0Yuu1JSA/hkhRUXAL2amUcNwrIYWhhWpE\nSV5HrPLRDcfOfluuJGFKJMt2EsApf0RVarf7IB4bLS6wzeKzw2u5t4cjelLG\nGcJUw9hFjyTXPDvfReWVZmdYRaUFkyjjubvXPnlxHVsNwFzH7kJxvvz++Ifo\nY0QkjFErkihfgXIIwbgFT+DM0WWWFqivUdJY3QohF53Y2fa6k0Mn2PCf0jfj\nhzq6n72B3CfoGOHACyDYLbpgulH0cIHLlWALuyZCMjeQEXkxbnyP5J//PG99\n4la4OTKmgKmKThsa7sANZWtBcY/jbh074X5XYAvSEZuZUWZb4mLVNrJZw1xo\n4aa4\r\n=sDzI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC05b8hGh3GVh3Lbt++py0VLK/nJeiAX+zBqEhISCpKEgIgQLRbnj0rr1T0VBTeoLE9VZJeTPMmOH/Ve5JX088UnNw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599474040-ca9791ea.0_1599474123960_0.9992677534499466"},"_hasShrinkwrap":false},"2.6.5-next-1599480676-3acc3469.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599480676-3acc3469.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599480676-3acc3469.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599480676-3acc3469.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5RgQYc3cXIPsB+FhPRGysXgtFsO5qJ7B+O+oO8+a3bqJtCrRKTivoGcLh4wFJ06mc1j5vx4v8ABZdue/fBhrfg==","shasum":"712549b6808e911cc181ca3f695653777604cabf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599480676-3acc3469.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfViO/CRA9TVsSAnZWagAAICwQAJsZ3jmh/jEG4Ecc4NOk\nBfOZ31orNaIFy34XcO3OmsZfccN+x/1tIDpP8y1QLJImVCWWr0CtOlc/QmrI\nXpKleIvO+M1xjy5hIPAt8JYOiP1KrgM5Q7Y9oW+8tBRvPdmhD+bYFok4FupV\nx163jJFZKFo3oZmI98E58p7Ysbtjqs/Lws+5JYxsuG7/0b+m1OgZc6wshUqC\njqOA1hkjVue4gq3Yam/wHEVt1eMySoixyaVBWtvcQnvhuFiTS/v3OFDckKdM\ncMEGOIhsmZSmkTiRRuA6+o070clmsIDZE+02HSNc63dOgXSJ/7ASV7LqEmI3\nqxQPcHToe6/GKBB/ugsMBWpKgG2Qbd4DpJk4h6EOrhfvfU4YT0PL4VVMg3+p\nBeM1hRB26LcMNUKcvF5pzEbxSWOha5KuK5XdByGngJCIn09V6dl4weYcxKXL\nfVtkIjpBbYXwDgeEKWJ0zgMA4uwczlARu0Qa16WumlVZ/o3Jm9iyJDlMQWFd\njU4850D678NZ6lc01wb89bx2ezx/yWFB9ugwIt4yCnQjh9qd1I+H8ZXBtji0\nAALwp++OI1+I5BA6nEXTjoQh11/QvqVoIsOfmq8fEx9Cu2mPlJoo2gvHtggy\n0U2V8YiV+68cPGR7v814EvXtdizz4DTj+8axs4RtNRudN30E8z3vRIwRCyDF\nDYBT\r\n=0JqO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATeMfiSbUOzxez4svhk5IBnvQc5qjfqZRka3ywSu3xnAiBzWbIwTo5jbJymgtjxiMYICOr6LJCg3Y492AzTF+dQzw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599480676-3acc3469.0_1599480767392_0.361044426667565"},"_hasShrinkwrap":false},"2.6.5-next-1599485337-5c7ce214.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599485337-5c7ce214.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599485337-5c7ce214.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599485337-5c7ce214.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-P/28KIHL3Tj9A2EXF/LfYlE9aygkm0bFQpSasEPSL6J6tZv7vmlgRIi4tsmtiWuDjTd05rwW3Az55npdUm2CyQ==","shasum":"1bfff4eb13605e6be881753acdc842a1d91a066b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599485337-5c7ce214.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVjXoCRA9TVsSAnZWagAAJdkP/2EnBQEOpkob+RZpyJEF\nWtzez+JD+oLOm3Q899jliE1awygwuQ7lracIX/tCRH5n1bbFp1uuZe/QqSVe\nhRv1vzHFyazxIPnoO/BxFGb50hYwxclNK02rC3SHXvgvFzkw0eZl4Um6z2K+\nS2q/nHvXrIGCKgwGi0D56IpAYIMiuKYz1n8Dj7FM0IsBT6XF3Kl0OAndDF8N\n60JtMehzuxdBtcVosaNxQyhn46A3exVpohE0L+rMHv5jjPFrJlRpytSvhPaI\nbRVEMT0GWJsYeblwZSt/eKPbKXoq1EwgltEqh200bSdhguXD2vmlS0yKB9xz\nkYtD35p7BZLJEe2n07VEGsXmkeqDwsOrHIJRiVGkPfJ7DX7Lt1TzdhhhUYfW\noxvCKLKwX3MFbjT0qh0xvbK/homeO9kNBLRa58REDt2HGtC9IOIoGvaoN+Hk\nFsgcmybC/7zaZ/edz2FAU6g+x1mOg25WaALBfP94w54KzQAGVldKXcgyhDmc\nqhIzhOcV7Jr7BGoSAHmX3U2sGQgb8HQ+0vlgJRIPx7EDnlGxvMBCq7tuZfnm\n5E6uzvQjORLadS6zNN+Gr58OhE6/K2+r9RITVpYjp7X05ybSzRYWhVKWVWM6\nF86IIzpc2PQKWHMdjWP0HiJAlOLnnJxRYvQh5pC0Hdrdv8Ah3LjNQXD5ejpJ\nv3Wq\r\n=fQuw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHWYsQfYgGcvyt2rFDs7C5zZb1M6jW9aUUQPtZPYcsZAiBOk6PKUawzvWxpLDY4uy8zCqpQnV8EeP42PqXdCVxsxw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599485337-5c7ce214.0_1599485415650_0.3889170453780504"},"_hasShrinkwrap":false},"2.6.5-next-1599487957-0204c3a1.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599487957-0204c3a1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599487957-0204c3a1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599487957-0204c3a1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YsEjB4IS34UVbwbMtjrXL/8OQPoK1cORUY4pFDgCGAkq+eS/vTMYi3qaBuUfce0OUP108cCGw5o/f9JkF/gHhA==","shasum":"48dbed58369ff19f4f1348f7c2569a28e1ec43d5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599487957-0204c3a1.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVkAxCRA9TVsSAnZWagAACzYP/RxU+6sPE7VIKu/abICN\nAQcYvLdrRRukO7XHhbaAgdLSp+OjDs1HEGE6KTXIiIgQyYcynZGdh0qrSC53\nNs9nYOMRbj/J2MCw+T853htwkSRK9kdoRsmnaMMlRHnkcL7J6hVVRWlu1Br0\n3Yat/H6ws5pE9sG6brKhtxFU4SjtFqcIAB6/dB775n7psdwuUz9EKDFb13K3\nfsU+p0uoyROC8P3zCD0mwilN05rZK8Ko9DTQDjqDbQfwXmWshoRZWwaw8YOm\n05l931Ujo6eneOPRnWxbE2bnNZAloLIV/ONtF/LxO3RYjl/DYql8Cxn0t5ty\n1jY0joFDxlEP6/beDFfo6Zb6nj/zet0AymeRqCEX15btX0VRBT1k25oLXPPU\npMJ9+n9oGeowxZtkfKja4bbjk7zPnw2f+DnxCo1C+30jhtHOI0Byi2yeCBzG\nMomI1dNQe34WNKjFju+imO5yFsN1X0JsWgJbsEKyIyrGuY0jmmdShIUHQ3A1\nGdUnX8dj8ofOAe0iBoamj0frGHf875lsb646wW/G9HcknpmFxvdxOwc22DER\n3egz9fYsTdQt4Eg4Joht5Pxe2yq9D2n3mih83SJ+54zw7uOB9MztmUEs9Wup\nJdaIkJwnX3eg2RpffjCOznvVtwiB7Yv8bwUi+dJny6W3JAdcbKVdbOdhBPWU\nPHG2\r\n=4fmh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9slPi+5+7F+wjh/1BXrxOTKHLG8ESn/Yej4YbA7tkoAIgc9y/HDXwi9iPzulw62/IOUIAly+lLNjeZrYpISgLjK0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599487957-0204c3a1.0_1599488048495_0.10964925840674122"},"_hasShrinkwrap":false},"2.6.5-next-1599488258-d146c84b.0":{"name":"@xdn/prefetch","version":"2.6.5-next-1599488258-d146c84b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.6.5-next-1599488258-d146c84b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.6.5-next-1599488258-d146c84b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2v52Uny2yLaScblENgGdCYwx0mu1IRhUxZBqTmNYBkfMd6Z2glmukzQB43Y9LnScDkHlVPNHO2k9SifEOljzvw==","shasum":"e74b2618e5793f385c25b322c37d167f7f74a6e6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.6.5-next-1599488258-d146c84b.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVkFeCRA9TVsSAnZWagAArSwP/RNIiOUpxXxeTU3axI6j\nSpeZWiyvH4coojm/Esf2H6kIs2x9pu937SMO4n8myH9wEHY7bKXdioYJD/gd\nXPUd+ISfSHVU3IDdwKmDublejYg6KGEKmqrH6Zt3UvxCjwciP2RaCkkG8IvK\nitSuSLtIMo8zBzZTfVoOrCD2hkf3CXzeR/A4a6DgBB81Ur2ogYpky9Go00Ty\n6kpb+jeZ7lERj2+SQpWF3Wm0L2GHdbrgYERUr5QTyxRiTKSSCIEQSiqpqKpx\nkcKdu6yL9n+Sk+bvDBNG8PO/OweXWBhY8msibg7IJ/zeNIGeaYEq62om/mHG\nY+CoXvUCxyQXvXETBAD+75qluIuUvTXG2juXq0O0LnGsbR2v1bioCR4MzFnB\nZmAJnlKXhy3AOiSHmWI0F5876hi+J1tNVSUcCQ0A/SpYVk1RyJWxwSxBNh9C\nOSxGpoaReZfQMV3s3tTpS5wIl0kGadE/8wKrNJWj8B9/JKTPaUbGOQHE+wGK\nT9/nMZYp6dPvXiA6EbaNGzGZUdA20+vC2TbJ60ewnxbtVY2ZH25gEPeLcSnL\nsk+AUJQuOiuiw8Y3gJ7hrpJa6vmO2h+p7HOd3ReM5s1uSKBss2EAoIiU6kRV\n0QPDZQWl6Q5RrisZdpyXj4/l8Mbu/+HzotQnZVLG0OJ0kUBUzCuSaMmJR3Dw\n2HvX\r\n=XpDq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr2z3q9U/4bj31FpQLnhdLQkfqhKA6M1uoyguSQxGkkAIgH2sFoqUjwezZlG5HldB3wvEi+TgQnW0TqSCSF44du8k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.6.5-next-1599488258-d146c84b.0_1599488350245_0.3263291948958822"},"_hasShrinkwrap":false},"2.7.1-next-1599489124-32ecd24a.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599489124-32ecd24a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599489124-32ecd24a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599489124-32ecd24a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-U9wA77OajnTei0r+XOtMAjOxxDOyLjWiNsHNt61KEowYxloOcKEhiVGS7MXLnwc/+/ieuDlvpyKKrO1+1chkEw==","shasum":"5c2a6e265e78c4d0fcbe331fb3288fd6eff95ba9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599489124-32ecd24a.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVkTGCRA9TVsSAnZWagAAvqsP/1z4l0sAqEXh/I+/TnnL\nyujlJbz8ddR+lxo+fa52Tf0ToiWmAZDZE/L0xwpXVeprZOFad4Kl4SRZdXx+\nMuAfppCa77WcXB2a4nXPYkiRjgDmZsZi49nC2tvyKUnL2P2HtM2XeDRWuq9t\n09RTzx76PGOJ1hCEr3HSFr2XbmKhIR9wLpc12XBODAnc/JXk5Lsht/0qlqGP\nPVvtOhIMjFzteQx9vf9ZdugCFYeEA51TFwoEFe8rB95FZ4FL0e4y4mlNcsKA\nitWvra5h/3Axd+vlh3LgMORp1I5W/mg28MjPoZmn+CFzys6v5avZPjQOJ6JC\nkIM3WfUDMI6C1pSE6Wfajc5O6sUex36Zc/v1gF7+Mebkkc8YwuBL7LowZNkO\nT6qzqByERJDzHuRkGhj3QGXRyeRtuV7dKlmaMigowwdjryo+DQ1ThI2Tn6uj\nPJHGvBlYWX3EPVBqdCw9TtISRPulJyOg92/4cwv+BlIH48yNewUjRH0jCwao\nP0dkcYhxoiOOrQTbIDczDvGlUYeARrJV8n7HkkhqrWieWbkBYEPhMJOzmbvv\nzPbLr8D82XOPV2OhoTdQxivIBLEkUfc+3GyWIx54YHPtZwZNGR1dQtd37CDW\n2Tkg4TQRnLA0YC4if816cO4sUT7O9vuclLRdmn/0OznWAk1laOI4iXbCLZKD\nJOZT\r\n=6M95\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGW/B5ZqfrqbdLY3oyT/wntlyH+O8JoAKQMstFQCIrEGAiAmm4RCdYRsbZmHZOsZL8oxLAduCkcLFhV8FObNdVI3BA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599489124-32ecd24a.0_1599489222383_0.6399947214310977"},"_hasShrinkwrap":false},"2.7.0":{"name":"@xdn/prefetch","version":"2.7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-aN/joBXGSPnGNtPFtZkYg8138Pm/5wRsGO1yAdsZ2ITe1mFUZZgvG+daqdoZVx76HFbpVc6RQJjtf3xCeGGJQQ==","shasum":"33beb4b3804cc5dd82a91e4322fba82ee18b60b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.0.tgz","fileCount":56,"unpackedSize":104358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVkj2CRA9TVsSAnZWagAAc0UP/2R57R56ceU/YFUEoXQo\n8tj6e2zMP0BZ3rorPGdofRhCd4XMjPzGbghtwy7D9f/26v8TFnGj2xUosMGl\nr+5hpQj3AjtRFGKYuYNZo/rdal42x/CyE9FXsXQM0bVHjAlK2sF1FLujxlbF\ncGyd/U21H2DalyOtfhaVOaS9+5msUBXXSgV0ptWEWhLe9wKJIaGKBTLtcXcF\nx2QImrWWFaqWjYiU28/GTqekQl3mIc+2/dVaFfYM0XnOaJxitp0MJdg6gJZi\nTiBArnpzPas/DgoWICyalWLRDDuNRzbFsyzbIF8XiwlYBJuMKpnpNiWa/vA1\nWZRuxDmltTMHgGWZChr8nUd12ahkoBtPbnMfpcMyV7CvZgUzz/SK5VjtuqcZ\n4wuksq8xrWnzWcn1t6ffHNpKaLcYYlu3EpaU1YlHNq7uV/GhiIiKIk2lCPAf\nMcWpJk8nh99GdzjYQ+omPL2dxHM/KHsOqhZsnVaGdRBVWi8Qx0tAOwzGr3Kf\njP/YnCetj7oFB2lAfjgoSf9g1ZnbgiIBvocTzAjiGNgk9DRGP/IzTBPWLXBb\nuoCkfpfKpPBMiFIte9qfner6ZHcC4wBdQTmwzuBzv6xSxBvi1/mGE2+Dho+C\nuKnFG7D6LwygdefO72FFrlUXvVgVsYNki7635EK9eQiBG+/0RKUGCkFfEUyn\nwODq\r\n=8I/7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHSPKbLt4n+7GuTc/QVFb9QtvThyMENalt7+fEY/W3xEAiAPy0278GPkYe7NQkEUoE00jsWsA5e6l6/EX91dxiooiA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.0_1599490294240_0.12034489202930665"},"_hasShrinkwrap":false},"2.7.1-next-1599490635-c6d5c370.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599490635-c6d5c370.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599490635-c6d5c370.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599490635-c6d5c370.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oucR3KOjcTmWMkJVxnDMuxDjBSDIirD5WUHnmmLbVeahO7UmgNPHl1K6TBdm3payv9atQ2hm9hVhU8oGMYb6Sg==","shasum":"054dae66ecd9d4dee50bf414371546181e28aa16","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599490635-c6d5c370.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVkq/CRA9TVsSAnZWagAAxmIQAIVFn05jNvq01l8aljmy\nFXRn+28zwTjC9SEYwZvlW1vZMAnWV0T4pboaee4KIDCHuORs/EjmNKEty7PJ\nzoRwZO2h+TmhJCzaRT68xAeH3cwf8Eg28bF1taZKyATEh2r75p8rujLgXO0O\nqcCOuYOGfG5jmBQ8e0z4KPoEIJIwmsFlwdFAuBseMg4ivhbCtuZI9n9cw/0w\nKbz6bvLrvhI5Y/IPhj3YY9GECQMkDDz0kBhkEK7SmG+iQci66pewhF5eorli\nP5ybk5KnmWjMx6o6dpWGP7NXsxxfdmokdHe+8lecZy8YxUeHfVf49EYHV8w5\nxckc+D4iDHfw6Pm4+/79WgNmHOszEavgSqdSPb0B4zC89qlXbar9vESEuF6x\nlpQS00J0832I3HfFB7cPZCf6rjl3SRy2sUKST1Uhyla5dVISYROQpQcfYs1y\nbWBMqppW+3rFCqbPXDvTVwEC6Fds6Ae33seHTu8n20JJrGEeW6nk0U7omOA+\nrbwQ6v9cER8rLsAKuMs8ngViZSvAJyFqdE4v2p3Ho1QB1tEoEzraNOf3vrSE\n4o9W8ACvD83Y1E/VhFrp8phBi7mKFsypkbWn2bLR3MNiFCpZKFY85So5DNPq\nqnNyuR1NZWGbtEm2HC0DZvyOnJ9rzm/kRDX7TF/ofhMXsT8BcVbCSdWNHM0m\noDJR\r\n=Nnt5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKrfgkqHSzfcm/6uAF0BB8T1iaIjaTpaJAGItxSZKX1AIhAOvoJkdV7bAnZNb+bEtgYS51z8JSfsukCDI3SFh3iihB"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599490635-c6d5c370.0_1599490750513_0.22652725584326294"},"_hasShrinkwrap":false},"2.7.1-next-1599493824-5a123140.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599493824-5a123140.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599493824-5a123140.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599493824-5a123140.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kaFTSlvQDzcuqI7HtnEvseQAdSmYpElN58IsZTF29zSD5wBPx99biTJBKyZT8luv0ImB8R+frAqE1bxbF19MIA==","shasum":"c48ab7bc6b99c94e427ead3550616899b1451f7f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599493824-5a123140.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVlcmCRA9TVsSAnZWagAASrQP/Ak2n2CCTKcTrDFu4Z7r\n3Uct+i9A3+ny3mV6W7kyIkWah5o8B03FW1Thwyp6AoE+izwjoKog0KGTmSD+\n1i9IpEQiqya9BeyyUPN/0d9jTqN6wKkIgvZDvSIqNXDW8PFUuDFO7NpPgdiA\nr73D4q+cwK00d6OzzBY4RlTEnMqTI5g4N5Yf+kCpJn2ZkOM2GRkPa859ik9d\nPXgivzfKqTJB4oIdzksQ9rJ97IZUuP6lfNv88ppc1zKI+2yIOGMlanbW7ICP\nM3OmI7UzLoYrBzjrBMoWNUB02nm5XCZ/GsyKLJhKzkB09YhY5sCSudzocDW/\ndhdJmamLh/2NWm0IaKuMmlO9I/861JZQK2F6xF+FF5dGKDm11Epx39UBbKo3\nh7BjaUqVtVqkE93D5t5gXI1EcQyein9fF1fWQseeiEa8BKt97TNmz4bOCvfT\nDAEODMqc4cxj8fVyLJYe6atd/973tfKOCV8k0C9spsSvjTfv3wN5JsxWJPVf\n2oJ7BnwhnZZZ1WNrgkXBcW6n4iqW5lJgT7jmTa6uNZvu3nczMK83f1OpnfNA\nZDBARfnvWlfDwyU9lNSNt982AkpcnnizgffuTbaxxDnzMF5HtyJFn8mo+Wno\nXS0d6sKWPPFJPpDh+bwcnC5o7psc6tDk2ISXdfnpGolnlT3mEeImU279ez6r\nC8zd\r\n=bt10\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICu4RZAmVQYEeB3oPoNzaAO/UW2IB+es7R0uN6vQP3YwAiEAjZt/xUDCby3G0KtWHkbeZWQln2aL7QSz38bKqeFipZE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599493824-5a123140.0_1599493926196_0.3522917419153344"},"_hasShrinkwrap":false},"2.7.1-next-1599494785-4955142a.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599494785-4955142a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599494785-4955142a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599494785-4955142a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-bpfWrYXsdPwR9jXvY7Vx1A+EXYuCWEZbwpwAf6+opPDd/cdaGIe+DajZlLby/4A3saMrmDEagHDJy0inWYk9Qg==","shasum":"9dc172d11d9f4109f818deda92e745d977cd5677","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599494785-4955142a.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVlrgCRA9TVsSAnZWagAAH/oP/2+P5fAEjVZWNfnbFnvH\ni4rXn4/oFatT1zVncy9p4vdbcmQaGtkt37JLR1TJ+g2NCm9Uf0TWgjYXzJCC\nuBW8ZzEloxGGi2nobu9aKF3TixwDQvFtb2oC7PKD9tgRo9lyKiaSwb7VK2R7\n10q2rcUZufSPjUDrVbd6OlQlPncPCT49+y302UamizUKCRHbhHVCY8pVZ3Dt\nH+oXnQ7RuBYdAk0eC1OJ8ZuEsUh+HDr0wcS7j+V/oVYAqxWOIl10q3axRYDW\nSe3O7t130qQ7o64NZWqdmNFa+/ERTgu7tDXrirhCK2t9FBeXRamsKSx6no1Z\nQCr1N7XNLu8JSMHMvPtgdU6Mp97FsUZJ25MMSG/XtzTKAHVmxSxSPi1I1YMW\nplGro4IjB3NHbllU23VOlLH2KY4YXW5G+a/SXawTTl5FInK/+bH5icbzoerd\nijLvRTm3IO3Ak5BXjFBeFVsJeqht1WGDU+B7tOK8v40XmyOFSxEpTcqdJKYm\nyvt7oh12aTLzK6HbKIrxflg/OsVTB0yAY8uDXHXWKa+IG8WKqpTaDQrm0sRM\nWoAhZlHTB0yneue/qWzHzUSNg40Uv7wSIcFtbrWIHbvy2L5u87nETxlmIK96\nfo/AqLghZxovbql21CcaDOV6DqSMkLKqJsv0StdQtHTTHEkvbiemrTsFNf3s\nyNhL\r\n=w4i4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgpoCMSy322Nli7z+4a5+xVJVDGzvHP4cbqIhA1hqhgAIhANYH8Nc245opgC9LLqHKRYGGJyR2AIyHkGEc7RYXVEVx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599494785-4955142a.0_1599494880361_0.3145177995397468"},"_hasShrinkwrap":false},"2.7.1-next-1599495893-75949ce8.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599495893-75949ce8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599495893-75949ce8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599495893-75949ce8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-34xmyzMpy8LcJ/722VKtFY0nEMVQYQt2+Jz95ishWwsDX5NeSCBpvlcyB41bwXgGRrMG5bTZ5WmkeL5h/P2zqQ==","shasum":"95fdffcd6b232ca11b7fb03e2de84974ca35c1f2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599495893-75949ce8.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVl8pCRA9TVsSAnZWagAAo0AQAI0EOG5nUFxos1kDAgGV\nzdhAucj/zgP9/dZ6v7xP9cfX4SGjNcTiHIigZNQMGv8Y8TJ0EIlnUd99lIsc\nL5Olutn6zaWyzE+f9CqejZs/kjUWX0xRqDPcs+Is4GwXfUTdIfTYS31JYsjd\naIINOb+q+jZWi6MC4gRt5N5ZVGojK/xLGnzAoVsozGwostVC5Nk2ZHny8wi2\n0v+qh+DBjSXv2tZZwx+lgmJMqKnM9lFuSZ4dfLh9eatkc8Az78ZmZ8iJYTbH\n1HS5USdQGbXJbnWxJZ78fg6AKxyGj7oVAyFevBxUumtpqlcrzE7jK0dlvqUq\nUd00ePFM5oFkXpoHUCD5IjybQSS3Q7S3SVXI3YCtDQ4OdijNAXkrAWqlmP6C\nYDXmSt5tHje0sAZBGyI3QYMPkMzlQH7bmK0neLBHRsrcflazXGCwVSbsXdL4\n28YEpwfxeZ4+omyWNNlxe98wBLQwqxHud8g/wyim+vrfdqstODSOO2mc/Rwt\nXFXdn85Guj4xvwOEzeuSEvuFZBK1BYu9mzU+HXIjIBZQpKtcLoXkCLlOQ68D\nJPSuIfj2blPjvUsADyzD1SXOHOUmbIO3W3cLFa2HwKq1JkZ2vHe+G749RSxI\n171XdCeSEjqLkDMiVAaTDtInifJvSn08IFIiKRJ7+FIhCCbsgkerb1wxKD8o\nTcxN\r\n=1YMe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDlDENBBDGh2wGSiL7lJTgCeo1GtAxTMB34Vf7AYryy5AiBKYkyPBAJVYEJZzXqfjaRgvY47cgQRnK0s7614HUKCLA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599495893-75949ce8.0_1599495977088_0.7783332281646267"},"_hasShrinkwrap":false},"2.7.1-next-1599509252-dd0ca2a5.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599509252-dd0ca2a5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599509252-dd0ca2a5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599509252-dd0ca2a5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-aXYnyAsByWxl0NZNRkHVaYZZa3fyksuZ7wPLdZLg5poYC2jfTKfoSvRviCbteic6lEFAiJmQe8YhhRsw4ij+Jw==","shasum":"e8cef08bf84b5448b4f0267424a0d1d82c253264","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599509252-dd0ca2a5.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVpNZCRA9TVsSAnZWagAA1BoP/jneDexOvrtv4gEG0jyJ\nVrzrR2D48Md3+mbGZoyoDS3K+XQ67o2T1WbCuvgxYcWA0FDflQbwlXnKcARV\nx50r01EMA4fz4h2k1Gx7SkANKXmgbInoYWmOp687I+c2jBsGtmS/wvfNp4WS\nfNq+6V6v3WQI6FD6V1s9gHyTP5hTtM7EwFVWAExgQeiFaHuTzZw+GISh/js0\nl9yc9Sd07NMrk22SmDaRrcM4r37s8urfq3r6b4m5Y+71yXkFM7piIa1SSQx3\nM+QkKobxK2YLCC9Ud7L+s4kS6jSwqWHYrzJdi8uDo0EUbAVVwdDzN0L7PH6y\nuatP22vAjRnxF9tSUhdzyQJaw2kb3WOs2LuZ+wYXvPlp/dZx4NxQNY7MwZ1Y\nsu7jx/97ExCAP6yQrWQTyUUA2z2UZbTIEQ81Ofgn+UTooANDh3Yc3f/Z8NaR\nlv5ajFmzoPm6ieR/+PAQ5AqlACVAvkXuZ1JrzE//GbtpQksJUjvv5Fk5rV3p\nMELrY2oqJ541pwFHoX5lUREqWA7UZevVZ7aMA3qo+4Q6fT8IgdnB3RSaIJ3w\n1in2UhkpRIM+yFuZRtb2mg7GdDPGlOUFHcaQbl60ke/Er+d7Ic4s27x5hlA8\nKLp5Q5c4qh8sncjkMH0QmkNYYwBdlve03TcfpHhu08oPaYSYr804nx2WTZIG\nQB7k\r\n=pb8+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDynMkLFJVaFt2vLshJZYWWWWulhQVaku077/wX8hOflQIgEge2BWpLMIFYdNfVpeUoU3SBFN0Kr+vCAO20bHZzmhM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599509252-dd0ca2a5.0_1599509337166_0.6729846804111259"},"_hasShrinkwrap":false},"2.7.1-next-1599550548-fa8e9415.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599550548-fa8e9415.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599550548-fa8e9415.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599550548-fa8e9415.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uDEZnosZW7MblNlzGGfsCgzzuKyw32gcvxyRUEv5G/dw96IWEEHtDEoFk/7RcyWN5u15YeyQtqoSLT8pEM5Idw==","shasum":"2270e3049d38d24bfed977e01e43bc4bf0f71556","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599550548-fa8e9415.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVzS4CRA9TVsSAnZWagAA4mEP/3NU4gR60jkpp32+hm+r\nlAlE66huppn2nlCMV0K8odDTOMsZkMX8SpLNdlaa9uWgZUvN0iKMyn15RqZL\nXRHJjfQrjWI33krzDglzffjMay21MCdFS6I60I+/0PegyJc7GG/3ZO/hdGH/\nu5S4vaKM7xgj9aXeBE4zs+Pb+qgwUVprjnmJUVrHRQSpsMcHD0018KNXggdo\nKmMmDNDImtuZrxHl7u0RO2neFtL4OMfgjVj/FasuMEmdb2fn6kbgeCKb4W8J\nmIy1Lz/p1UlYrhgRfa0KlrhUAMrEhPWJKrrg8xQEdV/CRbQBE+o4RPUEZvLu\ndaDQRDYhVGfkIShkz6fN2dvP657HkyoafkJXZdUAvz6DoKSfRdJ0/T/dM+SQ\nazyZ5Ce0cHbIkltQoLr16NNQqw7xFTd8LtQ43qDCKx453fSHPPXuG/y+4jmF\noCWjFa3xbBsUTnYG7SWepiymZrIOGYhxiYLCcSXTxYB+APXmLW3yljeKutYw\niPMqDsMcKhrIfmwDyNv+NhXE6n++uvI41NRGvsOOA5qGfUdUb2lKJ3WlXa9B\ngrzpLwh0iozkt43snSlT8AL2UbjlgWFUS9ijgUyWQrerIYadPH2AECK5wqIR\nATeMguk3OI+soEcGMpEKHaMr0PrPeHDVLk4vjqgKNHs7+/CsfGhAx2lubaGF\nIw/3\r\n=Ax5K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUIqfl0NaywaObxk8mSEfPmHps5K8OehHhhh1QdFa6uAIgc7xhSNwLYij9jtO0wkDW1osmWHj0AyIfbwCiTY4yjXc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599550548-fa8e9415.0_1599550648003_0.08428445544800534"},"_hasShrinkwrap":false},"2.7.1-next-1599553515-252cdea3.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599553515-252cdea3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599553515-252cdea3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599553515-252cdea3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CIIG9n6yRPsyj3pdZKppVc1i67CJ8YWVrTizGc1Wv+Fy4pk+dZ9t8aNaTMV8pePqquaZalKxCX9G9MsXPFzfFA==","shasum":"7ebfa8db4ddda8e3a4e27718a9b79f996133800b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599553515-252cdea3.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV0BACRA9TVsSAnZWagAA/XkP/1pVMZOWpvPcjh+BOBUM\nbJZv4aV7Rur76iY8QWanB3SM/bbL8txdkStS+l2bVCXO1opw9PW6xRb0qQlY\nrFBgpzHjDvVKzeWwjtKKYG5m5vcP6XWMYoinxB7NzQLIuvp6XcEBQyOiCkPA\nBl/Le80nFtZoe+ZGgpNh/Z4B5gFtEsCzHvrmB/HLmQkx2YhpGLrpG+7aEvKh\ncQBXhc/1OmQ/RhDisNHRjEZUqXizcNgWd6iFluCdxAcWvt3alvMo82Dt2L5+\nIjAzbn7ulQsLPMqdZHbHC+waNOA+CT51FYx2yyqN35kMyQUaLQoEKBv4a1U4\nWN5vHZ4wBwGm/O6AD830E5OzQ21usz9QY2GLRK4H8livlFP/08eMfvvFUf8w\nBh30nH5f/qtO/A7TARoSRgzGA5PgQBJQsSZE5tEnojpblMlUGDPY+hL7vb1l\nfrpoErkoMyILVbSJIzHO/JRCezfE42xk9CY41gBeW0fC/5y7PV26Vr4quF3G\nPxVAmg1/+1x0lPMtX31lAc+1N5LK4efeozq7VUMBvNbamD3mjElP3WeGGEMR\naU3dZ/rBnR4x+h9IMAQoJ02OQJotR1ZwbL55esWuaDjaZM3O6SqAObB6vc18\nkU2NDIOjyq9IgiBX0WLU1HMRN80B7mC1B+zZ2E7cla7jcPZN2vYMJRVcjOjy\njg/8\r\n=1EJU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+TFZ+W/nRWgj6cskwvDYAXCWjgnS+nuOjaelzpXp7TAiAD9VmjP4SKf9blZYJvOrktvm6axKmlnNdwUjF8iMCa9g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599553515-252cdea3.0_1599553600493_0.9698796869625514"},"_hasShrinkwrap":false},"2.7.1-next-1599555777-9debbb1d.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599555777-9debbb1d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599555777-9debbb1d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599555777-9debbb1d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NCoBBvGE4T68rZ4BMvAvtXxfNW/GAihai45ELJP+SHUaB66N3MGwoVMdgdt89rZTNMht7sFpNR9224jnGzy4Ng==","shasum":"51ddf32953da84c67b9c079786c2e55268c86483","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599555777-9debbb1d.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV0ksCRA9TVsSAnZWagAAJVUP/iBeXOSec1f4tF7VeA6t\nxPerXkSfuwqXP395T5RZaSZ6pha7dTgTQD5rDDeuk5ie+y4oTLQTvLtdgT9C\nDpe8iAk6/j6nw/ywcoSTzifohxIHtQjq4XfObQHdjzSkVctKq2sGlzRvydAV\nsne77MGMG3P2Fnw/gGD1oLPtpIHHyCE3yGM7WWrnlDXEl5011+3TNaqm54Yk\nfRVodCaBNjkQm85oqcG2TbmaPcX9NHeY9WRRTHlERbleUjVAU65xu10cXIka\nAaiCY1hFxrP3CLRXxYKPKdZxD1Yh/QgkiybG2X/6d/9EaxBNB02GV6I+9uoI\nYxpVLv2MIrrCdy/NZmxnSWdlbTNsZtHHJk7enM4EcwFVUrGArR4aDKctFrt+\nHaiF/z0T29mvSkJKJdJrTxg4am//T9427LGRcBAmwoLaJt3gqCXSmhzgzEs6\nbjnIVekZmyOFArQnE4kubpFdgPJSS6nHC88gUEN3LyetfBh7wPi8bT40fETs\nVNuWRHfVH/P31HIhr/UNW7spdTh+kquVqL6WMzPcsNfS3N8VzSjU1KeRdjwb\neORPfbB9RvINMCSN99wtbSMQ4Aj/j5vSX051RKtzfmKhY64qjJW6hd+zSJrB\nVZ0zT5GzD9JPa429hYyBDMcXxYe+b4xKBdisD47xxeEAFxNnLUtRQTQgEPZj\nvbdS\r\n=CXEZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiUyn5SBOrVeAdWxVsIFlGvpDVGYtxIHKJbptfcl4vZwIhAMUsZkPyhqp406SK244zWTZZmgQGww45vnkHXr/oC9dH"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599555777-9debbb1d.0_1599555884147_0.9380296231169998"},"_hasShrinkwrap":false},"2.7.1-next-1599560077-14c948c4.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599560077-14c948c4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599560077-14c948c4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599560077-14c948c4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Wqun289kHhQVMn311uL5jre0s7plg4QPCKIRJwPJOJGUBNMIO2Dgpy9CKINvOTFBJSIldl6A0C0WNNjVi0fqNw==","shasum":"7a1ca342cc3eab117a03ed7b7c53c56a39341948","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599560077-14c948c4.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV1n6CRA9TVsSAnZWagAAJPoP/0bVSVIjqwmtrHAQpasD\nXcU6XfhQUv9J0S0sb8enOwSiR+SyXKtSovcDk6+OEFMtu4agoOu+z2NCUOLJ\nc6hlPZs7AQWixlKfi8OJDo+ZZLsoYyHqtt7LpX8jKWND5nRu2u/P+b4sta8t\nLjYp96s4otaydW1m9e4OGvQp0OouzJcony9n4Jt6xVLwtbAP0AEB92VD2lOD\nEGZVjvxLOv0ZILhAPRZD2gHz0wnJ+HGQOndoFQLoEhKlasKEleJLYJ1fh0Lf\nBBqmoIjRBqjBV+roXRXVkiAfa/IPvYtBanh0gFkF9ebTJeTrMVylzBEUES69\nX83GOOq41o2LiLiCBa7N7OhTL5j1UgCNwZKAgbNYl7YAybljMLfO5EVtlHmT\npeBS67bXYgK9LJ6fQy/8gqoqYuXWlF9v50pmL3Nkv2yDlNDrojTDKvttIVTJ\nKbd1H5RX9EZSzXfGGZCG0t5um3y2nIBceJd14k8nYjxC/ntm/TrNyC5i5k0k\n3BSf/cpnqGT4yLiTz0wAGutfho9W70gpY+juBCjuOGJozelBshUMiJz5ONW9\n0nK33awSKdwiP1rsHKbAnCVfY+3+7vzJPHAer33ZpoEDgilTTulMUfLH/aMd\nloEH+OwRSnj9QI2efLEP3n34pS5xlZH+f3WYYPUHfaKV9yW9kDwbvDBGkpQ8\nNH0N\r\n=267t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH9Ci8KuFtuglaMqlnB33ZRa7lwBCJijaAxqegJVi0wQAiAZA+0suKQz1TAFK+Syfo+LFly153J22lBpe8P/RiOyWQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599560077-14c948c4.0_1599560185731_0.277407507044213"},"_hasShrinkwrap":false},"2.7.1-next-1599562443-837c44cf.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599562443-837c44cf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599562443-837c44cf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599562443-837c44cf.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jL8IUVuY6m4VwdjXYYl8IV5F5Dtv2Xpw5inphHKJ1EU5quXobvwqXYCBHeO0zRLrOHYyiBRHoRit5bUTnxVsng==","shasum":"f3b9b1d8fe56dc79238eccabf8e46e080632815d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599562443-837c44cf.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV2MsCRA9TVsSAnZWagAAtKEP/RueU2TKbAUlUzX+BEZP\n4d+oLwfxQ3t6g88zWLeQZcSlmJha52J6W+clDeErjMxOf87gJ07krkH2QPN2\ncxtEHbJ2j05xi9hPHj+vRZulE02owNKGziLkVY6gJiyo5nrEJ61xLcZrwVkz\nCS+rThOqEwUR/MmvtaZhga92bImX8FBR+QOnsSZzH31fG1hyK6LR4Y/q0v0Q\nZ+LKBGBZgDA9Yf309TpS2Lg9rdscAi3UKLeSGyUmJB1BAxQgPkd5tea8tDHD\nGJ/I7LUPFxxumrjF6IZ6rheUMwq0pdyeDsVssX953LN97/G2JP7kIegrSFcX\n5f2brT9sfpatdn+PH2sUpXeBFExHYfZdIALBa7KM0eav1hxEeShHU2xUN/Yo\nNYrbVLK0BWSAv/nsJv9UBWvsIBA+iFXMW9TKWAICNm2FiMY+UT0uzetud4kU\n8GwzNUYTTutDPUNOzU6JhNSUvOrM3qf//wRRtxKHS6y2WY2HwKsUgE8dhlD5\nJaYkuuJ5uWz9LePuzNF+nGN07g7NN4Z9ofQSNmuGR34N6DW1nJ7+ONXVI9rG\nfjJ94eABW5WeHNzrQIiT+HtrDeVOfDmdkMbHsa2oWNiOq1upsKzQi1O+NPKk\n96Oq+Sm5NfLBWMIrcA630/j4n/ffADMhn+e6GYsQllRXsRBlqnRfJp8Yv9Md\ntBA9\r\n=C0iF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1O+5ywLEcSKJzEC9wiMteMmkzydC80SPabCPu+3yxEQIgTXhUSUu/dAgpDthJydiK878EscCcwWTxNgBBK9gylGg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599562443-837c44cf.0_1599562539566_0.7689563617770103"},"_hasShrinkwrap":false},"2.7.1-next-1599562946-6ff82613.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599562946-6ff82613.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599562946-6ff82613.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599562946-6ff82613.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iyqzSnYLaxjMSO/ENKdl7FDO60XWqCqRZZNHoMXwBsrBoMdg30lnzWSs3Sjz2JwZ+RpPWPmY0shwL0qIlpeykA==","shasum":"772504178933e68d4f0b98159c72bdffca34f1ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599562946-6ff82613.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV2UrCRA9TVsSAnZWagAAU/4P/idDE2ODkhjlcDt8uBQX\nEHJKfdhNy8T+G3z1IombCzIgk611lkelOCb7n829ZemyhAYGgrydNCdNYsx+\nADtOcpbSUH3JfbWEX3FhpM2pLkLO9A+Uv2szPCWyKyxqnzY4AKX/XnOGKFZw\n4V/UggL7qROzxhEVX+HYvK1wi1HvjBX0vqOr6w21MuzjwCAvPcviduJvvss9\nVg2DienJcfo2IkvbtwRiLzhjWUfy+O1XOCB62VoVI//qvTmwf2lC7CHzAMu2\nynexTZVNoGfAkQWxInsjcgOiVKzgvz+E0LvrimnBkPVeTcn12sJ1BVnjMLgy\nZnUhV0CwCP3Bj5rgZNYXONCNGTLr+AX5l3mT9aZJRBGI6i07txrXAmgxk+wV\neURW7eV+31FsKsnhZBmFpG1s6aLv0b6LOZdjykpzenuXZTaCVEaw2xiytBg3\nNZL1RIJLiPwr6pv11+3RKtv9kq7rEH6thR5p+LNq2ljmW9NT7CnRzzIizEJ1\nXkHHg9EONEKn+nxFnBVGdmimjQYuWFhA3EwDsoNsRtV6u0t5QmaxMAtGcESJ\ny1H+zcZwAbt2oEpKCyu2Ahns0P+BrIuexo6YTmi+OsrRzURz4GzANWh6m6vf\nJrKx4VR+OmA1EbvAf10rxgn2RY+CvrLn+mnri7FWNsJ1mgRfZ+AzB3FhIURk\ney5K\r\n=wtcR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAWwvzld9B6v/301YunCRaYNy2/UhhcQsPcTHP89J8UAAiEAmW7p4qKx2K9SmVlfpTpSLlPDTBCejR4ljv7fJUpGxRM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599562946-6ff82613.0_1599563051265_0.3180920658031119"},"_hasShrinkwrap":false},"2.7.1-next-1599563902-8d964c81.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599563902-8d964c81.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599563902-8d964c81.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599563902-8d964c81.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Avbk6YfQGXNnW7W/H1UnQ6cIW/yAUV1dkjiuWXPsaEEq5tmMWwGrWHbKtdxjIhtwpiPnBCllBuXC+HgMcT2b5Q==","shasum":"cfbd5c5fa5b5cd0f83d1f01e693667a1ae1bde97","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599563902-8d964c81.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV2jvCRA9TVsSAnZWagAASiAP/0A3Dn899jgrp9UyT1NH\nx86v6Rn7ciLB6zSzIZl6Rr0R6La23epwFN08LDN/wUfilbH2YQ5VlStTM8C1\nlr4WRXPQU4GT5n0OYxcZNK+HXjL1AH9o57EWfkShiYQG+N3olVym9UmixITQ\nViDR+DGI27Z5m5hiWjBM83YbCZfwy9/3HIwaH0IxO2r53B1/cniRaB9fVAQX\nzkgbEFe32Q90/wHQCZbwwwqBgzWkGTDAt2+H/1JPCvDovIrOx+SMx6p4mTzn\nB0Mj13IftJ/MrX/hm6qdtqJL0RXWsturFgQZEvHkRYMwea6eCKII4t5JIviP\n1MbK2k62ZCLvoJsfUsGUeIIjQJn9o96NNNHg5TpacgfIzXeu0XRHjqpei4Cy\nCCNUX1JvdWFOfB+Z3pXI+MXFRX6NJqdIEHMSbS2gZpvINbRMjwojFRdGbn0T\nhnTJjxChDx7tU013RZXkklUMhTglEaKGhc66TW3G3esG/zk/Ze2sUN2yQVKb\nUz7kCcL4+Z4BTAnbFSJ3hUKKCqitk6HTVNoebk8cr8zr+u/U0Obwkkvmm7Uh\nvdugq3peeYs/UYb9E0rbhNO88DwjrMjNkSh+HNyDvSvAoy5QcEHmZxywrRRT\nF9yOuAO/vf9x5hN57HZSRtmtIMwAPDX80sWqzlnbKxYZFQ3hbfARGxqTuyY1\nusIq\r\n=kJTi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8r9igbNRmm6oIDxwBHIiIOwr/1lvee2Ku4rVkPrwHfgIgL0aGxnp2vImgK1VbSLZIDYKeDcbRnFDCk2trE8+UCyE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599563902-8d964c81.0_1599564015294_0.8960923724835519"},"_hasShrinkwrap":false},"2.7.1-next-1599563991-2a11886f.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599563991-2a11886f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599563991-2a11886f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599563991-2a11886f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3e9Ikf3qfpc0iqIS2fFwQoI6NkLDACgFqddgBsotEEhPO5NjO40IbNdSLEMiZeT/Iv8kzGZlq5L7/Z1aNWyAVw==","shasum":"fb954674548c8a704d315ee70b2a595f937ef962","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599563991-2a11886f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV2k6CRA9TVsSAnZWagAADxcQAJgHcmDcf1glECExmEr9\nkSHbHJ/w7DsU+cdsJ2VOl0ItW1w/0nU5ezMBZ1RfqvjysqOO0OyXgnf3n3FS\nTF499ScUxs08RxzQ9aMNFKBrElaR1P+OBU3d+lItIoK/i3b3MqYf/eiU8FFw\n9Mp/vk+zJp5RzM2JwsZHGFXk7ZtpZhPYXGCZuPLMHHte/qh6hOmDX8gq7/H4\nZd6njSqQBUbnM92ou6IR70y1PR29vSZE7FMp974HeiPHm/KzBKMlOfSfahDm\nW0rg7JT52wxcMRrzDxKxu2ElTSiFHUQTMLu9M35RUHbxjMJKQK+apoIu6laZ\n7NUDcw+z5qeXGuzk0WQOec4q+nFtRCHhwplvB/v9iPN+PQj0plSh5kZjTZEP\n8P7hvMAUDxdPX6AqinaAvCY1yZyynubT9ywnIuttqgoAUCGkl7n5P7ybMYui\nDk2PHxrzKyjG6GyfD08bFZiQ67OfMhRsnpaHtp9DgWaXqcJaqmjQX4NdIqGI\npQqiUk3rCziidpRE7R4yUUzNTP45tdyfiM5yJEXlTR4rTps6O53JdGD2yXHY\noONv7M0e0Ozyjo7k9aDqnmnZk0u8JEKUqe4MrpjLdM9AKgmai6GK5aWgEhTF\n6frjwpPL5BckzjqgaWaik5fOafmduSL+GGXq+EU47uVM/C5JDIejE71BehDk\n5oxN\r\n=s1xx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9LL9O2km3sWoUfNUQjVeqv+6ygr/O8/5HJggYnkDqIAiEAnpikfSf0Weic5Swarwn/K9H3ohJfIlv7lTFRlpSZvvw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599563991-2a11886f.0_1599564090157_0.9054625772840164"},"_hasShrinkwrap":false},"2.7.1-next-1599564840-8d964c81.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599564840-8d964c81.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599564840-8d964c81.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599564840-8d964c81.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YEgvbydeufLgTBeoYcgfZSGyTnh0loo1/JD0KZPs8spvik0ajQbGTBBKhvSFiyUUHZ29l2078x6X70+Rgw+zkw==","shasum":"91332043a908b75c48d11bae338130ce375440a4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599564840-8d964c81.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV2ySCRA9TVsSAnZWagAAW3MP/0ITCxCEp5VBs6FiSsG7\nStm5agSt9U9noIbg3mOVzvpfntWBQbJ9e7ItVLNFNG6VY67819XjKW5BFwoU\nCdpuQJJrH37cUjcLmg9qi/WOcAu2qHVKt+xXw9b7w+9xMdCJpB0dBaad0OQr\np1AumoLPc/vVm0+jjhtMlWg7Mtf9dJJ8uaMfuqG4zjEsHJDdosg55xE+dEAh\nMl1MUIAhiwcoAQabGfXGRtoxppkFAarmxQ7hVJjYNUsEGEoBuqD7Qg1w2r+I\nKEO8VzjVy/eesDHwNyE2VeNmIw6NIMerSL9YjmIVteTiFtI2gp+NSwl3Hu82\nd0O5ZqNWWiFFbPN6CXkik9yiBw5PvhStnY5mibXocmdloTjjjGRTEKr+QN6w\n66wEGaGbm9sepmpMXRMoQHKpP3GyNNZH1RBsm3A836aXwiyacjynw4y7+Zqp\nfgb3mPE9SPn35uuguy7UlNDR7E8EjmniKpghaGSq/lmHQafKbwfA+FD960IE\nuzsJw9LCGAWf2kTRGwPjEGJbee0wNPPqhgKtQAMn2A8oB1XxkejA2jZBu9lz\nuZA2AJM9sT6Vp1EVXAPY4L7ohRowQHHLQZWCaogGyyvTHrseGjI2G3Vo4RWV\nVEDHGG2JQswJ2B144pMp0QhVADupfdEKRjAvQoc1GvEq6UmDOR9K/Thop7+q\nJwDv\r\n=QOjS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKQtuR+gFvW7hUDmCmK0ccZGpC4H3BlqBiiG7gdWhemQIhAIOu/Vt51nzHSlia6Yb8DtzfYYyL4bo7BBh8qtEFwRcw"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599564840-8d964c81.0_1599564946549_0.583231868628082"},"_hasShrinkwrap":false},"2.7.1-next-1599564998-0a8dadb7.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599564998-0a8dadb7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599564998-0a8dadb7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599564998-0a8dadb7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kTjx65Q0I5y+CChtCRKKRXnyJ3Rybg8OMeoS/xPRLw4YjNB4sD1o0hcbXXMPDrwpmRgy9C2M4W1d9AA36GEuEg==","shasum":"93e8ee0a9bd4a0af735901ebedba623ea446bf3d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599564998-0a8dadb7.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV20eCRA9TVsSAnZWagAADN0QAJZtxDwd7Q4q4Jn1oxU6\noFrA7dFqi/Yie7qJPNWtGl87akFMGO013zgDSOKeFHO7ijn+bg0SlQpG7yRN\nbyZdgZSPlsB5UXgVh0EE8mijRLVb5zj4SnqO5wJygWxThvMl3T7xE8N3PREC\nyrDwEXr1QvgWGHK/CFTwvvR/6I6ED3q2nhO+zXc7lvB62NXVHUHAejEgai2Y\n5vUIobV0RPdoz/kxMz4IBw4xWN1KznUkAe6eKMbVWMjF5qknglfgRgvdcnyp\nYEBRLEPxpeHXcL2td9HxrmQKJpC8jnMJ8jucxkjVHLOgAVsakIdrIqRF0lhC\n2TlFvj1oNhcLb5El7VCgpp4A1eFmOMBTzTkmJQgeclJvUeyPEipeFXisVKeA\nB96Y5MIb/PWFxqWbhxqrsfqgMda7eaPvEjZbmi4UzmEN9U4LvITd5ILAVXny\nXjtGSoREDKdqIL3ydT13u95L90NOTgub/AYkL0cnSIPk8IvTR5bIYy6GBpB4\npZTIlh/Z/J43hguZspwFsSPHqDNvHMGYyJVsH3ZLVzou9wZBqAB09YePM0I8\nZjCZMLl7BQy6VNsAeTicOGLNGTIrHfnWe3a+VlR1aNL+Mji/L+lY5JZR3/NP\n1wrnyvl6hA0Fn7GHwbPdt0VgN5h7Pjx1v52NIRanHYRe01OUw7+AgN6FFnZZ\nRAvc\r\n=qgL7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIER28ievCBQpD3naVrXx/5LqXnOReQ/HLmgnXL4uCMlPAiAcjEBQQibyGCUJhG1TXmHwBjfW/57tsU9HFWZfHbOTaw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599564998-0a8dadb7.0_1599565085945_0.8583020345046362"},"_hasShrinkwrap":false},"2.7.1-next-1599567460-8d964c81.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599567460-8d964c81.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599567460-8d964c81.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599567460-8d964c81.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-y+bj5hFJnTfQmmE0nfI942mNW0sIa9sn9b3Kge8Tt4CXsyA2KvZyD5Ku/e73PZsgZGfxHQP4bYSDmQ48YlvFcQ==","shasum":"59f7aab1447827980e0d5e4f4d7e8a0cd51376ab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599567460-8d964c81.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV3bGCRA9TVsSAnZWagAA6okP/0Qnmz3DFdAWoezt73Ik\n9Y4RWI5T5eYvkPbKy3lCWxDBEvOYAMeFob6UI9QDVFl0E+0trwJ0ETo9XwIN\nipX3cvPsCC+JLUE6NI4vZY3WZwIQ2jNSCf6AIGGinhNHUMSVE7WSyUJ3oKPH\n0gotHlYeBzYxJWr0W/ivyoXuCUJfAY3UnkiZNUal2+SP8ffqtMswabQkunD7\nk2xYjDDw2YXpYAGuWXl2oiu6MzNXVyUfy8mwFIUUZqenrp1zLNA8g/nJLVqg\nbVkdTIwRYg043bte3fjBHgqLDJJD+jVy8O8XQcQYDu9zAey05cWwv/w58bMK\nggeZRE7ZAxODevjI04b4IZCVE5VtGcCNeTjhLMr7ofeyQOmUMFmKTZAtssqP\nj2tvE50Owas82lPr/iuKjSD36JZhpIwiwWCc5dFGPx6x6YWi0AMoCWUWPVa4\nhmFzXIxtJc8ZTrGH99xCKsCyFDkdU/1Tybo/girwExTGmSc9B39k8sNCJP9q\nj6RJaQtHZVIHrrHT3qSRnc4c5e8CUWFejU6/wdJS3tQk6QSsUfOokIH3yV1h\nPlUhPVvZeA8JmyVlyigVeZ5nceOJH18vY3sRW6Jus74LNCamnhMU7KXtaxyJ\n31i7GPJ4SqeBjmDMc51RErhwb3G/y3+aR4uhEzmrMa+x9o1/l5fpXlxD//E2\n60YM\r\n=KtzP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDjktziJ5pBplHmiP7UKVwZvHQ5x24KUGXEhKxxMWCTPAiEA1+RZgCtlG50lRJqtVfFyPP5/1dgHUFyzaH2cYhgRing="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599567460-8d964c81.0_1599567558004_0.945908570867882"},"_hasShrinkwrap":false},"2.7.1-next-1599567484-1eb03d35.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599567484-1eb03d35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599567484-1eb03d35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599567484-1eb03d35.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Jq5meC8QHiGg6+GaTLIn1ru5lVJ+SNVROQsEGvMXBitDP63OPO7GaiyLdFLYdMoCHi/ysjFX0TUK46MhmThwSA==","shasum":"a5b104bd30cb066289296793945cbe6320d051b1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599567484-1eb03d35.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV3bXCRA9TVsSAnZWagAA6uQP+wYGaaHmfSZkCHT/YKNm\nil2dlIjGubScMLewp1QLAXN16yMICnRCFYjCYGa9fqf1670QJmVbbbKqvVd3\negNIesBmFvSZbqS7uWR1gCHXQ0O3tL4u5zks+f9qHGR2KDRDCp43rgU4mzT1\n2CPXsGjCMd8AVjT7m/Fu/zieUt/SbZd9m3v7s1dKSh3v5c8+boEu/Fqwe+Xt\nrMz3X8KYZUl7jxpw2zq0CgPUxkkYo7qCaYE77Ohebl77a72Esxz8kxoRIsMb\nFXrmnQq/Xbu4ZSIs1sbrP7OjkoSx9cs70xZZ9R1r7fQME/2aAE30WaZXjxqC\nAoBNlIRTMYGtweb7hD1HkSwceo20ux5wW2Egra1pHZZsRltsCs45wFTSrgzZ\nfN2iVV1Wibrh/XoEGhJCeM5+gh6pfeS4SE3mAomfufMWo3ZcjitE2TFx8F4i\nmu5jeMO06rlSD6fUbOnLzGY+EJXCz861IZpBV8+l50LQ8GWJ5AuY9UPgdoMb\ndKUusn6NPwQAQHBIHLQpdXaKQk50PU46D25oNQ5mQKcBFx6M/0uKGpXRIwkP\nLg0n2Uk7yZVpXF5uF2mc8Dl529NoqB/ORm0VyyHkB2K/aq020BNiMlSRjVae\nmqWmIA6DVpZnqY30uP4joIyyNMHdSsdQZ8RXcCsE3erJA1jE0/Ljm8bAEc2o\n8UEN\r\n=g0x3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB2gpjAFDNvBbLZmFZ6v9RMheo/nZhkIR/CwtXnIqJNmAiEAlt4eZ74Q2tPEBwXQoA/BJd7hzyZg8XalRPXFjmPOKbQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599567484-1eb03d35.0_1599567574848_0.2841208116606848"},"_hasShrinkwrap":false},"2.7.1-next-1599569283-8d964c81.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599569283-8d964c81.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599569283-8d964c81.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599569283-8d964c81.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tT8Iq2mUGCVeUJKQzsuIDEWyA4mxMwWEpLDa8qBWm+oatJ7He77HURBsN3tFzJ6Y7G9MXHbCiRS/czVPNGPDPw==","shasum":"27da82b14db3288d620625195336e0dfb333496d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599569283-8d964c81.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV33rCRA9TVsSAnZWagAAwzwQAIVX3NVTa2ChAuzpOoLa\nEIAtdfLrzsKeaqaL8VUzL6kK+svWE4vnjvTtgfD+lWm2tsd0G0u/Dqd2m8g4\ntClfug0IKFotFHAV2y9N+BnwN5O1PGkJBPuRcjjf7aX6iRyD6TGdNs6wPZpN\nDIp5vZqEGvYWa+9vV3czcTa+LEehhIdT40WPp7T6hUkv1Oe6foYQdZHUTnKC\nwhkYOlZU1z3gu1eIefXDdHjAOqSO1aqC5z5DEk70Q0dSIFTKe8cyuTVdD1CO\nYXYDQ3JiQ46e70WKM/jV67j7hPliQT3qvMS6PyNRRlR5zdZv0/M5Go0Gkc/g\nRTuZPkko4IZ8dZ2J6+G2bQwX7BnLz9JeVvA9xGVKQABUZ7oKLOYlTGnBmUDY\nQBSWho2k6fmYddWkMRX9kKvhD7tIIt4d62FM9rVZrhYtNOL8AkyBj2qlhylJ\nPLIXZB6AyLIdiPTEHQnR6PDArSDN8vgCjwNvIvN5F+Uoons1CVu6QTVJQun9\nx7fzhWw1eVwO8NrcIN5Pmyhq0yxppsbjOl/c/YKdgdCWV/WwFSX8irohdAN9\nzxCIDuj3gTjHqwDfl/FOEMvXp484o47O/OSieWbd3B7zhWqH1anYeim2i1iC\nxrIBR/iHpIaOpPo1SmOB+z5P984NYq2lTsESvmh/dD43F/NeJOmJFcaI0MdB\nnroM\r\n=QCcU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCc5TsmEYa7dEsJ5KGhZSTkYygpSCBf1BDif/nRe8FSXwIhALZ3p7sKp6OR7OFDd/6JA8KEaEwAu6a3RIjjS6lKGz0q"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599569283-8d964c81.0_1599569387263_0.7795942981102799"},"_hasShrinkwrap":false},"2.7.1-next-1599570496-c0bb9a8e.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599570496-c0bb9a8e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599570496-c0bb9a8e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599570496-c0bb9a8e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zK8s0/Z2YQEo+galhHNZTb6acE3STSMeMagiRBxAkrXLCKhq/39+8PNu/bns3iS/NmpVtZgNy3CDHnnQut1j1A==","shasum":"b8f06726b6d6ec782cf9742118fe30bf40da764b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599570496-c0bb9a8e.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV4KcCRA9TVsSAnZWagAAqIcP/jDIjbDBjcXT/+DEfFNS\nmeNBfnAhz5Hl7ehywCMSI78r5GnTFMKXiRQtS8h4Yg/hKDPpG4DbjADjPB8g\nJw1BUt1bSstlaCg+Er+H1cWkvcP8gSb08pKppwBWI9wIpqzQ4fDH5n/Nli1F\nli5gCubuRNxTPW2pWDj28DLWJPFkpTzYFk5DVFOpsXEx2IOZ8Se8ypyEPj4D\n77vLC/csqIVu6T70ZDcEO8WnrY0su5hEWZFtp9jsxtpWt9C4rUtGoH+mODbQ\ntMRlphxTEksYI8tRWDRLf7P6dekHgEePjC7tc5V13AJEfgAwkNj+jkxpV6cL\nYI1vbYii6eCKAMzZFPEHjauskRyWRZwIAS4SmIHXoZexu/flhsKL6JutG/6F\nbqB5Unr3xQTqQbLqJX+oISg+EwBuHcbSl5lkWcQb9ejYWsRxujRPEnXPJf2i\nOBXvCz6SOwJa1Sjbv2UPCz424ZeWOO0bYRdbSP1DZFXnNObo4oknqhEDC9vB\ntKMYc1duT6OlXquwjT/O+gpH6wtm+WngKcI0NM7L11rtK3rrqCVi6U0hJkr4\ncEC7oGuSxf9VE9lS+OzXu+q2dWSXWk7M5ooyvWVmqr7Y9Gmu4KlIn1YMSy0u\nj6l2zCT1lWd1Uf82i80IdRokwoqz70agJxlM57BbHjB9UGFDaHqv9RgywyG/\n3ggG\r\n=uS5E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWpso7h14BYrIUTSTjWoLZzhX42ek8PdA14J3ZzxZ+1QIhALfcQM8BQUXPjLVqhdzlSg2eZ4QqkncIzFrS2Ko/2Ml9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599570496-c0bb9a8e.0_1599570587562_0.06612861694318162"},"_hasShrinkwrap":false},"2.7.1-next-1599570875-42544f1f.0":{"name":"@xdn/prefetch","version":"2.7.1-next-1599570875-42544f1f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.7.1-next-1599570875-42544f1f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.7.1-next-1599570875-42544f1f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-//6a8+3QlYaQ/h9qKsXQC71m4bonZzNyRbp7BlmNlc7kfqe8hE61AE6xj/d2VjKOmvTaU+vtAgD5pNmaJfyM9A==","shasum":"832b2c2e697d7807e5628d30c1cc23e7a8b98a34","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.7.1-next-1599570875-42544f1f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV4QfCRA9TVsSAnZWagAASPMP/RGf/a7+f0X+aN0bQnVE\nytMXGUmf0kX0x2ThOj8s93njg0gyaqveFPX1e5RknAqM+A9BqCwXEok62bJ7\nXYyUA+bPiWbSV9w87i0NwfrdUFTgxV4CPyR2QFJZcCCKhTsNq59ol/Oin8BI\nX2lIF5s4AT2ef+UNSKa5+JB+g+7aLgino/gi50TKaqRsI7KROi0ZzTgvUcew\n55XKPZC4hwvU36+icobchU8eNJUmRoJ04Spew4C3mwJzF+NC6NAqiGpA7XMi\nx460zeTGRx0Hdm027JY9GlFZbMXwoLfGICXQA2r9t0DbGOj5EsqJfrxoL0p0\ng+zB7tpHh8m9eMDGBfEI//M1MkSwtKcIwDIhJ6wImqURfEC+6xol+xjFNocD\nfF38rBOMqWJBbx0dk0x3fk1rXgXztrZMfgkO9lBHGWzEq14qNQanTjdWSpeH\nT2O3CTQXfHFUutLwgNLt8zx8zx302OHiTluiXBqG4UM77z/i9xAqUGJjny7w\nX5a3UiaNM36OjeraGPLs/yfqAokJX+D4DRNgHyy692k76Wmo6QARNMRorzIm\nkqxlJdbzr/CjiQW1xcVPciCFRqux27LegHD22Eb5Ss4YMICwxIAJlSSVKkKk\nqVTJr/wjeszrdPkDKrjMt4NtpuKneNcvp+e6cT8E00G6Rtp1Q0Pxu6fEcnOc\nG3Wr\r\n=1TsM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPLcGAYZTh6lbtEpZdptxCAaAbm9JeTBKssNOpF1puPQIhAKQNQYRCg6ythX3Ewi+bHHSVPP+A8q1f51vyBjmXtTDj"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.7.1-next-1599570875-42544f1f.0_1599570974582_0.21743361283333873"},"_hasShrinkwrap":false},"2.8.1-next-1599571314-828e2006.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599571314-828e2006.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599571314-828e2006.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599571314-828e2006.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-keuQ9uHhuv7odfo5TYkne+G7sPI9Q3fB+o9D925JbiJTX6dve+HBJejfxVk4lrA6SwhCYmino6AakOmiTSFzeA==","shasum":"c465f4d259665ef8a316a33b5627140edce0cd0b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599571314-828e2006.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV4XYCRA9TVsSAnZWagAAX/8P/RMoz1h0/GDCOyC8OQ5M\nFWcKPNdRO7QR6Ml8bGyN7xDtmxBxtwfafYz2O1g5v7rMuoXgoN76HCiEycZ7\n2iLTPIp6OyNSz1nbgf2653xf5AqTJRq+nPK8ewPT0owM5t9BeabBdbBIH3Gm\nukC46pOehtFRT2gp/E0h/FvarfzgwjgUu1FN6c8zDZwajL/ucWkK2hKTvsm3\ncgcQN7ZCXt05oESh26j69KStet09rsBzguz5OGVlReCyF9uhMb3kzX278rQe\nLVo6bMPBk0XIshZ8xoD857mEr3VckZrD8nEkhwWOitgAyH16tYyDlU8Ybt3R\nDrIV09ZOzaOA2aD/aVg2zY0KgwG0PqXynYDPZ55Xw4loWlo/xzGIXbGUoac4\nKdqgG9+GvZsFoPFDB6ArELPbkpnUXjaiCx99k0XJ5iUUh1jEN3fZtnqAgRCG\njroYAHxiT802VQfhyVtMTI191EYe6NYtABUP+lfzI5VlkrLiLT6LNrFsiD7I\nue4ZumzRbwh5NzSdZBzje1gwuJ96JZ0rsmtNf0GsI9tnXjWYxEWQrK7crdir\nUQ3mBKncMkPzmvNRnrCdBiC9JeB0uQew4AwQIZEpe5Mv2u5o6Mm5JhCzSZ1P\nqiMgvtz14849kg77EFgPjqenzMSZ0LfyzLOb1xK0eF2tlzpGT5TK909bZWqC\nBexc\r\n=Bdoh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+P2RID55UrJw3Vi1YZdTg9rTlQ7ZB9X/2KUshf2E6CAiAqvGJUgJuCIb66ECvLIaH7y+l8cQeT3ESyxTnAV9ZIjA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599571314-828e2006.0_1599571416406_0.22497196442867984"},"_hasShrinkwrap":false},"2.8.1-next-1599572150-828e2006.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599572150-828e2006.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599572150-828e2006.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599572150-828e2006.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cOPRSoI+yTzcj4RYUic6RGeigB5PjoyXdJkr/Z7U4l/C6LmDb4e5zGXhChjcU1wolOwr3eX9u9of0sO5e1k/4w==","shasum":"6399ba10037e7d9844a424a37e528e444378584f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599572150-828e2006.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV4kpCRA9TVsSAnZWagAAV9AQAIHPxPladj5oxKNURoqv\nR7VwgVf7L86HD8YP3Ao1s5C47i+5IcP9atz5JYmnl85aPdGWVGkoChYDxGSx\n1eD46c3SqOxTxSJySuszDeyvbRLA53LqSl0AVbQsysqB3Cj1AI1Q8Sd4gHsf\nprmJEHA22FY0TWAhghmE8UZ/H4YnISmgI8tekUAiSlindyxN+71k2Yf+y/Be\nTqN5FbqgzjfI4I1yyQStCNOVYgxtSErLYwRey3rc7sRfNEeOi7yxLI1XIL3s\nIjYawZO/ySc60BUAC2VHByjzE9UmkgXl2d25+45dKfZL/SaiPwghKA+OBBw8\noWXJEWnavOsNZ42EYFs5W1cNdUVYu5Do9nxfmW2pBakPAwa6rEiBOvzcPOMh\nhEhdMrDvt9ci48bwes80hX/RnijP/+zqSQL+xQ2zIsViFbEpuVumbPf7lD2T\n9yAHizLeVpxilepS7hhJUSF7lza52sD46Kj5hnX+/EbC9PFM15sbV3Iq/9f2\nuZcxfsuKjsEZazPoTvNs6IG/ZXTnUzkRqvU0WT8j22XOyoJRE6GN+gSH/QaO\nQrgKDGh2XRIUZE/FJEP0+8fphLy0VIPWRVcZOEfI7NDIrA+1pIhSUCPqt9r2\n5txJ0RTs7IGaO8WxkY/2/xm5ZhgmgcGYIZ7wwlXwly97FelDSS5SVlxM1juI\n0ofi\r\n=2spI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGN0Za6aoZgjz01Rt9dsEuL8QOzlbPRasioEJX+4Sd2XAiALYU8hVxhrTO96+9synfUpQVx2x4ljijYs1zcdrLeMXg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599572150-828e2006.0_1599572265287_0.7832397367743495"},"_hasShrinkwrap":false},"2.8.1-next-1599572715-6f9587e2.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599572715-6f9587e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599572715-6f9587e2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599572715-6f9587e2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XhzezsmZRfyjYiKBALh+Z96Eh9rRgx6vskgi4BDhfCqnGjdSZ9BnWWdJaOg3WfvSwnzlyXtD+89UPSykQuOR4g==","shasum":"7e19d34cf5115a4a9c36547d12fc2ebaf45106fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599572715-6f9587e2.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV4tVCRA9TVsSAnZWagAAvmkQAIsw1CC8RJfgik2XJ24d\nE5GJYv+7tSqeYZmJZKZzFGpuy+foSbYsU0NLXSF1GqeOqfpFIFR2OGU1fTdy\nacMbmnZ6Pr4QDK3FyXmbv0u6gbczTU8Qz7mHGRypBQ9gK3N2d/80eVeln/d3\nazkNUwX4Ec9VkRqIEdPU1GKMEbgDDhJE0kIseMMJMW+R/D8MwKFhZIoNRsa/\nrcuwVxwLacBOmiC564ED0+dD88FLhxJSepET1zmu7HufdxMzwF6LeuAkuqVH\nh7G+oT1wBMIgWxDA1VRj3e1HhAbm1y+00/KGQSmJbsCsx4Vy/COnswHxIPjy\n3wtP6vLkCJp8GLl4/Tyi5z8+uXDY+Aqe/bu1XqGVVoQDmFgAYBDT4XN/B41h\n9q7Nhi9Ph1sWGxKB8RQkTMBWk7lHAXKS0Km6iq+twgoM17eMEpaM8k/Q3UUd\nVy1eQgFZt0cMzmryWEvVsgHPuOWGtJmxcmqyTq4NsSSTaXqzCT0cuO3YnHsp\nEcAFtPHa1fnxUJaxlmWvVuQtlMyQMpiLgIeT6YJEuj6Sq6+nW695UNrfaTj0\nw0Hp/lznI9OjV9wD4xx2EoHhiS5sIOIdjIXBeRd8m6RZs0rZOo+FSSsc0IfF\nlyLDdvSQGnB3wX48ZqbmLN5/LBTwk5gkcG3vd0w4XM8Y8b+ac+xENF1rVAI3\nwoVA\r\n=qd4h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA3Xv62lp8QUz7440BTEKNJ2SX75C2Msh4wakNoPKj2zAiEA8qGNtya0ijUP6PPRg7lQTKntTqymZdNXyHBdGADv84s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599572715-6f9587e2.0_1599572820940_0.2720683806692361"},"_hasShrinkwrap":false},"2.8.0":{"name":"@xdn/prefetch","version":"2.8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+ZTX7ZcEUIwXau2e73L/EFXr2P/QMk98bHykRVp6MX7KF++U5OlOFJaw3zlkfdm/WHb2wd3+Euwrh6ZQzihdQQ==","shasum":"2950fe78e55f6686ef6e89465a2384b5c62df261","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.0.tgz","fileCount":56,"unpackedSize":104358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV41FCRA9TVsSAnZWagAASmYP/10DcwJSbyFGnS/49P7q\nfRkSMdfjthJU1Qcn3Vqx+qW30UdvrFUIwt+h6qxcIHIftBtfzlK0eakq4hPe\nt74O+NWFs42/52SAFv2mRU4Yg2/Xyfw+a/ZzHWPn6+IHRMLZ4qpK8AHeYQFD\n4X/4p+ilrpx6X7UccDPbjc/LBClfxvjMD2laM0xTHi/EKQWX1PAccIorDewu\ngEapuRF2FvCdRG9i5ySOv/54sQQZBY2rRiD73haN/PX3BRpcuUro/CmYMTeD\nVfG/nFMyRMfN/MJBFh5W8fg0LhYnsWec6Skt9CYneeMdg6dKRDXx6FCaQzye\n3uFRV+Q+361q+qXw+u/3WYXyJKHi6kshUIMbs1sQK/Q6l8Uh7ypJBW31HBYy\n1d5B4Umh4ww8BKuCycScmaaTVQZuS/zytK/7CFQqUegK5PDXTIVVIG8QONFd\nxCkuoomNuH6M32H5pEJbnM0XRdzwIv8oo3e7aOjYIyiPOD9yNsj8EAUhuHY9\nqlikFUZlvvg3IiHRhHkjYZhnm4f5ZpuFH16iZSywV4aGZaVq+ujoeaiagOQH\ndW6p7narF7h0KvY9B+ZM7NyZ6ri3loJFLMoFvbt5e+EsBZParO8gKGtysNJ+\nYtFtVVYqRZIAdfag8qI9SdZg/AAeGmSn5/CoWHjcgphLY2A+8LE4OQ67HnjI\nGHv3\r\n=U4jd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaZv/yxg3ZY9Cw6WaY4BBcVxdk8bEAZZfbQ4t2kmv3ewIgGzQvkDFcAdizJrru9nojejsNchVbpKYkklCtyC6UHmI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.0_1599573317211_0.5298258041760175"},"_hasShrinkwrap":false},"2.8.1-next-1599573991-0aa0566f.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599573991-0aa0566f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599573991-0aa0566f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599573991-0aa0566f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-l4zcdrObDxj5F6dyz/C1MOyePKoNGpUnQQRSzk/k6tf4Qs4a34C4IjLa6zqHcR+nIyE32sJ61Eve9+IfN/zODg==","shasum":"8a604b31dd8d12c3c6c08147e5aa9cc67aeac6e8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599573991-0aa0566f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV5BbCRA9TVsSAnZWagAAVb0P/i0Ek/qIqv0OrvgQWPKt\nQSYTP/b1WlNTK98SmgVzsNh5kNAzhZj+a0rUqB6b6+UYoEuDz86o6pPdZS9K\nMwVSAvcBrhHYiV842CeiZZ21wpJ+sETAzEiCPBgst0PPl7jxlJwcapDiI6fJ\nrk37qfcgWX2+W16yOEd6dVSfcI+bLOuu+vpE8o569F+LhFA43/5CnLv+J1h9\nJyaA1iz51YkTJoJn5e2UPa1BzlrSrV5+kjKK1xf3XrnR4Wa43x7torAUSrJd\nh0lexIWs41G1K5m/H6R7I37VsUEdh5v2VYZUZ8O220AKGwBKzE+4gN5Pae7W\nU3bVwLik7+UbFVVukuvg+NKSrmY5PowJ/GzZZ8ksN+5xqc6bpxr3q5KAlrom\nc/s7uiKnTO23RPjZB/KNWvhi7lGHomur50X0BKnhYmX/kVfnVXXK7Yy2HLg0\n7K9fXLsFRmxoGlLKdpwZMIybgzCg/Mf22ur1rmzm9QB+VkiHHxMaGJHPKIUU\nNRPukJHEk+E24NF6YYH6kd4rsawROo7hJCSTQcBEhWjnYP1sIyu7/21nU36J\ne9xKS1R3NP+LC9KeryyWLMMjrrmjlpgs2uHBxxGnquaHpjCGDgryUQabiP+P\nnRtzoEAeBZv6Inw1hMgW80R6eZOkqG0rZ2jgUzpH/Xa9Y54/D9hAr4NWTBKD\nof6u\r\n=EmPo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEbLun2MDHGXeTSt5HDGSluySPk9ciuAN5ToA1F9NOMjAiArxC0JdjjVhYYQwlAv0hzD/CA+yF1zwfvJQ95/DdQ9xw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599573991-0aa0566f.0_1599574107051_0.6646831796395025"},"_hasShrinkwrap":false},"2.8.1-next-1599574925-1f9b3cfd.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599574925-1f9b3cfd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599574925-1f9b3cfd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599574925-1f9b3cfd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Ypp4rEJLGyp+tW7049N9BMUMYr/ay+bpPS7G4oTHInJJ+L7R26QlXtk7b+KDG/FxcyHbggZaICB6YTVys3xVMg==","shasum":"365ebe076eb1bb15a1378e5b29d556d89f3f53c3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599574925-1f9b3cfd.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV5P0CRA9TVsSAnZWagAAt1IP/AgqKqHxERAJkfle25dF\nprgHPbAPPOBc5UOh1yM+lyvNXQH0PDxuZaj24ViTUMOORKnAtIgVBU/cBthr\nikfzWOtNEtKW1wgD0cJOVJQkrURrcydWTg+dsRcKxEy/cd70WB+pObcNeJ7n\nZRgJWl/W++oMH+xi2+/SC9WfaiDBemUAo/AawxtDWXTWeOl6ePLoM1tf5MIR\nznzWRDp4MWu/4AkBn2yep9g/JYWGS2PC6vcMXy8eduADY3TpmtbPZJwJFnXr\nm8QikuV+f6GhZOg4aKVfO8LGH/Ps1P1ESAnbWVTir622C534tUSeKsXFUICE\n/XxoyH4SWrI9gKua1L6Bpk+DQJBWtxR5UA7utr4+cfVyyF0ZocUUJeONZyRK\nGVzSL4xm1K9RcIin9FDn93BoaTrvJUFDTDOUxpDx3ZaOKxEx2MFcYJdeda1j\nrHLLx6ZIR6T2bp9nCv5ZiwkpTZCsfRIkvxAr7MYg6W0MuD1Op2yHPiz5xEVv\n8OmYOM6Okx9cc5WswVg1QtJvAofU2apiokP7PO3VN63AyCB9g2o9PtH1wY0Q\nJEL21WiOdltGP/+6QkVZbI6PLIcFtq7YsJ3eIV0MkNtqTxgRTVy/tyuuo74N\nnRPbWpE6SYL153ZVzx13a4DcQIOPjzVVj+bNwjNAG97zIV4VROnnZoMEF3Dm\na770\r\n=1l3N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICEQNuVklPNrCT4wmM4AEcIEXCreunMwok8aDz+kSq1vAiACKLBEgx85QZm7+lYOQOTjEcKVhGb7qcGYVyUn55g/UA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599574925-1f9b3cfd.0_1599575028074_0.06895554420936723"},"_hasShrinkwrap":false},"2.8.1-next-1599579377-76f91452.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599579377-76f91452.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599579377-76f91452.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599579377-76f91452.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JyCsSgR/Z/8SFOKAw0lv8plX7jzBk+7/BcJq9gyIvZ24b/5YyLcQheskIPBqALi9Pfo5nSkBQZ+HbFutjB0Tbw==","shasum":"37bde4b91c88600581022e3890411480cf10cbde","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599579377-76f91452.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV6ViCRA9TVsSAnZWagAAyg8P/02by1v9c/kqa7tQCYw1\nDK3Jg1DJE/0MthWyOKn3nRjQ7jvP47nR12VOsx5bBtCrhH5LS79Jd+9qLXGE\nlB81ty0S+EtRkt5Fa8MmMJYK7BR7erkkvhTSIKCd8CaUqUH8OSnasFHG4LLf\n3b6GnJHXgjW3A7bJIah5UYohWAIGRzg8Ip3LkHcRHtuQw4r/8UwXe0ltpQvt\nskd4Gdvq8EVWsVn2ghNsj03jS7J2gahbLw94Eceaz9brFURGs7iQyiSACUAv\npojwvQN2bOTb8LEsybr+5ApxWP8VqNhverCue/2VoUEtNyGwnKHSbN/r4YQ1\nBTAAaqvcDRwH7VY1QA1fHaE1g5ySud3WRKEyrE6YxCoqStUpOO+R5UPV+sQX\nrkrMKApE+dEqctLiXQFf8WRveynnKtY0DTU5bv3jpMj6VblTqebfREOKLyZn\n1+2b0d2wbvoEQvQNYMmYo/6pCehYAudm285P9T7KZi6DPXlk1waXjD9w1TB3\n0ZCTGJFvxp5EZfHoMYm/wfBcnHUrvYSgPOvdWmktHCB3GwgkL5CSCvctBKXN\nNFqf5xyclk2ZZz04BHoiMrzYALDwmWdCnCdF1lUIwo5lw34Ig0isVmwH73YO\n2K1GLXFjMD3n6jVlKKM8VP81dkYkvpqbVvWgzuNMMLRfDfrYAhO1enzAJvgy\nyA05\r\n=FUTS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDom4AmPLPvSxFkMKTzhdNW7VkihvCQ2QxISHSgERtglQIhAPrlslA8mo1XAvKItWA94xrHW+OIVBAVv3jSawFS7BMJ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599579377-76f91452.0_1599579490427_0.49591002797015693"},"_hasShrinkwrap":false},"2.8.1-next-1599583796-e0f26fdb.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599583796-e0f26fdb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599583796-e0f26fdb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599583796-e0f26fdb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-f545taryc4ruQyBX6Q0AdvmWuB8mUNu3JzJbVYluMBvgswWLx3/oPcu4d7KbzZu7yC8DtWuwnyxLptM94PYY+Q==","shasum":"353aafbe046c7efbf33e603ab0e65000d1f03970","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599583796-e0f26fdb.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV7aZCRA9TVsSAnZWagAAM5sQAJF9xx1C3vvKcPu91VGj\nmgoe42lofWA5V6KSddpoqbw/Xmrm4TPZQW20/xb2XquVMIf08KZUqtmBKJam\nl/fRT38+5G1XdDC+8GK+GSm1ovffkNwiPYgbs41051k2/RQvJ8wCs7JqlGzf\nqPmkh3CLAW391HwklJraNyHrKAft8vn8FFhS5qvdZyISRKuo5xi88w8KlWNO\nCvPI5j90vo7nvhX9MghHmTs8T1AQMbQz8n9ajsqUX0vKsPo93cwBQn4XKOLd\nJlnVF+IzSsLfikaaAQJYPZdl4C/PyNYgFJ6eyKC35bKm0PO+HbZSy0MA8Ec4\nklNuvf9PVeDP0fTacJcTYQVvRWIQnMXE/tsCapJ+QuDx9H/J6s2owUoXGEzW\n4qvcRCVJyR26Gn8zcSRgpSPZr4CwrnFLFGQ6xAJ+3UkGewOaVInzQwbTUDJE\njUsFhTjG3RFNV5ydHK19u9rNbWfuY+bmux4w75vA147H3sobtrPy3iB53ibz\nG44Ox6Pgil7RhMi6polWeonPnkFDb5mTqqnfEDm4BFJT53+uxlWFQkoqlJ6m\nQ2XcpEvTjQkQ6ILI4gpqvspK+0lyjJSNtY4uYrWrOuYOLBvQoLyp21tSuHmN\nA5fJtkDeP1W2avPt9Res89HWLRXBeSsOJHw8A+TweO9b2xLwZyfy7qJ0Iv0Y\nLe92\r\n=En1M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBZpKvOcgMMghFCgYaCRzBzj7lO85vE/JNEnwL+mg75gIhAL6sR6M/M+fJCZy4DHeUe7lA2UsLR2+wWOyNUeBf4aPR"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599583796-e0f26fdb.0_1599583896649_0.9207153726575132"},"_hasShrinkwrap":false},"2.8.1-next-1599583958-bb12166e.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599583958-bb12166e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599583958-bb12166e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599583958-bb12166e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TL4lNF4fTw2wmkwUUWY0GE35wlnbVpNq93HpSl9ZEdNlxNZiR5E+1X4EdxtohQEOuaaRSvEU0CA8Q1YVYPrfcw==","shasum":"47f97f7baa71fad7ba3f024d5237be7cad58f663","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599583958-bb12166e.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV7dZCRA9TVsSAnZWagAAxIkQAJXoEGlsxcvXgiBCDBo3\netaG4pvgh6Jt/NRTQgU4kf0XyM8FbTK5wBwMqGV4a7QMax80nEALqrmYfILx\n/VaNudffqWmsZhdBhu1BucXqZbuDKI8MFIFeRi0nldOQPKB6BEZN5bEe3j2W\nmDwz9UuYlejvBqXyTu2hURGQGolUXt03I0j6G6NTbVi+t7pZxxwJU/1+SHVS\ndRRPRFcYNVvVYdG5r3VzI4VKrOjZrhpbqIq8njn0UpbGtH5BrHsuafG9/R3x\ns7DgMIUbEckwH3S7XzrDgXJSZhXNhIgOBdjZ2DFlARVfEh3qJ4cvkxz49OP+\nRxUzgaGi8ZwRJdPpABGUt7h8dNmnyxW54jN7YuXqPn7RulKoLSoHTmm4IyMR\n7XDGzbpHFRYyRJhtFtjwc/LqdJvw7S2kOZEiRlkeurqlbAuo5WhvWGjSYW44\nzmQt0w/rnMYufCOzR1y/JXgpVEeD/7eTjeJOENTqts/if/ehTo1UyWZgZWNA\nibImjwsyUdeyPRgS0AKUvFpZAVKL8FuT884lbfn+EiZG9gb0J21aDzK1yR9f\nux+qY2B9Fvwn5uMTfHt5U9Ay1z8fTW8jIDFb3wZVPr8T7g0V2vGqsNhgkLu0\nAPeikPC72yRS1EmzNwvssKDm4kCMXOY8DrsVa/JudUcsJVslHEkGZd6Fbyyj\nDWVD\r\n=beZ5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxWWf4QR9VhgVtQxjXb8Px0QGGpRhqBNzNB1v+TsckPwIgCUMdfm1pMGaS9D46r97obDeBvqLUDe2fIPaDqrTBaqU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599583958-bb12166e.0_1599584089060_0.6945282022188901"},"_hasShrinkwrap":false},"2.8.1-next-1599585714-bb12166e.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599585714-bb12166e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599585714-bb12166e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599585714-bb12166e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AKfR7+wlwAYFZG5qkVTM9nVHGAfd5Ofuno4WI5C08KYxxEawRfoizYZIRxAN4TCnmANbOhUxplt3ZUPhF1vc0w==","shasum":"553b5519a80f948042d17e5167e00c139119c243","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599585714-bb12166e.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV74WCRA9TVsSAnZWagAANUEQAIh7AE+CisAi4wip0PzD\nyrTfQ+BAwMcEr7n45dyFvnMvEPSvG5yJCCnsAHbnvTF6NW3jHoqZVTuUVJSq\nlhA2V2c5UuJhTaxCZWXEuDjSB9MExa8AcwJih94x2tqTbpw5fXGWlbx1zVW7\nIDa7wWK2pGJ+c10keDXfOdGGFA3+ZXcK77bXJ9b3m/IpHRV1AH/vyRJCYyv8\nQQGWN5TIcIC0u288A7ChJIwM4gyX+mYIQ5ts8R+ikruwmUJzzO2ViaZqSyyn\n+BJo/QQ5Oi7XmyGDUmm54ivd6X1X7p7NXr7zKWjO8A8Y2h4ThA3VzR+Bplq2\n8AZw/ObH5cLu9n+r2vLb5dQ2QDESsdkftiIbl2tmKSeZRywUlmmYqsGG4duE\noc8JncH9QiLRwnBdi4hEVTUx70cBWdZkbDEouyKnHdlmbExhWb6MpvQ+9qy0\nZKF8t/LbetSUxdtjOj58yeixlh3d+4FM5mky+BDmcI1FqPOhn5xvWKivpIPc\n1c//PxEP0fWLtPuCvhFNYl4lfiu+LdtvZqFIefhrEtkrUXmBaBWc3Npv+2Lb\nxXU9DQOwh7jlyCUDYQJuuce2FYq38SZoHWVNGVnUu22tTZgCJ3WKpuPzyp4G\nMAJny53wYgDyl72XxQ4J3xCdQBxIJ/BS8iR0zK00KXP7kTek7+seBIYHkX9Y\nOqEo\r\n=NxwL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICCII5si3Fg9sa2GXEmeiIW7jGMogdrgDbFlx1jN2MInAiEAsKoAhjn4UKc5vwzFCAfnARkdGBiz9CkkkU/jMiGZsPI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599585714-bb12166e.0_1599585813983_0.33769370964161194"},"_hasShrinkwrap":false},"2.8.1-next-1599586431-11d14d03.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599586431-11d14d03.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599586431-11d14d03.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599586431-11d14d03.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t/h6YGS0+T1adS9poDGRYOuEOLYWm/xACpQ4DBQdFVDnBfRX6NDLWXDbA6f0HIb0l5bH4+9ggI9sqIcsiDg0rQ==","shasum":"17192edcc7e176fa91dda1cabdea75bc39cc50a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599586431-11d14d03.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV8DwCRA9TVsSAnZWagAAfFIP/iLERmGw9o7yavWpfJnR\nQkl3KHDDJpxwWSkbYNK3HY2vVRDzNn4HNKMQ4otBU0RNZLshmvq7fXHvQoHj\nkikBh6WfpqzKjhRUINWPIJu1ne/XyLrPO5l8SdBzt4E4xx6jsGPTKtcMs3fw\noa9UwS2vrY6VZR0rKKy71ELQ00wwys33f7C1ZO1xmAZR6NGCHGkX0VsL6Ufs\nrZzxi3R4niD5fusoDAd1GZqNgUSn5WOBmvUK8KhLnOtfNHxH3rrNCUzJbUC4\ng3cwmhtnXmBOhG9h+bJWz+xO6FtHYpZ+2KyUMBvhrlyTu/HbHKo8bLNvRv1F\na4MwifSHza1sd21rqbtQFvsyvdItr8rCl9GnC1JA6H+BRiAjO62GE2cLloOX\n0XcoZlzM6w3h78IBu9bJUzKg4/TpgiVGoF/uWfPpoCsUj/vnVkkEyTb9ocMQ\naTd0HIph7tvBBSkZh5ac0hcEuGU4OPKV7xRqM3peLqN4lhmyABbG55O70B6o\nsCur36s7cRae+ZKioNpZP4bMu70dnwcY6UrqiYqyHXjglI5rhCq2QkxrRN36\nfOXQPi/Sf6O7JgnUf2QkPjJA+PWscm27+zRyWaViZzTR8IAzIpOUrNNu1OOG\ngYITs+OGg48mIhgJAnlKEymCFp5cSemVLRMt5WpwvfFIKsQPU3E3Rs9NiuI0\nYt2r\r\n=0fTG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCS/xX6bvHPXdVxld1Y+QPMVJLLSpRquIa8dC4w4wkYGAIgPZrTxaY+kiHqhFUDipqhx6jn8lhZD4MxtujappQjncI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599586431-11d14d03.0_1599586544352_0.8130389694565265"},"_hasShrinkwrap":false},"2.8.1-next-1599589991-9d6a1b49.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599589991-9d6a1b49.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599589991-9d6a1b49.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599589991-9d6a1b49.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-IvzuiWM+FFlaII+LeP3/8V/i5QWT1ISNyDKkXVD6zAYd8CFkrTPVk+eaU2VhZWkPUs74nQeRI4JZY8Vb652XtA==","shasum":"586171c0973e7abfd44bbe3115f43a310688e656","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599589991-9d6a1b49.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV87WCRA9TVsSAnZWagAAkmkP/0UTPhz0EBhChb09GTfz\n8+H8qqWEw3rC9AZWTmqmtefLP+xt+c6iR11brngp9BWRvsegFEZSAdzj+LK7\n8C804pvYavxH50F22Wac1dWTK0l3Mxd+G2+NyWFGgTwqeiK6Dy0MiX5nBB+b\nzudXe71KHHUcoZzBpJO7XKQiHPOsoDUGgtSuHjS/ocBXniQBqUqVlRvQg21R\nrUVB0TiihBCu/rW9M8sva8PXSKwwjQL3V7Zwcf0ynMuxEu6egxYbhMnWUIxE\ngGP4K9FQ9zXbRAb4yg2D7GiySf6+46dQy2oUhNtStiBAxSHseQyXksTHqiNL\nsmBEA4xuY3dMetHBbhOUPrp6vvLaL3Ly28ESGGOUWcQ2RL6nWNqhy1BJRilW\nLmT5poCELA+86ca6jjA09Ma0R1y/pgKvwyA8y3rlXyz2Zf+n+SMZVZHTnfrT\n8lIZMLDEnxIunWZqxyc+Z6OcgoWGcUT2jqcXBqmQXB7+W4TQCVrysberxXH2\nrES6fx0v/MFWOnlB/iBbGqct1fAvGL+PJ/z0Ila8sLPmujX+5YYQLGPqSQat\ni0Hg1qyqEutQnUKEv8f3/Zhbw8F5daH0vteEgVHUaGZK36owq4O4rmV/VJ7w\nq80IqqfL7b6JeSSswjWU/voIODyEU3/bdrvftGbKcoYLVK2V6ft5Riysb0+W\nU5lI\r\n=YirQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFAJOzAVc3NqMELikBEnKQJEx4GlOK38UsqHSIQ6CxJlAiEAqseL0wGmt6zwC9+j/jw7goZOevtvs6WMxymE8nJ3Cqk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599589991-9d6a1b49.0_1599590101819_0.07939360265147677"},"_hasShrinkwrap":false},"2.8.1-next-1599594538-34381c35.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599594538-34381c35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599594538-34381c35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599594538-34381c35.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-my91KMSXlBxl6UFnMCyM0zpoNEFV51aSTsnYeYk2/P51jgq8LyZjGilWnvIS2iHR4CWxxJoV+6HY4Qhud8nMhw==","shasum":"20e77fe5942aedbd3644e9dd2fc8507a9f80aaf9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599594538-34381c35.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV+CYCRA9TVsSAnZWagAAYEYP/3IezlsAAqu9vWKkFmNp\nGVJ2oY5c8uHJlxsypnllg0kAHS2KgHZl0Djm5A0fSx2Htt/6r6+l0OksHGhH\n4mTb2BB/GfiumHt1aytMkyPWvaEPG0XkR1TmPpDYp17YhZdmEGrPl82PARAy\nuvPgY/NX/5ndrttS4PMwyF46A+rLpNA9hR+LkgSsDMmbNlMSMz5Q/bE7xe8S\ncCUbRLJaEwyzReq/MpY94JAel9dmTVqZeiWIFGr5ISr1Wa7qTvyVgfk9BXUO\nX6PP/pmcv4K7llEq7JPmE7b6u+PK9h9EAwaw1I9IicSVK6liRzv9v0VUelE4\nIqEhHo24UoV+XuZtwoWV8BqKJY55PTRIrmIFOvyA58nvRVmI/UP6W6nZ/xpt\nYibGtxahsrxk2VH7r7pCZ9fgRub4AyIr5JarcWxhEkKkihVUGr8aVtqfXk+W\nQdfKaUl1kUGnx3lytXpbtso04mGgeXIxWE0Z+z38awibHXVm9SR0RdDpK8Is\nfvkyP65dfGAQCll7pUVrk4I49xggYtQ9975RX3dz5ZnQX0IO4YbbGuLkwX3W\n4jANGZogN/9M9MqpSjjIdQe9xn81WRPh+ZR1C4dCT1YYs1StVOlsKhvqnvr5\nhV30PmTjB4mHKGjfgkaSNvnlY2bAWpANoen3vHQpuO/kv0NqyVv+G48hfI+Y\njeSn\r\n=W0lg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaH1p2PTnAOKdr8GI7Wj0648LwXXSw3eWC35MsSQQCowIgYYx2vpRKwH8O1R8EA7Ji6jMeCDVJk86pEKeWHl06CDY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599594538-34381c35.0_1599594647572_0.8640725860690273"},"_hasShrinkwrap":false},"2.8.1-next-1599598701-c31613a6.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599598701-c31613a6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599598701-c31613a6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599598701-c31613a6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ZSU9XPL9T4ea45ktTYTth1Fl0SK0K4L8G5BzL/LIL823P/8pp3j6DbIA7GRTl4UH5JZLsgohkcbrUDe774wIXg==","shasum":"5012a51cb68e9dd5f1a9b9b22a54983f233e5d2a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599598701-c31613a6.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV/DVCRA9TVsSAnZWagAAi/MP/iK6R9cPGdbqt+kurq6b\nfX/lIzeA12ESYg4zwGEVT3Vb9hjd9VIFS3q2J43L3cqWvzhisrmrvB959oES\np7mrvI3oq446LJdDj9GQyOnfx2JSqZ+/cgbVra/Vq75J2HmYj+nx8g0ahUUr\nfDyIrYFiJF585bxrPIGvqqpq8rlO53LRYb5KnSZsZJmZfqzecd1jr0Ax6AWK\nslRBzFSXl2/pllFyduogzgFDiK/o76DC/B2yL5VsSONpHV1Qa7xTmY93gRwd\nCVMLPHhRxx0Cb6qVpwEHLoj08Tz/f3l7uGqIgizBxaKjRUAD/hTzcgxkZ5ut\np1f4605xkUe07kmDUvIYprC3CWSgmRlgLAcEaeOoFYQpq2Xi8VWVVLyQap3O\nkZuM2IOHx7OYDySkpxsT6HKOs+AEElrvANEKXf5IdxRR33eRedqGjKUkHEro\nL+nzDO+9SA6T8q3VeA+3luRGG26q/TxegRtHNU05d5cxvLFxtrHlDfPpBnHs\nU5NbcVDKquusBEXf8EEJEp4KGUevwV2EElkqqRi/fKdyTRdPzKZ6ihpQFMEt\nfa9w5UdqHpvIGdwSJNBJfxHjfduxFhOn+/g/FuvbDyOPiHgChtAe5bD4oeLc\nXD3Xqpu+XvVhV90zXbQSIrEh1rWxzbXlaZXfMgUlX0vu9tq5lRaH5LALq1Ir\nmWBf\r\n=2/Pd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFrWdErjadIe99F5RKdTZFIENZ5w9wJXuwd5K2FMCqdUAiAQF/0xxXPtJ5tZliVwD2+keynjh0k5U1mVShP1bYvxEw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599598701-c31613a6.0_1599598805171_0.037148827338043366"},"_hasShrinkwrap":false},"2.8.1-next-1599600008-85b43a11.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599600008-85b43a11.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599600008-85b43a11.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599600008-85b43a11.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9NpsQzZawfbKJQBJwOpkV/T0JRPR30BLSxHyLttsDYQ0MsCqY0ctghfdfCFw9lpq2ABsKzp1CEsga2jLHwhyrw==","shasum":"51672be0cb953d8a9930a1f74452a6e937698ccf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599600008-85b43a11.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV/X2CRA9TVsSAnZWagAAmnoQAJkPsXsbG2uVI2r5oNFj\nBiPJqYAai7H1f7nEUhdRb7c11yOxGHpj5ITSxTDrI+0wujRSJRcQ6wxQuAjR\nwoDmhCypZyTBj759GTGAl7J403axEALYALILIIjMp9Wxx3awGI5lW++1C0ef\ngUl0KdoXIF3gsIZfbgw/n21jtG4aNDiEeLqfz/V4Hin0rBfFezLSmuZiUoWj\nM8lJUcnZo1c5oRla/63NBBOOA58DN5KSvVXUARmif5aMeyVcPvZxjM3mwhGO\nTFLn0OucBtHzEgAU4bFVDxPI4A2YBR+jxZ4R/4cLmVUNG0gbRURU04Bpzj1w\n0oR5yY6APMMz9EZY/DzycXENi525+ATtkK+JkaBrKCv98vlI4CC5pDYDdbq1\nY+ppvN4b+J+e54+ipSGjltbvw3nh1pfOvGEDillrZrHURzDV4gtS6meiuyaR\nrsIDGje7NKjN8HWhzBOg0PeHLoc23hRpaOL7cqKnlexvjVyPuUZE2x7Umyyy\nJXJjpqzdAGUt2ZYj697ofe/CXrYCewTbOk6RHg1rbVH5ozkCBA7i8yYQp8hx\n7q+eT1y3XJedlxYSyYmGmLAT7CpQt+xSm8+lzGRK7ym0YiV/ShG6r4HITeOH\nV0l73Ia1IsaE8Vk4qO62pwezlw1qKydhQ1GUfd96njIHwjU8zJfuWs8U9s8H\nVhxQ\r\n=JmrV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMYXs9+WJnmhpjaedI4KPTunz5ry+pHZjfI0zqEOkBagIhAMyN10sLMMC5fIipJ+oqmdYeVVFHFEqmAUFMx0EG/Mib"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599600008-85b43a11.0_1599600117724_0.7663759465781146"},"_hasShrinkwrap":false},"2.8.1-next-1599601377-a988e7aa.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599601377-a988e7aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599601377-a988e7aa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599601377-a988e7aa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oLfTt7HiOOphFlRhoYftOl8UIeHyrB7HNoT9a0+jvWjLd5Icphm5GqSveXlfRNA3eny6qGZkLbHiIY42PD26Lg==","shasum":"d04b34b1f474e1294f1abfa18e1901f2a9dec156","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599601377-a988e7aa.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV/tLCRA9TVsSAnZWagAAKiQP/R5K+Xj/Ta6EzYW7mKLW\nR2qGxKfpO6/y+Y5HDuUrn++TIeB5UFVt+Ri1hswRVI/jk7qvkqELcfODwGPI\nnP4wozyT9Zq6BQn5jD/VsOQdNBhy+8FNqlBMyDWTeobnpESMak5WieYbNt7d\nfAPo+SiAidct4HgCVC5TLfkF912RrmDumVALwidiNXGCKkD8YmUkjt/B0rGU\nT78qqzB46PrhtEEDagzkMNvJilEdNv+3ttSDk45BLAQW1370pSN24eYYLiln\n4+2lH9arygpe8ZwpMOWJPZf9ga/ruzm7NoKJs8R6h9p/X2pbIc8mj4KWx5G0\nTZS1GORZcFtY4Mta52meQrdAU9eZBhwwrWTlWaf0d03+7I6SQHhufKq0orge\ngnoDvlGYNMEjEjicWR7iBmmZTnlGJt3qJeYcVxunaiRF2ASGgjDpxJwLTmhO\nsuHX8XX8/nUsYVc2+kzRZXoa8K5RYlYcZf+pUvdsWfjVdKDMB0n5b8c7aL5w\nssIws6POcxgY23A2ml/R8FwTwwHg4d/+mxEyjPlQbtRCBEpTBF02Nr7IKVPZ\nZ0u4HnysCMnrn6YW4Ymk8JiOiPFREX4QR2dt3zdaaBLN9rG/aFzeCCuK/kqy\n6J6CPlrU17/ZPzELRJAl9FXNebHtfS1O0my+7mEVAJzkNchg2sKEUSu0oQ9J\nscAr\r\n=Vijn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZiyz5Z8mZoYWJnoL1A5E4UuSdhCoOzfe8wHHaTvEPAAIhAJwFIyAkN/jDRj521Hc7NjjI/ddfd+fiGSbaF04RXlWy"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599601377-a988e7aa.0_1599601482548_0.3994736757051984"},"_hasShrinkwrap":false},"2.8.1-next-1599602262-b263a8ed.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599602262-b263a8ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599602262-b263a8ed.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599602262-b263a8ed.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-daZ8jpw9bkGtZP9gms0MxzuIMGL9KchcxOp6k+aTaRxKXrAfFqCP16RmWqMK33oz1s7MstJyiqcLHyyioLXASA==","shasum":"fab34ca38753ce8ae1eea8496c69a4d20541e5e3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599602262-b263a8ed.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV/7FCRA9TVsSAnZWagAA1HoP/1HPgKxgigITpzv4pZvl\nNycNcIH4oGb1v4NE5DEkmWAS6ZXGIzTPeapMUw4/vp16PjylJcj/xIupcg06\nCk1OqqF+1oM3zwrhcUUU+gceDvRb98PWuoFwe7+xl8oyGXHBM/hvv1S2QW2N\npo1QJ/bwcrGAW6YpHkxUVs8BR3qH8pmCosFQyYLsCci9fug7pqfUpGEu5fIw\nhuiXBaZ0uSvaQcEL4BVFqCSap927SQNoGO6wNTmZxCce/oTfst6Hj28iVOb8\n02JdeYU/4Nu8C7e9mcHQIr9VNOVRemwKzy34N88mYMMvGXdJ/8kxQMWaDXyJ\nybrnVkCbqJbWUoxgFPn4AnK5THofruUcwupOM9hsug3rmdZAhUyAvUapGXen\nCyI7VqS149H5LAmOxgcLCrci3eOitYZ0hzeTXClv0rltE/vHkpzPFYp7Em6z\nAaz1MqR7AHZ6mZ34MThnm0+ds3rs35DPNRGRwfz7/8EW4y9jNCjLXUtNC0WY\nBbnNiN//eFpeGrD7GtKoChM5NONrGPhoFNQ8drptmPXToIYYPCzHyxHMUkKC\nmYwZ+9SztflbfUNg1g1F025TK1a8LHtqTddPNp95dEuhX3gjojcWtEHePn0l\nwkMVoyVRZVbZe1yenqxUheta92KUB2U59q/koHXxmFbaLrqAhLJWccmZu1+M\nMnXR\r\n=f8os\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFIM75MRe2mcOy0/g4YDXPSD72H+9msluciZgMixVC34AiBYS4SxPdG5q5wyHFQPto1cVzbup1kSIhsCYvbtHzn6FA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599602262-b263a8ed.0_1599602372560_0.7662163135586577"},"_hasShrinkwrap":false},"2.8.1-next-1599648414-09ddff50.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599648414-09ddff50.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599648414-09ddff50.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599648414-09ddff50.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JA091XOBvelrDBVEWhPHQdMUGOMvD+fsTD0E8ApnvMi1yPY6R/dDlO0FFH//41YbFE+8FUggKoXs6RBPF1YrSw==","shasum":"ba12e702f01afb9cc83cfedbd6a2eea44d459c92","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599648414-09ddff50.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWLMCCRA9TVsSAnZWagAAZvsQAI1hEO6pn0ky56/IJnhG\nBjDb+1PfTXX3FE7FWxnbSdMgiurYpJoZwTwd0w+iZo8VH42S6BvRHbgvzh7+\n2rQvJ2YPC9cTf7h+iZTLuLegsHSbKmNw9xU3Lz3RNv3c0c7GIo3Mz025ctlx\nFKcst/KEbioH6Kn0rJ6eKVmKQ6eV8tXPqkwz/MFtOSciWMiAe+iQLs9uM5JM\nnGi4H+QWM3iM25TmXuPx+3BgXbFwxx1euDAcZTC8wGDBsFK3Xhs/YxdzuYi9\nPdL+OYpyk8+Qp3kIvL7r8F1DNcViBPkv1w7UOT1zlaqMRamOepUoZKxCcYqT\n98EwgZpOvXIp0N1o7qI990ueHs7jlQjznlRF95sWOKU6hPvklPnjHbcrqOGs\nyC+WU1lCFnw/eCnkRYjyxAQUBmBtywi5EY53aO7Z8BuNiUm8/YkSFSqk0cle\nggq7Jl8YHiy+pnBDJukbN1J5vJ6UScMnzr1nYWDEP5isyKfBfO9WLAtyS6/0\nnXkeA5sKLo6ZWw1IiUF2Z0m7FU/3RpVGd8yyqWj/TuII+7cFuiV83HV9S5WM\njNkQSCd3z/FrJrBKzbU7b8zM62e+REvQ6Dg5AdWQBJ9lLveoKZhJXpFiReF3\nVyqDZZ2qKZ/H4u4daUABKD3sBKLOQ245YVU/yq0dmGZWGyTjKO9SGJWimtEV\nbjNI\r\n=jXBI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCx3cvTut8AQ04rOtAKoLpxED91CO1KAMRnEWrncYGBAgIhAJh7+iKw8ULFYIKS8NbONlxWe2yvxCXpXgxfsbIpcbWq"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599648414-09ddff50.0_1599648513918_0.8280800460225943"},"_hasShrinkwrap":false},"2.8.1-next-1599649332-3d79f674.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599649332-3d79f674.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599649332-3d79f674.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599649332-3d79f674.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mE9nqIV/zydtJnJVoF8eG+qDGe7ETlaHsvaSvmOdoqX7mmtZaE7AuWaefWaNsGzTc92JwhEMUMyNdmAIn+ftgA==","shasum":"45d949e3b4e703634e962e536783839e1580f6dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599649332-3d79f674.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWLadCRA9TVsSAnZWagAANEwP/2rsI6kUOqM/RXf2voxv\nXXbJxt6+GAP9tn0gs/3zbBmkKqkGRLj0duGLVq4cT5DQvsOW4oDwKp1xI3OS\nxz5hyKH5mZKSZdlUUt5mLF8kLwmx2K7gYKTkt8H/9FIDwvdCIcL5aW9+IfTR\n/n87f7Ny/LfFTG08YffJ8pNqaj++UhIFmLghoq/SEOpwpCojxPKBpLDE+ist\n44ftl/AnILrSehySm/uKvwfWlRKgNHv3dlenBn47HJfkBUUZnSwLYfOr0VUR\n6Yp8vDSRVuFKHEoWi91rFdgBSBm4/AyyDjF6KbIb2KjFyHb5ZAWJT/2AB4PQ\nZo5Ww95Dm4XrUebV3JpDtK7wE8+PwInW+toAgbI+ZA2zYeG0wlPrMW2oNMfp\nEwUd7k456h3S8U2fnGF4oet9lBRvPMznzVpJAADlmN9sMoVYJiiHyCZ4R/rR\n47f5BCgnovxI14oM83lHGdJlObfjDQ9pdGuPGcI9Q+NPZpHCUb1y4gDslaWY\ncAhSQVIdJBwaXGw2JbnvlfN2IaXUIw5HO/X1b4LmlLqLn+qcmeQX0DxL69yy\n06TPRrScQ46rCQ+fzj2GKxFNDS3u0bNGIaHLM4t1yG+ctljgVc9j6bzkp2me\nDuk/k3x5PJL8KkFuicX+Wxkz8s1y4cGE6EEclVDXRaGaJz/i380qXtLFePgh\nANK7\r\n=0xeJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBPAKUl7lKAoPT/jFICvW6NXy2f2Hir/MjIaE5S/rwMkAiEA97BgDPGh+1tEf0US/vHte3HNYeS3nB398J+x9bf1pLM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599649332-3d79f674.0_1599649437466_0.2937431097189882"},"_hasShrinkwrap":false},"2.8.1-next-1599651272-34bbaf73.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599651272-34bbaf73.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599651272-34bbaf73.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599651272-34bbaf73.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-93e1GvMqRFUymXSvSLRiFBlOBQLgnIHf8zo9eSIOdqB3VYpMkppOrUnmOzPx7TsWlNhCjJKLCkNvZgyOiJLgYw==","shasum":"c10b20203aa05fd66fbb265089e6a71ae6bf59e7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599651272-34bbaf73.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWL4sCRA9TVsSAnZWagAA7U8P/0++R5QT9ItJEzAzkm7e\nWRhuAP9FPC5kn832JWHmeTSd7CIkCBjULRx7LDv00IFIF4OKu11v6+y+iZv3\nDkTnD72lIyMyf7nUi7jp8sDl0LRdpb93+nE3NUEgNUes3KPKgf598vZkRdur\nJ4pv2Nv+plSHD27J69+LkzElJaAYXhHLEVZpUwgtAEMCb59X1vF14mgtb0BN\n9V7TllUnf4Duxny/pvGgWtKRJt4UCayIpDbLIVszEAT2fxkE/TKhqp8Hj0iq\nRwgqL3ffinv2Hp/BPaQp9dolMJq+FuGReW319CrlUobtOFcZwbovEcFco9Vk\n2TDoRoJnPtyvrQQWptVNngF3hDqJh05TPv9qC1a1XsUck9zx6oT/8bwwC2/O\ndIzYdOZyRoyBWcD7z5qQQfvdkBhVEijffnlQfetUMydXzf2mXn2Wgoe4jKo7\nA24CxW5Qj8NYh7y6AuBaaig5n8U4rVZ5LxLrrJJZtNQovGj2+Kj8oEg3183D\nGYsi+S/SI3sXJDseM9uNE/zM3JOhldsvy1QYY9Q7VfH70XO/u5VVriPC2rrK\nv4ILPKOWncivC+KrHZEW6nT1Q0k4lTA8omLr1EHVBjIHdIjDs8W0ChYjQXEo\nTjUKcRl3QRajPBibOL8QAi/xrPXyiFLiw+pGoqNsk4OC68DLHbh+RXTbLY3p\nyrpQ\r\n=UugZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDg41q0p+ZaYiA4rCS7JwZt7vqGsG93Y1iAlwwbCzxlCAiBYd51RgkhC+z8pDZXayks6gxj3bpcywZfger8Ci79ueQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599651272-34bbaf73.0_1599651372034_0.43281372343245317"},"_hasShrinkwrap":false},"2.8.1-next-1599651663-97b41d07.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599651663-97b41d07.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599651663-97b41d07.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599651663-97b41d07.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-C7S0dd+qIPHslqANoUClVHbARgTkD5JS6BMPm14PMHaPQYxrAv79MsTxKs3l8XwqgnpiY8CjOGUys4zrplPr6g==","shasum":"2258f99be8a656b47c0499d4e7691e7bc10b1b09","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599651663-97b41d07.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWL+9CRA9TVsSAnZWagAAgWIP/3w6aPHVFoH9lmtL8VFb\nEtijQopAJ3xPTxc39ztW3b74IhbhOkyoxDMY+UeUt+VALC4qF0H8ZcW6oXnd\nI4PNd26nqWVDB6TxMXxson1k58Y0/Cw6liWnJhvOXs3WG3zm+gURRowK9Ji3\nBS/T2KB2QrRwgwdQ2B2FVMeuIQVjI4FSnCffD3TVFuA7WsWqerfCE1qcV8xi\nsLL9u3K8RRMcMr+7Ll0cNwlmB8gSdxkXXS7N9k9mUz3kjoeQO8S5K46RSicL\ntW/40ZtTOXipDwnOWy0vRYQPaTWOBVhLEcBFZc/1usVCsUa9CA/07nnl7t1H\n9nCrjlMzuvn1KIRxxMlqNW+y70EFxQleS7Rvk5goyMg4dFVDPwwlXimscI0C\npTJmHEs6sibwE38ukpj9q+ubte06C0Xf5Q4a59z36DvieYbIh/8BNvZ6Lap5\nSnitUuOCJLhRju4/G5A0LuWOLBY+SXlenHd85PNJ4nUFyABmwY21ZPsnJ+Fs\n6/HyNOr2dpULkxs0K3hjWrUa6nqWKgx7tSeM3miWY2qi5i8hu0AdBv+KW2BB\ngymqhNvFV6WG9DDVmoRm1S6X6jTc1Pe6jdcVOVLGrD4BznmMpMV1uM6LAsZ3\nXCuByT29SBVuq2hbYSxzo/takewBdWTe9b5yeTmsffc0V0GYXwjjlZ2ZpvFA\n/64u\r\n=14PN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVI7BHGqDCPhgYGCLyQkOjA4QYBNJvR4dSNwWGkG5+kgIhAP09ZXTpbJ96wvQ36Tr9hUWAqpCLKlT6XvqjLuV+tJ+t"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599651663-97b41d07.0_1599651772974_0.7898791991255256"},"_hasShrinkwrap":false},"2.8.1-next-1599653218-de5d0620.0":{"name":"@xdn/prefetch","version":"2.8.1-next-1599653218-de5d0620.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.8.1-next-1599653218-de5d0620.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.8.1-next-1599653218-de5d0620.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-aL2rdizzBgQwf4tjo/42GcP2IhVWJAivgkz7h6tSQF7XhqkuRb8MWQfhzgzUK5YXHMKRDVDiQydHXQwulH/fTw==","shasum":"2388be2a70706d1bdfd5ef67de300807c24b34cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.8.1-next-1599653218-de5d0620.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWMXJCRA9TVsSAnZWagAAZ7wP/A0PqsfMpWPUycWd23Gd\nAU1Uwv3U1aa8MpMo3PycPjfUyNKIV2qxdmNpAJs8E0FWpByL8JFNJ1EFEaf4\nasAfswwpA2/4Z5G5MBmQENCv6NAN3EXiaSrXGXoLkgz+pjcAdpZZmMBvEPXM\naK8y0kChEhjKL2qlARrc5VAqzYYqmGhVL7a3uR9jNIXvp5jnfq8dAbBGDhNM\nt1ssZjMSIWqRSIkO+rMhZ73Odmsyl1zUX7rd/k98POyyjnphwvOECQdbsSg3\n8dzyMaUG7Fs6DTrfODDEgW9mWO2vU/R6B6bg/sNrLcUNHvGM4wZFJLvwLdic\nuRMe9EycWn2qeoMQu/BWRQGNsTRBFFcDvSl2onBJ22smdqoQjQ7y2X7Mex5a\noQfqSX5R9F+5P5F+aggxHpKSqxVIjPaoFPR9WCSByLlRBL3OW43FAUtbCyzs\n9DMoL5ToSvKcYXDR2UD3bFAr+lSvFvQ1PWLqH523a5MwPUbcxWhebCmBjH1f\na7dO69VeMZsP3h/fDV9I5FPVh4ghzVb6pWS6OhH6VAXhF+t4hGUBDgxXZEAK\nUv/YHjBG5vEiImfyJS3VqE4lxNhZChZ6v7ltQ/WiIHbojXFeERvR4L46zS4X\naJiTaG5lyIdeQjzytJt4W7nPSUS8XdoDS11Qz3vbtxtHdj2AZ6rvirpFBz/3\nqA08\r\n=KXdR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0ccAvVyTWYVG1pjxOhD30DrdUqlx682/Mic8+OOxkPwIhAO6QRee2G8FNfyF2dkHnLDYqG7uVKANQxHVq5+ue66uY"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.8.1-next-1599653218-de5d0620.0_1599653320942_0.6294544179068087"},"_hasShrinkwrap":false},"2.9.1-next-1599653312-5f5ef398.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599653312-5f5ef398.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599653312-5f5ef398.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599653312-5f5ef398.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-00mxpK8+ZQ1ocZMfp0WcTrnaOhIe/aw8hpYX4N/Hg7iW5JZydpK0+yowvv8Ldgs8JMdcqDHChkGfJ3zBZfDivA==","shasum":"bf93df4d507af4e8fb9728e2b55ec40c98efabdb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599653312-5f5ef398.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWMYvCRA9TVsSAnZWagAAH9wP/0NA+1ykl0CxkmbSQWrJ\njb3iYbSkHx9pPOC344D7J1zcAptbICG0Q4rumLPIrRt81xA3HffTzeanfQ2V\nZDbyGNG/X7AcjaWam9uozJzZYzcGmeH9nvMPEO13GPFnjye8ETXA2P3BU69S\nlhAZ2nBJOl/jzm9S5Wlqy6eN+s0aOI9BGuuVSHLwuN1LFSHymTHRJNzCz95c\n4517C4j782X3dEwhJnPu1cVqNFhDkr0jlonoechUTH5G5duuzTeHNEH5aQym\n2HK/5lNdKdbkDiahXkqFLpajTCvVJrrvv+dCaMS7/j8R+9c5bY/GrRJzKGVP\n3hruy3nrteR1f1ePlrjxJOeo8OtNBjs2Z7D1DHEV2mipAJY9ce8zk0Jyj6vk\nPXExvJ5939LklN56uXxy28R4eFJtUbqSKarNwQNKbFidcEZXS1tkUjWvIxgP\nRrjUae6ckrK6W/unSlQ4jQfqys/KfAzCycSYUpGhaXYaS/aFEmQaoHchzG2q\nqzQhdB1htSNpoTF75Gxm9c9hFK15x8HRyIIZyhtWr5e1x/iEJBwwEavdCXPP\nyIwTThKu5Sl9ad5rUXPQcON6G07NftPicatHwVOtKq7+ucQdEZmcSpxm74Xg\nZsHf7A6yCMnQjuI5ciq/ilYSWTInA7rMVn++YiDZJTe/ca+u6hPWJeUy8+aw\n140s\r\n=b2Zw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF9MB5/DDoFoJ4pJUEz3qsxkUJCoWxkeaNnAkCbBv/k0AiBAuSapYNm8Xhvkk0ScXW75gQyxdaVA9pkM33iA21FqOw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599653312-5f5ef398.0_1599653422770_0.3968936813479651"},"_hasShrinkwrap":false},"2.9.1-next-1599654614-b98a36b3.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599654614-b98a36b3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599654614-b98a36b3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599654614-b98a36b3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N0/GtNZU17EOV94/oYNzmrpmUh1nJIXUAyDT0E2g2OZzXht2Z9deV1aoS5MFi7TIccacnuae4ShXilkaG5vh4A==","shasum":"db6c3417dc65726b1cd86c85f98cdfb5ea212e92","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599654614-b98a36b3.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWMtICRA9TVsSAnZWagAArG8P/3S6UUu1P7gzLSuKqlME\nwqLnz8y+dKOF0hl9d+SQ3Tg2If52oG12pESQ2KSmNDxqBmP+r3jNFFRSZO40\naT09r4Su3cF63JJJpI+MBm8QbqK0AJtLRVUhkMYygq8R9enD0ugKG2SH7EQn\nWPSeUySAdvne/NnNr6f5loWWIkr0ZwH+A7ZuoSL87uw4TW7SqxZQO1aoQvh1\nYnlzjGdc/SH5vI+mOoqto3TAy7ZPVxO1dVnkd8cpJMHXhSyR4YNor2o05yAN\nHp29pGPsQNr2Aj4rsgansExBg/ZTTVFbjsSRxByrS0WfH5YOe9FnPP0bHMZs\ni74jo7+tDvJl88ORdsu0zO03DNQ1cud5+vAEI3DPYQX4oIVmBGePUSFHXnvq\nrB9pfd+849FBTwAx8RKKzjHOrVGjKBeGU/atX5uRCk+dLNQjwQJVvGdA7HNX\npeDur0ZXJpkP1zGaLLiM5qxcl49veGbIUSmkQZ0wn7JHJot0h7OLFQ4TFFt4\nrF8GjK+NyffePhKZolKCVklVUDfQRTcY0b45yzaQXerjrm6+RayHpJXa255P\nl7cD5DWdV2p/6la9k4XhBOELS4HSyd9End39A8ryksM/F9fAsirerx6TreJz\nIjjoTYoWhCG062wo4PiqhqHiZTUlgV1xVYgWu/nUxEdWXsjsXxqDxYM0OiB+\ntFxx\r\n=0bmS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFfi/vDhsblGcdhVHJEvumsiMz2ZWCL2mu/3wLbhEwedAiEA/NRyi/ApZyXv/Ff693icVKRT6I//XJOUVcPEcandHT4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599654614-b98a36b3.0_1599654728432_0.677503978801373"},"_hasShrinkwrap":false},"2.9.1-next-1599654914-ad3757e8.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599654914-ad3757e8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599654914-ad3757e8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599654914-ad3757e8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8GyfOP1jVDZGE8+PMPTuQjpaJ/Hkt3V2GVbmBvpe7qmZRM7CUDAjilJBNYDhkL7/LU9TO5/1P7YQGVqH8FRejg==","shasum":"e3d45bcc04bea2585f8224abad793bd4611a299e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599654914-ad3757e8.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWMxyCRA9TVsSAnZWagAAI20P/1/p/etPlt+X6Lyi8sGL\n/5MYZ4y1Jb3+nIuQecZJnkepQskVcwbOLL2NDgVMWKdlwzpTx13osCf+lx6U\nXiqwTCm2DDAngSuXW2wWAue3cMdKKTgSTXgHpUR4QJcZ5/l1CrPaRyLLACLL\nIdMaM3ZPW0pj0XkBFRokFZa/lOIc4r/a7Opa4RTlXZfkk+9+VlGjTfyNV7LO\ntJ0S5N1U1fUP631Ytj1oP/2xZxnLBF9xtCw/FG+nzFLYv7OJwFzFy3RpkzAa\nmudK5APk8FSusiq7RlxZEoeBi/acSbx4LoBLxwQkXDBWy5rBbqI35FkeAf3x\nYoqUIjyi4k1B1Ki2TsRfkdVLdgtegLs6+C7Rq3yG2AeaVtSK6zPfN2IhBB4V\nJ/KrMu/VO99X/OJaxYVqF0Si10YWF8GKjex74El+66K5W9x6LvSZ/K6ehSm4\nBRtG0B3GSLCj8Zx0wuU9UaM54gVhrQJD84NoJM7ysP1YURw2jwos66r7Xuoj\nzLF4OI8jIKCGmw8njq351jgk+hBwU4V5of2RNpq5/OrmA8N3YTaHd8JBiDdh\ntD3rxsj2jSKUqgyYzN58V7FVjBFrnV6Avk4DnXhIuB1KQnEqI99OOyYUDydA\nJKjA0amDQoPC8+N8CjswW3I4tfG+yeV56v2YXM+2rCQKcpv5aM3QbWdcCY2Y\nt2AL\r\n=Q3qG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPsDY12YqGB+dOt13cWWZ6PiJoAVsdsdfD52d3DAAz2wIgBb9Be4YANK4QvWz9SsESNotRsPrYypu1Fx68SDMQl/Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599654914-ad3757e8.0_1599655025962_0.565244360255803"},"_hasShrinkwrap":false},"2.9.1-next-1599655283-33092613.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599655283-33092613.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599655283-33092613.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599655283-33092613.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5gc+0bAaUtM/E0GSF95gqIv2AS2j+20lZRYlVodSniA4Ve84za4cr7zFmR1dUNcThfa6/1a9JsU55KsFhsTdDg==","shasum":"0203f050fb1b1377b40a491d60cd1f7f2fccb188","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599655283-33092613.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWM3gCRA9TVsSAnZWagAAQeQP/1qeL88cuzhUjV04iJbg\nBXnJ1iGMen8FBhGxfMmPjEgs32nztcOgE/hLqsuUTbVSFCw2VgSCz8ysYkRn\n2vQKTsm13DlCxnlStDOwB5ZPRL6FL6LxQVrwWse8EW1OIz/3zJ0VTuNv9bea\n1cjHGGkfj3ME8z/rrVTZuxY0RQX5jd87LLNS9mqzOHZnNkYO9hfMJtWjoKgQ\naF0qugLxn0RXYMC9+K2DwWe7VbJMMkRmxW0/b4HYgEX7LdtwnG6+cym5aMre\nPC0CB2hlVCUYeyrc9E3XMfNtDyqxmVfJU/SbOPpwHRgOlYMLasa45w+hBXr7\nmKZril0Kg+HgG3tWcsqur9XW9kjsGKyIi0bIdRCCgfQnNNUhFRQ1nPAtgU9o\nVz/yvPDoz5RHy1G7Nd3+ZieMQcQjS5RgyytDao0F/KMya9ch3koz5YkqZud8\nDr33bR9Z5B/+pMg97G/EaXKGndXfaEHyfEf42CXw1B437JZtYMPuZxy16LTR\nv8ZCrnpYhCsFzaiEEbA9eiKbXHrm/01FZuIpwWYcFFNBAv/zHrvSdFyiQ4BF\ngrp+JiHIFAM+LBnBSFfzVnoYZ1ow/HqPvQgliypfD3kvpyFfY1Gh/WMPc4R9\njkIqygtetlJdlKm5Ns2ufg8/QftSJtxh1b34FVlOMxv2+/50MtyV7jUl4hsJ\nd2ZW\r\n=e019\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAT9fzZmrlKqk9+3sprhWAcmp+HZRrAOpw7VCLmKr+VqAiAF4mxIBUD7ZFp4aAoOxBj5EtH444SGosRMz+Dm700+tA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599655283-33092613.0_1599655392337_0.994768006407414"},"_hasShrinkwrap":false},"2.9.0":{"name":"@xdn/prefetch","version":"2.9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4JpHhw1icWKShAnslQ4VxdnRpyRJozCaPYjAbvyTWvlPk6t3sdpbFeKjuxX9ZD0pnBMh4GQwYlkOvC+BqcefdA==","shasum":"399708a80dd08c432983d4e6245dd780856053b5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.0.tgz","fileCount":56,"unpackedSize":104358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWM5RCRA9TVsSAnZWagAAhr0P/R9nzYpQ59Nw85IR9mE2\nDASiWXieY8cV8B/xamKFn7FW6gvVSur5JPSS57vDQ+LiSD7iMhSwIPbLk2iv\nRu9AOSPHIW8ie/GUMKLmJt5dqxi6Bfpr4uJY3vxXVBwIN6JyaObcYmmYFODF\nQ2UGuYxh82ltYf3KOCaC7Wg7DgG1trIGutokeuqyQ2YrnAUIMpqacc7v3+R/\nqEPYf+IMsiSLMo50cJlNs31TU9QHG+wI+N8ERrrIAblQjbTZW2RvCvsGtvNe\nzzUXlRQO2SeKc52aPMz4SB1PCxwiRCRfUugnCT+pnX/tf+PYlKKF3DMJZjA2\nkCa8uqa0A3onztuWUh3+aY0ERGdOiUfWgM93bUBorvuPqmq1tcNe/ujT2Ys3\nPLrBbYmvJp8W8eK714B0Qokqj3ynMyJeFW1Umi9h/OlH7c9bLrKbDHR+j4hC\nWI2ZmBiWZRdIetdhc6O7fYhKjxIyu1wSD+K6EWsczD/iU1K4uEIv/kWRZWw4\n3VQYQ9kmJlSvwgxISpTzoZBJCcDHsoziu5GH/Ca3knRsgnMjhfM8RY0+uUGs\nXyP3EYeByMpLwazzbx6UQsO9sPlQ+qsQKrkkMmU6OmVxBcMmfG8Pr5sFR2lK\nDBbPs79E82RhAcgReTG4356h7ot0wYQM3BbrJgtOkEbi109eKJ/7x3GZbL+j\np1RA\r\n=jSRh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG5TFEGsBhw/CZyxfcZTtCWmuLQBK49qhhrZ1HISiIWXAiBQVe9xwbQYYjBKonCAN+U7m8JMx6qnFmUjTEsaDGhPFQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.0_1599655504622_0.6169486531428474"},"_hasShrinkwrap":false},"2.9.1-next-1599655436-11d4ee6a.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599655436-11d4ee6a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599655436-11d4ee6a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599655436-11d4ee6a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qkzPsUVUs4EBnQTS1IadoaAgiwCw/C0gJ4rkb3oMtyClWcDU+9WVEF08NDMgfeGdipZYeEMefgAwQ4jhgC17rg==","shasum":"11e7c6e2899f99d9f12d8a35f7a401b790394fb9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599655436-11d4ee6a.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWM5yCRA9TVsSAnZWagAAI0IP/j1Y51mid8vtVF4qtl/W\nRWLn4xa7mwCnWIW9K71Sfu8Bnk6Ewnw7Vuox3wJb+s70loSJiw2AGAE7ca4q\nSpHPLjgRk4CJyCnn3raHmCiMXaJ6LdGWzaPV7P8fGC7yPcr2HkVa38pC56IU\niedTpvtA+xpE2C63rfT57LPhfcM1F1Fs+fjTeo00ciLAnOdYwXNhT9zg96Hf\nK/c4Cj/YqstR3MSEkSuy66NoczcyIH4SKEWGLBnoYTnjjfC9QbNPOqSlsNYi\nw12WGTqEUx7LMp0XWovKRRZIGdqQiHLE3nr1vozy2Y1J3XFdV4ObQSDSYSTT\n1/EcaIIl5U4T3a2j/20LwJyyNDjTMtwTNfVmQ2eH/r57EpfZ5crZORuCMsi9\nrR046n3g1XtneDKedIax6RTKkhZRM6ZeKzQyPChBu3tQMO5QhTX+L2PmKWer\nGaSHo431eTsRT6Vs/2Xap/1lhuenCFkk2Nevf97stw4shoDCcYy+B3f9qM28\nPbKLI7bk0lFbW9hykoRL6UDY6qaE0az/DLn9jxhggMFbNXD6C7RhCduOOAO7\nvMV/DHmZn62O0bxnHPdnKZ25DxHvjoowjwBD8+UxE7puRt8Nrvj5xsmkLIcx\nnqGC+jG9OfjrRbis0zgD7QwiDY22mhEYbwOX2L+yIMcGS4o++PF5YLvFwzjE\nMn44\r\n=KzIZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFCjXOnYHIIEjI50w5CjknKZ6RPgzuQJOlRMlTX4tYKDAiEAtJKY1hht2KFrekKmWW2qrjUJRh0HsFS98bm9jz0SiUs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599655436-11d4ee6a.0_1599655538354_0.19425642559775236"},"_hasShrinkwrap":false},"2.9.1-next-1599656513-4a7dacca.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599656513-4a7dacca.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599656513-4a7dacca.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599656513-4a7dacca.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MoXqSSpN85Ry8QiSuYxdnCOnX+Z6IBGRUKD4aIyOWNfkMKNRdNyEqdkddP+LxLiGG/rxpGeyeZNcEfSevQXdyw==","shasum":"70575c5717d8238d500b50d54612aed363303337","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599656513-4a7dacca.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWNKkCRA9TVsSAnZWagAAKAwQAJwGisKFiJMOiM9iRJF6\nXTrxIo036bkIk/XncxikqCGDuMS+c3k5C/UKpFgAl8CjgCIZ9QcCXfN95SXt\naYGeOac0SE4t2lH450fmQXeoIqWBlCujYi/iG5q2YciMBRa7fHzCMcNW7SL/\n6QFjvWV55Wq6zMbKZ5TH5+eGFrtuSDLwyxU3MufNmjoQwdis3bwzJXwn2hXr\nDzoLIGZ0TjlZfgnx7WskY7KqA5k8Uk9FqyOZPhvzqpH8EYONMe+dcXu172dl\nZX/Gb/6bAfrQInLMoOno+kka8cnjAeeiahwR2d8ZCAmQvVCQTrweMkUr7cjf\nn4rrwvcXWbP9l0r7O2ceB2ELD/rGWt3xsKDAMgqqx7v6R6xbKb9ui8KNV3gL\nJQA+tfevcc7CBMC6FZxKJ4wY6k1dBZaZjoteJmleSuT+GJtvt6MR74vIScXp\nj7WzcIBmHkz8vTj9X8dnzXSASFswgqb9GGS2kSsPxexcQ9r9Y9ckfG7sI4JE\n+OEhiVn0+e0S3qtXgjSEfp3hT49Q+7rn2nNKEh9HL6XS14Kjl9ZK/J630vSc\nVJvmat8QfSLZrPzmCEShkWfd50wR/udMphSxK8xta9uDOLW4Yqf7feYQg8qK\ndIyE+ShFUE0qYYhfxm9YGZPlSF+k5MI4cR424/e9iUCGxyqV+G60PsPPyFMd\ntUJ0\r\n=1FX1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDM4MfX5wPiuOATQxhcnwO7ozfKp9yi8sS0dBtNkS0dzAIhAK09ObhMtCMUUP4PgtjQroHYiSZfsTPu2PK78wOn/2kc"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599656513-4a7dacca.0_1599656611772_0.2600693114665069"},"_hasShrinkwrap":false},"2.9.1-next-1599658987-9a38884f.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599658987-9a38884f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599658987-9a38884f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599658987-9a38884f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DBLUGundWsB9skfKuC/3Rwwgnqqem7kNq21ebO0NQHxJNmeQkdnyfttFf5qW8rBIDgc2TGev6n7Pbj/SdytrZA==","shasum":"743745646e7b0e39269c08c70dca2608d1db1a12","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599658987-9a38884f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWNxnCRA9TVsSAnZWagAAV8cP/3SR2ro9pDElgpiHfJp1\nVgFMYbKSl5Pyx8yrgm95OxQZNUNp/1ob3r+5s+icF1ik/Av2HDR8Gkf39prz\nSuOryj5Ap493oYBMfKm9q+NzalgLMJovhp5oJriECK6TDatxwzAwbi/+dF/X\nwpKa7vxzNbl1sv/7IKmGGl6/6OEkG77bN1shbrlx0nynT+lQzEuZd8BxfpkT\n4KQGKK224Xp8cHEhYbLya2yQNWaWDmYjAgibdT48bxK9lzwamyHupdQIWrht\n1z8LGu9e4ejgBfv5XkcYoRT0tKsjEVzY0T3/GVTMZmAMKcVCmfdD5ZJ8Re00\nQIit03V4ld+dIJaMX7TKGnd3RQLELGvDzfCiDE8ZzbTMKGmmjJmq0MyiTQjM\nKoCkYJYktCJS2QCTd+J2NIzjPXv0d8qm2cN2GJzT8OmH0d4+dmTdMHfefxZd\nhIeyz55B4VsaHHU7yMTaMx45VD0YGouTWCXi4M/i/exNEMJgd9ty15wsxwtV\nBtkMwqqeqfHBhVWwWMcESftq2vcthX188w8YTL3HJox27SvNb0bQrLy6+jOI\nY0G5fmPUhqQwD4SBLGPu4ADLBqRoaDaL/Rm54bzYcw7LlNG/CuaNecwla9pJ\nhEGM55iF9irY4vkEEoXogL/omumqYTMHlrDzM/iO3a/CKhZSAIYKbBkEZYWe\nAF9H\r\n=Vv7G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFfCMCag3ytXcnxpG+ftxQWjvTcgPalQ8sCpcdbA8nUWAiA2e7jY2VhS2b8oM/ZEFd4qX2MyuWcGoAceOGOEfJPhgw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599658987-9a38884f.0_1599659111397_0.7132997312804172"},"_hasShrinkwrap":false},"2.9.1-next-1599662897-0a4fd79a.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599662897-0a4fd79a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599662897-0a4fd79a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599662897-0a4fd79a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HhKa1/zFyskrH2iEs/deBsn8k+MgLg/QWws21C57v3C+QpW3JGiwJbd2HraGjvSxd593sLXVmpbk4MQ19DYyAw==","shasum":"ff832a616faf6588940be8c92b5b948156420d24","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599662897-0a4fd79a.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWOujCRA9TVsSAnZWagAARBkP/0wPQDwQQlJoJIkzCjgI\n397vLFL3ddiuXsgBLL5K4ygI+/tJ8RKFdYARTZiiTeYVZpMDVuRyF0EPQ7TQ\nrWELIyi9N5Mh0KmQTJl7VLjdZIyoy/AzO5WFr4l/6P8gY4Uzx918kQjbQaFY\nbZWBfx27hSn4SgzXw3NEZ6Qq/l093PCRDXLiLsc6uP1t649w+Es9Be71AJey\n6m1dHSIf+9YyH3O9gXt/U9U8hGlCwR2mDp4aP1nUlJ2bfnZjS9xe51lXK6tk\nqxF+AR3V2m8BL38JYXcxVT0vpWCPd38VnOMAyg+mFTXZzGlTuPnawzD97JTv\ny6aOudDo32dYOEIElFAee6VqWy7h3Z6PLgAcnVK35oZgSR8pGmmUNiLAQ8HY\ndgoHVqKQ3xgm+CrddzymPu6+Ff8sDqWtzeVJQO0Cd1m5L7gNh44NN7a29Z09\nZEoeuLc4WL77AK7Fdrhe3ItHUeSwPvJ/XnrNCif17E3jqWd9p2tADKcn5v7W\nqx+46LQbhUB0KZjcilm/YlbEbPLnGz87s3o6EivOwnEc3K+j3QriwkSYzJ3u\nRKdyh+Af32hDzBdNdGATFdAbsz/uUb8Vv0peHSJS+UkXTwzpsPjb7PsKTTww\nJCH9aRdxWZpJCEmsxCNW9rn3VIvJNrPrH+d7JyZWRLIiYeMWU4TeOV3S3Tl6\nIRwv\r\n=SuJ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGGt0mO5yQ+ck5+rn8nEGdx/2Lyn35WJ48ePjhIR4X7oAiEAwc7MuDgsJWYwYlxxALyVphChy3yyKWMkTJ6gYMRkZao="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599662897-0a4fd79a.0_1599663011162_0.32966861429833294"},"_hasShrinkwrap":false},"2.9.1-next-1599664957-33cc07c0.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599664957-33cc07c0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599664957-33cc07c0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599664957-33cc07c0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xAFWCwJuWLWFXyvaz0GlrP7Qv4wFWNWI9Kivv4Fc2kb7UhuovrDLTVqCnBqYur+CQPMTUbJy9QploUO+zSKtvQ==","shasum":"ae7654d06f1f13a1a78a15930fda0a7c0a5fcd62","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599664957-33cc07c0.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWPO9CRA9TVsSAnZWagAAzCIQAKEfg/vZV3i68Qo8eoVj\nLEtB1pABxbrxdmFpDPBr0pRxGFSsOvin7dFesezKnESyJfQxhG59j80AxKeA\nTGORFJMJDDQ6JBkIrbULcGU/SDwOFPy1AT1grkiEEu5no9ImL6iGdsnTiCmh\nxNqxXEFnxL65hiDgpAbkCkLDhMM0KJThp0KDLeHB07TEDyBqNUkNFPmXSC4u\n+Ju4C/vyPXk6kgzEfYnjomyBtI0A8KbTvMc42ZAqCBYhKb9SEltM/mJJYjQa\n5NMQx3mCW7lRb8VIhnRJq9fV0dGO/9H2f7wiEGONDkiaCgJ/mjEtVWTihbly\nSw5tl30qR+bJtzCStL4Okg3fTZSonmXA2mX+I8atHJnhmYm96gXDOH/tqr6C\ndupFj56rYAHadEaF95kYUxUi7ZUqZ7+LebMa1DxsX14iLNoCy6Bcp7y08xEW\nEqCKyFkaaxWJj5OJoZu8FsRIb8ghvW5MwlpCUt+4LOozCQP84+NcOkA5qsbB\nvfQfYnAntQ4QpT+RfVnHJCP2ontPue9UME8jqq8qyWyP2beVlmR3Rt23HHJF\nAAz+4K0wZyrVEMsRPK20epjXni8ppf/MEn99nK2xkateO4ULQQqwA26jhGKa\nGYgH68rT/TIyALVYtIQaS6pUoXUEOrUHAN+Oll12euGJaC3qXfO3kGxGyvfl\ny2nt\r\n=UCvr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFsn8hRvrc62lyyoE8jR2UArXZrrXkgTRk8RPQfFqC/LAiA2OFkoTY/WQSz69Id5xTXdBPTktWqc/mxt/wMpGOzOeQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599664957-33cc07c0.0_1599665084746_0.04167594276973441"},"_hasShrinkwrap":false},"2.9.1-next-1599668222-3cddf85e.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599668222-3cddf85e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599668222-3cddf85e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599668222-3cddf85e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Y6IL3T5pG2Nt/HsBdG9Wdq2CRYpnGYLMkyPemCw/ac5kOnP7Y8pRSntpp+vdrxQS4+M9O9kEIHR+V6SF83Spmg==","shasum":"e2cd572d658dafa2dfc6c2e60bbb95c7b8aac672","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599668222-3cddf85e.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWQBqCRA9TVsSAnZWagAApvUP/iEFE9HOc6ABJIpXm0sJ\nvx8pjEaSQi3uFlKBIEs7OknLDn8vCjEr+i3+GtCr/grUYeIFLrgUGwvCPHEK\n8cQvGpUo1KsxB4r95ncE84vWgvC2GlDrW38UggYFwNQyhGAkLHNktMnQOQ9R\nxH/1LOUrS87MnL358IEFQCeLhFwJr4boa1PMttWRS6bydRLdz6BhP1ZiJYfe\nR01KGkpoNsmf9fatRkNtYscSuQgK53xEXPcY0NrYz4HZ1kDPDGDSVL1LrIoF\ni79s8v5EUASftkGeeMQke+KX281l5L4X4vGv4tY0bczf+sR9k3uDQwPUNF3j\nUcVfzAZoF0TUBQaO1nbpeHGiHydNXVlYnMAnEOXLnliVLzYZKrvrdWC3Z0py\n2n5XBSEBN4gh/VdCc5+FHM5LND4f/x6vPBjwQAz3JoMFc1OeTYNPBY/DF68P\nIJK1JnY+N5DWiNm13sGpVZjL9e1kUkmVzyOR0BLcXM7KyGOXMIRZ9XmdOvGn\nQuTDMbOdbfhsATxWmrsZZ4k/ITxJZmW3gLU1WEspTSTiiEe1bxP/gaRDqjwB\n6/bRcObCRbgNjgRPIgJ3NEheyeoQZOrbOFTfFntOfpfJn//TLoeLnXWt1QzN\nPq8ihry80BEs6ZiGXJkNIRY7ToWReGCvNxgNvCSNmeF6MQ0KmKenW7q5OmjE\nrOLZ\r\n=lq+9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsTRMiX2wbZTUlZW9g51Z4K5QCRSYJd+KL6ZB5S2ma+wIgF0FiDiv5tNilvYFMPYSuqFR6HWIDvODOXWD/3K/vWwg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599668222-3cddf85e.0_1599668330378_0.37592269818795376"},"_hasShrinkwrap":false},"2.9.1-next-1599669161-30af407a.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599669161-30af407a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599669161-30af407a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599669161-30af407a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AOqsBMaZjmNiUwUf5O7HDjo0kxsudmHHJAJrCRpbk59uzUlYB3J+KfpBIZYD0QdgdNaM2eqL23oumzejSFWZkQ==","shasum":"d3d9b9875eb796e20722e512fa0851eaea5b93fc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599669161-30af407a.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWQQlCRA9TVsSAnZWagAAHGUP/0J/s9EvfhNxG9hDV+iA\nj7C+FKhFAZgZ/sFRULaZ9pB1pu8EXXzl4RgElvauClu+9nu1YnDbMRtbxjLR\nr4tjdve0ChiHh6VPQ9VGvnYUF+P+jg2NP6wH0Qxsr4bf/Tv+clK2ln7USSoW\noGx/DqV+F0HrZPG4hlgXpQn0cLYFe2bR8SJH0RNtH+D+D6y+wTDzBt9ga9xo\n5IEURGV5SD6zAGOIR0oOwmzp8zZRiVA3PQhRQWXhxPG4EduK2rbJkOlNJWnA\nEKJQttnkmjro7sm8avfetX2KAB0lWa5oXS0kWWaCMuZHAgM4PypBtobt/Yct\neRXLQrCBDeoJkeZx20ob43FpXEQBQl4MBa6EsCMhfPz6GjG+Qb4pRWQpHSSs\nVJE2QuH6Gjyd+o1em5KyKMFZHWjE/IDt1QqCTGIa7JqlH3MeuHhiW5n8hl/t\nir1FruOBt09IqC7WRYgBUfLOw9P9HRbyhAW511GgEKCHrvtRo90qsFgfispf\nJVdex87n1UkF1jiiFYFdbhr3HPxL/dVqhiWX9xUWwoaRzgllX4iRcOUywTuO\nxIgTohDfZ1dJQVX6C0n4lCYmXvo0cNUjYOrCbFw62l4eiFwH+11a57Zn9DE4\nSqDOm1rNdbXs0m/S/U/iHtqNqu/9OimX+QW/UFusM0L9Ahy4ByI15QlH7082\nUCAy\r\n=RFvI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICec/qzxU3IWae1gQPoe9g8+2acEFMm8Evr5HE7hKxgFAiEA9tQ2T1aGWOpgqgjFLTPnOnsRipCpXd16nvaa9vDxnsk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599669161-30af407a.0_1599669285234_0.3804781132145949"},"_hasShrinkwrap":false},"2.9.1-next-1599669599-6ebda3ab.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599669599-6ebda3ab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599669599-6ebda3ab.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599669599-6ebda3ab.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5dWE9fhBwHf00ZMZu/Gmq6eUNzngMv60I0xOWgtQ0Y6MwRWcs2tkWwr4woAVol7fdZFwyBzCQGEtQXmrRbt59w==","shasum":"8e4a565b6062bde5958e44f123e4e01b622429dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599669599-6ebda3ab.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWQXGCRA9TVsSAnZWagAAA8UP/3oq+EKlKwcrhq+0G9/O\n7vJYWoROxwGIIrvjpjIkz4iR75U+JY2l0+Ywid6MgWTqGU6+QlpGtMIxtcya\n2+Xsaa21w6fF2L0lty0bpnS0beyPn2uKsHqVASk/sKdCa+qSSzbUpi7MCz6K\nrRjzkZUZU+h4ghLC90DCtbju8mUyH9sz2wlzQdrWJrmq2B+FBkXFuNR5f7qs\nhsf0xEaGWrcTNZuKHIvJ6XY3yMD/9P4UdgX6uOVJHWs8WapisSyOAoiRoVHv\nSKupLWYv9J7M8AUr0e7Su93E0codbjVDlJ0LGqWDnl/WS217BKrBiazVm0Jr\nGiqbK0Oxye+4b3pjhQDmHu/wKJjQyDNQK22pys9dHGTmyG2zCqZttZcs/LCx\nwVZ6vLUa14f4koUOLkfPqRLudSGbwo3E8gIoBBUph4DTgcsXAEY4mZgVIdOT\nT/MEROxgDOJHewGD/t0cLfMWSTfurg0NVSU7SF+CHnuC3nDOMU+R7CZPpl61\nT3GtfdaVVWV0ZelqCGUN74scJtgkIrSQY9FyM283qHZR2EHjDmGwj4RRPZjG\nLxkLZur/TUTAobt94BdfYBv8KuWnYz1/4qsLRuXINVyxlI3ZM+0j037DOCgc\ni7nOO3MS08GnecfkkOwM+gwSWBg8SeLoF4hgquTo8MLdapzn6x7baKYAWMKK\nSe2r\r\n=ZziE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBO0kT4w3uKnIjy+Z61rOevv+muvk2GI/4WL0WwPAGLgIgcuV0bDcgz/QuXUQbwoG0vza60cflFQGhm3KgDplmZUY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599669599-6ebda3ab.0_1599669701610_0.11083128211349602"},"_hasShrinkwrap":false},"2.9.1-next-1599669727-df087a7f.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599669727-df087a7f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599669727-df087a7f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599669727-df087a7f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8nZBXFurcoRHIVpnSVwRX6VuzCtrE6ytuR3TAFwlRUTic8s6Q+3Kxn0FJa+NPUAC6gppwZ1s7x6ZzoOZ2z2Wfw==","shasum":"df0df5fb02e5c1182ca8d9bba307647f0c99e559","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599669727-df087a7f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWQZOCRA9TVsSAnZWagAA1wYP/3DDoAiNdrh8kmW+/SRM\neSPQbG1ya9f8KrEEd5fYCfGEfFq7wr0N3A2BB0rZaKAv4h4z8lWPewx2DdHB\n7q06ioGQaPV1kkvzxL2V1QYgT2Ey7rhiUGtVevm3FKUa61YuqgzpPo6YDU/6\n+5wlu3SGc6DynvMl/ISV+My0yzviMaEYFmP3YZKXfodjM+5ce10KOdKlgnza\nwT5/ZIrSiuiCC2YQhEPdpyk8otb1NmHaeAPTA3w95dWvYPkVRxhNmAw3OEHn\nf/VZR34XDfennAGbCj7ItmfE5eGD+dkuUaa1TpuiVCOgKfud2kcxTwGLECzu\nFXxLoYE2XrcD74OTDrmfwbkWoQ08MutsspjTuy1MKrIkaPNttDABwcUdTy7a\ngp8RQCJJLt+M8m0nZMcUoLbj/opdN6mTYIgqFx+mNd7pi6cMi2oBPag1/jtc\nsbuq4KPvCNhvvpLjGsO50/ZK/yV59AdeMDp+0nxweBos8KW3VJWNHBUhpny0\nlwxRZ8PKBj5dJy8pdQgIYjVVNRusr5h7jbNFl5CAz9XK9xFA/Chay6AgtSjL\n+9uLwxv+90bbq0qtreAzQI114wU7355uPSBTOdbxI7sj+t5Pcpr5IbOaqwgJ\nHJx0YAnzvPz7/kOSh2nxbrTCTV6jmxpuHqohjaMc/8SoAWys7DDKNDtck1XD\nm/7a\r\n=b4v1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDoclfIolx01B+57x+qV3uyA2uIsuXd1cHDS1EAUE2iOAiA5n6gcBlshNpet2CYexEHwamuyrAWqkXcOmBsvKh4gfQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599669727-df087a7f.0_1599669838146_0.987110225056044"},"_hasShrinkwrap":false},"2.9.1-next-1599674592-c5a3870c.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599674592-c5a3870c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599674592-c5a3870c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599674592-c5a3870c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KR3NoaA4P3t9Wp+ySoo4O+cRQMaGTPxDYdPHNwpFI8Bx7Q6L4Qk6v8YPj7d3IxXUeEjDjrqsYP8cn34H21XcMw==","shasum":"bd2c40247c0c4b29985c8d973723300c62503a7a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599674592-c5a3870c.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWRlNCRA9TVsSAnZWagAAQ7UP/jEjeJGb44nUYru4I6Py\n6Zv/4BcMgLUk0UvqVlKyo4lMJFXL2IV9yCAd85q71k2BxaZCvGsJGa6JuVTc\nhgMfVQiFiPJsGma7BE4NuxcDIyZbf58xhqFKr5nIfFTkDZOWtmU7BM6vrHoE\nGXk5F4vwJcx8H8F9jbqMwZx5T09HMhSfKGhgjzBbYmrnM4qYeJptQqEIEUSM\nnTRoloRBRtMKnk6yz1iP1I4UM0DUcMoveQ5yF6dz3AOu3pFFHOdLCJXrH5hD\nZtD8OfRwktcI3i3pssbttl4ygvGhbkSqaabtvPmzXp2KHn+Uw+tYAKIlPild\nq0IylUHU2q5dozMjxesCe8j8nIEeigRnaVHKIUzEWOhzpgi0Azft8O8JEp9h\nGXiDUHRg5t9sgpkJQeYiNCZFsgg2ydHydN2rj1zrvu+K+ROO6JRYpyUiS3rB\nQEuNyy564yQYxzdj1ddXntBiyYqkjIiv6cpqyOmN+H4eX9Af4hf4B8pW8PPf\nLj925Qz00TUScWM+8zKmEYgV/xxMg/DP6e5cR6g1itK0Zj7TouZiKNtDEL7W\nHAga5LlqlKhK5cq0U7yJ1JtZE9jdJhnb8CxxGqXM2BBJmh56GAezeeF+uwxU\nMzN+Vh12B4t74kAQ5v3ia9GnraWvOiBUgOkVLglLTaZvN1ZMNO3zqP0ajt0F\nrbI/\r\n=Ji3L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCoy65oaPyznOS9f7iX3Nc7FivPtS1hXhNNntu8TSNhwIhAMKcPrfCB5ezUv1dG0sh8H7O65j6cIIK2tAXXMTRtVGn"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599674592-c5a3870c.0_1599674701173_0.18073149488731466"},"_hasShrinkwrap":false},"2.9.1-next-1599674981-f8546866.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599674981-f8546866.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599674981-f8546866.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599674981-f8546866.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/pSv02qo6RU6PD8e5VjxSAJ0FwYtOeOHg1b1fJh8f7S0kDknLIHmYqbvm0k3QqcvguPBnpUwZhBIxfQAVR+0kA==","shasum":"4eb3dc0c116a22961be890f1efbe1e95340c83fe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599674981-f8546866.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWRrWCRA9TVsSAnZWagAAUV8P/jPR0SRiFNfMdgcNItgw\nEs4zUhTjV4u3G2kOz5hP2t257HKV/gjps2T7fzrLnz15baj8tTQwbsimmntO\ncMaVf5Hi9FNjiymnpq+5rQaoR58kYqLnUq7pa67xVsYRMJQZrgYruI/bOI0G\nHlISbxwmqdkX+8kpwfHGLuStYZCfx5XH6TdAYcRd4VCx5w8ocrQdA3zR4a4Z\nNm2w3LDnA6uRxIDCsJdAoSmPQu9Ia96fw+d0MZh1bZcwaxJXRI1C0QLQmXqq\nY2iNU5+ewBg0EUnNPLNChbLNw6yM8d64a4R2imOUQC2ao8BiBpBSEnH6H9mo\nWVITBM6OM6suhhlVpAwNomfI25LriXvEBrKYG8d3AiK580wCWGZwTDutnL6X\naBOYGzhXc9Nsk8Zv7KnxHmjrovlT/trzXP0eFkdhB85sywcngkvFOETJ1MVU\nb+/PN26GXZpcw1Hl/05ouij2OfIfL8MMkYfR7+/2AlQqxSt+XmmlVQGF9zyA\nd6Ffyme5VfAcIEukhFoapfaaO6fF4gHBJnMa4ooJZdB+R/fGPgjNoufLhLcH\nX1++2xIPUvAmT15btUdl4+bvnlmlSuQqcKIROgxsA8UpVT8i7BLkN3m6O6f2\n7WsjuQyKueY2xR7iTarPvplpreVdHQDqDhbCW3QvtDLzfI4H212q4+PoYRGm\n2ExB\r\n=t8eK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlWaV6WFKGq2GwbhAfJ5LqroMbt9vu6rnt55+WOKAJIgIgag4l87RqqFcWQ0OvFobBhJbaDo0wpYT8UWa2mXGbSxA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599674981-f8546866.0_1599675094277_0.706742559380986"},"_hasShrinkwrap":false},"2.9.1-next-1599730094-e41c980c.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599730094-e41c980c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599730094-e41c980c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599730094-e41c980c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-W7J2v/Zfk5G8alc6I81G0sj8D2gE93uc8O9Wk9esQar8vcdGPY2pmNp+42Xe9iXVyZBgkn3t1nsOyfycUWVC5A==","shasum":"63dcb5be3d0713093273ee3be5f0db71befdfcd3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599730094-e41c980c.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWfIkCRA9TVsSAnZWagAAmgsQAJ4MzjmwePnVrhmqNASu\nOXaKBaxq/0Ty9oxWOLqzKdQ7+VKy2vUJtmW/9iR10Ym4bmuuSZxKxHlhH1ZS\nt0+uy0VqbEOSYNJhh53bxG1sKN2V4yULA5y99tbCBCVSOAuOIg5K6wJ9bmwt\nEdalaGMblIhzyYJyVQI5hf3zyoLIjZf+sFuyChJUfH5V1AmxCcYeQtGVANnx\nSjlWLEDdtlHZ9uPY80ISA7HLvoXK7JHsL/6YzDuRrEKsKkISM3O6uCBo0bmb\n0cu5jGfOijfe0L3DLC/mv7otx76ruos3nWWl2k68khosugUzK2fl8zaqVFsI\nbSmnqSqEBjcu+jiTjSgKbRsoas+qMLZD1v6c/4EnsgW+I5fadw1cWP3aqden\nu/UBhnirJ487Rl3Lz4cgMmRDvw9FW2cx6LZNW9p1VSW+9q1mgaiTWsq0jPFd\n8XwU8n0yRv4Ec/KRNmOnolIu5lBAZedXXvyUhL8lV2GU0fmdJFjYIcwaLYFI\n6hoF/yLUuCroeofBstxZRfrCwI5omhM+7qMDQdUIGP0hMtXZ+RukvVCgw3cJ\n62d5Ts08Co/lWyFch9uEqWfq9oO2ifWjwoVlQcF2mQ5B7ed3rny2e/U5ocrf\n/Ve9vTEVhaSZPNgs/L55g34SD/MgxHMpoP2ijvpxwtL6uuJetK16ui5J2c+l\nM1SO\r\n=GvbW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfgvRrI11miNC36sy+Le++nrJGzCyp4MZlhAKfnGOd+AIgVNIJFsrMwtMe6tFvIwcycN5rBCla7iWgd1GjU3KCn4w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599730094-e41c980c.0_1599730211533_0.7316106733355443"},"_hasShrinkwrap":false},"2.9.1-next-1599741182-4ed8514c.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599741182-4ed8514c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599741182-4ed8514c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599741182-4ed8514c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-g+bTSEf1pHoPLT+Ee2BnNWW8/+RN2LGwWUH0yG+9gRMQwLRfpNFDEv7+TmTcIuTousrLmVUExgQ+d1i2aY9DGQ==","shasum":"fa26d6ac9e34435c8327f94d58dc4cd58623b9db","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599741182-4ed8514c.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWh1kCRA9TVsSAnZWagAAJLkQAI08VgzEhN4oxR7LTuQX\nhW0UO+8TIAkuqnUE69hRdVAAAH2XPejyISTeHjsqPax9To4OOcEFMqSEGnA0\nBZYLpUvmzVMnEbZfXZCwzqMNDNptBtJ+Lj2LgnqfKnClGAGnmuhkYAv+TV7g\nVogTv3V+A2Mw66dni10KWSX6creoyUot6XAOLLzvMTNo4InbyGazgKgsQjtk\nKA5s5ANw5zYJpvGMNN8TObIs53zPS4+nx2Hqa/h+Xat4HWYqAKA0N1gHbHLH\nQ7kseOQvCBkfk8CZiwOrlvDHhf+u5OW7Zm6t1MCn5jCmfOd8RYFPZp8wM4t6\n+xv3dIR0TI4XZB9iEkqmd9UA5oGrCMRwfioc9a0ARVvl7vDmyZLLxjwpBevF\ntLR6QnO2rhtJcIJmrAsqcOs4mHtrOiN2BAWrJ6+IPqJAl4hhKyWVM2YE/1bX\n3q08fYdvMMzxwqRJ0CcB3H0K1WDU1uCZvLeaaQez/5xMwW9GcSvIraAbFtay\ny2qsoM4R+eg0QJJZw4cfCHBZA1bnTYUMyxCC9E0bhFNAlDnjGggqIKgiTm76\nx1dvb4xOjF7Opi0erlkGbsbkdHPu6Z71P7KRcLP7wyYd0PzvVmeVQWf9A839\naxO+/4GpeJgVqEm2A2LNzYzsMZzN4bUp9+POeq6hXfm/UfVbu7ip7SMJPDtQ\n3fsl\r\n=8mF4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRXn6YT4/DzwxTZE6eIXg5KCA0Dw8OED12I+0kX7aAUwIgKzT8P11Q/uZvnyMbjLla6sqHLOwm6DfPh0h5MVKG3es="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599741182-4ed8514c.0_1599741284093_0.5097659214460011"},"_hasShrinkwrap":false},"2.9.1-next-1599741852-3675eeeb.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599741852-3675eeeb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599741852-3675eeeb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599741852-3675eeeb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8LioZq+X/MPdY6qhunhtDQOEUYzVX//CKBLSByY7gW6Gw6snrmEc5ThCNC44gh5c5J2M/s6JZY83+tukg1SIsQ==","shasum":"12ac89823eb7961921c4a14337b5998ddc37b0c3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599741852-3675eeeb.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWiABCRA9TVsSAnZWagAAIZAP/2fiXHp3M0I06xfN00bj\nvrcw9CBvQCywhu8PV6vIgjRkKqnyFdX2H5f+Kg2/8w9uBtIdJgOFplorI6e9\npoWvXVGmzirqX45muw0qz8ya5vl3ZPW+CNP5MMFMWqRkzrFtj6vMdXdBCPxb\nYnSxoiydocdNe3vOayGaLc4j8OdzeAGQuINkdLwtrMlq4705UNDh0Hcc1OFw\njIVioq/dJ0BukQbplJD2jYMlFmPyRBChCThRbkjpTA6u5OnTuzDp3UKyOa/o\nDrpCNO953hQTWF0eQXSVHZ2bnFwbvjPBpMf3EMVG7qEm2CsasUVTSXv/jTmt\noRfdkjFc3AvCNFI3pUD8xz9UTPJb5UK/ZD8kBsvzDULn8ls8uDJ0wxEKagw0\nCHfxnR+f5FBaU9iFe6SlPCM6UL0UdLFgSrB8GDysUAuGDh1Hhvl0SDig55SU\nzxPHkwirXrwLZmfLYdUjnzVL7fLuwgQ2e5oZ2a8BJNzokrAH+UFxZxb/4d+6\nqfKZjmrYq35o7/SYytGofNYukBQaxLw7GTI2Tu/UoSaiyG+ZNovukGlOsdit\nYrP0g5le0wIsjTqHZCsQ729UApC0h5rtJIfCpMrX23skPL1y8Zd5gbt5kq+Q\ndOxp9ci1+WPO1GWCdHe/4aKgT7PBgXEXxgwEANphTTci25E9fCjrnaIGlRRJ\nHZ4S\r\n=WUEC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC75ggcKfCtziu9NFCOi3bCdemOp1rT4499dsP1pD6hYwIgUAa7InFTpdyvEXBDEwy/vP1vTnaDw1Q678oyY+Ny7EM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599741852-3675eeeb.0_1599741953229_0.8912513312553889"},"_hasShrinkwrap":false},"2.9.1-next-1599741887-6d1e4700.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599741887-6d1e4700.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599741887-6d1e4700.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599741887-6d1e4700.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qgYYk7MqSq/Z+jMdPWWUuziT/EtUURYRG4YmDmER1qB7g9veKb8j80bWd2OfKspcHhGS/QrqRimqOczMOA2NaQ==","shasum":"f5711bd772e81194093d49cf7f72613d6d7ab9c4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599741887-6d1e4700.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWiAxCRA9TVsSAnZWagAAJB4P/RFr9UnAHxb7mfebMOij\nFCUbAJWOBDVN7wGfIaUeqVCiQ5jbzcDe12OhFvHLOjrhxc2Ub02mC61Wtzzp\nZ/5BXAs6Kcu5xLlq51Ty2XYTzYzzQI4HAo+ZzCCnbvuafqqEWCLjGyaBaJMa\nzBwz45+g+fioB9/jElWCeFFmV5G09LeZ19Cl/Or1ZfGuyq6gLPVOWQk9B/sX\nnrKfp5RmB7nxVq3CJxNYvMMBQHIT/T6jtCYYpC07riYHTS6f2cIBWoKLwu1e\nFJzSSKGGrVbLrILJrAqcXVQR1OQKLZeCfouKPQjuJngQWZnoItJyYoEtg0vF\nOHO6rNT3P1EK/Ad8SLicmX4QnwqF7L/MZRuoW0B9k/dSYWI8L29OAr3oSaYU\niW1SQb0/ujgvdPa8EgXLjKT5OqOxySkHb9+1FyjEI5UcjOBPqiNhdDGWrddt\nJEQ6fZPCzigUm2/5BBA/7OLDI2mZE99ELfK6C0UrHuMVsDmWE/BEe2OhtSat\nI22vk7R6j9t6WSC9qqZgCgyqwjvhXvfWNYdXGWr2gS109ECAXizV+FnY+Xl9\n5hHJNdUclTVITnR9ErSUl5VkQ4q+QNAZbWP7TrbYq1BqGMhOon9YniGzn4c2\nUvpKn2v6cJObK0e8Oqc3W24AGHS+bnm87TnIdhCvOovmJanytGL9CqoCto6Y\n+03L\r\n=n6+L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSKuxTW5H31AS9HX4GAlo9xI7kKcpn9dhuD5Hi5pOl1wIgJjTNHrl1YxqnWHt0Imb6y42mdhPx7pIFKjurNQzzFZQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599741887-6d1e4700.0_1599742001473_0.37858286395176743"},"_hasShrinkwrap":false},"2.9.1-next-1599743914-66698bd0.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599743914-66698bd0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599743914-66698bd0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599743914-66698bd0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Ptj0wOCLsdKcWFyyZipSU6SCN+8HPbyRpKLNeFtAS+T1iBNddDVd2UhbvyUlFrg3a2R3IhvmAHEssUplNxityQ==","shasum":"9bab5ef004bea1fc78d8f032bcc5e66bb65faa9f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599743914-66698bd0.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWigYCRA9TVsSAnZWagAA51oP/R0r1G6z0N1yfoke4DsZ\ngAKbMsQWJ1Vl3dqwtUpSuZclo55W4ZA/tWKvXrvXhrZh0UE7hjJc6sjZfEuJ\nvEJSuIYB7srLmWx0fKQnwD8lOmLCecdiSVG7CwlJA0BwjmJ/sOC+23hpQ2IN\nhDsqXyXiH8lkcYGhckaXtKIVMvt/AMCvqrESWRCX3CvQgLZ1xEdXE8jF1pIk\n1suntABkVJKQkMheutfa1wa4NqqbTPyZRiWCiLp9wj+feGR87o2EnbA4mpNc\nfRhl5T2YB7Xlo15bZawZrvu/9p9BarrHOU4jjgpxYjyT2OaRwB33Rl/RXyMr\nBMNE3MDewRd7XfJBr5UM+imwfb3XLkBN53Y1cgDbp+9/zj30sQhzzaSslyjQ\nN4sPbGnSCPAuOdY2Dr8Oz6XWg/41Nk9H6kNvMJ6pmIva3Z2tQ7TZZW4lww0g\ng7J//zPzLMrC0M31HLnz/BLhoxUp1GIsV7TdpzbsLyLzgOwWh+nEO8k9EMIE\nH5WnVju/P4/E9NdJV+mkzC5NMNXO4rFSawBbBr31/DDsDBIgOzquVFvINI+9\nSebGI9RIYf9LpVlCk4AuVlTNrs8varryB883S0oupjalu/GSgWj+NxitNZDl\nqrbgEzHvWJX3gHBpoMpAFH7BVUq4d+io6iSbJ9EF65FC3OxyX5YVG1TsEg88\n3lGE\r\n=jWSe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAq76vJ6MMzmVI+20VBU7e6veGBsjepAu+BQ5Efp11TOAiEAug9KTvj6PDH34JWCHobU2r7T9IZ53ukFv2hVGD5cjBU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599743914-66698bd0.0_1599744024285_0.881496191105203"},"_hasShrinkwrap":false},"2.9.1-next-1599744079-e5c57189.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599744079-e5c57189.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599744079-e5c57189.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599744079-e5c57189.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NG7fJ/4FuBgT39MDZyco+PbOogKoxSrPodl3L+7zNYannBeRxjFM5Ycogx/MoqWYva8KL7Fhdc19eGfRZJ2Z4Q==","shasum":"65e0ea51a18831c59585149be66ac4b01b45900e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599744079-e5c57189.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWiizCRA9TVsSAnZWagAAa1UP/iPxUHvxArWHhUyfFyDr\nUNT75DDn9ERftrDZW4YoRn0xGXzw08nswpK00BCFs+ijGTm6D04ePAjqBmHc\nXhpXdIJxhcSVaxwjAuz3HTptSC4Si6Y8oLWVm402JxbuRlHxczzD7CF/Howi\ni4HhRxVl0RlcDqAq+2UiZWU/hkdwcJzx5ZjK09n6gBKlqf0WqEvv0KfkSc8O\n3pOaIJBeVPngYwrxFBRuXyr/spqz7zB9yB+VSyj3cEj3Dx+JfH+6PhpJQOWB\n8wOC0wCUzaEYLjl5SKRvxW8j/5QqzOdR3j29gU5yyN+Dv+zjiPXN/3d/uy8A\nGYb80uqI/CQtFS5MXXL7iAylu2ebbfAJWgrthWNCoTGbp7EFqwhPbXHGhAiH\n6hgL3Ajq2ISEkXIng3CKMLAiQXvTk6E6yuMT+d+DQGZGja57PhPAjxrs2QV3\nrSrDvlLBzM/0j75rjj7/rdOcSYHGA8+FQ11h2za4YDXcJaQVL4Qu8HWugv0E\n8AmX/XemX6+RnKLNgIrkOic8rwoGaZBV1PAT0k5lX+zcvxaj8liiK/n+x2dv\ndkB5uy5DG/GYeUSNYJj6r57EAH4BpiX3JUyN8cz7CaPNw31e0uc5Y4IpsT/Q\nCUB5YHVepsME8bhdQHo4ZW2/45W13G8EbjVV6lDM1bSvaOXpokpUZ377Onn6\nf1gt\r\n=fdt/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4iMHVO+umLVb1tH204+P9NT63wQzWS9MELHcp3H92nAIgatxQ+T7/AU72ROINunjvXqbmbpXMiXAvAfv5MfrOd54="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599744079-e5c57189.0_1599744179355_0.020494280916478758"},"_hasShrinkwrap":false},"2.9.1-next-1599745763-ae769e0a.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599745763-ae769e0a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599745763-ae769e0a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599745763-ae769e0a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FmgTqTWeUGIsPBmeRy0UHqPfqo+J4XlspYgRLsweXLbbfQauAK6FS/7FuT49AYxq1LuQvxf5pR8dIyglRU6WdA==","shasum":"0a160870f49439298fa0c05251d4d04fd7fcf6c2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599745763-ae769e0a.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWi9GCRA9TVsSAnZWagAAP70P/2eZ6FHiWhAZ7+hKCGRW\npqDC1aMNpyYzrwDFiEcpyl/X0omk5soaeyFeaw70Osg7hIIAmGMqpIKS+Nx6\nEQ6+7MyT5VhbVeKG7jY0bAc6KiEIQVGzymRHORZuVHKN0jhavfuFw8o9jCTH\nNyLHR1ytD3i9u/eDfLtTinXqZBtrT1VdhX6Hxleo3tA1oXlZRWXe+hBN3gl5\n+kCR/njxX4ux//WaNBpTYZPrbouQ/vIcNrBvg1JtgYt93zSYlXxXgtnOpsa+\nOAXI6xhEmMIt0yhwDnROvRpqd6KEds0pfDPGy2YFtlcuEhII5mJqZwvbDtgk\nGsSBwH5APK4cGWh2RoFJQdBaUx2z6Az5a6eQU+cZXMwY/77pmENRFYclGlqQ\nL60Kl182X5vQz0MHYOpXOzcr9HCMYijsoNh0FU/bVcddDLDOKH1kX79OKhgH\nttp43S2L1SFUf7sT29sGVt+oVd5Hp+31jcCG6VjcyqIACCtznFqcWdiD4Q5U\nQ8cri2LQwmW9X6UkxbQRoXy1OwBHWfrNlMfZEuJrQJOmnUUVu43iNENGqUBZ\n5DKmAwxBML+GeJ4P0Vo/qfm0W7L5hBZ/lICrVfLM3l9rX02uBTg0H6uARV9i\nzOeX4uGFi5RK2DmGaTgkL3534aJ1h5YIwZzmGlpl4hzfnd7iVdWRupfuXcl2\njzv4\r\n=2b2P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF14ZACufB2ME/Uyfv0rBFF/DsvDkC7/IivN1lc6v90lAiAObPzqmnroyEgBQNEQrWgcwUrNgA/H+FWpX3/EZsNPOw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599745763-ae769e0a.0_1599745861641_0.5393311739628408"},"_hasShrinkwrap":false},"2.9.1-next-1599748944-618d50b4.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599748944-618d50b4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599748944-618d50b4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599748944-618d50b4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oKmIKg7RuI5I4wQlODhfYzI9KFA9dE9WwsjBilur8tCdStwEU5lUS4ue+0Zcn2FNjmESeJFTUcINihD4CGGITA==","shasum":"bf78aa9df9e96050e427711f9778d861767c5dc4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599748944-618d50b4.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWjvdCRA9TVsSAnZWagAANbcP+gMEDNt6ci5qz5pzo6Zb\nD4Yc805rgzkphDih8fSwMyJ9cp9YGkMFqwRF3htmpuUCTeNliI1HToqQBcos\n4lwuegGbhRAx2YPc2Nr9/Jcojce/QJ52/EtuAN2xSsKTr/3cnUjeE2+obEmN\niRQ7bnCizIrqaFtKbFhP8bndsy9DVgGttoo0pEk4POvT3/0VCP0LkxSOCfxs\n9Kd5GfI0hU1wo5ndIuGrcAJ45O3WIUtWIe3ymfC44aOxVOpI7RHLt6LXlSr/\naQ+AYjs4WzTM1KVIuFf4OSnehNGTTB/JCX/ClTiWcx2AwE62iOJMGxWMqfQd\nNuiPhGMxociFOtUskEPuzmGPRKmLzggICKppI+xlAXT76NSUUpzjzcWRt5fR\n0OL/jA16mJAiVBx8uNtfy+Ene36ZXjMilSWsAPai/5hM0LF8JCriufbB3R7q\nSxQkpgs0SE+28Vxl8Fm/FAJAfqoXFKiTL1Sm6qGMA5tCAtVtXJWEzm+z1Q0K\nFPlJ/O9uewh28zavplBGvTh+s091erp2T2nzb46mKeodj/p2ZwZVa58ezFvt\n6Ue2t5DabVRirfpCL33s4yveSkljJ6nHP7ZeLSDugtRHyRz89uMxDK+q6990\nTdMD4Smkf5KrCthgBgKUUNyAj8ZxJJ+DR3dbarDOu401NZe3gMdcYSZarVll\nlUJ4\r\n=008+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL3mI1cZdEqxuvQJmFMHWGfwuEbv52i7BsMo2byj2v6AIhAKtmnW/xpTh1aOoRb3PTwlS6v8y2nmpe7KiwgekK4Hgb"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599748944-618d50b4.0_1599749084578_0.37624743558042884"},"_hasShrinkwrap":false},"2.9.1-next-1599815550-52437bd9.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599815550-52437bd9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599815550-52437bd9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599815550-52437bd9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mj7HaA81cT3KY7mkOtuvKxWNDCcgUVUOs1oAxRpLEdOZwO5bOs4qvzwlSxX1wK4NRyK+pOAIX8xGlLU5lvlPew==","shasum":"46e8a84dfe4e5f3cf95f166b07c46c514dc90c30","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599815550-52437bd9.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWz/jCRA9TVsSAnZWagAAJ0UP/2XGMK5i+98dxKJ7TnSX\nWXPVtMLA981qTqqpPXdCNscYhBT0Qj5NfU/rNMPWMvIZRolm9sAgKOmZVMaJ\nPzKfaHb8DoYsTvkFX78L3z/QXVWGPq4zL1RihD9zKDJ8mCmb+4FthfcZZR/J\n/mbNPDdIQ/2wEhkDCCvnHFiNF5guHwavyChJCKz08eFCvs/4zQenmWfnNDYz\noDsDxjzDsfCH9AFM2zS5ADVEUPSyQav1B6Ij+N4c3qS+Ea2+nmtWQ8dCGf51\nULpiWOqOb+yoZFE5pt0+HOdwry7KFe+Mnznl5yHz7o4y4eWq69FLTYXsNgEF\nTZ207n12YrMZ0dM2EkskZpn3aYLpo/WYzvGM/FaePIsjEJA2tL7iROjPP92t\nQ5VYVhjDZAg9ByZHhS7Ch7Pa8b2ZbuAft9T2o6pkKIXXBOT9CcrLXwJQWheJ\nmDOBS/PyiMOnQ0z2eJD2/0B4wWzeibqRn3YwcJ5/h8yxfA2+kORXB+hyMvlT\nVmomrsWPgrsc0v2DwZLWMz4rsJB8p8AfUNRi/dTEo5Dvu0nRpSdrI+05sLG8\nASOIVLRLxlUObm1N31MoLNvjRuUjSOvA8+qN85y9BZLs47dda4nEB52iIOEu\nH5UCGyvLzQ31tcziQTmvOgVwoq2XsKP36IRjWpwRZ/Rgns+f/9DaRpmnWCKh\n0w2D\r\n=TdmU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEngzYly6VnzL6O54+Fy1nXdKmWOVAkHd4kJJ4t+PjowIhAP72Zx9ZSKd6wywv39hbcBMgG1FIBmoferSu5XglikIh"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599815550-52437bd9.0_1599815651092_0.334398186661349"},"_hasShrinkwrap":false},"2.9.1-next-1599816206-01cc0acc.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599816206-01cc0acc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599816206-01cc0acc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599816206-01cc0acc.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mAjmiKJwYwRal6GD6pdQa32Wn9RCLRewBwrIJQJB3jIwDlGrfoDzN58gaKzPw/HD/l/VhNzqYkselIbE1wqdmA==","shasum":"178a26f12fe6d2cccda3f5db1f8b7efcbf9ba2f5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599816206-01cc0acc.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW0J5CRA9TVsSAnZWagAAef4P+gK3uEQewl3q/XuBzPWC\nwdeG1Z2PaASTQefCha7yS15fbXqMBBK4Z2kyeicwZavGBWuWXM7hXYfWsoug\npYKXBhlfTKfjS8yCHjnvvil82F/sTXLNKsOCHbCA+BX/qh7gHj6KUszxCN1G\neruYCd3YqHfGwc58zP1Tc3pSH2991PYMLJ2Ujjxc9AuoecFUTM2T6locOJFy\nX0O2zOhWx0dPsKA03Ns8kgP0HE8Ub9zTvRNSncReKYc76wv3Bg4jB1Kw7wyK\n4wInXVgDTxUOWqxLr6Iv+xcy07B1zo1kNEqy+D6PQFmH0iHd4y8VK1XqbOhe\nnkWyIqfmFWuXdPXigc/LZ1nlH8wZWY+3xLvTXgRHvPwNazZtQ40VavGQCLAY\n3YK2ttMcRNmQpGQkxXdmv2wZxHhdzdptf1Vysu1Q/XMFxr9V7fQHX+sA99eh\nG/2ZSDVWmAh9VHuTxlasRLl273TifBX6IvlSPAMSgPCT14rpUPDG7j2aGzmK\niL4HwrfHokCSNaEeiAX+CLNYOvL9py+E+4L9mUb9E8hdM4Uz7aNDfAjZQ+5+\nYC/5ahmYTQT1gmBT41eBkFMmAL0RpAiPSivRP2hr92Ado7xHFyaeddZ+fKU/\n4AlmfoHt2OnaLXaO1G86nSMnKxvgwYzsnjQJzhE6HPYywDktGSPRt7qpx0Xs\neIbY\r\n=iaH0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBy0kHilFTUbYUhBN8GLuf5y1whHWATq9985cqpsNpQpAiBDJLLcu3N0TVq0B8/8tSvlte7MkoQBIqBH1QXHexR9tw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599816206-01cc0acc.0_1599816313164_0.02977156658758906"},"_hasShrinkwrap":false},"2.9.1-next-1599816807-0ba017f1.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599816807-0ba017f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599816807-0ba017f1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599816807-0ba017f1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cVBjqorkH9W3dznNx89Wx4vOcU+Ry1lG6b9/fQemI04kcuZ8g0MCj7X73vfKXHuYnHNxU0smtK69JwQoM3oKDQ==","shasum":"de1630444493a4ba4512f811de7aa0d88785ad9f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599816807-0ba017f1.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW0TXCRA9TVsSAnZWagAAdVAQAIWgIVVCkoB9ueOUbZwE\nCSHKYmY9+P9ewazEghVsfQQO+Qsn5LrpxRHdoUtjKdlLLsd7cZC0ByCwptox\nj1QLhYWKgcA9UgxKzeaqHdOhgS4mF/NLJ8d1gHimLAqv9zS3AaKQNm4HnbXO\nsNq75z2J8bMkbDbqwQzQAS7cHsEFnlDlrJH/0bdPCw5rGz66Wt8FTaztLBWu\nu1UGf45L5TLQmIrGCavCCVvels/4eIqOYJNoxtw1kxApxPUAFN91J1VhyBQ1\ncyE9U8+RsF2Z2MMUE/DHnE0p8cfgb9DWcO+nleip8u4G5bclCgn0E1u+nk4E\nPQnJupbLff8ViRfnPU2dC6DvIxJ9aRWCKmRf7+ltzF/7bC1hDwKdj7F2tV5s\n4rWbmQKdiHr01KDM8e1cLnXNACmY2PAbDB0R66aEMK7jHbvmiJpN/TDtYOGy\nQUKl+5kUNa/1jAwnPQZOq7b2JTespriapyb+VBVLgXwnP4/V318VtymRaFl5\nTSqWC1AYoWsgBlwDECn1mseR93YfaFzsJHkWR6ME+iLv6mJUREqAH95ekqp4\ncMQit5K/xiruOmz/q1Uz1gZC0X7nT02IIMwuYDLKaUIU7te1As1zAIt4ad5G\nElfVB3+YDmCDBQ0IwRcuCZdmDPx0AioOSl1/tTzv9WJr0fY9Ez+CT+5i8VGs\nZbkX\r\n=w8Nx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLWUenf9fWMODu3Z5xAIjhqfqAlgD0YhXwj58Y1APJUAIhAO5KtoS0vNfoexx7KkxIeTsx2/yJUVFwgSFhtmykpfkC"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599816807-0ba017f1.0_1599816918956_0.006919451356726558"},"_hasShrinkwrap":false},"2.9.1-next-1599817774-60d05f04.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599817774-60d05f04.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599817774-60d05f04.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599817774-60d05f04.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-H5205uDwVyFXmY/4oH6J6sVMTPRiZ0TzfT4M3ocBMFJHTqnXcsH3UsAMnSjJSNlXpegJBkJVtXmZ2m0x57WNGA==","shasum":"660fb84e16f39111b0a0cb33dfa1dc17d2c04854","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599817774-60d05f04.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW0ieCRA9TVsSAnZWagAANLoP/0eYPKgk1cJaD3DCdDYI\nOsXN99R5R85wjRTI+FYSSXAKY3rrZWNkdz8s7arKDCARfU6qlpYZL/UUHMkV\nii07Wm7oWFCCplDcCIP/HIy6JfcZafmC7OnxX2Bno+aEVXf+UfXWvcAXaL0N\nmXEFhHLsxslqf3UcZieEK41rP52pqkAnpH5CcsUMX91YExgAxe3gPBiuuq26\naeg7fk/7DspABqN7YSMtyaQBnz80Z3UZjX1JHR+M0sYVnNhlrP9W3ZOLG6kR\nGriwBDsTZmOJCbBjFGAH+5PBNm8+cil44ViL4dOPaLVnDnPTFzCnymX4KpEp\n2B0HgOTuleDMDdDTU7gEFtVJw3wdMQ0+1/QQ6IoZwfLXeskTmLTfvnhJFtqu\n4i+tIgggDYdtKNxU/qQcjCgsd/c8deFGz8jf4Fl+VNzaHYbxa9HK9Z/cclwf\n2VZ+AUZKXp7TZ+GqDtLPA+e/I1Q9RRW12g0u2L+dq76UOEQumAqDJWZ/FiC8\nZxCHgRK+WTlRoiEzTJ6lBDAk+kjuRrAZ/05GJOt7A22i2uLNRMx47u4WetIN\nWssmeeYB0f0XgG9s8tapr2AsxG09uV5s3vijRNkBhgWpxi2eFx8bjXtdi0y8\nZw6gHwRnP95b/C8ZWDsqc4BFasEArmaeOhELa+0UMsOkwirxX9T+uXMPZ+KH\nRmGx\r\n=cJTT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8BfgrB0kNytZf/oECQXnO6gWOLZA+8eRpM1IB0gbp0wIgcKkc80flft/eMOh4GLF4S/qknNW7dr1k/UnhdpsT0u0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599817774-60d05f04.0_1599817885898_0.8746891285654748"},"_hasShrinkwrap":false},"2.9.1-next-1599826000-3b0831b3.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599826000-3b0831b3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599826000-3b0831b3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599826000-3b0831b3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AXsd0bhLkIfolukeNnTYdHnufr7diGfv4nJ96KUhdrqVs8pvuMxm68T+naWDZWDK63dmrp6ANHKrSkAv9MiWHA==","shasum":"4b91f2b749729d1dfb906050a5e51f3d735f3fdc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599826000-3b0831b3.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW2jOCRA9TVsSAnZWagAApywQAJM8hyiWh1Eb+T7euzUh\np0/+J2pAz/uQe6f6ktajAF91sS1H9JHmmzL/hgatMzK5CcthuviV4Ce1iGiz\n9EesZ4lPo8cLEvu9+a7KEEj3Umoh4tDujHaFdM4Gas/y+PwFA1gA1qNgJ7Xb\nV+cW3z9ifwbsN52yQ8d1Xzpd5LyD/zWOt76xc34sjEE107YX2MxD9RIVgM1m\nDQgkl+cofyDKNZXIfwW+IKuFIL0xkVW2K/FIVLX8rISFX2UTOCd2dG8G4f6z\nKGM+jMraZjoOQE4rIwnr7qXztGNcYqeFuwXjbzr8oIoOVQv5Eg7k9rxnFRan\nWAiON0ncZD/FLmkPicF/gUOjFxMTukq1jE38yyU+4cmo1xUlENcuSsT/FSws\n1TRVEUqI9K0YRxciWPPBs5enVMRb+z40lMOy+soCWFfLj6L2qfrf11t4fF3c\n9Rx8r7V2in6uhX3vcNjY6N7rAz/6uWoX8QdguZaG/3uNYcOMeBxrw/Y8R3qG\nIxGn0a0lgcqBzeKwRhNqao1Q0i8CtXhSPLxTkXiepqb3JM65nwrDy9K376Cy\n0ClwtZRsohx3mrNmaINmpC98gWrCGmnSGdbOS7HD4nd6VzYLyG7ASSQo6dAm\nEx45SNnGxjdPpCWjJsmoxFzzrPL948aOQ9EBdM7KyGYYTRKVynXQRnuXqKGz\neBfm\r\n=fxi2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQQonE1DLi+76TvSTWN5UKYSRaBzBLixbv/mJRYTK+iAiBLo2AWSJt25MFLVF8O6vObiF0u0piT3HvXboUMMWCeSg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599826000-3b0831b3.0_1599826126283_0.13968374499015734"},"_hasShrinkwrap":false},"2.9.1-next-1599836388-604a2bea.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599836388-604a2bea.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599836388-604a2bea.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599836388-604a2bea.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WTdyjUSlPRmYGRgoYClETWMzo2KVXlKfSxL3mkU6usQWvdQe4QCuyF69g6R/LLoMUW2amYFhDGR7yCMdv0X7Jw==","shasum":"068e4457dcad127cd0d2466f164b27b67fcae216","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599836388-604a2bea.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW5FVCRA9TVsSAnZWagAAwSQQAIbCskEPGDJmq5aoMSNb\nXZtlkJnJIgyntv3h6QQOk6gT26MQo5j0zv5Zbs6cRSW1+F6fX3SoLVsIsAYg\nzDlpIgjFKtDj/ssG9IDKCe8dc39NeopsNKZYoBYIIpxMckwF+z+Uw2deucdE\n99mLxlAdmhqdIAoO3XU54uGOag3G06FJ6U5uegH4Qbc6Qk60Hgoi3OuA4gUH\ngmUGZePwVsXe3mCNDVLoWIXueSX4+qUzo4C1lrEM6a/1eY/B3qYRkhUuMyIa\nb7Gz6wJy58r44qguYuDFxmPR374sVMukw076pVZWZvdqL7C6n8rOrwW/LGvp\nqWtydzMqgQPHrt0RHpQmWMCnAaPTj2czQB2YThRLzodVxoPDDeOJnKmfM0AA\nRw+BuwmaTJ0Q0MYwzQGsH7ypL5U0BBNYNIb8oqCZHRyeA4DvIhKZ2TXVUGxp\neqimo8UxH3doT9YAS3n1A7vx//1TOVQFN533bvmvDxZHQ1p0ptxEenNK8Y/i\nO32MQdnGkwRzR7vviCfyAFl/LymYLkt1tx9jt5SmzrsxC/YP6KqAB0YYt2fW\nX7kTPrEohlV/TQ2lXkhIOdjAun8wVWBUU0/zOsMm/7xlKOQd0HckIYcjvoBr\nVCx0rBBCojYTJ0ZPpgrJ6LbpM3oYla7utpLaxK1jzRRQTB3fbEcATYmKlADd\no1Zv\r\n=X4IW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsWtHQeehspwnrzwx9YQzkWTpM3fZlyvCDspzVOINTqgIhALSgto6dbi+qsg1hJgnFzFZYV0O3zB5CmPZg/LIMkIgB"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599836388-604a2bea.0_1599836501535_0.2545420283556932"},"_hasShrinkwrap":false},"2.9.1-next-1599847353-a249efd1.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599847353-a249efd1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599847353-a249efd1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599847353-a249efd1.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-fOJXG+A1MBhssSxBeciJSJ1s1enpkglTp4fkHMn3cvr8iUWwrK0K6uaSyMb2KN3qouHlHYHo7FGl7Dj/1kPLng==","shasum":"97f45da6763f2b98964a2e1016262c3e46e698b9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599847353-a249efd1.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW7wXCRA9TVsSAnZWagAAQy0P/iHxvuONB/TIZgoOdUHu\nfBYkobihjdYkM5uI13OHIzUBaDYGHWa/XVwiNmIssKx2HQaQbnvk45nuebs1\nOmZ4NuD20N97xrGASvd/8iy8oha4q+EqzD5/tV14lC8Mub7RuP5qlSzSfmex\nb8PTafOGrlY8AJLpy5CiQw9NhZFsqkkEuR/k8cTjJCtkJnmgREaJjCs6GMDc\nXXNZs5MRHVxey0GHMWeyx+ASWkl3PQbPmdazwYdTVodAyQgl5H/uC1IPi2LK\ndk+wWDxrmGoj5jXkrPDPZlxUSPh/5ZJa1DZgmalns113Sk9vfUWod+/G8yBr\nVrHDg4EYZoSm7vp5VPdDpdDATfy+LiUrjtyWzfMzSdMDYeK+5iC+egbR4HCC\nQ+U0+n7f2E14eLB/JXwZ7uoFpggzYBYjf7Zug/fk/8qYw7xuvHDrZlCGA14z\nGQKUqpsuTs8RhOC0ZNkqd37Ltnyul5daxSuH2nQvvnnOIjUHWPozh3PwD9uq\nBpTljr5YQpBofQRLEjziTL4ocsATTa8Lqo3Xl8Y2f4t63VjB68GTrYhRNrPV\naXvtw7APbLE/XtnESSvhWHqpJ046q1zU0bQYJ0iSEFWM6UbHH3iMBHDw/XgY\n31zLieczi1dx1ulwkUJjMfOAE2OmbH7p9ijB2oX6sz1vGqwkCDulyTHVjKTs\nxI2U\r\n=2bXD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDadctxJEsF55GvLTkOiapVnIHOrOrtY2mpjzb0XRcpfwIgWgpx1rab9BObHojrLTCxzo88VcrdpNgFLtf9s+3pNq8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599847353-a249efd1.0_1599847446872_0.6342297529403609"},"_hasShrinkwrap":false},"2.9.1-next-1599847387-d90a61c7.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599847387-d90a61c7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599847387-d90a61c7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599847387-d90a61c7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RwRpCBreiub4WPbLuJepkN8LmKYOz/QEAMY8dvanP7JGR0UGlAhhi4dLymmSX045dRh1x5rqH5juUTffqoc93w==","shasum":"bad42f9888b2d4cc3d76ee91edc9d24840a1d765","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599847387-d90a61c7.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW7w/CRA9TVsSAnZWagAAlagQAIICqBaplcAITjPCld3w\nfjc+AGMriU1aRWQbOGx5igBixUrRUQnF3F99fm//O4yaO+Zw8YVCc8UkaHHf\nHYGy2s59zDhwuVrbA2zVM4taNr+67TdivDatsIL5meNT564D4SRJv9XGV3hb\nppmuZjGlf6ySxgCm1KCC+BwEdJ2b4Iw6SqFAcOOsyQhCH+5bXJXFerNQRQ5B\nOvOL16Iclo8MFoLskWNpP++p/cVaRMqDr1bsg8KQvFb/nmklxOwEl1f5Yajf\nX0pDrDyHrZzKH+vSxizHxzWUAG0XotmQPH7pLAH4LZqke1p4/3mvm7Hiq8Pk\nD5s+s4OLJgTxdwwWkLY4QVJBJK5ftdEFNP5hL9JBSOGWlokrlkWpVi7R6wnn\nEWj4lsWP1FBQws8Vov46/+fy6yv7mJtiivf1d4GEmvi6pXXLpigeC4y6fKbF\nMuhgUStS4BC9zq9yKz5thNVtZE+9Oer3HxXWwCj1iR7lnuxWy3IUtS3ttFRO\nOMvhbvFIlLC8WkCoziSlCJ1L/KBtGXToTPy8l13Vxx4SpOYDBlAV1IZsOrow\nUsPCUmrDTyL6qd2kHoK5K3gZtpgwBG1WE8uQp5OJ0X85mvSlnwxokl2BTXGA\npcshwCD2kPGyjdiirGFgGM+u6aXJhWb57z3VBZoY7veIM7iCGff4ahr6u1Md\nnlHx\r\n=e/MV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXhStQXTVEnBtoBUEpk9+JawF+51TQAaSO5MHExoPDrAIhALhmd4OUVu/us0St0h6KwRjZ5Szkae/Pg+2OddNb9b2C"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599847387-d90a61c7.0_1599847486648_0.3468910377621417"},"_hasShrinkwrap":false},"2.9.1-next-1599849737-1eb6a3f0.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599849737-1eb6a3f0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599849737-1eb6a3f0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599849737-1eb6a3f0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LUZ8GchhPFCUMyy90901HG3f+92qZ4IOfWpZ8vBzHefjyhqu9EbuiYfaVgICBLZSGY56UypmOGQu9RL5fLvpZQ==","shasum":"6e5ef307e5575f23c2ebfc571ad5cbee86ddd915","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599849737-1eb6a3f0.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW8V0CRA9TVsSAnZWagAAsOgP+wbmvg1Ett7aZixNGNti\nezwenp/Gn+SPqj5BWZJu81dAWHOS9TSV7evifI6RNYDhfkD1aNKga9TqnMER\nmL4Q8ED5dcJ6b7tI1/RWEIEdm+XEc6O0RqwQ5UPyTSjyvR/Y9oUBn65RQrjp\ntAwMLrKPTVpji7MlwQpUMfTU8cJ+40U8Yt3DorzfMoFnOrd79KXqhupL2IF9\nZuS7cOygaCOfNkaE58AA3j4hKezSAGmo+yKeIH9/sx9ia4yNaAJeTm/mloPt\nxYu3Vm/lncsKqg6RNC0QH6KQqInVWP/RLLyai1DF58dA+PDWKXq+VTATYCjG\nKMV1nUfaGJSy+Noh7mZJBrS+tUYzGcsJUO51wrWcZ/PSW7h+zGmZp2jo+xvt\nwafWPOFNniPwxwEuSwyU8TOP5kBTNAAnowO0J/9ioPiad3fG8l+/2F4yR7d5\nTRhVNl3G1xKxjN1MGiEq9Iwuz+3Wx5LuvJ8KoXRNC8wPQXgKqPZG7TbjCb7H\njNNktF67QFzzRQH/cGspWrIMnjvtj6EGEKwZgegxK4m4kbVetVPujtWPWJ/U\nG/14sgKwVwVYfp47Q7F/fE8OetrRgo0PzN1hUd3kRMs7qgQDMRecOnSPr+SA\npjRQS8ecEFIiw4R9vvZgl+k7moBTZgqgNkwEkC0d6vFu1WgWFBw8SLklVIu/\nyVjV\r\n=Xoe6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDnf7O13Wrg2NkwYdMUaqs4R+iDl23MIqSuOR8/QfDOAIhANVAVBAlU6XpeDw3krVB4rL8tNu7r2Htp31mHqav0Teb"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599849737-1eb6a3f0.0_1599849844507_0.014615133467514418"},"_hasShrinkwrap":false},"2.9.1-next-1599850085-86d7f300.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599850085-86d7f300.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599850085-86d7f300.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599850085-86d7f300.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RAQQ9Ff16UFpUGfo+UccwmDwKeFUZWFOF2JC7Q5GUK/DiQCgdMhPd3gh3ZzXGZvGynEzSIKLr8h892e+nyF5IA==","shasum":"5a6914f316ca948366e1bc3208840a8006199aaf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599850085-86d7f300.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW8bUCRA9TVsSAnZWagAA2rUP/ipujTk4z4T9ZLysMB9B\nNzuSHtsQimejs4e1DbvytKXMUHtwLmBzhz8iOLtwjOsqtwURm2ng//LySR2F\n6upQW7svWi9R8pLHYiq6syX/GX98f7cR7MowOqKmleI+vi7n/YPFYuzDHNeA\n3gtD1UiCxt+j15u1c2WbHH2DWP/Un4XJH+4XXWgt2nrsVwSZJ1WqyKrAg0WQ\nGBggEH59N1cUgO7A/lj1qwVPHsoJwETFtmYQMu+FEKj1N7MLH0D9vMH1w9Pn\nx1iXmxx0ko/yIZKPORAjgVqtaG5L/vb1SnvPeiwgCbtGaE1toZRR4B/RddaA\ny+jZEZqUBMQGN/5DmPwD1SbHJ3WnwB4jG13/vafITD9lOBDo+ptC4+RZh7ze\nKzTQLHGit01PgaTYoOc1y1ACxk2dd3wfYtAMCHc6wPm9n3z08ECflPM4acKg\nuZ1KO9aWDKthj2XTT6eNWctfnq4BHB6ooV6Zvz+rU/kMWetTcWgAaHmIJVZk\n+l0LUH0zOiYQRuxeSXoGJ5HMVSOFohzUNmIMvzfwaaVHuoUfbeiQ5W4DTon3\nhVoju1E3NTrskPudttqJp3tb24sn2Y1GczdqDRHmC0/OMkgGq4dZQW0GiaTG\nbptPa5quGgyB0HhoRq9iW7Fo7NGpAwLfGtw31zGJNxzoYNBq3LpN8cenYOa5\npPuw\r\n=IcFR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWOH/bNtwZfc8Puk/YMjfTi4hup05svTYpwjvYOSKzPgIhALzgGdNwHoS3PUn8VGW9LrjmsHq/Ep3CrMPdcL6QCY0k"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599850085-86d7f300.0_1599850196159_0.6384722654923063"},"_hasShrinkwrap":false},"2.9.1-next-1599850506-e93ad9f4.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599850506-e93ad9f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599850506-e93ad9f4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599850506-e93ad9f4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-QXLBkPK/v00TRVgA2Tt2qCHl1at/Jc8sXvFp7/7EgeRYLpGZKJd8H7HLcQ9Kl+naF3zBiay55mkvYsk34CYWLA==","shasum":"e12e7f342d77b6443a5a48e5e152b409dcf7fcbb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599850506-e93ad9f4.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW8hwCRA9TVsSAnZWagAAotUP/j+1PIeB3K7G/CAnVhlp\nkNlgpa8UB5nLc2zEaWhh1k8vf0W6rt/ph2XRxrqVnUZyTeT43WAT8duZQ+Xc\npNnRKb/xfBMzTl4eBlMSqhZJyDmUh3LF22MyyRxaenIyIRN0Q6l5Bxj/d0om\nNygoNxajvzBpZliAS1h7v5y6AswK7R4iwzL7IKXIkTgwHsPJgnQxJnwOBUdB\nOwyvj9XjFU/iOok+ieuKkOJtbqPl/jdw1nQqDA7JqToBdrRWo4A8pXrMp3VR\npUj8lZPvrAzHSFUNsom3H7jqRyATA7Z+UdqwBV+Zfk3Rg3M0o7pXxyou31di\nci+mQKzCjQ9ixNJb04cjuZu+NtYi/OUtIHbUWypPaOsbiEwLSilLHQP6T3hp\nGwBMwSNTFsBlWa+HbNVqRiSJIf6n1QApOqmo4sHojaNf8tkkXJjJ4Bj227rT\n7ag16X/9g0DgNLBIQ15SA+7sGdCeOFtjrg3/eQ0qzrebsA1p9v1hlVHGishL\nr6P/8FyuWdNpMquk3apsNP+N06A1BKuH/ZYyfZNRytBeNYOa6GR+GqbW06wY\nNpGSjCB/4wavlX7D46kU7njdgZMZ70AukgWLp5o210e1U22HbkHq0A/PX32o\nh4uvGf1pvI6c1OBunuhDk1TMhTJiubmXYQHqQpRjJUfwbTeGj1xjbnO67R1U\ngM3g\r\n=hxz3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDhiGVK7VFgiWkzQ0DIpG11Q3Owwtj5Kgxdi8lt+VMNQAiEAmh7PyiXZXENgGAKNot3yWOD+h1Yh94bVQgc8hFAN78E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599850506-e93ad9f4.0_1599850608265_0.809762233633414"},"_hasShrinkwrap":false},"2.9.1-next-1599850677-5cea23db.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599850677-5cea23db.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599850677-5cea23db.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599850677-5cea23db.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Bw/tGmNHur5TQRWexfjzCqAm7bFR1Y2HaoxReJqqDtPO+CZNCqzC/9rDh7PP2HBHU6TPRe4AQraFtuO7scuqhQ==","shasum":"a0d2746f28d1bfe060174f483f0eff7521346bc3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599850677-5cea23db.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW8kfCRA9TVsSAnZWagAA2ncP/RlAd3yoknh8j9q+RJiC\n6Yni5Wr4z2VRK7yrZ15GPVMVOImJOrPiQIFbUB39LFHW71btoKxDT7qOI1zB\nzbk87amRpLryidUJ45zESFokBsdObiIn9KFuee8XXkHHtcyjsqrQOloMAPmC\nBBuDnXjPjsEL7Ji2/Wybonzmu+bSWWu1eKUnak1qy3xPa41R2T7O+5jVUzY7\n/gfDXLGWSXlV7M/JcnZhImfZ11sZxdsigl8WgBgyNaOEgtNxr3iu2Pz0jXlP\nQqmOpjaAC+T4fEDndFRXLpLAWbqT9RWtI7ayF5YYa4n7ihx+MFeM/sCTnFCt\nG9a5QI9pp6TDQcDmV+Lf7D2rbBVVXGrEjAtT+wIgVqvoyAuFEYTaWqrKSFTo\nb46Diw4jXfSE+6nd86yfJYRm3F/vLay8If4szVPYgpq3SHYb2YFQG+JlyROp\nvi/aUQLAxsaT7E7KlHJSqJ8oGS8KEGbjRqNx9lCS9DsPdYa6zMpQnfI7BG8H\nMYyAU0IPoJyPuIn7WcsJ3gteZzxqyN/PMFJXpX0eggSqnZggAMMxF3wDoVPj\nk6wJv9gXuMbHcbsPqhJ9xBP/MLlCPOtEfiATTcL72Jp3jUVMsS/MPAPiroal\nlaRN/Gvz24zS7j3fPJcs5kt9PVXPSN/pIGNUTst69MJ+OoxANX9zcB0IrlRA\nj34c\r\n=gXaq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIOF0hdSOsXy3n6QjfdJDhogGY/KTohqAEhbLgk9yk2gIhAPxbAicqXKPzANokN/EnsgioZWdd5+uEdSJ0Ryv6Iolp"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599850677-5cea23db.0_1599850782807_0.672565590722199"},"_hasShrinkwrap":false},"2.9.1-next-1599856041-fd977716.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599856041-fd977716.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599856041-fd977716.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599856041-fd977716.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Cy8sI7c2zUMy1C4XftxjIIb9qp/IIpfcJEAELUtz36a3ahSleE1NBJK0/ipCfbkIygOXN1qcBr2kTMsDq4Gk7A==","shasum":"73923ffa0829ebd341a0c2eddfbf2c0a82618b8c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599856041-fd977716.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW94TCRA9TVsSAnZWagAAeikP/2/rR9Qej9FkgRYjXa78\nemdsC260Oec8fAMfJV4sZ4jNoZtGzDDspnZGVLZGQDDXzASzXXvmSP8iGhLT\nfR3H8u4r18R/f0qK9OYQylaK9jfX04QaEVNLwi62oUC9OWzkgt2v1+nQHOrG\npUJj2PGtXESJFbtSF6Hq+GiG52M9cZPMVyMFxZYMrAZNOu8X7rdICPQAtrL7\nLuk7tlAKixnRIWEbFCzZ0pTjI+4WP9z9+aTPHK2f8lZjRMLewpeZyzsjnyin\nHWUW9G1rm2/VC8Gd5X1v8Q9OIV5I9zcU4atj+SuLBr4KFrqO2+xLBvECKKnf\n6idlSDZFxa9rZSh1+C7nALgIm3tlRkVvv4eqRtxTXJWm/pWNSDDnyYuAp8ra\n5LmSMxbWcJF+Mo5BGxNJWhMtH5yWGYdtBp4iZSz45Oy6a5IU0aNVKh0Di7IP\nYiDBrZzIyvRuarYXg7fciICu7HdOKRE5hRyc/jbvXq3BqAgLFhCIBk5ytwvR\ns2AyoFzX4w40yzK2VsBGYaRqbIEoYfH0E7MWKNPPI4zFdgP5E7fKVkyP2/Bd\nxCNeAnoA0V1eNGU521Z9YxGYVH5lVC82DoYnnbxInNQE/V7iqdTakfsPTUid\nGIQiofGCAVDm3GmsdizKOtnlc8D21bynR9kyA5gnvX3NpQ1bEoKcemmgm08J\nfCqr\r\n=DbP8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0lchYszGxnnF9fQ1geYBWcP2uArmNEwgQ03426PsosAiA+7xu+hkoxGTON37G35qaleKgCqiPdAGV7TiJWVhNyMQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599856041-fd977716.0_1599856147394_0.02904928816426322"},"_hasShrinkwrap":false},"2.9.1-next-1599856337-3759161c.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599856337-3759161c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599856337-3759161c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599856337-3759161c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-habQN+CQ/Jg9VZhUe6klUAeBWOrccCCuvRHDzq/HdMNjgvFGswBXM3vqYyCfhvdlv51Q0YzDfmbFyGzmxFrW+Q==","shasum":"4e204ddeed071972c7288bb9ce538e613b8b15ad","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599856337-3759161c.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW98/CRA9TVsSAnZWagAAQ5MQAJ6b8GmFxwtxFXxJx5Ku\nMoZsBcU/iW8MhXI1t6sir1QsKu+r1aiuGkaUggIJDayUFDaC/aTuG1M/8yJM\noypzO4Y4VppI3bHRlyvcqEPfze8GI/G0GCDfDwCUXzY5iBSzUjGr9mPo+wWD\nLDXCHy94kiEh1aqxm943QfkohmtBX9HoIl4Vc7V9ecCWfopsfdl63JgMB1dV\niAyP6RTr5p4xIbOozx561cCU5GMtXEEwQujE9ln+DRNLSoUv9eqM3PxyCoBy\nYnSAmXrpoTKOnAlzDfjS/Xxw729SksNWLn9J9yZcPQGLbMyADCk4T1FjIGdA\nGNInCVN484R3mab2bG6lATse8L9reP5LHtbJQoe9ufX5UwbSzksgbgG3v+W7\nrz09I0rI4FezrPAcySrcbp5VjBcg6nXkVo0oa3Jr2AhVU7L5K3bFPlEUgEvi\n3CR23DKcrPunxFjzTIMEIBTFPt7odTG8Kycm+smAbvilNPHIBjaSacnL0szF\npxYw68D6lD4Nx+Pp5x63u+4TSxks57RSF/d6dekxK0/SxB2PGUf5N4owT3xj\nre8Bi3pOxBW6W4JarDVFRF651lJmclscD2Rf/45R1plFTZ86s8SmLFaBoIOw\nHKU272OiZDoBtRBF6xk5Ux/nWVw6TTolZUsBcH8nJrSrrO02NqJpsO0tk9Sc\ndNlI\r\n=wLm5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEVKyK106bon9qM+9ttuOqPGIP4RMRr+E3H6Njfx+x59AiA/a1tcqrO0mIXjQtThKUrYXHfTPHaJbbe+CJbc0CyVAw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599856337-3759161c.0_1599856447073_0.7400144574446039"},"_hasShrinkwrap":false},"2.9.1-next-1599857932-8037b565.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599857932-8037b565.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599857932-8037b565.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599857932-8037b565.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SI6ctLlst6TD6eeV3jSpTo9+M0NEdbMUki+HyvNOa5w0OmHdMQkpaDUV8Nh0jvf+/o1OrA8EXMVbimug0QfbfQ==","shasum":"884a3fa2d1672547da23571ece453355cd293b3a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599857932-8037b565.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW+V7CRA9TVsSAnZWagAAARoP/1NpTWD8QpSEGwYuP+YB\ntknzoL0470AeN3aKnmDL0yJN45b3sMzPv3Uvg2DHJuteagwSaEnG/i8YMORp\nCSCS9Nfo1Ti8hUOjsOrsbaTbMU2ct9o1GiqcEAKJKnDwkV8/P7WOi6+/4kBr\nX9nTSahPne3II+B2hne0YjaL2dDGTqD8D9jaEA4QbLpixpXJp/NGlFMxD/6V\nIApHGplOq0gut2XbHeE87TPimj2QrUp4LWO6x9bvATUX05vbHCFC2zetgIu5\nhBaOYT1fQZ9L+TMmJxi26KAMyZknYNGUwAJwZOPFLlyGGFmKUZNtMLD9n0i6\nrlXRo3jrtjHN7FQy212NaH7uZu0QY4Uar5fD/Pc/uOF06w/CxuUZET4J/Z+t\n+8upzBe4khwh2rIkPh1y7HEUdaOM1YhkNI0O+OOsVYflB1nWvupdQqPsP1U+\nBziuuFmXwVs1JV6IWRQWmRt2qEwTFTrJmobD2QmQRIR6Or/cHLsYoJMVQtpi\nYhVrDqVUuqHQNlmYIPIMQSYMlF2jwXya+IL+m2ZbqFN9xwh8bmWBFoj7lWxJ\nwz/dE63wJCbv+UuhsUGislhh59SIdTnw7k9DeiGWWF0rQsJ1E0Utwb6OY8yX\n5omPj9Klu1+vGj+idDIIsQph/kLBnjBE7WaKjCepLIEJtV7LSqeuMU4EnRU2\nTR3B\r\n=JhNd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICA2XN5LdY5M7/yNEMA80nYPSUTkoIlqAObHaxZ12GhUAiEApULjZnXGu2GGB/4n5AL3MFYXJBZ6gTR5i3Wxte/CWPI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599857932-8037b565.0_1599858042643_0.11819560642986326"},"_hasShrinkwrap":false},"2.9.1-next-1599858843-4449b454.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599858843-4449b454.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599858843-4449b454.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599858843-4449b454.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/Nbq8BPQEooWY032e4ELSjwNsQfOx9vvtYwAGnQe0WbuOxjPOVvY0AF9c7ognpCDlIsMThiwIUMeY2+cFAL0QQ==","shasum":"f7b256a6420f78096afb8287aab86096012c902a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599858843-4449b454.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW+kKCRA9TVsSAnZWagAAulIP/3RZslug4vZH+v+tEUni\n4FmdC5Lo5p0Q1jntYvD67oax4EfuStagupDfyzZlWib6A7T8DNBC0Hmb88nD\nwA8tTfhNyp83cBXTNTx+a6kpYr7IeA6oBXrFvm62NzY2pxTMOCAcrKzOCgeE\nKdgWDKQt4GXHJFiaNj2ThYJs+Jn1TxhTMhuNdytcghIvzRUMWNfM//mKFaOw\n0hEQO1uKdeSamexEkBLbSb3QMT4xv7zkx2X2OTpsh1AhYkXr9jgM8xjBrEZb\nM4LU5OGiZT9V+YFBk+lxiyo2QM59PUQ65qG5cLFGXzqo9CCM9lR3OS5hmSBo\nU30G9grU4YBr199piIvBLtZlDQadfIsWg6ZzNQAwM3Yansml9qj+60cWjQcm\n/K7W0z+DPltwaF5CoM2jieyvRIIcNX9/WefwxF2/FqIICjTaHuMqMy1Z6Qfa\nuYLa9e7zB5VzJ+Phu+sXgr+k/eO/l2UVY6ybvtPG+XdKetiJsxoXHKp7f/Xn\n+qSK5fqaJJ/V0e0vy/uY+M9kH1U9eWl+TARx7N+R4uWEObfVkCgMHMNcdIku\nr3cdtM53DoJ59lvC06MZ6UUUPUYVEZue65c3ugRQp8KTJtOL+BtySBkdH84n\nsAi4lSnb3hw0MCVPBrvFEp7sibxATFE71vE9BmMc2cSMg5DcOgS2tnncbzPl\n9p4Y\r\n=mRg2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzamoY3HcoEeaZhjONBLj+qlQEjCvQrODvXBm3FHeaDgIgBwxnmzeDR2iGOjK/YQLQaAdRoMz3J9T9lhRLpwncYVg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599858843-4449b454.0_1599858953733_0.1716275228664177"},"_hasShrinkwrap":false},"2.9.1-next-1599928650-70e34b66.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599928650-70e34b66.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599928650-70e34b66.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599928650-70e34b66.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ur5pUS4lFvCXBEP9e+B6ZybsTTWcHiLcogtPCc25EgstDrHnkSC3KL83TL9vwyl5bzgQKZboIyEZcAuEXdCENQ==","shasum":"36acf3fff25b4b6d4085302fa545bd5da73d2711","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599928650-70e34b66.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXPm0CRA9TVsSAnZWagAAFZQP/jxLSmFChSpyuwN8XjFS\natJFuR22cfydqXlYP6uYXEBkoxjUBM5aIiSJrKOdfTUN8ULvf2wpdubOh9c2\nAtxOzDacSNErOTXSfgnfR295JTDN+SiTyEri9T6AtXf9kxH9uZ+JGk2m4jNS\nsdo+gkSsp3b8xVTNlmkJVxfnSS7kl0uagL1iX2GOgswFc/LsECrYRrw92is+\nH/ct398kQa+gQSkntNws1lejCGMZV8rfVQPRDi4l/VDr3h3YCffhE2IAMIoG\n8mdpFTnADEdCENEmQR5IZe2v1XuAjXE2xj95lN2h83awh3lGN6OZzlRuTfq0\na2P5UKeEKVhXXglQewaiILAmwrPoB39FpAaTxkfMG05kCaqLP7ND6vaC/SGG\nARW5W+1zwICS8/8lJjPM4CiU2KxWPF6fVIAZFQ65WuCBwYXzMKMObjyHbX2B\nZVbxSwMnMwpRHxG/uEMDRL5EB8Vo3wVdBTO/iRu6cH8oo3+4O+LcfTn8VVSc\nqU7X+qBiqhXIkeEPwQ5buMbtdpThPoDWEzlQVF9x6y/earM1L0YOuF1UBmXz\nK8UhJraAFtQyzMUR9YRKsmtzH4o2GhlR+/L4Y7fiWyaXKkv6M2HHFR12JqQP\ncLaLuXELqnJ3GCLFFe69pXOCvG40kGMp/3KGjGWCeYvx/R2MoQaNhIQEY8xM\nX83i\r\n=E7Of\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+VyBECwpLmuAmTqTbaY3YQcPre4dIYmzP62CCjAlPfAIhAM/8Zu4gCPidj5o/awgYqV5WBmgIhqEq7wrqsyvVTNVg"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599928650-70e34b66.0_1599928755541_0.5919403532236656"},"_hasShrinkwrap":false},"2.9.1-next-1599931291-eb521ddd.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599931291-eb521ddd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599931291-eb521ddd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599931291-eb521ddd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-507beEclxLoI7M4r0cuTIx/acCryAw4H+hIDpUl+oKLbIRem8zQERZgPc1KUxWD/GuI+/oPi4/AG5NJdYqv5Dg==","shasum":"69bde8f3afca4011fe0537cb01a08a1363c0789d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599931291-eb521ddd.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXQQQCRA9TVsSAnZWagAAwdUP/ArwasqDaYx1/cTF7/sE\nQgtDxV3mIIASTH2sWXKPBkEv2eZaBFTT1X7kLhLB/M35DE4k6Yypfa1bOni0\nSlKcBNnz2iD7j+RykkqEXjWASDyyHDW+qbEGto8vKwesTb79Ik5Z/gU9dkZL\nkE+14UM4HDTV94nW9jXA90w0OHh+GcB0LyJ7FLhbtJgNL4HC62mn/nMpt539\nr8BRCQ9H5AzxvPjy/CRwdvxVEI59H8Ttb4Pa6IfpOPzpbjTjbQlBPu0aXrPa\noHyetiithrmBwh+FGfP5fp5i6LKd7OzZ9pjWcsq9KIQtjq4HVnndlfWJyXSS\neP/OpeLLDfOANcPC31uT+gbyDrjf4lFjqoRHpKjlGXB2pyqyBtLuR2yUsAL1\n9estKfUnPVNrdkD3M0UiakCz1Uw23uavi3fDymckWwH/vI+RYvIULQgiU587\nS9xmYCd3GgHtdU8hHV7mofR31KuS19xtNr60SlpXrJd8wCW4NM+I83EBdkzE\nuzAHnPkFqdrlNu6TOmvkZSi2DwnCSCWvzL5duuaoQiqsv0wMIggwdCdFGy9H\nkq/M29X3oM1i9ODJyRNN0ER5V6CZSbMb8GxKONfw87oRA3a2dV+2rlCIZUIg\nI4VyS1BaN+OmPAvzFAEZcieLnwCoT062l3FchsNPIqo7HvjykkWReBGCcyED\n+1dj\r\n=Bd1b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzpAqhS8zK3K1ehSq61mLWvITchioT040shkkA3vp2SAIhANYKNM5mQP/HA5f4TX5D4vW6468Z/fsVtqsvLOzeNh75"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599931291-eb521ddd.0_1599931407666_0.8033809364406155"},"_hasShrinkwrap":false},"2.9.1-next-1599971596-3de2b5ee.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1599971596-3de2b5ee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1599971596-3de2b5ee.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1599971596-3de2b5ee.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HOSHyCRgZDm6/CaGP+p1fw6wNPzHtF6ZenBOBTFnKaWwDmpNuJNEWZsP4M4B2HrUqW8f3ACMX9pVUATMvcHShA==","shasum":"b4b668df0603126d818a3b684838d00844e03412","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1599971596-3de2b5ee.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXaFqCRA9TVsSAnZWagAAwecP+wfO37eyLbP54GeFc9kd\ny13RIL+XKx4szIEjNqY+lG8i2DjJMjlvaxb9WSU4RQnq+t5QtYh9ZZUaExUi\n1SIduu7zgFFoxFeJDF4KYgqs4Rw3fWoXi8PCZElUKBtMFxegEe6Wg4ldNr0L\n5XG90wvxV18EWSQiFdQhIh0L5qwnXygd1qmXhfv3vLYMDodcqM0fc7DDb+tL\nBhsJHAYF7y4s+VYvMpOeHpP0r2KkpZOp7H00YDullg8HfKo/vF3Pa/emEWU3\ngMXcRXOWSzCStfPv6olPzcfEnpuFf+nyq2hBxaLGAeQ0gXxbK788hwtaThIv\nnccWOfbTMQsInlcI2IthWU8FmLO3vdftH1YxWRs7Z2wO9V2SBY0t6hN2aGLo\nwPCHa1VWyVt8kltl4uO5EUhrFkEOlO/7Fzv5M0W3BdwrGdPnj5Aza+/0hEA2\n16V/dOn5UoIK9UuFZEgeQ8n4PsQF3JBUybx9Lt+7ZRBndXCBOS+3UI+qQI1b\nyTHDW0ZENFowi7fFp4ao+lrx3dIRS+i1o1g/JX2Y/tOcnvAUuEwfcrS68N6O\nh+eWLygimil161Kh8qDfNKVL+d/wkmlmJfC7OFhT98uRwvb1/hI/22IsC5L3\nHP6lP2EVOzE+4aW/dFU51jNQ1lgFv4frh97F9+WsFCYjSl8iFxR5oZNPW6yO\n3BQz\r\n=xFgt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA0SeuPQBfLCYzni3NKLHtx5rAdVn9tawSFaQ/WR/z2/AiB3TBADkqLd0QUF7ljA3MxuUcMI6VOICPGrmh2cljJyFw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1599971596-3de2b5ee.0_1599971690163_0.3289626573485953"},"_hasShrinkwrap":false},"2.9.1-next-1600073223-ffa596bd.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600073223-ffa596bd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600073223-ffa596bd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600073223-ffa596bd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-hX9e5mPTzW8QwXxi6PW65Y/6afGjUVRafkdsNaeq997DjaMti+TZ/GrhmwkhjKonoZNG9PLVKFg0wnpoF2sqXQ==","shasum":"23a78b5054e7d8f73036a186da7eff6c5dd1b741","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600073223-ffa596bd.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXy5tCRA9TVsSAnZWagAACw4P/3as3XPodmiXR5b1kTk5\n0n8be/e+kH2eY4ifuPo+RSs4WjJuUHeCu4sKxpxe0Yut2E44SU764UJOEkH9\nQX89wBoNZ8OD8Z/4RGFl0HjKBHwj2lUcoW0QAaL6eI4LDNO1MCg5yudCosYH\nVAQUYvUxP7d+nT1x/+w7JEHlPR5T6f7eazW33TLccn9Q81ArxTIsHeqXp55y\nt7TGSZGPwMqFeNCCLqs+vfTWgUh+aIO6SZfMIJuepS7zXYMettjc/q6oQfeD\nL9c29uAubDcVMR2tEb0lO/ZZfI4nfjZEFfEyfmExcZSTRJhFZmDNydgSTmDr\n4ANYiR43wU3w/88RQD2Cjld8YLY/jlHR4WGi8XNmN7xq7BSjY41AM9mCQAo2\npurXSIEcy4vG8EDgOYz9jtKgiwUI5go8LcMD0C77gxJiZ+SPqGHe9Xj5Xa4k\nhu6jNIEqySjuyWIc8ZpHUJN4qJmtDnapBkXcs/bQPRRqKWkeuIk3jSLFVZd2\nPHi9JYsGATGreJSl+bI4dHbPh5mvYVZd7R7vb6iwk3q3HHYauXnyYPz0ryaC\ntnWYN3f0Nk1MaA0FqWHwhCZ6xlfDrq5CBxDfyLCpkLCGbfykGMddKTbsBBwN\njhKM+oNWoF4VHHUlmNaL2HDwpXOvX/UvIS42bmKSQtl3vCBBMRQEk2gFiR34\n9wFg\r\n=aTu5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+30bQ3WXJLZjC2XYOfvcHZ2zGjdr+nvoNbwxS+v7FZwIhAL1oMUbqgrzvMGXuXGxJfNq8A033nDYOL5zDODzdg5Cf"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600073223-ffa596bd.0_1600073324949_0.759495787464646"},"_hasShrinkwrap":false},"2.9.1-next-1600073265-0bcf7629.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600073265-0bcf7629.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600073265-0bcf7629.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600073265-0bcf7629.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ziBoJTUVx5DnRsJtCAtildlgFYB+Jns9S0xXtmZJl0Av6WnJMJ80HGC4KQe81R3aiwcvxWTPxXPZv4QLF0uyoQ==","shasum":"36f9dba46e89c3168ead06fc9375dfa71cb13e94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600073265-0bcf7629.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXy6sCRA9TVsSAnZWagAA13EP/jj6tQcTXbqcKVMgXi0z\nPqFSkrWaULw9hJkkXft2wYLaRlCxwortEb2kWBQvbJOtsyw1M10N2VyNcngk\nNENHcNZ2ezxma4q9x0c78g6Uy/fvOc/oy7bXAUXYpjxxnsdEV+Nzt56eEJ3E\nl6eDEvcgpsq20Y5/w/n+qHUz5AmvTZQ7UZqmhbWiR8nw1Zfz9ZPWbE3hwnhX\nmUhZdCKWQ3kgZAb5Bb5PXsNyKeyvfEbstfC5LSjoSzugCIxWRKU7XLicnkGU\nMm0Z3Em0Wk6Vl3EYj0afBcnhe4dXdjd2IW4GkkvjmwRqB9rnpUq0L/Uj4WsJ\nU1hqKXWqfU3YpIrGNCpwX5Sn8kZZJ4lQW9kn9+TofdGymG2i6Fh61lsr7ROu\nNa4m06NasduMZb1+U4k0v7x9WIf0J9p8r5zorf5RXt6enPfkToppk/CLPGSG\n/MkaJa9ODj58PcAd3omm5sFTAO3TcOX8ojyWuKTye7WIImvYvdArDhRPTZ6X\n+/xDM5drPD/kcH58jInYREA7qwPmHnQ16/jxBfORZSig3Fv8hFr0Nrop+W0l\nDwFMng54Hs+lW2DrQ4F73GnzNxnCrASVtFXGGLsnS1W9d41qXuNo1E0WSulx\nRhg94KtvUmUV4XQUPt7jh2/f8ObpXCEyuBPGHnsszAv4YhSxDpNp6JIvqlfu\nwtmV\r\n=CIDH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWhOfwvllBQvtTdmZEMaE7JrypcXT+KDALIx6s+JB0lQIgUH6YPGFdKnNNt35efATtN3isiamh15dCFuhJgi2aqpM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600073265-0bcf7629.0_1600073388411_0.17410328307420442"},"_hasShrinkwrap":false},"2.9.1-next-1600073373-483dee3f.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600073373-483dee3f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600073373-483dee3f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600073373-483dee3f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ZsuYVN+OLgxJftWFmfaqNyrJKQee9lezF1iD8XGIe/GnuE1C3B87loCx6DIXj76Jt4BiB67xUxRYfEGzZ6wchg==","shasum":"75b12783bf2db63ba3eb0aadb02a85dac5fb1ec8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600073373-483dee3f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXy8GCRA9TVsSAnZWagAAYRcP/3jdskZddDvde1iATbRY\np1UP1Dxff1JHGgN4pka0A7PIVZgwBpfIV1rVqhduxhHiehNDz24jMucv5Q5t\nJCfDWPWuOvqwyMYBAwrfXGPXOTanjISvfRzyf+FxVtZ9A/hLMc8//5EdHexg\nztzBbZua+HFPEKrS/J4Ciy/9d5MGlVMkRhlIvlYmMpp4J5pBDW3LYT+q6iTK\nfB6CY45xFvW9so5b1xbtdEvCpeP5w83Xav8Vu8mjEIlwKxrX+rf8b+Y8Ksgf\n+KEY7AkMHN8ZbBdBfnPtOG8uq+x5lL3CmFAng/GPjU6Fdoz/wk+zfLPJrkBx\neIl0/W5K0V7mLXZ2L9U50XPzYXgzVCik+tQ8J+ZYasFoiBwh9qRmbYD74yKT\nNAqiqnNCr5F3Et0ogAhJ86ONi1qbfPFC9TA8yuFrNSJEkkJwzyaJzFCPV+e1\npS10kWpsQyhtHVgHn8+CrfKNf0oUgMYXSgh7M56Tt7LwwtrrQYHWbHi02L76\nwVvJ5NJhsCpPon/oFZgH6nSK189qET7Nsrtz1RqWPXHoeFgPZcEwnNnKXVlq\nnWXbQ3tPu8KrCCrcGZ67yhJcUJqRZLdqIO0WftU3if10F8zdt/F0TE3mDbPo\npxx+1nT5Kp5adZiBxmU9U5hZczSa5KvEMQJtzPpa6gARnI2ihFqtr01UhKD/\nwhG0\r\n=8CkR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBaNtG4OSxkU0mV0ntMSiiKatAckdL0ivV3wZyA2NhoLAiAFJ7hgRUObfH+ASmDfhJNc/KlKv+3clvDhQZnXBLfreA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600073373-483dee3f.0_1600073478449_0.7831331492444962"},"_hasShrinkwrap":false},"2.9.1-next-1600073579-4853ee2b.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600073579-4853ee2b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600073579-4853ee2b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600073579-4853ee2b.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rp7GBV9fmGR1gMRgonRjhcxhHPJTp/b4S3mfI7P3gICPlCEDLKuOIx9Q89cCHYbmj5zBFCua7pCi2qm9Grw9dA==","shasum":"5dd23e62e598cf261635a1f2487f4d958f3848df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600073579-4853ee2b.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXy/bCRA9TVsSAnZWagAAEfAQAJL9UtkLeE6KpDf7M3Yq\nM9dQXeCvabQ1rzLZLXvF0NqZr7h3g9E5O45U2VPPtTLAoCkDVov7d08d8VCt\nnT9ds7ND1n0mfywqh0EK4nlsU5isRvHoB6LZ4Yrnt6BZeZO2CQuamsXNFdLy\n8ogS16AQALSEwwPallNhiKb8TzJM3DPd34EaWdvWC65/nsMI5LRvREEkaxOs\nb1NjOXY8qVEBGQ4hm521tV4q5tFm8tmA7/gFMvg3f5yJCq/HEhpjBphv/+1V\nZkef4t+wopib/aCdObmJbo6tCDWjbKbQEZkIPCsJcxJVcrvTYMl7qkxgzazj\nYGnl1748V2ZKLdzdEd+tIxlOtaCkrJ0drgTBwhepCB/eAAb3Zblfu0b7ZjEx\nLry/iWtLHhNoNnwDGwaJ9yqtoP9Za3d3m5yRARE640cA7/hn6outdrYRZZd1\nJrYNefnRLzhn0JWkOVeenC9o/qZWSo+mJBxFe933nvGyjqqyLuikKvpDEW5Z\njDeheIN4u3n1B/RGHHrXHzhMrvMWeQ/ztfMWX29KxdXRz3jFSbAJCRR+559M\n2iBBJg3vDAVZsczhltFCUMu7apmlhGmZ/UKvENyqJGXj5xOYQfnJ2xJkSdo+\nP0O++mDw/gImh2xDlPFwPmRr5wHJJYwmb9r0Heeq2pPGFLcMphYPdOGj48Tz\nOWdG\r\n=DG6u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4FOPkEeBo3+Mmq4LAV0maKv08xlEW2Gyx05mHpMm69QIgLG/c1TzFw8ydDxtATP442lTv3Qdrz20UxiMVWOWIAg4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600073579-4853ee2b.0_1600073691316_0.811386049003415"},"_hasShrinkwrap":false},"2.9.1-next-1600074265-b02ca882.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600074265-b02ca882.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600074265-b02ca882.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600074265-b02ca882.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3Rg2xJ7n6hTH+9qqKrhzBOtI0ajQ0dkQA9SiGn/AT0lk0LU/WEfr8L2AXfAsagcwsR7Njnb1t9xxUs+/FYfKGA==","shasum":"d9bd033972475fae993dada2d671fc1d03ccfc62","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600074265-b02ca882.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXzJ+CRA9TVsSAnZWagAAzlMP/2pSIxqxzDKgy1kYflrH\n6OwIizlHBMTk2XlImRl1N1MB7kKRIRxce+crYhrZABtBIHOj3QmhKlsVUU4b\n3HopzgwtGm2oYpaYI5ollbXtngAZxMl0sGLVmCDaOnuiBP4WYydAeqxSRHTV\nYwoYc74HriU+UWR6PDixM4b5rXCDcmJQ/hfR4ZH9YmJnrQzECOyYmWP5N3B0\neTVDKpvbGcvsJoB99DYhL0DQoQbRKgzor2yIpT9bwmMTtBGEDDwB5foHFjs1\nTHktBJI57NMiVlWDtHE9cp0/DcOhIsD1LTC8vFAMEph+VeU8jNhOUf+uzVua\ndvEoB6C5zkrWHucl76hnW9uwWFJzM7CKswu2eOBfFIvhiCbXBJbIbaW8piHw\nErRLAqjqXsxFsVm/m2OzrkX6Rf5ZVTSZ+BTZt+IUbzIc+19SuMdPh5Hwcn6y\nM923NCj4L30kXnMUeF7ZLMkR4YzsP0tBDBq66TdoOxccCWe7qTc+V2tPI6zK\nIreGzhYiUDhPgacAjj9A5/o2VmnBzvYkYZB/1CpyA1BNYo8lAEknmUU/c5Cx\nPTVPjRadlWXZplt1uQCjwxbHvYKlJf5CKyms/4wZBMnqHZvEWKRl0MGRt/ng\nSsd4HqeU+CRPFCDnApRZJMiPHZSASAbn7u/YTu8xwhxl/Z4kUdWZJFAp8fXl\nX556\r\n=LOh3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFwNjjNVoL8CZ9R7xULkJO0OKabwHBE+6FhGdx5aQdqAIhAILlAqjoZYMMLFCXoqUuSFHDII+a/eLRBDncJxXOUagl"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600074265-b02ca882.0_1600074366441_0.8338121326106138"},"_hasShrinkwrap":false},"2.9.1-next-1600075391-b8b3edb4.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600075391-b8b3edb4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600075391-b8b3edb4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600075391-b8b3edb4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GrGWYFFzLR9zkZWGd4ZDA8ZOWP5A68uV4pfzQbZ2raDXDXF6iFPMDBB0EvmtpBo7u3Llc0oVDzBeRr+fCwkUAA==","shasum":"aaae1cd21eb6c195e2c2a935fc39d506da7b6d0d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600075391-b8b3edb4.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXzb3CRA9TVsSAnZWagAAv9AQAJ2qmEYJjOCP64YG2hS0\nUxlWUgdLZ896S2VH2jFLcw4D0/vT4+sjPUkq9KSI+dpvB8LH4ijwWV+H4Utr\nFZnd0MQftvFbn/4JxgbsSJq/MQ//h3LoLyJaNUF0e1JkCHwsUU0H59+VEJXS\n3USil2GeW8LKDXnEReuddyH3b5gthiLf8CJ2yqptCMoSu24CbdO/fjw2Mt9Y\nnceQX02CnQJ4StvRMPaSJqLZUPhLQRiSOOPwLdyJIDqGn0urUl+ZKJyPBJ1p\n7zBmRCW1YHIyPJCPZe9HXLwEsytOrpF+/y3zd/lG4l2154Xh+0wR1+JSSe/4\n+8BFr3YUo+HvPSZENwBA+AFzMQ9RdfS8cvjRPRhhK4UWxTy6f+0WZP7ElF9a\nBvwQB0VzQ/QlKyBgDXV6KOM9AwtyYtMP8w7KilsJ319IL0oPP6WWHwM7KlmH\nbC+8NN1YwXikD76y1GgrFCn2855fUk5blkgu+ZjIddRog0kTuz56XXu8TafZ\nvc+QIn0PXPgDpjIFLaR3mmNazKGZWYhP8QnVIKjx3uzkF6sydGHKdsvTjGfU\n33Rine+7OHnwveHcRUu+n0UD+DjvU8sfFwamAURNUL61Rt7R5tMtlCYP2MPT\nL7qBWVbNHIlbRy+o5Y115w+G8HzdWfeFjgpYqYighGNnkACdyT8JX2XnGrC2\nx9jw\r\n=Q4A1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0EhWJHCxD3tcFgamZuwjLigvBW0qPkv5nCtNUcU9SKwIhAJ0/K76m8G42voC2sUaVr/ba47+WLTfLB4eprggR8ern"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600075391-b8b3edb4.0_1600075511143_0.7735098871397195"},"_hasShrinkwrap":false},"2.9.1-next-1600076233-5a75e0f5.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600076233-5a75e0f5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600076233-5a75e0f5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600076233-5a75e0f5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MbLjqWyqE01Sp5JznOX2LxFNeTQfvb5PSxIdEZaht9q1Dd89XIdwdjea8eFSSlDu/2X1XxoFBt7NU9vhMGb1qQ==","shasum":"774fc3f3d208ee56665cc4e2cfab60e61576b060","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600076233-5a75e0f5.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXzorCRA9TVsSAnZWagAAOs8P/i0D8/G1mb/UsINs6eFv\ntaGNDeWFKRdyuHATgTS0sHA1Gya9dvezI9tMOb67eqW78w7xGPg7S5SoQjmI\nlJztSAsEAQfGnbFwmcXU3frasHL6gfnmxiEnEM3srrWQdCJ9RFBKqrBkGc7n\nCu5aWEkg1iX1Seik53k/gvPU/mp3Tu724d8Iag5epDwuFRQsiswsqC741c/1\nNv8LEPQeFO2u9cat+pBY6vOtcED0EZqfPAHARAJtOv9CvIXE0pyPmINTDuUu\nMJRzpm3BFWZdzxO8dTTqo3086MY/OksKjFJ+HSNALnbvUW6ACdFW2MJTQd0W\nwhh1tsU7ewZp+CR7w5KMYuQwFaGaHtKaieD+LG3RzTg/nNfFrOdnkWiKCMlw\nMX/DIw3hIDt+fX92uVaaC7B2sa/S2ergIgQF58y3RXYHZyoqQO79CqjcGfVC\n6Wy8NA/BnFdx/ai0gUEy1ycVgC4gwpyTWfG4mfug3/DjJ03lHU5AesbEA1R/\nSlU/Kzhw/wXmwF9gWzXW9FXk4LycavnhZPn8Pm1pNTm00QvNKO/8OS4RQ1EW\nDc8UqTjc+Noojl7LYPpFS1wlAyQXvUGmboqNq3T2lmkPmzgTWJUwhO6eN+MT\ng/yH8yTjcTnGvHZS34OM7o72KSC78eGHIeOvGHC0d+WyHmyGzDr1/390kywq\nNB1X\r\n=WnfC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF/OFNuiQVHHtdsmqarJ3OVC1bCOkEfuZEVIEEwqwuj6AiAvqG22E788mH2Z/BxADeuLwudkzuwb07jz4zsaGk3e4Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600076233-5a75e0f5.0_1600076330756_0.9737671696413213"},"_hasShrinkwrap":false},"2.9.1-next-1600076275-9a99c13e.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600076275-9a99c13e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600076275-9a99c13e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600076275-9a99c13e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Gc5dVyf7VmDeHxA34O0GZLvZGjFNFftO7IJifns/VXehKdpprMJxVCGnyMHYz/yCFYnVVNcpkEUCwHnCCk1buA==","shasum":"bdd610d7d837e33377ece2fb076d0121fa8206ba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600076275-9a99c13e.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXzpYCRA9TVsSAnZWagAAiI8P/i0VgrZG6JjsfXSNEca4\nNMVYlaEZIg8aU631gfK7FYbW+8zOa8cuOnOrsPjR4Asy658au1VSndFgkFcV\n1OJSqVldyYdvqGDT/WGxiiRU47uFbT7vdDTyT2skRrYekcOvrEVzse9oZvf3\n2747pY468AglFSbDZ05QoSvA97i54LLwEwRlSRFqFgvSouQB4K2JynZza8gc\nN11VXMWohU88tEg81BNSwME3eGcdJs4/qbl2XQlf0bcRhzaB7HyYErZiky8l\n64QkxW3XV9ya/ollofGMkk9hNmGTk6WJz/hnW1jwB2pbRLQg5plosTM3qCna\nxdtj3AR0LXRP7Z59R1OSy4RuXQNC2hp4f+OWmaKpo2qyOsjWBXXCmKr53YWA\n7QrY1NgjuQvcm2AlNtt1olPAVQbhWfbJNTv4+Ih5zj4O6H/2jiaVAdkJamkP\nHq8CRj+CpBeVfstt45PIoy6OnhHVFIbs9xYG/pWVNyWmIQJ13uZLxc+I4upt\nRC7RZfdjbQPzAkZjxCrP2YeoqYIAURNpn1NN9Qyg1fSBzhmqj0dQd3kYZUSC\nTiPrsIGyadP2oBOliep3Hg6/iPl3Ky4Qa/2/sy2/spvm/6ZtEvam2lPBTaXy\no1i/02Z9z4MCwyUKmQ9Nu+ITsYij5+dloss/15zbQRxVtiFRlCoPOMx/HBKd\nFugg\r\n=HxxT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaaM4n6m6FSHfD0Kn7fAVdTlcZNVebPBtfSUJ3LroIFQIgf6y7zwtQVTR0zQb7pv87NPXrA1FAsZi1G/MdDHd/57s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600076275-9a99c13e.0_1600076376135_0.536574756904733"},"_hasShrinkwrap":false},"2.9.1-next-1600078156-5a75e0f5.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600078156-5a75e0f5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600078156-5a75e0f5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600078156-5a75e0f5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-siRjLiD4JlLjYlwVi48CE+7wLzdLNqMUjH5jFaWaBZ1+RL6OHzTy0Svv7ys4YHnH3poeACnMSm4vpCpoz4QNmw==","shasum":"f842bf582bb21626084c10447d507d0976084727","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600078156-5a75e0f5.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX0G2CRA9TVsSAnZWagAAtVQP/1KOxi9gRHpir1EEn1BE\nfnuDyXt4SN7reelLZt4NaZROOtg5L1CdM4BzU7ZBf7LfKg58O8+XB2dmp/6k\nMtWQFAYpuw3xgw7gHQdhKKCnSQp8DjDWGUw7EgvpPEBje/Yq/Pd5n5y32tzR\nsKG16zF8hi4Gcgp5KUVdxn8GxEPN9MIofojKWUGTwJlMQ9Ayj+3w4pyZ87t9\nbMyZA1gu3GgqE3DFA9rAY0j+2ws6/0xPjiuDqBxbUKFMGJTQ/U/Y4J0Yo7kr\nCOXIhGo+SJ9PXjjAaYtyqgjy3tslJSHTA5nXzECcv5mUZwy3Kasp2GJYX4he\nyymCWJSqqGqI38pHLua6LlEg6MHEgRJ1TNmJQVZeiZNNrkOula9/27N7bi6G\nfbJdbuS134WqLpFns8cMoTuaYVH2K4SaDloV7QeBLobgyKUaOm54p2aFr7/d\nvw294L9+rp7lTn5IzDesTcRdpNLycNGsLPRO/0JH/UVgISmxfp7r5/9V5Ew/\nwX/szU8NGVepchNFs74UseOKXu1OOWjmJ/dFsD5ItsYjH7E+A5d308Mc8P1z\n1dqoZHC7vhbo//WRhgp5fcSNDoEWZwuEclZAWyQikQjifxw7M4/tQAijc9pT\nnDJNhpUSC/TjRVftX5N003zLW4vzzrcp7ZlsGGOJlsLtKtX0gxatGtC3jHl8\nO2n7\r\n=YKY0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+A/KLCxxLcTUJUBv2ZKR5G5shhE6lr6Q5O2tGNDrFCAiAowL87nczBM6f4cr/TLh8wuxkIAX7HCpnT8cSwzrytyw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600078156-5a75e0f5.0_1600078262241_0.7303528522709826"},"_hasShrinkwrap":false},"2.9.1-next-1600080315-975ae28e.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600080315-975ae28e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600080315-975ae28e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600080315-975ae28e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-s8rsjS93g4w7JvOAqRBZW2cQo1iVx7VzCEahZHJrYc/mzCuYD+G7eBFH6xK+6BTQFMnFBgR2GGtHdZAyhv0WSw==","shasum":"d805d090e846ab180348fd3c5f37f36d72de7a91","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600080315-975ae28e.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX0ohCRA9TVsSAnZWagAA+pIP/R1m+5uZXP/b37lDGJsu\nTQUp8Y7rX/mOwhbn4+Y1OE4SwPRsLN8AHAe/KEt9r03KKJbkKJQRxYY664LR\nNyJ/lUmMbQ5pDK8pMoekZ8wcp5ihNOlT9M8/p6+mV+ISlS6cpHvmmU6g4Hs3\n/T9xb/LvyXCpqTU+uenNoCczt9t35VF+W96RgjE/ryb7vG8kfhCZBILKsxyo\nzmC9/InT/A4wYLsrMn+RY3J5EotJmVzpr249HqaTP/zFwPMycG7fh1vLU71s\n1kCxZzV36kYIJ/x1I2uyl5vCMdVVIqYMn3RGtVXGG3TUwYOFZSpChR80KArt\nb/2+ZqRzbeegXS4RtIHmlODpuSdV8uXL3S+2TjgM/VDiB6L0XooiqKq3YZCv\n0MxjRTnqrbdbj1AMeedr7QDIGUzT92oFCHl3gH52Pi32lR21h/PfSPiePNHv\nqfCXBXDZj2u/+fUkcVOYzV0SRx5DgabLageP9zZy7VOfRm7MCGOs4YyCH1qT\n03KQcg8X+GgLQNJLXCJ/v6kp49ocAwoReO9ujPC7ZRB3EJnghaw5AGy6efLp\nBpVdDYiaCFm+euv9mN5pMvDSn5coslNCPlvp5qsdUHmWNpl5eTQDgddhIzL3\no+LYW8SioXVy8Oe0deklGERAylFuBUb2gZFe3P9K2DMciVxeRgNDnEASjVRq\nUJkL\r\n=lo86\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGIjnzfSWT/bbqNFx6d3Z7R9FvSm4kyc+XUW/YAA4BnAiEAmKLT6Ys0QdxjRpQDSvqesOdlY2QR4aSYkrx1KIfJNaE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600080315-975ae28e.0_1600080417077_0.5555179275160185"},"_hasShrinkwrap":false},"2.9.1-next-1600080385-e996c20f.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600080385-e996c20f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600080385-e996c20f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600080385-e996c20f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uMim3DfgBARXBJu7qz5GtjxBYX9xGJq0s6Ci7hTX9z+1ojSgB13qjydZC/mik+4QSMAvSgMdqrqiaYPbmcApfA==","shasum":"1ae6a5ef82fca1b0ff6c7499258d8051b69552a1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600080385-e996c20f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX0poCRA9TVsSAnZWagAAjw4QAKKi0KjzGo20629u+6aG\nyOMmBt/v0gE+k5VpBtJ84nkQG7H22KUPILOTeOzjLcTpazGYpquGUR2rsvkZ\nT4yYiL2oEBCzFWeVq1rGNBisVdqo2hgOEMi5gYYgfPYEyQh/XTw0lBURkmhu\nt5EhDwJ9LBAN3J/3vZaEGyWvQXJXoX3v0f4dOfZm+yrdO9Aw9Rt1lyAbkRw8\n8/8LYytw4WnIGePVc9c07rqfu7Xqb98cV/Z1fLObEuLU7HsI42QEtzqDvj9B\nP7SKqrEobl4HmT2Isksjtuat/Pge9m0GArivYX3P3R+xhsHJ9pPxkC8CvPyu\nrRXeEjjM19JfwjiLfV9uGmVCAw987q3Suz0cQnEqncL5pLOI9Bu9EkJdmLVw\nTVrz3CQic2meKhlPVR2Kk7y6dc2b6JwSihMTogaiFNyYT4zvINWDgVFxpd94\n/+bxhx/QoaBweMj7kj2WkyYksgPirCtlIzeBYdY1b2cpC9c9GxdYTRaCC3x5\nFs7opCKUvTYjxhtlQXStnXc5DeQKnSGZc/sSqhba80eZCl/P8qIxxMitsFV8\nOKBUIR3xHox7GbdX5QEJ3WzkZhuql3x0a/WulDPwjON82vx8Uzib7Lav22GV\nXBcwGGowl6tAJK4k8YRf8f7s8+vXFEw4w2Hf2h9v7Ea6Opz6RhH7QYv2Fj5s\nklsS\r\n=mK6C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBIqVvJNZlMt0YlFiMYmDYr16wBMkmdDERE3XdkJhvT6AiEA31zv4klQrUWI9EruQe8CqRowv3Qh+R1sL9PIZQGgmaY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600080385-e996c20f.0_1600080488171_0.036080954725728365"},"_hasShrinkwrap":false},"2.9.1-next-1600080519-95eeca29.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600080519-95eeca29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600080519-95eeca29.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600080519-95eeca29.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PXILVWujFQadPiu7PKbwiSFiW6SkdmBs/3Oa/fup+UsjNsH0vpXZpHzsvP+CcjJKaCEZm6gHllbNsAV2OBTT+Q==","shasum":"a6cb247506f2994c2ad26e70253efb02c62e34d0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600080519-95eeca29.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX0r9CRA9TVsSAnZWagAAA3QP/15pL7UOEzJImuZ/tYxm\no3DJSGITZUIIO4rP4TX2KTrlzIVD5rc38EPNQklp1rxpbnKOv1sjV+d5NOze\n6LzcDPNmehi3r0yDeocKMjk2k7QHvKv68369Sl9713Ql8YrZWfdVSCUDPkMF\nrJV79YloBjI8DWbNIqMTlYio5IiEsLTapUcbuTpy8pDr0WBllVKpJrC3DRBp\nq6t4S5DFyd0zmlgd+pE4xGus+M0BuQGUD8jl6q6nCS/1jMLdFWVNlGbGkNZS\n6Op9n03UnzIKoSLCOzChBSauBfiyVR4uwFArq0cjB5etiRvKODdyr3xRxbfv\nyo3MNkcM3q+q0Lj/Ylto/A1/X9+eYg0v1ka1jCH5+dHC1tHTad4YaN/3/fM9\nMcTzLtMnrXsO31Modp02so8jRcWQFu6/Ejad/1+O/vLhnVpQdnHVYtOBPXRn\nmZrLUqqA2M64rDwmJmhl44KuIFWB+7N94wPLPRet85ISoImQCXWLlK/o4csp\nAtKbr3medYvhleLWxx0TqKFtYZ2C/jvqK6s1Dg854BJdYdiUB7XCQZEmpdMR\nqxelXvABh7bcJJjtB5GfVnJNxya6PCWLRFvHrWGo5lIh45TypupA/IzgHDPH\nBdsuKeVI8W5cKpD1vDpEkWK8C0nXafhYNt9NpBftLqy55Pffa3H2LvWm7BCP\n+6fC\r\n=anps\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEpD2QYO/X95nLLE4TyfsO5JubF/FddLrjj2dm7Uz9qMAiB9iyUBBtPl75hArb3DDPvvxhreG5aQ6Umapdd3SIljDg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600080519-95eeca29.0_1600080637463_0.7175200310614727"},"_hasShrinkwrap":false},"2.9.1-next-1600080580-46209834.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600080580-46209834.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600080580-46209834.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600080580-46209834.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-REBIVLaJ6UloXaetSqrUmR7r3AsVyDsE2TCAIHU1bCBML6G4I6ld+8ZITwxw5vr3kpeyXuSIdrMC5SV/YSj+/A==","shasum":"76fd2f33f6c418f644288185f79fd90ef6107544","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600080580-46209834.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX0tDCRA9TVsSAnZWagAA8E4P/jah294fXKEzRGLzTVZR\ngXeUmjm2Ub/ppHq+pqiKhKhNUOwQezS9mfRhgJcHuW5CxXnZdSMbNrnPE+ws\nm/k3z6q2xH5qH2pfDOH/5xA2rclfKEav9X0bEaxEygdiAi2dzeM63GnnFtPV\nk9GfVSmweHgMaSZCB0b66/yxW5mOiWoU50LoP+OhYfcVme+Nu5EcFqx1EM6h\nvDQFL5mqsL4tmtQmrPRiDgsTdT2NrXZlUVG7qu7Eblp4pd5CDgCZDaMYaN/x\n4NNJXMrFZMt99id75vkcX36HGAzyOuttLqS5uiOtsKv3/C4/H1JyCRzXjEnR\ntPjuQ+ONZIh0cCnpNyxw93DTHsKUIE7RilN8qq7pE4eNYSiISYuVEnznxw15\nZ+hO/7BgjfvNln9KcH9S3Ytd+LdDnUJ4TS2S3BFqe1hN2WcrOxYFkvp7GfS0\nTbp7QQa2UD76NcnC+5DE+K5ffx64wqMG4iGhg6g8e0O2WD69NBT7wbp2wR4+\nNFiO8OhtydAouUahKoBRv9kaAIcz8GAQRkU59htA2qMXAkzQJlf3Hoh2ixwU\nmktSE5bFmVP1nSAAyu8/LJel1I20GCobjD8LAbzPcUHkZ/ok9YiAGQlJYRYE\nRVB78BM8buudtfIm7WwjavGGBUn3gy+mSqbPysQ1ckwPebqeINRWPUkq5TRU\np/OR\r\n=Pr3k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAilZj3VF5tXRiCymvAevBeGpaYcLQaEYLaeOIX04/0gAiBHQEG/jnu4dTxl41h38sJOMD9zQaRWFLJxW4+9BOAAog=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600080580-46209834.0_1600080707624_0.47000896384716784"},"_hasShrinkwrap":false},"2.9.1-next-1600080607-f7546fb5.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600080607-f7546fb5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600080607-f7546fb5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600080607-f7546fb5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iSsW4baWhobYuWJPe/eFVpvbkNGO48dbBKGnXxUuxI7tBs1o7AD4vrzd+75oMUF7qYag7DAGy4vE6ouRqHd42Q==","shasum":"b9e2dd964d489159c3ae7e925557191e1fcce8fa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600080607-f7546fb5.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX0tRCRA9TVsSAnZWagAAjAwQAIPPm2dE8wo01/Nkcrh/\n1n8ZzY9j6r4NKNN5elPtWvt+3ZGcwI9OpbOb7Pf0Z9n+jHKF1cZsojqal3Rm\nos1JDBmUwZ10r+EOi3yxWwUYvii1Lr55Qxoc4eZRZHsUM47yFX7mXMjAD3KZ\nloy1yVM39HknxDp3wVRpjH5EbkyWko9+QFN4euL/Z1D15ab8hV1ZK5yY5BIz\npXYnoyjZ2XkqXr1EQaqnyAm/XxHMoqvobulWAEnMUUSz7+OwoEK9+4E7adBv\nM/rm5HEoJDe3n5omRaJHaVeyNqK4YqQs3fO3cjNT9lu32QgwHPdj+9BkKJIN\n+x8OA/MDg6jGGTCuVwaQIWHLkDKGWMOGlKb71aGV2fR9gTWLXXYklyOT7jDP\nNNQika7g+vEmkiaMWK72/hyPGFZqgTzQd5E4l8gpC3NhCd4zDbiie3hGrc+V\nJWUuJP6lU8JjTsUlAyCzTcFl16R0mn7T6WV3Q/E496oWXYlfAVWTl8xpuRym\nSCH1Np5iB9OciOeXCUt+6m7Q64KYp3I8D+iT8/dH+gjqfKuTUb0ACJGRNV8o\nhtAKQp1IIOm1zeFfzF6O+twGF31KStLI43oCabZdwXhQOmBDdh1uypmoIbCK\nX9IoU7mnD86fUOzn5GjA/NIi9grqSPGDjNzADYgU+ACLjtKnahkwlGXhXnaQ\nNq2T\r\n=Bq+w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYUUOyRsWDhVKmEoMkK7jsAfe2xCZZAdbAv5XN+Z2kDgIgAIDw1cHRAw3QncylR9BFdQVHbgYVolICIXMMM3ZZBYM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600080607-f7546fb5.0_1600080721491_0.01370385712179334"},"_hasShrinkwrap":false},"2.9.1-next-1600080929-1f640129.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600080929-1f640129.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600080929-1f640129.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600080929-1f640129.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-auvXupKqy24zJWL+GA6t2bucK0l4IHP/qUhJDaf1hZCnKe5Td1fGx5B5HIrGvZL2piVJ7ntk8CagYnmcHp/3/w==","shasum":"3284b2a3c69d35c2e3424844675a01d5cf80a05f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600080929-1f640129.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX0yNCRA9TVsSAnZWagAAt08P/2VchYHBCRIySrHgemxq\nBWNPVEPegZOCWlTshnFlz6fUInohb8KOBprC4dpJObMoOwnhk6HqVcBkQqEl\n+ujD7MbbdXpfV6aGUWab95s7oB8xfvHmM/7X/MjTuMsO/N9cKGboT4/6mgyj\nGtnSTwEcqw/6I2SJwPCVO5DYDj022eAxLdWyJ+dH0zexCy8BwJPDAqAIN4Gn\njBfqrPSMegSPVl2+ChyssIG/J73eriFuetZdEzIbYE0JaFSI4n2HB/KKWlkQ\nAe4TmCOxIDDT3Xa4Bn1utUr/BIvh1CYVQWPk9GIkmByw3FFJ+0eTzuKv/CvS\nTFQZel4BRhTmY0ESVBao29x5fomzi5ovLhoo+vLpcEvBb5Jy193wQK32RhLZ\n1gliFIawEnj/vJOTGQohox50qptUi8oMOo6mPZr+SYNnguhUyHHgoa3GhNyk\nDBA7ymVS87RJ7IrP8NvAeQtivoZia1W0GfrAyBBaSdUc2A67gSyqdOKur6sQ\n3G9Pobdel9W0K9iyCgPCtlGa9SnJ0qciJjSeP/HnlFAH/iUPp4QjbuoekL0K\nTUSCM1m8ZxGVOwL2u39yqyuD6/VUDVsPbdaORiMTX7LeHozGgl1BjMn2PyRa\n+r2aMYHnjFh1+b6nQihQue+ilAvdOoSPwfL7zRYHmlKy5a4sXRO/jQR5wt0T\nMcft\r\n=oYO+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGEcmpWDtjF/AkfQNRgIpZoj2EXA7yNBrpmF/l0uaJk6AiAd8jJveHs7VSbr2ywTe8T4d6t8aTWH0AJI36Nnkigwfw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600080929-1f640129.0_1600081036491_0.9779831229168869"},"_hasShrinkwrap":false},"2.9.1-next-1600081620-0e9c6d2d.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600081620-0e9c6d2d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600081620-0e9c6d2d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600081620-0e9c6d2d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SlZETPO9UqxH/mWra5wK4r1ODa6jtFKjwEwOYboz5Uw7nYguNl4+WBCp+3u6nmBWZUfPApCRV4u6SdJOJ4SiSw==","shasum":"23a3524ffc2507db09a673ad0f90f50d5943145d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600081620-0e9c6d2d.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX09GCRA9TVsSAnZWagAAEPcP/io0c6IwZSARYuJ33Xd4\nKpVrTqPe0n13q8L9k14d1XarEQTODbiWNhLxPBndvTRfdxvNTn2kQQeNnVmo\nPhIYpNLdv+kx1kWq6RtrxGUus4BaC7xvuUs0U+9E04FcTBVBzWBrjCLC3YLg\nHzi4BU3ThXftvmWbV0K7hUvWxUdPQ6Xd0O7qZ18m1B4cNPWRNmKnzuV+afrK\nH4eLy9TZoJEOHG0/SvybnpE+rMCv2dbiI9ER+3cWVRHmULmyZ23N64mXoHMS\nPSUhRRxmI0aZY6cu4xWbb43VsRDRNcCuhm48ovDf7vFc6rF6hAsc6OVXJah2\nBfKpGmmwTvsRelIuEJW+4UJXGp2UOS9NipyGthA4OXiiQb7OO8dvukGtgqHm\nI+QB/YL9htZiQ3TRcgOVDHaiwa3qsw20/fPeUjOfcFcn6BnO0NTlTUxG6ue7\nZzhLdQdrInmspDALY5NX2Lu0XJXaJpeck1dxEb0KHbaHjtIy+t+ZRrll4THT\nQ36ZNjDhewHUwHHAMXDQjTXLlH9zU/EkfTkipiDCOVx/NA03/vNLEFVlrJ6S\nbw1S5fq4EHHB9OiVAtfHmNFLjRShA1/R40eETBUu53EOkfpBmIvNeY1CpVdu\nPZRXLIJoSyAUqDiMkamLdccs7NFbKDdh7psmLxIFmTsXPssaIp5RVgyUW3Zi\nCnuQ\r\n=VRNE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCO+SBG6y/XLYLxew12pWE0fR1aleuMIkB0gpIv/m4k3wIhAOvT0WF/yJ6SUibFmb2SaiXuTiMNXrHLQjj7eou7rGh+"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600081620-0e9c6d2d.0_1600081733585_0.6173661263837782"},"_hasShrinkwrap":false},"2.9.1-next-1600081932-21814d75.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600081932-21814d75.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600081932-21814d75.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600081932-21814d75.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zugYhudEQqbgW5ltjwF1DL4GvYTMVRBhvRLCxXKzKTRhVjzMtEnMpl6GUePeakjov+9edVBMdTINEZr5v4Qrug==","shasum":"7fbf7052b852ee0825573d09a226111ccbae0464","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600081932-21814d75.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX1CKCRA9TVsSAnZWagAAP44QAIfSN+hdKkkq7bBeSPyZ\nlD2NQr7A8TOwDzt2ESDIOL/IzCvazCbWlI8xc0kejn6WTNEixfOUFXwCXp3E\njH+1+S4DreiUFH+fgjblPJGbbJtwyCq1rcoJvg4eAXXqGyucxq5fAmahWg2V\n3YxtAyxI9UCiIBKaekE8GlWvsE3snPSwDNhCc+s4EPkF2yauxc/UkiAmSbKn\nRNwxTT4mcuvm44Ky5hxuucIvcNxMuzvAAA2TUDIJdKfTlblfyA4Z9N1pP6tY\nIJWNik8qgyxBCxowFYKUnsrTKujrotW5yQsLmqXjwrKv3bCuyAhmqrO1cq1Y\nMs14c5GDVoBBTG2v93P5Fk8/wFIvViqK2u6A61hgDYy5a0U03jhhGPYn90GS\ndetIfC+kRkSln4ol6Ri043Lo1WTJc/r9Cp61I62JT4scsumD6J6zqnaX/JFs\nhwGzt5Q8mBOHl2sN5ifwqVweCllr98wWCJXX+JWR21U3oVG42d8FEJDhCUKb\nWiByIEvTMqc7oNbIaOo/7SXBV+YzfNDHDdhJCFH/MXTNb8nWX7iUHYlPPtAr\nBC6Me/LRqGW6X0pHB+K43jvX6GOQpYomYoZEXW1ViqdBTNurpGN2+/f//mh7\npjfA8B5Sf8zkqyoVEd05VvJybHkghTSHznyyX3v64GXb24umVNv80K4UGPgO\npcoV\r\n=zwEH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFCpdeB/iu3EpZYA3CVG26FR0tIAdAT9gSPF/L4peKGCAiEAwG8E7NqX/ASn+pMSd1iDww9zXIPmMwZs9fk+0VfIVSE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600081932-21814d75.0_1600082057655_0.6906689349771853"},"_hasShrinkwrap":false},"2.9.1-next-1600082194-3d9e7931.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600082194-3d9e7931.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600082194-3d9e7931.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600082194-3d9e7931.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kVEQJvYXSqT+Tk6CMBEsMAhPaCpi7hnc8MvvveRcEsDAIgiVsLWv3YgCCdTLEuIyDq1Otr8YbSStpi/lY8mnQQ==","shasum":"2d687a8dcb1eca7ac4f99224b6c17447804cb2fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600082194-3d9e7931.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX1GlCRA9TVsSAnZWagAA9F0P/1okKVQst32cpJVi9I16\nI7sGgRY9RdqLXLhAtJ0Bdm6t6bnkWCm4QHT1XMsPPkY6cMHcgnRS30fJlEYS\n2rIxEBKMi10MiNxnmVfxHj1zZR4kqVLIIEKJ34ouusiNc09nPpO1SsXvycxD\nLQdLlqMm6HZo6YNBG6293CqVQEsFQ8KlERtIesyw/RaF2G5SS7uXaWhKzPfh\nR1pzXf5mhLqbMhUaBopODjSBR51EYtRqjzngDo8wr8qv1qAaH3LfcIw5k5Dp\nWEdpYfXKLmrFU9YByW6QVbmg4oXxolrVyRh2M5qnOPUhz4WrvK+ITWTdPMXj\nc5Uku+DQP/D+wIFCCO/c8jxspQxcrED6QnezE60Y8twq8G7v0HTA/Wuthgan\nSmeR5AvZGka4aQGpAaJN0w0ZsN4J7LdYeHURCOQDe0SngAlkVQQZQGo7C+Dv\nHz1tM6myQe4olNhNtTPz+kNEUH5C0/Uq1z/3dwonwD/iu+BQ1PpTs4oXSLfy\nV+ZiGqdYBXKM2S4kfhy1Hr8HDDYKPtMFE4vS0+XuuBulAfFEv3F61gFKND34\nmNhldf+9SGrIm8JuWRyqeVm1ALp5Q1GrZ/hfOak7KnOox7uHXQ1svzqjFP/l\nUn3+UwbtjoU0WI0ZTbv9vtdWKb+TwXb6LPxEMWdroIJnhVdX3MIbcqnu9feo\nMk35\r\n=erip\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID8Uzv9ghB45Jr75aw8u41uXKYJdQzq8c1iiR9xmPvzZAiBKherwkSmorcw2ynnc5PHZPwoh4M93cbn7n3ax2Eegyg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600082194-3d9e7931.0_1600082340791_0.7324281382113154"},"_hasShrinkwrap":false},"2.9.1-next-1600083156-0e9c6d2d.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600083156-0e9c6d2d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600083156-0e9c6d2d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600083156-0e9c6d2d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dAboPEgF7rPy+ayjc/dvyO37D2cnjvstm0/MBg76FfPkl6npuzYTxo92BxkcLa3OfKpjiNSchdC8G8sU30kP8Q==","shasum":"d21da414320d2da2a157e29eb9bc95f998f46854","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600083156-0e9c6d2d.0.tgz","fileCount":56,"unpackedSize":106839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX1VQCRA9TVsSAnZWagAAGe4P/1/JgdfOyUi/NGWEG52J\nAXFXmJNq5wrE/90G7HoP1UoVQ47I4IJ02/cbIyw04bELNGnNaP+MNHGL1VGn\ngf2FpNOJj3gLBrOfz1tanqZ1lE9mQa1sHSHGj0f5Xjrv7YUL36ifBHsZ5+6c\nQl7v3gKM4XBTCW8nCb7piz2nvjohqO6bFlbDfPXKmg/7KttGZtCBJqNaY4Rw\n4Dx95EE2R2njQQ3sYAL0Rn8FwyLmv3bjDThJOWwFumQLw6maYnTUzO6ShzJf\nt/12YmySWgiKsU4oRtxRAo38U+CC9cnQi9CiPAV4JlYmIO3lHRte5lvIrCjD\nnoLfatDPa2MxAIYS/JzTiQYtD3AjdsfpiDgCbUap2341JOkaudZ09DbWOquD\n9ws/lK4x5CEBXpJXi6kTFKVK/YY07Y/CHzHBArwRVS2Olnyvy4d+7mA3UDWA\nxHMOewK5GUVEf0SCdKblriXQUC2qROX+YmxKRpGsfsj5UVnemH3fpPJS8tnl\nR2O6GAvNhT30uvWifGndkhAGSAOuPqHlhlTmqe0Q+55jerIYBk2rSyD5LJsf\n0rVOIPmVtXXzX3t5q+L2REReiWjzND7IsfYJHAjpbMCoPz1S71YVq5WwAdI/\nYvJ6twP3hk0r+jqS+0801pw9ytUoAfqi2rWOHNqasA0cZBsetLcih/poOv6Q\ne5E7\r\n=Yt+V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbP8MyAGyXgLpCW+WzTRAZBvHvoJCaTfLeXmSmFblBcAiAFgHiB3BVECnIGJrqyiGWfW1cOuWkhtUH/toKBjSZL+w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600083156-0e9c6d2d.0_1600083279864_0.18466305990704646"},"_hasShrinkwrap":false},"2.10.1-next-1600084438-449e7fa0.0":{"name":"@xdn/prefetch","version":"2.10.1-next-1600084438-449e7fa0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.1-next-1600084438-449e7fa0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.1-next-1600084438-449e7fa0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-X0O0yICijnYbOoCNvomJ6NLtU7aE90XGgun9nw4YgQVq2UqC6nPOjnizs/s/bg9XQT4HKLpZYrO2HDWmpd2Xiw==","shasum":"38ff0d0d0193a5cf2660c9657f92a754f994a10c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.1-next-1600084438-449e7fa0.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX1pKCRA9TVsSAnZWagAABXkP/0poWIsQu3vyrztJbv9i\n9XUWoYC5xvJK5kp/5QGmUGzRSpdCI5IFm488TrlTq50pLkilKwRxHGcc7cl5\nb9yZT3OpQ2kgaHe7QZSDYv+gZ015TWa8Aq/CSjyT6qLceoxZ5rOgYU9ymm59\n+JS++8hb7LyPdDbHmocneN85BgOdjmVmWZd8/c1byLlSZ9vo4CdKzfHm+t8a\nE5/DWVmE2Ql8WY83n/b49eB+IqumJiHR1wz2QW8lYcKU0wEzgu1pGxWoE5N4\npW0DxciXwcO7P/UariXZxYT/qX2naPyKUN0psdAz7+w8mDqwH4TrLjNYxAkc\n9wOIKJjjD2ZCEl/NYyWFalteGs2CgDOrHFsUqwBnNnXK6GCTk81Xj1zrzXUE\nj3ihWP85GuNqMzwAl9L3GmOPW/7OuL66oT6WgHdy2sBrTO7+wJaZIc+raxHf\ngNNW4rtsqdjdXBIhLZFJA3s4LPzHODcYj2cq9vw5Mdwywhu+RlCh6yJ4gW/Z\nBCq3ETKAbhO6ig87Gq4vSCtHbf356ovjdc/xJFZqalc13m2VD5tYdQziNsQX\nC3fL5emciwybwIdVn7doSdiNiOh3SnkAqvwOBZqDVyA+eahMukwHscrB9UyQ\n2AAUD38YTb/cAi2ee346C4GAsQLLIjUms0RIVGpPFYle33jEjljBrBrHn3Qu\nll9s\r\n=42Kk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/wRymEXTnE3OSHpQH7GRIFY0x9PPem0xtKsxxwTf8CAiAB6A5wMlpg9n9cWDOumokAtQsEEElB7hp25fDXvIDdUA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.1-next-1600084438-449e7fa0.0_1600084554263_0.5349717133774812"},"_hasShrinkwrap":false},"2.10.0":{"name":"@xdn/prefetch","version":"2.10.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.10.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5CUZ7ro4zbVLRZOPHpaf1a0A00TTq71G82e7wanJIGV5cNdjRrSWkPy3Zhx19AHEctgBETRumBjWxlNaEcDiAw==","shasum":"566558cd1fc7eff9a7c488340c43f6cc4560b9de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.0.tgz","fileCount":56,"unpackedSize":106787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX1qxCRA9TVsSAnZWagAAjHQQAJEgJIdlDuEfw+tf0DYq\npzW8LC10ZwOZBreSoq5OVEhWBfib1Gh4jAvg/VoLA4jFY2U7YZWCLZ3vLOBy\nJQzqijuxS/NTJGkCfgqCf9xhSeA/LhEl+a5ZZl5skY2rD3MItHAqA4l0duDG\nBOLpJ1OjBzo4j1brKHl5Ekz4WOWv4L2wY14CywGn9MCp+QBZJm3PdgLm3d7O\nukTNPQBGbcmJnJ92zTJ3tnJZthNG3ejUImC8g+7/tthgpvPnCVNuoHjtaFl5\nZQse/Wlr183uGoISVNPLt6+eYGXk+vUFnCbfOPQIyWbCERzax5CKQ15Q4gs4\nW6MPcsVwMazIc/gqV127eEJOXKMegpfqZtcYSi24Th6npTsUS65BwLgkr0QG\nIOgi93MRBkQcEuQmAuKOwd53j5n6qNuvIZ6UQHwIggYa5K0o4zdbSwqC3sgJ\nb/xbfgBl2+KInuhCtqwKhuy/IyZFMqYHxNCAVvghKQ8Yalf4sXh8qo5TZasN\ndzMRyoBQXTI3TaJPkx+HyqnUwLv3EKBJyuZGoAVvbeJCemdU2lrue2H8gttu\n8EvbzYA1gtXw60KqX6wqOU6EdPTShE/22ghSB0x9z63APebRis0s0T4waRki\nh0jscJVfr10/DJz3zBGyAtEwKYFK6Iw5CscqiP2ud+VmR8cDNuDd0DUE/Ya9\np3ui\r\n=FAM0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFBuC0nmY9ecMXAoCUo9Bnu9SYucNC6TxNFRITZLBDg6AiEAh6MCc/VSxU07ispVDd2y7YSakVvgo9XhZZXq0KLv0Pc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.0_1600084655978_0.40501816332437857"},"_hasShrinkwrap":false},"2.10.1-next-1600087699-9ec9c534.0":{"name":"@xdn/prefetch","version":"2.10.1-next-1600087699-9ec9c534.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.1-next-1600087699-9ec9c534.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.1-next-1600087699-9ec9c534.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-R23nJXXa1qMZKTYc1Mtdn6M1L0UyVovWXyUlH98S+LXP52WBCAmAEQg4Au780w8gioZmBz2l8DqdySUorpNqtA==","shasum":"8daca9abe11c6b4ac3dd8661cd5d94a4a496363d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.1-next-1600087699-9ec9c534.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX2cDCRA9TVsSAnZWagAAOX0P/2oz2pt0zjxx6RFaWR52\nTowlgt//LlxBwK+Xzinao+t5G0FVFOfmSyF8dyfmXnvfEHlFtG3Bo5jWKe4I\nLxPIjr8kcf/HTDMEkek6NMx933CIc9sBgAjHwBijo46PJQ0Zqp64fSaYpLh/\ns4uD/uO8Sz3yblFBIMTd8rdhelUWACBFAt0l20FuU8bSdP4GwCI2O96+bheS\nUa6cKRp5EQcJlmS6kVj8pBm52xRNkkmcb/5tgirJaQuPj0c7a8Zj2bvY2MRp\n4L6iqtPyTeMP0Oz4RiD8p3EvAtzpUcgqfIuseKuukYy8UE2SWtWvYl7w0Joe\n/TU3DWw8oiwybZpa7SWXfaiaDLiGHdO1arGJjbYr6rc+ATdnee/v4o7ntH67\n8OzM1C24QVrcC2jyCX10QERsHMH201kEasggRAY0IjExzO/+YZp/7XHKAeut\nb7Uw2ffA4BEB6OB7aLOJwytH1WMcFSs2vO1EYMYJIOtQFzbp4wWWdqHmnv7E\nL2ZMamoINTBWWJyJLC6KupC0VTsCeZxCtlQdu7qTLQ8hxlunx25EeveLffzu\nwVBRLf8NvMyf6FTCEZM4RUJkhufkzQ3oATW5ET5Oaslmn2sL+yaKGFnzCXLh\nZw/HkS08Ywdq1iDtczozkfKkeMr5pn205ZLyV1v45rw1Zo7LDbDEHCiqX3P6\nqkI4\r\n=/fxd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTMWDaj6DDzmFSbw6k9WKNjU7mPT2cM8tjm0AIBhPlKwIhAINxb9AbGtumdTmm6rQXebxBo/ClhQZKozyKeXpn0r5q"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.1-next-1600087699-9ec9c534.0_1600087810733_0.3122092041418316"},"_hasShrinkwrap":false},"2.10.1-next-1600088600-9ec9c534.0":{"name":"@xdn/prefetch","version":"2.10.1-next-1600088600-9ec9c534.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.1-next-1600088600-9ec9c534.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.1-next-1600088600-9ec9c534.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-D7XdssoOhnfNeoak+hNOZayZ5urjadBxRk8CgK3MlINPQLBVgzB3c1wCv4f2ZK5V7g0aGTu8u/uCSfDIWZ8aSg==","shasum":"aa1afbe99d2caf367e0461a79fccc1f0274ac17e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.1-next-1600088600-9ec9c534.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX2qJCRA9TVsSAnZWagAA+kcQAJHVqSdekXAAAXzNRZ0B\nHelwbkutLoBJANV1IFio1poQAY3DKE4DOe9SD7DTapHw1tPD2XYGKjviVRlw\nO2rmhc3UliNB4JtuOydj3XHGQybyqA5DfdGUGz2oXV+pbM7JjL8GFV7Z8PEH\n/bMbwODi8ia3uccmWPoFAnSVwF1m/padaAo2ztKeTPN+9v2WNsIdVoQUZ2aC\nZpqMLu0QpkQjm9Mthy6Hd2yGahoev7p4QyU/sV47NHfJFaXEZqJRpMKRnhKP\n5ECGEPEFrXYC7Ba35jentawCmI6tKzu3PQ8361Z8Y801BwO0FjmaovwPJIZX\nJGzTaqs3zJicY8WGzRRv/XK9HTHqz4QlNL4rKdXWZYkUsLG64n4wndzLQPwQ\nUnEUuzwIxDRjHQYMdwrh0/r8zSoCKDK88tetc0ZnHieSbLGFfETS27ze2azY\ntzuArfPaT1fcRysP4ADoj1sQBPrQg/pXldZyMzMGkRBQR6TQHh725TkFQBGT\nqQjKaSqTG9oh8a+IzX2HqCNiwLyDBroa+jhd2NYVlRIWuPGVWgJrGSIu6txG\n+4sv0CuGQnDjQmZxAfmARKrw8w65+neNufKQ56I2jdBg4a04sjRnMfydh3aZ\nqgAX3cESiJeYXp6ZMn9/K9J9gtBhX+KntjuE1xYI8JcT6Fwch2NW1/nQI9Rd\ndu4R\r\n=2ml/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIAcTy6g9IMGpb0BtX1ZD9mB8D8dUwBDTznEYC+vdruI1Ah9Vjd/y/F5y13T+V+DAUSc3mmyU4QtWe/pyVgA0hT1q"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.1-next-1600088600-9ec9c534.0_1600088713219_0.7437643671137539"},"_hasShrinkwrap":false},"2.10.2-next-1600089639-baa26ec7.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600089639-baa26ec7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600089639-baa26ec7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600089639-baa26ec7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2V9HtBN39J4xO8lEQXkKJYft/p1fOgzWsCg5vW8vpAJCVfE6f1eevBkWcqJpJh7mISdwkJk7aEfmx839/L8IFw==","shasum":"f65cd4ca322669ab6c7d7a72be023fe04d0dae2d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600089639-baa26ec7.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX26XCRA9TVsSAnZWagAA6kIP+gPdf+2I7ggm7isITWK+\n6VnrRHlDYxsh1/VAA55luwgJv38sIe7Ib3qvtp1wfOFxgNNoioNvk4Js4scn\n6PJFtnuelqVEEM1IO8akOKEeOBCaD3sh3+zanRAwTsymebCYcNlLgNLp4qnC\n4TBW2Rb1kLpxxYdTI5LH9M+cwnTszNufApV99StJDSQwuMu5KVMPVUkxcia1\n+lOUU+oVRqErPRhNIktFZmP0o4u4Cj4cqOX5Kggw3vSiHSEL5uMdqqBB+Q5U\nxKVeGSVytFDdQX1XXYtRi0h1IZ11FBx2XuRueIdZkgZPjlBgwSQg7Vw+tT47\nX5q/102lo9KQDsPrufNmbCPboP3xOEYmRRs60E1x4WGn5LzM+NwQBRTLfCMG\nWBT0oXdE2fXxsMQWEhTHSN2l2TVT2jTO/cf/KuilU5k1+C1VUyNaOvuxMybI\nORgMu3xUWKSdpKe1+kiNb/oE0ToPUWwGC9GOoBiLZTc+dML+gC7fksqTOTW4\neKmco2d+Y+xsuu8pT80KjgqfL8Gt/5LFWyRGg+EHDPFeWYqp5vfwpBGyjN8y\nygm/5L0OEDxmPsqgmUAx9QoZHtBsIeCvusopy+t1hVEGIvcXGbHxecnEcsGy\nERc3lCUrUA+rIG3A10dJsDu80Tr/sD3tv+NOU0XcWLDr+VAQpDaKApgCf6xy\n57ny\r\n=QnXH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfVWcAv61zhPN3Agf30Zp1m3nHJw5WOW2sM23sihkf+wIgAkOCoi8Vrxs9TGZFA/7duAo7pTpxHLLbEZdxNofyJy0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600089639-baa26ec7.0_1600089751235_0.615221711280207"},"_hasShrinkwrap":false},"2.10.1":{"name":"@xdn/prefetch","version":"2.10.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.10.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AVwf6oUQ5hyPYvnzmJtZudKNGDar3FHOdoPsk99rEhrhSXvMCz8xaCwdoVzLl5COjURU3ZprBiZCBTFi7I3MTw==","shasum":"913ede29c8514e207d7f7d632026fcb0fba44158","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.1.tgz","fileCount":56,"unpackedSize":106787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX27zCRA9TVsSAnZWagAAWrEP/3SnF7Ml3ydqF5B0Cro3\nBhNLuPhwxGWba0UirKwkI7On5jHgNW5vqv8FaVp2Bta1Wqn3qPhov7zfPZi6\n3il/p63L4EiXtRvYdbhh6okyZw78DjGBRuuQlIrsz0KT9IITCWpaNXFl6LGo\n5tzfaACPuPJnjKV4nw2FGOzKUT7ocP+cxMbeqkiSLjTtabYDlWC3P6qaoWjS\nU9VeMV3JJk866oewPE6ORGfPljRrgmMlW9P3LPP1ILscsv78P5OL5Ah7s/BL\n4sr8LDsBDvt7ynP1ShwoVdSpqS5LXkek+YtroudgN+PUzcfqPoZ248ThFLxL\nD1TeKunWx/6asLZsHMcIKD83wcTE9S7hGTBTbjxz3oClPGWadIFCUa6yjtdv\neME4ZHobwxp79VonoYBZcCky9XCm9DeAK1Wb8xqFwpuLkhYhpkuWCP12SlLh\n3NL6Oe1wKkJx4lFmDMjVL94EMTQrMGrYv6OJmZWP86DQa1xMX+6sW/mmWuts\nIvvJLNyy/xQqLQzACd8d7P/vdhyP/tJJf0AAxhiXAxoGzefAtZcSIu7c7XR2\ngyDh9th6TUIqhSNK8dwqiyX3VWLd1uMCmRTOvVvPqmpKwu0o3e1BBkOOvR5P\ns7Ro+GtKha5n3xzkiMze922iGuCKHfZx4lGxcw58R3J4A9wOEtCTsQJcIn8G\nP1Xt\r\n=iIax\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6BhgPVUg4V1WKzEZ/L/KwcaQB/31Tj1KIaGEH8AC0cgIgItFJkoH3uNaIJNI4LPkyxkBUBdUr0nTCZINXS69uwsA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.1_1600089842752_0.6548974087392667"},"_hasShrinkwrap":false},"2.10.2-next-1600094004-a6cb5ea0.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600094004-a6cb5ea0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600094004-a6cb5ea0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600094004-a6cb5ea0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xRxMHvHgdKU9azUTyX+RA82FRraR0TXUdpg7KfqAQaXihNWnnn+81P2JEerkyDeWcBQXXzdOErd67OoTZEwDVA==","shasum":"9f6a0c3cb63414c2b058f631fe0b463205d78c5d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600094004-a6cb5ea0.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX3/CCRA9TVsSAnZWagAAuoQP/Ro+rPa5VayVWPsU7xNi\n1MYzOXvaKTS4aExV6ZoJJC5QiVCbD21bnoMMGKkElShjHX6/1VnnEAWNLlao\neg2c2xqHpThWXbxUPMipQ6k/GftxQDgp67zOqyqgI0WY1HcBWGRzMBdDiiWb\npACMBZwUz4NLoo7+M9sO4oq6enarzjqTisSA1iq77Kt73wPo3wRbBFYiuyew\nlPp+1P5cdDFGUgxcvA/VjjKBF4jkIvR7g3G0FaAEi5OjvBRPT9QLQptzcVH6\nqfoMH80bcipovecYv4wwmlCJgzYBMr5JKT8BLB0scK6cI6TRNkAypeU4OfGs\nHJwxzUS7W5m/djKe66e74QUxdrRlntixumERlMnmdTPBFXIqpj8e7cbtGYEg\nE/oE3EFF6om3G02RdhmyCo0sMwYv5iFPEzaRvT0FC9orWubUZ5no6ueMdEu2\nuKOjJedPKeslAqqrz8MJc4XvxlR+ct3+SkohfplvOVIKEs3T3WgVrzBHUtzY\nNjjQ5jlsGkWvkIyKa1xB4uP2XfxFZYHKeW4qAW8eEK/vf1KTD5u5htvH6MPV\nfFtmLskO6x4hhKGxabEqAHakiC0NreUhHpJdm8yhnQwz6l6KAdfgiRbhpxnX\nUNOTR72BkWH4sAUsYY/K8AldkcJ7m3nJr2W5nyQCfu7Jw9RXlzKy6cfdjD1p\nfmAZ\r\n=A2q1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpwrh8iQxlOtSfZIsoF72ncKMZblVJCGbG97kwgYj46AIgByJta14GiakYtTIoemnkIwyNpD8V1ECMFnNhqexF5ds="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600094004-a6cb5ea0.0_1600094145910_0.5754514906690507"},"_hasShrinkwrap":false},"2.10.2-next-1600102746-b1ab38ee.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600102746-b1ab38ee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600102746-b1ab38ee.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600102746-b1ab38ee.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eQkaude/OJ/DNLAXtrPaRk/hU/cYWrfdVLh5lcoOxYVOLJd/JP2vsdk2wW5TGWoR2Nvll0TrvAYAUmQoVoccIg==","shasum":"c3dde785215b33a2910221289486b4dc3d9c6e70","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600102746-b1ab38ee.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX6HNCRA9TVsSAnZWagAAtuUP+wQNazaiLf1aT2kl7mFr\nphiciVJYJBdqShoS4CbyO4M/m8X6lKNPf1tv3ifWR8toTPOTVy4+fSSEUOJe\nPZNRu7HuYF3xOm4k7SUs3dKOoYXeSEyG57XiMRZWW/7TmXVhsGILSpo/1jvA\nv/gznmgXeePwpvHkxu54nuzG0x0bcHGek1ir+XLmNzAsZ6yZxykMmlJPamBr\nIBSdExFoB6b/SrlnARj1cAQb7uwLn6MAEto1HIuhScUjJGXYDoT8AAVGOAq8\n70IQLaCLk0lhMeIjA6ux9nRGSx7FkYfC1/3Ommx/eSu41FUuzloYEBpGJg1Z\nMCUn7KozabEWGcVUC/eVVOfe68/E29NYdXLbEbf6+bUNvuLczGg+GSTyqvGT\nJtLKMPLOh5l7XVhmPt24tv0zJD7a9eLNyXSZhC4s13T1ccezt1jQhHI4JINA\nA08DMzDyMOm0dos7SvcVC2tntr/dlv8lM0/Pr/1eByha/cMz5DFL7Juqcwov\n6g3HSKhRCXfYJNrBlhd04KeSyNhNEsojtDBdkzF3jEx6t7RoXyqdlQs2O6Hf\nKJ2QovD6FclMYnt0dYzi5r5wYxKogGxaWFsCqq6nWYsOYSbrI1VT6uzPKcHI\njBGixCMwVSIrQ5UuupV4iIUjKHWfcbUtf4FAChCxH0PQFZNHAKTVvPa2ReRb\nYfOd\r\n=W61y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcATgHkyHCD7xRuzDPYyj70YbWgkLYRtWLmrBzeUvu1wIgM7rXV1UxjEPtK8ZK8+Jzd+/vBSIS9igh0UQ6EZeu8Ws="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600102746-b1ab38ee.0_1600102860670_0.23297096459012256"},"_hasShrinkwrap":false},"2.10.2-next-1600107614-9cd3b3c4.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600107614-9cd3b3c4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600107614-9cd3b3c4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600107614-9cd3b3c4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kxa9piVW5C5JHK2YC+dRUPeRFTclqgJ+X67VzjrSNAx59lgaHXyGKB5/fwIjgu+2czaPr+XBhu636PoOeyDpMQ==","shasum":"22ae2802b2ad921c4d640563000b044f2e063b9c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600107614-9cd3b3c4.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX7TaCRA9TVsSAnZWagAAoFAP/0IYQrtY5oaNl/tP9X/9\nmoO1yZU1+cJ5IctXu8BNUQrlobjDrQZ6RI9rZE7R4Btd0uen98e3BrW7KmQh\nZirhU1ulRcmxnY158jA4aNR/vKeSItRCARoGMru/LfpQPpFyb1oPC9xKu+i5\nYWiYcwUS6JXYY2LOtD+4gRck9XnI8UDsiTSl641OO8kyp1PKOhkgTYkIHDRj\n1DaArUg0gWKGgtohkYCAmhUGPGdOl1MuoziZJpZ33SCs8mm0uxV0sVMThHaF\n1QFYnvEywCjqISJF21w4lBH9eS/WuMPhCW9LgqOdi7sp+3OUZS0O3EEE/Opn\n6p7qIT+CVGzZNDRbc8shaQ6EWWb6YWF6kIctq01TSuf9ALeS9a1bpV/PaRnH\n3kVjxLQyFGiU1w6Rl1kJosW3upf8ZZh5hiuntei2SxxfsvX5riArJSoo8Dca\nY44Hpqm75BNXs6/b5bUJDHZQIChgswgHrspsUrpbvdYGQeEwBkE9rt1TVoeH\nGw4Yk/6Qit2b63/uvL9aIc7xmGQM9PXhm1Kyf4cXg4xKC0capYWCXJu5SiUF\noh+iPWkvFZc7ngKeMSFHlc+9JonFt2imwWw5M6ddZozkxyt6NtIpSwFU2f4+\nQUH/dYNMRTShrDpkDKNaPEpmtoAnSq+CoTyaawUWNzjCTzjN4o4j+ZPIUR8b\noyQs\r\n=mXp0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgnEIdbg53cN4v5i+xS03qAiVO9IfwgGA6wo/UhXWCHAIgA71gGFlasOBRBgxD4jB/ZIbpZ+qoUmevSaG3EAyhCqQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600107614-9cd3b3c4.0_1600107738219_0.44189558929109674"},"_hasShrinkwrap":false},"2.10.2-next-1600157946-d342b075.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600157946-d342b075.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600157946-d342b075.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600157946-d342b075.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-B+KAinccm2Ufo2aNY7I9k8DO5eYFgJdD4rZfyIZcdRSd65pGOvtE2m/giXE9c1Q5B92m+QK73Tfwfv6VY6N+xw==","shasum":"5791a81323d0687c9e1ebc25c4cba0a27658f398","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600157946-d342b075.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYHlkCRA9TVsSAnZWagAAeVcP/jq+FnHX/pJvzCjSdxjd\n7nmMT1Ps8bZSRHXOtU2jY4f5Y2EuoYLJ4rsHeRbDkF4cHmbLEEjDJsTULlx2\nP3dZHtl9nbL5Tve+Mbd4+CyjxvT6QaX+2SSk+rDkt+Sn9No4KlwmeOoiqxL4\nCaTbnPcP3swGiUgm4uDEgHpWcHiNWSubWtJd/soKOZ21HTUuBbqlDjz+9mX1\nJFFYIK8gTzPp8ubl5pk7HzxQpZ+E5JzQ3UtCg/Ph6NpneTElzFvOqSzCN4/g\nYSEihbt3Y2Ol7j9pHpn5h/IjkNTNSgLqM6RviAq5Eeu0o6D9js8Ubm3t5+z4\n3fAkBf5ViJF4JOa+JgSefBlpjTEpdJF69tltIQLboFt9aE0TwHkxMXPheIw2\nBsKtMqAYifjSDUZvXR9RoIhcd+obF6PGOIZjTvj26lzSgvlQFb2TMucNpuvX\n820eW6vl/aCRVed5GKTyvINboNmhI4UFeChTDySP8jz76+fuJ01/WdGjc1kX\n4PuDp+yHMyX1sgMCMpeVAZW1sNzNiwWVBLtLUv+80yDnn6xVgGCEFWCjlTGH\nU6TSWmeO8OiKiiuft34I33MCcOWuSeZbqKzRsXrqKJuqzx2p2QBV1XuQxdAk\nuIPEEQKXO++6V2o9uC0RdP/NEm4joj2Frtv+A4Olbsfx0mmFcMb9932Ul0XP\nVPDc\r\n=XSHj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCo3OKceR/ePWMcP8Q1G/pL6env/9b4tS+3ug2kJ2DYQIhANPXIGyoOCvmOQO36gfg5rrNwNrQKZZT35+5mloG791B"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600157946-d342b075.0_1600158052157_0.898721847607169"},"_hasShrinkwrap":false},"2.10.2-next-1600157983-b221159f.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600157983-b221159f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600157983-b221159f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600157983-b221159f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mWoB6L/HcvfVQNVrBt03VElFDO+fJmy2jdiHH3UY0UMFxad7v4vdSP23Ma3S9owynliBtaolyYIfClKVp2jvcw==","shasum":"ca8474dc8df9736e3cb19fa754090210f2da9253","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600157983-b221159f.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYHmECRA9TVsSAnZWagAAV+4QAJcXmKD4H28Kp6mZaxYN\nfbBhhMmP+f2+neosLdvTgTutgJtvQSzQjyIXW6NUOdX+vW+VVWD7wgkxewfW\nCeaGvFNF92cS8a7CP5taVX2NZZ1+ajETRXpWWm3D4kMPzCuDxiPzA99sR4Jj\n65i+LPddUxAwD+F6KtRruZio2mKvulJuIAwIE0pUJkFgPY62C5TepjFzzqTo\nZNxeO7W+m8uKsEjbHZ4ww1mmX0DpeaLj7FGp4E0pwnmjZK9tIih2OcB2gKRE\nDHLhjbE5z9jEaXp/d5OSajSt1xcXxCqkuwx1Xw5S6XCsX4iRXdSDStbpqXAw\nEIQF8c6RHCWyrEewCELuY5bWLOKw3G8CcmUPzH8/vQfdQEgoTVeAA8E/amVH\nuMpgb0sdFWn7oIF7lbwkjGgIfulfaMBblwMOMq/aYScz+G4KyVvY9yLZJni7\n388Lwi8PQQ82xnqcKDEQbTP+DKvAf61gsKuWIXExvPecITbDNi/qAcqzqE8s\nDDVQsYLlocVSYI9lYsgoI/FMzOBDG5ZYI8o8Lzkcsr35MsloVholzYPWW3J4\nwcjsPjCU9uK2f7kLfS3YdLSDxL9KkJk1IxmyWFjqMnnDMvDB80DYtWWQNomN\nY+1l0rTqIYAH0BW6zHP0AnBS+FfCN684RkntArE+xuhdGW8iTSD0SeLk9Lwp\nZTB1\r\n=nReA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6V8062rL7DpZC3/wfyjmF127OLzIIk7cEEOOqGTXwdAiEAj282YKHBM1CcT8Gfz2pctJDI3cnqDwGMLMBfvvBb2Ws="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600157983-b221159f.0_1600158083709_0.003034048218854668"},"_hasShrinkwrap":false},"2.10.2-next-1600160933-3c3444d2.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600160933-3c3444d2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600160933-3c3444d2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600160933-3c3444d2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8BofiI5179pdxBWmFvMepFdvFmHLkQX7JBDKzw8GGEbOXyHeT0bbx/3pA9rC9rxAaBhMzydO8oR0Zhka5EW7Jw==","shasum":"8397ae57e2558a3b5206f4bfedbed584011763df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600160933-3c3444d2.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYIUYCRA9TVsSAnZWagAA2bYP+QCMehu6+PY9JEgUb5ag\nX3UENipAs8ZgtODIkfoEwxSA1wwdhDfrDGsu0A2VJt7uv5COMrcDoeQhPk7t\nS8A6KSIE6YWAQ7wksnb3NSd3X9xEDpzVwX5ifZcO9ThdsGKjmrvZrF1QkqUa\n8+obOgmU1lShZ8sctvJCbAVT3Ny2IVgQ5hu+WrVupCL+eGX6NLKqEMbiQb/c\ntD3W73n3YAMlG/DbCafIM6wmNRN8iAy4On/GNjjy96qT8zuq4fl9dNsYqCof\nJ7632V4l7ijEZRBAq+YcMPzQt8dJQE+OHdoTWw5kr3qBNWnygr/QfyoKV7LD\nEinrccWjJ3GxEzpZCRfeNlIXRHhCO306dLz72xq/FxCqQ/ITmvUVIrm9H+Zm\niYD2pinQ2HLqWBBBKQlDm4okneMxcEjYqi/JNjTwWrx4O33Qym6sy1oJD4Sa\nP7nMiLSiM51obo5h9Gn24U3RsKwkGWgx25m4rkOU8vMdZuAcWJagY0CuQhjt\n3FAD0nVVDPnjO8WI+31QY17VfQeL5T8nWuHbngZrtEYfvZ6bUARE47X/HSUN\nR316XVp9CZSU8ygVuH3SQxJm6HnKp7e0/JqKCCUl2JrZ6hA4dsJXA5aB4ER2\n23eXk6FqUSej5dEni8pMC/ll2kkOBZdWVCTc/6uT9o54P8mqwAOfZCd1QiuL\np51g\r\n=yC6l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJJT0NRtvDVAAQLrIurU/DuhMS2a55Oz4wvw3BKjd15gIhANdlAeu+1O0P4GduzBUCJCNsiaRaZgYQg+PMTWSIufw9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600160933-3c3444d2.0_1600161048480_0.9204387790399664"},"_hasShrinkwrap":false},"2.10.2-next-1600163724-46defc31.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600163724-46defc31.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600163724-46defc31.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600163724-46defc31.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-J9EU1XoDcj6M+zqZOzCJmYlYwXnWyx+SZFLb0zGKc8RkiGG6BTgIxWjlsTd7x3KZHyPZI6OdR4LisNXrFF9h4g==","shasum":"b629c1fc57da207f280c4745aa0ccf66f2adf335","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600163724-46defc31.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYJADCRA9TVsSAnZWagAAlDMP/31zbK9MzVFxJQo7oQ9p\nGwrDegf3bCiU2cnWqvuFZhLGQE+HsYh0iU5CrgV/PyMe0mXV9Fv5kisXSa1P\n0iC28AqeXlszLKEp7krHKFDmdUD3XEg97UMuG7luCy5vX/4n/hvwawsZuOUz\nYf07lHkJQk7vHEETKUB8ptQuD8RiZk+Ph/IVgPIqDb5MrxLTitKkDaNjXXlX\n8P92eyDCbXM3atYBAtVshWS7l46Op7ZM/F1c7EldbwxJKhbl+ovO0EFZ54Jb\nAxyHZoujzf3vvonSfgQDx2jdJbQazaenTUxRFi/Nq25kx5+rGjUzgCcLHiIZ\noPJyN7wgxa21OK8NxCQUNa2CftmIq16sjDlBvoWuR4uaUPakwHRFh1sNNiac\n6lEHEXBwqsDcAO+HtXkJpkSJHXtxHAj82DvzHa4xEd1/3ZPUSEhzJAzHSS6U\n/WClhEL5FgZ8VTiLi/vPEUQTk6I88sfe7oUMTXPflghW9CJpM/hkA36ESynC\nnTG0ZiNFGzEFxX54KNmAGvMRwQYdcKeUGsJt1kqX152LZHL7qtIvSpnqQvQZ\npBV4RooCipVcxbLpjYLWtYh2W77Rfrj6TaZJq9RUeO4Zjd7zPNUix5V5quHp\nw2RDZH8tQzxA3tCcb3sl8yREoLSM8KsbhmyF3TxW7vWz7hLbCfDw424aSW5k\nfUSp\r\n=m7hE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBExmpgP+RDvYYNhDrmV1Oy3ffaR3bB5aGTJjQZRzW14AiBqOEfOzkWrHk6OM0e2PVdZbRPKux0i69YiKdvv0qoTdQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600163724-46defc31.0_1600163842765_0.6301514040385339"},"_hasShrinkwrap":false},"2.10.2-next-1600165323-9b11b3d7.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600165323-9b11b3d7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600165323-9b11b3d7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600165323-9b11b3d7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ECalt6s/mS+rigX9PbbVce48bq+O47ENtUQY/Ow11IH1JvSC7fIMo4aj2GN45qf5WGSbiEfBtar/ELvTbzHvKQ==","shasum":"08c7ca9f18ee9123d9121271eb990234d08fdca1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600165323-9b11b3d7.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYJZJCRA9TVsSAnZWagAAAboP/ialTkm33ctlstaFzfxN\nu6fOdMWYht+6yihK8kHuRDWEkrelEFUZf7NiCaVIDW1cXXBiGcfV7GPXEw06\nkQFQLn++hodQi6A+CW3mAqJdHY7SWNWPHcki7ecniAuY+EU7Ua0Fm7UCiLZB\nBIB68fgD8JKcpyFs+ggLr03ktdIjO2AYaSLJpVn+L6bdc70///u79E+rPRzv\nvQ3OdtE3/Muj889NCbQ8fjFoZRsRxa7YD25dqdALL/5+pIz7zaIQZeyBNoxm\nXqyP+2h6B0ea2MQ3KBrXapvXTgsAt79K/+E+q+6KSzWFeIdYGRue1I5pdvLi\nFaUYISAU5B9G/DMWZPHs0k3X4bcfAfELAfsl3CD3M6QPgk+PdGHGMn8vnJe7\nVCD7k0nE+e/yI7qGpUNJee60HZaCmo0vaNKAEff8mjVLVqq7cGMdAI7DHam8\nPaGqGE6vRPqHrPG2HI2wa/CKG9GCxZGt6iqsBw+I/YKWC69xU7p5xmpakJ0N\nq9ui9USU0zy/GCQQzPwE28eC+1HFTL3PuNRar86HblOiUkDF+LTxaWhsSZ7O\nCENa8LK8xqiaDPxPV06eSHgR6foTLKczKNLdBzw+iP/L0ZDe6vhNMUewTmEm\nJtzCTuj8mqUWwAeHdGGLy56UX0EMEQDujRgH/GmM1ytMSrEn936k4+POJsGn\nZG2D\r\n=dBiC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGxztoI/vrejkYopriyPddY9rgb/DWJ0eWbc52wvA6ecAiALtvT+a7I/sRHLooG9TET1XwXm+m9M1V6YOahiVkBKfw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600165323-9b11b3d7.0_1600165448689_0.5689660912171361"},"_hasShrinkwrap":false},"2.10.2-next-1600169926-1ee6c708.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600169926-1ee6c708.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600169926-1ee6c708.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600169926-1ee6c708.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zJsGjB54jntOSsmt9XjT00KLm5fIaToM/aY7wrdwSKstiO675wK1YWoxNvvgy95dpCSSuWzsPHUUo3ASuVseEw==","shasum":"74c1f473136a2bb03922d3c6887551f3bc30308b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600169926-1ee6c708.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYKg4CRA9TVsSAnZWagAAY+MP/A28n/LRHMyLxeArODMH\nAPny6AnuFU5g2bCDYtRqoVsjIJsOv/UzXFKOFMAHlV8oej35yHMqqV2xIXOn\nr3bobaQjjeJ2b6uWLHmHsXdqSk9BWcuN+58ManCBDKQT+fKs7YkoLGp0dzEf\nWwQQ7gSU1iM5dxhLBBr7yp3Jg8n0mtcO1F1r2DSB77Lw132H48DtWCXc94Fo\nkby5dwu00VJgCohJPrVuFND2FlRVy1IGYMFTeIplwAQZey9U/Ip+ukQC8xp9\n0oe+n87gB0IetRCyoQHVEyhRmrGkz9toaLhiItabBwwkFjfCqA+oSn+t2atR\nenh3ZRgOzcKxZQZ+EGYBc5i5ceQCVWy98mGO3MCcuCDqXG/UGKHHjZ4iSHig\nK/Jc9Gg3F6rFblujTOTJnyJ0jSv8qmESoK3y4AiRVUyZmQD1/aePdAmeR6Ye\ny+ju9FPEHWMt0TppBodXTqKc2oizE3CognpJatYbaUEJI/tXmfzoUHDwYO71\nUYpuX7y3AeeibNT22YypkVna8Igj09UH1RIb3gXFlZba5hW51Gi+Lh/Pe2x+\nZIut6T1cimKutAgYgn4Th1WIoxHfZ3a1WsB0Ppt6h4wdgXr6QXXl15UHMv2o\nTpJAFujDoDbnkFkz4PE+i0xDQAGp/f5h2MBJFe7gcXv9f0nbEKgqYH28t+Vi\nDrE1\r\n=q4zS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICyACBF+W9dYfyBFg2cV+hrpR6522a2R/vWK/8jbdZcCAiEAic7c3ndoNkiobWQMcWtEueqLGDASeeuisQMkMkpwERc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600169926-1ee6c708.0_1600170040489_0.3718499619551632"},"_hasShrinkwrap":false},"2.10.2-next-1600169974-baf756f0.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600169974-baf756f0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600169974-baf756f0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600169974-baf756f0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yeiuApbwFNv5XQeTf7vGr4LcQYbhbrtb3y7UlNFnCeWXioVyoeeX08lKnQALURcGR7fErkofRRHxmccrSNMeng==","shasum":"adbca703f6d0d4c3ad82d17d66fba59b37a80c10","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600169974-baf756f0.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYKh6CRA9TVsSAnZWagAAO7oP/iFzeOaOpT4xL3cFm+Xy\nTW9UfNFhRRVihR6kC3qjyHXD5d79ReFDAsYJ8n+zdKMwkGw9OdRwtvoaFGxb\n6DiN3J8/asR1jQgCczLWrlysOX4+ST0aDuN2K3J0LEBTH3pnolppbNpcLFET\neawAfPXgBQ1mazTP7isw8dRWojtYpmXFNiG/dUAodIePaJHhwD+jvBA1LLwx\nnR/KzCeR6UiaAAAlLbX5DM4nWpNdRtg4aj8kJCRu+duw9csCol9UWUa6Gcql\nJkk/y2ouFLWpiHZ5/FWrukb9/znZ5ZUWAdTBQ+aulP/Wn/mdw4MXepP/3wh3\n/0hfkZSmhvzkNXZkaRbvJEWiD4hoiPtDBOQo1+CbzGWwOxYYBgu8o0UbKnUK\nwfPPjPLHDNjVp9LU2NtXuLNNgDxSiX+bYKNdBdNrK8et//P6/CAmHkonKgUP\nCoyN45g52W4Vwhc+17zQ/jYUEY1ojE7wdHEcEgq1Cfe5e3YQwWqezTwrk4Qu\nfqBjm7TdBNEeZ1F8yp4oNIYnpdliEO1arkg26jH5xmoLR1VQ9a2omWuH3iR6\njP+ZxtNig8KRMassnQfpaZud9iWobqY7JgqX8svom5kalMGgZFYRuSaJamSp\nBalASchdvcF5Yuk3uLmcygMqnqMI4m4ylYxh0Q6GMe6snExblrarSB5FP61p\n4sKC\r\n=u3a9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBg38eGymk2K0Yxr2Mc8Z9XGM4adNzfOJeX/P+NJFNJdAiBJyC3gInJKCVeEZ9M9VKOC2QG/9BRSJvstBgBUIttoww=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600169974-baf756f0.0_1600170105769_0.03676387508894852"},"_hasShrinkwrap":false},"2.10.2-next-1600174602-c58e66b9.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600174602-c58e66b9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600174602-c58e66b9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600174602-c58e66b9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-R/VNMCm9FlbJ6BGE+lCbTpkllSt5xd4yVc4exM7tlNS7Pp7S8JY2GWntGO+Yn6kGYfvaV+Gh1id7tG4LMywtPA==","shasum":"ccd0633c52e694c466f8f125422dac25005b848d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600174602-c58e66b9.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYLqICRA9TVsSAnZWagAASoIQAKArO0CLP+jnpD8kvVx3\nxaHtgo9zd2PZgiG5ikxEf5XKtLIFhzlPXBFD/zvHRjahIPMLpe8f8fIJa5Hp\nd61xrUOAFFIGBskjDI9pWqWDueQ+etblLcaZqGheBGVI7JUrtdfs+nFmR9lt\njeMzSiI4ySt5trD2SVU3AXMLy+2CWHVZClf298aERm4h6NW0kx6OAupKxF6z\nmZEoRR7CHV19otGICebtyHcPq4QRSgs4NyGh8XfUVkJv5PBw2fNbkgsrZ29B\nDhqhik/enRyfUN2USvn6gtMH9b1Wj+r9u8kdDmcXaV91inJN4HB8eZUp1Dcr\nxb2UTxONTbb6XnIBwAKTsP/5HdAvDAvLFFL7hI2nSdPJjL2zHykFZ3j3IJrA\n8v/yvKRwPIJYw2KCm3tIE6Ad7IyRlkZ3KE0e6zOfHCTdUfqT4gDV4COQGKTb\nfab+tSit18TWYKqqFQ+TDftYD1rQPxzCQ8DSBxbSnuAeLByawf/hbRwFPHDK\n3vaxLyQHGSe72wWz6caFSf2sI0EmN2S49dO6ecf+7XXlGRcIs9UmewJV36+P\nk2md5COAyh9M/Zfqcgp1UCG6XHScWteX0WoZBtYnWinLqPOKNX/gLbOHwUhC\n9+3SLTVimRT7qfgoK/zqXU/y3T9MoK8xyBl+fWP+bv7nSAIGNdqHjqwJS6p2\nUZPr\r\n=iZM9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHNVn+eQSrTsUiGawmCmWmrVqizvNNj83r2UEycddkyfAiAHj7TDItgomAWntTa6QXImMEaqf/9fQvPe5peufmgNtQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600174602-c58e66b9.0_1600174728052_0.028657264673439764"},"_hasShrinkwrap":false},"2.10.2-next-1600175634-c58e66b9.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600175634-c58e66b9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600175634-c58e66b9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600175634-c58e66b9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4Zh3kMlwFTCwb8TDy3azhLB0rUhP1L53nRyFL5sMU3LhRCxdJE9XgEBXepd7r1F56M4O53Mr4531Y42Xrvh1eQ==","shasum":"1bb24a38f065086da22fca93549988cf534c0bb1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600175634-c58e66b9.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYL6LCRA9TVsSAnZWagAABEkQAI+hwhfjFl6OKxMcw88u\n9MV9UUEkE5CtVvFLPVS09Rgi6qO7q9ywd3xrdad5suYxLSq+QMIRsro0Mo4A\nMzUUiQeIw3ZC/k+JlrQZ8anEPGfUSPo14qfOSn6qzSW+xwlJkQLH6uXDPD6u\ntIiLcKXI6SWWsUviIrKagng97jqS2lmSnqJghUJ7HBUPX+lezVjJA+QdPXaa\nr9pICKQGkQoOOgY8fZVQR3P8+dWWk4e0/a1SH/sN5vY0YhjH1p7VUo0w/Eer\n81Ivfw3wlcLE3lkha/vJvHujMYbN2rsTTHXrxdNtJabkpB0iu8V1PrspG76l\nLRfxKIg38IsHb1yeyFLVeRdRFE6TpcKpiSfEvZCNamyKX0Xwf/7OSJOh0Euw\n4aiFsgUcpLngT/uhLjy8o24Gm/Y7aNVRC0jqtAn3mEwMGsHEGlAwdekxXKte\nHXP9PqcBvLe3LoqBodveVPMyMQyAyjxFDlqm6PF17M0LHxCBpsriiwQcoDcN\nFcCQXYL+aAIMgJBoLPZ7jHjOkbo9mFuJsH6o+BrpE0dDXMojff6BZEyFzo9b\ndPFm4fERKYtB48dBn9Md4RbYNrj4ZfJoL/Cd24/Ct3B8PbmaW8pnXEbs0cse\nxtYKOuVLQZIyE2qvmxPuVHv9rFFv2bp1UXqwRIHE99Yeom+Sp6FyZgik1/lm\njih2\r\n=+SvT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA8n8wvN9fGnKyDrlNc4VD3h8AN9aBzszHuS+67iEd5YAiBNfNVw3iMlGQiu7G+SQ2uWNa4bl4QhPfju8ZXrTLqy9Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600175634-c58e66b9.0_1600175755149_0.586853153264687"},"_hasShrinkwrap":false},"2.10.2-next-1600176932-f11d6186.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600176932-f11d6186.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600176932-f11d6186.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600176932-f11d6186.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-IgPsfDybjTqDVrslTlEEOJq7cNdEbNGlRHtmS8kEA3v2irNYEx7KSRfZ0fwb6X4kIWw9sm49/hcW8opyre0Gxw==","shasum":"4d43491bbecaf1ffbb8ba849c2837c4e419b82b6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600176932-f11d6186.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYMO1CRA9TVsSAnZWagAArawQAKQPei5IUmyjDbhA9r6H\nmKHNxqdXUEr4nL7kdI/M90s5FEeEPZkQdRXrjoxzEShOjirqk9qU9276xDIz\nq2VUV12IUzL1ksj6vvCSq8//P5TwQPWeSM4pYFQV2wFaNRkVBqhAjWORs4jU\nXYXU5NLW950oDJk8SFZ7itP1/k8JtpkMG75vaEjSAGoHclFKqmPwEM1Y2krx\nFIiDC4LPEijY+EWB8OsBrjqHkBG7YCF2WH370DqsAB7f2+gEP/3o2rIzwbqS\n3CRoRdHZ4vXaiHkyN/4rb6HbB8qgvJIN2SxYHx0P95iYF5lUq0WI3d+IiFrd\nWy8hzzYiMUTAvG90otAKpA0Q9kqzfJDu6l1rTTJECleVSI4KjFLl84V8uD/B\nHAohjTUYrWS65h+AY3k57dy/abR6t21SofYGZC2sD7Yb9aPtHYDdXKbVlxWv\nkMLx/7xKRXwjWPbndzpoxGX+6o++Z6YcS/eaykPD/u+4oLjUDMh6wK+Mr09E\nOciqHnFQ2FkPIwitHk7F1/cCAW9B5QdG5436K9l69zCr7Xx1yPr+vEYBf7/7\nlqMYgESFQzNfz+PS8Cfj38BfzUsQ1inNvHD0jDvNA0nRdqZLOAdvSGCp+F3P\nYWDTu8d7O8x8IIePqCEGCSpMDVe+ZmIjGAMsyIg8aQ5I/EMDzYnCXtndN0yr\n+jfL\r\n=nKBZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH/hrcJQFrfPWhnw+HykzAwHQeCvBiXIsaKo8ue4NG8wAiBB8X22QzYVywwkkumUY/iNHLLKL9bBCPykKHHCOcTFRA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600176932-f11d6186.0_1600177077321_0.6929120698972042"},"_hasShrinkwrap":false},"2.10.2-next-1600180055-890969e4.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600180055-890969e4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600180055-890969e4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600180055-890969e4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zfFL3mLP6ILWa5xYDLWPCi4s/eXyajol4/YKI2rYU6zyfGLw/xkjayvVC49FsO8Rl3dcfF+KDNhKO/cxHbh48Q==","shasum":"030982b197d90323dc4a235cbdaa56bd5e8adfef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600180055-890969e4.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYM/fCRA9TVsSAnZWagAAPewP/0pnuzITpEz8ZTW8vXUu\n1cXaqYHAfwMTHpF0whI5HzDeURAcJcBfly9dLM7LOq5tRO9AEp5EsynSDjQV\nj9K1hWjGleanZoEEgzZset/hME9PVfaKZVpOzXyXG1FjvOw7QkmJRUG0+u5o\nHlO3YbIvdrepE225zSTrnJcRHyfvClhW+QlP9YzmQYn4QMK2GKxX0/bt5KFq\n4NTxUvAPrqqLtyl9fu/ZjBJs8fkfbm1y6cpzpmg+di81G+J2wcyMKZQepJbB\nm17/cywvyniZ8fdqUfOS0FQ5WqED/w9abkDArl3VHwCjOK7XNOui+nNs4cjr\niWmUDWPpz2NqklJ05rvIpQq0GPl6v1Um9SZKvZtSVtex4zHFyIFiEkAHPlcK\nIJaEPkQF8pRn854OxDJAB+Ia6BGPr7g3Z3XmzqVc2yf+koYgZqxZ1GmuqOWN\ndAnMselCeH5/+V8DIU9KxKj801sFNEQnhgRXPIO2oy8X30532Mg3aVyndr0x\nqGU8f7VmWUHPgyeINoGjdNnwjXY7P8JJlAf8CFfS2FEYm17x3Ng/YQmkX2TF\nm1TugFl2tKQ+B85ACbF6INzFm6sezmOU5cVrJbFy1g/SsDjbebRA9g+53MXK\nI/heT98MZC84mr+AqbXteXNmT1D2oSVRC6dCtnnRoJoJVi407YmBf6Bh05Le\n2oEy\r\n=okxS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBxrqLtinGryorZwxtL/9idF5Y6x3CVuHPbdWQwhrFOWAiEA/KIDO1HMKLwj59OArXhOdJswwmAhn5xjl78DoeOCjgI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600180055-890969e4.0_1600180191436_0.703412397382724"},"_hasShrinkwrap":false},"2.10.2-next-1600189214-8162bc0a.0":{"name":"@xdn/prefetch","version":"2.10.2-next-1600189214-8162bc0a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2-next-1600189214-8162bc0a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.2-next-1600189214-8162bc0a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cZXNDgKRe6RV0T2dlY0D416qxQ6pN6aq2kAg4QBkVA3Zfq09V4Cqy2blBppQyQ1FDABsQtjdeswMpBZhGGV9JQ==","shasum":"f4818c0600b285ea4ceeca6f5d382d9e2a04a367","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2-next-1600189214-8162bc0a.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYPOOCRA9TVsSAnZWagAAvQoQAInR+8l9P7hxtbWbrDdY\nXgeRQ01dUn4lCG78X7UnDwXmagminDPn5T613HF65sRPNVyocQPOvfDqS9I+\nSj0uNbJ67aEGRki5b48hpc40hkdtp7uAP7RArGFBhZRXjdCSxmzi6tE0R6u8\nGB5pj0yHBIbszsyqhCrxBTt6JX+UIu3ZxpH6p03wXAXAwlE5k9NLV776AOzS\nMfVXMfPRy8PFsvlcbgfm+/4hPCNva5hztYlEPwt2ZW9h42sMwoTXNpTcvGUe\nqcWXdADNNATmNaw/qp3BBc9708HWT1zsJytGoWJfJTsF1Thg6l6dQbU3KkOD\nWKV244NBKIffXrd/EkZqoNX7oIZfixkwkzvUuuZxCea1d5Z4TkfnTfm1OYnz\n0fkoxPjrBxF9A/mUA1PsvsrTLWr9DU1ZWirioYtaKsNTf244fRmGNiaaxSnN\n56RbtESPFihHiDlv50ua4jBNcTBZUDp4D17npvKwHzsMbVNuGN4wjfNocaIG\nNurfHKgVB+EET7lJ4pMt7stiBUoSpiU0qUOXc5LAIrtmmCHfNTUvAxDOzYes\nRT8I531SW6UW64cBbhWnXrB8EPzYn7rasH3M2U8N/tWXqMgDaDsz4dUVXJqe\nw75Hc+RnLR3wYjZqCopVale/mLDWOaPnRc87vypX7PaZWtMhv4to7EaVOodp\nqjN3\r\n=0N88\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7hDakCka3e361QcM6pexPZqH7XrrPRybNCUFtBo5EYwIgKXhVRuc6tslppq7R9G/XJ90WKJ23euALbOrNurlZA3Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2-next-1600189214-8162bc0a.0_1600189326036_0.7368220931756926"},"_hasShrinkwrap":false},"2.10.3-next-1600208976-0bfe4d9d.0":{"name":"@xdn/prefetch","version":"2.10.3-next-1600208976-0bfe4d9d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.3-next-1600208976-0bfe4d9d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.3-next-1600208976-0bfe4d9d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XDXclRLwWK7adCVQutd20RgXsHz4aPccT3vcGFFvybYN0f3BnGy3ZgqrDc4FNd6PfC4HZOHE4aG5ZH8pI6ybOw==","shasum":"13918934c9cc9b7aae6e2a100ff9a189d1f6ebbf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.3-next-1600208976-0bfe4d9d.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYUC1CRA9TVsSAnZWagAA4iAP/1OKLPWQCpnVRqUQ3YaH\n5p0AJ/qz0j1MhDOB8vE7pHRm+BeAA5tOZ7SfRurajJeHxiHW/sn8he2Qm+Tl\n33Grg7KaATyGBJhn0jTjtFAHNgadgfn66veclnGT/6c2zGAgxMrU/eEhRHVc\nIpcJ+3uMcNZXDTvDg1Etr5HPC8hTiYu9h5ssJS/MJgk/p5qAvow2dQaqGBH7\ngm3JlaGdnoHUsdHq8PgnzE4rY87kQxkRqGMLLS+lXgzeB60OqcSC8/lnOKaO\nFXcwXrlsu/FkqQq72BWTxb5dwi/+IPoHFeE5KYKJWR7TiMba3czqUtkiOrJ5\nIA+ERiA9awIenJ1phyMeozzon6SzIMKrEBKDrsqApFkkN+r+bWMEMJ+jsEzM\nkj6Dt12/hQ2XrKZZyaYqIbpuJEf6V/kOQSllsx82gGYIhwoj4ilF4Uc9vT0M\nAECmYZwQQfz4x9eSXbAvwcCJT1YAeMsg24W/gkg9VBW/2j97ugmfWjZ8znJR\nsGcIC/9Gn9ZxrElrTkyUmBNR/jYY58SuaygqZikfIW1er1OQET2mjxwEV2uK\neWuXPpCAGsTwhWzjKnpXcYnPCffTBUWDKjeHm4RNNqh7tw9KbbTo745msJk5\nNW3MPpeEaFVRQ3XKYLfHDWlSBRsZyJFyeFsneaa26OqH+QMh+Lf7taNIVqgd\nythH\r\n=RKa/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIQV3s2/WxbhGFgFD20geB5muK4qsgv2TuusbQe3HjcwIgH3b4dsk4q3DCpPGNTWLYuMA9Zg2PYci0ocBU8ENfhMM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.3-next-1600208976-0bfe4d9d.0_1600209076510_0.5868801238127346"},"_hasShrinkwrap":false},"2.10.2":{"name":"@xdn/prefetch","version":"2.10.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.2","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.10.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-T8CQo1vsLTmL/tIaKNQT5z5Ea0uVM7qqaONvLSSzbl9Wx+0Syy8+vuK+mP0Cocj9R5acoWqHk++d7DBDLkMWeA==","shasum":"66e83a2b1f558e4e327b2feb9c711164a87c9e84","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.2.tgz","fileCount":56,"unpackedSize":106787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYUHACRA9TVsSAnZWagAADnsP+QGYdlg6qaRpYCOhaHEL\n/DXEBzxmOLpb6DKw6fVodAVNKM7kvtfp/jaVHZnnpx27Y8pynv2rygAR+tn4\n4+9VtatHMZYXiUKUrU2FeuwzzvSZdj48TlumvPnj2p6SiDVF6VRziIim6jOT\nuYtn9AQkW++apGSN7lniC8n7Him85iwwZrQ618Q9dpN8zl+lu0a2wyUDoMuQ\nZyK8Tt3atspJcYFynVJSkHRnxfDHkhhO7w45xX4WOCHtSRv2S+p0VIikfXPk\nk8DSlJjlfuuAZ2LqW0ioh1MG/BDbv6IAd0RjPuraiGLsA0/8bPfzT1l/n3ez\nZkP9YNLtx0Y6m7GYEyIc9Yo3vIsXqKqLuRvLToY6GYSKPxyY8S2h7teq9X2k\nteLdeYjaS4hGOdyUUHwhuvhiJ3mIiJrdG3lJZb1Br4m8kzWUBd0jUjEFE8BN\nXxLYqTj/iIjDzz5SVCYWu8xH/0Rs5lG2lKft+9IZYL0sw1QAWUfeSOXsufUq\nLD7dhLYixgDtkuW6pFjzcv6ifG6Mm7RWfjO4oIqZU9Se9N0lhfFSjSW/POa/\nVJ/KdWmDIrVb8cCYzls6rmoRbUG+jjypXqisSEdvAfsEZSFBh5X1tEGuT4QG\n70y5Bkb8n3CgS9wgvtGGxHv2xOBryfeTyU+abC489cnPviUIzkMx0UuSFL24\nCOQX\r\n=L/Tk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDj9IzD8NY1a3y4WfeW01E8+RcZ9JSEoWVB1ViSkBMtrQIhALkyo3HQrL1et/2GEaVbkrq9P7Rn27P+s1W/yt9g7Xwu"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.2_1600209344356_0.6342463075674909"},"_hasShrinkwrap":false},"2.10.3-next-1600209409-1fddd2b0.0":{"name":"@xdn/prefetch","version":"2.10.3-next-1600209409-1fddd2b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.3-next-1600209409-1fddd2b0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.3-next-1600209409-1fddd2b0.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-bEs4kUPn68a5j3JtGHz70eGMak4jGRNf1aDCeMPvvkwX5js9Sl6tA9+vQNDMrUm8DyRNWyFgQ1CIpUCJlLMBvw==","shasum":"42376d62e0b65fb5307a8e29ff96df13264c8e48","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.3-next-1600209409-1fddd2b0.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYUJzCRA9TVsSAnZWagAAm+QP/0h8PSEnT3QKax9Thr88\nl5FDrPWq+vaZPy/QuHIaSCQufMCM/BXle6aKDVyrQr4fhrRuVtI8uIj7TeHb\noQc7L0FAUxJIZfB3YpdFmnoziAV5JKz0tLR/j3NpiSJ6m1wnw0H2m6Zuqfq2\nwiCzAQaCXmhSlVcov5vxvGRs2xPHt/I1ezVDGGAYNqtyr9+5nES7crs7Zdl5\n3P6tncQ0hnMEcIpLw58x0lLZ4eCl4gzQ4ulc/YRseqek4B68CpsOdRWnaqC8\nIbtO9GWr4f9JETcP7PYKnGLV8sW4rIHh6xWsBWIcZlIDJHtjucX8VZFonOlk\n7pfcbnoZXu0O3VMUVOYkZNHGGrFQdEq2JvNlAjwl3bv2nQNJk4wyERm3NBO6\nJ/LCZ2w0T9eBZO1HEX0krIBjrpe4svNtgqOfHuVuuors5Jy2ru17P9UTSKFB\nA0eU0G54kDsQ5YX2BvY+vNaoGiZJtlmgn2qSUkAVx1hBzEn9j8te0sSLu67m\nUyHt5s2VD7HCZAd5B/yjSjSXId1KPcdcDItv0jDqLNqYyH3ot4B6a9WZS5hT\nBy3Q9k/ugUychS76eVCuJOy/MFuzaxgV2Kxc9nNzS6DL93pgMX80sEKLHZUy\nkVId9RbkdvDB6ozcSs6UFPx7oox58X24DQR+LMmYdH2i3E/10D+qp67D4wGj\nnIl6\r\n=iU54\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLuBsgf4DqHWM6CJWFp9z4xJ5PhP+SRxCjQVq3es51xwIhANjCVnH+N2VjYnKl3cHw7EGQaPCfBYnQ6Qwff9PYt/jd"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.3-next-1600209409-1fddd2b0.0_1600209522760_0.2903706826475123"},"_hasShrinkwrap":false},"2.10.3-next-1600209430-58538973.0":{"name":"@xdn/prefetch","version":"2.10.3-next-1600209430-58538973.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.3-next-1600209430-58538973.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.3-next-1600209430-58538973.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tt+DkZpVpC0c/CfcAhg2710k+PmMclMKxjINd63K+20q9DDWWQ6awpSzu//6a2/hrwA4Xrl5SgTUqCPb33sSuA==","shasum":"e6d6d9820d1a571991c6af08cc641d54ef4775c3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.3-next-1600209430-58538973.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYUKJCRA9TVsSAnZWagAAe/sQAIJGJWSYMpI8rVOPfY77\nzKnPraTZxqx74vbEgSXJl2BfGSiip+PsL66Vs4J0bz+4qVDRrXrntoUfJEvC\nv2rC03SVRV4iqrTECSilcWb2G1Ico54k9+3X2lkF8PJv1oKFUobqCrdV4z1a\nEOVrOwistTGWaAumyf1xUB+Nz3wpfcV86Wtyn5ZTvX4oyDRE8S+deb3Vcr8n\nwsJEBhSCckeUlflUUEdlJ2pCJpVgalCsQlbEIRlz2zLo+T2dxJxbhlwNHWEs\n5wO0upKt99fnBntL1HsO6+AWsdB0o454g+fTCEN+8skHRKokKWLQ+tMjhNrO\nitDVWncHSJ3dW90/mSu0zrvuadRR1N0sFdHEDWmCVudPS42xk0uZfwSaarJb\nvN5OzsS1eqw+ntYKxpt13bIrFTS/mdoMujHOqzuCjMrwM7InVp5kuP4koxsX\npXo+A0Y4P/j3/YAKviZ+bl83VdZ93wbIneu6WkKkSBG+2cYTWPw8P7SfYVUm\nyonA8k7ZTyyuoIRrfUwAX4C4gqINAdSBTeahq9amQP0z6mNH4uXeMlh62AGG\nEwlp9BlQL+KP2Qd1pIpc/sJG+MKEghPBgEwGUgLG7jevMTcfZktnKh6+kAGr\nukRckzoiOWB2GUomBYFPRHi8li9DQlk5OJMkCsbqnIfgfWVPFHodPj9UjUkY\nksin\r\n=aMvA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDj5A/cxSliPF9IMgyb+QdCiG8kvQ+Sq/1TWL1BTOcqjwIgIU0ztlt4Pv+wNBg7D6a2tADyskS8VcIhWT3UXX5pQ1U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.3-next-1600209430-58538973.0_1600209544583_0.10517942463246732"},"_hasShrinkwrap":false},"2.10.4-next-1600209476-13b92983.0":{"name":"@xdn/prefetch","version":"2.10.4-next-1600209476-13b92983.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.4-next-1600209476-13b92983.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.4-next-1600209476-13b92983.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0zGSmnDmaZYgfilOQrDtqptagGupOCtKC26fAGXP2OSLUnHUOnKIX7zvaUJrMx6J+aNtA0Y8yHt9RLBl38I+iA==","shasum":"90188a5659b5087e52c04de434962bd899c38cae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.4-next-1600209476-13b92983.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYUKxCRA9TVsSAnZWagAACEsP/j2kAPI1R4UuszUrWJgV\nBI3W+N7NBWztv0oS9E2yrRuU9GH06KOO0CUBagi6YkB20XSJrowoRuC7Tt2c\n1WtDcJ/YJ7af1SXgvBZJLq+wHvXbIYXETRHLatcLLJ3ZtLcTFhOUMlsSI7Yq\ni+8a6gT1r2wlOkEVSPkEt3PITcvWb8fAWST7HtkQeQd1TgmIfCCerBVvbpVH\nUUuNHF5rUkguIuvcEghyrdHbEqmZ3j6oPC9Ec5iSBOZtkADbpBQjr2nvIw6c\nGsfpQ3w6gqj2oEB2INM6KWOLyextadxNJ3QsgNr1Vu18V2IK6cVoYHdv7+x7\nkh3DZAB50FrtwMRQg71Pnss7Pmq9NGID9n8GyQlsYKKYUaVN0Tol35GpzafB\nE03QYN+JNKkPonBBQdTq+JFM4BitWcAYMqP6CM/JjuQqRMD4QmGcVyvhFXIi\nSvlfmvyJcjbkGT5ORarDBTc4ZQHX7fk1YjIH5NfJ9KmTNO0uiA4p6zLw/Y9U\nOv3VOwBlSCzLkxCwHcdP1YlAw4M8b5p8nCygyUoZ/j/zzW5pWLAZbNMa1KKz\nf+BAOieABPLs1BMh9Dk5UcjNkZ9/xFTxaDlNxtsp4rtXLbXJyat5UuYdL9Qk\nnnNnHFZ7Vdgvu+GBZorP56e6k86VOx5ujYtHlGl+7DajoUQFSaQAy5aIEaro\nG2Yo\r\n=fVmN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEe1W0hmrgcO5ddiY9CrmKVak4+3U01OvGfijZK4U+C4AiEAh6YsGSvccnBPqLN2r1HSIoRez8DmkgksqcRC+1hX2rg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.4-next-1600209476-13b92983.0_1600209585284_0.9640460728833886"},"_hasShrinkwrap":false},"2.10.3":{"name":"@xdn/prefetch","version":"2.10.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.3","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.10.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EnxlG0jdF4JtuuG0n9jcDJjfM8ZoD6sndtvr/GuAYg3kRWN5dXmIoaCTuGyTnE9wQIM7IqB1vKzn5gKQ8YdtkA==","shasum":"4ff536d70d1be37b10907023b7828e0c1dd6e3d9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.3.tgz","fileCount":56,"unpackedSize":106787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYUNeCRA9TVsSAnZWagAAKGMQAJyoyHz8WrURxG/C+jhF\nnDEMTtQ2QZdKZ1cP/9WxuVjoRLZVy41gVazgyB+lxjfqVe9t58xA2VAVC0SO\nTlok6jQWWXeesTYIHfTlKSX8Fhiq1bxFEIXh+Y8mJGDckrgfUckBfjDIqOwG\nI1aojRbG6sTFsyTvcHdUcNnGJDX5UzLQPV0FCYD9wl6ruLlZ4DRUkcRyjkX2\nlk7ygUyFF6LWiVRbt9xRcPmocE0KzgR5pbu5xZQj1FJJnYMK0Jkhv0AIQq1C\n2+DxaGZfHDY1BHeFnQhwWKFwN5UeWiz0jjd/UPiTL+RS0/hx929/ay42uzT4\nDR+fwuLqboBuSzZV0WxDo4RhIpPJ7S7sTF06wDUoa3rSGT5OmUg5nOA9UOiL\nyhTnopzqZx5pXHrLJ0gku+pE30bu15eMbGiLn6NXVKSOMD5CB/WUeWdsDUCF\nPxJnL850I8l7SomwBDyXJgjW21/G2C/kPawhWkcHXaGM5lKfzqTXIiOkyIap\noI6BjXp+4xidmUo/BZjqjgEQzm+3rNwphNq1cDMBrQvbYmMOIO1epPepNBwF\nlzJYJltYJJS/zNzhOa6pyYWFPcrNeacOlsM4n25KsVKnyCGoQa9x8LmhsrkJ\nos29V97ZLGRSFGWDGTJi7n9GnhEozIS2tQIGXd1ZpcXXjrcROLT+xy9mp8lH\ngi57\r\n=gSG+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFENU43WJUqBmG7Uo6XNiO7Mt1jGcNtQBAi1gt3BXd6JAiBpdsNaHil4G/YLuD6cu/BtQoANaz4aDIrYjMIDznPPJQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.3_1600209758060_0.69234664844277"},"_hasShrinkwrap":false},"2.10.4-next-1600247712-5c135ac9.0":{"name":"@xdn/prefetch","version":"2.10.4-next-1600247712-5c135ac9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.10.4-next-1600247712-5c135ac9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.10.4-next-1600247712-5c135ac9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2FE6ZtdiIemABq2SxJ8KMDBaUDPBKtpMZW3yMyXyVNpqAfiocBbF9PKorj5eSnpLIo74yBKrFB+m1TY5mDVFOA==","shasum":"6e43ef23cf0ad94cc9a7b33c3696f4e160708cfb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.10.4-next-1600247712-5c135ac9.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYdgdCRA9TVsSAnZWagAAKSwQAICe6gWNNYR7HoLsbrzE\nsHvyvZUaEx+06d3+owFnfv5LQFwweDD15d63uJqInEWaVFo4YpN88rPmH+RG\nOscWwfnrsMqahx69fIbr61awXheR0d4cjrCtLefhetVj67N9rQaerWvJK3Ql\nNrgLf7p0QwcflsgY6Z4pqpaUrZh7xMowqBqY/f2SaDsR/8VHLv7sHCcCMmry\nynPP47dTtxO3a2J1eX0+ya6DI7oJe8rCjnsgXMnXE32d9o5OtJpHjFn0GMsA\nlQpYTruSfJ40a5n7kf11xVzkNajPBUW8nCj+IKd+ap5AlPi20jgmTb8YW492\n0SofhpsOi+KWLqmdcKjsFpOI5zAtTevjcc+sv4/gYUHprvhNDeIHbY+z7VCt\n5cXT961OVZby2c3JiBaGfCoZyMiN03OsqV23wkOV10w9E32Py27qqKwoMuNW\nK3r1UTpdNuB1lphZa8sxzWLOLv0peF0bikve/vp+VbFxNsqAli0fSVxc0/i/\np4eNLnRYnh/9rWDANwWtQK2Mi4HWq8n1wNoN5+hZ891EH26N30IH7lytIy8U\nXhR7WAN49EpRzRs1WL0Jc1O2i1RVLJv4l8Jmk4dmbr4nJWn3mk0AtImSwMPs\nIr3yQfqasEpmWxsqP0VibCOFxj/kjtn/Sj65wn/LWhkBMx9JsDN2nlvPSnM+\n/ZYr\r\n=6B8o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJredQgUImD1HFzyGGJsbyRDJR4fHBLPHn8YWcLknNbAIhAOYO8VlXeTkEBGTyJioLJrUUABOB/fejWWbV68eGIcOq"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.10.4-next-1600247712-5c135ac9.0_1600247836650_0.024886363699115233"},"_hasShrinkwrap":false},"2.11.1-next-1600247788-35fe5a41.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600247788-35fe5a41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600247788-35fe5a41.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600247788-35fe5a41.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wLp7waBoUqgo3XlAlcLpfrSz/cXDOQTOyz+NReEIY/OK91nj0oq3hU+8RXwPmWOBNW+LqOb1ehHP/0tNFXqbSQ==","shasum":"01b24f56d8bfea5225086b729cf7957986a5024a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600247788-35fe5a41.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYdhvCRA9TVsSAnZWagAAsJgQAIqdJAqhPoZHP6ij81I0\nJZrnE+IUE8VIdVqwD4ad5hOIA1T2YJAyBqof1mjzTnAaTYaHMKDzVg/a13U5\nsTG1K+kjgbZgkEW2TvecWJFHtWN1mIEyiSFtTCus+mc9HUMbQTUCemd7XlHS\nnklaRtAlT0oLwYLOEx+po6zRmnLXrP/5S0afbsW5+9y6spjPtOaZpGNe5o0x\n65Gv2B+VIcKo3SlTJ+K22B29XesQZHmDEH3uieFoYwZIDCBad8yBwiRO5rES\n79uklCbf4rR9Hk+fp/s5AdajK9aOy2498Zq1vPlxQx8kW27I2XWhI3ikS/rE\nw/uibdE+iEdL+8P9O5JaW8PVBngZYwK01LVgAq2FPAOWcW57zN1T+9y4DL/T\nXHcI59rqtoJujLwCwvCYyk42mtjdUJX1Xj+FHKMPJaisIGqpnO+KzxR1uM40\neVt7jCVXJTSFEuI65xYO8afIKrKfwsGUTchdFpCeA7Xs8Tf+KsMXudKXheRI\nPxNKPkRKHmzqBZWsT8j1AzH+PH7qje2hdKm7qvSp2X6oG4llwPwz4P4ucnxV\nabtQazpyriHUkFqX9oGpkXfLD914yA65xRDmVNSXacRualzOiuX7n3hE5/CJ\nOhEFbJLsGtzQuleDdX2IzleMxK0mvTf+v1HRAyVYr4kOcDlLl1eotIexCVQA\nZU3Y\r\n=3PKt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDyYMn4E6bKhvoSAgDQvmaWhb8vkmkS52js1DK2tfhDbAiBM9MVR/JSk1Ga56ZoU7k3ILIh0PTdX6iERvhfJnHiyLg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600247788-35fe5a41.0_1600247916357_0.3426204883757049"},"_hasShrinkwrap":false},"2.11.0":{"name":"@xdn/prefetch","version":"2.11.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.11.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JdmBL7/CgyfPQYEtnCYWmjxB1jUJinxsvkZbe2F0DzmDEOw+ODIwEAVwd9fijc1nYgubHi3it4NZ0FFRud8VkA==","shasum":"52669e66816f27af7dfec433f9c80f7fe6c69b97","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.0.tgz","fileCount":56,"unpackedSize":106787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYdjwCRA9TVsSAnZWagAAr24P/RQM4tb1g0/FLO5zBkPI\n3cU8G0N8VQGC2+eESKorWvbBCsr+1Ny3RBbAOxbl+0w6AMnbHlFizJzoXU7u\nr+hDww32dhOuzb5+ACZA2/IoX0bzfrfjdbqa1XKHgl1xc3GY6ORRe291sAlO\nxb2AGivG0sCV6350zk0VQqtlbyBBAWb+k2fTbCaZoU6BhHGy4nYq5PB9p4CZ\n9YvtcvHo2RmLUauo7mnNVo/D2g0TLsuR3SGQhmgiXQki8YyJxizq323/IVOm\nLOW64lQbZUeMVK3VvGgpUcbTQI0ifCjU5SAdLkXUSqLN7dJZoILmlFMW9KLI\nFQ02y0ESZbwoSHJbYFdtU/UzUNuY4wJPvUAFt0uPM+CN6JEL3OzZ0Bi9LKzz\n4076m9FW9qe8Fq36xotQRBlPKbLvILTc806gYi+g7EkdoSawYHfTxgJoSUbW\nLn7+GI4PPnsmPmZW0tT2Z4eN9JKcYiMvnJ5f3JKBo7IUXLJuT/9dILCS8dFt\n9/dte/LFHt7wpXGA6r2rpOAmXoeFs/4CVNZZidDh6MsfnqsG+Dl03Kuj5tzD\n4JmEmL9u3b6k/KXRrd/K6K3i5m0T5yCMFiDNbfXaLKi7z1pnBWsKdhLqETdz\nf2rKBX4EA8oQE8ntdrIhtpU36NOFzLdz2U3VQ1XFKZSaTza+9kAH67I3BnZP\nd5bq\r\n=oqdM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK5zJX4o7o4vpGkHIy0P4EJgA8qSTyKHM4C5r7NugJ5AIhAJNsQ/IjVoE8NU+hGc7fUb3OrhSF9xfRfV1A7vihgLG4"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.0_1600248047570_0.021265530033378388"},"_hasShrinkwrap":false},"2.11.1-next-1600258759-784c8c55.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600258759-784c8c55.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600258759-784c8c55.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600258759-784c8c55.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qtfbVViGHcZiWXPCvSoP+KdPDYc3p4m1J9ZseG6ZX0+s+7548srJvhdgjBsqRV31R7CK7PZXky/4vVYW4GSjJA==","shasum":"c249287816f15e56c88a439fe8c61915a8dfc5ea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600258759-784c8c55.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYgNECRA9TVsSAnZWagAAlsMP/0OeEE7FRw8tukb3lV+r\n/AaWJTnFCV3zdYUp+gRH4qAsKCH7lG5VnNWYDm6A9qPMYSWdjd1z1339VKmz\nJ8bpCBdXqQjnazxoy1VfqmTZ4cKwE1Wx1DP5wiEWdsAW3i1c1Lp81DXlG7kh\nMhsuhRbBw2hi2tRyeLppIuwJveaVaSv2f6Zuv0MZMplVMF4JagGvPAiN4HPa\nIiTPClGckiDB++N1axkLnDAuxgEB3ynoqBg5r2LsmZ6SkyvmVfqJKyjNXDO4\n/ZZtXqZyPoJJlZeIIgUm+RCX91pbQl1jPof8EpDLP0JTSwr157vS7tpMExrn\n1No6HGkKbZIhS/QbELn8BvlFAQC46jC5RuenxtFCWqeN7YvBjGvkUoFkqoyX\n+BDgSGkBkGidt+i5zZ0VOqtwRcEvn+K9giiAxw0/c4236llLxi1pXmxOULkN\ntJNTK4EwhDmq0MdgNQzL33yxHhtWovVUk1krJTj91/j7mFr686HT/6fRWsXP\nTP34xOJ5lb2cC+/I6hCEBQGcFE1x4FfvDc68e6GTOECGvNj29U5l6TFu8B/Z\nT7MxfocPKX8vHByrj/X+UTzc4snNnM6kYL6zOKTL5gSadll6d9sWM2b7cTn3\na5zvXjpSY7wy6WyuVN0I/QLYbvNeBmTONCkM5vAM4phrH3op7Vp6cg6CzK0p\nHccd\r\n=3Mxi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPTrevBXpc3VmlfBi7VY2btMNGnYb1YqP7k1cyxJgOagIhAJNJBS0n+/ZKouRC3a7o315DlKW9HU1/S4mFSOkKlvRf"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600258759-784c8c55.0_1600258883965_0.5478942435937628"},"_hasShrinkwrap":false},"2.11.1-next-1600262867-fab9c480.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600262867-fab9c480.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600262867-fab9c480.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600262867-fab9c480.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ok3SXkQv1/AmvDvneIQor1hSS2Bw85nH9PF0J2u+j1FCFEc3oFYnln19hXx8AiWb+yizk2o/Ycmc91ZlZggc1A==","shasum":"d1dd175818231fb5349fbece79869b35a7b4bc43","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600262867-fab9c480.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYhNICRA9TVsSAnZWagAAsmAP/R2MqD7xgtCCHdA5IVaA\n3iFmjj5pt00rI9JfSSqR5hfNr5X7gwMq25c/zrUEpmWHMhqkwcWdZcc9XG+Y\nhO26RaUi0PVVKb1PX3adcJOxOpH2NYSegnB3pHI5u2WsPAhxiXGksyAAyxkR\nvHcUQOuf9cCzYjQBUovFzuq///KayVTuWxIqeCzoz16T+vLn9Ha3ri4QvV0T\nR4wKjlqhi5Gm2BC7HN8Ynq5+OE3H2EOmx1+GRZgEuJ5k3+rIvH2aT9ED/AvA\nIcLC2EmcinlYeIZPNIb5i98PnBcMneZ0zI3cOKo+H2VxdwQ7gZHFRDTYZNrR\nE6NkqsfX65uod90DjrZfa7LFEaBQtr8d6TkNTH0p32NvqJ9hcg7pny4JzqCT\neNpndWYkXN5e3xXEnRrDWrOMuS1skg4uD2moHnQLt8CpgTxNgtyzCjyUZnj3\nhlmkE0nPjkX+q0qnYip5l6YnXEv9lFBwVRsRIQgwDBxy6ydjZkTht7S2rc2C\nlFY46EYRhlVHZmP45JnUGpBCo4DQ/gt07NZVXOrPa8v2sE76GvQKLzMZy4sQ\n/dzZDT4gkPTQYX8dngIz6j3JylT9VZC3rZlEpvpdpjyUV+p3YMmQDK7dgRZj\n33CZjs1aaK6vjRihkeX2n3CUnPeDb3TAvidlKMOer5/WDbctshR4OwgeUIbK\nWbpC\r\n=5qE1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICxIGVOJoTG/QTwGuTF1CpBagfKJQGPj3fCiMv0FtOIRAiEArT3AI/rX+lNHSbW6SKAamabs1jReVs8p3up6Ao5pXSQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600262867-fab9c480.0_1600262984305_0.701417568428953"},"_hasShrinkwrap":false},"2.11.1-next-1600262916-71fe3bbb.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600262916-71fe3bbb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600262916-71fe3bbb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600262916-71fe3bbb.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-V482YSV0IhWRUEd5FUl7oSs8Im3TfFBp7wq/T5UVTdx8pucfbvPgvfOPZlO71jrQizZlEECGY9+SbbRvuw8KbQ==","shasum":"483cf841eeb902ffab8ee6cd98aa1ed9bbb244f0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600262916-71fe3bbb.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYhOECRA9TVsSAnZWagAAzX8P/As3kGOcpmoqwcD8MBkm\nAqMLUK0cVSS5qLdZfMnlcu7aTYWNGeUoVhY758wNiFWwLKN8w1MQDZH3jql1\nEnVN1rdPmyVAqjI4cxWBVjXRLtCLNGHzjmqBAmQ6Pl6mp2UJgA5g+tcDz9xn\nxKnpJD9GIcjOaJR2WZqFpI1PmcURGUe1YzrCrm+EvysC1keWeV2LC14zdUrH\nWy9K6bdIIIq1kjG32/XjgzFQeoSGwoAiRlEKAVFDriBeGtBD356LvXqJKvgU\ncnZqtYvIXEDNla6jRgvd6X/a78oVwwKAc8L4B954qP3fAsV6UULwvjxqFSzU\nCsWkkfnarVKKIiVzhNdOE8flZMjFXTTcQJn5/XK9zTpoJtptFeykW+QDgO/N\nRsC+z4DBnxVobBm52cfW8EUtZeaZsF3OvAt68oUOuMRmiMt2P8Ih9HHC6l8f\nxEOBPh04wlxZ3ODJktFS6CENtBMi5WCKTcXw8RAjZCO0ROzHs1/niBffUgNy\ntY62Y9H6uWaMczMk5x3FaLwAQi02Jujc51WONYjPo2TzoMC49du+Gf4Km+Hl\n4e+hQxSqz/5navk4o9nfrToeQxHO26SY+bNfPCLfk+BtJL9r7B3epoGWhxRe\nqeZO6tEZLQi4ixNkOQkCeCc5h1bii0urKqS7fkVUTVqnD9AYCxBr1PAFAjI7\nzcYL\r\n=fUAj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIpsnTlRYkV1qxyAAj1EetriPxr/cWsGPSU0QUv5GP2QIhAJhny5BYs3FSvblz13dxJrKSvmW8Gi4J1rmFS1bPIWx/"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600262916-71fe3bbb.0_1600263043539_0.9379990245391014"},"_hasShrinkwrap":false},"2.11.1-next-1600263055-487c5991.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600263055-487c5991.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600263055-487c5991.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600263055-487c5991.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SW0ogevj+Yd6iSkdbzygHdL7hzYkIJl+uqJs3rWHuTMnn/bbbch3i25L3ZYN7DRqHDpkMJPtk6uYeVT6Vua9hA==","shasum":"a479ab1b8cdbacf8c7475e24ca38f9bed0315fc0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600263055-487c5991.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYhQMCRA9TVsSAnZWagAAVxwQAJf4QoqrFHcPxXpwJcA1\nVMZt/8uTFt5KoWt3x1EuuryUh+bV13JWW7oeQO3qehjP9Pf9ICKlyuPpuD0D\n6J/Q/pSI4VT7QSOb0L95Wzl8BVCB8E42YzRya9MyrfAc/2F+a2iGONsyuuAY\ndL+AiuBYlD5VyljtUm/dtbH7q74Y8Xcnb9Kw7WLSd5q1by2eheY2rK/xbQ+O\nd7VVx6HJxnqvZ8dNjrHe+C9OeIkDNpPs13QEXRIpXr7CFYrqDKLgM3D4avbT\nm7s0mjQpj8osK73P9QUEc75g8ob+jnP61PXhoSEqJm7/tuub4Fwi5dTNmrkZ\nsSs04Qg3HcMTXQYeyWAPuWRaIfupnNa7xm+bHKObEUhNmPeSkOHNPSkoWKI7\nuEha1Eb0JXFmZ/C7s8fLqI9J92sa3paBpbdMhrgYyw4/WGoawN2lsB35HMRy\ndGF2l1eiRMlq+KrUgXoMPOvkOWE5wtcI0fnppCq84BK3gDxS0cKv34pdfkxF\nYyo2iA4QaknEpf4pAWluwFAUv+tC7SDH2ZVzcGcNeTtDmghe8OrdoNuBPhgc\nVmKXVzzJcYjhNUUs3MzACPCWYF/r58AqLIELC7+4D65bd0I9tEU2rR1/2386\nY7ccqf8puo7V7sl4eXAY52ZBwIwDbtsGKVSBaxXHGDzqfqWwC99gGJvT7+w4\nD5F6\r\n=vY+s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbWZaaWBvFK36W9pfQHkRp1epgpG3aIi0PlE5wNlofAQIgS/KJmZffkAQFXC/04wLLE3jVbNt/iM2T7Nj8wAS+XSU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600263055-487c5991.0_1600263180296_0.015141929697040313"},"_hasShrinkwrap":false},"2.11.1-next-1600269607-1a964b90.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600269607-1a964b90.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600269607-1a964b90.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600269607-1a964b90.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NZK3jFdficBNFixKT4dVeYX+PnluFlI1/rYuC9Pr9GGQ8RA9NHNoq+9MLxYCbzU8QLARVNxBtQrDzLRJsMqLRQ==","shasum":"6500cf3c41173077d35de180602a712a69d65134","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600269607-1a964b90.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYi2qCRA9TVsSAnZWagAAXf8P/iTgn8fhDJDq1zilu0zz\n+u8LkORMc3VobYkHZbDlVeQ3rY9mDm2QVA2jpXMgwDM3LoUPHBDecQ6nANU0\nni/u9jqYO1WaMSThY9aM8iJO7P+49NYo4OL9yd6JVZyesLnra5RmJ6oas/Lm\neQpegAzCmz24PI/PmoHMVXeRyRE8/dXZq+UxhFX03sCqdfBLgdGthTQk76ZL\nkjBk1fMS4CeB33jbLojcH8oQikkfUqnfpCL7M+3T97q1QJKknYTjIEkHrZxP\nkc2ujq9InuWjZSDLhS108e0SmHlzD+1V99ZqdxEjAHOq7lkzgp0T/zDF7IHo\nEQoYgJkFswLZTKZmZTXohT/DFjZyXOHFaqG4h/s+rtsBJgYTcQFufeSqBHJy\nuLIKPkfD6y+IjwNOa3LWpj4V/P13YF0brXuC3i9+TobbwdX+pjpBaJGhlt9c\nNTCsc3w61SDeDGk0hS+RDqEXD77XG6oqLTgI7zk76yFZKirR5YSdyzIi7UUD\nRXi0+/sOy53bMf2DQ2U/G/WaA1LsDeaFhBu19UeGe9HxSVSQz1NtaFf7gGR4\n2THaI6wEYRiAqnA4qjLO44fCdxfiTotKshpg9QG5WKRawnnMK7qvj9uh+fC0\nBO5Kr/OR1+HJaUbQ9/oYcmXH7Be5LQJtazZ1AYKRxsh2nGiclh2e5c/2R1Vm\nqtNa\r\n=X8JQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGXKjKoZ1CDXtKNuCOLYFuTzM/DKK6b4gQRZ7zsqBe+hAiAPjcDt4TqwK0O6jh4Qfk1JmJ5t2M3Kku+fgQZEuIwoxw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600269607-1a964b90.0_1600269737608_0.27343990793729156"},"_hasShrinkwrap":false},"2.11.1-next-1600272491-08b82d6a.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600272491-08b82d6a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600272491-08b82d6a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600272491-08b82d6a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4nJOEHAQN64W9wtWREOUIE//OdZcnAwiAC8iYCs6p5wX+dJ5b1X3qUIDNIboRsfoHCQ4yUQSl3VwNCQ9MKIcpw==","shasum":"17b8cd49b6665ed5c35dcfccb9ad649e977f06fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600272491-08b82d6a.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYjjtCRA9TVsSAnZWagAAlBMP/3h235EXd8rmmymEquTh\n1eSrSrr4Vltw1INWQ5W/5Yhp6kbGal8KJLmxYvwoe4PCTUIbebn7BvEBOkGp\ndZLJpT7p9YjhDddhS6+bsbnXcRt1MXnuVWOsLdhEo4K3oZ5fVjCtizGGNNmN\nB55ebxrVDWO6mWPRQRGrtcNx6T6xl/An9kPL24lWZp4cbanvlfhMPGI9QYMr\nhdpeHGINBUadvqpdtI3N+tMRWAMrQRGPlgGOYOqKjZM6+CQg1l8ytJ6NB5sd\nw5/FxXq3Owyma78jbZLuqTwWcYx4tYEdrA5eekD6BR59fZQSKoTKlkDv86gy\n9rWg0Nby68NmSPtE70yrVX463CsGYA68rhsM4OVDKdNhjeLYAayjVzYRuLKV\nDMzIV/5J5EoU2NWu9rAvbLt5sJ1LMN8nqO6KgCS/Vr54leBCg5ZVOCOpaLde\n/jL7GCBIJwVn8a9e/r2rLR3M8BQQv4sr99ITURaMpwiPNQWwBjWvTtrWjH1n\n8TbQBaf2mrgfA23Obi+NX7H9NWoWIcekeIvZKhrTKCMzSkWc+KO3X65WdMrw\nxERMdgB1mGWKr4ZAKHHZoTyTGoReLepa26E2U6k18gHkXtdXj9qSodllAMiQ\nTyAPmx93huVyBegq/ubcBHOv/XqPp3Nf0fiYCpVtS2SX+d/E9Tvx7jashH+q\n2TWA\r\n=kMi4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWPzzepqLufMDvaFP3oMgvHNM+s+1buY7Zsoajy7Q4WwIhAJFbYOiHmwGCUjbLOKitlA2IBn8JnnSv7YnRt+a369bi"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600272491-08b82d6a.0_1600272620770_0.565080988616868"},"_hasShrinkwrap":false},"2.11.1-next-1600283671-16febc25.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600283671-16febc25.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600283671-16febc25.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600283671-16febc25.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2f2IRnB6xiQDxfd8l7pY9rfzHjuZhTish381dC/h8TuYADMWh23TH/pez0z6GCFlCKEbmS5zWWYGzAX0xGeO3A==","shasum":"b5f2e28b688bbe1428479aa924cfa67e830119d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600283671-16febc25.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYmScCRA9TVsSAnZWagAAFv4P/it72HdXMIXw2Sbnenwv\neC309q63DxU2t8tekqm1LsPuKU6f/HE2VfajIEWexdHMPl3GSKeDOsvTNULx\nlG0bPHd2YusYTKtBWJfGMctMkcLPvC76MSnYZZ2ChAG7lODMj3cWbDlaSDf0\nnn5aNwDxPkad30UmTxDa8AeFXnYqVSQ2c3iWGGo0cL3WIrIvxrafldS5GhgQ\nHCJ1FsHT/NVOpbLKsO1d0fWu6A8KX4bBAzyZj+xIozCDaMhjjDqNw6j1oUHG\ndJEdku1/+HLwIXTtoY5FEoxzVIc7mfDnC5n4eH4X5QSNHDgDEAI2sfOXGl3B\nJWKPGZ8Q2BWnAzgDFJ8UFYgWqd4Fa0p7+DGOGuL8imHPPyDrLsjjrD4lM3Ip\nafsWDLfcKauPYTdIpIoilNHPaMRYezdDbfPw3opRX03H0cd9RQfJhYGL17Ka\nq8TH5Ntr1SNjPfrUN8heyJSinZwXv0uzzv+QSd376Ya8kDLiHTzOaWB0lG0V\nirCvXzJRDzy2kIn2RYhFuIF2sne8M7Gs87u2tlu0tQ5irvJKq8OYjOjGC/SN\nqKddtDsDzY988IL6gEBT4BsoMmZl2tyBFUd8Bpcc9QB3sVEsqmwwVxNbo1b/\nQJIK7dCwoEFPjFwZpk2PbuNSz1m7FevKLsfYcUOdgOvG3pLim8zlfAPgVg0M\nsKZP\r\n=0Ada\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDB7ifAgLrbYrRlDdlnqbE/2mHQkDByW/bXyRLuJUGm+QIhAJmpCnPLxijZIyWuCz9ojPz/7p+jDyod7K7kTSCwhzds"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600283671-16febc25.0_1600283804474_0.30066641931135396"},"_hasShrinkwrap":false},"2.11.1-next-1600292073-b603bc0d.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600292073-b603bc0d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600292073-b603bc0d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600292073-b603bc0d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4fGQFJ1+Deq6BxtFdAvV9F4Yk5vFTdm/ClccChBvtZ1d9HZKj9BflFQOBfcT2QOmpn/dQpaDj19rf3yvbzquyA==","shasum":"5803649ada82d555ef22fe5c237afdc62f48018d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600292073-b603bc0d.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYoVsCRA9TVsSAnZWagAAsokP/jX9ShNKxpKGwOc1C6JE\nNpfWfJ+Sy6spjAzhE/4qxDOGT7sri/LrcRIAhp3V5lBJXUEnyL7mz0/Dpr3S\nXQzeEFIlGPh1rK4xtB4Ze2LQJfOF1cEe2tdnSWs11ocW7rkjqvynfG2ZSGpZ\nz5ltrCdzbq9RxyeDbFQsz2VkrRgu6pHxglUjzBl9pC+5JvEMrOL9YwwW5J/Z\n9qAUyb08hpwziIB2OtH0GDNoUOPcfvS+791QBNZo1LAeEI4c2ql3E77qokT3\nHd+gACVImU1CM9zZWlA8bTZXQMAFeQ4iwjKC+yJn7RNI5TmwXI3gbvtF+zeD\nM3f+KHwYLJEKkVK0o4QG7vGHXKINhTNIEk4F39q5N5maa9i5tCY5+HS1D95h\nOpjGt+tkmvdjK0de4WwJu6LgYKy82IzEIS3JgZg/pzrC0eNkVYCUZa/QmddD\nem+XrOUetEW+Sffx1RhZVRY74ZWAvV8gGOIdMg1ujFG4gbSLV8FjAKv7BofW\n/0NR28Kl3XVCeYYk4KCu0KcBBiQ6Jls1dBaGoBABKqd8w3nrIETuKBSDYLnn\nixfwTGsx5GqpO1pV9bakOeleHq1GjIM9EtdAZdSfG+dvOgQBSGvqVcUJlZVZ\n4apnmLTGlWJzlYsDwazajvW47mrnvQ43u67qZLeqrInKRLLcmgIkHyk5TTp4\nq4bV\r\n=m6+Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICl04T9ygGHloPmXFeDxuX6Cz2MB7ELu4x4RrNPRcbZhAiA6QvjOT0HuPSrMOPtfdCHnNVhI8HirpqH2DmCmcXJ0Gw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600292073-b603bc0d.0_1600292203520_0.6629324475243283"},"_hasShrinkwrap":false},"2.11.1-next-1600292107-18896506.0":{"name":"@xdn/prefetch","version":"2.11.1-next-1600292107-18896506.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1-next-1600292107-18896506.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.1-next-1600292107-18896506.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vdY2as7SSKhterJyPqeFluajg2gc4k19by/eR/3pbnhqx7LHrlSnjfdWe3f/FFG6X8XIli46E6SdxA8g2br6Gg==","shasum":"bc811e09ffd3648612f7f909d6736fc02f682fa0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1-next-1600292107-18896506.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYoWgCRA9TVsSAnZWagAAOBkP/3svYoVw+vDZxpbh6l37\n3KGVX/p938+oLd3FxEeLkKoiOKZLu6edm2oS9HJJPGlSWn08OEKhVXH4bPIU\nX9RJEcWj5xo19nefJswOXHU2klt1kSfMT4s523qly5blSp+GgZDgQNwjw7r3\nciSh1FgjA3n61B3ZmOmCq3DXCNAcJovAQE7d6zbIoKOX5fu4aDMD9VWAnYJo\nE2N52WYDabeaFa6j96xsvPeGmSDkDCjTyquTV7aQ+d+8dkWP+cKDAQB6bTu8\nINqupjoglG5zTUa/HYC+WFCZy6Y22BKThqOg1tD8fRCNZGK+PWQyPNdQnBoj\nOvgnXVLpFF+Z9J38l3nSTRseVKhraIjTIZPhy3mKdC++Kp75mbaqF+TIi3px\nzM9dJ9xmhrMAF0aK25baNGFHk2Z/xjfPcvnTewdmqdul+A6hS09UlduYegs5\nnI1pPpFR/w7OeCNa/9cPc3vQdvR7rmo4FHJ7/iFfNvKzN85vwOPdCs4Eryz1\nmz/Kaiql5njeeEMvOYJg80mvu5fAI/kpI8ZP1E8j88bNG3OCidVjWLNcS3fk\nuxMRFvkqbnHpeToNBfjAz2tAzaWBjCCaV0dj9cubeayVQsA6cZrApBsNt/qy\neNugQ9H1TZ4fX9aEIxZtGXzhwpiRP5tXsd/XUWZdYSPiabNqvaxro9G7s4TZ\naGi7\r\n=LQxO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkpWWufd3ftw6d2YirCYXTVPQ7eyK8LUemioc4AQw5wgIhAN80TRWhcR/jFK3jSOWY82hUr185Vf65H18kQQu7W3k3"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1-next-1600292107-18896506.0_1600292255508_0.8425819089770783"},"_hasShrinkwrap":false},"2.11.2-next-1600292151-49224502.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600292151-49224502.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600292151-49224502.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600292151-49224502.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-25STu5fbsO5FemfO6t42Wdr4lZGNimyF+AVZjztsZrqufWkzQ8psAz5t/rgAn3SyWRRxeVcsqDWIV/6o94M1uQ==","shasum":"ddb5e65ced3799404b7880723e8d7487a5e8fc7d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600292151-49224502.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYoW3CRA9TVsSAnZWagAA07kQAKNBMB3SSudiUBToc4r4\nzpwu1TXgOOucyZvhhuIqWVaeW1B848z5DORVaOTg3jwzrFjRSP9TQRXQJQDi\njgY+vJTWCOBZFUCO2jAuT0XbAhDWsxAep5N5Tbqix00YSpA8agT6Ntvi8Y5Q\nVVQRe7PWB2cV7Pybmfxc40PtVRuH+TwY7wYvbETQ7asXAxUJcGNRLrYb4GkC\nY6yEyK37yKBvMdtkjY7e/FOXNmm07sIlIPuWbOkzCjsiCG3OJbLL6jlDde7t\nJWz3yXSeKZBQ1+MtJRzoZiu3JclbF2IX9eQiNfRD48e4AsIOofVGPPLtbWHY\nmz5peUpOdk1jEqPWlKwv6jY7dJhfztFUZrMjttizdkf/e9fpemDg4yeKxpdm\nWMY33IhOM9qllPz5nt1yh68BrZ44Zq+eIuVzZD1zKjGrr3p+xQsr6Ziwzp07\ng5M863Vh6fF4t1p+W/59n82p7RvwHAZJLSyt1Iv7wy2153bLzK6txq9rjdY4\nauLk/ZwIakcXx3sIlZe+wyWAItQVLnsoJqpOi3Z61Y7VoCQNxIB2kkz7NdcO\nwO3+JZVdyTVeO+Q68W2//roP0Y+55z5t+MlZUJon2p28B2X89zwLQG8XPtMM\nNJEOh4PArg9XEk3Bc3jvNa3J3SWesVzBA36AUl0l35obkTAoblEkCKgCYGqN\n18Qy\r\n=g339\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/ZNLcjQsaRkCaCqwqjktZ6oQPTUAo8sgU+CqIk98ujAiEA9dGi3ZAKKnmUv4LWJiMTKheLLa+OGULOZAy4s9I1PRI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600292151-49224502.0_1600292279282_0.10828127994062675"},"_hasShrinkwrap":false},"2.11.1":{"name":"@xdn/prefetch","version":"2.11.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.11.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OgEl28RU1KONvhe5Tb8+F+Gv/GPqfChd4yLHj1maCkbvgoYpUqrVeUb1nEBGdjJ+nad3oskE6NY04aRk4XihpQ==","shasum":"354c84c966c34d61d32761ca2ff3bbd22d27061e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.1.tgz","fileCount":56,"unpackedSize":106787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYoYLCRA9TVsSAnZWagAAs3QP/0KUeYTxJODGWZLSel47\nwxbnAj7BM/EWYP2uTpt8iuQKnAMP7gGh7jwwAm5f2QGAEkeRsNkmywMFcufs\n9zp3+IXgKo3qm8720nZi872E/pjSB4bFgYntGJjZVI/4tVidiQ7HNs/dvlhP\ngaTdc2oOtGjJyBFBXbKbYr++In54bsyyrb+KywkdOLQ8J+5pXVjzWQCBXJVz\n//chcJgN3UhxR8fUsI4XRwlGu6Yb4iBqWbBs98YnIcRVoA78uN7k6xYpG2CQ\nEH1zAK1hEm07FnZMXUX1xmlQhf+L2+g205/SdnCTb1L5WE1HkY1ei88LXpz+\npZotH051i7NFC25XLb75QjA+ajcbiWn4tPWKG/Bw2BnrD3ZJjXeaqmxseFrz\niXc1oAQfAdztMuL4s6kIShadb1qxY13ro7m5Q8UlXmOklMCs7W5Pcma2rz10\nt7qkPFFIicjRt3FBSHGSWBGppfOip+AXzyhD12sNEU4uTrYpWB77X2GpTO0Z\n0FpS1swUflUcMPnhgbMETGufnW8qbU5Eoyidv9zWyVnEJMxUcrEynVcGefse\n5dJE6SSzxs0zTm+H98O+ZGG3u4s+TKenh/SBmHmhItXMJ/iiiQ/Veu5OD2B/\n6Sa0FR2+kblg2eatYy6btQ22eNj9BHLgxbqIrYNJI3ZEwQhXPWqcXSGes8RI\n9opS\r\n=DBv5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCy1Gc5k8vOQRqN0fNgscKVgE3X/0CDg0wiSs1+JsBExgIgbY/gK2BEr7zf8AAjNYPAvqas5C0XK3g97mtbaEABHNw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.1_1600292363361_0.9259960526768973"},"_hasShrinkwrap":false},"2.11.2-next-1600337990-e919519f.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600337990-e919519f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600337990-e919519f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600337990-e919519f.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wxQT8sS3Chnwk41WlJKv7wTW/F3laEkRcDXB3pmTysRtJninHzZilFicac4kAisikv9YE+VaKwlXbW9247QgXg==","shasum":"0ed065deb4aa2cdf9d381669d2577dcbfbd285ea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600337990-e919519f.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYzi8CRA9TVsSAnZWagAAMVEP/Ao5xisy8CSrvxv6BJXr\n17nr7WnsYEQainpS6f/712qrA1lwZ2ndwLcLPFFlXL1Q1OwMaMp//onBJ2ZN\ng4bq8u+Be90D2LG9eSY/eiD2UwNq4hEMO0jf2JcLnVYej1CTQqykQDPnwohZ\nr3LL8eTein7PgJwUhsrXQBAc3pdtIeEcAqlvWFZIa4/O+evOcSwBwlxlhpJy\n+1xBiY4H0U0EgTHJJaBrZqlQScXAhpF6B2Z9SEwu+0CIi7KG0S0Co8jsy92p\nibj3pv0rLlvmeO6EXwl7eJSPYrj5FhIXQ50brbeW3xnJE3xBPMhmGFIDCKEL\nMDBYjv19YVV2Mzzo5NBBPOk3OTGAORxSDOKvkg2PvjD/t/jeOFWU78lRz5G/\nP4BNNYJTbyBsAaN5ILXyjYnlnUsHaNo4GBiH4Ls/ShQ1DVQBbXMqwAROyAXQ\n3omQ1CJZQk+/rR125C/U3HulRX4O/WRUPhj1Ao7j6qzq0c6k9siO20jO8myp\n8SKE2MwidQY2oqDBwH9SkLsqc8oSkU7/OGU14JR5al9kFXl1vJd1+0j239lX\n/98pmVFJTCdJduwonNgKCA3QGjyTLhXSMJ9FQVIB5qkzTLc/OoweyS+Ye759\nmox0N8fnAHOiElq+VfjA9sCjKBuSAxHnem2oC7Q5xFPRyKK9vHBbTjZoDfkX\ntp0A\r\n=IAmB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0KE+LUgtLgI82geK4pTdPQSB70I+x/14Ils2nWI55HAiEA/Kz3CaxPjpD4V3eOdoV0w80tR5ZkGurZmbTWQHhRJ4c="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600337990-e919519f.0_1600338107924_0.5434367910680891"},"_hasShrinkwrap":false},"2.11.2-next-1600344712-82bda3d8.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600344712-82bda3d8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600344712-82bda3d8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600344712-82bda3d8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0PmD6X6XTza86tHfvJ1t2qH6WZjoudhQJHPQ3TR76CucZSM+p6HrElXN71C63lGLUsix1TjCXIjifqK7DDCoxQ==","shasum":"d4495c37f59d8f459905a4040c4c3bc9d189d2b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600344712-82bda3d8.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY1MRCRA9TVsSAnZWagAAkKkP/3JspK2Ia/DCj4h1YxRW\nP7cxvHYt2vRIuv+QxmKunyyE6AzU7dwkZgToV3j0zzBIPJxoEsyZv6PzTfqB\nS8ZUL8E0yo0NSV9JdyRZXB5gXwZaOSA0LjtWzBUXG3ba3jp5RS9Q08o53MdV\naTPp0AAyz+VxmoCxeCYUKY/2KWe1dGowOO9YN4szfTaZa/46ZbuejRGq8RR2\nOs+5PPLizNfA/mcfnLcBJDOthIXsoqXp5fKJNSXHithFuRmip6yU8GYB+Q7g\nZn1lnxBfsWFISN244D5elWG95KKuv/qYjaBcbA/3PitNbZxT+3u/K+OCqXmM\ndMuLJcCfN6vweDJXk10xa2qz6gOL8AuSmp1++TbbTmZ6/bj2eFBnT2jPru5W\nZutBumdXnIGW/grP+yjRQlSpybzlz/4/bKhAS/4pOC+2K9nnf78Lx2ezKvo4\nu1cWNhTGKij6/hj2iVBsgOvK2vYBi4T1BYj9zUTbj1VYvjpzWhbrDLHZRySQ\nmhYxPWSJ7fUUyWs+nNe+fh0Lc4JS6IcUo7hquSIc8Gp3ydT+IIXaA5Qhvk6Z\n3xHymFldWeuBQ4zaUGtk4WKBAfRvPleJSky7IMK6az+cWgTFGaCpJLJpI7jU\nzZlkwzadkDl4tHtR7RUQ3crfeVFV2dl86UdsWzdTTyI6zDAlM/+5tN/bz9Ma\n3+Vy\r\n=iFad\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDDNHRNsQMGh4HhWshihpock28ysnD/hZgz5UowuFAiwIhALeEZGygMCQbFivR4KezNJLOqjwOT7hYywT2vRGfxxfH"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600344712-82bda3d8.0_1600344848664_0.5142583306237916"},"_hasShrinkwrap":false},"2.11.2-next-1600348988-8e9ad979.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600348988-8e9ad979.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600348988-8e9ad979.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600348988-8e9ad979.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6Rd7dSWWPMgJrMeED1tr5PVpkidoHQhd4eRGx22/Y+F9lzVmVD6Ad5XzuF+YwRyG+qRuvZKWP7I/K40rPJW9Ng==","shasum":"0ffb698683c2454943fc9360a3db3f91e97452be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600348988-8e9ad979.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY2PBCRA9TVsSAnZWagAAVkgP/j8yMfjEnKZVSdRwgFwr\nFJhY3F04VpSALifyDa6ohzzlksQlGlAxQJxnRbzCUGkLVaWWi4+df2r4Aks9\nAH0RlBja+yN675Y+b31Ra+E85lnjuWsgE1EN4iU5AJbbyavXJwc+wsGGc43F\nngOmJ4bK1dNWz/EQMgmpYj3E9ncKICx1KV6L9SYeCRng3/G8VkE7q0f9lIcO\nmIMcohUkM6lAz95wpZQtzYRqxtcv7QAKUnHsDzBeXRJBdQhAYRNC53yFlod5\nDROp2dHpNx7DEHZESyQ6HfugkqBLkNyrDHPGtxbchrWDOIa9kVbUVl9jXh1v\n57fIm/vpUYlHVG8UDoIx9V/78joU54k3tgZD3DfglM5VWD3zYlffqj3bgJIu\nbC5/XustRT40nfoWN1XYKdKkmURmYkXCVt3Ath/HzyC33MLcBkjulE9PGUq7\n6GEWzoGfkc4hLVICirlNyLEpfCNNPXjvBAQ9p+ZYgIgiLf7egztbWCXluucL\nNxRLnhx2oa+/QCgCCNlN6yOO6y1KqksYU18A5Ktf2b6ofkVkO+v5IagNhLeg\nF+MNDSazcWlSyR1x25XxHipxhvVrk2BpCwGxIUjxLiIviT3L8NTTZQEBopLR\nXQc84V4NxfO+sTZThX83DRG2ZkG1b9MIcDl4dv5Pt8adYDAp3c+qKrHgdfBA\nnyiR\r\n=9axp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIVYLWLoKY7BUDidxGxQM8QnsoYG0Me1ZW232+t63NqAiAFtZ7Rw9HjOlS7SoNFdqU6RU2FCxWll9tE8HIFtN+Z9g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600348988-8e9ad979.0_1600349121031_0.5247466050816161"},"_hasShrinkwrap":false},"2.11.2-next-1600373979-a8abfc1d.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600373979-a8abfc1d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600373979-a8abfc1d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600373979-a8abfc1d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PWxz9Lpp+Wvpy3l8wu6va5eLBu//BzWpfXhivSYyj/CkWtT5tutPQQbjUMNCw0+xYBxDZcFvMTKyxb/01ok1UQ==","shasum":"4001ebb495ab37aa8c1af71972988e7636ce9da6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600373979-a8abfc1d.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY8VeCRA9TVsSAnZWagAAZccQAJenF1GZayA9+J9G/2Gf\npl9Hs8dDkSSb32EFColoB35aTku3OttIh2yi+x7KCBh4FB1qHggsjEUchPfA\nekOnHDH6J/EvATdmctqbcOWPqz6bFCoepB4t8Qz/IYNzYHxkHdFOw+kHjJgD\nKK2pbnj9i7pkjicDE1pAZr6h9+yrLTHWuuxl73XRUdeRxqa9c9D/nBcvUhwm\nWzN5vJlps3yz6gxlCpBuh/uxQiOrxSTpd/8c1cIHtam3nmx/XQGVlOMJZACv\ngdwQiDhf/DwEhPsvwv0MgR+eTnHN/lL/jVgutHxGbUtdxkfo2YNziL/Z49ob\nEoSuf9VSP/CUG7CaRIhoolzLTZHYeXWjXIpxBjlRj/75WvvBkEWuREwoINRC\n0jo1qkeOUASmZJzf6cNCQbyEutMCfjDGqT4Hq9AQha4E0U4i5KF199pXXV+I\nkudpJ8CCoMfvjlGiriT0kJWNKCPYAlR/vippFy9iuaXcj3UqRzv+1auLQ+pe\ntmbvTTaMCBwp+N0YVvofi7JvQCfELJfcnPG5uQiBvSG+eFcX4Fg46jZdlqZ7\npNfbg2URvfWlIJD76rY8WuhRfJ8XIqaJY9xb6y3EWrBPh+yplo3fKi+qKiGB\nW1WOTyPWelqG1/YdY+V10DNTAwu7RmoAUrx/5XAkAmt/MgZhoNfgIGSDoDXx\n+FKJ\r\n=RFye\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHpuMBZM48B1dQ3MotNJzx0HkRB/mxRuzP5Lo5hXijogIhAKOO02ltxik38kWKlONBxtNe+UlE7LxsKtzF89eHGo5q"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600373979-a8abfc1d.0_1600374110303_0.6715374313497897"},"_hasShrinkwrap":false},"2.11.2-next-1600374709-225ededa.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600374709-225ededa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600374709-225ededa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600374709-225ededa.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Dd0u02sL8OGdJSOBzbXzM4nTf9buXrWqbZ4d58wkh6jFs+R/cE/x3jJsQZU6HWPdAgO98aWjWii/4F1bW0eXtA==","shasum":"35da76156673556eafd27a669e70c6fc9c50c565","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600374709-225ededa.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY8gtCRA9TVsSAnZWagAAQDsP/Roe0FWepkOA5lulmjFo\nRIy7Rpk5Q7tVHISOU3joMPNAcYJ06IBHMIjk2ilv0kAXm5STplB00PhJhNg1\nK6iMWoWjgZernULemrjSthiaagPuPGgowSuBmuQeRMe+9x1eJW7orFL2FMNJ\n72dJXL3BJiG8UnVOdSvnlss8cJAoJj9TBSZCpAjCWT6rgZcUw2KoH0kwikOx\nSrD8sCERcTRoy0gOlggNbDaN0BirYhJHeEVOIQyK64l2tjqRmQF4w1WsTdEl\n6qSCnH+cTpAxTg1MIWfLjgt2gMq1aHGnSOoboj/8TA8TAS8u3OQdsHvCA8Co\nisCJJuw9Y12sQGp3YXEWI896lxsqsEr2ztPPY1SO+/v7QYuXPTg0n6kkk/bc\n0ZJtuMyXtqSO/1XbBXScxR79bA/fqjqyi6+byYy0BNrrdJPZ7E6hiOHMzilV\na6hs6NJZoJjEUKhBB/jmb9QU05iM2sFcu0DJBYj/Y4kzRrIv3+IqwGhOjYTF\n6HXKlMe9jnPKHBDont/i2UoRCowqrJ3xFaMyVOqgLq7MTQFJGV0rvNAqhpzW\nscS1nfPuMgNr0rFxP8En+DvW/ne8s5JB44QWwxPTTZ2bh6qcfsxbgQWYBrpi\nz1Z+9c7Fjbl5zedIJ6pvmY1/J+IVqZ2qzHwGy9y6rZKqLaJGKsF5Ngy81QV8\nZzNw\r\n=eWBO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyrIMs5ha7gGKTISoco1I1q98x20lx7ipoVwgaSQkaLAIhAK6Ot5tZlOXD/+IsX90epiREHLvBSb+td3fnMLnGd/sC"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600374709-225ededa.0_1600374828881_0.6313129329862246"},"_hasShrinkwrap":false},"2.11.2-next-1600376939-c4adfb37.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600376939-c4adfb37.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600376939-c4adfb37.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600376939-c4adfb37.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-s3XXjpGsfg4AmwPgXY5R8B0G5VG1h6ZYLAB5qPwuaOFsJD/47G4LJNvJ/CE+Xh7Q3Bkc81NvRkbDX72oknSUIw==","shasum":"f7fadf512844914693f3aefe40c991bb2ea8a4c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600376939-c4adfb37.0.tgz","fileCount":56,"unpackedSize":106714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY9DlCRA9TVsSAnZWagAA0msP/R7B8xqggjMCyBNnfi3q\ngSvwTroCs3+JZvVvDj3DNKj7XT6H0rpKjCHvAAViaKvw2oIUCaduj5A0G7sM\nm5EElGQTOavlJG35STh6pxJPS3xkYLkk2VSLl17OLJlFFyjyzz2fHYJXsQzv\noaL8usG2+a6QFoMAHNJ0MnvoyfvLkZTWDkrYmyeYKVq/jVf9eqm/cfwb27ig\nVzsd3CHXoDj7l+x6VnTK+ymdXDT8Mfj+p5V8jYLL4dr5Obd/JfFpHTpoebFz\n+KwwUij1oyTualagsdEtU2smSylSGcxdjcLqGUmlO1MjGrbKGIOpiWMI19XX\n6J6LlU1TBvGbJNivEEI5wcsEJayCUZAU7uPLLg2zk9nzncjMFa0YSfa6Ry8X\nWrMhXSmKqkOvBGmCZEllXcBSLZL92SazG3tWlkmzDD+IQnYQRLR46AIPYLRL\nV3EEYjuLdOWO4f54JZ2mLykFdpgmSt1KFWHUy4hNalu12cJoW+oi60WEAnau\nWDUaNj43ttngGRCiotihcfcaSRInfm5UH/FBvhJhxWFmeq4X9qPe/Iow/tXb\nZwGr2bCKCLcic6hZT9Mn5TQukxQ8xYHLhKPhxFg31pMpsbw4zo+/lJ4JmvFp\nVC9ZwckaUDyuGJ2zYMzD9sW3+wqzzrxGbmhL22LYV7/AVpPD0546c4W2l53G\nhClD\r\n=8YkO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+sIzlHtZZCJdP/e7qedckWlwyHy9SQo+BSrnP+CElsAiEAq7jSHNid80n/Gis1k9Il3FMtPKH9DWK21hocCGEPptM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600376939-c4adfb37.0_1600377061223_0.05238116938687942"},"_hasShrinkwrap":false},"2.11.2-next-1600422799-a01a39bd.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600422799-a01a39bd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600422799-a01a39bd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600422799-a01a39bd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BhY1k0DzSgLT6iRBy7IhY5hV8TZEuGwwYDIGu36q6txVNWuFy3WcCakBxgJU6sde/JOdrLO3S+U3jhnxUgj6OQ==","shasum":"ce1a188aac2036f99dac057d567ce9ed5b06fb0b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600422799-a01a39bd.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZIQUCRA9TVsSAnZWagAA/JUP/jsQtKzqfYMxcitMu9IX\n40qa7TceU+vfQ0XK/phR3WFWoW/rrpS+hPUhBAM0HoT4twJbtW1EHHzNxVYh\nfGV/VVsWjdE9FM0b3DDxsvGDZVIsOn6RB1DoBsk6THupVbt1WbI77dRM95u+\nk0gnGkgeVOqUbZXNag36lBoHhkanFYixyGvZ8n9jLjhOu6+/HDZyEmfVkhIt\nKIZb3FNQREF3NA2jkpcAgbHgh4XpEt0/U1DvX6s5OF0fN+f2ELL9Sh42S29c\nkQNPyx5R4V/gY6ceZP83NwFbRK3vCPtpOzn2Ja/Kkmc5Fv4nt4UfEL5eLa1u\n1hdODjES+CGLAEqJcbNqdsa+BdXtKXlaysHhNRAGaNg/nUXr8ETPaPPPAJuP\nmYA1K2MhsFpvQFCniWWxovukwTt6TQbUuvU5umJkXYBQ0e1kspB0iazrIIND\nARlclwIkoMVdwD4a5lkhsfXTOwh7vzmubeZIhYm5cuophUxxE7mzdT9be9J6\nIxZBMInw7llrQlW3oVjwE/Q3+zvIBh7y5uxRV61rVtR6U3mfq2qHWMMfCR4T\njuFIJ/CF1WcAd467mSNbcKndLMw4v7+9BLFqBjwsgKdI1Ol/oCVxCmbylsgy\nxS/SnfNREDy9dCwSF2uSSTvTnOZaqE8aYY73e+ePCrx64j7wB1o7B8kCRdXs\nahgG\r\n=FBz4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJbalK98WOehPtfV1ts8MS3DTx+PhivCTZyvM8iN9SigIgUlb88l591oB1BD9c745J0hARcXrjCcziiNT37r/vWxM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600422799-a01a39bd.0_1600422931981_0.904538962505129"},"_hasShrinkwrap":false},"2.11.2-next-1600589817-07052234.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600589817-07052234.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600589817-07052234.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600589817-07052234.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WmIz0e2S3AZKY623ZKYIP1QtFPJtJtgumZ0UnaMKEduYFnQaV+CpFwpot5XoKGLB4uYQM9LjamtMJN+K+RT/9w==","shasum":"2f6a9401370bb92e996f7b45e079a423212461a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600589817-07052234.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZxB6CRA9TVsSAnZWagAA04MQAJG5G4PXSIzf0ZJtWm1u\n6rWszk99QlYPpNl7qdwCp+W/wNCogwswjTD2rbJUaHyjnBY5+2kWTCx0o0e6\nCCsory91UgeNNntUyp5D6+ellSOErUy/qyh6e4Pkmd0htJXNW5UmOABiVmdj\nkjhYLj/FdD5NEyqJWvjsMaYzzr570QrSFu5/eWKA/4ySuO9FtJsLIJyMt0mX\nPtjNvSVojJYCfTmTCelJtLlHlSkaLyo+erh98/AKTGePT0bXLawy86dRjDI7\nexKUY8ZT5hDoSS+QNCCsZIElnPfPJaFDSVieGqSDCzKRO4H2knj0zmtp+u2k\nABIfQm1aja1skKhqrBFvR++yB+CF9NEE5j9SxfHj40EMr8y1YbpXi7f1+f4g\nRClXuINT3GEh09SboBHFaa7JeAYDCXlTF35l5ojtal0BjuAudM81SWKQgzyP\nk350Enn/+MYy4702h9QDLUrX+DeMJdY24fwTZAvaj8W8taNPyHNXy9/Fqm+5\nrFQUPOZY7mdp8pcw8ndYUVQ5xpSmSqvZGKRvmGUUVNq5iHptzsajiQa03KD6\nJmA7azijNtGlC7fWmKVn8mIsm37lBcnlfHf0yDSvN7xlVXIlI/PCXUE+m28s\n/GFMfxngOi+dc3n5xBSHDj+8wPqFPY8FYPs+BRMb9oU7zsRG6hy2bnZlAqmW\nLNno\r\n=lUvU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICFXgLWCCHNVSWIpy7vUcqEZeWqnmmw7H896wIs/DD4ZAiAtUnmaoBFGIeQyBVWEzUYKHPu0xLWtrIxbk14YUkbjNg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600589817-07052234.0_1600589945774_0.6654444634230303"},"_hasShrinkwrap":false},"2.11.2-next-1600672312-197f97ea.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600672312-197f97ea.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600672312-197f97ea.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600672312-197f97ea.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cgixl1Y4ZAtzOvH5v9fb3WwPmUavF7S8AD56E5XY6kXLpef16vix/jX/MT8Mqh0NTf5VYXuwsgXnUPk2qGrfKA==","shasum":"0c3aeface39dac674b2a76134a6fed848d529bb5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600672312-197f97ea.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaFKzCRA9TVsSAnZWagAAMRwP/1AkUvDzsGh3BbdivWRz\nhJK8ux0+fj6P525627uifgrgx+2cqTTqZ1yKv40qdH3MHVRl9kj0swClsgbw\nvB7k98+Xhc79ITecF0lB763OlNfC1G0lxEZbCblbgeqslPQqEPNeuZLbkJ84\nnuQTpMP80PXN2mC4U307Os2nNw7U6PoFm6NUpi1jfsurc9SiRXWV731fZ760\n70todPKh4W3Idnr7/S4AtQKYp6z1sblbjPNJHLa5hOTrURuABvfu0hjHCJeB\nIEYqh9HnurgcgkmFrw/62Y7jXc0Sy1Cb4HPVtokhr1mltXiwbc7yZ1azkA8e\nx4DtDIzf2GYFy3xhUxY8oXu8X0VLD6XNzp2TVtCzWZ2T/l75gFwShcfmQNP+\nUKM+6ts2syriiXpg0Fw1FsmnRYX/hsPZGYy4r/93QzTTHDxHR713Aul15f/4\nesav1v40L654IBYm/Y+vf92j8G31VyLJYktKUhSDVqjJNMWXQiC2DTywvZsa\nGbkktCupkYETKb6FZyp7kt7B47jb0lZaebi/Z2qEwCn+qgqHg3yTjWErCn7U\nOAd3YUkn4ZMRiNMsJnu1CLaARdeQ/UtPFFPMZnT7b2YOozfmkkqwDyRCD2h5\n8DdQIiNFdv6XSfeigoJFHuRH2vmiTwOGb3jaFDELSgkyIBCDA9xo2TLVqKPv\no/+3\r\n=jA1z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEUZwEgy5LXrbDExW2g2R2QhBKuAT2c6tAD26VIROjzQAiEA7uufct228twIQDUKnGJC8tn0gfg6K6PNWbs4UHUqse8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600672312-197f97ea.0_1600672435464_0.14255413581652587"},"_hasShrinkwrap":false},"2.11.2-next-1600672424-b3695674.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600672424-b3695674.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600672424-b3695674.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600672424-b3695674.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-aCovvh1KzNWV9jyrdXAWpBfKq4h5ma3xnTK69eyKg9JkSUUchD6XOpROXxL6bNfRhM+OWy+9BcbT7aHN3uNGEA==","shasum":"7b788393aefd2a2ae3a7515318713bdfc3d09e3e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600672424-b3695674.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaFMrCRA9TVsSAnZWagAAyXQP/0a8eF6Z2M7KqYyQ17wq\n7NgrI+NXph1SBz9dnl4QtH92/yy8V/REU0RfrEB6n9D4ccDgueRxjKAliO7q\nWrfuzjp9R6yqvkrdHG22RR91HdiBes3S+Au/1JwWto7WtMjEU9juoWpuoHJE\nrBC3/W7l8W2YbogDZ2cfWY4M08UwZof7rxgFULUs6oP2hTKG2epOl3FVoy1/\n6m7e8DZdtgTGwVwMCQA4pb/VQkhWe9R1xNSEuNCFZJZNSJbAs+mBaOfJCMm1\naOX8ZtDaFW/IydmVH8xXZndeQkyG5a88HYe9/7AKCrUjP41Rkk1U5LvOgGrg\niR+ZWG1QABxGapEYL6V116tOwp87WBTOQGp8NAy+21nekwG22tZOQuNJizpk\nn7jAOMqN2BdYJftSUgtuzFwqSK0Hocn3b5p2m77VR8izmwidTVbzgNGkxCGm\nI2EwYLseTDBq2sLLfpyCJY8KPSD64n0Gk86VgVN24YgcRm7cQj5HfjzlrOP3\nGIJGyisEwG1T/81Qi+i6xiDUmLsdzoQM/oqOXly0pZC6cTcxiGTM5OQHrEhv\nGe3yVsGFJcugAYusZYY1fHZbyXdOtFldDQANbqPr0Xdku0DYMiuvrjQTA+wL\nhncVPITrWfOSn6+GDoAq5jzxsihUKTqDE6DWvPgYGUrNVlyJ/dS5mGuK89i8\n1JUW\r\n=LCdx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEhwEFSX4hhl4aYjlZGaczD/hYzod52U+iMVW7ljtl1aAiEAxkFmEYk0i13up0mlQUmLPcSst618p3gcrW5plocquNM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600672424-b3695674.0_1600672554593_0.6943685588624071"},"_hasShrinkwrap":false},"2.11.2-next-1600672463-3c7996fd.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600672463-3c7996fd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600672463-3c7996fd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600672463-3c7996fd.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CE3rEcahMgsBH6JmiXC6qGHJgmUXZgBPf88rormUepHxAQLioNF7y6xNaRjTatzni0lb362+7AgdE25JhVD4QA==","shasum":"8b3a7378f1b51cfdcf5a349785447b527f6deea1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600672463-3c7996fd.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaFNKCRA9TVsSAnZWagAAs90P/3m8P1SuRSQr6inqUAJo\nQTIUTSFMjCoPjrM87bqaigpF+3tTWPppERKa3hvmN62sGqyxP6F8A8uQgUTS\nQfiseKmez4dzXbvjeKNBVMELMW7MxKADfxV4TzmstYE1oThMAvi77NUObKPf\ngosMDZ+aTJlEONZCR1BrW4W/MhRncd/lmjRC4kIrmFc8A9TNMAsXO/ccXHPf\nrP2LOfCJcYpLQJ/sZktZb9Afwk/SZes/KqEJXuRkP0dICGL2idVbhEb0Mwbc\n5nv+fStje35bOEAw11DFnn+wxqbPZTWMWtkCcpMVyQdCrQ4yC6rhbi4cUEPb\nGHpKemwaY8O15KHQZagzxb/eZod6qyvRADC31lJ5JWLSIKihsi+BR4inRVYa\nDqrAnyMN+zfWTRcIZyPTYCigyrol0GNHAwqFt5zY/ovXOtpmEwm0tzzqrBj1\nij4qGPHTZcj+GM8oggFAWdaKWNl1m4XGuZaGQLeImB1ZG+KVyU2IC1vH2SeM\nkY3fRi7HGwjdheKV6mMZ0w8w5rxOKk0ggklX2TDQWAcIAvUO2CvuFD2rXERR\nGoKKIAKFLyAv+q7yWtv+ke8SbN5NCeSBCIsPgXK9OVXYTnKR+3nWc750TGRO\nuWmMc311Pka2fO/CgqIr32anybjNmFQB3cQQsQUrjZ34jI1tn7PzApQZghW8\nTbEV\r\n=XH6N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGfUhqMC0yqfkMeUWzZ0A9Ct8CH1/oPzu2HNp9IQpSwgAiEAt5D86AD7rF4bwLXYciwog0KsFyCz/XQ4oBBgBSIqBuU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600672463-3c7996fd.0_1600672586185_0.9993790374236209"},"_hasShrinkwrap":false},"2.11.2-next-1600672512-c5ddf166.0":{"name":"@xdn/prefetch","version":"2.11.2-next-1600672512-c5ddf166.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2-next-1600672512-c5ddf166.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.2-next-1600672512-c5ddf166.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eKKy7n0Im4Ncxo+Qmspnbni8b+8O4LkxJP8U2I/ckQoy7flXLcgV8NU31E/lLP98K7uJm4og/jVBIcQXmZnZZQ==","shasum":"242d903a17cc8e73176176392758c50909f7ffd0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2-next-1600672512-c5ddf166.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaFOFCRA9TVsSAnZWagAAv20P/RTNcnsO1QKxxokR4GOK\n7X3jQVpof8kgP5fZXKHLCzGKjC5AAUVszADXB4LlQx68SCZeVrg1n9aOC4y7\nGYoaNeTSBm1jk8l4TpGCbDwheA3zN1iLA9MMdwHHHfHozbYfcBjMddxtkKDR\n8BR+CX4sYfZ5ng2K97t9qkj5uUgzVjCkD+UHa64ih8RwcfOpZZns7gRUbGBQ\nDWGI5JDIEIILQVlodzU4CJlhg9Ks5o+hFybOCFHbz2jdmT1amq6QXLip7zLn\niKy8gHDXdD6/tBNriHEE85WOukJZJsFbMGTin67h16qgtpwxVHO7rU0xqEUa\nCQSxV/NaJQTx63V0XJWjNLW/+dSiKpMEeRgtDobFOxoMEbe7yw6lM0jtW2br\nr7jebnQQmWcmi+0kBA8C94MeWrmklsUr9dyIVi9tblTV48esurM1htJ39V/S\nqUjgbnOBH7JFX//OpNWLvmhYmGymdfPxGmcRD/XR6pQX7j7LyKfGp6kx38ih\n3SQ0qYgjW93f25X1OGwGF3aaMcUIsbBB1zmcJAdeHhWApIGyEgzzWPimM6a8\nsA0RmRSyWp0bicsQ3220NJ/wcWgxXtze+gPJeIymOUdOMdjdG5o8KtB7pNA3\nH0nEPZKIjD+Y1LpnLkokuFBF8K5Xi1jUY2cWuVzhUMMOeDBVOM+WXv0aj1ZV\nF7Kw\r\n=K5W8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBP5t598Emk5NHg0BvxMuH1MYOvTx7v77GU+41sV5b/LAiEA7Jx1FY24Rv/kSIsh4evq3+9sncuu6siTrnPGYk5os2Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2-next-1600672512-c5ddf166.0_1600672644927_0.6938554430670401"},"_hasShrinkwrap":false},"2.11.3-next-1600673543-79069b0a.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600673543-79069b0a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600673543-79069b0a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600673543-79069b0a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2ZJmxNISt1Wjq08RihXHNfk0KnxHHzZeHtdGpnOO8f8yedpCo7mW2VIC9KDToIgGvRLiypXPw2H85FqJfmtQ6Q==","shasum":"1c1981be0a8ed974c3a50ff009b214796fd4014e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600673543-79069b0a.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaFeLCRA9TVsSAnZWagAAqsgQAIsb2liFqYlcYdR8JLer\nl545KHDZ1VYFl+4CUyDbthKu8D1r/6QylSGCM3tyJpkorSEiVMbxvWecQm/z\noE7yyqWMZTqxVKDttulIHtLfesyZtHf8I8BWIn/ZszFpDwBfq1YY4MBqYxVO\niVlg36ugIKC8QvRgSUGz2aBgig5upS92vnuCnfXWwXLE/HZh2oIQXSqWKxNn\nPM/AUXiMhy12Pd08vkAaN0OGGwg1zm6N0hq3ptit7f2yenCM0Q+6ewTyRsMy\n0oGtO+e0OixDlE7NGE8QI/9tmdq4WdDaoivzfTdvErS+MP6YJhtbEEHnUq0J\nSPydtPGOY5SI5u9OmRkmKzalVms/FelKtVoipjvMudKTMplp4o+eBTyxbqWU\nP70G+KGpue0b9rB2Sbu52RtsSiSJVVoXbXjkjvtSa/vUTTXdYNeGUHR752di\nXgFCaESRK1G798CyP45Ultik2oT7QqYlZyCsPkC9Bv9ZNmAtvuqRxZmHtQ9M\nX+SJ3YMDq0Tavhw+jNbjboQg09Y2kTM87XiwT/nHpxKg9Vt6pv1wmi2hMNhH\nOeLNDV7ulIzRrpGFSbQaNy9aIJIAncgpxjqnNdTXhBFsLGSlssNS7XYcHbyI\nVvRpihmWYR47TDFyIa0M8vW1PO9YQ5OnjLSz24sWrPTAu5iVs90yRxYNWK7I\njk2K\r\n=JIot\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMQUJb2RtpMrExG0ksgxunT8ra6opRkabaJi4lRzod+wIgPrptkT3ulDt1bq6gQHg4r0o1NkTVBvYCsvpxgxJ1BU0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600673543-79069b0a.0_1600673675190_0.47777838135762196"},"_hasShrinkwrap":false},"2.11.2":{"name":"@xdn/prefetch","version":"2.11.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.2","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.11.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RiX+ztTHRCdyPqN1QmOO9mq8bk4tkCotgtkrMjqs3zzu+vNOH5K0FUKtlG/seS+uHl0BMIRgsFiwIRbm14cSCw==","shasum":"4a32a085286a3881e8efb00ef7505cd6ae44b9c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.2.tgz","fileCount":56,"unpackedSize":106787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaFfUCRA9TVsSAnZWagAAvxQP/3Dlw5hubIaHGEE3wqzH\nh47fagYJ6hstQnn9VC2514TI0qYKD5X1BBTERzACavC3IGAflcIyBSzpLTXF\nG/FrUK70wiEHe37rxUSjyAW4et8tJS/ATOEXGDZjCDrQl0+prITEUGaL02us\n2mjtdzPquPFS0TJLVXT45EumiSnp2YgKFaYNgRcx0VvSh8t1mv1pPNyOlN1o\nrd9B+SLVvSf0ULEnDB+1msyMNfNQhlkgGGJB8+M8rG1EPY2sxAwYD1Fsy/dz\naQbAmtoGgsw4y83xdDLMbAXpRZISCvZClEb446Gm68ruWMRfnraXeF69yH8L\nZnvBTzIJ6LVywrUFuNSe9m2VwLyr7rAp5LKOZOMPdCewqt/q8pQvDK+eZeUE\nOMjGIHWMu4H2zrlDNhgaXezFby8MSLFw7oKi49jXb1dKVYQDO10hfwkHVFF5\nW9FyIiFRyghJ7VQifxScPU1b6asug1Gri6OO0NmSdvIoEQsiX5HIL/J0DJmD\njftKo8kNeYZX2P9Hlm2veCNHmOZn4rQ+ez3ycWvjQO2hcjcCmfJn28PaAAwM\nccffpScr8qVH6212nvCgBAN08/Hgfi+Rw3kPskBwr1o5HaViW66fENqigUDH\n0qS+XAzqEEOXV8kKjHvl0lW8qSwLaUsfUdIOol4x2tUUSUYftgODW7pydIrL\npqed\r\n=S8xY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBHI6eAHSTqtfjwYNpAMxUkFmqlOlgnbkG3AobjsEty2AiEAlSBeDU2geG2rRJpyD8cumfb54Csa9EM7OI1/YvRRCV0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.2_1600673748029_0.22439616839396437"},"_hasShrinkwrap":false},"2.11.3-next-1600688580-b5e4301c.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600688580-b5e4301c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600688580-b5e4301c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600688580-b5e4301c.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-k/qljVQFj2rdqbV7i1+1eGo2A+8xo81uKW5MCNwG0ie+NAsiMFQKWzPb1xt0/PaJeXc1RAJ+Ja8hpZvUgcoeww==","shasum":"1e4c5b10d6e725fcb5a932fb7c9576bef984cb5e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600688580-b5e4301c.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJI/CRA9TVsSAnZWagAArEwP/A7ZbWOeiO7qiCPLMFDp\n6S955om9VHgWoxZ7FHHt9C0WiXON+1jiRjHEjJJW0Sp30WKkUw/bhtUQCr++\n5YVWNh9f576v3VNwaqErf6JYv0rt7vTVSEFljWpfNAYvJF37sllnFYySvZG0\njWy3dlxaiSVY3PTiDlme+xp79MQLBI3hbAC4Q+dztJf2+6mM+5zvqNU8yUBz\nY43Qfi7xvust5L+IjisYOmiv4lj+CFYSvk83+wsRCz1oF48MP4k2/1b+uLak\nvXlZHN16f3q/ZG6biVSKZDoak9X6P7WKRWbvmGOkkGU6s61X9lOsQXBucV/l\ng0qB37T7AiDuyTPHQWW3hUCPo74ZHvvjTiTSFUvdgTSWKVhMJwQ5i0E5++nY\npBkcxEJv8o88bS+tfjvuB6wAce+MLU/7J6/HZtcP5RisUDNNHhP4fD7a96Ze\nqhu671UDi8XNs131UwwK/7NQxJjDk6gSOKHJmYV/++hHl2prF2U+8gGy0lhM\nrLjRX1RNkVQtMb6cnHVz5ousYRsq7bEsFxcOWdGFFQ5CFXeuuZko40g8KNKZ\nXtSXBbKflVHuoTlt60HgDN69Mf7n7ym++I4Oqy0VQGG/z0BwNg1G5tvOXzF9\nAlP659a1Cm+2LpoWRGmHhj9MgEKFVYNuJpfObZmWmYXsPWep83c8Vwe8nM1e\nb1J+\r\n=pH2c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAdwH6bIVxBpwg5QcAsvfLJ7jsI5ZFdNkajxDh6Yuz2gIhAKO84NyETaoHT9B2uAL3dDgo1ZyUJ0D1s/xPAZfdAkqh"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600688580-b5e4301c.0_1600688703474_0.6354566792638536"},"_hasShrinkwrap":false},"2.11.3-next-1600688934-94453ef7.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600688934-94453ef7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600688934-94453ef7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600688934-94453ef7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JBfXMUcM9M8XEzdIzDLmf22EHBqztWyUrR6EZEkgHoO76jR/HnmTNTZhko7lgoaoJhtoOF+EWJ+PFfaIf53qtw==","shasum":"fc8dc21cc7deffb0f68632b3df7f0090ef2d2ed6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600688934-94453ef7.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJOjCRA9TVsSAnZWagAA6LwP/jXCVa9T0vJ1yKLC/O2/\nx7QnGNHrDOmn3aTBF8slrkLNmbxykJN82aHy8MU4mdwqfIMolrcN8+T/jBOM\nsnW3kYxZTYZptIyPzgq5U0rkfHCAq58FyMv3ZS76XzFoqVCmz1rUzxOLIxTr\naxEGeH+Ezwcc8e19HU2CWvRFoitx9EMItOWo5NthdNBTTbbVjhsmUOf5xAFr\nxtUB3XdtOBkiGGPzA/GEVd3iiJOlTZQrS1k8NMkhab191ET1GDBYv5FSw/ZR\nAZLDzp9E/5IaaD1YWjmTM9dyWOaDwT+HCn49XtexLpnnkEu3Nj4CcBgG0oKv\nhzvfL9MS8E/lEbYSwukIU0ojKnG3CKNfpCJ2hpmUyvMa80Jh/HU0wpDyJI8L\nJaGg4FYUVncHGRCogVe5sQNH45gUTCq0KhvCiGgI+jAqTZmzjZp3e3aMODgl\ndm8BKmtL4mUwC2zJYmyfjsI02NzRmUfKWH1BmedmCasjaWA4SL+JdOeDGsOA\nq+IYgEeTMh9NgNTPdK2rFOHmvxu3jxgcexFOyZo0cDliVYtMsViWKuWX/2Pb\n4l7ldbo2tjqRLSz10w21Sl0PIahpoR6k4SE0qLHIOF1kQL2kWVEwYZDaPzfj\nbumC8iY418RIVGBb7oC994qPoGQ8c4OpivSs4WPoin0qQHti7YeP3Ui+EQlw\n2snx\r\n=r2sJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSEkZHvzd3eMjhcCQK4ERdwuNI+UPfhe6EdXOT06v7BQIhAOkxzYB/ZRLykd/F950cKKIRI/ncqvQRz85AXjUGJqaI"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600688934-94453ef7.0_1600689059053_0.9459470217991828"},"_hasShrinkwrap":false},"2.11.3-next-1600688977-427157e3.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600688977-427157e3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600688977-427157e3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600688977-427157e3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eOhRIbb1lrv7N6Cz3hjIogxsjoY1ziRdrrC4jxdyP4KxZE0hjSp5B5FrR0O3JHLWw2ziHCTUcDYYnvnWAOWsLw==","shasum":"fb69856bd667ef18290e7b2b6a196c7744caf870","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600688977-427157e3.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJPZCRA9TVsSAnZWagAAD9YP/1z27p5k8NLcZiRWhMom\ns9qPXQ1SjNh00oqXNSNMGMAYBREoCQ6qWpzPZBWpQ+5PAePnE4VUkYotKP/l\n78Qu5rtOjYn9ZqvxNp1+jnMfxkHR6zfQdr7cSDRucZCxbh63I+mp/Hht5y0e\ne1iwKgMCGzolGVBGZZhZMzH41ClUueOaedUcMOZGYJjHHDeRI2HFWv0C05HW\nxbxPnxBimSPrSQS2+R7G82QYL3nizJOOkRqgYErZ8EmU02op85ojo4DxjRwA\nD6dOWN3h57V0zE4QS0FBwIWuBDuVtfIiF5wyW9C2M0Diq23LboX5XWNcyIqm\nA0CVsDLpbKWi6RpVNS9GCbSpq1EnRxqfH6j2GHnoEZCDbmxgbCCMzOPWFpNS\nnBEWPHK39e93OKAMkX4BnXWQ3xVRGP3VTwVah6d2YaQ39Nd7Qmdt0YjiG61b\n2k/I0jcwRul+mmd5ulA5UetqjK8hYTNqTDBwsF4qqimv0DBLIMy3vI1Bizej\nWBlFRzSdVpLMf1h8lDiuc8zoVvs+SP+Rb0M9ysy6eBUiXmIEVjfCYkHovQsz\nEp1pCWlsmAfSlTpg/2q5nLCvVOtZ8GRExLjoY9bDICB7L6VDhf5KfxFZ0cyw\nu8sh4emkN5R5BxeeENqBcxxSC2Gw000TGGSltnyfqMKCXGz2vYUOzPrZauwD\nUGsw\r\n=uyvA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDabka0ZiReP7/leZhU/qTEufEXXiwfCcu2dBqWB9dtFgIgcLO/9lQmfpcQGHHRX1E4R0HsUqJ4lGHsknD8NejwGZs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600688977-427157e3.0_1600689112760_0.5156320531263725"},"_hasShrinkwrap":false},"2.11.3-next-1600688988-9bb8935d.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600688988-9bb8935d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600688988-9bb8935d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600688988-9bb8935d.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XpkG9zUV+oxjWc9+rGGpTq1GWo/0ws3n9ClP5a19Nz1XBQ4SocvPJz2oPOS3haBwcqw0mHTivknpHPHg4IGySQ==","shasum":"e654bb8b37457573d1ba39431c1ae23706324d22","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600688988-9bb8935d.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJPnCRA9TVsSAnZWagAABiEP+wdvbhxPuJdRGYPLQH06\nh0yjON65HLIkTzML0fwQsDoaacSlotOanAiSqhiZ47eiWsCJiY+A47jAlC2m\nMihuGWDucYuT9gPnR7pPqfI5SqJyYJ5HokUIBYuXqYjfQ3qgipjLHD2G9VQ4\ncUiuSd9/SLNKnKRXmGbw6WgKHPWnOYJwkOwB3/ZUgqD/jvVYJfSKCZXbFbPG\naefsDmF4sa61UWgAQzZEeqQFPJnAHUvhah+7XPbJmNORsTm/VmCIhAk39J9f\ncYvkTn0i1SdlLnnqqOxra+T9bxKMWhFork1HaYFO2+EX5zfui3nYikCeMCkY\ngiWfVPv0WLa6ONbt0wWKjPkDfbK9QicvSOFAvVCDioEK1lBtMGTGjbWgVeyS\nWefrWrbONMfqe8nOgGhxV6VcHOCq1KgpodSwb2Y+MHApFSvarlAt/Mf0Feyc\nhYSPeri30soe9LIhgLczB7lS74i8BFblWGmQ/IZoN73mVbnDAM5tTVuS+Kf5\nR7I2NfBNspP1GxozOZAVjnJfeoMvcTqlOTpfDCuw2RMeSrWLzipp7RNchivc\nc/OgRMqW4jUDuArYXI0TBugyYpzyk/ZZ8tF/TV+o+yJ49vPZbIeZIqytE2VC\nDsaPOIDlCd/r8IJq7s+/lKOgOD9hRkgLs6cYjL9C8l4xZPMqSKr1adqww86Y\nQxkz\r\n=kKjZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCq3TY4MFIP1VYLSpE9Vu2kGGK2D1CbpB02rAUGYMz61AIhAPrf7HWSa9pGQtHoY9Y6rLzTomIJOL8E6UIzIbbSmbP2"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600688988-9bb8935d.0_1600689127325_0.9247306936301898"},"_hasShrinkwrap":false},"2.11.3-next-1600689217-2f191909.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600689217-2f191909.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600689217-2f191909.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600689217-2f191909.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4DSl/7THbQngqoONNj4P4KDw9D5hmahAz5ByAtHhuV44OmbM/LASKpx5v5+XaoWTWOHaoAguI0w8H8k7hs8Jhw==","shasum":"b2c80d1286e411520dc4999b0bfa686519f95af2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600689217-2f191909.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJTCCRA9TVsSAnZWagAAmuAP/iF0qDEOuUxmMBoqRng2\n2DE3T3lNxHLme3haNAlB5kDdrVCPmOYoOkRQuyFuUwGiKN5i/m/FazH1uedR\nIyr4FCxjrgh2Cpv3rEWjp8XrqLzvUVLKpIJgwxNnkoEHBNiXHCg5bQTQQMcc\n73RZJG4oSkBv948iuIF4MKFZnJQ9i63X9vObjGAIK8fkCfwjYkDX/s0YYC60\nPB/IS0wezOKc9OktK7n7B18RnupdKZV91WydEtHnsk5pedLJ8ehp3Ub6j9aM\nWd79fXCU1sFlvniacA0zPEvtTmzXgzRciwNi9QDSZ5EfbIu3saOCLjrz54Pj\nKzSt+PA/yZr/HkuYEbVRcUHZ+3VyCT64jKnPWlpaFkIQu41I1jF4ozuskU4H\nNkULxNldeUUHsGpRjkRhLe1JXHDAZdj06qXa3Z+YktnxFmWu28hz09PXAoso\nhkmEPDvs2MXbFmAYrBVepXZkV9UW/mm/R54iM/TUtc4p0NYTmrWycdhqOVYH\ndLDJQ5dyZe6CXCPOSsWnLuTi6W70ROWW48vTGucvJQNfmKexUtOFS0f7Nh8a\nOH48D1LgnYXbi+2VnpFLkXzy+6WPX5MVZMomVWCHxfYhwzXYd+KP+umGHOlf\nXgu7Gj3dNr6F+xsD+IXm+/KQ5E4MgynylWxduQvAbYYmD6Obw/k0budTkvLJ\n8G/c\r\n=y5rl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3hzfcPFELam+R6Uyq0yUZg1XDqyyhIJtgQttGLiYrrwIgHZ8iwHxqZS/cO4YZKDKnpDG7ql7NHkl208/jX/N254M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600689217-2f191909.0_1600689346110_0.06300657911811891"},"_hasShrinkwrap":false},"2.11.3-next-1600690048-9e581636.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600690048-9e581636.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600690048-9e581636.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600690048-9e581636.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-O1LFjTRWUB4glkvzG3oxpS+FseXAGbKIOPrWKgeIU4w6pcOdX2/M2obgJf/YPHihTrf+Kf++NJwGlTpIuEyoAA==","shasum":"36b6266f6b92d60d6aaf35c1733e212409232462","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600690048-9e581636.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJgHCRA9TVsSAnZWagAAxAwP+wRpXFncO9NjOWRt4yVZ\ndhAXKLrKPHKfw29CXE9bdPJyP5vyNa1ZUNy/Oh2wLLJCuHiOa7oETG57jYGA\nsdbwzBuZ9QR8D+H+DED7RfUkmzAhavr7bTuvCt63zYs6cdizkcG9ZHQx8zS1\ng2qqV/M6qgQVG2+nuGgKOVCwx0T1DcsKNh+9O2Z8jahi8JR6Z+VIqvxJO0xU\nfwv5Ej8PVAB7O2FhdHls+TdMnSVTBMFfFbdyWjAzqbz9Q8vK7/LkTI4q1+qI\ntPa0SG8NjfgT8xjMtN2s4fImn/Z7yEh+3Iz/eQz0DNn5n65iWWTQOwIEQar0\nuoWiiAvq3Hcd3NlD9+vR9ERoDlzQm6BQCBldgtp3bjuxOe75oMXTsyfplcU/\nwb1NOwsXYf85jApejuFGKSMRUiUiRc2O1NRpx/ycN06v0WbknIToN6l6AODP\niAhKb3g9SFoA8r8pgXoPWA4bB1pQX2fFygrBEa+SHA3lVVhtZMOe1GdFYpvS\nh390OU9POmT/fFtlfbPjTJj7NIJ5UbFbbCgv0j2aTfhBrZhVcBesMspnO5ug\nglz/7I1zmJG+8l03aJ/S5U3f0pkf/iQxh9wlIPRy8PYTUVbh/FQC25nYrY8x\nYIw3D5RC0mdrh5Nf8ToMMUOF1NGzOa91LHllOkAoVNY2gYLwFYmMJmqOWqvX\nHjhy\r\n=GOJ4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICb6DozGlh51aCYuxIwh5kiGc0OTilP3Co48iu15PbyiAiAbAhJaS42tMeQWUX627x8NYCEmk86pkNwJrFhdcFMSrw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600690048-9e581636.0_1600690182983_0.7718696591581946"},"_hasShrinkwrap":false},"2.11.3-next-1600690159-1fc0197a.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600690159-1fc0197a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600690159-1fc0197a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600690159-1fc0197a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uQVjiYCQ6eHAuBpMzmlRYkZC0Gi5gwMwzeBnS+nJgcBa/kzgXa39PP2GojK+Yn0ibHBD204wQHZUIYSzWlafcg==","shasum":"3b7ff9b3da119836b05e5fd0a0cbb0427684c20b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600690159-1fc0197a.0.tgz","fileCount":56,"unpackedSize":106841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJh2CRA9TVsSAnZWagAAOOwP/3CIHwVuXnyZl34JJ8yy\nYOunf3esM/tU9HRO12qM+MonZ6lc3OJprKW2vEWG6u3yTaJhzsPeA6aL8+J0\nm4NhV4/7cO7vNbNE+2p1laWS+XA0IFORmH78Ogj4ETQW+ueb0WHzjbhAF7KX\nwH/ZKlu12fbFQnqRJBxMXuoI1EELyzTUkjCVANHgSRENvb1hNseG+rA+bkac\ncHYhUJhdchWPS/U5bHbbX7mCJ4s1qxBdsYZQ7QrDM/sqIpL1JGNLYjB1N1BX\n13OuIAmaoLhSMj/Ai/cwW1onApDH1gCEXxZCz6z5AYuaKSUmp10+BYcEI9Ol\nE6XtzQ474EkImN6wzZS8iMmoXksoDMhrBB829ssO66z2+KlYIcbwxSFLV5x0\n348wp2jZRIvamodey1eHEcUPMv0KQ3ms0ZoZifiPIo+Yo35wjdn/fcE8WrUq\nJm36U/yj5jiPwXHdNPMo3YYXZTRC3Z2EC5i3L+eUUM/E0I/F4xh4NnMduHDZ\nER+KqxLhwsqpVTwCdnNPggWK+6Zg9bwerlEylhoFpfOTi18lfNoq7E6Jekel\ne198DUuWB76eNUtBbroxoc9c6tU6Hx6UENPWT0PajAsLalKDRuLdw8B9NT5v\nI/LdnqWODTifoyIIReV+KFozR0r4cGfknSfofidf2wVU5zBTj9qJkQMb9Por\nKIIe\r\n=OFKT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIl8KH0ZkGBb5pQwu865f/rlwSxyEHl9qH7ue/42rzMQIhAL9v2n3PWBTTQLeHMpRw6HWWM3uarIPPrNFKRsWOc8OH"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600690159-1fc0197a.0_1600690293770_0.18705508280736538"},"_hasShrinkwrap":false},"2.9.1-next-1600691261-be75aaac.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600691261-be75aaac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600691261-be75aaac.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600691261-be75aaac.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vpyVZ5McsozeleFjnlcygNX2jn9Sh5xDPeuF68fzEOmn5rGVQdoXQqX9xiAcJm4Oau3x3PS7Er5wnDhvnytwgw==","shasum":"8b1807ba912d5171d6dfcc33c33228d290a728ba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600691261-be75aaac.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJyqCRA9TVsSAnZWagAAuhUP/34s3w4VMrMWcdDECvLc\nGxebqoKvug8ZE8ULsxET4JnXhLmZufJ6PUUjXaK/CGBfpIeIWCYVNF35tNwL\n5ILmqDjalAspDrO1xZXsBFw1r5ZGTtq/Lg0KdBPUjHkXGYJ87O8jsyfC/eEi\nVDjh/86KasxEAqYqXB5cARexentywEnpMm37OVpATz4LJz/2mpGUOBq3a+5v\nUgdiQOaw8SQjD9cptgcGt3PpZrJDvSFxrN9HU5/OpBPXA4PXvI2lYHmxg+pl\npRxz0CJipG2JMdonqawOkQDcukGliqjrIGSmbBdFNnbib4SVJlu9g7sUFVMa\nPf6ngSz+lX+QewcMyNtI8BPwFepDdvuHDMz6Gtqe+d5DDIrNMeNyd7loaJf9\neb7wNqmcZQKSYMwZbBCRXKmTeJ/LXfZPer51l302+Wyf0tbWQNJPdzp97G84\nyGmHlIgOEbQ3H0nLGtpouwHCAiqnchQusHyl7wOBxNDqgHrSYS//1XFQya5w\n6Vqhlc55eXX+3B7PDFFclWgrOS8E/Z+WtOV/YzjDBg57RGzNm052a+kb0NnW\ncawaHjle9kr+u6JapPnBEgifhCp/wzVkmgIecHpdbAq9MmQip3j86/OAxRhd\nWs94uaHQzXdU9UUl8HHnWXshWlkkktrginBscpiS/FWsbHHJUbX1HcPtC5tn\nCRG7\r\n=ysuE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAsGvul/f/8niVUgEnel+47gB4dFog1A8ceJqwAN6c0LAiEAr1YBMi1khh5ZcaXhnacWxbX6Y9Yew19CPwb8ARey0Uw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600691261-be75aaac.0_1600691369795_0.7364220895840747"},"_hasShrinkwrap":false},"2.11.3-next-1600693352-b865aa9a.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600693352-b865aa9a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600693352-b865aa9a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600693352-b865aa9a.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qGpg0vQiLd+EjXv9DQUXfWEgm3WDQLdkNxoJO7HTqxz4QGkXzoUpGBmjOHMuVPZeqY8TR0h+H73Djz+8oFBBSg==","shasum":"d5b3f20092f324d3d1be12f27ece98bc71a46691","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600693352-b865aa9a.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaKTvCRA9TVsSAnZWagAAOMoQAIKl7ylnfzOzdplW3NOU\nQAQOCJROP9d8VwdCvivBeWEmWSHFltq1Q4tlErSgV5T4JSDyHmQBfVXYIi+t\nRBpEGXZTgBV7qKCVVeEHwr+wHdJqFNWIRUcaxOvZE5w7Qf8Mb2kJv5Q3Hxhz\n3l/J1Wq5A78KIrl8JBUPYivw3Sdc6j+z5n/VnHh520y8uAdk0ZNMDbfGgXsG\nNT/+iYP96JMWSaKyBXYiSwlZq/inpvZzM5zui6U5XAu+C3lpm0bg+uP2nHp3\nJCHtXEuJV2ZlavPCl2bT89YgjPLAbIotE6FwK/YBA4Q9MoBSLBMoP/DrZaJY\nEpaAMKxMjhsAAt6K+m8L1RoLIoCz4pu0Ew+/I6Jhopnw4cM1B0w1IgCCur7S\nlzJZAhcZK4i4J0sDWtpoSOoSRsfo+IJvG8JL10gz5a42CpF0VxdgW3t5cHJf\nSz5tknxUZJF713mVpT4x4re2BP9lZMKzqVCIQr3xfbaF3B0vCFTMqRHrexuA\nUEC5bZnI/DB5FhK2gi4EDkzQF/My5bCJ7q73aJj7dYxIW/Tf0rcfiQwBREb7\n0bIWWIwoshx3T0EPDjM1VaL2UVT4C71yepcyC6tkikYcVumx5bbIDNEiX5Mi\nims/SS1U6mJhh/oE6HXbfgHHCll+J4rNMaSl7sMpi6P0nYEw86dzpDFBjBgu\nRA1E\r\n=Rr65\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeGIdGbeQyQMOeLt829pX24InwZ40fAWnC4f5uGBQpWwIhAPw6II9SiiOIuXjbEumXTtbZuddHVpA40/utYuTcxUqJ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600693352-b865aa9a.0_1600693487151_0.38004493587993515"},"_hasShrinkwrap":false},"2.11.3-next-1600695386-2ae53215.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600695386-2ae53215.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600695386-2ae53215.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600695386-2ae53215.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oG6uskVjp3E5eCXepw/2o/ZjzFD8L8AoDnAccyjNkGXfWS8tRCiY4w8USu07qVmJ4tO+GKrfyDkHvAvRYY8idg==","shasum":"4e6d1f42e5e2f49f7f446c828d1e90acc26d1374","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600695386-2ae53215.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaKzXCRA9TVsSAnZWagAAgtwP/Ru84aaEVY58wvZh3uWv\naOnpJKuHpS0y8U9chPtl7gMXEqDNybPg7hoYqrBV0WUpWWU84fUwni8oCUL+\nUYNv+lpcLnlSTBXGXor5N1lT/X4yK7mKb2z8ZbcZfoGOgt1OjEPv/vMvMj9f\nm2fYCcSZCGrHw4V1e1ZWHUPwWlWoqXydIUdMHm9JAaPpvEOY8mS/XvCf9dSs\nuhxh7LK7vOohlorZfUcbCWmXJZ0QLkvs6MH4qVIuisi0bCK7YVYjjTjBbGw1\nQ8zVTt+DE5TFLY8u+TPefRfgEWSCvdh5+rPm+SMbf8Gg4VukrEqxdQN96fWL\nVXwDc87VR2ekrH8rt9wAUMlMKItLSHR5zbxnFGQOHY2l1w5W0XLPMuJ+nKpS\nwVAlP7MOV3O9l7smpPoZb1f3mXOcSCKYrdRghQaXp89nE4znd9Gz0hMCf6Kp\n7tp3czWzbkYJZhtqBc5PKl71Sf695TogXX+9T2z/BiiW/OPH2FUYtDIBfGwl\nQXqdYjwwzSDBpnJSY+LPP06rZ40tVHfPk7KyXZtQaXwIkh/ZLaBciCqOM+5S\nos/zyIpCjaq7dSETahJqsy4fJhjmWK3sAL7Lj8eAPgAafSYYarP+cIuY2uGp\nes4QD6UEUZXgB3Id1BuGf7AAAx6AKEpQiP8gsmuLfT5lmyzJqIzgCXcE4zQ9\nZ/Pd\r\n=AThl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGCtJDV8F9SfF77lH7c7ok7/AII71K/AxHihvtdBrGN7AiBpC1TJnAyEgOhkoPbfjCAYXgYXSzQOXtdTX61yp/GmvQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600695386-2ae53215.0_1600695510507_0.09835712026703503"},"_hasShrinkwrap":false},"2.11.3-next-1600698599-77ea5694.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600698599-77ea5694.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600698599-77ea5694.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600698599-77ea5694.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LXa45rovRlv6vgMDQQQzuevdqsqQPDn09LByy3hszKy1DESsbNY/TKKiEVm/GyWBpP6PoiXEL4UM+86XedKRYg==","shasum":"c713ac1a609cc0f96cff6d81d0441ae34297c71b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600698599-77ea5694.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaLl2CRA9TVsSAnZWagAAzH8QAIuG9sncwk6YULc2wYPE\nJvW1eJx9UheRZpnnfDw5D/Kbhsh0WoIsLJnab/hokez6iAaJAtFygCju3RBh\nm4hIYFcLEe7OfVUlj+q4+boROgqxILWTGnnpQqjl6vRu3ZC7rqiRpjmHcOP8\nGZuJ6ci8ten1v8oC8tF4cg6lr7cWjXavdATry+CpGPe4RUYwkHAdimVj+V04\nutEtZr6pyuSh6KkMFVpsqRcufVpb6BdaDRafb60zkpbaYM8s8W/DclgVUxmI\nQydDtQViJevRxtgXSw8m8ODZ10zNQABWqQQiQpUmvg4cwj2slwXYvCpbOAqS\nvcK9qehpUOlHE+CIPqeGO1I7ybdfXO9QCbPdQT9I3INAl3n8DJk+JK6xBp6p\nXWbU8tXu0E2SSgizApkNv2NTATSqeI46erGcj34UaloQ8jTB9FWIQ3+igCU2\nYgKVQFsxfb1xWQQEVszKh0XXS7qIKdbnyHOo8b7hDrOzHjjUVKXksFHWd9FF\n3dKVJ72FMpFj8+nIKyZnyn2x2WzBZalZZxCnB3iv8vOHPSlaSKaDpwVKP6SC\nKVO2QXdo4Gx4dZrOGwc56/Tjtd6iykDv3ihKBI6YlDtn4WRr+sJO+hODbqmZ\nxu06vnguVPcPoCUNQ880FtRaA7MpvjQ9jMUrM31crYTEMTetzlYNQ6kb8G32\n7u3q\r\n=tV6j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGnisg/1pDoIX1uWuDZD35dw5twFnPJFpQNayUXVg3OAIgLu7d8ykvQ9nqR1CyonP22q7e8Mf8RKqG62FRBl4I6Uo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600698599-77ea5694.0_1600698741618_0.4651380587041316"},"_hasShrinkwrap":false},"2.11.3-next-1600702842-4bc1b0de.0":{"name":"@xdn/prefetch","version":"2.11.3-next-1600702842-4bc1b0de.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.11.3-next-1600702842-4bc1b0de.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.11.3-next-1600702842-4bc1b0de.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KK46UTFYbmB15GgxQStEHgV1qp6KbrcqwA3JcOajLwEW8kxLmHar96lZ9kRVBfLGuBMwZkWJqxIx8lBiQwIXpA==","shasum":"382b4576362ba3f7000327a6e16ca71957d78e7d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.11.3-next-1600702842-4bc1b0de.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaMn6CRA9TVsSAnZWagAA05sP/A0IwYTmrkodNei+Ud14\nv3YDH28Bz1kOANcRok247LVUDL8ats6fhifc2h2hEq/Sk/YDUmhPJvzri3XP\neZ6II6adJHInpQ6UtJAwWMc+0yz/m0KSqf7p+trDRGyJ1c18/fX9P3tuIdK0\n7ozwONFHt9clgcaEFT5nuPjCAyysh/1/D4184qd2/hOcaPIKuKBkPdEh55Oe\n30ZfUj0gPjinD0YbKuQtDupFtUdpJZW0TaZ/g1EHUkFgWNxniXgXZ8tIQoN9\ni4LU12CJlRuB3rC+p5SqpMCBlKUDdl8/wZeGsjgLvM4JYuIcgDpYDBawMMN0\ny4AiJeGvkJY+fRwJahMxCslhDGjrVVmuJd4RdaLFvx64CzQCs6LO9/1vEqn+\nK9ksThbpl2c+VERPePrFHXfa4huzC5v9rWy8Mcov0WUVeP5bda5fIdjFdW+C\nJbkR4jQfpUu3dejyeQuT+CWuuAO7C6YLrvlkb6yOIeOLUQLP0qBuPQsPrwwz\nA6eJay3+RjrH4QoV9ysriMLeFaWSqzg2lIveTtlYNknuCtJa9bvAjzM0+McD\nfl1eb+YZOGAF+lyV6J2I7fLZNjldZAJiLM0Eobmd5El4ZGNcs2RSSgovrOPT\nhMpyolT5D6QIlG8+C1SV4b3S11J4D/oH0P+IUDbZJ9Jz+MwXiyLwyr5eELW4\n+qRv\r\n=RwhY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+xxla6kDPiW4cV+WpTCdqx3hfZEavxM2ok0RBxjjiAAiAh2UVsesb/0K1UaqCn9TgJoJdXkc9kB/46C6rOJAZMEw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.11.3-next-1600702842-4bc1b0de.0_1600702969923_0.33807550855652124"},"_hasShrinkwrap":false},"2.12.1-next-1600705560-907c88c9.0":{"name":"@xdn/prefetch","version":"2.12.1-next-1600705560-907c88c9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.1-next-1600705560-907c88c9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.1-next-1600705560-907c88c9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-QFibWjSRrlKAXrVd6cR3RGTghZfFtUI55TsfKjIsgpzvgF9YWnpM5Oq3Joao1e1af83Qei6h8N6xdgcLWwQW5A==","shasum":"a0d3792a4fb205f0a513f988d5684bf065de7fe5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.1-next-1600705560-907c88c9.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaNShCRA9TVsSAnZWagAA0TEP/i+NT1HtexSK9YiB4rbQ\niIXR/DTK+oFNAMokR/P3zdyEXtvK7hv9d7KHwqShPSpG1NIvX0l6hSTYsI/h\n4jmRHE0uihv42z4O9CPD72QxdNOUj49E+4zEH3gNJNP9MCXpzF4gVMiWM5Tl\n0OBzzy8Rz9nzV3HFWwxb3lZwSEIaZzoWPLIxQllFe7n4IvG3fiVMUjFJoHSX\nR6VD/vCtlCVy+4Gn7hLPPGN7YWZ8uC4qqiOa8ZL6AeanBK/T8ZazOi7yHZCX\nPxNEnV2R6wws98tPc6h1GfCjz+qd7IcTEb65c3s0Udb0qBiBAPHm0vPBbUWH\nQgeEe4GXHxk4r1YlLT9rXg98bHVF9yFQZRTqQ259uE8trVlcOzanaid2YHCA\nJIOlq7hVOs9B32b8dbvoh/IYolmF1wHaDtL1FLkBkNUvHP0HvS8j3jreZucK\n4M2MVmxxB1s8P4KnmfyosySFcmnGah9tLIetzQPTcTV0Wyi/51vj0aj/tGAR\n+QtK6gW/qwJ3/md+wdLpO/2AlZcH1ld9VTNx2UrUtqyOl0X+qYzrNqx1jZrl\ntEIrgfLlx7T7inF3Yn9qW8UaLYFqmfE0aD8SmEI76ErPtRXm68cjksge6t6N\nkudWOFdPawCCfnXyXT5WLEak15ONBKl+uN3Rwg2AQeasmS6XX7rcWioHa9lI\nATqT\r\n=U1Ov\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFRvduYs4uhBC82AnXLERZuafCLKzH6db71xW5GeaN/mAiEA8yg8l38UZXps8zV415WJcJoAGA2u6wq1X8dMTB8Avw4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.1-next-1600705560-907c88c9.0_1600705696800_0.08561030945205461"},"_hasShrinkwrap":false},"2.12.0":{"name":"@xdn/prefetch","version":"2.12.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.12.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2aUihHj2JblISKxrJ72APUOkJHBe00rj5FGUWBVbCs8p7v5+IzVT5AlngzM9rXw2HwRTJP1+fTESQNIXVcJpVQ==","shasum":"8f1a26dee50ec0b3c6d07c23d639d66422e146fe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.0.tgz","fileCount":56,"unpackedSize":106977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaNTMCRA9TVsSAnZWagAA/dwP/2T5N5ynw0iv8bI/MKPQ\nh8eB+SbIC3xPlHojdClk/MW5CPn76NBdHC8kuFCSyXxNsfkGgp81mXLKgG0h\nlUvg6A1FWq5/wZmGvjnZfcW66IeDJkfZZx6lsb0Ww/Y/GkD/A2JKdd3rNzUQ\nvjzSwUqzllWgnHu7WFbR4CGev3WWHY99T65Nng5CA7ZF0oY22y2a1SESRDTH\nwrrQEIimFFfmMPnG0Ho+bC9AmRMD4veQw4+sTRbSQid0/OnYXewIAsvdGCiT\nhKtI5426+vIYdygMnlDMcOisLOZh5+ngNZk6afL7qbH2T9f3kxgGhErRjBju\nZNZN/iIgFWEEuu7gvmt4fQyvjPKCBK/LSPBcoDnxQwqH+Uef0yVfr2tdvVGc\nFoYs168urHTuS0eCLjwOTlQeSzp3WiowARSYl3Ona+eBwp6bjUBJxOwVzUS0\na8etrRikZrTXSPx2zpmBoHqAuDCOKQ31KOjWncp+2BUk6Us3a61d95Dnp5hL\nDDAvRxMgieT9nL+SO6uD8vqipY/yYyCZYS91iaYRul1NqfuDdUx0t1bRSShP\npaosTHn/gddd7DFvEz0FfwhUxLnNkaF7905G0vpJvF5tUWL4BHS7nQbnXJbk\nVSAyeR3dMwatzEhIakVHQE7ubpquGZbEkbXuXm/8a+vSkMYBXTlFGFb5QhR/\nFH1v\r\n=BT6M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpMGBEr/RT/a2NKtzOgjx6SvfeOlJe++4GTwdmK6bWUAiEAt9DuPv6eOVvB+Hz35wbxrsKJf6tNQR9wYU7WmTtm12w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.0_1600705740029_0.7991892053749672"},"_hasShrinkwrap":false},"2.12.1-next-1600722094-08d43063.0":{"name":"@xdn/prefetch","version":"2.12.1-next-1600722094-08d43063.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.1-next-1600722094-08d43063.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.1-next-1600722094-08d43063.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+JmSexwoHgOp1Q20UCdgymZbzBVRv59LaxnYLy6POnFazi91VmWZRUgNZv9USkvCBeQBc/6SKhY/srQJDgxs/Q==","shasum":"c2e9cbc2a831bf36df7b6dd7c2605ecf7a4b470b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.1-next-1600722094-08d43063.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaRVACRA9TVsSAnZWagAAHpwP/0OiIIR/OsryHpoYLXpJ\n/F85k0lAIj3+tmWQN0KL/S/MItjeGpuCcOgqdZeXJTNIMnP+TjDj0/9Xkk8S\naya3NI1B6Tw+ggCBsy3AnZNoR0X7aw2JzaxHeR5aXACRS85XWibFmsfIX9NH\nYeFyMPQG7a2LQFZ10JUvvbzeiyyzTynTKWjn1uPWeR2zt52mkR0FRBfCIaEq\nhrPj0gYvKbp5U6SN8PGPexGSvr09B63g0ebAyrOPh3b0QgRHE2hLkcQOzuQV\nBJAbE4GDsY3v4NHfMMlvzg+JHvOLutnK3ALMPlG2WC5XGjIQWyrqxuHs7elg\ni+MA1+BeJtST4J36GQAL4Yf88iO+kfJUIzLE6pOe1eMqe0eBwCPxx+ll/fFH\neX7MCUq4mq1m4v6gul1S2axa2wJdOTIwVaTIuGtZdCixa9PTgWqwD8AMzUfX\nceFEXe4QbP5ynwJKejF3S+x9GlS8eaxelHGwRq0ec85xkwmNV5+6pjcA/9e3\nj2UvdNvU/dV2xRLgDjgaX2/emyYg5HpnQO5qJZNqf6CLX9M9Jo2JbabaaO1f\nFdI3Xd1FpYvFhLtNJyGtgzdew7sJpVr2twKrV1X1S4DKSyxPWDjlsC8kZHbs\nAh4x9fVOeTSIaiYHxLDdSXksf1LTmqhDOjwjo+T1DnVPvfcRttf1plOEZ5fK\nXdO+\r\n=eh+s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnfAZqodqnAffSJB9j4JrbtCtwVYkShEHRduaF7TbV3QIgT5DiVaEEUdh0HBi4E5c4D7YiItn8LjxqxQQY+ll16oU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.1-next-1600722094-08d43063.0_1600722239954_0.3054948307483496"},"_hasShrinkwrap":false},"2.12.1-next-1600723587-ceb25f8e.0":{"name":"@xdn/prefetch","version":"2.12.1-next-1600723587-ceb25f8e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.1-next-1600723587-ceb25f8e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.1-next-1600723587-ceb25f8e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KtyY5DV8aSNGCSX/CjG+2GqoAsrMNIwqY2FGCwf4XzTLHQ1TJZRrxgb1mYaKum4SWK6UIv+Augo9fcmC8tcPUQ==","shasum":"122af91e5c6c6aa257375ab47072737fb853cae4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.1-next-1600723587-ceb25f8e.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaRsTCRA9TVsSAnZWagAAQAMP/RCh4nuzfq4mZAeEM8BE\nQlbbFj/cDcNqiDgnaqgQcxjT7FjRfQuJjYYVlW01kTFkoTNi+BPdsGcZQGio\nZSx5Z2p5Bn1dtvLj0QZqy0w5WMwnt8L+7y6XrqnAacGBIhPYWs/keX/b+xZU\nkpprBFWVds7nBJkw+hQ/RAp6oKh5JDOFUnyYPIhfpmC9ndioJqYx+WqJIrUQ\nzUof3MT/N+N+pfOjxSx/Yt08ojZ640vAYcLF2vTpl8D/3nHH7rM95XzQzNj1\n68bKY6m7VWqdZIUxFwmLImRwq5uomy7ooGLBYG52aWMwAgXzWmHsvEYy/9lL\n0vn4lEOKB6xZrZul/VulLYMkzzID7ZF+8zW7X8uzpLtFqh+homhutZYVPkVL\nYsQgyzztqcoXPm1y+XraSv2/WPoPF6kscLlFDAbY4lKdawiYzBJjyE5vH7HX\nFzIM2AoedKVhSIIbW7jFeAhvRUywv/9fxwXlXjivTaxL8vgYlHZ6UyJL8Yzg\nSBhkq7vUM/aSgAimlfe7n3QfPpU98M9EdewE5OU1HdjOQ94LzHEy7Soq5voc\nRufnLuK35Xh7AnM7JIkIPfTlrjDV3G6rGPsoOCry0r4wbGRwwFNHK5T6mqmi\nTcAguZevswiS1waaSUfx7clCMua8RlXEm3ik2b1jOiEl7JjClN8yHVxy4r/O\nK/IM\r\n=Uglh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjuns/aWUoY0Fq41FjOW/llITpCP0vAJvFmsCGj9RBPAIhAPtl8aooVgTqRcxn0k7kqIsCM2XChi38Hp/E13S+a9CQ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.1-next-1600723587-ceb25f8e.0_1600723731023_0.04285856718856573"},"_hasShrinkwrap":false},"2.12.1-next-1600764529-80f5fed8.0":{"name":"@xdn/prefetch","version":"2.12.1-next-1600764529-80f5fed8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.1-next-1600764529-80f5fed8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.1-next-1600764529-80f5fed8.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pxC3+KYKTxWWdEMW983nZc5qKWZJsaysHHT7C0I4x7a89suR/mGw3HZqEHfYk4H5qpS0EsGlxBMzKeycq7HyOw==","shasum":"48f5497f5492a6699636d02c5a3845bc22cf2313","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.1-next-1600764529-80f5fed8.0.tgz","fileCount":56,"unpackedSize":107031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfabsCCRA9TVsSAnZWagAAV6wQAI/Sh2ONBVx3Efu6m6+0\nojeRTvoTQFD06Ywn5ADtjOTNOm+LULA7OvUWpscNrnxigOM9dYoeco7nIrRT\nizKO9i9QRym+ZtLrTh1yhrTMYZQrM2DawdsVttiZ2no2GMLxNFxQ+mD34cBs\nOIeoY2NQ4VB6JZLgeFKCoJP3pJ91RLkdS4DfGq5mfJPbUHIPViSwH9kpRiph\nAhwPAfF6ZeuXsLCeMLDBKzSnLc3Ha36ttE+yMKP/dsNEao77ES6502ZNMQhf\naut8AMz2uZGbvEd7n6VIoNHgAdmNNhbr7Mz3UmZBmsZsb0dVJ7ZhD28+nWKi\nB8IOOCs0gdnR1v7GgPOxY+P9N8O51XWHHxl72Ch0ld7bCTg+1Fk733G7VlFg\nH1PxiifQwReOkFhbQwABi0GQt972ahqZkF9K7+HnOTStcCYxy3pn48MCr1uj\nLeidh+HVkf+WQOjxEvZPVhKaxZ4+ebV45c9IEKcIZA8SUJoSUWQ0B+T7xf69\n8DiooSzI0Lslp+cIgWtdNrSXrW+95BQtxR5cJ0TvsGVBPX0YJMBXnOr0hiAF\n4P6baJbk/rgnxeTZlagULscIGuQTl/GzJj5ARzBSNoIMOvcy+mGWblpqlPNW\n63+3wjIuEPJNE/UJEw8V+8xGnIVXuEriTi5yTBBMvIbG6YjEWUiF9LRmoE/O\n75FC\r\n=/rR1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEK7c7DxzF/OLDshEt1qWcbP8kB+wWKE3ewPDNhUCBEwIhAJjRf7LK4EQktbUYXtY/aMlXHC9EX0I9WT0nBPA5LlCa"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.1-next-1600764529-80f5fed8.0_1600764674028_0.18560998663205353"},"_hasShrinkwrap":false},"2.12.1-next-1600764642-12849b1e.0":{"name":"@xdn/prefetch","version":"2.12.1-next-1600764642-12849b1e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.1-next-1600764642-12849b1e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.1-next-1600764642-12849b1e.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-biXMBpUAMsiyqnkuJjDGFMgJ1/FZ0psC4dKq8D31gnS2/8sw8oZnpvJbbjVxwsmzzZJBle7VvnLn+W+kqnNjsg==","shasum":"7feaabeccdb6d6ef27b729590432f1a4f46e8456","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.1-next-1600764642-12849b1e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfabtTCRA9TVsSAnZWagAA4HsQAJHw/WbwaYrwOUk34Ske\nbmTTqoZ7DHtOiJtv9qIXv9DpZGaD89/k/y45R6Qd2fDibGTtdIGiximagpxU\nzPsUmAminJ5pW6/zbOg2PEa6BPuuk3qj10vmOXJRmV0WV6OsxbLmbuk55i1j\nFK3LTKOcjyZ9cskzFM0x/wvJ85uLFDiwO2KY/dhf2iAZr7yEV7tRFyBcHTVg\ndUONtBYEji/KfNEmIGsYdRpr9/1dqRswaPhpoLqrW3uZNjudIUT08WAUM02t\nKfiby7iMBqD0yuQHqSUjoT1ZerUXdp8sHOcSeQv9sCkmH0faufttZXjS0VOM\n1eFmgr+buwu1MjxZqDEbuC9zRUoRrmPnpG3ZEwTbntA1PYaXVvFkeOHA5lMb\ntxRyLtFejg/o9eWU7k6b1dkP7uDjFo5qrusZV7iiSXs/iwTrKXp2sBGHaboe\n1vbDUiTHvwigVe25DPHj0+2S7r8zJdtnFh6vUyaR7tnvclWxfRAlrjjVU6JV\nA6Lf9a/6Aus/+J+SGBqAUkelIlOd2Ldw+BydYg1APZXPK3T+rrW/2/Deegw0\nz6937IP90Sf7WrQ/rKfs2Ani9c70eaVR9bAsXbNgOkomEFcsY4QAye+tFJrQ\n7AYy30tA8pNVyrQbsPQ4qRnHuy6ABaLv7U/gIFjPpKiJZFGmflklaSQ1hbFw\nJd2Y\r\n=MupN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRb20Qz/C/6W4jfTKIXx3bERmZTe9Ixyhap1CNT7yygwIgNavYvmFfUUvegodpacAIhc5/lEfqMjSjfXIeJQAu/8s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.1-next-1600764642-12849b1e.0_1600764754653_0.08702332615316388"},"_hasShrinkwrap":false},"2.12.1-next-1600772189-208e9dce.0":{"name":"@xdn/prefetch","version":"2.12.1-next-1600772189-208e9dce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.1-next-1600772189-208e9dce.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.1-next-1600772189-208e9dce.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-n93B9qQMBiPar/6+e4yFBnL1BjBETfz20Ef2lKxlV2mCgxWoLeT6vGEvk1wPNk6guenGXvcXnO+O/kWoa3LZKA==","shasum":"5c1e1924573772dddf0698e52b9138ddd67a27d9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.1-next-1600772189-208e9dce.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfadj0CRA9TVsSAnZWagAA7nIQAInAIjSolGYkqZ0ULRH1\nuNxIhh1kaw0LWTI9RzMVnaud5jHbM5TJ5Qm37oc8TdAJwJvngyp07nP2YCXk\nV+ubt8NXovzRnw82Bl1cdGEjwJxyXvmDkohmELLKiO0+q8aQ+TZtVF1BKPD1\nwnsAE1AnZ3kb6ZVv1PZqLXq2TabQUx1158Y+AygNB32DBhSAx6OvULyl3Rzf\n42go2hYz6jqBrMRAsqYk07Nt2gtU3hqHJNv25cSjpLz7Z6eGc8DYok8cp1jN\nfz/KruEM9L8dLyubfcplaNQ3I+4WYJgFBuhrsEX3PNBIJ9cVfVnYqMWJ24Bo\nmvRhqtcxwotDq8tKIBDD+cRKWd2GHTq0OVN0zb5GfWpG+/j96qypvl+mdPJx\nBKNZWhVmLBUzgSKbnLeBSx4M978vAHNIxzGvMeLTURuwMFTYfDBEoXIMGhmQ\npZj/V80IvhikEOpbBpwSdrIFE7TickSwfFr8qJE7EvK1ZbUdwctAqJx0oq/a\nPRzOEZq8G60wbU5gUDRRvMaOpmsIhdlQII+XpRyZoiwxasnbr5QiI7p22oAi\nhmPbi8ApaQ1+zrn+TH56bNpehh+LY+n+trhYPAE7sIkdYFkIT+bsFaql9bvO\nyT7qzmbgqFEJdMvkIC8aGkA3ifMPu2ZyF1LPqdxi4BmCtdYuTQHkatvsGk3t\noQ7v\r\n=7wnI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfTXwXxsky6FAwyjo6hU5LBQnSaF9pDy4UBKcI1fOJJAIhAOqWbVOD3xobAMYJBYQx+F5sSKHcW/9+pND75eIUlIUG"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.1-next-1600772189-208e9dce.0_1600772339418_0.6093708336171892"},"_hasShrinkwrap":false},"2.12.1-next-1600772439-1f72ffc2.0":{"name":"@xdn/prefetch","version":"2.12.1-next-1600772439-1f72ffc2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.1-next-1600772439-1f72ffc2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.1-next-1600772439-1f72ffc2.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-x7y8mMh2SbEPD+8zPVnjl/Zm6skWojIegYX22Knf4uR17+Burc+LY2QLbJpD6WO3N2UMtKMgn3sCkNZWFSuAAQ==","shasum":"36b2175f7c9245e0f494f6d4835e4f0f025f1035","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.1-next-1600772439-1f72ffc2.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfadnLCRA9TVsSAnZWagAAhI4P/17LoWgRRce673WZ5yuj\nTgdWtBYi9BAFJCiuI02nDW14gX17du6mykCL35mSvTipbNRI2S1vt7P6ERxh\nip+Rr41qvswrFEVB2iC3mNMuBR0lS6D5bGjl132C5MLF3OAQ/FvOP2GSuRB8\nobvPnp6N9rgsywLTihg8WPTdIGp6w6c6Jfxig82AH+26eaBB+KNHofSmLVRk\nWCVpFOnVHPclfEWhjZwFR+6E+euSaip1pH9611NIht5csGA0lRcbfKYLvnpU\nwg/bSw+5AxvvSYNz1FVb9PlYUxndATLEfCXrAypQ2bucVoUx2tdweFSUcI21\n8OGeggrjoA4GdPk4EsruS2RnC/tiyCSFPpO/rKxP5FMSy97UaMMSt0TBsxie\nduj9R06ysWtnyUF9P84z1eeBC4+G56x2DC5qRNg8bbRXkM9XNeJGBGcf5W9R\nB4oP8XWVDtNSIXa2D83vG2fQJ1LqFa7gDHPoKJcjNNhojO5/AcPl6PIS2eqp\nw0lZaC36QYYTqz8Znuaign5n6/pkTpbK59tPJFUHA4qAQhpMIV4NGARZnjpO\niQQzh82Utme2DkblbyWu8K9GKE0m/Z1kG/DhYHvgxGHFdKscu0a59XsoBl7Y\npVknmh172N9WiW+iGqU9BmfInfBf5L7aR02eMt5+UpwQH3qR3npZGPC4nH2l\nGaOM\r\n=Sfil\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZ7se7VTPOfMPqS6290PteIKyA/8Ozmc5ceeyXm6802AiBFzbXh8q8yB7kvWoy5Xmax9QH9B50KD8EjWL9SqSrvNg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.1-next-1600772439-1f72ffc2.0_1600772555188_0.15306145261088466"},"_hasShrinkwrap":false},"2.12.2-next-1600772740-3c7e77b7.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600772740-3c7e77b7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600772740-3c7e77b7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600772740-3c7e77b7.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4FwIgYfr8M84wNXouSys1VCrY3Xv8luEUwU2wpPlvKp8FeJg32EKT5w1yGR8gE5wgk+YxVs+dGKIxAxJ8Qqfaw==","shasum":"913fdb22c90ff2a897d1774deeb41a342f196bd4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600772740-3c7e77b7.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfadsUCRA9TVsSAnZWagAABgMQAJOUc/xiTBTE5qVOHpdO\nCQjD9/jzlzqHDT5TctwLLP6K/0BAy+6ZjvvSsnluv6nWzfA0UzFarWGg/skI\numecZpstBVW7ARVv84Hr2HGJIXEkwT6pam0B1FM49c0QU5GTUBKQOUtTcvLz\nnHMSyAHH7a1t2kJtBdVH7k+Uyd+gqxJKRa1DloeKEJIf7YuYuytPU8kwc8tg\naZfN2IG+A7pCVDwXqxyuWRC6cEdDD7gNoz2h4VY+nkXGQ9lQQes98/ifuoA+\nr2E0dAyby8XrZdj4qjCRyZozREceHz06wJAfLWGo05GKJh9TlLvfXW4uj3nK\nlhuLRUUtyG5n9kAF3Gemh7zugPSYed0lMGwjfQDWy+VqIRBT7WDYXf+0o0bO\niqcWSFbr/kWAwjRSXu7CVxFfGB29TLTDAjmPoJuJEjtXP8eVYne8wfnmj3oY\nulMBHZzeCs2lrlqvXgF66LxqLzuwuUXCDmZ6kHTccbxd31mSEGQ+ye491iMD\ncgHePmtexLrYVWaIsGffDFenywIz66x9808++hlMHfLq7sLQ5gsKwOTwI3V7\nnUVpue0wWC8nkeOJprikdl/m2XMbnK8Wd+vdHLa1QowKSYVV8SGbPM8bmodR\ncXLZnyXQFr+UxvY5P7TmBGEg6Joeo+eaMbR1c6CBxVmorF+g8sX9KgxKywCd\nBugT\r\n=nLuA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvzxZgAyTQu6L8ocOOXY8xCISlvSvzHicovBNAExLmpQIhAMUzo+J1eZG4W7ieiQ/rmzAJtnly9poVptEAdJuns59f"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600772740-3c7e77b7.0_1600772883767_0.07748920056401931"},"_hasShrinkwrap":false},"2.12.2-next-1600773266-44c5cea9.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600773266-44c5cea9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600773266-44c5cea9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600773266-44c5cea9.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-g9kkSRhg+4vwAFRjYs83CDiAsx5wR0MB2QnSdB4/LdHGFF1jNabwmtTjN7jGAc+FQWOzC31B9Nw3ICZBSnzTWg==","shasum":"07bfd39a83af0318653d3572418ab0ee9149ec11","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600773266-44c5cea9.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfad0NCRA9TVsSAnZWagAAgyAP/iPPo+EtnGMXJjGeRR+m\nqebIVN/mNIuJrah2ifUfBttpCFdNeA/vLr6U/5ZyseStEjpknDXfN6PxF3OM\n6OAkjfHpeAmhHaTlBJgx0QkA4igNgnPJXInheu0oRaq6PR3A2fjKFtPqtlH3\nn8nmAiJZraKGWMw1nzj8tBQ3YeWaeBrPAU9hLEYix5hscLSMtq8KW+JNwg0L\nohReJwuBMM6w32EUZyXOPK4e9BDsVOj8PgAh4HawvZn/BA2WMVBcRgICWZjK\nuyXUhf657iHiOI9QqGjS79J5XzcWEahLrLuZWUWJ0DP/agrU1hYzd1XZKPvb\nuhAfp1sx5kgERGbaFYN+N2jNn4gHsw9J+fNgkM3WvIAth8xhxO2sCwSXDmHm\nOVjPxLnubbKgrtfLFtmA7B8LXchn60U8Zbc1iqy49KWTpLwIg+OkRkxUWtY2\nBeep11cU0pQZpD6hdFG+7oloFfw+Z5f1sFxLhjrW8CkomNSAJK+mHWh9Z1t6\nBrfylsykMd+xnfmuGi43ku9s8jrwHaja3HJEx9ApNJpFr23N21/PLDdP//3e\n9dUBZepoeFPnFjdGQcebQTs4P/keSeb+eFGF93xlEHpe9jACbHDeBM8iHduz\ngGe+96xXOujZDhS3XEqFZIR16aHWEqpmAHzp/i/HeyvM44dlkRH6aJXBYgWx\n6Bdo\r\n=rtVn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRnFvg1R15cKqKYAPjIVgjJlxALHo4r3rg4BPjAgjv0AiEAuRh5gDYMfqC6EfKHRjS2il5omiySOSiCKUHvxc8s2uM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600773266-44c5cea9.0_1600773389283_0.5745220976509711"},"_hasShrinkwrap":false},"2.12.2-next-1600773338-d65c7a20.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600773338-d65c7a20.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600773338-d65c7a20.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600773338-d65c7a20.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-acmYkl6qf4aaOl5hrpIiMZeWM/y29a4Xubk3S3+ZATHXFVJdy7ydclCpQUnQsrA2yRiMKw9KR9yxU/QuhErDKw==","shasum":"b861e7c949fb60cdec8910ea834ecd530d6f79dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600773338-d65c7a20.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfad1bCRA9TVsSAnZWagAAHwIP/1BHGTXWE+dMptOCS6TS\nDgtS8mhG/vnrkbHnZP+fwbDvJHVtgrV2pFtN4PP/faTP2N53B37J15eINzgD\nvo5E7lmO6OEqdE3yxHhREwUmGUH2XIgOFGy4IEYUh+y13obV/NDeFwjAR2TI\nMMEQLDQpd26zaJbt9V+UoDNeO3cCHS26Q5h0B0U/H8G0bqdbApL8MlPGItZp\noKblmHvds2BEuKlauAag9aYDtizSEuG/OxBme2QmQ1iLIJpIN1jxHrBFFIEF\nqL3ckruwmVKhNWkN8yu/eFDshxtTE8qMYusJkALM1baTKM/PIWLiqvmgo5mR\nvzS3SZ8U8MV/XhcIZ/CRevicKcKOhza7LMBl5hQqMqz3MnwTMcdYeDeMVZqG\n565spuWBH6gqtAzy4II/QaV5j3w+7yfVzLvEzFKDH+LpQbIIFb93gAqdbzPc\nrAYt1HG3BfEXKHqQQpVqFSK6sCkJkvCJplO05/H9ihM6AVaiDy/Zd3sx/ZJh\n6thaWPhNubJjM0+4+05wKS5wWtvkdhErK24i7Ij9HDUlyZ58SE9xcn3J8hjw\njjUP0UINpHBXCLh6in+HjKTh2El2yBY2gBE5RhXThFuz7/n+sNfWNwmSelb+\neUjwEYK3XY2l7/pPp6SnAoRHJMeGHsstvmlMi2EXwcbod/Hwye9cbim1Zk6Q\nRL+B\r\n=61xg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaqAgjefr0IKIjNcS/EmFl3X8YndZ8knYRf34I7GwirQIhANZmZMYgeiX2pKj/yoGIH5UdqysOvv08kya1vNODc8nx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600773338-d65c7a20.0_1600773467109_0.8200732036599421"},"_hasShrinkwrap":false},"2.12.2-next-1600775957-d63a6d49.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600775957-d63a6d49.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600775957-d63a6d49.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600775957-d63a6d49.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-n+EvQ4WQ8YDVnMYxvR6jpp+//uWjBUR1vZpxD7wAd35dULJinO7XFrYDvd8OWBIiNIiMueSRos3y6fKTN8yk0Q==","shasum":"09082704b285dcc4f8f14f39dece70f75cf19f15","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600775957-d63a6d49.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaeeVCRA9TVsSAnZWagAAjKkP/3C3rA5aURP4GPUbdd4V\n6l0H/6JPrLCqbdCwWBfZmsoYGWXMqDWOHYmQOJOVw9I2L4cbF7M3Tdfhw8ym\nMw06NdlBryCcKY2uEkyQHl5MyiHxMEKs62oEqPTDnXYYMAkIk5q4qhmU8xe0\n8RAEElwiibMtD/rIAjJFt8bRu22wOqqq4Ph1Oi6RNgsNAugrBR7459B6rhfk\nIkQj3omRqgRoHxa8/id6H2TFasiW+0IlZb63rhlfSBou4arKcSzViixS/q7J\nk2sAGBgghAMrMVgN3rh/+zuogz8qoj8V+CYuRVHmyrdkre1hf3O9n3qXBQTu\nX8+epuE6wmu02iz8cmdkw4RNPUjL+mpvABAf/oJ5lA3Jo7BxP/0XDRugcyQF\n7DSqDvkFAIWxsLJtfwoLfYvVLEabhRv/O5B3abohakw+4Kye9sKrjAsrMpWt\nXGoSgC0vPRnqUpD3epx3/M15btrvCEqtdifI6toFrDUL1f+qm0q6C/whbv3a\n3vLvQy2p0SSt6Vg8F8cHiK7chZM00pTk6Oar+Pwg7LlQXVuoYzpe/4koCcpL\nJ1EX/lopZKWAwekZwQfC5hBg07sOu2lzFopIQULqw8/VpQ9oeuMZoQhWUktJ\nyb8uZ2s3hu4mBv8Xt9k0/F16VTREJuPOsT1vKWiDaRHLegfQEmJrdzxrafxe\niQy0\r\n=Kj07\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHF4NR1bvPC+Vv97BHHAtF0IMQCVJMufoXTTdxQuGkTBAiB2FKaRe2gKxBs9EunmDlCNY2WSIqWaYx5ZVeva2f3BGQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600775957-d63a6d49.0_1600776084896_0.10931861780573948"},"_hasShrinkwrap":false},"2.12.2-next-1600776181-14c33f55.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600776181-14c33f55.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600776181-14c33f55.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600776181-14c33f55.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LF6+3gkBG3cMeRS6X5YX4ZGpYRzydbUkZUKAvm8hcFGRzYOY86U6zHCN5jQaQQa7ABXyiayVybukzflbD8EcdQ==","shasum":"bbc98bee1fb19edcede00628847c2af462c490a8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600776181-14c33f55.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaeiACRA9TVsSAnZWagAA47oQAJIZv1ulzOy3ekj+T4PO\nQX3caY64Rl8LC2e5UBg9tklBIp7VqolgtfFOEl8FOUBPmcJMH6dQT6JZiCWh\neMGhopfa0q4G4XRC0v0dZek6OVUisGnuOdwkCtICuTxYrPufxNJGv5DFdEks\nglamBqEfzzgxdm3/VtGOIyYVdbVwH7rfPM+h4eJmmjj+Zw9QgGBG04BrQbmm\nWnmZuFB1sMXa5Luw7EoIldt9rN7c+4mYjsnL7FXP2B9WX9jUwwsP/FABoTCr\nYo8oAAMui7fwGb8CAPtjnmlRywhRy38ZbrwVc6jzKWu4LM5ehiM31kH3va/k\nPaqpHFo6ZALoewxO+++fhKjaR09ypMqT2s/uIhS0gBzB2l2IyjXNNgDMZiek\nwF8IyUYvNdJ4XTkMKjK0QLmNYDmRbWQa2LzsD86ELqFeFBLE5GghHyuSWEjc\nfui6efy8q+cnnDCEs4aSfPpggy7aXfgI6jnXQSrBiFIFdp3lXkKncH5vE9H3\nmdwQHlWcBWEBR6XOKxZacDosuj7X2qNrWVZyjh8Hn8J69nxlHiB6QSflQomD\ni/1r88jECGFT/AVfSzxhfSEDYaX9Nv8V/qZ2oxTAnnp4mjLGnQ99HbRwWL2N\nBriZ0d4SrqBh+WYtGHN1u3GNcDEbluwZirVMl25b+OnyFuWvlw5JZ3FOwakB\nBLUo\r\n=cgHs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBJZ6jtxcZ6jY+mnbnWbBNggPZB0folfwDDR5Z3IpAEJAiEAtxVD3Naot1KnGcrJb1dDh3KD3RxIO5canA8Lc7iS6lA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600776181-14c33f55.0_1600776319530_0.03926082147904775"},"_hasShrinkwrap":false},"2.12.1":{"name":"@xdn/prefetch","version":"2.12.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.12.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MVz/ZfqfeKNflfAPbMfvFLJ9kBOj93fpnJyv9LC5IJJMAJ+WgUrDZ6S8HQC0ieGtvMFiVmODXigHRbvZ2pXtSA==","shasum":"d1184aa1247e2fdb43b0b0399444118ca838e02c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.1.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaep6CRA9TVsSAnZWagAA3W4P/RJAI1WJ6AobDbMfMqJ8\nJ6byL2vHI+abmw1KZ2+va5BzdYgaRwgYAE0RCEpSfy6/E3bEqf2GT54cRvf6\nnNV+7Ni4WtVAi45jtodWQaOhyjo/pMytFrqvBMCb6Yl3upHSlr9tSk9KsdWM\nDYsQiVJIPMGk9LnZ+VJFTASLy1yDcIPojkEwAqa7v3cCsD1zMiMUG2EYAH0L\n6Snbn71eMpB+mvqbpk2QCkoUbp9jWs24qgTJqBIex5WrU/FnN9wgqp6dwgMm\n4lMn59OweKsYmi/GXlbL1/+aeAwqMwVNIl+Ll8KdhkJNMV5hYBUaXBvTGQ/S\nn0GFIwruZDHR0i8ZX0e92UAJwJYyW2dcUZDfggcecTrRTP5V60mJWkobln55\nvj8hkiClaHEl/NZ8YjapAtn5G2e4sfdHkRWv94r8/QnCo+C3BN3OKglaeE0V\nCsQv8UJ5QVRjqiSCzJ2rWLdoTkdt9TgeK4A5bCqhuwNaCHH8KW6tcxoa6ID1\n9Eyz6QadkoVF9bInBMwScgytCrUEBl9WKIWr00N3jEROQsT9X5LmGnY67E+5\nR4wZvjiMcwmkIaVU3ECPzXMIeEgagJB+oyyGmVIP9CZ4Pjx6g/GUTmDCOCR7\na7qk49HSP9q4VjJyoTHGq7JqYTvGJ8g5Tgd/H5OHHYyRMx6ZBH3DrVoz/jiL\no/TX\r\n=9jFN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNcgDn/kj2VzaZJe5WNbfmmcEsv0/FT2kFaC1g0ur6ngIhAMj01zu7gsQUzkxcONthBJWNnVwSzaEWvW6oUpUVBc5m"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.1_1600776826098_0.8931282015831146"},"_hasShrinkwrap":false},"2.12.2-next-1600779089-3eeb0aff.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600779089-3eeb0aff.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600779089-3eeb0aff.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600779089-3eeb0aff.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ewQZ/vIOtUy1EuOOltD/o0SOC+2c9hDZxfJGsRjAVl+l4UjjzfZ/ecSkDF9DvRB6nVrTtNfxlsYeBGZjYHz4lQ==","shasum":"293a27737779c89c4afa845bac3aec93b30cebf1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600779089-3eeb0aff.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfafPBCRA9TVsSAnZWagAABJMQAJBNuaeKTwuLZRM7YH8H\nK/Pc2Zkcb2GmG6xhLvYlqit7N0tlPn2jwocbyC6Q20g/iq8xAYR5zP0gvPu5\no8uiZXDFEqPykwVSmi6o9TCIS8chaSlsst/yAa/oTQBGmBBVTm+BO5cbYl6c\nYq62ytY9AhUA2R5OtUTESdixlOyUHnuX0Luil0z90t2yHZzaK7qoj/kIpQzx\nWEknYb02iwU7rxMye4YMuu2fvf6pKoz9jVY2X77CMN+nBj9TkH8bB6DkXcft\nH9MT3MPwlhnsgeZHapiYSL8sQqhLaxq4FCkuZDZq7fvwDQ+Op6xE4fL6M1zH\nPTi9bg1FK58sMB0UTnqwLEStLeSp9R7RP8fU8vKwFlonaPdWlnq1cJeNvBO8\nGuZvfK6vq5BY/zDBYo5BTUAzcLgSEQ/d0+frwR0hc3wXoRowMeHZAj+IPgvC\n7d+PUCheqpVF01ISvDYcYxMIVE+kl5BKdf/gpG0gQg+lGCxuueVypR10hbIu\nwKPAlFADKN1bLixL7jntP8RJg5SKtGj8ey/LSoHvx8aW9bXf/VhOf04u0MeH\n9MxM2oMsSyI2eZO6kNRb/JYAI8eR9a3UXqhpC/RcPyyic0LWVVrQE6Jb3NjM\nrXusjzSijr6zJlYuA+1EG/kqK/wPwRtyNIBHHChNyjq1sV+zZRMX1vYu1vqA\noo/X\r\n=ELEv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHHreLSinBk7u3mtse1Rk0ke3y/mgv4e9Pb1sR53/Bx9AiBRvfJ0ziQ9giTAne4h+RZ9VgdENE0HsCs1QEK86uTe9Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600779089-3eeb0aff.0_1600779200711_0.7001412628782324"},"_hasShrinkwrap":false},"2.12.2-next-1600779534-3f3d8664.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600779534-3f3d8664.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600779534-3f3d8664.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600779534-3f3d8664.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-D/obyd1WKfjMhOtlplgoschT47QA33Ahov8NdtErnqnAJAbFS2TODkfuv2QDJ4/F9LN2xg3WMtmWUvdG6+bowA==","shasum":"c0197d00bfcbc615119e4acc286cc5a320a2a2b9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600779534-3f3d8664.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfafWXCRA9TVsSAnZWagAAQFQQAIREHsFS5SUjhxxU/Wxq\n6whKC46Qp8JOVwD8rWw75HqDhcCzxhTd4cbSg+P87ScKykGfQFN6yHe52qOD\nb41ZuZctr3pFZrIQTuZ8ka5M+m8WBXYgOEfH8dVKj3QO1R6SMq5RnRMOFF3g\ngB73fen6qhNWi7JFplASLiUn1sw1QagZj7ML3kpqefRgLSP4WBBhsebGksmS\n+hXvAyHCDJ/rs5MT3RYoOqVqOx4sneYYG1i8lAT0GOO08Bsci5r1jB/U6jp4\nBDfWQ854MAe5xg1Atc3xEapBSbEMrjxVMl63I7s5kRt9c59Chz03C0NM5RHM\nPM/gwXx4+LqgFgwyF/VoA71hojjsAfW0uAxxZu53ZOlO0EwRixV/S4gYIvPJ\nTOPdshpkjAMQrKUyF5JUkMqzKUrTC1N9eqQ+Cq1AViXTHlKAVaL0R4rpqPcO\nJ2IGB+MPWct5apP9UJyEJReJOb2zFdX23Jj1K7IhhXzzv+4pWWPXcRD6wZB2\nZ2dBjqTcqGvaz8hvCscIGSEfRIMpfsJ6ZT2onh+4G6AM/6TpQPTOhg/Xv/h3\ns/V+Te2L0jOepYzbMN87p+VtlEnsqYImoMml3dw7M8Nmtua3O5l9lSpu1bGJ\nUySizenni3xC7cWm1A8fPZx+1QT4siKe7EQQUo8aKSJ+mYRTil/ahssNhURC\nxrqK\r\n=4fvd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBajTqOnlqEW82SM/v2JVUQGTiJOHgVM9+EekY4mOqgwIhALX4WlpmIJf0kk4b7GDATlZfaHeG1HDvVS+2NPTG6RtX"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600779534-3f3d8664.0_1600779671289_0.1011005499905151"},"_hasShrinkwrap":false},"2.12.2-next-1600785337-561a4382.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600785337-561a4382.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600785337-561a4382.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600785337-561a4382.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UksSiYBFLZS5RyGv8Cn3tgh2vOkMtjukog4gog5XyNmHj8Kur0KDhxT5n9Oi8vJVvraaIENisMgJVJfwRqxTwg==","shasum":"3622350fd4c742c47d9a40535fce345126d50091","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600785337-561a4382.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfagw6CRA9TVsSAnZWagAAivUP/1JLc7FA5PCETu8O2uKN\nRL4EiDA0K5zqT9ElaApsUtgKJbAVYxmXdQxywIKi2esacAQKD0NdFFMyqgIe\nWk6SlmDCYJwY0xghg5juONp7DPq0QAhGn/LUbyIuF+LiIuVoGzlKQQwzjPTn\nd0w3UhpBDa+kneimJ+mwfbUBpKcbHecrRoOPZLt2En0BzZrDjqivgjX0RJkf\nluSKS5FvtOsCN5Krwr867iOq1Oa9UNghs6cKxaRrVu0hzTDq4Az/MFvKYoNi\nNzt3KGzvF4LVjkV8XdqcM24acjxsHFnblaIuw2YFj/mdsPgt810SDaon6OsE\nwraWcuSnf+VrddWKPFUdVc6gacyvofewILcvK93pJVF3Nk3Z5rWjKg07F1Ut\nTHjhIC7AUi3WZPeLSin+RvUWF1lITt4ZWNB+HnVRGQcjR7bHWKlhVruevlV0\nuIb9ydJJVewkkTWxMLni3ejN8HB8Gj8RALkTLgphk8N2cOAO1mKxkB0EEIx1\npNgsTCnRjdGS8W8qfhYCF6le/qaA9kfa4E2ZN2wbYzck9X/9Dgpci0G3ufXb\nOoICAobv/eryX1bqRCy52gNcRaj2I8gb9d8oNfDdFHz0kTw74PwRk0LEZ/HZ\nlzL92PqdC3lYe2iGklx2KmW+OfQ0L+JqNaRTc7DJJOzIMSBLDljbXIQLdO04\nT+X0\r\n=QaKo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDThk7c25oP2++G3OeD9/UaHYj8KmZEuAus2uBrP7IYDAIhAL6TcNFJ+s/zp60w3yS6Z8r7dxiPv41gLqDUBap6sJTd"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600785337-561a4382.0_1600785466103_0.5684300911826947"},"_hasShrinkwrap":false},"2.12.2-next-1600802405-90d21ea6.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600802405-90d21ea6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600802405-90d21ea6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600802405-90d21ea6.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-minlLeOPgeX2oB1B8PmD5M7LH/bpY3Z9Z0Vk2IBDeVjjW/eH/SiXZ8ex9GMdtlk7U0zdoygMGOmbRWNH8q6bbg==","shasum":"1f50d5e30e027b10f58a6592e014fc3ce7fabfcb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600802405-90d21ea6.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfak7mCRA9TVsSAnZWagAAEo0QAJrfbivCZLq+ZeaLk0t2\nwHFQkCFpuYktGhKmVzSVc1UjeRv90PtJJMlNGnJifeBUiYkiebIHiVBm8meN\n70H93kfBMTVAPUbvTYPC3/G8OVL9Q4bbYV1G9lmEYrnUKZOMijIiGrnJjIY/\nGRopj9Lx8QM24gK7B6rLHlTqT5Sf2wJbxWeyFf7GHvt8u48tX7Fl9/yITkLe\nQBChJae89IUWj/1Pa0AYxCRU2lVpK7HTTIEvVVRJ1fhhVCzQaAVzjLGsMygc\n4vH3PKRYu5CLsBUwQAsgQjU4l+NNX9VgxeQ8+xB7dL7fxqfvJFxyVXFm0Mia\nntPryQh2ainwMdud04UyuGdF8//BTDDP1cnjVM0sK8bcZFEneun+jAY8ay2p\ngyvXF91iSLrRWNumm4XVN4doX37K6JfUagxQ2ZGIkOASqH6WBVP4PJn+jyCN\n6HPkxENZkD9U52zhpsYsYjExjH4OFxFpmXEWb2RZjIga5ag2M/vq0lFkaMFH\nI9Kois12snY9ISrM/ykOvBXLPEw/MabzGx/lz1lSit/2CYjIeZ7UvzitfKAY\n80RsIcc07G/2aIVipuvubWYAH4VjeWLfEn9hKcDpYDCcnVbs1f9jb/rQ88+X\nmr6vWth8nzZWyNyYmaM4e0xJA2PsRljCo6/xGSLf0g0oKHnycWKwlXVXTWRr\n9ZTB\r\n=mi3s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3dVvVqDOZlUI/hNM/OEeOhQfbHWz7mqe5JEUByHl7BAiBj+n1rJneUuJzQF+pGShwiV7cL3/ZT/DcQD0/BBlC8PA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600802405-90d21ea6.0_1600802534032_0.9570106354877113"},"_hasShrinkwrap":false},"2.12.2-next-1600802452-11d4f1a5.0":{"name":"@xdn/prefetch","version":"2.12.2-next-1600802452-11d4f1a5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.12.2-next-1600802452-11d4f1a5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.12.2-next-1600802452-11d4f1a5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Wst4Ucj+9cUq+6kmHAyRIswv0vdYOqZJNIWLJ79Zbh0AYQz9D3CYrDPCgDnpT56E0NGBAeh5NSmtsnxz1tZD+Q==","shasum":"ce2ec24da90566618622e7cf75a6a2c0766aed61","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.12.2-next-1600802452-11d4f1a5.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfak8TCRA9TVsSAnZWagAAQT8P/2VVyIRqnrITfnytsgaw\nYWr0JBnu+OIDFGJFoYzLCngeTqzThQgb98TszcNN8ePB7ggkT//RXQfdK/eb\nyPrtrcOYU5sAO7IRQGEjoM1+ZiWwPAk8DKaIxkwojdsiXH/Zw0IgPDAx8pVJ\n0Uez0nmsn5YZSG9PIQBISNNU9GJQ8arkCMBRzzwwC2HbpvXmWMTLHNe/adv1\nCGPPrFtNRVJQsymg6vnCAIg2AH1WUnvzg36tpQp2RRR5bEG9/jZp6jyy3Rzv\n9MJ9GKGvFUn6gw0Ih8/YEfnDBmfvxEPhozUgBI1Cn6Jx+uCestFo+HnTVkja\nmw3wyu9j48H0lrjORrr9ArkRbBy6NGAnuSf0uBeqqH43O9zaAqbtgPgd0Yym\ncaCdaHXE13ybSq346ZxobOWsCtEaxvYcAlGCx4l81PY1Km1iomXCkOjUNHnY\nQWweI5fTN4d1DyURWzlwfPLuhr2BjRmUQg21M9Xg1CC33LBNYrwL9WBEIs00\nA3JeImQA4vodvaHCk9szH9cXnm/11Li/cy3uKdaiPch8l2NyXNS6ihIy8pCs\nBLDrWK0A5rwO2z+E+h3wJ0cpmoxsGgBsehdmk+kFJQCkAwUpHEtv8oWCJImL\nV9+IRFRB8Gjsz2HSS92igcNEZZ6LFaNz68zQLhISL8lu9xJwVgLbOxrjcyND\nmZVm\r\n=wjbc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2DY4X7TgcMqtAh0zPnjlMRlbm4hBbdukZFm8tfXFp8wIgZosy2FDlDoQuQ73D2R+0sNO6Egnppkwp/+1FL6/a5pE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.12.2-next-1600802452-11d4f1a5.0_1600802579315_0.21770393723053605"},"_hasShrinkwrap":false},"2.13.1-next-1600802664-a680cdf3.0":{"name":"@xdn/prefetch","version":"2.13.1-next-1600802664-a680cdf3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.1-next-1600802664-a680cdf3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.1-next-1600802664-a680cdf3.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0goXBJIWx6zJZ15XyMWFpOGjbGXHDtYveMowF50oP52k3Wldv2W/17N8Lx+TXk1mXHwwh/4CFR4OtLhi2nDDhg==","shasum":"ff102eebff0dda5bec77edc41eb5babe4d984ffb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.1-next-1600802664-a680cdf3.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfak/oCRA9TVsSAnZWagAA+mAP/A+l1rMyyP33byUUITCP\nFiuS4Zv12arbXV49NRfV/krUoXp1WhmPNgMro28Wp7BNuTREeBcrhk3R0uHy\n6ORMmRlCRdflPR9zhIV3S1qt0QjEyH822KUmZPhW7BjPZSn9XRWMRK7BMcbl\nfS/aYAl+mbu2TCbkrLohaFzLM1A4TI3Kk8eVvrYaJG/WuH1cM107oOkUvjSa\nNv410ceZ2IyK8x290pfV+RTLlTAtv5h7JCxsY28YCM+2Tswf+Oz3wKtZwyyA\n6h+bQSwYGcqVf+TRnucM6Y3A2Yyxnjest+pUdkO+5JIKVHKr1alPEdtoAEks\nW+cyFbTQl4RsZsjAUiiI3jqNd7+OMNh1MKYI6Vo8lk8Fn7QZXbYBpdTVS+ej\n4Sfg39biZuBqGWIY4R+Tjm0l/pMxjy+quPnsuw3LYWhKnfX3JfxARnDj34d4\nGKRegq+bHE/hhAOw0D8d8vzCBrwL1cCgoM0OtPrE1gWsdLI7/UfnMijN0TyE\n8qBe5z04sKIZgGiksKxRL5Tflxe3z2wK17bfG8WpYu+LF9eW2wOaPhNkuPvw\nI1gIddy5XLIwmDthzuGiVSYlOlO1dQLP0hjXHNDZXwc2hQRSX4dyQOTy97in\nrZIHZ4MbpcUWUXWu0Uss4hP9Sg1tcmRJXFLqZ3cFyDnlcfuNzroDJ7S/pix7\nO2HW\r\n=rais\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpT+QYbIEF2QnU7c091VOUsHTq5RtTubDuzFqcYseJtAIhAK9MtMQShGi4kzQDc+SaY2P3dVGpZI3QN/byIjkcAE8T"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.1-next-1600802664-a680cdf3.0_1600802791827_0.11979695007533686"},"_hasShrinkwrap":false},"2.13.0":{"name":"@xdn/prefetch","version":"2.13.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.13.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KUaT2w5MHIfPX2HR5z6NyK94Ke3IyvILBmYI9DD19ecRL8PjEQ3phZR9gapTjR1icJjs8rZPgLB6v1/8ZCibtw==","shasum":"becf848f136e9392f0cdcf2b335666270e7711ec","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.0.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfalArCRA9TVsSAnZWagAA4loQAJQLEKoc9G3ddikX4+Ro\nHIkhSE7ZPQXvOj/baU2oIOVIYCHB46ykCU+6MLdkfY+Yg2hAnyozb0UZ7XLp\nOo5YOb5ZILj9AYXFmx4CsBH0lY0mKsJ8cmdsJBsRYU3eVt8bUddu5kzgE9GX\n8pQGcxBlEn3Wpli5fWVT2NBuMlEY2f7qEYVQe3HvopPRsWtXzudqg4eWL+/Q\ng1YClkFErYw6ZoENxhGfpFvbjxhGruVKkW+LDb/6iylgaP1tEn5/d4YCetJi\n3xhcGfRtMgrX2ai5IVIZ2aaRUccaQh8JQnyJUKorZbsnoWW3JD14j4S6cnkk\nNvLS8Acg81ngisIt2kMu/4NF/dqBnhrLYUbFg/IXiYx5uTqe9AZh3fGKU9VP\nBEYJ966PTO7mLOXiFgn44NTC08yjF+j1WuavghXjWOKcbgvjxqxJziy6gypu\nYLQe+uRbtckG+1gtkb7alcO6fxVhr3gdH1lNDxFJy4K0sLyvrtJpFW5SIBmA\noOL+priuJoHOhZAL6eDCnYjupo27zgXwkp9YmABzYRUjX/nuuWP9YWW1Ocxs\nsUQ2hLbORE5ZWGb/mWZZyXpCIGyCH4DtQDZxg9HH/EBiQ5VTxOwBzEmp4VK0\nT6l8Ow23sHIbR/FpGxEQDU+Qdu7bYFgMG09sw6Qv5Ghf7x6/GZFEaY0sN3jE\nxKZW\r\n=bZDj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBTDfgo03XK4P1nJOqHUctpGYIp7sR3Vmoo8rWJHFCcQIhAJfLMbbZb61sCuxTztz6MoOcpyc+Ot6AOy2ZJGY9fH/Q"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.0_1600802858620_0.05842231524773234"},"_hasShrinkwrap":false},"2.13.1-next-1600866013-2f2a3c23.0":{"name":"@xdn/prefetch","version":"2.13.1-next-1600866013-2f2a3c23.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.1-next-1600866013-2f2a3c23.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.1-next-1600866013-2f2a3c23.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ldJiOIdjr1/n1m13j5WImEQLsbPANccuN6I/O5QmEWQo2IOapoNfU6RbAlKqdqlNy4PM8awYBRcyeHbKmFg+4Q==","shasum":"740b53957553614bfdcfba29c61b4a81fec8a649","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.1-next-1600866013-2f2a3c23.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa0dlCRA9TVsSAnZWagAA6IIP+QBxdvLjixjdYHMR2XLJ\nw+DOJ9PF9bbnyIN2BjV/r/mAm5MvvJYDqcMlQLJrza1Ay9QhKuLqPAtflhwe\nVwV5BGJJGe088LBZfzmuydAansDsyVf1dgOo7zs0pnzLMguP1jaQHmVBwKrW\nxzWjiXikyrK91mNfGCWi8u1O+LO4oIl8rD4VsrpVuWoGG+rtOxhiZV7bA7Ym\nUqCNJLNT4yB8HG41GQvBMLcvcqX13fF3wqyLbBa+upMfgQpLPunLTVtkF5Er\nQ/zPzbJtO8YZfyXyXhpI/C2K8dvQflXHdT1hqVgMMOdcCl2dywGbVsjah3PI\nbLIkZ3fjnogeyQv6AORu6b0ClWjHBtHICn7m6DlUyo+gTnhXj3NBRH8WrVQF\nYbo5VdVgbY7V/v5AEr/xINkaFf+RbiQMEBKafDlmoJoZ49p6AZLZSrpkJigH\n6tfUWxS0PDM/VY2OXGBYaSikw217Ji1js8xVQTcI2ifjJfY5NDkrad1BfwQb\no3IAmqDYCqtOT+8n4Z6ci7O6P1m4W5dlhfUwzJNWU9HQOdnaIdmcRamcmVyG\npMUNXjCF9ekttVJewBtQ8VFdvMTSjAH6ks6cDyxwUUv2jbS1JOVbxP99tnR8\nTle3VodePpStCfSjHUxgsisWwyAqlmYsup0iLC4Eu+bfsB+etgPPSssrQbgw\n9/We\r\n=C1Vy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCO8Zf98icl9I/dKFYs9tTg9gNhTbqRaSljhnbVn/I07AIgJ1wUDGK2w2fxF6BZj72WB1yJfd6z5/1JEDhG96b9Kos="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.1-next-1600866013-2f2a3c23.0_1600866149370_0.219161368240403"},"_hasShrinkwrap":false},"2.13.1-next-1600872468-af254091.0":{"name":"@xdn/prefetch","version":"2.13.1-next-1600872468-af254091.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.1-next-1600872468-af254091.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.1-next-1600872468-af254091.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eCk/2byeckt8WtZITDu/mMFq3UEFXyl5ftaTjZba/Hc57X9JsObsGkRUR0kaGPxTNi3AlLRJlxX5GW01ZapGfA==","shasum":"09e618c6b024548a3d90d2a0a17d1f7bd8f0bfa0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.1-next-1600872468-af254091.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa2CaCRA9TVsSAnZWagAAbqUP/22EOtPHUFNwn5iki9x+\nnb3aD1OIFGJNq3lMkRRQ6+Z2i0Pja+HRcAa/8f90VR4rXDBnq+8K0S2O564g\n03+4vPl6bXqL1qJVIHfhbBE8hxAy2Mo6icOg9ppxeIt83JSghNfRZVfcbBoU\nfYumMjw2orTyAx8No/qsHPAYybHmJlLW87vXiJk3t2xF+6m/7ibnnZMXL9a+\nDHaB5IioI8EbcKjb4n9MnQqmCI6HMTjUBJEqGEVkISNk8dyAYD+RZrRWpAo6\nBuOPnCSKrZXMt0wX05YM1K/ZYm2LBlu4AdON0ViC34twZ3C+PdO3p/u58JUX\n1r2mfyFzb5QfYOdJG08okMj8xWhybAhQhlLpD622N5swoyl3FleU8R+if36s\nCUKbwmi5OTCZSiZ6wPDVFVylL3+ttzjejhgXijYC34Rcy0hD3KIvQHzHtq5D\nJxE13VCDZOmqkIUHY6+9bkfCS14iOEYsdtLv9UQqcFno4YuyJeYJ5SB5+POV\ndZ7mCtb7t2SvsnDR/cNBoj3RA3Dx7Vh0EfnGy7jSxr6VIZxV809a/74WkahL\nnj2VnzxgkcBnqxX521+vCmGBjJLHV9DrHxAC7igHIgYqgQ7oMIK14qG75o0R\nUZ0xiZnhUEVXQrCRqlDDYQezzyxLhbNr3KzpeuptqAiJ7m1Yjeszq8c6uNuk\nw9H/\r\n=PS/Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3YpvHEWW+BOd5CdRhi95uDnwXCTmGuob0zf8P4yn9FAiEA/Ep+eGv7zyV9F4GjSvTDFVh90FYQZ5+vbn2puvDfT4c="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.1-next-1600872468-af254091.0_1600872601653_0.7257972263342996"},"_hasShrinkwrap":false},"2.13.2-next-1600872827-7d5f227d.0":{"name":"@xdn/prefetch","version":"2.13.2-next-1600872827-7d5f227d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.2-next-1600872827-7d5f227d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.2-next-1600872827-7d5f227d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RuF5JDRtbgz1guRPqh7jIuWU8v22ak3Bstd41opstEMT4ka7J3c1BidMjGuevLUDdUN9A2RJ4z6xhK8i7Cl9gA==","shasum":"ecb0ac79427a2bf163f9cc347a7fda6f5f6cc86a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.2-next-1600872827-7d5f227d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa2ICCRA9TVsSAnZWagAAng0QAKLOMApJUgpE8h9amLU+\nU+hTK4JljP2sRpkxfghc14gexhSM9djdzgGSs+FYjt4XU4EKsqt3HZTb5Kjg\nUI+fsdi0wq93u5hrKkh+CAj6yTDuFfsAu9t+8i/Mlhwh7QM7mGBvXybQiaVP\nKCSK5Kou8BVm2VF4fZZBGcIwIeuoFztIKm8J8NZUl7Lq+PZuR0REcVzjNGZh\nmiYff9+h+j2XvrHRKAUkSw820QInWvzcWd8WZVJnQavog8J6wHigEOOSD9US\nFgG5HDzeidPHc6iT9+bTuczNuRk/Vmlh6ZHrsHfm2/cEbHFq2qFTjtwOTFtm\ncDH23VPP9vf5j9Fe/2KQnuhjmTJB2CNqgCCX+AjurC+uJOWBsoEe4CqletjJ\nnRccO6Iy7ylov00RXxkfeuHNCbNRbQzQs7TSvE7tDFWjOpw1y9mo/6iXK6YI\njxbe1U1dDThU+ffba0EC05LIz38h7dEWnZOHjHu1mIu6X3MWlDk8JDsO9JkP\nR2lTBT3XKAyW/JIxQQRYvQMqJQ/mzosmNK4Cz9QXwns0OBSqN78D0JCy60lz\n6dNNo2WoVWkLBUE5xOU1j9YaO/JGanQ8hEgRTBAobg8GpFNEzR231NJPaQur\nUE9jbxjo0J+4Y6xrAhOXdOh4gDxr90M9retwrsD1O3wCHfTmQ26Vu6ZstIY2\nJp2+\r\n=7FmO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmCram2gAjv473tKrvx6VmHswZXfIV4DGBQWhZygnuWAIgUan7e4rPx/pnvu9AOjlhUudWNjTbsXikPJrUhTjYpPQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.2-next-1600872827-7d5f227d.0_1600872961552_0.3449311412855631"},"_hasShrinkwrap":false},"2.13.1":{"name":"@xdn/prefetch","version":"2.13.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.13.1","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-D7Tmaq9JjAXn6tdJQSvp6FjzHfcnpKpBinSOnI30h8Ctcqkpw5WLDXzgVkLu2t6kVSlmJeiZoAkdtxQRUNoNUw==","shasum":"da3a55519dc1eb6d20e9173c4fe1bf3bc03ef0af","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.1.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa2KOCRA9TVsSAnZWagAABngQAJEawBsjpqXiHyH9eZ2/\nl11E3wWGtViIMXeLynW65zfqzY6uyx96JwONCvVUDkYKmK4eBFcfbmByVKym\naKZFhrRHuh8W6fJnNcPMgtPEZ+9czd0D1GlHQKL6h4G9/Iwgjf2ITWQJNQkL\nwzXEijx8VHrqmfmhP4ZVTcWqDGfDoUCNGmcBFAoUSKrvlt/ocDDpwG57WbYF\nRv4ipRo+tlUYG9dSIyVMcnkv54NiRdmzI8PK8uUdACICDzWQnowhSfrNw5qg\nkDAqBvIz0saGEw3aIx/ns1/db6IOI30K8D1hKyP/8cjQPHn5y0bQzogCt4td\nuUbtNSUtZQfcNcP1i/cIDNb57DcMDr+1o6BMEh8Bk7o8sJ8T0OXzTDVW4iwm\nWpVqZ+9L0jjmayqOcujgNyS0T/zwumHkkCAYibPZR2UHom5PeXL2T16mIkLT\nDlg1jaYW+l2/r/w0q2QfFOXTPMkgYBDqb7I6xAFox7oxGGg1RVoo6AaHA/88\nX8OKDK8S3k4nrKqBOqpVEG5oEBLWXVICTd/Nut+HT3zWMzDPN2aWw9BwXmay\n3N4Eq5kPkjSJ4BxeZ4alq7yuSvo6M6CA4/GeHXr41RodS3r+Wdsh0BmXKkgZ\ngm0JkY5nf1+NNQx7sJ8pzT+BOJV/TIBrnpYdU0DKRvp2i81iNuLyDlm/dT+x\nnGMG\r\n=TN17\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGlU12hdgItcGZkbZCV6xpwkbIbx6gbPTME67yfl+3QFAiEAhZqicv6xHAShm2fWsam0nvnLq01yOQ1QbhJohhYoLiA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.1_1600873101836_0.8790825662302324"},"_hasShrinkwrap":false},"2.13.2-next-1600884005-4378587d.0":{"name":"@xdn/prefetch","version":"2.13.2-next-1600884005-4378587d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.2-next-1600884005-4378587d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.2-next-1600884005-4378587d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-E/rYD4cegK9u3hS74dCLFwr4xv/j57QVQ7ct3LsNaMVensxoE5FekTx/hCd4PQCv6Gp0soV+W+NvNH4aIeOtLA==","shasum":"7cad23fcce3934ab7e1645c2b8257c08edf56842","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.2-next-1600884005-4378587d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa422CRA9TVsSAnZWagAAdCQQAJQIUfhovP7FS/ioUIaa\nzrUYKRGTfl1oNNxv1qJw0qoXTOZzydS9SJGCJhvn6qI4Q5rTdVRlgk1N8Yy6\npGe8dmnHdaMDeQqKk1oxNLOfBznDft8uX6BNQ7uFR+R5Ntds/PYW8qL1DsZ8\nVa3581UAfvVlLk/E4ofaSVlvOL4RGVs75CRlsk0umr4tpJAjXEJwA1mjeiQq\ntQPHjpNxf2459WWPuGApSfjHK3s9os7OgLbb5hrdZ/raVzaJLgBrRDhXU7zZ\ntHV9J+xC1RUCa5kaMPJzl95KMb6qVLugv1H5nM2ZUsygvluEGOPQl1pVW/Wi\n91NFx0TwzDu8Ebw2Juo58FhwuqK7GaxyLs2XRO4r8yTBA2oH7g2faLAyCoS3\nPz5DdOCi/eq1R/4mBSopb9uow3uLXv5Cw2c1O9W9DuPvd+O6zzw8B7+7uPqJ\nnwFoUANDJD5P57SM2jawFSsxduNgWYq2Hv6HygYQzaLhPJPJRTTh1tmbQ+AK\nqxl/5Jx0+IZ8IXRskzQnhyPI9TRQiyk0+96GANxsSf+mVNBOS4yQIlFC/xbk\nYMeyEIM3b2E/quObazJ+FTQehrEI4FIEE3Cd6lhBC8sisS0bHl2MW7GZd7Pc\nYMm+Vo3/aFTNIO5Q1GLIvp1cixWWXcEA4XUN9CWanY7je1EjkEqCcOxl3K3c\nXlz2\r\n=kQVM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG+zi5vhg1DJiFFbpSOXVLbD/cIw7DLBrNVGmdW5KbMKAiBMGaShd6c86s5gutzyXaVHBPUxcmaoQBYTon7TQj3svA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.2-next-1600884005-4378587d.0_1600884149499_0.29052732413103044"},"_hasShrinkwrap":false},"2.13.3-next-1600884046-27399383.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600884046-27399383.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600884046-27399383.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600884046-27399383.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oWsypri+2TWo9krtxMEv3ioo+57Y/zfYwqXvpcpD8eCE8U0WJHNevYRyjVN76Mlm6EeEirS+R6+m1WvasufJ7g==","shasum":"8a8dfc1fd576309c35fc53e5efcfc1d33f10dd1b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600884046-27399383.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa43HCRA9TVsSAnZWagAAaQcQAIQO/wyyQn+wrqbEZA6K\niCX3Dt+dXQByoG8UIFQb3B8zrwm/sT6W7MWyrtIrtWNsyob68tOjQc2jwLm6\nEkr4CJLsL4SAlghe0YY2r4zOYuBiV9dOec/HxdV9cKMvde/H40+tqSaBCrip\no1T4Bjl8U4dttFWqPaau3hXBKMH/eaqLVU41h/nLAG0wn+5ARRZmsk02vGEG\nyQAkdjUltVn/tBjCcNGNaWPTtzUI/NJcQJU9xpDcLVvfe5yqIQedV8T/tH/E\nZR+tS7d8yh/mz3iQ2+JWv/YXJxfNlxWsVkMZ/wH7bRGcHIqWlo3Otw1EKN/F\ng2jaEVQ3cmPrZWW4WIOfrfwUl7PsquOfMEcgJvP/eRO1NQNxnY54URhyxzVs\nKpph1bTSFPAyzVczTJm2TWxFupHGauP0H1q1Ckty5P5SuekgwcbvYblwyA7j\nxri9C0x/59DVeuVOmfxPQOcmpR5aduZNUx40II0eq9+St2i4/c7Ae62LATk0\ne9yu4puooJsWgK7b1SM9tComrvKOCH0zz5F9punzvLiA2BDrWrq+HG3usGLq\nocrScFFDGlQwbS24zGUtQ9scaYSJuate2N450LSoPEfl/vegqDS/dLKHzRgH\niQ/nfVh+PBGQY7A9M0C8Qn2vE5AbBVUNccNNUqfkcoyU7uYFATpUgVGaVXn8\nnP6x\r\n=FFyd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIASzPVFW3voRohe1ffnVKA9Xp6D7z7zd6IXKRpDQaOb9AiAuO1dmqhTvSPXbE/BtYlvD5q0GsXOle+oit8LRtiorHw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600884046-27399383.0_1600884166898_0.8291512670420873"},"_hasShrinkwrap":false},"2.13.2":{"name":"@xdn/prefetch","version":"2.13.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.2","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.13.2","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5JEsOzlp/4+1aqmbGPVCuIBgjtx82ehogdO0MQPifKnhk76ROQ6W0L68qDWzueJbd4pLoV2U87OYDM9LtEbBvA==","shasum":"9f91ac7824133403443bbd4bff5386dac1930fe5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.2.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa45ZCRA9TVsSAnZWagAAMgsP/iezOBlzkEAgYEMmvyGe\n7jFRnq8CqBM35dYGzlAmG1CoE2nJE+sQejkQlsEIU5Set2Otp63HFS0NAqSa\n8rGUw6TOLEf17XE4zmzfudYOxQXoEcSHrzqh/zozUnesJnWDjCNWAp/AM/Rb\nhDqWhZCFLyiT414SorKCx6rQBCzmQ8jGL70cXMsV5DaVg0oKpDHq+070yB/+\nPKJsjGnJIDiHOLbAwxgE7Po7D8csL7yI2YTh0Xwh/ADjbPsTzHT/RPMBCQnW\n0hJ71RwNlmz/4KJ8uEHXDQDKU7ACEGe5PCikqkuOV9rcjYPdooSlYukp0Qph\nn22mnxq68KSJVIpknyf9nIv6KfgWShH8vZfwKwASj9xEs8mjW7tfoxO9ta4C\nabLeeJomIwv5yO5ZiiRC0UVbJQAXOuvv1bN4RehXCjBbE9jlQHJcTgqnu8SS\njJc5qJNhHsL5PkVQa84LjVPFiSkredgHIXuvEv9uhWCyn3eAs41BuUm/Fh7D\nWPAfzKgN5SL79XLRzFY/sPgK/E9nt+XAuDCtQ53rdg7Rh2yrZTXeB/KzzJXU\nAVyPboD7Frc9wsACol9Eao0tmj4nK2g6Mu/55Tdf+abfQjIcBtqXVQ3YbcJM\ntG7QbZxqoBOsC9ZmFVmjlBYdJPIHuuCYBvBRwgftj8gIeq0CVBK38TDmJRo/\n3H0f\r\n=X+xd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1ttS7WmkkY1f7mfXmLdngne4SN/DIVexpjfVXq1wmSwIhAJm4RBEJVldYp4v0T9SpXAO24U6uqGPQdiXHMCHYWxGR"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.2_1600884312664_0.9019143647098933"},"_hasShrinkwrap":false},"2.13.3-next-1600892210-68bdee53.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600892210-68bdee53.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600892210-68bdee53.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600892210-68bdee53.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EqCDGx3krzKenGXsAy3k9e6EXusYZCzv5OuSb1gg7QhI6u7TI5S4tGuDVN0j/AXjkCK63tWuPmCeHjinyTvftg==","shasum":"d8e31d9dda216a90690207c249bfda60a48dd0de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600892210-68bdee53.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa624CRA9TVsSAnZWagAACyYQAJaNfNbO2JjnWJmB2kb5\nGKVyUXGklETLTuK/1Kkxz0kxuacqfBMYJJe+Ti+AWYbhcPz8HX6ucE3JcZG/\nWGeCeHviNtqPu2yjQp3YllJO+Gb87c6XQUycTv+sePu4kdRNumBavzLOQ3A6\nww4JdWS8N8SeZwDNT2fW6/gWibMgPWETfWQXKjuON/tE3pBK8uc2YGBo+BZ0\n4zWSzl/fSJ4ttkMRWYN/+GvmgE++MJhRrvzhRc1/vbXVa/OrSWZWwPzHiQ7A\nwDQYgbhZUx1OMiKP9c1vh0jXemVmirtewz8MrTYz5Farf2Q74aVdYp8qOe/N\nVsmn6Ti5phxBKkdJ5qyz7/56ZirYucuDDx5tBBoZg9aCdQwEU9m1MTAcKVln\n6bSBAYBhMc/93gbH2uDxihlnHE83rnRhoyV/lvko0V1zmSDylkzNHml1/YTF\nFX53GGU99ulUeimCjGWZhpcjhl7awFv6st/tBDQi1gZJg+qLoBwZFZAwqYOR\nOQShUd+GeZ+GFo61KJQ8Obv9EjsnEc751PZlMrpzQTrvdM0xJQ3XQFIorZrf\nS2sZ/ZIhzPMgWGCsteNMEUQTTCWlMnOWVM/kwXd9jeyWDSVhBn1R3lc/nrU2\nDfr46ZouP0uSHgtJ6vMFwxzM9WLDumEwhE2NxYQhbDZAacn7Hm2oEte0qGmP\n1Rpb\r\n=MvdF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF2QZy9lRR9lhSJ+g03MZPp24fYWL6OzIPU9KZCJ0k7sAiEAiMmYRa/D456K3LtO1I+NILJrUNonMk7P2/w8kcnKo4M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600892210-68bdee53.0_1600892344412_0.5761399476144518"},"_hasShrinkwrap":false},"2.13.3-next-1600899972-8e088c74.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600899972-8e088c74.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600899972-8e088c74.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600899972-8e088c74.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/9Wqir269TQrzgIIbVVwB3RfQtLi8n+bY6g0+ntIC6n4YLn2NTqlfDOdEnC7xdYE/AgVcWNdCLKLupALGdzbOg==","shasum":"ea97bd3d7708623bb15eac852c7046aed4ae6f7b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600899972-8e088c74.0.tgz","fileCount":58,"unpackedSize":122426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa8v3CRA9TVsSAnZWagAAxW0P/235fGx2Z2YfeMl4s9Kf\n541Zi5JAtSehe1wQiwomNBkwD5RpVbBdxeSVoOt7NczkXjOfqxctOkALgDly\n4TzjQFdXwrcPR7AHaYbcNM5F6GyQP/mu+YD0r9v6wrXT26FGpkOMCjDw69RO\npL02LcRNLNdqdKaGed7dG4lo95cDVaU4VA2LoFooTkan1VT2kPisqcizjyPY\n2szd4cpt9T8KyVYIZe+Lb2bXNJpfP3ftsk18kd+o5KXLMuQIorA2xzr3fvl9\n2PbdUZon/Yu4xAPQzoiAwK5cE/w3x7+qXXwzoSoDuZjLBfH2owiaHnzbpVw4\nSf8Th7uTf2WUOWd3d0djeAdY8CSirLYOr4m08VKIScgmo/158j8kWkcYPCsL\nr8rQalwy4f3hmeZ0oGlFXmSPtB60SV8kSIckWuZBTRUVX2Mvr+62kumkRuF2\nEvL9e9XkU8Jj3Ub1jWUmrOunDMLzCEv9KraEu+hoiPluh/SWyXqkVJKE3CVM\nZ4PHYCMfc7zsFEuVNJwqyOTDdJqeY7oZ+aQrdTlMfCTOqGdWswmUBktOTTSM\nBQ/t/0pazmyvCwOKwS4XpvmpoMJvzB3m1j36nR1qSAJxbTOUecJJwBgZfnAl\nIo1kfviTRhafkkz/OpoIQWW8sUV4vPGotHNWZLRFStUH2XYnico3Kmzpotbf\n3Sbw\r\n=oseU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCuflWwEkfqsgQ849xn7DDeZJxfAfmAwWkNmVb/AA1NwIhANjAf6kQYpNT9wMCwnmjqcU0e5MO3131xZHlyPH04uA5"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600899972-8e088c74.0_1600900087078_0.20130677969975208"},"_hasShrinkwrap":false},"2.9.1-next-1600937982-be75aaac.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600937982-be75aaac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600937982-be75aaac.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600937982-be75aaac.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oEK/ts5pqGy7CLNcRDcvdiFKRXhSoGk4ZSFUXWSZ/pND2E4CXiCGATtjonlJHxYkuTQIi9LiGTZKDZvq4DXoXg==","shasum":"1ec175f5b84d71fd48c3f14b35a5d91b43a8f46f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600937982-be75aaac.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbGBxCRA9TVsSAnZWagAAIjcP/j3Qfz8JuYoYcpp6+aQ2\nSsz22VAidKNpEUoOAN89zhMKJvk2sHuYh0qb9+/UldSMhaTaWuNfHGVDLbp7\nLFVafhYhrO8IGdpKYgS81H4yMu/qTlMZDPgcby3koP2SocJrFH3ZptWHWGE5\n50/NEQKohT/79isa5bZoC/RrB1HVZi1c5f9WLGOD6z05FTDrCqG/eeZpfJQD\nmq+TGa2ybDk3aomN8pDZ1wTGCfNzsjQHKanaKHByl1hZFtdzipp8Klm08C2P\nLV/5gHUVHr5W/g4/qrb5fvarFIjmH7ipGg7cd9eDL8Q2qzH/Zre5GpNe+zyo\nXELoJfJGnQ48leScfq9kaZV8LFWCtFrql32QaKt4lVy64oBJaoS67Qu8+nka\n3RY8o2iN4gpdcDYv4QlB8Q3oIgBzc+pgzxfh5Kho0LolG36aRUg0TWAnE4lm\nqNkyGK8soXHHJfWmg26ELrsAjrrCJ6s0tOW1slFJY/vhtIpFzbzNfsA7Brv8\nLRQ8pNbLS5GJCF8K7m+XQbYfgVo75OUM9D63512Ed2lElaQHkBI+vpSyzDTM\nPdrBpvHfSILKc9XQLkC0hX01wfFwnlP91+GH6V9S4hRLctuKyiQh8U1Y5f6/\n0TxYMZ3JBPz0klfpLcNz5Bg+tu3cRk6ZZfJx80cffbhXlZ1VhJw3fmvilv+c\nNnHO\r\n=AxIz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB4SUhzZJUtx/Sg8yzlS5DegYdchvPzD3gPoJnaUyd35AiEA1CguePHs6sTufnpnCpq28YeWGdT+vAiFWQSv6aRp8qs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600937982-be75aaac.0_1600938096711_0.95211903870585"},"_hasShrinkwrap":false},"2.9.1-next-1600938754-2c26ef13.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600938754-2c26ef13.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600938754-2c26ef13.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600938754-2c26ef13.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kTWsrrXBeoUAQrGJ3I//yvr8nWVNtpBAkfeF3EIkyX0l/gRM7oCSiB5Y8bXqYSgxeG8qT2KO792NWniFvS2rOQ==","shasum":"39d49994934ecf743e2a102f2a95efe2ea4faed1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600938754-2c26ef13.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbGNwCRA9TVsSAnZWagAA4CkP/2a5a0Mvhk3ISZSffdf9\nETtd71MAmyAEPQ0Z7HV86mfxNphNhVVPGzpBUhSMIsyXuS/FEOXpzfRvHMrC\ncUzzoLYb8GpWi/d3eNllrZOiPiuvkpV9yzPls3nCcZ0vVak0Zqx0UpXTYmmJ\nuAIQ4MtYsaMTfAqBoEtV8Xk9kaJgZfWyCOXRV4OeMvaFa2Kr0fr41xicTEZo\nZznsYEiAFss75bPiJaMgOaRA+RoVrynbiimALBwmbNbqkkNLgIe57K58Cxst\nyvvbOFjGOoi0Yptfp3Sb0tCH27vE9YvsvASTF4fSzh7lCS4XU17+R7dSQS2h\nM/wY7Z0IapmmCqI9UbV04krNJRuIn404QiibQXajf+aLUExtmShtgjAJg40U\nRERh3v/EyF2FLJJIeAccHIcK2FnEewrS9WwqqPbB1CqCcU+g3o12SgC8eBbg\nzT0sXyg/HyV8kuTuwEdI4oyz4LoS7+uOcCSejx7Rkwxew72+oADqcsxnJrH6\nk18TQ0x/RGwCAjki6x5CVKyXj81kFxMOm5VWlfMr7xRR11dSGaOhU5meVSrK\nmS2jAi72fXqePqly/5KFk1xlrYFIW0Ak6hazijrmoO1ZSuhzHb7XiLAbaP2K\njBVAQm7MEuuS9oJ/NZuqZdWdEZWSUaYdrLLTUDrcUj6I0IdhB1tAxMI5+aEe\necUl\r\n=6Xb9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGb9k8izOrdeScTmXS0HH7yF3sFvoYRFAFPu39Sm0/mJAiBoGQdgOMjy3KKRh1S6spTfo1m3/NSPXP7ZHg87Jysw6w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600938754-2c26ef13.0_1600938863683_0.8885529312582672"},"_hasShrinkwrap":false},"2.9.1-next-1600942081-39fc795f.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1600942081-39fc795f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1600942081-39fc795f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1600942081-39fc795f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ViZ7Iwd4AZjRcQRZLNyAAPDuFc4JnVgmj5jMNEt/vUWMRaIjOOgMGTUc8RLwPsrx4AY8p0FPJ1+VJ7K/D2AcuA==","shasum":"898a72b52ac58335d53a2eb489592457ed8523f6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1600942081-39fc795f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbHBwCRA9TVsSAnZWagAA6N0P/jjpeHWbmNjmwNHLjJxa\nsDJkMzExL4pT1YDPaArM9O9YZKwRytow47SpN7uVKeUXUWK7xI2Gq+SspAfL\nf1dXDFDPOM1d86NlX6TWLmt9x1O0IhRDnZcwMYWW7z8TT8gj711JBW93L++D\n8UQRIIyE5WN70ebV65FMR3E9akDqe7TjUYtxEKrZ4xpjbwMKe46vH0vmsdDi\nUJVibCNBKE3Ck80XSPbwHIoNd97t0XstngFD0RFrTRYLCnt844hWZXpY5bzW\n1Ncj2f8eDctYS9Wir0xxw80OQOSsGo257V7PPzlfoGp6f2A/TWRo70amWZUr\nGD9SIVPL14ddtV7YVZIJFX6Kr9TV7oTRbnid1AZep09wk/CDp5f0Yb72A2lP\nNW7khbw4wzo75bhJ6pQPqLFDBGBzQUAMiqM07ckQE6Xf0eNOe7dEhOhecHgo\ndtfxyHgJkgX3tu3Hiz58MG4CP5PDWE7VOQ538Z6dLKVab6uHR+VASDg7BwUm\n3Wv4meDsbC8jXUUMtc9qaPtQftXjytHmglelthnO3+kJYkHF8gz4od3y0FPQ\nCC1Av5TBKfrNJ8KpKYjfBU2+Mshg2wGJIAuiIFx1SyZfirk3E4JnV5J1Dh18\nDT6scDaRZ9+K5t9PLOZ/nBLAoM9g0XGaMSSYoiegwYRTOBgg5S/rk2SQBhkZ\nkSDB\r\n=IodK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCE2tk6CeVQp0Gkx73hIzMkrfKfHB7C5//3lrHRVGQWfwIhAPHJgq0smQwMaUwvCOrZMGwCW4k3KEL9N9QTgHZJ5gwe"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1600942081-39fc795f.0_1600942192306_0.7785892922769955"},"_hasShrinkwrap":false},"2.13.3-next-1600945825-a78f1716.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600945825-a78f1716.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600945825-a78f1716.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600945825-a78f1716.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MFiS3REPcpszBRHOtmaaQIYs0kyUrE2IS3fUO42HidhJB7W9SVljkJNplBvHcTGJjLAgoLIyGkA3ibFbWsj6Rg==","shasum":"611b440be607a6f7b75ce4a2bc53148ec00bc8bd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600945825-a78f1716.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbH8fCRA9TVsSAnZWagAAbFIP/jFCfUEXnPr3oVNktECa\niIjD4tx7BhSGyJ7Ej1K1IuzwVQgRmVrq91uxCLi39CexWjoWFZMvfuZ3Yoki\nU60QrDEnhyLLD8YWhDnIY2utDGBtHQKQTUQm41d4i3HbXR/TAgoJhdwGLqfv\nbbtBIm1vmOpBicD71WXBdup59yGqxuU9v+FbJ41120Pp+Nsn/8t2SAoR8xYY\nI2Bx4CF4PDZ+bY6YdRryEFSrVo/uzWOGanhGtCvrkxEkibuLWlGVosO0SzYe\nXBM/RgFIwCR0gECvkZ59rGGyMNX0Xa/L746+GVMtQRc9AivFPRTePxc155sz\n1JVEmHs1ybbUeq+NqKQfihrr47Sv/bHWQhjrJ0jcp4kElwEjTvS5YlaeOp9e\nul4fF1LqeqSA0yNHXoSOLMUe4Qq2mpr63mQ479g3PdGIdEq1qqY6AKtvPhQe\nYWAv6JbsllWAFUx8LX2e7nouGMIS3ulyqte0DqcyqyXgfU4EHBEDib/sbj/d\n3QC/j6rHZpPLGWKdov18X0WZYhEcEqYxf1Qru4xODE1QUbmfw29XcjF9O55x\nb2H6FSDOHb0E+8HRShzKcJ53vSLOXRK00Bhf+NMBeER1zQ7lfIs3PKxGAlEE\nROXweJcxoXN+HELHcOxxrMmNvxZaZALIBgUaov+epzE7vK8vswUwV6YiZ7XC\nlgTf\r\n=lzxs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzP7KVP58gZgFg9pKywO3adJWiqBSLH8FWXIPJpwB+qwIgKo/ibZMletlgd75Nf4CpARZCbU9U374UCbb/5CTSct8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600945825-a78f1716.0_1600945950753_0.48262348793603005"},"_hasShrinkwrap":false},"2.13.3-next-1600946214-8c76821c.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600946214-8c76821c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600946214-8c76821c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600946214-8c76821c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/oo7NpoBTBgyGosJ2/BR4bHMiH1qnXraKzMkm93RGTLS+o70+QfsMi9ljxBQHR9ypsxpoUa0dTgJCMdrqWvxZg==","shasum":"28981bf0dc3b6dd95a3b02f6b24c423fde7247cb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600946214-8c76821c.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbICoCRA9TVsSAnZWagAAIycP/Rkr58JSkr1XAkWn1mg1\npy2dt3ve/7H2SpY//uZYu/KP+evYVuQfqZNb/r3WAFiboC6++UD3rCwIclbO\npdiaLqP8RBI9v7tVXTPSRaA8c/KRuNRXftFUIgwP1i+hQxnPyHDTizBbH2gi\no2w3HGLwcM3eJYSrbh8XhEiWqrfpKThCjKbOk3dTi0EOAzeG7XNuyPEG2B+K\nNnsM17+DAIVS+o9lgLVmvnbU5H1CGJtSc0fzPAAC9AUl9z96+qatulh5hfBb\n2g0ROgR1Kb4vM+4nKilm4nvuENu5ZOPYHKD9LW2VLXf7hOPVqDM1C/CZZg5x\n3wBtzTmx4o6BAzFdVQTHSiGTqQlH/ILJvrIhjUXdMKMY4k8QvtZhZfUwoSSW\nU4R4fEHs1cbiEgSDAhmJ/oq5L2zgiA5+8muP4GXcBdSCmdhJhkOAsV4YfF32\nxSnYo1v0KW7glze/jqmGJfj9KZVDr2tW5ASblrwP1XHIHIxhexcrz6PhHNcW\nWh5VHKjO3sQ/o7DRInJtE9AvG1NSav9hqAhbi/x9vKOwwvGh7djRvQ6DbrWu\nCdlLohzjIWbKANxMYMDgllCQw5v5QpDkvBBlxMaasZ2pVPeLiDt+wiLnkOVO\nXYU+4fGKUcV6nlIJU4lS0tE3eFeVOR/w5xNP7cs39wcu1qUSxVVz3UtRJJI5\nqhut\r\n=vqcQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGd9uo+H69UhLIgmZqdIyw5hnnMfEyCIB8zhTa990kmnAiEA3nqVMvgTzO2SRhqSfviBSALEytnCGKTRkNIjlGoxyH4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600946214-8c76821c.0_1600946343594_0.425678654976011"},"_hasShrinkwrap":false},"2.13.3-next-1600946441-611e0d35.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600946441-611e0d35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600946441-611e0d35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600946441-611e0d35.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VSNRHZ+w3JibnZzT61T9yj21DUbFGy1/t85yPn2tT84DulSzY7mKF4SI+2f9P3/vQIygyKAaZmo28rx82mcoSQ==","shasum":"ba1d1bc2bf1aea7b123dfae0798eb2d31a7cb477","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600946441-611e0d35.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbIGKCRA9TVsSAnZWagAAaVsQAJ7PzEW/Pu7RBLGOmKqi\no6hi+HTuP0ZUdcrOZ/5FlySzcLbq5omXxnSKyOmZZxgy6R5BC0p9JkpT9Rhj\neUOfDSQzVGgcALsd8S8QHMEHZqcPgPSAfZaNuXKBcWE1B4U0T5p7J2hst28O\n6m0w++lcChuysNLz16ZD++Ltu4iSMLD1y5aXW9HZpUN4HA6nIiDQSQbMEze1\nF5NC930vlHAVsi+4ki1L6k5AvMaaCjO9u+qsba1bCkPb+FXlS2E1mn+PjdRF\nMafHsgsKd8RktQSZ8UCk/ZZBS5cAenbzbmQPvq/5I+NAqblFvOPbCw0kCcVB\n/aC7XGPO3x0FC8JF6+7SyVa3FCWWycZWsZaZrwvjgDCAb/coEia19TYKJndj\nLJUumP4gxHEBnHgPwr5+ifD4ZYWZRjGVHsBys+CJ9YO0u2g4eZGq/WOT5T/N\n62BTYO5KbynLzas/AZEuaK0V5FuJCbSAwyQ4/eaojhCM5XyGh7LMkzXKDFZp\ngAAtqaLsyXaF7SdxeSwHWIkRfb4zOh0l499iTDYoAiWcObnqqo7X5DVMY+HV\nBnsrr7g2Q1/+SUwq/mg2mu2VqHXdq3IVmA2qLRRbBlp9qzfKvth2QrxhZ7Wf\n3iUSs+3Q0MTzfcjAbXiYryxnZKN2/vWG7+e/bI4ABYtXJtUPBYAijKsEfPkd\nXWzX\r\n=y/T/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdR+JhrvRG2MouJi9GdAw4t86oRYjDMi0ezWKrrSyyEAIgST1Pgy3i7hvyoJ8bIDfS/DDl0SLCPBOyMXeUWJilHak="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600946441-611e0d35.0_1600946570383_0.5957890898815201"},"_hasShrinkwrap":false},"2.13.3-next-1600947693-fdfdca35.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600947693-fdfdca35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600947693-fdfdca35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600947693-fdfdca35.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ZiQHn8GoDWTVJ2GXKw7lLPphTC2TMbLONH2RMC89v74axvnepm6Vgq+Do3sRPzWjjlXikcTkehKYGUTf7xeQLw==","shasum":"735cc3b1cc9ebeb636f42906db6d79a87508ed53","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600947693-fdfdca35.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbIZyCRA9TVsSAnZWagAAgEgP/1kTc/R/Pa4qdfjHzwuS\n5/29LHqwPjx7b2ZwSZKq8F6TBLUtkUI9Y9GpByrkEaoGmcVqqytuIFpfXGnJ\nTAD72W79J4I8RXp1N2Zp0V8m9v+5DGaCdnkjeMIGQWChgfgyQqbir5oCW43x\nka0fakH4bpq4Yvq6mtirAqpALVpC9VN0g/yJy3NR07fCxMG29IC0u0ujoFYv\nFMMrTq3pXyIFqtf5YY2SrgIRTeP82HLri6TDx8NjDTpfs4I5IjIZWLe7mpeR\nUvLQWBUrCe/awr+AkV4+KwXSMSyVxBzEz6dG5eo+cw/UHQO5mthdeHly7tO3\nH19czO+1WVPBrMx/W3N4nUfa0lQDMvC9Hqa/djL3eVAMNgwj8bqV40z/WUM9\noix0kR08L4gCVdnvYojfIJuLp72udOthlVWoDA8muz7jm2GgtvTLStOIgAsO\n88l3jL13orq/g+CyLm0ueR4aGSKfeUoVmKKzGKwFprtskNQPZCoKbbB/KlFk\npdFBqPdN8sa9vLRMpr/4fYduNXwRXRNIiQbrzoLKwGKeVFW5Rdl4iWCaGBaS\n2GRDSBJ6JnerJR722PwktrW9HmHnNHUe7GXola4rb11mjvXquJrWHfnORwmT\nc3yIj4nnByIA3qMSL1O7LRFG0/t36D095u04xj8PhvR4TVvBHjTAyHEKwkpT\nBBlC\r\n=9Gfd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlnaDhNvvvhF8ejZCcll6hvKtC0gnvDwB9mXXV4uEipAIgb1NsKk6yrCGVpyktxMXK0f2ehB2IVa9HpBi/eU3yrnE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600947693-fdfdca35.0_1600947826200_0.3444140413737997"},"_hasShrinkwrap":false},"2.13.3-next-1600949680-d345363d.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600949680-d345363d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600949680-d345363d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600949680-d345363d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oMVPIWpHzMcmdcb3/ko4S4F5iNWN/9SCsITFAVrJLuD5TwJ3sPRusVA0Cib3zVYttLA1TaUwcfso/tluGXkVJQ==","shasum":"75f1188f3c2b51b2e9a10abfc41c8e98f60ff4fb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600949680-d345363d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbI4yCRA9TVsSAnZWagAAoOkQAIU6N88SAG6g21FweG23\ni8Hc/3P79QphStXPoJQSB9jEKxeGapJG0UalT/J+0UagVG/NocpAhfgV8whk\nhS1QyhKWZ4YQwMI0W6OzBVdninBOGKC28JZyBTSQzApvl2VqcLFLSgz7t87c\nFbxd8wl3ts0OYHZ8LDtkaddHQuCcP1Ptdxv0WoWkgNQtHOmu7gRJHYbUXFXX\nXI0QtMoYyh4GKxZ60dVsii39XkugK5sRCzSTsMB4dyzyhZfwf7wnYt+YT49G\nYZUmdWzGBWrfRrRpuar9MpfKuSxnZ19ccalwtJIl0MKGpGlG2289hMzqi5DS\nJ3EsIj0+JAZdX3VnggL/fFaUaFzFd8V4MCNlqxVVLewOHO6Gcxorc+h0OtPz\nZhCk9iCkxZb7+9oUErUWZ7LUoJHtewWEtL4RmDu0OqWmKoLjq9SrlxQGtph5\n/DbHy37fVxHOop/KJ83Zai3bc+PpUu4/ZfibX2JOtG+Ow6gHfrwrLJaFGN+g\nR4LhzjA6X1zls37UVVeBrAfvfbx5OROKg/VYZiR96yGSozfwW8NHUaPWe41n\nf39s8Ya14p5SxRAz5TIp3IWjF7ZOEanHz+wOI7BQH/T7+BBd/f04xzcdeEJM\ndlJpu1T9R3eWS5IU1XkRBB0cGWpUeEErEyMIN0BWYn/u8VSyicdvj3iRna5i\nIf7X\r\n=nEDH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCO4q7HuEyBO65Pd9q/BqPIan77WsNN6AanQyu18xAJbQIhAPoMf/XO+yUSJ9R5vQB7uouWnUw7sxh7CXsmdmv4igmL"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600949680-d345363d.0_1600949810081_0.7961287376002819"},"_hasShrinkwrap":false},"2.13.3-next-1600950896-36cbff30.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600950896-36cbff30.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600950896-36cbff30.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600950896-36cbff30.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iSAo9VdZvQTdjc3gqINbeMnIdo6LwfwUEdu4ez8XLmFUAiI9uMD9kvmqc6et7bmGiBRjXuD+WyqFPa6a8mkPew==","shasum":"858abe32e50ee6c98726c14790fb60d25b366a23","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600950896-36cbff30.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbJLmCRA9TVsSAnZWagAAdL4P/j/oY1j++4gNmCE/wDVk\nfG85pGczuVB/9MzeUa3wO1fsd4cKOvu8bkPOAVJ2VQzGVMSKFdedd/vJLka9\nrux4I0scwVtFPUZG84Pm2LML6HAhe0s0966/JEr1I96YmB3ZiU3RyqIGlLej\n9qSlQO0+7pFexQlpao+mHpOjtn3OdiizlrI9Qzhm/LYx95J53MmTTez2VKDb\n91/DRRuWMpWJggQ1uzr9TCXPo8kefO+UXOtgmI7qnFkFnFKj4Fu+n/5t+nfb\nUuAskYCuRngrco5tsiSRKHzKEuWqc3X4LoGwJ1kGLHLNJzSkCVydcdt77Jmc\nQ2hBuIkD0EsJNZC1h1cgzGVNhgDXkmOcE5gceMSqch/BSWwP9aibhr+s3g2u\nk4K+73U6N3nY6cO74Qs/Fr0jMuOKzZzCxme7JskVJ7uExQreT2yqtQY3pjkx\nKh2bIbWEqCCwBYF8A/qDyc4OaXjD4AsdQ0xGPnH7QY+PvCJ/T8r6F4pIVS3a\nU1yihaPDXSaiimy3xWjhJXJ0yArGIzp+iIdXkz8F+M36BppeUJGYMJT/lGf1\nFT2pPfFZTrxX3wrEsyBbsAPO7LM3cBPMHh4fCC3lsj267tfFTrluZ8bMilMU\ni7PjRhswgOyM/LpZc/9uGyjccmbde/2+A6I9QbORJeRvkErV0hRea4Gv0rqX\nb57n\r\n=FcA+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAUAVKkpTRXjrR2SBXAWoJwrpbDEhUVgCYK9kpQXSRyeAiEArJXWThvIH2KDvDbd5/mV9gDPe2UNk2ZpjrzN2F1UtWo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600950896-36cbff30.0_1600951013554_0.02836220183970184"},"_hasShrinkwrap":false},"2.13.3-next-1600951520-3e87b43d.0":{"name":"@xdn/prefetch","version":"2.13.3-next-1600951520-3e87b43d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3-next-1600951520-3e87b43d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.3-next-1600951520-3e87b43d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-r9oeuUHrARts/t76h5FdyDQIHTQp6EfTXcEXxYQqMyQK7sF8meWhz3oXWiy8mDi+/XlSjSwuom7c9DXyfphd1g==","shasum":"590a47ad00c7410d48a4895240f76c6d408b7e78","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3-next-1600951520-3e87b43d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbJVMCRA9TVsSAnZWagAA9IYP/3VUIdvODGEO2+TNJgWG\nVgMqIbqiPUZBWR0Oa9JFMVBDO80dQtPw6owHeOf1XqnA3TW1Ia35NImJo4EL\nzS1k1GgcaINwus9j1aD3HJBNRre6k/XKJSu9KFKsMcxY+oNe25qcUXrXwnzU\nLOdRLZt1P2AMnm7ygCph70eBIwLrhRVcB6x7G2u2KiyVFv7j2uBv6eHhDff2\nZ+8BKmkE+nFyJ0nuPL+8sbHam98rQvYYOFhvlywOCiWArPrM5vRztLniXkD1\n+PHVJoDPUP2g8YYXYIdeP6sOApUgdUriAQEEc2e5PApIlYr/QCYfUH1LP5Fh\n0eKxBHQOCGagWQ/HLXWN5IEhd7G6L3hRg+mAIZnIgqDiPXtlI/XVkp4T9+Sr\nFYmPugbmczRYYPQwJA3ijt5UW+mJTDopM3jyBZK/9+FqbRIgUXKcohwyDtFn\neMbnCuBZgkWHV9IbzBEZ7YoP5xncE8vkEVboXdx3CXcQqad6rlxhJFdnrvDI\njQw1cRKUDWC3DptOr6yUJsNekEQ8S0VzvzKlVZAA1PVda5f86xlmadrNINlu\nLsMQtf+Any3XITJx5pP+2ME7ym0fiKkd+VYcNt6ao4N3CDhljb0uHxqKrPm+\nvDmrh9uQu+A79vcq4kmA/DDOZo0aI0rVZu9g+wgjpJOGOHfuqINkTlbnAwV6\nEvcQ\r\n=bXo6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA36vrXxBW4kkon91Kdr/unD+t1h93s4ivw67R2AMR8fAiACzvtqr/eDQqMFIQLZnrfvsfTJl4LMZJ6sLITs3xyA3A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3-next-1600951520-3e87b43d.0_1600951628443_0.34159865258849"},"_hasShrinkwrap":false},"2.13.4-next-1600951877-e7573e8b.0":{"name":"@xdn/prefetch","version":"2.13.4-next-1600951877-e7573e8b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.4-next-1600951877-e7573e8b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.4-next-1600951877-e7573e8b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ETV19xqWJGyNJBQSi97k/xLba8Spg2cq8W6EyiiUp9HUAPRReH29nQ1wLZTgVaKxWNMQ4uXEpL1i2v5iysdbSw==","shasum":"68ad01bf87c0e9de9372cad7a7eaa61634cbbf08","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.4-next-1600951877-e7573e8b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbJbUCRA9TVsSAnZWagAAi/wQAJMW6tKsV9DYSdJ0BzXB\n8JyB2n6w9q/D3RukRHzH6fCsYDPqaogvpKLP6pPrPi7A1ncHNKip5eR/1hYF\nkacswZvL7J0G1BCYQyRolYotuDq4+jCzJbsDKmmojWeYNDxiS06SusTDDdKa\niBWlIfMdrEfm8P6UmIQMgvEENFtDpD2gPNywkZLZctmjFvrhHDzkOLMtIMZv\nvjd25Hihq2QjHZXO3ocmPomvSrRctXgFN8C6h6YxF6Zv2OBpetjTb8fM5cWj\nEaYzLhZXDLvd6GqXfjd/z1RIrx0L39bcyLcXB+fvlp/T8D5SNFtz3jmSamEr\n2fOWPlhtOi4Gq+ZfNmcBihee6yEduYHMW5YNrTBixGpGpZR2Nl/kpOHYKCnB\n4jZURD5IPXnbXxty2sg0/w79hWQhzr7REA+hEwlwkxJXEIxB8kETPTtX/W34\nFKMiry61jFI543n4HDnb8XUtoEoC55pCnvSX98OcQBhtKtiYDt9y9X/xwPwT\nIEX+BrAbd3mOlrMCLv7+cmtfT0RjHxnJxM0gPhb6CScJLq6+VjooPo6y3HCh\ngb+l0uA1J/hMky2+OM79gtvodYZorG1o13DbHCXt5vti/5/euYrktd70/8lL\nJhSeyI83x9TdLMc6L3dpeCqFqhSF0tszVqsFoNYQ24T+Ts7WrHiV/iDQ4p8I\npwnh\r\n=JplH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICvAAFz2HY25PQ3keYTQxLHSOLzetn4vtfZhm3rzLmJ2AiB8cmjBpFNMjufgkiJ+wddAV8P28wo/77k0TWT+oNLRjQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.4-next-1600951877-e7573e8b.0_1600952020113_0.659385707232266"},"_hasShrinkwrap":false},"2.13.3":{"name":"@xdn/prefetch","version":"2.13.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.3","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.13.3","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-quIU4fgbnOlrJhq7E+aF2oDRkJivK+tAEhiHPqP0KWjE7bsQxEXyUYTKM88G9v3rq2TfPVsEQTqPUZYDnJBoSA==","shasum":"89763789d31adfc050dcfa9409302bcc5489ac5d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.3.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbJc9CRA9TVsSAnZWagAA67cQAIP7C2TFWxNLNw/GoIEn\ncM5WRQLiWVd1OZ89tDlV6Ngb8WrlOSjyJ7gq1TSSWtrYjTAFjxSQ/IWkNw7R\nwhcD3h7O2covbL+eG4Mdx0k2sKriUBeuddc1ncnkMCqgFOs46K3WgvKgco+o\nFNqKPCYuoI1mVpCddjoj/zHHq6uMhzVbcM2biDtEys0G1tN11HC5mtb6xdw5\nX/dCM2NF18cLm9Gw4R6QugzTDqrn47ZI6UJbF80CAY0mqj7NxKt0XDIwKqrO\nD7b41vHyhNX7S3AsZq86de/ZcvMmI9TxC4BgTda10NLvNWQ0aiIt09SE/y3g\nHSsOMjW9ThvEf3m2KBz5nYptiLvq2BiMDnnoIMeLluN7tKBmwpLQMzc6PxiY\nWSM8Ynkpcwe/EpwApV0Nj6ZU/PyYPSRkxxt3i5fM8Rk10htmxeG2yNeFih23\n+cbZ96igUEA5qSXPgumoOvjWAFPTfm1vqSpYnSQfLSVaX3j4WTCPPx4FoZ5N\na937BVZdXholQAYWhxLgS2wpgEEl77RDLGC67m47xmHaSB9Vln+n83wovrqr\nZvfBx5p943O9DrXo2SDIYQqcBPdcGzIENv2F84yzagSQ4v/RmPlF0KIH+JSF\n7JTKetgwspjttfKFGUkKtN72TABhEthYmB05d33E7bNukkPdiCJvEOVKpu4J\nUOgG\r\n=oW21\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+k+5g6jgM8B7opyceIPlzv6GmsdOFD3WX8sxpnl49QgIgIDnZYnxjtWr5BqnbR9ApdzNPu3eivc04iAhNOa6Z4yo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.3_1600952124940_0.2716419491364779"},"_hasShrinkwrap":false},"2.13.4-next-1600955919-ae7ee66f.0":{"name":"@xdn/prefetch","version":"2.13.4-next-1600955919-ae7ee66f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.4-next-1600955919-ae7ee66f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.4-next-1600955919-ae7ee66f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AOtv8Bvnenc4HoYJVAGxrfs6VlocC5LWqQJ0SvCWbAgTJ60MY5rjtz3AWueanV7hjpivzl77T0KF84j8ftpLYg==","shasum":"2e62ec81f8057bca2c84e44c3716227cabde542b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.4-next-1600955919-ae7ee66f.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbKaTCRA9TVsSAnZWagAAg6wP+wcERIhk6YJDyZ9Aebzk\n4084LLq/4C82Mo1d/abTIkMiv+sl6iIB6cQijH661CgYeJe0o8SuL+8EuDND\nLT6l2gDd7jJirbFXDy+wYEgQUq8QSKMdtNb4OpGgAC2qRQ66DZQXVPuLQrOg\nAh6H+E2QRIC87I8v5FJ33/L8gno5m5irRof9HYMNqTc2GiY+WyqBcX9Xe2T/\nl0gu+Z83GglwlylcI/ePUKL6UnkegjN0lL55hZHmta5NGSdUwNvwvk9l2xNo\ntyTIy24qkuYAzkbQw+qpyrjEMLm+5myLa8upqr+gOXnzIr150pw6vhDewzWA\nEAsc073pGVAydOmRYnXc6Wkdu2wZ/9Z/BVI4ztnK/Eane1TtStUNgV+uWMri\nZmPnJ2b435oDGdBSITOJgbg1DEc8UZZVOZKvW3Rgcsg6wzDuRQ7+Dl7sDBt1\nzsyUuoM1rIxErNSCncsnlnbm+1h6RuBgLsA1MPXXekGdEcdAe8CDULPmfoR4\nBtrxfFnelrh9JCer5Zp50skBHOBJg6qaUf4Jf8ozyDPNKxxPASn7+i9rvsP2\nINkE1Kwgo1Fl1D5RcMrnzhDcadEITON6NTt4f3997ybyMO2IQqgrFUSQY55M\nlaZb82+5iP8uYKU0+sj5U0XhjJTrAntOsrzBP3j95iFDbQrAm/kAmoQpl16G\nD4c2\r\n=jYIO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCH/q6FuynxCglo4iBeSkR1XXlVieyaOfy8/kac73yMhgIgI354DZFuZLEXo0L8DGg+9jVEB1BeahuEcPdITFzC+iU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.4-next-1600955919-ae7ee66f.0_1600956051302_0.9104114919572235"},"_hasShrinkwrap":false},"2.13.4-next-1600956816-97a7fa5e.0":{"name":"@xdn/prefetch","version":"2.13.4-next-1600956816-97a7fa5e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.4-next-1600956816-97a7fa5e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.4-next-1600956816-97a7fa5e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-g+z+d+4OgTIR9SqDl3Qa7OHu8d/6LwOVhcY4Eq4dflREWPFARpVf0/iuMDyGjzjCAyxXR6e8eb+nQkc0jOaYCw==","shasum":"d4aa06dda5681be3191acd0bfac9dcf1a190d638","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.4-next-1600956816-97a7fa5e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbKoXCRA9TVsSAnZWagAA6aoP/2AruVrbxLhLcGNzI4yr\n1HLijZSpqTcgsymG/4/qE6tc9h4PWhmK6mtiUnB7McKMlaKGUAZwt0qxDpj+\ndM8OaRL4bx9bTxz5UaudUsTslMm6DQPBiRc8BinFMkDhX70Ms/OO4k8HA7HB\nqdnnRS8sakpmeuA/AzwXc+wrYhEU6t2nCRyqgYFBbbmUmv9cfnxqFeEWhnk5\nJrgTExZU5UXBlyFvpXn1Sy7T1CvknRQKz+gMtvYwlu42nX2SnbaAVFklzaTf\nVlnH7MsBSGMKGVX48csniIAZubIbhZXke6IYqGLl8mQ33+KjGqYIMkr/Es4F\nTsPH5DaGwdftlV+amU5h1jnFo5YeMdVFGay+UemxTDfQZwwY/zOLR/DlD6yR\nrWedtSaymaYGthqxRYBTmkFAFnb0QY5UNnUIrkB8RvoMtAGnzH5Uj/SMjmMR\n2EecUooMAwhjTRjgegdg5L03nTumJ3L1ua4MVkSCSHfLxvd08Bc2+tntx9Nj\nujRxKyPyrIR6/xIqkSTZDYs2BGQ6UGYrhkufwsIoXTHPZJUNtTFX4WFeK5XL\nlJLZwwDo9OVqrh3ZUfMiUXBWgc33kyzMUtyjXxcF7YhMQwL1+dy3DAHYdxzB\nYYhFcY+n/28rzmgNpfI/qxQCGlcHKg10OP/ewx6oMH27oWNlDoY4hMtMfWMf\nBRkR\r\n=LPAF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD12bIVgu7HcFFqgPd0Zh1MZ2/aX5/mc3IoGwMGnOUNFQIhAPphZGKUPIFKtfDDlAgCVGLTPCuZpVAI5lWoAGWjctKT"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.4-next-1600956816-97a7fa5e.0_1600956951345_0.44139065257563126"},"_hasShrinkwrap":false},"2.13.4-next-1600956931-7efc3323.0":{"name":"@xdn/prefetch","version":"2.13.4-next-1600956931-7efc3323.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.4-next-1600956931-7efc3323.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.4-next-1600956931-7efc3323.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iq/h4FyJZFMTfHkZCwX56ChmuDH/OQU6zL8kv7OPMwfOvEE6cGOATO2qWc3MnZmCLx0BpW3xzlULei7BXZcPKA==","shasum":"eba9df5640115292eb9fcb38384180d0164ade20","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.4-next-1600956931-7efc3323.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbKqUCRA9TVsSAnZWagAAIWUP/RzhjOpgJrSqG8/KbH5E\nJLWjNnMj35f8xTXJgKXOE00SNBoR/fbew8z+CpRCeNEf+PgUcrlBH2GHB4Tt\n/v79EgfLKjhHbTkcE5t8IOwddO4peEk8PxY7+lVdGzJE0G7vvTmhW1vktPUs\nqSQpq3vvTI/1lP00ryiJzWDOH+z2bNYjbEZDtnolk3+aOkWNscpqv5rbOlYJ\nktubvCbLi/W7RBsFS78H6pLxsu/LNygWB9nPb/nlZH+Bop5cFBM1p/9M2Uzl\n415Euufe17nPTFhnhVQXyrT9YdSu9lhSMm1BshMkcyeLeCTH2HOv8yigL7qZ\nUdYLP7gs2IJCVh6rRNHveD6PowX6Th3Pxn99iog958mvDElFdhxqwF6JgAGk\nGP72MQGscuFLonZZisbBQd5V7UMGnXUp7ICfETS0TQGWO+feezk3wjA62vJb\nsefDnzuE404AEXBu4NEXRfAyxdH8LSDBPXsfuAexmneGFWMIrXLqR4sucINV\n7alPfaYYAPlROZQarHDvgS98QcP2sBXI6myoQ0tSSsuIx8uOLHthvf4n3TuL\ndYaDRctx18jnM3zMlLO1W5lUuMnPRVSDA8Cm8K8lq4lJtT2iA6nArVHe6OH/\nfIKO6ng1jFsqvqk2+9NtTqSDOvk5ErNJ/webLbOHLrkYQBCraSHGEP8j1XTq\nCGN9\r\n=FzDI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD68MW/DwZoJd9HCaKxekw7Ih2adrVXFY7vGhCSAQ23VAIgRDRvurITpCA1vyYe6NLLMN+H7L5sOm+Q0wcp3eypN+c="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.4-next-1600956931-7efc3323.0_1600957076486_0.6827511598852161"},"_hasShrinkwrap":false},"2.13.5-next-1600957052-377709b5.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600957052-377709b5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600957052-377709b5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600957052-377709b5.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jVZV4m8qPBkDMkbmHDjs4tF9NsF52+zUApepNxQMpIucPCBPtaeezWLZlecTaTpj6/RDEIVqC9iYiiCti85aIg==","shasum":"1626d2fac74eb91123484e6282bf4521736fb96a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600957052-377709b5.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbKr3CRA9TVsSAnZWagAAu/gQAI93EUL/T1zWS6Xjsi8r\nfaGfRDRC5XT/bCqDVenKPjGfuEd3mQUHh/BYXC2d6vT75O4/FwkA3pMNWAHa\nb8ZVsRbcghpcoG7OfnObIpbVvcXCpIp+2OgwtudIqj/gerwi9oEDiV+VpXQW\nnsAgGL9SqiGR4vQ42YLxZna/1wpezJNbCCkXK51sO/4bEE9kIlje5KPBEeuj\nxY6sR1l5Hoq0hQ52N13O3spo1iT+z0vJ4wxGtZ1nFH9xYRtiKGjx+KQvkID3\nBeez+hS0W5IFx0bFdCxsj3Zw9AU3dEAKrRk8tcKCBb+4sRz7xBPxTnn47Yzr\nLM4LqZxeSQl9ghNMnVUiAAtYbFQc4waIK90lFJUis7R9iD636lMqX0Z5BmwR\nT9cMG0TBsND0VrLb0DinrYyB7W3dAeBeUnmXG6nfMXiGb6dI4cb8kPfjDTVP\nkTa/7UnoTwa5IDDhqGnKQjOT3sZ24GRlNuFw/1LRRqN8lQlpeqmTotMDAi0N\nQCxsPSobWP8qVJcsijnXajZf7AvVZhdxH4ldEiwS3dIMpQ1tyAFvDwzoqOi3\n4pkH8x/BRbsBHGjYNoUe7NWll7j70unuePTAEjTTnISad1vjwKOI/asiiLdl\nodlC6k642fUvEh7X5D6KZQPhNHXdleLj+MChVF0/lqoBd+gNLwXrMGhliyA1\nsrpk\r\n=YbfF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLtEmxpQUUL2nFzafytoAaUonzZGpZOjW3yJbDSsdEygIhAO3p68Njgb9XU8080oeK4atCbHc5VGRM0L3vmsULoBEN"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600957052-377709b5.0_1600957175291_0.2893902847209797"},"_hasShrinkwrap":false},"2.13.4":{"name":"@xdn/prefetch","version":"2.13.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.4","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.13.4","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8eAnu1GxSMDcdsT2Vo4OIeoRkbmsoCv4ZNd5Nk7LIw4wi8s0YL7iidHjbLg5IpVRxIFJFy7q2UojlwIrZi4r/g==","shasum":"f27053b77d4bcc8eb9bdd69db49b1058a1473cbd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.4.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbKuZCRA9TVsSAnZWagAAgrsP/2s9BngRGiXHtkie0jUS\nhapqbCey5MSGihXldGoqgNptRlESVoyXsKuTNKOb4ixxAkWsDhu1XfE/XtB3\nt4fjTcCO76cCN6xWAnMYDIVIA7HiMJ9PZSfGXgzOkE/R2RIaGvHUMW2Etps7\nqrPCP/BfDKuan/aNA/WYqRqWgPYirhucwOF99jLLwaZ2f/Pic1KdsAa1sbdw\n4XR5l2WdFlaq9CqzlBEUROQDTb91rtM+HibM9fU448qMFWBYT5N9wurTqET5\nHth6z5SQ1fN+AoXyAkp1xuUABzxwkNr85cvpy9ASzU9wEQAp4cOWaKRv5FNR\nqUT44aD723H+qGLpsh+G4BpBGvdjxChzFGaxZWZFqP707quU6iS+tWuB9I0A\nqq7GzfqwmNGk+Pdi/dHMEiaq0FHwMjnfgrZ1SwI+69Z/0Ul6c55MsMXUVReo\n5MRMmTHgHYOqjB5/mulfJ0GIJB8OwgXAgy3Gn4jhmXkYpMZyO9frZYagHDhf\npG3x+HFUzFhUFjT53mhHi6NQRJnltuKwWiY4wddadiPLAjZmwhfJ/queN7Yo\nAtFO+EpOloD/0gXezo74am3X5wYw4R+IhXNwXeC8fAGTX9OxXNromyW5jzMa\nHW1pUqDOQkkFV+zG9mrZ4eRwS5DJ4cjTCOL8Dvcah5aTtCClNuIywZ3CUZsW\nNiLr\r\n=JnR2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaBwfKl94vrI07aChozdcMgVdYk9yHV3i4ruJWl/lOfQIhAP4tj1/2Bkzu33vlRpiU8+wT4wBvBjr18IjtUmJMxQVH"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.4_1600957336635_0.37054415072417823"},"_hasShrinkwrap":false},"2.13.5-next-1600959960-6a78967f.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600959960-6a78967f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600959960-6a78967f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600959960-6a78967f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-aasDIaQfYOZAT/0FP6bZCD33UbJx3jFQE2RzDYW2gdpmTqx/sH8dxd5Pws+jQBb99FhjGbeb2/EF8BvdpEt0Uw==","shasum":"4bc64ed64c368d3ae6f63e20dbe914f13799f631","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600959960-6a78967f.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbLZUCRA9TVsSAnZWagAAdVUP/3TwmAWUAeU8ht0qiAmb\niVRBKf8quhXqc2tHdcXXgzD17Ozt58qL227mnRWrOGJ0AXVJ0s1gsoBZw4JV\nLXbNTnCE5qrDVOJdMb1tZs/zaQpgZC8SiOqo3raecv5smmGGV/dTKeRbFG9d\nLA/yqUNENPdwU3MEyB+48FnWygLUXy6DcSgU6UZ4d5MK3hhjDr/CF+xsLaLP\nfc3ujDNLwcSxYvZHrsCNNqzXED+ihifjDvxGWpV0Bm9E+RXaMtt2zcgU+q7b\nBVOBHUx3cIftgIe5srPq58n814CJLJYYLvKZ0olOfoUVkVBeaTPL331h6h3x\ncjfgSiI8sImGQpJjspwJTOei0KWhKptNZqSE4QxENolQZVUiJd58u/xiFSCW\nAyi3t5LBwAYoUFFxb41c5lhE+ZMKN1Jegge0cqwk5vEJboqMeSlADPWyfcA1\nDPDjGy9sDPWDg5EN3Vq4mWHQY3hdBRw9NIWnIfXNCqEMsS/2DJEGz3Pfri2X\nk5EbyMD5RC1s8cb+TLvPAIrg19m2LgDYIteoaYXT+MByYuk0aXa3EFfQnVf6\ntyeICA0UEJ3tgwFHjWHeQ3qmkRO3KUx1M3WSsCZ+Sv1F4gp20dYVlNnWxX6M\nJEbH5rw3aNfgFgUCO0UYIHdZaUGCo4kywtG8OUTiRhV0q18hoYo0GQF9aI1U\nIpeU\r\n=UxHn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSwnXnXgwhx2kPPSIwOwVaIchiAydS1Ylqg3RBZ8CzGAiBv3BVShq2g0gDW0xMW0TGDmewohRmLrvHiZuftdH3odA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600959960-6a78967f.0_1600960083614_0.5765095120351238"},"_hasShrinkwrap":false},"2.13.5-next-1600965833-2c8245de.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600965833-2c8245de.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600965833-2c8245de.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600965833-2c8245de.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-h2crHUX1qAErv26oY+ikC65COJlVh43lvxo7GyKMcojfEsLMmcO8DtIoGGzZY2RP6yHN60Txj/rttaHV6pz2+Q==","shasum":"53f717b470c3ec59d94ea37f8b74888a2e43f5d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600965833-2c8245de.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbM1GCRA9TVsSAnZWagAA1rYP/iyatLqXshddCDFgsVFG\nIzoft05bm63elJYg16J61v5B2r5JKYh83EeJcfPmLjyFY0RW/qIKKtaQ0wdF\npPz3JdzGyJ1fbRxzoXQJnNrcNBckeg/mGlcvc+fwosbsjoxsmNt731RShcPM\nALkLkUlby9+0W99O+3MT+5arxd5y5SLVTa19oJn4UohArguOsc8NVBRNm+eZ\nHmaP3KZ7h6j3uRr3/LNephvy4O+FIUcOLkw+GEtvAIvqZAI1u0BVVrDBCyI1\n11rIaTMPL9cqXi68Rk9OSBYu5rhDwypp0XbsnTFa6g/OtV6ahuTna7763PCz\neT4vFCN04tH5xFvLGG88hXVqD2igfxRIqbvOLyUGCp+n4F2M/p826JOYsjbf\nPtv89CU04q989kPhWQTRwiMcSTyRXP620Ccguh4+E70x1sdWywbxwn4QCfhE\ne2Ubt1suh7davgtIZKf7P1+KYfDNeY0oPkcBu+4rsoUkk6botBjO6dYLnIwE\nVMYrQ6BwY18mXc1dBRCOUtzNbDlBHDIVWQwysFs+WcxDdC9DjAhXanfLit1S\nAP+M3gQ+QbkWr7H2tIfAoOYZmflrdqmTE9JC841A79vzVWas7vzFBE7G8xBF\nsS44ZL7Z0vaVRndDcfrWSdodefwbz0fFLdu/LX1ekNwcOZ2EYrHXzCnEhaB8\naI7D\r\n=jRO2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD12ifb2Nk1vb7UojpHJo6rMrnlrvzchc79QIfwjUlICgIhAIsENv6oW872C7/RloghafgE2z6aFwRh2KuIDku+D7dz"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600965833-2c8245de.0_1600965958344_0.42628187097735304"},"_hasShrinkwrap":false},"2.13.5-next-1600966410-6b1d640e.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600966410-6b1d640e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600966410-6b1d640e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600966410-6b1d640e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-STg7XO8cXWY2aahoka7ml/eoZJHEGQW6UoGuJjGlGkybzFeq8mzZwy6xRNxKnpIrIliA4Uu9+xD34upSnaizwA==","shasum":"9b5c78a9ae673e5138cb24b4b99a4227c03f3a7b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600966410-6b1d640e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbM+UCRA9TVsSAnZWagAAxI0QAKBOKTqb7jHuSwmS7cvX\ng89oESCvoVQmBWDzR214MQhaquSn1r94jxkoZJmwHH+pUIw0hKVn9dsVEuSq\nTR8YzqM13WYEqB4NGKfAXxKetArqMuQIQVeyB2l/fFeSY60cWZwhL165D3tL\nzzBJ+eMvSKDGMsYkniEosl62+LWRzz0cozF7PnZx4aD8EEcdVuE38a7iQ2o4\nnGUdSVs9oXoP9/nhVKFWov98gMVlsE2xBoRakTW29jb7dulh8l4Gr8hWDsbQ\nm58udCNoIa2K4SvG0dgb2NKzX2sLmVpkGXFJRhP90cdb3uwf486okBGBwxOI\nUsQ8qvNhqV1JaS7+XmYU+1+8whCBAuPikeGGH5FhWcS9hTXzo2eF/Ix4dhTb\nfZXTyMWthxTfb/qFYoMFZiqxAWsqQDZmOVTh8Ue6rfJN4mNYthUfPoRcdRci\n/rlhoOgKm8Hy7y2X/3LUHbVcAa9xGPyGQ1liTt5HlBpvjK2w5psHogzc/J/7\nqV3sGpb+fXo4odo3/d2qjz3dW724GrF4RpNQnhsl6CFqD0HiggQDrk9ULI0Z\n4X+6E4rXWeUNsk49P6g3n1y8zOBYNEBJB+f5oYPQqpt108i3nnJx7o3E8BN0\nfHF932gXjeaeEC1u5TBFGLK/7ymK0vTffCn6taUtzxDXAoj7SfX726PbCwL0\n/dXy\r\n=MYKO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAWE12no1YHwil7rj6Mbuw+SuKizS//rUepG6pfJDCATAiEAz9XY6Ux1A3LNIdLdF5sJUuxJ39HtDLk/Xluuw7qLI4M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600966410-6b1d640e.0_1600966548053_0.679737631756042"},"_hasShrinkwrap":false},"2.13.5-next-1600967683-8689a73a.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600967683-8689a73a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600967683-8689a73a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600967683-8689a73a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jKBkdMD1Ua5W1fo/iUfvgqD3ojYDts3jN1d9vzUU0EOJgXhP90AL+OWczrh3JPcVNkY8/U1qu8NcFoVSDtr5Zg==","shasum":"6655324cd76b4e81668f1ce244940695d43a7def","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600967683-8689a73a.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbNR+CRA9TVsSAnZWagAAtQUP/0deYXPRwIf0X0kYbJtG\nn4cEY5hLZcijH686RFxUqskTq79WJpMft3svr9ATmU/BKKH2jO0VjXeWmCaP\nFcSExvuBLTa9yQN98PkBnd5WyCYhQoYfNetAvD6tXGlY/cjAfgviVdA0DffV\nzf5EhzXp9O8D5UoXUa1pmIu95WqJhGyQM4ghEsW1TFnpk3LiRgTGIDbE2TQM\n8Qu1t+aTGF3SN+MgpNfpveRKkI8TRQnBkcNazhAN7kX7iGIIhanoBT00ctsL\nB5SOlR5KxzrG3W/ofu9jqAkl4q9nTd357b+fyFg7OVcuDYSWWLfeEdOPa2Kb\nfZXVfKMNoFCgvBxEaJLk7KUQmDyWtNnsIwetfJjKnBGR48pREr/c8JeWdDR5\ng1Q5HO0TLohiGp17FjHKxWog27WiHNAhy5GfL4F0umNuAEyrx4a7frUw4S7D\n+Xi5g4/aelohvhcrbfqPjU9LKXjlMu5MYO/Q3+Hxbfp3xlu379KNSN6k093G\nlWrHJ7cWJWZLe2lFPjIwW1JmVFtpZ4rgCXELqLBj18yvG78qx7J4U6O9ZQRv\n9oVpumXvnUcuqau/xeURtflQBcmaTafv/+mIoprO5lwxbIa7z1aQy7JTEEu+\nGRNKUdL6S2bgNA9UBahOxcxOZ2ofv087z2umVT9rdpx+ewZJp9VeHlnDugJy\njYr7\r\n=jrmS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHIrqJe53uGHn4lqZauwHiXbSp8RiTqfNBToMKXs+9UAiBCK02RBi2ystYmGtTpTXCB1www/vb/k/saXgDEUTSuzw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600967683-8689a73a.0_1600967806143_0.5680444440473498"},"_hasShrinkwrap":false},"2.13.5-next-1600972143-797c7dc4.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600972143-797c7dc4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600972143-797c7dc4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600972143-797c7dc4.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jCHpENjBAY4i6bkkvhBiz7E0pz7OzjYURuNagGDnHM+hZ0AOIgBN3tQW5Tj8H/e8LI6S1RPLOiEUehwiLx3WXQ==","shasum":"a23a063b4ca0b666bbfe361d7e66b6d44223ce3e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600972143-797c7dc4.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbOXiCRA9TVsSAnZWagAAHGgP/1/mhn03kaGcguExHIo+\nXRTueG6cM/AVZP8pvcNqWxuRtAjmDOqFVkaOeVDtyOBPcf1tyQ17IS8kYYE3\n/ExKsuuqPqAbXDKvbv5ez0y+76H6DHVgYCWZA4E8/KPkgcVgkRvjt6g8WDK0\nDiG1b26bBV5PaTmE9WlGKpMPphsDb45/5LEOKY2Lh+p8codbIBfP8O2xgBLC\n7bpBdr73UDytZsaDOE/26+AgCtOFHSQ/kIDaybsdmde1CmEXYg9bzLceOekX\n/nM7cnBoWXuyNW0xCfyTqJP/NVVl7b88aSuRrcTBc73/p2MRPyoXFtYM+NXS\no8xQG0JkXq4m+Xjy/xjrVk/rJqDneDOdfLvLfcP93C8wEloLFb7lE2GZ4q10\nQ6bMIpob3Lj7T9UoBPtZx4xjUaY9oYKu1ygvYBQTu21N8PvEV+xy/60GxDCq\nil4Z1GBKM9BXyi7ga6PYE0iRo8UC7smgPABPDo+Sh6bVfWOJP8PC0souduzv\njyUbHy4cc8RHSOWgj37loZ3E923FbVBVkYsaS5KwUHELrG7yCaJOWoYSx153\nezPEbJki9G2q6bNRW7D568yZVGiLKIPk79ujYVSjzETb587rCE/7HSNBTTBH\n92ldhOh71F+V7B1jJL+CVzmTqxl3hFEmu3rE5cRtlwQx3T8vUfAAVLiNY4pE\nNoyv\r\n=HPOP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVDu7WS+1L3FmCs8u9pY3zx+OLtedTqyWGM4IHH55YxwIhAORkltjMYGgAx0Mbjk7bj5x8FbP87o5ivf/xYshwV56q"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600972143-797c7dc4.0_1600972257622_0.21740150389962154"},"_hasShrinkwrap":false},"2.13.5-next-1600972738-90373597.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600972738-90373597.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600972738-90373597.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600972738-90373597.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TQS/h4yifNZvIPCpuWphZ+bVdo/463/rGziuinLmz+bRK4ULasLrHnH+6MjOOfBo7hft2VnYwpeJVS2QMK+SMg==","shasum":"b74d913996a5f29ef63893cff7a70cbe4f35a1c6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600972738-90373597.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbOhHCRA9TVsSAnZWagAAKB0P/Rg5zZxJyEDtPLESa95t\n5WCMe2lkkSzVtaoSgL62xQKG4yDInuSX3meEc67tTnfiZ21Zx1odiDe5dYWL\nApiUECmUIoRSF9/AN2uLWAW9dj/bD9+BSG0QMnfPUddhv8g+YMD1Hrg8+LGM\ncjcD44wiTuxLHEnCIKiLXXkxcO8+9IT2k+RRiJhsYlydMF1vYPyUs5qWlNkj\nW9r0oYivpNxugHhVDfygWslnsBBiLWH+5Oyw1Lnlfg8pvuIF7I45Kjmk/hnD\nZ52SIhI+1P/VLMWGVO0ZFMXnT4a3q52ncBZcHs35D19NEsRzayqf/ZIWEXrf\nTFPsylW6TOkI/P4QSZKZgk07iqpomCyA472gIjC8gI7mRJLSPTjrDmN7n5Oy\nQMEWYFNQ2VAgI4Xyi2W7ZxcFFswWL+52V6SGozx1FyFxW07iaaSG5ovi/drE\nfJ2FfFAwfXJpxkdMLdIE1T34yqvcT3ue4/PwuHI5rHB7ugT97kzxPnF+LSKO\nfCxrraTngwBXj7DqgpvC5wZPcOo+ZgmPSHdY3ut7lMWdx39P6Xr+xdwkYr2i\niiNsqaVgtt1N0QGdlGr51a8p9nI+q9gAS0wTNPG68jCbs0ToKusCarimjBdE\nGgwLjBoKFyug3QfOoejpuw9YG5MV177m1ioTAUDqvC39SKPN8Mgt17jg9sQh\nQsb0\r\n=euhE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwS0BJzU+S3i8xsNEShlbyNybA/XNcSqXhP2t1uiMs9gIgX3ztVM8rSLaL6zcHlfD6oQTpnYEGNEI8EJmh+06mvY0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600972738-90373597.0_1600972871196_0.46613879445236717"},"_hasShrinkwrap":false},"2.13.5-next-1600973916-7e9ef394.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600973916-7e9ef394.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600973916-7e9ef394.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600973916-7e9ef394.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BxTE1eGEL5so+dA59NmN+wwLcsKC6pp127bmMhf56gNoyjLInG8kApfnnLmMqWUnM1xs00PG8afDtoPQvTBIPA==","shasum":"8fac65b5d73c0b4c065f62bba4509089165fb4e5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600973916-7e9ef394.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbOzeCRA9TVsSAnZWagAA/bQP/3FOIW4TnwWtkgryNom3\nTuDQ5z4m7WyHAB1I/m7EBJiBbNGmw0atKNVyy9rac70nqY+eVQJnTT1e8OrP\nPFEgUepnLek9VCy2RfEDkKDmU+YoSIn12imObDoC6yQsDprYxlXe5ALBhs7C\ne1KfyNOTWDna0HtNRn7Y+dohQI2XWsnkVgkVvL592CBnU+o/zMkKphQdn9lc\nWvCMrWVtNk97tXJURaPBWwGZKBwLru/krgEHGDsOqJxrvPwmT7AdkWH2x0iU\ngzoikHIoUFvuVuYzAVIb2XMwS8N6N6iIoodK7+gLGCscS2sUQvsWxXNRpDCj\nDKfZuIdnKW600JbTjdvYGQF6dLDO9O+NzYDWGNTU74MHVq1NNz/2xpDLvl4B\n8PLJd/G1rNbfNQZL+Zj5D2x+0iGiUIdETrnaKn7iQ5JiJ7VvrNwY/rmuber0\ndNz7u8moGAbi/PWbqjDI/LcgWbMcsrnT6WH2XF+Wex/smRSBosxPoRgVR79z\nAxHkW0DdqegEtVt6S/ArL/0GlOkGHmx1n8zTrVRKNBuPZec/O1fyctoIpX6y\ntG/P0ZgZ3dsdcCW+sTomvkbEZegHtISOKVC4vlpl7nabRml9eiSYTnVhtm+G\nzWSDd2biVIdCvEFc2NSmapyc/79V27ee1y6IlGJMVrymQG2XisIhvLK76mXD\nLdsD\r\n=OrPo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICAEAOrcmW9YVV54cCclGvrGsLq2d5CeAq9D39s06vV4AiAKCH+YRzF/dYPpIe4f4bYxS9okOGAnorN0uDLi5pwakQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600973916-7e9ef394.0_1600974045478_0.7262485461144899"},"_hasShrinkwrap":false},"2.13.5-next-1600977565-3e3b3d8b.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600977565-3e3b3d8b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600977565-3e3b3d8b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600977565-3e3b3d8b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-r8fKO4B0Cx8Y62eoMV2oL/2c/fkV9ZNJyi4Si/FRm8M9263KWV+kelNo+0t+A3jNOetnZtgV4OUGBP2SBfZhPQ==","shasum":"eb3ecad0558fabb27e29796b8f9af82b93c152d1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600977565-3e3b3d8b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbPsRCRA9TVsSAnZWagAAUZUQAJoXBUACCZLXLoWEE2pP\n43DHrkMh6hZaQTMHg0RjnLGcupK03iCpkvdc1MFOKpggKYgNl4khfCEQa4mS\nutW9qbWZ+HRFnlfzvusn6aw62xniDo79lVoCySvV3WKU1jGetvSaNaEfcVwX\nxXnay80CZFIkVj0EgR0+zvox1oRgvOJyO1ZKR7WccIayOkoIAlVEDwofviAC\nzgngpqOQ3WMT7y0RLzz7soyXpfpNspS39heHjfxsNXBvihKG8qnsMX7h1Tux\nvYsOM8a/Rqwbf4R93repukZFTtx9ZmI84b/VuJaVdKuxtHmC9r0EXPq6OIXT\nIvGQp5S65GounH5tvAxs5XK+y6I+zXcmPe3E9BK0PM/yXLCQXuY1xxX2ijXu\ncM6vhkw9JrNzCkdi71j0D0wsqgzwfyNgywLEnUt4549oTKhDdjZdng8Q0qqY\nN8VeGUVRqNSEYnJ3OqZ+m4nNjaZe+QFxelyUwYi44TQNr6qH1IoJiALbnUK1\nPADHOjYoN7+K7WW3roDtuWuma3yf/Vz2iVXBcHov/G0vbm3PlfulHUFDE+p5\n9EEI7aSkTzb3Ny5AtCJFhQcqsY07uhhcYT7A1BwBcUHX+8tEik0JyBwiswpX\nldNiu+wpRaRh9fbxNoIj54POoSR6Gv+ChLqwONZcr0yee+aOZLzmuGr237GU\nZrl4\r\n=O7kc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICbUCMgS1Gy/nQRHvzgbiBXh141qvywbLmOpG1ENDqOvAiEAwD/uSZl2WHMPvgVvFgMuKTe9tZuxiXwTMZxrfHr6dZg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600977565-3e3b3d8b.0_1600977680793_0.4003217530568772"},"_hasShrinkwrap":false},"2.13.5-next-1600978282-edbfdeb6.0":{"name":"@xdn/prefetch","version":"2.13.5-next-1600978282-edbfdeb6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.13.5-next-1600978282-edbfdeb6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.13.5-next-1600978282-edbfdeb6.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lPCxCNAIO8ngksSpe4ze7mD62wSbsu++yJEpRYyIUDgR/UCa8DH+e8k+7PG6SxNqbTLD1z5Vnw5KEPBd2e+1lw==","shasum":"e423ba15317b5376a01fe916eefa1de34afc8ead","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.13.5-next-1600978282-edbfdeb6.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbP3zCRA9TVsSAnZWagAAtXAP+wfoiLHhz/COmL5wQOpg\n8z7Efoguz2YK9vhlmFLlGFEOHHJCACMUuL95CRRNXn5s9oeO1nntJ6O3Uzts\nx3uy4IfY61tB/5ohP+USpW/1XdD6oQLMabKsOSZg4J/unORiPoibAbOz5CpZ\n7jMfNZ0Tul4qK0SJFZATHWYgt/NO/sPhPTHMrmRVpECO+g3TtztHhDYwrh7/\nw6XkPkNHOW6wTSttcPfTmmab1nrcbfg89H+mGpD3l03H+3j2fHHpvErbu+t3\npgQ3ulRvN16FItWdLPaFnSaJ2YKpun4YAcCQlvhic80elTEZq0OQzRZOugLC\nvmzF1tZ/Jq+3MkZeocNnkY/8wjZFqDXtx5DqQb8UjwxaTlOYO1pLep67tw6T\naUOMaBx9UaL25dr9do+LodDAsT65lCMGw2am3jd6TRftU9FnT3BQbTqDu43P\ndzDb49S0ONX7WIKu4sayoAQ3BWQ+AmXOa1Qlc/1rmZx+nr2e8PTse5qeqhjt\nWMVF5TaZ6rie0BLH3hOnk14oYIUwtC/DAeFa2c8PBG4c9m8Fk2vWg6STzZiG\ncwzKOVC2Di7aCP1J7BEoIkN7j3hKpk06EYoUDrrHOrr/fgQ5k49mAl7q/1h4\nZ8153DqibrRvvnzh6V+Jzwk8W78WmzlX0Xj3l+Oy3wP55vpbjeDrgqGaJoIi\nPR/D\r\n=hrJ1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEimVJSiAoGqeIaN2HgHv2OiK5QOfrFXUhv/IJdOyrvbAiEA1FaYvETMNzYa+9kuRHEnmf9POGLfNCo3WmGZ+HOAQwQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.13.5-next-1600978282-edbfdeb6.0_1600978418661_0.7277289644595359"},"_hasShrinkwrap":false},"2.14.1-next-1600978364-772c8621.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1600978364-772c8621.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1600978364-772c8621.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1600978364-772c8621.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-c5JHi6hADa0pMHQJmi1mIyL0qFkzpCb6jTX+dcghzvivbg852fvsWxpwZbDNnjUTkSc7Bk5JpdRseiGrJf9FkA==","shasum":"badccf6aa7789d4ff5d038150ec9cab3879c023c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1600978364-772c8621.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbP5GCRA9TVsSAnZWagAA3z8P/iWc3U+ogtzp7P3ebigV\nLuz2k9scJn+CUUhn3h4iv7cJRnCjTWh4OCaNaNrpseSvx/WFcGNK66RWnCbV\nGg2tT4E7cTSCQrypTeCD8Y/6vJIAojOYiHU3TNE+U2Iw4FKnApHVT1v0V61o\ngb22KoOybH1K0+ZcjwfrirylctWDhboHOswDUTu4aNyXgrwh00oLttcwskVg\n9qAgwRs6auiGa7IK1UQw7ttJ5CyKMRQjOBoeIaIWjsiix1tXgVh7BAVU4/6o\nMKsROmdVeKV43Yi+HZNdBTapQMGMVDV1wipBgRuQ1+ByAC0GLNQZwHsQaTP8\n7rFlPJGxI7g9FK3lTqP0xTH4mbkkngkQVVQd4CIRqglrkjzEDFfrJOqxPLRB\nkeg+q2jQ8RG216wg0rxKOboBDm+xq0A/ycdQIlwwX1vwhVu7kToyoR+65S7D\nH5CLO7iuRRD7osRIccCaovNtsMIoChoZrUuZBRMKa8/dU2yHGUuUacTfpka2\nUlusXfu5XJ/r3wERV89g/SaVszAbOVzt1rq6+Gg7YCqVqhbSihjKWQx0rELE\nWGylzHWwKn3u7lI4J/AfeajxU9BoxqfV8FZoZeqwmovPK/maUjCv+f+md2rI\nJHmLTXdnVDM+rroosoPNdVog8WnNP23Fc9smOd20AfQJajuy02IanAO9ewJT\npJhU\r\n=T3rA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2DBkWVY2/6aY5gpRmtxo1ADfHYfXlZseuO49DlxuLrAIgAL+qiL66xOtnabzWafORsk6EqWFGp294hbszIdUWgqc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1600978364-772c8621.0_1600978501832_0.6669334212242064"},"_hasShrinkwrap":false},"2.14.1-next-1600978429-13563b3d.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1600978429-13563b3d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1600978429-13563b3d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1600978429-13563b3d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-q0kkGh8mV3CIFQLZ7/y67O/HX1F2K3cF+8jCLAPyBAgql5ui9+PFS5gwh5/gE9Qr14VUMakda/Rjz1SfK3Yxqw==","shasum":"e37667a701807965a68365145686d3a46b968eca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1600978429-13563b3d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbP59CRA9TVsSAnZWagAADxAQAJG9K7QJf1aJ5LOVbz0H\n2dTTo7TR6u42nyGnPtTyporYm/m0vizEbCIFqcR0aABsNiZSNwXDJaKjPMHO\nOluB9TrOL5uOqh+5SkYf17zDNm/+yhhxWZFcNsRSjgC4BOfuKjkZOM1hdgif\ncNASjheY6GLo5F8EJ84HKv557U72E7ee/aUGupnFsdisfqiY1CHuWbbjlh0y\npEzB95hp9mI7vDZBqiV33WYLVdtHfrf/c2Gsk5fSFjYWt3w57LXYh3Mge64Q\nI13Fn70gCclSVZFTwt93y8kvzBe1CB4d15u/AUo83FJQqgOVs3URiPd4uQC5\nipqy+pfKDSh3+jwgJTKNblgGpbm4rtc/3T7p4HJyzRrMvTi3SGagECyWO/hT\nsYZLilcRwycPJIfxQDUN28xbj137U5DXdVpxnleNXOzIaHfqK1/tq7M4fCDY\ntfwvagSPIP+pS84a+25G7BkmigELGi/J/5NrcLqFPbbEQY7b1XQ4J5g/hx6G\nZwELm/4zrwkWXTBigYKev5ciTOD60nf2MjvZvfNpQF5qA4168SJsobtUDsSg\nYH1wbXt0Wkr9KCrZNdD/MsQ/EsOfzhIpNs2xTWONU94sYTzZk6Yu9W7XdXlw\nWLycuPL66W8oddf8eD+YBjqefn67jK3iarAdtjEgYQqCwL8r1z50ClI7icyV\nnUXX\r\n=BTxU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrUCj4rinrI0KWYz7kYWaEnBb+2M0+OcQ1RR5uwI4jJAIhAIdhwkmeneqzIKMwrzROLJpokgXYjhJGm28zG3TB72Wb"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1600978429-13563b3d.0_1600978556839_0.8889324434032728"},"_hasShrinkwrap":false},"2.14.1-next-1600979121-49210b98.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1600979121-49210b98.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1600979121-49210b98.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1600979121-49210b98.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ARW4FDh7qvxSm9S/olzO2HLN2iOqxvAAjiO3zHMo9zeF0qARioC43BeNWLJiAtclGzXATtVy1c6RV23pJhZLag==","shasum":"5e6d1ff90f51c096eb78284931fedb4819cdec4a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1600979121-49210b98.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbQEmCRA9TVsSAnZWagAAQTcP/j7S5gZCSkFkxU7MaHpU\n1rGR/+Z2VFxlP0FDhLijrWPprUv+L16zj2XqQRhXvg7hzrmVnV4JqIob5EZy\nxnG2EkUnsuuUH1DX3D7JG2Hbkd9d8wopR+Ws1aiLUpL0XPsnn7JATIPx2+lU\nPhpxAmLRv+XwW+cX90u312kQGZI0zUJgA8GiRfGl3+4PBADgWjMF2uEdaSFc\nCnzyXJFUGkT5mrJ0+M0k84UunpkssBpcapKTsR/yk1Fk8hJD/puBoCdpN7xw\nmQTl+aMbm4WpRLUlM3+WWrZRc33Uq+slrftWS5flvAAiVVKjleH7g1bV3jbe\n2KgzOKZMWme3q1JrzutDMO2se6EWaMvpPWMpuZ2MFy5txYp6pvj9TDrJKNAK\nRS022x4NIZWXWn8IgzkKWO99znyeNGnc1zx2x3v8TLFfPwvZ4cUvVQ3NwEZw\nbNvUHS5EogJ7OTg2JFz63k+OdOuXQT1KeIBOU1veAFtFZYux93pLJhFd/2/8\nUDQm71sNeIZ4kFmz2DnmpH1mMKney6rZEsHoST8u1KGTA7zjTXMiZ+t6ABmR\nHdQ7IIxNtbbwgjdulMYz0hKiJFdvHYxYk7JMgnEYJm1taLWdo8oLh94tUIx/\nhkPGA72sc5QJFXLEox9ySc9NcMYfOr7z3ZlsDGcnbF1KqWu2HD33yoZh8il0\nZ50k\r\n=5iCI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtx5kKLv64zYXEYTMext99qU6KLMm9oLcLM2uumcgpJQIgc/W52gv9SjMrzGVLHhKWA7gCQgh0C0ZpWox2WXVX2LE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1600979121-49210b98.0_1600979237565_0.2681881495160745"},"_hasShrinkwrap":false},"2.14.0":{"name":"@xdn/prefetch","version":"2.14.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.14.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WiXOJ6xhKuCFB2gZ21qzpfrZkKnVyKUutwFLhdZ4IXOTbBspN4j5fvYdKAbWmFR/Z4/upkTq7HGBz1wsbboxXQ==","shasum":"215d120d9b76a7bef7389c0afd585ad3369dc3c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.0.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbQH7CRA9TVsSAnZWagAAPHsP/0etfRxu/DUptOHcfdrZ\nE9L88W+HWOao3Om48Q/jtAAtSBFhneQ3CQR4UeEKJlbOUnms8B11KNJCDRG5\nftV9SQGx0GWhS5wc9TI/Udci6D8+HlFVJgv+++eJsQSjY+k0XW2/3H388wpC\nISr62uKxDRsJDpAjOgAroVa+6Sg4k5IQ6M5EMLKzaWCqoSzMZqcxItmpWWs4\n8AgUNPibo+EC0bQK9ujNbl8y0MJwe9fOTViQ0ZohJFPa0U3U9l9yG5R0LaJd\npae7+29oC1cajbRzd/5lzVNBVzYwyJKukUGoe4SVCflzupo76HOCgC/gbTAO\nmI6ebFLwexTuOkZrHZc4IdrI2nrNx/fAdJFScNCGsio7weX5Lu5MNHBgJdk+\n3m167GKpQc/tBeA8khBIiIVDNh0yJ+L53ysJZPrHfimcceS7xm2IY4akP9td\nrKTHLPD9koAhTAbtI9cMzmBlS6U5DhTuBjsXHgsrsD1eVsLUQXI1lId8ltuL\negTBtCJ+UZBXeOdRI6aPXWTrQvWWeOlog/0PYNLwOjPg6vDRh2WjF4uaR0cv\nkFWwElCyNpSjirtUregv/3ZyHU7MhrAZ/3HH7Uj/8mpR2XeOcl2fIkcAU1KX\nM25A7PxyXC3bTkMLTPsIaCSXjV0SdvEv1IX/WIF15Mj67VM+LbYaNvzj8swm\n04JL\r\n=Wasg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDa9oZ+vb5GjMrP6Ite0wGjIw7aotYp/LGtgWCvAXQGMAiEAzS0chS8vNE3DWrMnuHN6l7bdbyzbp9Igt9Rv+7HPGck="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.0_1600979451457_0.5610519653209145"},"_hasShrinkwrap":false},"2.14.1-next-1600980161-043ee498.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1600980161-043ee498.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1600980161-043ee498.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1600980161-043ee498.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3c+3GHmK3hPZXoZHo2dl95WxjRQ/1lKIoA8tfIRde+f2sPWPlz8N2Xa84tMB2wgY2Fx10MpaL0RQZYUqFuzxTg==","shasum":"d8e24cb7aa6ffa33031f9922e89a6f98dad7b3c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1600980161-043ee498.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbQVHCRA9TVsSAnZWagAABFEP/3mTq0bSsrkMKDafkDE/\nOlpC1eaUDQkcmqz2bSEcyLSUO/N3xtBte/H4Yfwa4pjdcAZAKq0iJ1fQC+e3\nVzbciHRRyRqwEYcAi/RunqgI1CMlRHCYtfjjrzqAqUxg4o3aXJel6AH/Bs5U\nc+x+3NHkPmHJ8ycPtm1PTGNxZffZR8Ko+6pwlSK86pwmL1+QNNr1haL41GPm\nBMzdbYV6hYLj+JAt6owFVwpkx539kFKd9FikhashDIM2G6sYcKTilRfJX9C1\nYnzhDChkcrVwmqu+OI+p2BgpR9ba6viXlUTewoppdbFmoT3qPMDEGyWEW1uz\n9WW4JfFO4R296ApuXbO5np+rj7YoZMv6FHpr2b2Dkq5yDMNKUxcqIBBF8WfN\nwSognn1P52HsPqpYnG+95vpc6I6HLmBjhgWE7+QhjObCOHmhkzO8lnGO4hjh\nMO67pY+3P8ZLLnp/psxx92vWeYmf3J5OlHhoko6cR9eXrfuwBJdP4jT6EBDb\nhR7ZjFi2qI6pVzOfcz/CgG7NOv9xMsB4U0yOp3TRpdHBPcs9kQF02C4Sm1x8\npWmhXThhNl5khTIzfp7Swfz5u024drt2SFQ/TwcyEV0BY3eQvGiNNwUcEBsf\nT+AMEFjRPDWGrBxBqfUHubo8tDOVXYdbXWyDO2c6wLLOXwLkOqUV2eW/kNQV\nXpgR\r\n=48Es\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEmWgDnZwxZcfK0JElXKtJZxCu5QcxOcuWXLGglU7QHeAiBnK5L69xdvg5uybHWf++8EwrNDG2iXPkg0jV76iwH7Ig=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1600980161-043ee498.0_1600980294796_0.8002127954996969"},"_hasShrinkwrap":false},"2.14.1-next-1600981401-bbefde40.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1600981401-bbefde40.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1600981401-bbefde40.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1600981401-bbefde40.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-H9yUtXakyJ9hQMxGh6XaNeXxCIXbs7RaDuIyjUisWCDsCbhuOJ2C9a7cainTSkHXYo9zgtP80t7O9ETNFn3BjA==","shasum":"3d26f291db2dec61ed4278362320fe92c81f5c0f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1600981401-bbefde40.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbQoBCRA9TVsSAnZWagAAHNYP/1FDcMS9rp7C+SpQAXAU\nFgauzaGiNMj1C7OfD1V/d1pXLIiLnDALxnc7uB2votef3MJEn4U0ni3+7KQx\nFCcFXUj5fT5/8eQuI9WsXaoD31TAO7jV/es3Ce+vzdMWbB/S7wGF2uPaR5dE\njhGXBUi5NmWfQ5/fL/vRLyYQ0VjkR/dTU811cmG2Z2/YKgJlGx0Jw/C2STB3\nO+pAPF2F0xEDdAfP81V1cw0RSCXwV/maWNHXuyEDEYOn6p2TbuqNW4S342Ie\nH4lGxecmABP7wLblte/PUKwhPD7Zeg2qVZfSDhxexDlMPH5dxpZyd02gSuzn\nAkPwglzAthBadWZ7rSxeWUG0QutLp056mKhOg/1qfofpklcXW8IdB+83ndM9\n68BB1j1kqiduMW8MyxmCZTTr5SueyGBxtJ1XBZFax6i2NiAi+SIrrVutuVvS\nKUI6rpK99E+Ck1PeAmVumllosLRwztCq6VMhS6Tkik72mSyOtawPGhQT7+Kt\nNC02HZQHpsrnidXPbWMBO8i/Ihp0RCCmluvQqk+qJIYEpcVTkcDPSv1d8peN\nPZxp7VeJdwoPgAWlJKH45WHyDdJIgVPNlgAkayURRcUnmfqG4Ely0ARy1vgN\nqIWvLXfFJmaPzvPrfGLnsoBEUUBqsH6BZ52puu3j8CIPtIq8MRPiyj3qhU+u\ndRAm\r\n=bKds\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKD+kk+DMW5JbJuvGfDmy9f8BqzSf0W1RUigdnC1HA3wIhALpf+Tzxct4jTfT8W4o4vxNMmqWtlLfdjeWvbKyUjnf9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1600981401-bbefde40.0_1600981505147_0.6057564298470033"},"_hasShrinkwrap":false},"2.14.1-next-1601022982-3ceeea47.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601022982-3ceeea47.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601022982-3ceeea47.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601022982-3ceeea47.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0zYOIv5b5ZCmMIaTUzE/EX/a1yKDeFga/+EJsEovvg7oXugZQZMJceiSwx1JBUH+2nnunu5r9ql1fM8iY+aoAA==","shasum":"2517feeecc12880d8c83ae030ec1a58b21c0ffb3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601022982-3ceeea47.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbayOCRA9TVsSAnZWagAAq5sQAI98esRk3CdlGQw+vmX1\ntQrOymZCcjcn1KhXkqOfBrl2Pw6kdMJRwxteI5QHhzGAW27HbYp3q7EJCSbE\nTHhyHSmGJ7cTbN1poWsmreD/7I/GwgA4rrhBROSpwtdyq/NkdAxwWFipS2a/\nF+/SojnrIVF935i6UqXtkQFoh5C+TWCOuzgcK1OS2lhgs2FnFgOamuaUcM0q\n05wsoc5g5rKhHmzIuEtWS8OHQFIA20/rmX5txGg4b+Gw72TCoFvTFflGMSza\n65Tn9Px9hzVO0O+l6uXBZ3uwpLUd1+PR/s2lRUTYPlwPcLeO949BekZRbO7a\nqGE9Sb4r/qK5i0K0fDJqd+SlgkczqzICWmqbml+IWS7NC+xEYflTHo6/Ar3Y\nAu+EkZbokU3ph/rViugjmaiGFtx5vp412URqMoIH5ZVasxqnNblRnACTEbWb\ngf7TqyaxAWcLw+iQc9rmr17anQiURFRuLzuI4XAu2gQwhgJEZng6ylL6dPE2\ndTjd+9R2oqRfDPaFt6av50+LyT44/Mzn9EwA8+th0quEAnvhKqAAiu0Yv8lM\nal3wT0tDXZuzzmBqnxhqpEW7n2+atdWJ6Urry6QOLqTF0kfTa1YphbcKXNis\nrEqui+5tKLIlTgtrTIvZxyz4KTk4uUIsZ9ekkkLys98QRyXzfu7UzuLoaPbw\nti6i\r\n=3NTf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwKnZ4NwisWbVtrd2bnLMKW1Cpv190QqYLFURSjSfSmwIgLTCSyoCfG6tIkUtHMvkGaUbINGVnLN86P7Wku6EnJIk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601022982-3ceeea47.0_1601023117561_0.9962211835946149"},"_hasShrinkwrap":false},"2.14.1-next-1601028264-4dbe3bed.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601028264-4dbe3bed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601028264-4dbe3bed.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601028264-4dbe3bed.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LVsczuFnwxjffXyP8Gw7WCk73EUqULDBNAhZFw8xT511LFUa8XqBQYr9GB2/SqgOZ/sR1UsZp5T09o2R6ebQSQ==","shasum":"2c7af36b52c3ab2fec9794f18a6bf53ce87c9e10","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601028264-4dbe3bed.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbcErCRA9TVsSAnZWagAA8TEP/3NeARl1vgdl+aTqO4eF\nx7Gg7uD4CWl0jGstKrW8NzCmi3wLmIp+QknYCFF0php/nIXMqZJyxhTduASp\nx1EWUTeGHLv3SQ4B7Aq9E/MhycPMI6g8JWKpygKMX5vuohZw9ZZkC0VYlSrT\n6jdKBfitlLTSerRNjkjpFDPsKHGJelmV59Zys+iuqM/R/lM/GdbdGiHKL5a0\nDqgDujJvG/jJBm9hZLxyPjWWm/jKvaNfSz9/8oydq4guRKTfSz1SKjUwOYaT\ndAXPikSNP+8GUFpkX1Z7dljAXVhzSF6fp+YyI+jWL5jC/JHArbfsHopubnsv\ncJA2sS7nB45YqPkGQAM8v9Em4GFvxIYe6GtiCA2TbbV3wMbvlWYOEhHwr7+0\n29QXtbH3fjsOFq5edgZ2L0ARGDDfZkveqTQE8bh1nG1eSFX+NXYQnVY2MihJ\nava5LfOk7m2llL1Z7K6fl1BESVg5LwA4abUaaauiURh1/GpaBdUrjdDauNGs\nsaXdpXj6J9MXFLxXM4aO6LZTG0Lbtu9x9uflNiPvGPP6ujnG5fosOPcBYPam\nFu5lHL0NdDwJDQLkF58bqii8W9cZM5qZ7cOs1BapR2qGWpeaXXeQYUBfFXUa\nO6iTBiGqCueHU3h3MjNu3vqx9sarYukul4vrrWpv9/7y/wvNPNUcs6T4lpbD\nbE0m\r\n=6YVp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAibQ7IStENOVm+PVBzYJYWFiKwT0/4tsCbWegGYBdU3AiA+Lm7E9L7l6IYHcpnLVwHqgQ5DSQPOncZ+l+CJC1VBNQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601028264-4dbe3bed.0_1601028394980_0.45809183927800623"},"_hasShrinkwrap":false},"2.14.1-next-1601028494-24fc3cd0.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601028494-24fc3cd0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601028494-24fc3cd0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601028494-24fc3cd0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-03dedTM4PQtM/3Z/qiTU2uExYkOMK2zKwihxuOuS9GBTSDLTHpfaqWL2T0H8QZczxjQNUwsMKDUHfQK5n3i9ow==","shasum":"a7d292d923646c61d3a62ff40b13aec24134b3da","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601028494-24fc3cd0.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbcIcCRA9TVsSAnZWagAAHboQAI3XdxKDge8b5SXEF8oC\nwdTLX7jgxb1/q8lFUoj1/sFK5D0mbRyME0kmCVAquDughaTdkvfkYVDaO2EH\nH17Tqe1I+415B7RrggG48RqBp3kDJG1R8XPAN+NafKF0mbVcdvYchit9HK8K\ndZRDunVUeDJKJethoJI5aworneYMtA/s69lJe3IvUsBFFoKLpWjXk5ahY/wN\nMCMsXm/FRzy/gdjkZYUmODCXp6uk/jXgIoutTZ8eqmAUwAFV6I10dd7UqwB3\nyhSrym0w3vWQLhfVGaBF5y6Htioft5Y7ggEzzgcPWY/+/q7Y/6MlAYxl5gZG\nk/Ga8co0JQ2/IRIb+g3KFvDHjQM2v32+Zq+WZVC/OhUIr/mr1DLM7++tVTya\ni/3EQediGs7OqPrryjCnVsV3PH526+Ace/inM5LjwCqkqLwVqAVwjqqs3CO5\n6jEOi9gq5nMZe9ROn+ZTvVmQ0g/FOiSMqxf7QGTFCTx6fhjYs//76faBa8fF\n/hQspT1L23hkJZ8SpJQToTruft8fmcG2sGHeQXbOBcDNdlSyP11vIm4UB9/b\nVVd8D0AwBEj2GfL3NR3pRPqmyChy3lFWK4bq+9bxtNBt4vDigd8BhCD49ujM\nyQb4pmGwZpqW+wZrIx9DnyI4Sr1NiBXxWfdHJxYYtnrAukAiZWiFPDxat2xN\nYIXf\r\n=FZzJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3VYhTo9O/O04d4S2OFuPIhIERwr9St5zNTieg3qANwwIhAOPa30DaLxt3oxGRoY/XWWt52gzBXgr6sLwIbpXKV1fE"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601028494-24fc3cd0.0_1601028635674_0.8703890131813807"},"_hasShrinkwrap":false},"2.14.1-next-1601029015-13563b3d.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601029015-13563b3d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601029015-13563b3d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601029015-13563b3d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DdwG3PAj4YVpDk90XL6bL3SNkSNcGAKZvDvoV9A13uwo4Qyqbfn2tFZ4wE3BxesUJg/4pwTkIbl6jwXgHYpBrg==","shasum":"a7f47af2b0f04d049433f87d38de8217b80023d0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601029015-13563b3d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbcQWCRA9TVsSAnZWagAAzIEQAKB326Yp6J7WPoVn0/Mc\ny1phtksfLz7dsja610GrYRCJHHx3CpoV049je2bWGj0ml4Q6qZb6vNhHXgNU\nx6Xcj1L3KTqa91zsao7hPOMMaNOMXfUYAcA8a0eVgxb///urhN8P2xhx44KP\ntg89Dl0YH81Af7gFEPGvOg1fmspMvSwapV7NuO33Ub4PEP97vONIzBunWLLU\nrePwpf7hjxQlkRnzOkg8+38s9PGPMsuIcT/5T3nOjqWOuZxsRXGuEcMeUcpq\nYuwT2pubnWI9vk9MYbyEfdtK+aLcRihCAJ+7NhGPSS3Pf6Rd9LkIfmmbvNJN\nyaot3SNqR+2L9fUpggyiMx2UcBkVlkvQVuOd1k/tCdxmoaDUAHGAGg2aZ3i4\nDzWqa1zMFYoSObdZsnO4FjFxmzecqUOhJWuldUxC6NRXktVCVWzCyi4X/JUM\nJdDHijaYwLo8WHwa5oRFOjwre86D72JnLPeItdPfSiQr/GdxHdXSWOx3sF+U\nWuDM8XQ6iGuAvjqdCP4J3DuyE3vhwV86F4VW9Y4gNbSAv56MfBm/NynRRoye\nLhdvv7oqv+7YNK5s4qqz+fzRFRc/e36gbMVNL1bFAheKVDO9POpfITBzwkrK\nlMMWXmJTyfT6vvnP4ygVTuzWSPXlWJyW3354YzABpBTAIcMOhL9bPv7C25Bk\ngV/+\r\n=k2/P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUuDt/FbBWAhYeddSBE3nSNwD8pGBv38GD2G4VxMTWqQIhAIfNnxJmV+dfUG1JQSxRJahFG4InyqvikyLy3pBX1Ijy"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601029015-13563b3d.0_1601029141888_0.09623222591869252"},"_hasShrinkwrap":false},"2.14.1-next-1601034400-769533c8.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601034400-769533c8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601034400-769533c8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601034400-769533c8.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vRudaThQpKmUzpUtUuL/A06mIQBoWNF47igsTmifHLrlhd0qAngpdWtE5U9QFYZoj2NEas3crIV12ONQJ1vErA==","shasum":"9dd7873ba93c431e8ddb057474e74e91c3b0749e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601034400-769533c8.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbdkbCRA9TVsSAnZWagAAOzYP/02qbDglHdLULY1WwJJE\ntkHpmXzFGlAQl+h/Vt3V8EhBnKVN3lY+ob9Vm3C2M/uXKqy3IQOhNrrGW70C\n89mLHvs4ZyC/GY9YC3WktwhUjjFi45wHAKnWqTUpd4Ni6oysVLythZviY434\niMPkgqeO2+dILael3LbAiyvT15lrvHfTOrrityyFKCk5haoULPLmLcZGMv2j\nK+0fFzeRl4bizSspj9UerLf9B8EUJ4QzEzWGcs+iv/rsTTvuSwfSH4E7r18W\nwa2bvGJRelro6BWV8INSQOZS7L9Bcru1V2B4OlzeJg/cY+2RFXC9hWBoZeQv\nYFFeiFlxgxSAVna0I0v3CH/1TCN9Xkgs9/Ka7RG2p+c/IAl1NmEw63D6Y9kg\ntvZl50BwaVNICu1sNXx8vOJ+4J8vETKbbRr47wx1sWgGduC+he293a1d9oNm\nVdiK1OeMYet1LT24zPq9T+MNWwChueR8KqAkaOOavLoBomQOxMx6qs2P371d\nganXbBEt5Vz66HmFaHpq1+UbEVCHX819AEXwtRiaG8zclf96RGyetGI6NEpZ\n2NKaQFLdtd0no2mgT7pnHg7SDrNLoK7eAJPEnphFA0qgZTlfsXe00b8Ka2vn\nm/GQFXNSPOYlFccKA7WQRQ4N1/8JWOlGCOkhFpFkXbJKgPDH3s+u5dEgPbbl\nMlV3\r\n=gD8Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAhK3/xE1qh7xFSpXXYxs43+V2qJbIvllZEhZtNKWgTgIhALiSRqnxGrEhsC1u64hvCMhm579Ed7xdwhhgH6fEFAA6"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601034400-769533c8.0_1601034522892_0.14977155995826297"},"_hasShrinkwrap":false},"2.14.1-next-1601034822-f746dfa2.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601034822-f746dfa2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601034822-f746dfa2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601034822-f746dfa2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-gIb4XqrsR/Bv7/9ISKEa7hde9yfoLqtYnqdH9oFjG+qi7fnP8mU6MSS/d2927kqfT6bSoVqU7T9A86zS8o0H0Q==","shasum":"3cce0deccdcdc26f8d90ba6c5b6bbe6e10b04dbd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601034822-f746dfa2.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbdrPCRA9TVsSAnZWagAApIwP/RMGHTXexwLJa/Uh25mG\n7IS2HcgHMselpwFmzr7bih5cjNca+a/uH7bnsH5tVBdbwiTGZgNiko7R125p\n+QRkiJRpGSKalMQ/GVK91Phmv/OzSJVuQHCgBqr3jlhNged+JLLqPsDR7Njw\n3wZh46GU+ESURv9Jzh7cSgiFXYEow71uhQ8qRSwNFP8kMsVueCVqN8DkQXF2\n2UB4wXzbSK8giOwIrsirvFa7txOizlAOrMWP65BnJXrvlOPleWRAaw80SPBV\nIlNtm15PzoMr0yVtHaN64KQOwQvDkZxf/e2SMdnykJONqfeNLYSOImlKx3ba\nUdlwkw5WxLeG+nxp60/849tXZ7d8Eply0Da/4AhwRi8kSbkHqPXzSnuuJllq\npvwcE1MaZNGlc6lGt5+KlkscWwXLIGW0vFx8s8rVY2cSxpcI1ceCEr+/0ZZH\n6m68OZu+Fu382mbd5LBF0i+Nlu+LmNBjCX16MBhlDU+cfSezQsiA9qPVEWbt\nEOg0sZdWHoFM/lKYCpkFk4H+Bg/GFcjonOxCyu53KLrmNneeTvVsgqqxp7uh\nY1IF88dHRFmJ1wzqoXC4HxeRGGm/wE1KNLKeyYr75fZ1K4f2/M92SCcE4MJJ\nG6PQoQj0bm+wzfI7QmQ6z+BkirqLGblHSsJ1gk9vXqCoTRxdTrnBbqu417dx\n5IXG\r\n=mSGP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlmm7SU8tdDW9ZneGv8LM8cjYvukqYpNzQ7Mp1AJzacwIgDByhwdgs2eVrB/1DPu6B3EWoi1AWeFlku/xvUhQvtwM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601034822-f746dfa2.0_1601034958959_0.26040474770117283"},"_hasShrinkwrap":false},"2.14.1-next-1601035001-08226901.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601035001-08226901.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601035001-08226901.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601035001-08226901.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vxTxh3/SNDP89xd8dTN792TLNx/RMBNJGr/NepAKGSu2QJXqaM1edhFqdYKZSIc9N429TGruwl9kZLpGTs0YnA==","shasum":"5b83c1734ceb56f664451d082c7b1392b2fbea49","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601035001-08226901.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbdt4CRA9TVsSAnZWagAAgWcP/AvKF/p6J5XvPQ9KdyM2\n6DthDHzh4o4W8Sh/9VvVedcox/edDal4qNA3U0jvKjXtW+0BrDTqEVdIswZX\nWo8X9myzjz3J8wGOnUgwdanpN6DivpKMt2f3zw5t586iO/Bvj57PePrzw7MH\n6ImqdRrR7uQ/VHgVHf1U1MbXkV3e0yzPNhvzPvMRnlX/sjhpEZJj6lvFAac4\nRmF3t8cE9AKuyez8CrUd21okw/C9qQy0K1elNouMGT4xkcoV4kiQPoXg+3PG\nsy81JoqWAjTj+aK/wXjl8XQ286U+Nx8RDogP6A8EqOJS8BwmEYQneIBZqmIX\nsbjymldwKY8PRdM3ADmp7kLpiXTVv8DmpE65LpW90PtmRi7sLzwNMEukzl+a\n1bvpfQrp8+PKJmBpjLrTY3qGUn8Pq0Xmq0OjTDhS6UD5cbVQIj8Q+VYryiPC\nwcWu4bruxik6gYEwBKpysMI2EnHOzg8tN2mw7PRgfRl7PsYEy79OaeC17x85\nBTMk8xfeHhgZGq3/xscYb/akOTDiX3HFj7XaN+aaewYEIxJ8MY9rNvb19uqs\nWEgxx6k8cK6n98w4oF/3gok+Q7P0dgdDTkr+8HDE/+8XgiWpIdLrmfvh97PO\nWRf18MZ+4/YQKtI14zBQmrjLI3EhY/L6pOHsTuRH5JSim3RPoiWbCiKNtozQ\n7bTT\r\n=Ky4m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBAZrSgFqsjzS8+p2Wld3lJJcEoJNlzehbrmlZes3AJQAiB707/2TyQ1ygEkBPIvnulSx6iAI/ozYNtxjxGjKQjj3w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601035001-08226901.0_1601035127862_0.031577275517070014"},"_hasShrinkwrap":false},"2.14.1-next-1601036211-2319aaaf.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601036211-2319aaaf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601036211-2319aaaf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601036211-2319aaaf.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LUQUX/GKWnZ6QDQTmgq9+CnZRKxEivisOlkx+k7l2e4SSG/wQOAD9PrMXgKMMZnGv4GnaVKTCAsrTNDaQrFY2A==","shasum":"0499ed54048282e7a2e9b07a7ca741210a459922","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601036211-2319aaaf.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbeAlCRA9TVsSAnZWagAAv+YP/jCbG6md0ja7rrss2y2z\ndwcskIzLzErDWEdTYtyaR7JqF7VCnq4MoB15XDA1DyiS0jFn+mCFbh2+KOBb\nYDFJAJRhBWLiautl79tao6I9VQwTa+vdvqfwCud6V03oc/BFjIj7SAuMGRlV\nMT2uV4TU47VlVTDDgdZ1sKnjH6IgvjL22UbD6r1qsdgcnbeTyF/dijDW4sos\nst0yZ8yyZlkBNfTCgkHYLKBNumXQHsJ1ucuxu8/rWm08idAh91jImc3m6inx\nZZ2DWPOw/VtnWZmL0/delFujkaWXm2ri/FKDeU4gQjoOS0KsQ1/aumcf/ZE0\nJ2NOxUjXI7clPlSNERplrpBFUCwUJfZgqSo/yxumDZeuouWFmWtmXSNZZblE\nFUP1UTpmt2Cpv8ylpfGtUAhxzrEpRTDbbP/7yWQ2NwOox5ZLPu0+4tsGjRYY\nyIQueJPjILkC6V6a9/N01o78efiWB6kp7QixP8l8ILjbjyVXIN0pnqcN6rFJ\n/KPxmnGIc7AaqXRNC9+MaK1Q1dn58ooV7kbVyVovVIVa7F0M88TzRHUqVB71\nBQXF8cJt7WJnH723/Xr+NI9xb0eJV5VNmQYzd1YQ1FfKiX2Nmmymr5DEBOkt\nRTHh7885+ton9pFwIQT3MAxNlCGkNaNuC5OMLAGI2F30CGQ0wdUmLzCI0uSb\nZlsI\r\n=o4mk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICHdbJyy/Go5rKFguz/WKfop0IssnA7xPkdehWxPUAtWAiA52aI+oRArXMMZfBYB1Eg6b62ZYFr1U9Ukz3tCtWlANg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601036211-2319aaaf.0_1601036324801_0.8741158305368173"},"_hasShrinkwrap":false},"2.14.1-next-1601036247-35a4899e.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601036247-35a4899e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601036247-35a4899e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601036247-35a4899e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-di9Fg4zTX8A2NN2oIHK+aHyNs9OCyXpYO4O6Mj2Ez+bpVmL7WLR3H5mrqzkww6NsdzzVrSW6TDGzx6+g8mCOqA==","shasum":"8a23f273eb37b93447ec5e723ed6a9a30a33e836","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601036247-35a4899e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbeBYCRA9TVsSAnZWagAAresP/0MB/bLtc9PoHhD6CfYR\n8BQkJxsxq2EY2kkuyG4q+qHSCVfp8VFQNAld8O3GY57uK5myyS2VicFCXP9e\nhnPsM5ZdZ0vbbAjcAyV+uaqgfeo82KR2QLKGR8+yXXuUsSHAkWXRk/ygyxl1\nHYbLet8Qak0DgZYYJmQD1/B2O8MwztdX1pYqe6qMIqcvSTw9TTQN8cLER1gg\neqzxlClzJD2uyOJC0oj29ARJBWEZGepD96xryFAzB21sthoOsVP4fmSe8OJp\n0G7TPXuqPWjc4dDH0JICY0QU91rIOm+InjA7OMdZkqNPW0ZPpoWr685yBFzr\nYPkVVdxQ/eLt3oGwjmEQ2QW8Lexi980ppBlsrleknR1R4EyjXNSYU6x5DtT+\napttJVoy1k3rQxBcvzOm7It/aW31NqEZgN7dgGBnDnVkHEBo4x6SEo1r8T8y\nXashsv99lZn7CjFD+1k6jqnhgzL+RaXdmlHBDqkMEJJ+n4HtZceajHtxzNLg\nd6uwJho38466ag9Z8SJqncbaafdmBbZQHILO/R039mpvAThDkx3VSo/kWfW/\noBqwwF5YjULdrhvjtTxqG1WFxDQ9Qc7OhJvcZ6hYtWiKe9EVlrOCThvpz2zs\nBrl5nd4uodMRYjFMl1lI0MWzQMiSlYqaA1zvOxA8uRIKkjDFTDLiA5ayAd7E\n/uM1\r\n=2k1v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBLfKLsLuvzIaIhBexGeg6yy0ARfUwpWS+nwNdu5Rn3wAiA01zbdVLbHNralQddwhlA3i3b1mV+ntOHtYX1WeboarQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601036247-35a4899e.0_1601036376076_0.03765844382674266"},"_hasShrinkwrap":false},"2.14.1-next-1601038002-6bbf5660.0":{"name":"@xdn/prefetch","version":"2.14.1-next-1601038002-6bbf5660.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.14.1-next-1601038002-6bbf5660.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.14.1-next-1601038002-6bbf5660.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DTwAujKe4W7iEWdtDtJrQxRVBWPVKxewOwOMpT+Gom6qAG1BDYPAZxA8vcnZ6aZnlhrO3dp59ymxCNTqbZNdrg==","shasum":"4ca5bf7950d385860af1889cdaf217fc733fa9bd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.14.1-next-1601038002-6bbf5660.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbedDCRA9TVsSAnZWagAAlXsQAKL1TSbhvYl4Fymnnmpe\nPRJ5W/r2+r85ryb11wg9gNVhBXjUwLf0IIsckHw5fvPe35dEjaqhfWgA/mIP\nPlanSewM7mfjKJt1nWOUaY8vlpBeELSwzBMKo/mv8Nxji7d93ottYmhJK+nR\nPd7VvZRoXuKN16vKWC4/cj0rkA7wSQI9AVR5qdODY1iDXWA65fqYLmYZNE52\n/b4x3pz7iq1f+WIaBgMUYHXlDjkkFUHFp+pTJBRjXFCz2q6aQ40Z8wN0igXs\n842g1ZrdaA0k74QjS/ek82rkuwnB19GBLt0xaPmmkQLQn15jGFggmtjBUbtM\nwXnWo0IG15m57c0Gkw83T0Gn5ZUBxar0Kvsja0mQlZd04pYv24/lOg5UJFy3\nFxp1p/u5rvjSDfP3f+D/zKQ67OycTrlSE9WPFlC+GU8fNBhA1CUnUHQIAsgL\nqiC74WdpdbPB+gyK5N6sT12Xz+SblcAniP0jzkY+frnhUhotYoqhikQrrjMo\nqRctpe4Fzd4GfgSidXEAqb+8LpnAr0+CcpZsyxVSBkM/zO4He0aZl3t/5U9b\nbPy/NgKNgmMnAvP9WF/jMwtikUrYZMUmb4949nhxcRUGc0iwuhk+vnGCYlCm\nxgFktbBGb451OIj2diB1zjuNjqmc0QYp3apgn3YhuA/b21TQRaj3cvQ+ExZF\nLenA\r\n=RC8/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICcdV9EiHbYbfu8OWUu/GCLa21vw7VJc7A9oSUG82d3TAiEAsbvtEYI+gC6Sm7e1HyZzkO1CMSgBqyVKaH4V7YaKB44="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.14.1-next-1601038002-6bbf5660.0_1601038147200_0.36746971934395956"},"_hasShrinkwrap":false},"2.15.1-next-1601038027-fde1766c.0":{"name":"@xdn/prefetch","version":"2.15.1-next-1601038027-fde1766c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.1-next-1601038027-fde1766c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.1-next-1601038027-fde1766c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Oxh8qGFxbVODetDrOfPuQKjzo3+/UOvbqJr7gQI5bni3ELE6fNgSaWoRBxcjTy2qQA0UERpFDlRywxjuJ27/ww==","shasum":"afa82708fba5010f20679e2c6c2972467f6df4e2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.1-next-1601038027-fde1766c.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbedYCRA9TVsSAnZWagAA7lYP/RugVX/UbmTaeFbriQQU\n/OVOYOiMj7dPbOloUqeBiU8OR7nQKduJu2PP5dBf0nHopb3uSGBUUgxCqeAH\n2IF00YWYU7/th8e+rLi9Gt9gG+jsHatotUqG0BX0npppNjzkm6ytRt2UJsFy\ngZca5o50sZl4oVg0Y6GQtzyXlec0nEuFSnGXn1Cvo4ea2snrKNSWY1qMZF90\nxrKq/P7p/QVBhJ7MeROflpJRg53wx0CAj3BUXhxD/RL0L1PA3THaVH1MB1Wf\nKnhwFRMUa76oXt0DcI4yxKAK4Ewr/IpgSbxk3JLqS5EXHJop2cTRxgr4zWC5\nkWFWf8pwz701ge5baWrvbjpY8gBnf46+S63WDpbh/CAMUzqtNYno/F7Q1RK5\nIAZWl/RS2JutKrNlKCJwCBqhR7qHi3jNpbMUme0MayIDTwoKvnj7dswfER46\nJMvqpGN+Ti2GZNFcAm3LOpYv/EDUKZxXDfnhmp2AkjkeyGhU9bzfy0LTtzL0\nfen2HP8BMB6gHkGclVL3STRtcvD6DnaOsDr/izBmgJEEtVkYNTC+DRvAbpeO\nM6faUb/A4ZT5RSZDQaqahnv9Fnlw+RsDzClG+efpPqTsxmsYZl7R+pucFBD0\nrnvxr2bvpFeXJBXmAOxuM7Vbb6wLB3vQzJyQuuAlmySdpbBP5KIuS3Uo4w4f\nGduZ\r\n=WXNt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICyBF6j1a825dFv1FQxBROPMgJGBOFOXREVgsPf4Mwx9AiAuMJr01jLYnV7ferr3hUp+RLRM6ZXUuc2aThzz82xoaQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.1-next-1601038027-fde1766c.0_1601038167982_0.9322727429742415"},"_hasShrinkwrap":false},"2.15.1-next-1601038956-facc379a.0":{"name":"@xdn/prefetch","version":"2.15.1-next-1601038956-facc379a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.1-next-1601038956-facc379a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.1-next-1601038956-facc379a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9tIA+US3z0PG+h/RAPP9kGX3qIK/eF27g1/EayjOEZmcs3mMTgLBNBfhctqluPpmc3KmGo/z63vt9Sjz7heh6g==","shasum":"1aea24e1eec70c95855158538e2675f896eb8372","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.1-next-1601038956-facc379a.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbercCRA9TVsSAnZWagAAjwIP/3NUe5cO5MjHKMfpUWOO\nxdprodHDPs0v+e0uTc5zhDoq9ZVAsqg4sW2A2S0V+0gKhQOMgdkYMt1QunQC\nEjPb9MJRW+nnR/Z/f6676DEELfz/xOVQycDwFrSEMf6G5DWWmcoED4Phf2bC\ne/M5rR74NdGuGyxzWqcUH465hvLMxmrjdBNxLmjpJSo/x16X7/Qc4t7/Ea4N\nn3qqBL0UITDr2vjdyLWZvM1NXw1LrMld6k+in/CVuidxbzFLyq++jpHTCai1\nnJGdXpxbPkzHs56Z1mPiyXEdEGF33aj8PN3hggUM6zvN0LpU6lP6KcTtXWof\nNIPXp8qiCwca1cj1k7lb1uYuj40yidOlb7IH8/Pjz4PTiD/XPAIWz3vkO4L/\nb8hMn5r9Ri1QrGKuP2PneKhfIv7gDf9zCJENMakS7A0iQdOolLPDXc0efUg1\n7ekvD1jsFUG45Q0IA64eAM45/LynYtkHC82hPMHTVS8FyvlXLxu6qN5+d8Al\nfNKHw1h1S0ww8uSF7b82bri8QaJM5+8IodUa2CFKvT2bVsoQWarEATyWLDAU\n9lXNCr8IbXWJWQ7FlJ4gIG3xJmXCiqAtm0xRx8CJFl7mYSnVExQ/0VvHJA1g\n+3kUGdPUrbs2oJIcxm6XqC940xvSnYMyuMwbWMGCeOg9tbIw7eGMvxnbbdjL\n21ls\r\n=EzMr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+S8X3q/pePzlQtIJGRC6RQhMgVS3FDBblAOArSn9SmwIhAM/binrUayRGX5hRF6IzEABYUXVLjnGhhExz9JRpTisw"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.1-next-1601038956-facc379a.0_1601039068392_0.8124385023442524"},"_hasShrinkwrap":false},"2.15.1-next-1601040363-5b27dafa.0":{"name":"@xdn/prefetch","version":"2.15.1-next-1601040363-5b27dafa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.1-next-1601040363-5b27dafa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.1-next-1601040363-5b27dafa.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HxVUjZeNDVQJs4yyCqbuoWpWi/FYg0/YEezguSdtOmFGM6c5UYf2HlEBgMP5GdmW4oQd/iWuosCW36o4r/cvJw==","shasum":"6f6ed33592db58177a555022a49ae775fd0805bb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.1-next-1601040363-5b27dafa.0.tgz","fileCount":56,"unpackedSize":106513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbfBkCRA9TVsSAnZWagAAzqAQAJSvLFaSUPEztMi316WR\nJi4O0clhHG4hb60TLC2ptd2HEZGPlDWyzanLnVWjFVTBf+aJxh53yjlBGtMB\niPxRYhxi5KlT8kGUBtHvOBNgPEvhR63wq67H+yq+P1XxAaDTXU4UTx9vaxSv\nIFxlHAmTb2dSveLEPmYb8oC8rebcRc4tutgX4GIItfrmCiH4mg5MyV3IPOhr\nVRIvgjwuYWJah3s8NgEKbUhnhU0XpwK39/+N8r7RPO4iHHJFjOi5CREwD0/F\ni9I5eqhZq80aZgpHlNK86RjxFuwBEUHi41HmbNm74l2wlKFnYHrWLgnIdG6n\n7yF926jasvlHVHMO95LlAjw417MmGpInSqlNCVcf15cl4ClbkxPdmVEnrzML\noUfYtwelZa0kS/Skibvdm9T4l/OzFcBDVFz06U9+fUdQqkPpIJ5C71wFMK95\nxRAIpeje06YpTZzr+Lu0McKUtBhkBw9EI0wMIFAnt4Ov2lalsjbfpojJwsjq\nJKc/0czW0iCmaUArjkInPYIj17qRXvmXyVZyp2whZuKNpYuw+yFzDVrk1k8S\nqylXaFrrHgWCS5n+Kwz0Ydp+mgCBjPeERNzxtPxuMM0urqylK6c0T93D+GVG\n07sLUv/zP4P1jofSqMg9mwM7yCvzhb6aJd5jHdBW8KhF14ipX+GQjxH53V9V\nlyex\r\n=VzR0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyAdcnnkpVmemrykewAzfxCp/NLAHFsWcnubNTT9jp6wIgQeaBlKyxUOZgBqZdePHwH7ODSZ179h65AHPfNjTH2Rc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.1-next-1601040363-5b27dafa.0_1601040484026_0.7397922948495435"},"_hasShrinkwrap":false},"2.15.0":{"name":"@xdn/prefetch","version":"2.15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.15.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yVmqsakoIm87L1HsggWyNRjIheJj9xFdTrYoRGST6n+29qXQ5az8+//rtTFoVYoe0ULtcZdQ+PxSNrfkXFwcZA==","shasum":"302c12df57d819a5ddea0e023d41e81fc0041f76","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.0.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbfJRCRA9TVsSAnZWagAACxkP/RZn3D7w1g4j31CN5fEJ\nbizZHdMU3eu/+l3R3ZySblGMrSRSRksgXDXCG8BYkMdAhFIzYdaiLK6jZ0nQ\nRO7fb4DLJJ5Mf2+Y4fhYDWOlvRJxXAhb/4VsfChnihVtQZm0WoIgqb7YH27I\nbKnVb9BTRBM4lLD8d3BmFhn/GCenYJ/R0JYYdMec562iJI2V16taHGeWZl7/\nD1UfQ+CohCbnyOqQb7u1cfqtdv2OxGilvC+slysrCeOn9Ucq8JybEp2zztou\ndvhFu6+j/HTmGIP+P7U/8FgM1QJpUhdEXKDqWtJxfLI7AwntU142r9NAokv8\nMHVq1j7qd+PJYHhPpRKI05UchQhHCk0mpVoNRxGTQXVw+skzCiRsuPm/RjxK\n2yz2udxGV3JQRsxJdQnCoh9X5sVtIOOqdWago/Mq6gs2KZ1f9H4kThkWfuck\ncrv9lvS5uA1vSU7CAIYXFvnphby3QyKJiFwQLVM/dD8MIQb9+/0wOa0WdKaL\n1zZEslk/gYM7qr/zxcy0LUUGShYBP/HCuC/1e+mGxRJMJzIjY4cpXm7rQ3Y3\nhur0PtwsolUbKE6NxqVIk/hhXZSUhyEUw68dXIe1odLcFzh2AAZrsyw+wmLS\nJBkt2l7RSfMsNWjblEq+rD+x3F6S1H45UXZ0G+989Ej18F1Br1px0msFOeXI\ndnEG\r\n=ljYK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXXZkZZ+9fDqblknXNYQydVAnVw8xjzmGYoATMCqnGiwIgIf+pGdAZGNdNm7CRpXtCP2B1Emb8mjCnFdY/vTy1dGk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.0_1601040976857_0.35273795007998965"},"_hasShrinkwrap":false},"2.15.1-next-1601042758-ea5de787.0":{"name":"@xdn/prefetch","version":"2.15.1-next-1601042758-ea5de787.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.1-next-1601042758-ea5de787.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.1-next-1601042758-ea5de787.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EYo1naAazxERKCohERwYHfOmI95PZRbF+BkKcWTCXH7r4d0A/wr876VaHdKFYKh3T1doYGv9YoQ3pNTk8mpSgQ==","shasum":"ed509630d09b3b1f4150120a4485dce014b11be3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.1-next-1601042758-ea5de787.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbfnLCRA9TVsSAnZWagAA4s0P/ijIStCXCKEHNQVClPQl\nApJ1VaLTkFl5icGkLisTRjB2bKLUGwB2YxoqwYvU5uvzZX3Pv3OS2/NSjdqI\ngCzwY44KAZz9wfsimpefEtWkIyqOxpSlWs2oFJjKLqNnofSnB7i8S9bCCYeW\nZCeL2oT5b2ewmHDvbQLckYUdEOB/MUSluMZvv4AnMn0ulD2fqKfc/W/JaCpV\ntriVEJeWIwQBGVDKKGbAR5bW4osp2OUjlonLcwrVGHzP4kQe2qRxGuPhDsW+\nrWzvWnqMLDqGJ/mST/OTHj66tpi0jmL/JkO8T1wwTzWZ1A714ARUkGEedDxV\nw9ZIRP46SquN5zydvjrmOd4nN5UNSd/1410xgiT6JR+nZNOPw9iwpM7UMpTr\nbRC4omdicfHVRFfkaubbBUnDy4EpgMT7umkCzn3NmIiPxbqTmOdn4nNNQj1Z\n7m+vAZhvx1K5NpGCbdUXLfgZtcS2hus5MyAzYN55pkPFq3YKRRunZeOjL/N7\nFyqagTrrrnDA5N7VXFNKdmkYREYuKPsLpAx5oHoD7t06/T/bh6m02i1TRUPr\ngtcscDRXRZu2VMYqm5jaBUiRv72qCELrQkn3z9z3MdmW7h8k20tia7fiCkUE\nVHpe5PFsiZVOeMXmGP4wZEH3eCamRlEr8JI/GW6dWGJr7817bleksuIzigUi\nExBQ\r\n=w6wF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxe/6tMiis2FmEX2iSe62r4iKUlE708JOi4QAQXhRtOAIgNWcHrRb5Txsue0TKhs5AE7Bvj8QTLeJlv7fjQd2bBnc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.1-next-1601042758-ea5de787.0_1601042890756_0.9971746459985"},"_hasShrinkwrap":false},"2.15.1-next-1601042960-372a5048.0":{"name":"@xdn/prefetch","version":"2.15.1-next-1601042960-372a5048.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.1-next-1601042960-372a5048.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.1-next-1601042960-372a5048.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N1HsB46nl1tbziqM6JmTBMneLTvV4aFddPDRFnF3xT0/Gql5nIKenchZrHbNkmLwQpptEFGeE3klt5wUj3plEw==","shasum":"bd558cd8542d181af05647b82f1105f1fc36a793","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.1-next-1601042960-372a5048.0.tgz","fileCount":56,"unpackedSize":106513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbfqmCRA9TVsSAnZWagAAaFYQAKGSqFV5oVHOq79sV1jD\nLYApsFg68JMUUDAND0+eUAkZuhhZ41sN/8Wz9mFEq5XFY7pK6lejR2RbOvAj\nFO4XTm33LOtJhbV0+/jCMT7cDCcVzupq0W7gKULY+fcJvi7rqkfOh/oNd2I+\nKJGjoJBm86l7eyND51aOPDGIv4GkQLIiGLRWTzpXGmjEvPP5x1DHcnekHbWy\npJDa3i3U7VXcSSF6jZuUuyAk8xRxI72AnmQbHxUTvROIVsc9TVoWi7aciu2X\ndqxIudXG/eTnwgwa3bCromKjGZgdsdrDOMJoxf9sMZY1XmhBy9+rQcFCylsg\nyvrmiMmrBTu6o5CKKi5p36GXmpC1xBNrU6OpHGMJCxO/javnpDvvQz00iH8r\nXsYu4jOnmz72GeLsQOHa3CbXdrELVcmZzL95+SvTLvU0AHyMxXg5uDuIKEOI\n7S1/e5eYsi7Ij+vn4FoHZiAlM+4B4IIORNLVY0bUq9J5atQ+6zXRL0pLNBRJ\nSFqWykE7lN5yfYdobyyiBOuadEPDi9yhPVjpJIUQhA46u7AEs55+9PbfySN8\n+wmCLYZh4L2dTVxIkY1irvV4z5D15++KKKLb/11SgXJnk6p0x5qqLzTsMvj4\nT9MXft1BOsfZdkhckQ8QIwKqWKDhi0XW6cecX1woyJKoVlO2Lk8fgIXvdUXL\nbDxE\r\n=Gpkq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLoxZd4Ug56G7De5/8zoK4irt4+hthC0tVk8eq7EuRsAIhAJ368JjOuejcJ9Vbiyp8IwzG//Ljo6cA1UDbAcXKWHG3"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.1-next-1601042960-372a5048.0_1601043109919_0.46669543596864194"},"_hasShrinkwrap":false},"2.15.1-next-1601048377-cab695f8.0":{"name":"@xdn/prefetch","version":"2.15.1-next-1601048377-cab695f8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.1-next-1601048377-cab695f8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.1-next-1601048377-cab695f8.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-U2e//hTkwqjylEWgUPZyI7/lWRGNoxx7WoziM3XS3GZcmwQ7ujk6akucbNbzDpZd93ySYgHIgXFQybpsdZncTg==","shasum":"0fd1b0775558629a8a7aeaf94a2c10ad058fa587","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.1-next-1601048377-cab695f8.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbg/CCRA9TVsSAnZWagAARgYP/1m0rgdhlbsrs6oEmzlc\natou2vxaJw77WBZyfC6DSegy4SZLR3ZkWdCZvA2Oqzg28uaUm8xZIwipZ7kC\n311Pf+RAKY9Q3MX4B9jpgHbOY+X9g3jab8pghNo/M+C5JqmjJtsOUNfraK/P\nwy0OkFo/i05ntG7YsMyKFe3sp6TObIYI/LIJ++wv3jCwld+Hxd9uNIP0sX/d\nXWIsg7yI+RlwgY7XB5wJDFMnsKold3BjkZqloE1LeZijMKpDqJlMeIg8JGLn\nj3/7+IdX2OuwsjFz5bzPb3lQDJCG103k8tInJ6lMFlDKTaHS10FcL55rt/TG\n7wzGL7kkmk9+E6hkvWz4Hvq62G63j6cFyH/aaba6i4eipGfUFYat4tmvLSOy\nslt53jYy5SpqpK4kAi0XiRXDhhD0+/ISD+gsEFAqLWG4bl76Y2/6cgdGO7tr\nksg9CzRjp0WQicgcfFbg5NIljamkd3GrGG0M07fusqzHr6HHMB1am6KRITph\ndNYxQoUkH3fQmkvj+kI05j2B5B6ipntSGKEz5EuJtXDZzadjoZK1DpKXVYQj\ncVLhz3v+YlhJz4Uu4nBa/OPBDI8SjoWu2NVozFCLnhLnka5e3qVCQegy4saz\nsaOhQbRFmR27KtIa0d8wGD6InXWRNmjnEdwIqlbF8IBNijsyNMNG+OpMtVXt\neve+\r\n=L1Qz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHCghj1PFkmzBBYwIl7j0lfTu56dso5JAvDoRBeppibwIgOr4OqFNCeHGpQeKnpuXBANsDABZE4cG61Z3+3Mm+xco="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.1-next-1601048377-cab695f8.0_1601048514322_0.09273699487156861"},"_hasShrinkwrap":false},"2.15.1-next-1601049541-d28deeba.0":{"name":"@xdn/prefetch","version":"2.15.1-next-1601049541-d28deeba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.1-next-1601049541-d28deeba.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.1-next-1601049541-d28deeba.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qGLuizE6gSC4gtUw96Lz2LsM8K37F6X5kC/JfoIvDXW9tSBPdFZh+F699adDPh6TPSjhXS4FGF3ZNochGjgtxQ==","shasum":"fa3b3050736297eca5ed04dcbd9028046d3e42b0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.1-next-1601049541-d28deeba.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbhQ3CRA9TVsSAnZWagAASMwQAJ/vnAkl1tJNfq2x7/XI\nRAJZljc8aYGzzI1AoqcsGALH3dPNy4F0aa0kfUQahRdBaCZtYGn9u+GkuxWS\n+2hl8tjbdxAfQ3g84NJiVXstXQOFRDF2y5Ei0JiC3SNowVs0Fm8+qrWELvPH\n9CKffkKh8dWwPNsyVAH0okvl8DtdKVhUa4WJdb6yOfQo1gDbL5NJ34wyXav9\nyIt2g8OopSuIuVOEoUGiS+54iassfzMPfX7PoE6YGW7NDoaQ8XvUs+3C+R43\nbVj4DBXyQJAUYEdsDDS6gv2H8A/wjM3+lEtB5J/aM7W2Do0S+K8ZKcRi1ME2\nSCifu5hvoT3L4o95W+XvOx2y3aI+a+u64Egm8u/mrLdme1qwOr+Qo4W62Fgq\nWuWXKmI6kFQPGPcsEzrAVE0ZDj53ae2O8DRp/kkUVo9/GIhgY4kiwl18Ft9z\nGyPgdlsubszvYgKs2o/tTTPSPjBPijUrTbaHhLPw6VWnm+PravVEL0tRN6mP\nywCCMGOHXdnBvJJ9f9lpnKNz+lurPOOUMmRLyi2wtTOqHnnt/UaliDIYD+b1\nbUg4eI7Bk6o56Vnrzeg974u/7yI5gogNjfC5SvzIHpGKe60TZNDa+bhS5LkT\nZObeDgSa953gDH2PygAnwj+sNBvaJLnL4jsVLz4F3LLfsVkNyacn/Jtnhdjl\nGx1n\r\n=9EhG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3Cq8mDLvlrWWF3OaJncu5N9v4YNXnCaPMi0SfYN+3MwIhAJPQU9IvP83jutmO1QrDiqpDnvV4NKn03UhVrFwDDwWp"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.1-next-1601049541-d28deeba.0_1601049654604_0.705080716180031"},"_hasShrinkwrap":false},"2.15.2-next-1601057031-bb62fac1.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601057031-bb62fac1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601057031-bb62fac1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601057031-bb62fac1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KWDQ7HnS9B4VIL17vTQkc6GzzmoCdl+PerapMvJR7q73PiwJ4OV+9hn7wFWiB8VAIXJWgP74v5SbWMy0SmNAeQ==","shasum":"f63dbbdda571fa6b9207115b9358e221a21f6323","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601057031-bb62fac1.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbjGJCRA9TVsSAnZWagAAqwsP/RsPWMA5ybg08elgawFf\nMu7CbGdr/Go5k+pfIhzQN66AfWNxiH/wXx+6JGAZI5c2lkVRh7axZHYOtk22\nmz4BSc1ynmgFoY68gLaTfLH0s825hn7oi2zzK4nxIvd+NBPH5DlT3lt6FKv6\n5mlxLOFghjtpgzRT09Nt/EApLOQO3WiU9kYlhdoxhv6lCIuME6hX5wwNWESy\nqUzTGA0t3cc0uWr9wUNR8HFxX/khvJ/4yAKLXSr0ifkbGGp8MKfrc4j3tlrl\nL92c3OhmLhsP/hi4lMkcCfjJMJKz+nH+cbrvz0GlJzvp64+LSFiH4ecedklU\nngCFig7DLNVZGGF35SI2vI1IrEnqTOyfBbhlMLGMbg3ECJcdfNmf1eS1pksv\nZArSLwh1B3b2MX63gShNKRYc/Pj/teLyqFGFawpjE7qiVKZNzDromMTbAb1d\n19P3exf5d+YtZlxF5jYSQ6fTeJvWr/XxozzNq2ViwcIlHB/yVZPjBKyyyot3\nuioZHl0a57vzejpUHVA6gj/mjy1D/GDVw/6oTL7oHtVWJsXPQ5Vu3JyLBVMk\nKCXL/SZkVO3IWTkLly3looYG9dTroCl+N0igd9pF3u0HlRfvHZ3Ntv04S4ax\nAu8r83Vcr7NRp51MTT2Au6TQoX19iUBvQsBufj35OI7G5tg/AeUiBuSOtA8T\nLew9\r\n=o5Nf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUwLCcAJ/lavsE0Fiq6TvzRnRWNqbmyofWCcTtJqRtMQIhANG2yEhXHHNYg9XB465RN7Pr5Eg48heHKB1G+SgYvhMk"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601057031-bb62fac1.0_1601057160647_0.380869967985787"},"_hasShrinkwrap":false},"2.15.2-next-1601061210-08ceaf41.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601061210-08ceaf41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601061210-08ceaf41.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601061210-08ceaf41.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SE1veUmaBJUTVExRt+jvH5sud5bXVnkXresyiBRO7UtebdFGUEyvHaCsB8hYd/tkV9KX/yt5S/XmyI4zxb/XYQ==","shasum":"99c85e86d7f04ad3f29407174afa5619c7a34677","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601061210-08ceaf41.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbkHhCRA9TVsSAnZWagAAuyIQAJm71CKtAKnlkxyjhk0j\nulL8MzDKkpEdgW2bGGM8o2aBd5eJifTY9jLqoM87zsHKSZU3jVOv9z3+0txj\nNEeA9Kopv1lZMLVIG/9c2VhCNAW8i5Hxpahc3tYybkfs0p0MYO/SC59fY6dR\nC0rNZASMvOVqVlcU+RUAvVx34rf98K+VIUhRhc4yiU00NvbA+V1PPcpl2tsG\nOm+wjuVqdUHAV6NkqAESD+qGLSgycKU1uHfVBaHRoG89eFX72cWoHeasrOOm\n97rb090JDUtZBSqEndn3oJGwesWadXs4IaPQqxxTeIVspNFQT4bs0UhlisU9\nOoSYFFaIiPYH84NDpObiRDUKUXG17PG6KvhEKvLfl951zmacOfNC7n2W7iKo\nOPiTV+TPWdEV70kWTZ5un3pfimhuGED6TDyEoTLgYd6+q7jaFzMbYVZRA9no\nXGFMkWL2hL+pSGRoxT3tRZmgI5drOQqhQqxYkMNGasZpxhijschRDuN4ohXd\nuqlRhH8LCYTL4oPEOD0NMgwaXxF6CaFOB+IHbUsnubnKOKnaoUUaJRj0hwxH\n+nafDitMQThV/MwU/OjiDlOsC8/oq4zcuzVw0E0Qh7vh3SUnel21j8gp1HLE\nINqxp8XrZgDWGfDp+V1fZblj7iyV5CYvGRWG0DzIsN6/TIGLja7rVWhyRvnV\nT6gT\r\n=f2jI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfbGrTwi08101W6U3Gm7GTSNR7MtcYls+Q6HNd/TrMEgIgarXIZq4sJ/bkKdwMQ/Lfh8S5DmY+KY2WwzS9o6PYVA0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601061210-08ceaf41.0_1601061344724_0.07819442368622265"},"_hasShrinkwrap":false},"2.15.2-next-1601061352-631a92cb.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601061352-631a92cb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601061352-631a92cb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601061352-631a92cb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qeVoASEmGSKLZIfO46MS/XsMiuPqa4j7pmIGzsb9C1LmxtlVjaVRGYgBrzKYo8Y/IlqPD6wL+taBRSf61/W8ew==","shasum":"eb861b9030ed1adf7e4f1612510cbceb05d6136a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601061352-631a92cb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbkJzCRA9TVsSAnZWagAAqnkP/0W0ulrQSHQxSheCgDhU\nlTD4zFdw7BUytH+VkmhyJPQpQZP8NVTseqEFSNd47DWYSZQPcEwSStRHjcgd\niUbRsQW7W9Kle+A5Z0lTZGygjC1U99QAPpDIlYHiWKOx255yQl+AlJNPBH2b\nl+dfznFeCqLFIjR2lm8s6cufGoU6yWTzMayPPavSnuvKhauq+N4XQcM1WOdw\nyVE/koHUTo4WuOaWSIe+zwESADOeRwjUe8sDL97U0u9ekCIMFqKpNEWfuis0\nwrHQ5zr8nneeoHP267lWhWOCV6qjtrTTWOHs1y+5P0rmfz6pCT+8v0+yCu0I\nl6/adO6B/lzSswSrgLZUawKT4wDs4kWUcbaEd9fu9WJptaK5S43BE5KhkS8y\n6REBJ6swwd5ri55JN9n7vrlCUEkhTo+7HCiN1uePZWwaneHUEFEXBMrmmhWP\n9PDG2KbWpuskwZhy4SYk3nxNj7VThwEulJNPAexA9nYf7pYFC90OfLo3hFo9\nMW/DL7qE6P3ntBQBsLY/oArDqSQ3VVtmK7VaMpWmUPRubbXl+Zhb5ky8OsY0\nJLNrprZ4kjk5QWOJEkpLX0q82UKkEstPWZbBCBGBg+e5kD2p3zd8Ecyl5oew\ngMR/x65KI9xs9AWcKhrJ4HpRaKZzaasVSvuqmteepa4fR96FtuWYH/XytpEu\nepLc\r\n=5UzP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDFnd/prsjqIIJl+yK1b2mqEa8F7BzCbQj6QQU0RzJgMAiATnXgZa8ouFNjfhyG81cYAZuI+1PoLNwaoi5ZERJtUrw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601061352-631a92cb.0_1601061490603_0.7525824744444995"},"_hasShrinkwrap":false},"2.15.2-next-1601062083-82d4e4ce.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601062083-82d4e4ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601062083-82d4e4ce.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601062083-82d4e4ce.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Vv/Yn0FzRLopdDkDXAJEfVrFd7kZ4rOetaeAATVkfZzHSo0GCTzNdkIc0FPi1nK3WtD160jzVAtmknn3m4bY7w==","shasum":"6a8ad2bb620abcbef4c83bef33d932383ef05af0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601062083-82d4e4ce.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbkVOCRA9TVsSAnZWagAAvW0P/RxiEbU47KsGUovaV37m\nVui2AAFkVlitye9GQUcPI9YaEuHuzgE59H0FY3r2RBWiZDjjxoqbcv66mKK9\nSUwmYwvQarTQgtMnG60TO6ulXws6Tkz0ivaB22wxBFhi+HRS0VzlJ+p/gESW\niPsuyAvJ53JRbCoGlEd8tiZ0GWgxYEklDTiau5DLuDIzfC5Oos7vRBGwSs1B\ng/0PeUE30CEzT3Ee1WMLpAxOMboKaYXiDnDibtMzYGKfe0u5SZviDXTfJhFs\n1MW9iypasRQCjjMJ/MXUBc1Vnty5ftAyre7AFFlp+8IziC8ReOHaxV9BttDx\n3U2udrOv5x0IBq5vcFWb2q5x6g2qnJPPxaRcBReibPJFDiqJStwUQOFJKQi+\nDMBH5EqT99C60hcnPvQ3BhsvRkFDTPcXSjGjiezV3t0gtSGkFv9efYx1D4Fq\nBzcPo/IwEGBomrn864yOOCz3i8bfYzGiIZ3MLx54mGYVj+Nbb8de7aEM7K5z\nEVkE4wQxVz7SRDLplocobOrD8a9VdN7gINRhFwce+afMNpKZJuQuA1DOgA8i\nUjs+IBU18gecBHDQxQu8OP2nfY4b6ZjcGIcjEZuWFVm83bBbasG8el+1BZcA\nce9oNFPbrPdIpzmuYYY/lTbTyOktN5z7dLQYuqi4X8V6DH1MH0Vog9XL0Tdp\nPi0c\r\n=f1Jh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIACn8023LX0DHTre3oszODGWk6b2PJfsgSe0UJfsCwsNAiAS3u1nHDz8FOpEpzhGRHS+IueO+DzufCewciCJ5Q/wPQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601062083-82d4e4ce.0_1601062221821_0.9522405586518512"},"_hasShrinkwrap":false},"2.15.2-next-1601062208-4b550412.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601062208-4b550412.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601062208-4b550412.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601062208-4b550412.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uL/rd+70mONm922r/x48Mg/fP//XLvgKa7XJDqbmqI0HMG38k3/y88Fd24ev51daACW8rMsnQiYW3eWWjv1KcQ==","shasum":"c5d8b772628ea1762dfbdeb7aed75de806f14a06","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601062208-4b550412.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbkWvCRA9TVsSAnZWagAAhwoQAIDz4MtBap0BdIzVD85w\n63o4PRgo6WLR39PSVhaTNnJM1JW2Vc9m91kvJdGCBQuxdMBUZLfEDtFtf5y9\nbxqdVIu36D9PnavOBTXLFtutL5v0qwF1+8gE6R8iM/XsCu0gmAnPv3ZeG0vE\n7kDcH9IHHdlaX87FpT4Vz+OO3uszsl81KINhsge9nzV9NONHnbVTLsUkus54\nOGdUXa6OdJ37K6DXOm2Xk2XgQx0PcFHhyWv/UzUHGVrn39Yz8fYYbGv5uxWY\nmJxnXfPOO4Q5HgALtkJZTc30sZPEdLc/d1YAjdpHEGfSo96H4ltVnlVs7Bag\nWM/H8WIDYrS3cHJ4tvFyoWiVfGbUqGEkUC7VhUioja7yGOsE2HDt285zZQB/\nqw7EmtaiZvs907oy/CnpNWmpqOuQnug1rhm1i6v//LLBA10dtzrhtxNE+cQS\ny/RKIzgUi27IuntzTsEcIRVzNYeK3TVob5IB/xIpt946kJxcXE/xkvhkyu+T\ntYJZzqjLcRHTNnIbMNC8onLIJYqNUBGSGV/vGMXj6J+RXCqqkxXOT3Y17/AK\nkWL5DmmGsoUIw68bO7T4ZygyC1e8XDfm1/f8kfD1aHLLxd0tZuQs211M8cxr\nce112fqPiTKB3Y0bzWHzE4WpPGrbhvZKdrj/7WPnir25T22V2Qoe2CPNK7YH\n5Hzz\r\n=8OfH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhBVwF6B6k+8ednLYXL2Ed65Nfer91EVkoaT91DxTqWwIhALMQgcnDlLImmNe5ZppNWaaMLhPbp2H5nfe5C+6d7WNy"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601062208-4b550412.0_1601062318857_0.7723659502872997"},"_hasShrinkwrap":false},"2.15.2-next-1601062477-266ab9a2.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601062477-266ab9a2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601062477-266ab9a2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601062477-266ab9a2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/PWkqMp0n/sb4vulrAsTcvSbNT68SNCGDZvqmCWMXtkrZqDQ1E0tx9IiwUPyJtM6d4MW7eIFlQbQ9SRMtVybnw==","shasum":"5b14c9a34c5784214d1703363b079901959764b2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601062477-266ab9a2.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbkbWCRA9TVsSAnZWagAAmpIP/2AZ3CKHfd+75YpfNXZz\nAfmYhRW069dqLKwKUpYvH4ev+R2q798gQ27c37F5l5oxXwjWIEt52nDgcEW1\nc7ngs3qMSdFDd9YZhgD3XEgyf4TXhDFoeUCLdoUwy9zq2EKbAz9vWiSqJMC3\nFQMuTSnry6nvVaTV+cjBYXBOd+ykoGsKu3kPBVnQ3uarMa8+u7Eg9KWbGDCN\nWQRSm41uDqh17lJ2B827Z5iQwivGmn6GrXBpmQHTR14RJTNHNXg5Kgr9wEUy\n3yIo2TjVVZ3/nMntKEr/azsZ9jsiGhVJIk5Uk+CTJIewoFniPEXMNmI++Q/c\nQufMFAGotDP5nKNtM7rHX6p6sG1h4IG2Dx1lGCaRgg8BkZlgqINy84KvsAyd\nHjpChAKM4nL96T/uqpj7LNPx6P2hAOqd/NodVAsI6O/PhZByYAZRv9kGE3NI\nVosB067yp7UAE71FUWhb0H4wQRK6S0U3mL+s/qtblZ9gNHofziy2EQjxAavg\nGHIUCtcipD2cR2Y0PfKvs35poXeDRXsdCZMu5yic3z8fZfstO+GRCDv8DGQ6\nW7pXJqAmW04FOXioVI2zJNLRnVyC3Y1iPgV3DpeY8O7/VMZZu5raf7RZV6BU\n6QM+lple+yNVTnhbuQhPzU0OYuagyYxNtB+7IPf7T/NZsWkcrGBFYj3eOu79\n61rA\r\n=IbeW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDk0CyIk1qBJke/4PETIfjnkpXCyGHgruIiZa94R2RprQIgbMie1qeoy8XaAPsoeZWvYmUlBZjvYpYr8fYTvA9vhLY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601062477-266ab9a2.0_1601062613643_0.13719717303239953"},"_hasShrinkwrap":false},"2.15.2-next-1601063911-e749cabd.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601063911-e749cabd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601063911-e749cabd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601063911-e749cabd.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-gWvkOcb9TtGGQIYPloorqgzuGF87BTVmO1SySauTrhcrb4p1+EoNkyaW8hxvljv85bB9mfRPojAfqQ3GcPzVwA==","shasum":"4e7c72ccb4cb99abdee4f71e9301b93f8632325a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601063911-e749cabd.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbkx4CRA9TVsSAnZWagAAHk8QAJTIW6WGmuwO1q9c0Uid\n6TQVeV0p2/zqcf+buFLHyNNezQpg1zkGqh6Mv6j7fsz3X28egqIexe1X5j3/\nHKghqeNjQY84LCR6a8VBygpZSp/WBjDL2D5jTedkoInVZ/+h6l7M0c8l73qS\nXdiimjnyqtllB2wSnp/HSxUt5MciUgzXdh4r1CxlwEYFQsyMLEyL3DyRUmMf\nVwVAAKT9nJR5FyUFaXJ6fVt+eMi1dNJ2kf42Ws05ymRKFDytsvLz+yAlu7aD\n827Zdx+sMMzYzZuNPgFZmeTzZKMW2NTGopXLrfm8piKClBOgiPZZ75vcBdT1\n1Oa9G1k+Ay/ZtpjLejTYl8sokwFJ+YJMsHpVKt5TU2zsR4OQaCojvkYtATh/\nxug8X4l92JEc+YTFdmDzRZ5B0nTgUZfFFA95/tf3h6Idt2/kkVfaDxis/M8w\nG6oil3lPziaZANSbTlwmMHN3v4Hsf4wN2qTNy/4BFJTaS2857LdBELB12Lss\nHVHkgfDl07DKX/SG3jPQ90fh8b047onKEHzA3fRQVJmnxMCfh68ti7Zx2QZn\nkvR8nlkVYV/77ipbNhSsZyZjQh7mH2Gm3+gWpbNUfQiF5xjBRwXLhLhJ8d4z\n0lP0TwjEIPBjMZ7g+ivDwWP4WjWgNWI0XNw1I/pSbwzZyU8v2QFHGodGOfIp\nzfFJ\r\n=ubbA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGaKtZw9WJZMTum9BMDQZaZwJNHXql/6oTUqLVdinyPSAiEA5UMUZhGc6nhw27kF1CPdKU5YZ6fp3Uhr4UPMS0w8TbY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601063911-e749cabd.0_1601064055923_0.5456261389156312"},"_hasShrinkwrap":false},"2.15.2-next-1601118385-00797597.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601118385-00797597.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601118385-00797597.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601118385-00797597.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-24/k2UhTE41+x6wFF7VPDirI62MQ2mmGIv9B2qw7D6XNZmpDqDcqvbo54FojvU82bO1q+jE0rkDSj+YBmePTrw==","shasum":"d68ca2b2946a63f0814dbac3115c64cfff4a7948","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601118385-00797597.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbyEtCRA9TVsSAnZWagAAypIP/Ag3VYriHgq9sZ1mFsnC\nMFpUZczmgtKwsxOYROE8tFGi0y5kkWFwLiD2YOTuixmKl8zg1sLgbMTfezY6\nJAyDIffFymIrC55tN9H9EmGPKj6gRwtPrLZij1KGlEta/xl641d9iFRq2oqj\nUDcpINx12heTV2ViN9SVYogqaG9lv1vYDUcR43mN2lPQ52uSNq1UF3DfQ4hS\n4qihaToRj4vRP1G/DAXE7TG3IFPbsj2tpYhCXs7KvN5AS/pbnV2EiUh0MZmA\nGrYndgdBqZI644I6vJuD6/J3Z46ii44j89e1LLhWU7HdV4Lns5mF8+RhPtev\n34SlrCrvN/WK6bC2mFkTZElnlP8ezdC/RNUjSt3DpEAjzJszMcI4o25cHmHm\nZBWCdTCPKuu62zX0JRjEnjVGNSK/ez26UmPHspc1gKzmKo7MCavWkAmzj0OQ\nQItFdGTBw8CWjx0XdeY/Icyn5mQv+Pfd4aFHPth0xTWdZXmIAiZOwytWBw9K\nh/+N3BKX9AKl1ZgDuoJxmwRz6mnnHH5BQ0xdu70uvWz6Pqeq6QxVXWiVFDTZ\npHL5aC5uAKVa/EprJwE9wdol+svhqHVGbUJdhoi9D4oBqGpxbX1F/ESmXEaF\ngcwEC9MIfKkjBDQuBqD11iLTcPcLhroGO0AOuIpYwGp3ZvvfU/sMcShw8xUR\nYWjC\r\n=LcWK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEhLm29cIZbiNhQ/DSIPhR3bxt9MMAdYjOWlnADeZvwoAiBzhF24yWQTAu2oXcdHlBmnIzg7ueX56C1Q7oWga/pzEQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601118385-00797597.0_1601118508532_0.6080435309061587"},"_hasShrinkwrap":false},"2.15.2-next-1601284228-7b83be54.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601284228-7b83be54.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601284228-7b83be54.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601284228-7b83be54.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XGVcFCAQCe/6Ph2bJiLc/fQ4epAn/RMwST5iBNlKYgrW3hqquHC4ZEx801cvOXtTJXDKoUWmD27og/SdVSd3iQ==","shasum":"2fd4983809caef45e4b0587c21d07f4c9aa22717","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601284228-7b83be54.0.tgz","fileCount":58,"unpackedSize":124749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcaj/CRA9TVsSAnZWagAAmqcQAJvH5LbFZYFxvkRybYKW\nPOt5d1IuFPYBqz6D7L9s5dvk5CwaO3E2ZQuQLefRXgHSJO0e1nhvdK0ZmLpt\nYDJmPvgAsxxsIwAnzWqfv6wdHytHh+aONMRu5FqgtjHxUwq5DJai9UsPdgsB\nswlSVUhVuMqwgq1LnAtSksA1iEgKRU79S4kEhDjv6PXB+V1xixlEX9fjyEBk\nveujzwbWdVwLJuwtOVFdYYHitTygg/yn9TGU6/C1x76Bc2hVb2/rNrBczxFS\nEPx/XWLsx8l0kV2P4HyivPO2wZqQAyLL2iRI/sUhZW3M/rPwGItgU7gz3f7Z\notmpXfmw/1ETf9YqD44+7W6IhRh2LHaOSRd17qJzJAzjtaW3uDBm1Ht7MTNR\nwXvPdU704oLQw62IaFAO7uGxw2aX+79nxsTfNj6/AVmchAfqtN/CFpDTarBV\nSxvq4bgC6ZuKPEESin3Z8ww5hQvgS7pfqNf2NKAzpqCk5u0jTwzoxi0kvWF/\n7j0AfCiyagFNxjQRRjeBxmEQGeEBog03SY3iTf9hI49fm4w9z0EHjNGzui/J\njQl/nDsvVdPnvUkodMR2EgqQXczRCFAZtf9MOIJ+rsRQZUOyhuGBJo1fT4eW\nUtJmAeTTjswfGcNl9UzTDsnmE9YC1YsoXDEZd6uAUmBFmMUJh9gLzJdXuGcV\nGRgr\r\n=Xcmp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzu5gaBFuGpsFwttt20b2C/fJxR2cWgw/rjobqp2YTYgIhAL31Gnejcl1XwBMclKK8o2zwjWL/ZAhZcajzBESAICYj"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601284228-7b83be54.0_1601284351454_0.4209306744524959"},"_hasShrinkwrap":false},"2.15.2-next-1601293034-38774e59.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601293034-38774e59.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601293034-38774e59.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601293034-38774e59.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JMQeTaclcSJ0SOsuLg6q/nrehTwEss47XLbs0v1Knc9VNdyZms0jK3ZlWr3nqWKmpqU2iMa5woo5PcoSdmJCrw==","shasum":"b892080d7bb3fb964c1b01203a5d0637c30e5467","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601293034-38774e59.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcct5CRA9TVsSAnZWagAADLwP/RJSj/94FnOFja2y0rjW\n1kipp0frqccDxOqFf3crUhMejVwJoB60/pTdCQgb9kpFbpoYLRUZnO3CNo9v\n6zU0o4T1pn/YZFx/4vLPeYuWapIVUu2V1pHubeODIQ8llPC0cxGham9SCPch\nXRZ82l59z7z9SqA815bpu9uI8hX8OL7VQYByuhHiO0oU2uCeO75xM8tXBsik\nv7CCdKrrgQ2sIYu4LlR11EZtYFH2a4p6o5fF3+SF/6OPSSz6YA7Jbs5DKMDO\ntsuQO+l1tCsoI9WlZ2Cw9SA6v2qSIb6ZfBbYgJCwY3sDAFb2aeu8y4OlN1nm\nnrbWy/fTGmPfWRgMEwd6ZyMUZ6qS3RwoO9lAqQaeuW25hGsRRLzLLxuQObwh\naohz+b+BrLQRjeuEufcC5CiuSnfMwbFQdwRenjnGC6BauHgve9wtnMbt7yq+\ne+aDnSLRhu17jFiNRWWgGZnR4hIqIQ13hCYal0ANCKa82GN/gzzclsLG68rW\nijGEAtYVj1u4b0dPifC2IqJhRDzIFXDqpCnzNYp0RrNyzhaf6EEVxjAm6aM5\nLCEc7ClZQqXVcp+dO2LqGAw/FMLhsK9pWBPyrJFE01PXaxhTFeTkCyd2c+yJ\npkOG7h1hTjhURgVJVIth+pNPGvG6CwqH7tKLvx6iL6KXnSCIOY0TfRz37cXF\nT1uB\r\n=0o74\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEtdvT1KNmYtyTd+4o9yMWiud2+OgcCsdhvOQO+46SYXAiEAnkyoFntHrJSyaSBv9q8NOGwM1KwnT7yqX+tzNU4aO6o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601293034-38774e59.0_1601293176753_0.061094289443493155"},"_hasShrinkwrap":false},"2.15.2-next-1601293866-bebfd7bd.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601293866-bebfd7bd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601293866-bebfd7bd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601293866-bebfd7bd.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uMnJBgtoqnzXiaA4DkTBX7/MsJ7Zfxkd0MLZvydO4hH5CO9k4QQGhX+3pkIfj7de9g1B8v/PcQ/jplu8OJivtQ==","shasum":"a50545ac704c6b1631c77fba4ec78f46109faa66","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601293866-bebfd7bd.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcc6rCRA9TVsSAnZWagAAgtAP/0pC+QIC8VqRmnCnhcnO\nyYdFRmN9ZXjW/GdtJV9b5udXS6X1ebDzcbAaeZ382OFImTp5DzDCWR2qygtN\nSy+HM1HwkezkAh3n6fCOx6Cdg2QfWU1y1SFHFaf1KsQYd7jwVKhLVPKLBgRv\neNvgzm7YaptRAOz2GzFxroieRa03BpZ2DKHZo4s4v6RBWyMsBdUbrUFTQih+\nCdj4f/xZ0MX7Vl0MOTgXS0FvjEBs0IF/MKweVIYKW0MpD49YN4uux4aUA+KH\nu+ptqYpJ1JpN2OyqP0PjF40z/N6tINv1BwHeZdhz+QUNKaoTm8W6H1qSYoXV\noe8Ddt51Bx+hyxd/H45hn2y9Pw1N2p2mCtmi1PwAJV9fRLv7HRjk6jvMk/IC\n7h6BdtBl4WvJ6gapR0PwaIpcBXVJdKmPEWEy+2PZBIupKL0Y8xW3QhXoppMP\nRnuW226Yb7VmtLEGVyw1qaudyE8VuFLjc+paZyFrAodk42+vbPQTrouUj5AM\nc846JiZE9hq4sXmdQxWVsLBoKVoRriZ1BQhNbUL1xW4oR+ttrBWegwnA8rUU\ntfIX/+zhAoKGcaLho/KO1Tt68Q+tow53cV7w+6R1R7tMpknV8Rf5hyxuMDeR\npwIe7s03AM9YZUc/dZ9u91+1WcRH3/KRUbElKR/KtMux/lEQ5Dltul7kppSw\nCsSX\r\n=9vP4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3mkfMTfhQJ0i8K9NzmP6RbGGnkbQcjmP3abHR9jJqfAiEApyKOWHv2cU4bXwlQoIBnHdgQsPzU5WQRCJM+e7O1vqw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601293866-bebfd7bd.0_1601293995383_0.07228697541381424"},"_hasShrinkwrap":false},"2.15.2-next-1601294455-3908232e.0":{"name":"@xdn/prefetch","version":"2.15.2-next-1601294455-3908232e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.2-next-1601294455-3908232e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.2-next-1601294455-3908232e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7ogg4OeSwIXpa9DgRkVv6pjH8cX2FkrRAuL/94GD4izStkLSanqvj29GJWuhoaeIZZF6IF1Uw1Tqq/3GEw0L8A==","shasum":"83aa8adda9b732b6801f205c5e3b796ed7d11c5d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.2-next-1601294455-3908232e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcdDxCRA9TVsSAnZWagAAlBcP/RD/TNPjQzj9eGzQLLkH\nXsC/XM3T12qPNI5E/0EePUJLbR4gBDpocDC9MsJ/AnhGQSR+QAjRikXZn0Go\nC+zmLIhl8Y1aIj+w8e17mxwPrlPVn0sk8wDp71xfau196NCyXrpFPDs3vIwW\nKkzcHG7/7ogjg2IBzksa/jvA5YeKQ6mvjNQOdDDVSO2EcLCaRF3DWevf9qpl\nBo3D8H8hTTI95fpQGUOC/3hBd1zGOHnnl3qUfK1d6mFniQ7KEn6y33D8g7ov\nGhOoiAFEhJALFNK8pleA8h2tvKjM65es+BxFNU8lGALHH2EkX5f4HdjoKzsB\nZBntHRaDobkqpeRj6IK/b3VHRtt+zPMImg1sCXPihi3Y4UIMx1UiIedv1odf\nVfXdfzYSCWDYojbnUrC48Nuh/9U0nZSl7OGCMOEpcsAPWgbN9O8qjYWcJ4kS\nvuE2oGjraQlVRjRVajE8CNSKmo/zLuAPpp3NuCFN1n3ZVGIMsQKhgL9xOZ74\nbnlSqF2yQUvuwcXeK7XZESk8e6lDYOukP38JWfYDcdUqX3p7eBxXgs2jQd7X\nwxcmh+/GxOeLVIC0xcPe0JqgFsotD0GNcRfCKyqSVrl0YjoTLSEjm3rr0WwW\ngN+0ehNy9FjP/LKV/TOfTqHbDftTgzPZeatGOn/PBf9wKtWV52/TIWp9Hhoo\nC3sP\r\n=trwK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDB0Rpv3WYZWc/2gZ4/KMftQpl14+3ZDnmkUU2xwMj0pwIge04x+XJFugS9XxLq4F1Sc/gXDqQ9ryVpbBePyyNOlcM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.2-next-1601294455-3908232e.0_1601294576601_0.9976405469788816"},"_hasShrinkwrap":false},"2.15.3-next-1601294661-c4ce5956.0":{"name":"@xdn/prefetch","version":"2.15.3-next-1601294661-c4ce5956.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.3-next-1601294661-c4ce5956.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.3-next-1601294661-c4ce5956.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wOEYHcAsGd1cFiDavbjesGHoPKn6n9MIJg09XXTW6xOIqp0iXVwdiYXRI+xOaWOzMJNLf+lmZ1HMCrtfx374Pw==","shasum":"d98b522253aa3d17a2ca0a1dc0f5e51d8116985e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.3-next-1601294661-c4ce5956.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcdHbCRA9TVsSAnZWagAAIzgP/2ISMiQw7stRyRqEMpM+\n/+8QhMW2CwTy6FTh3yDG92dJ12l7PoTXadbT0cDEI8uDQppA0XY0U6I2V4QL\nCEB62OEAlbHDNYNds9WeB8ysQe+V9pzlr1g7yWarjrK1RbkInDtNyHGLDJKw\nJ0CEI5IZtG/1AQWTqgCZbpaUDbOkOBmSDuVigtqkTha/pAwVS3elixpcWC5R\nuuA44injg2aNuBHRMVsZ7w4zURfKwyYM+Bai/7mH5utatJWGmgqdJ8DLpu4O\nNlevm97HSAxH86U94n2J0udcaKB2rJocMNRvba9JIu/muvNrpD+t3UO1OM7r\nQJ3C50pG3pQBxmi5XaIQVn6cZ67rb6659tqeyf8z3Prjzg5s3//UMBRk+oKP\nsrrKWbKXpk1y1gyFt72QpgAGB6PEMrXHpxieqzJ3rur+kjZH6Ts5K9IFkg7F\nUuyyzIfBcruIh4leQhEQEuHryzV94EvJNbmZb9P0Pk+xn2cxh8uymSgcsc1p\n7pxx75zGybSHFxtCaop0+lLSvBGtGHMEsutaA6x0kNfC5z3g/2UvsKzoqlTL\nmM/YyXCpgYkE7C51qNoOpoArBaW7Kw/hCGMXtst70Cyt+gmkoWQ4ZDrw1Ewu\nMIkQMYdS8Ga9Ij7BdCLzJivjUCfUvCw7wj0ZB3uPBUz+9T8QHWRslXlUHXs7\nCHdu\r\n=fIHb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBJ+PuUL3+vT/iNRwHYpRie3dbltSXKFljsy0AMwQdFWAiEAiKIicJEvRA6p5Gge3Fk91Hc3p4+CPEJDE/Fblblf5Ew="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.3-next-1601294661-c4ce5956.0_1601294811373_0.03434895691413886"},"_hasShrinkwrap":false},"2.15.3-next-1601294712-c63181ab.0":{"name":"@xdn/prefetch","version":"2.15.3-next-1601294712-c63181ab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.15.3-next-1601294712-c63181ab.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.15.3-next-1601294712-c63181ab.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vNKzEctGdb+Wwd7NiJpHr43qo52d+VbSP40O20m4F3LmSj6L9cWNTxNYTVJEbZpUDt+lUYaEpMw9eglIBCFxWg==","shasum":"ccca5d7fc274d783b41f402b3bfcec3ea49d2971","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.15.3-next-1601294712-c63181ab.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcdH6CRA9TVsSAnZWagAA5TkP+QC7FDG+AAfjpn8IBeJT\n2P7LVbNRScAwWIx6/95+wM0sxx/kCzl9b6L5d45rwW8fjDSaTGgr9odbvHol\n3NTcuXtwTSVYj1BshM2kB100qRWnOiT43J/C+WA6RYCfDXzS0c3Cj6XDwXJg\nlq5raWwR9e9VoX9MFc0sQj8uaMPh3a5r3TeyYKqjW/MO6zNBwiONceZ47Utg\nL37STnNFanSZJinxdHI3jmqvrH+xsDbRUVZjGtUwIkFoNx6jjzqPDqiiNYHF\nCWOoj9yX+8ryNlln7G80r6zJMKE+a4BPQqnYpDbH2mLyaFIZFtBMDpQbtNrq\nKsuHq50aXeADFBF3D7dlky4+9w1Me9kgzRt3QZB7kQf8n+I0NDgqoniCyCAI\n8IlPY247uXKcHbXlPE7tX4SWy+WK6ZyUkErXBaHCrrqeYF3+7KEOL7do+oM7\ni1rlhAXHPDeF1wWbXeXXPOsdfC7CHf6DlpSPFnuJGyBkwQScgjyrE7k0rEU0\n3E75Tx0P1mJd9khXaZBkF2PEsjqiXUaZ0wZEluvm+VobtwzYcad8Sd1Vq3sk\ny4yp9LxqpCtLPRNA9cYAJWaCnhyjzN8ggWCHJQrblugUIFqDD7hXazu6BiSE\n2rpNR+FatqdvWqm+m5bGgdJj9WcMlpX1r8p9dul05hlmc44198tBhY3TZpyl\nqs7+\r\n=3/n/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXQ1vPeqpYcT+bRfPPuRzZQyo70U57QWrN1PbyIPSm/AiEAsU3JyF9wNOuVDQaER7NGRCI0tF2lvbMnBtvLCGjFiHU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.15.3-next-1601294712-c63181ab.0_1601294841756_0.3053585468824451"},"_hasShrinkwrap":false},"2.16.1-next-1601294821-998f6094.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601294821-998f6094.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601294821-998f6094.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601294821-998f6094.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CaEdi4HEMoP/3Ax18kxloGUTOwUz7NcUFba0AQAGw+M8YJx5zXHe+HnhSIaRGl7MR1DBjF+jtMukwNmKxZgSGw==","shasum":"4b329be98b59b36a58d4fe34732e26860cb5eee3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601294821-998f6094.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcdJ8CRA9TVsSAnZWagAAsM0QAJTMU5ek2f/rLldFRBM9\n55XKeD5Z2gSA/ng8u1PdJIjhtFuUMLWTx/VzLxkqS5kBh/0bVHXPYpjpZfW8\n7T0lYlHEwhhEjFMTDsaG4Z6HfkUXUuZsa+syYLsX/21ZrjXJin5g2AIeXqKl\ntVeh8zL2BrDSZ+Kk1mx2AziWuQIebhmHAt7rwaC5HxCDa9Xv+0THeztweBEC\nZplBIQUvAz1dMCNfmczXZZnvMnq7ncLGIrAwxvuURhwlo9Wm+2NOcfjRRG6M\nEDlynCXWe8QBfsAYGlg5OgmhTTp4LgBAF7DVIVJNMo2t5+1L8hb+4A4svdcF\nXqqQG71xgLymcf5UjzDiLCX/RFDeJ/GEPf71O+lTIp4/Oj7KCx7MrHhDSRVK\nJSB3qC3+1uElPKiHLTH0lcCsSFU49S4d3Yxv5A8B7uzQ87BoM+g1AH4zLn3p\nhKaIhmsodWwoY4vDkLM9SXjuTUL0o8qVkirBWZVP/nJo9MVxaZX9za0yrQWX\nUMAE2daZyrJyxwLoJQotGiiCoarKUq/6GwunxzA98nhbgfU7clYIP47OEldA\nPK3MarlYN22Z4BHcrHoWjcs5q+7a37QV5Zm4dQB6mEusAykIf7QZbcgAYFV9\nI4duVDSlveprOGOU5r6hcM4qPNnNy/Ah+2O2DVXNGOWOfIaVqAPbAGpudsra\ntFBW\r\n=BpnM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCv/2OjZo9y4ZC4fEexjwBAeMnQ2d2egfFwlq3SwWEBbAIgB9qzOLw/F1GwlmDoqGHzMS01CxMPIeun8QbRo5YyOS4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601294821-998f6094.0_1601294972374_0.3329928057223923"},"_hasShrinkwrap":false},"2.16.0":{"name":"@xdn/prefetch","version":"2.16.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.16.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-I86d7ccLgF/cztenrwKXT/Yp/wvVy7pnm9nVjV2OrHpEOn3yKpJAf1I5dwtSHXIdQfk4YjkaxBH+lzVaQtcdSw==","shasum":"3c5f2f3d98bb8a35977538878273190009a5d80f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.0.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcdLYCRA9TVsSAnZWagAAx2UP/3FyAwJ8xF3kGUrYMYT+\nHaJuqaWbVcj1bsr+6gluYRbodP2qdyyh9L58ktpQdAt/Sk1q6ELa849P1Zbn\n3aGz1MdvBiGi3zWjWQQJKTorT+NCmlco/FunBF31uAzgHp8/oZGsqAnbugCa\nAzs9aYdS3Qiojk6qDeRIIIJ36TbLkzPYCDZ+1TLKk4tfjJKqV/rAvzq9rbSc\ntmHCO8fYZRxfHoxZrpJagjNUiCdKBKhHNakrE04Wo0+W8X099yGFFVu4Two7\nr1z6yqIHfneFA0++GoqAmKmmY5+v2Vz7y/nnNJxFhnhEpDKnBzJkZHPrx+tr\nhzXgqo+ddLQKaZWkAvO9cdb11ZOv6K1k5riPcDs4972kRTuGKVxcfyYhYmd4\nKVBCYNeDq69SCuLwoNoCzXVAApPkkkdp8143nqmB9DYyr2wQv/GZuKKG+clq\n3l4wvZaeN8T7PwPhXH9Elyfa8IePu1cSx+ftD2GeVp6xcnCUzODz0QQ9QCM3\n10Xmh6JVtthjGpPI28jyjCHEsWVt3LxETGU8AqRoKnEP65i9KReR2pobBtMS\nyXBCl5fzAdvK/JQV7zicEBWD1lXA8N7tpAlyG7PcznAFh63KCNELF2obux73\nUGLsmmoF1zZ8TzMxkHwii2DXLSen4yD4G0KIabrWvUcHxY1hjXE4Kp+mI5IU\nHThD\r\n=jszC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8eDFBXsERc0qDfNUD3JJcHF6bPtJtkiU/YjYN9qWxfAIgaaTma3EpTxNEHs2aW1hvx3Og3MXZZRrWqQWMr1lkczc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.0_1601295064327_0.7612778972377372"},"_hasShrinkwrap":false},"2.16.1-next-1601308488-517e8c7a.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601308488-517e8c7a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601308488-517e8c7a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601308488-517e8c7a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N17hbUGzBoSa6gMW0Gw04hEXuPXN52ZNrC6/jT0NN8h5QsP5SWnVNK7P5Q48uUHXNbvmAg4EU8jV+E1qjt8ssA==","shasum":"67a77a7ff5d739e34fab47f4e03a70b48d39bf57","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601308488-517e8c7a.0.tgz","fileCount":58,"unpackedSize":126419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcgfOCRA9TVsSAnZWagAAfgIQAIeo+NSFXtIPa6m+4OhD\nAoUMNAKj4d/7/D4RehKFxqbTYA7h+esqnBC8uqyIUqIRzJbK9kjtq+/FiPUi\nV/PkeqBT6DWYwFGcbZkPM+Z9NQ4rg341r81OvQ6o+w7eEfbWnq+eobMa+Twu\nX/dP3+9rGTS6RFF3FgolmQiiXAooka9ZtYLZgDcYPMuWhNw7HIdBJjveS2Rn\ndDLPY3twnY4LvgWlBLM+NbHbqCnq7wWwIRFTUbfTfcs5LPezoG4KAUFCLts/\nSvSQwHQng7D1nYZDxntnN2C6bR/YZ+O0xgwzWEFajGjieG61hGiy1f1q2CkD\nJ8kOJI8+EICCGsjmN7d0mUhc51H6syZNaWRqHxZSTRZFHlTWybNI1IetLdhn\n72G//8HrRDPooaGV/qb3VdpeJN4LqkPAbzgxtWac//aR1zmQF8j1AfOGbhmR\nWgkLyxOppLd1VrJDGZCpvMtjJhnDN0onkOKP5bXdM22lwJvuf4uXFcXEwM9t\nXV6d6AaMIMLO/6awVsYaSznYxfXhxnb6Ba/PnQKgl7Yl3LfGsCZRYYHZ5li0\n5JjLLTBh6Nh7/KTzSa4KQq+hQ5WaocZVzwVr0subXE7IlRHhmY0mpcFcyw5D\n2bJ+PAbaatdy2p/PnF0Oxc8nqSMryKDphRjqazF7px7waOWthpAVA8jHuJMf\ntqAy\r\n=po4I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJOaNiwivJL57vdTxwi4voiy4aCjcPaYjUo/uJ71xd1gIgKfWd8XJfP6jz8rvGVpAWcE5iWPUoQo2jVk+esHamue0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601308488-517e8c7a.0_1601308621798_0.003733599944591104"},"_hasShrinkwrap":false},"2.16.1-next-1601312859-96023407.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601312859-96023407.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601312859-96023407.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601312859-96023407.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Lcf/wyMzWMhwutL22ljbmD9Rq1u6QJsBePmgKwh5FLNsBizm0WRQ8dReRDhWewOs66h9C7u6iOumI/QXQ2oV6w==","shasum":"4dfc7b1cfb1d6a4b0e66618f2b92c7bf32af3b85","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601312859-96023407.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfchjiCRA9TVsSAnZWagAAiEwP/i3So2/Tl+TzQWgPR8H3\n9qlIGzS0MKIwsxvUDcBqbVxQOMFkqPAWHGcv2pNYWrAhHGrIDJIF1mlnDxLa\nhRWdCeM1IQBEA01gp1ICWIdjQZwN8b2eaM2OsHy0Khag6+/4+/+mZpk6T4oa\n4TCGuepBm17FE7FCzc7VkMHW3sbepZTRn0G1uLcrsPVuVLHAD1UwXMG5rnB4\nTJm+h1QTrBR3xSOXaeqKL5z3s/0alFS7AzhJkvrQYL15r7j8DfhRCecmyNDc\ni0klwEjOq25ZmBms3ImskTtk7L3SoMsr0FeK38YIOH8sUDXJvgKNyGXhwnuW\n9pMYEsMgsC/N9f1eahyNcQd5jR6V5qY6pTr9e+IxfPqbbRDols10MPHbXCwB\nhAv4SDbUY4tO1mGFl4HU1eqXyizenLXo2UfOXqcp44iYWtpDeP9zh+BlAbq/\nONT2CFag6VL3m8eg6tecMbU6WFMICCQFNW4sgy999nDqfpHhoPWMl9JutcNH\nvLhENZYjhIk8WXBSzjJ3I7lbVarDmPeJjcUX2EZUY+Vrn+DVtTWxfpxhrhMl\nd9FhbDi3RN7Ahg5NGdoBOhCS/j1niqtWE21QNb5TNw65538Wdrnh+4QqVN9T\nWSEb3XSNFPUiQkcUFWG75zX53cDPlOyb7pjqnMdmUGkU2zE/1EWe5iR3Oy3g\n/cZ9\r\n=/Br1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSxnOeBgALrXKTmLhHcsjiTp/t/6efAAPgKyPfcPEHAgIhALyXcG97Rq9xPVKu8CadC2a6OOs8+LpEmRDTkHYmf2fj"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601312859-96023407.0_1601312994431_0.8534635506485189"},"_hasShrinkwrap":false},"2.16.1-next-1601313093-fb8b7b42.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601313093-fb8b7b42.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601313093-fb8b7b42.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601313093-fb8b7b42.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Bem8l6FofXxRPlqXC8BFWKgBA111eqJ39+JOPhG6O0iCAmlCT0HH25560ZPTo74j7G4StzlLyXDHWz4e+x3ScQ==","shasum":"d01245a55d0ec3faea0e5e82885488b2b71a637f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601313093-fb8b7b42.0.tgz","fileCount":58,"unpackedSize":126419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfchnACRA9TVsSAnZWagAAmc8QAIsuRxi5g582cxkzGmlV\nQFGIPf7Wo2xfkT2kwvsY7rIL3itWj1qxIiEqsP0nRZAoRA+NeNgyVTwDQ/c5\nue0d/r8Mm0wB8QoRFFdQ6uTNtMi6SVONBt1ycFaLLgP71g2xBB9OnlUARgDg\nc1nM9wSWG19aVjCq/8C+KN5r2c0zg5J4Zqm+A1Cy518zeAxwmX9ETIiR5ga/\nGA1PItYS0S/tlp/OqeafWQTUhKq0oiV0D8YZgu1efJITLuZnX4QBeq0HDLyh\nehKLtYlScFGs7uU5/PNOIkWIaZoUG5uWYl98fUGNO6csU3RVMg5rK8ioMajq\nb+a/rTDcqjZxo0rmED8gR88TDL5/r7oUgFWwPMNM8dpMzUohIJer4u2P/ipX\n98OaupnkjRnAOQ1TBeqnDqy8ep75olfycUWDC9xqHCK2VpUhsrquAWU/vEmO\nGMN7hUzIDVbhhskDP8PlG72PjY++ezRFwj5OG/QmOyBvOoZw7EhTatObtEbv\n+F1iNYbvkg1x2ijr3cC5gT6r71C13UQ/AJG49IQNiGZHL0A3mOOgp5qSoG34\nJ9/xnX3aC0IQOacebi+xzmiIyv48U5679z/oWFGYxoo8ZurNucuOsLxcsfTw\nYFq+Jha4WjppM1uLiQdDaDwmUQV8q546JvtStnM3mjmS3v1ue7XbFAIr07/a\nYje6\r\n=eDgK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICbyZKMC5ey9Lm6pcvAYchzbPy8CCsPYRsqdC5NBP/2fAiAc5tp/UaCPlDL77CN5U8s/ndsdEupTfK9lq2NYjkMdGw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601313093-fb8b7b42.0_1601313216439_0.21028629211236938"},"_hasShrinkwrap":false},"2.9.1-next-1601313922-ec8776ac.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601313922-ec8776ac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601313922-ec8776ac.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601313922-ec8776ac.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MInszpf0Qo68k905GSQgW+JTJMTLg9HS4a93ZIXeG1s8aQ3VP1pDNqBiDbfi6b2SImsEJWIPcSgy1SX5Okwnlw==","shasum":"0a7ffa8cd4f585fafc3168d2db12878469940386","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601313922-ec8776ac.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfchz0CRA9TVsSAnZWagAABecP+QDE8/FDgtOmsYHLdtJk\nwASz40+HeZ6Pn1+eZWpufsA2w+391BcS0TMKVqnh640d/nQ833vhBiS/wh90\n/EZAMGmMlUjl0LCN/DfexzL24G7Ad7UgA3KVBL0s2bNydmnK+2LpKQ1xRnbX\nNVHJ+yfcLlyIM+X9ARAmlG6uA/DwKF7QK/WrhOPNJwYWmqlFFmUZ9QZrG6EH\nh6TQsNUb5QNUa4dtG4ZzoyzCG87I68qXDCmOI/7O4GnMqAtEbtJdZgvFC9d1\nfwYNwROdGiKOioIYhsfVgvRUqhzDuLxgb5JNZuv2U/QFOm/qmCYqhfJ3fkOE\n+37x3ltk5MWWdYhqPzTYspYton01U87fwvyxpixFksiO9wfZZP0ZtuUz/UeN\nJG9y43nB4v6lCZoR4ZDv3PfouLqX/iQs2ApynzJ7907hnAZ8+NmFld4vAMHo\n9+3c4dxXKitCq2MWCpfHaoyDyO275ayP+iPgY42jkNlAg/6JXvll8rvq7SVI\n/zBLc+SWQU36UKRTHPnAn6NFZPVGQ5nwkTOlvQvAK6DWcowsPe6NE49fgSEh\ndEhWqn4ddOvcvRM06SRbuxj/yncwUZspZdeMzUaxVa6jMpO/Zu2rjz/HkBXp\nf8av61wadeh60ih3VOId/4TsW/5uB3OWSFQR4+7Xw/1Rtk26aSZ4CblDWsCl\nfhTC\r\n=Ce0O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEeNDnesIDh7rO/rZpNRLR4/s/HPWxdcxqUnH6zxD/WYAiAobpkHWDS0udNzXFjeVM5JIKIeS+ohvoMpc8FsQHn5ug=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601313922-ec8776ac.0_1601314035564_0.8801902649229252"},"_hasShrinkwrap":false},"2.9.1-next-1601316133-ac7841a4.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601316133-ac7841a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601316133-ac7841a4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601316133-ac7841a4.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ILQ/f/82hIZrS1OpjLua7FRUKcwguUthaZB53sCkgako7qSIPVSRkMojTBaGH5mTV6znT3WnboGYOvg++iqZBg==","shasum":"ae03ad906b82f6bbb0a047a9a3173e0c034da637","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601316133-ac7841a4.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfciWUCRA9TVsSAnZWagAAWxkP/1+QVWaK81B9n+PA4PBo\nbiQCU/JtwTXFsmsZ21t1TAl4j8vy0v118LcZx5XDM8mB7XJGDQg8odhF5YZS\nccJb/dOYKPTWQCVdqC66kuHmwxI09GY8rl4OvuwU/Dk+SiMP0fUQBrFs8kSk\nk8/2WZaEgCRivzgPne2ExKmij1Q3EauNhj73gJvPzgrTp6+ZXiL5qFtaoVw3\nt7xlwmnuy0FUnNmWaCR0Szli6Q9hyWgeTiT2rBI7BVGhyz7nvflgEtiemxun\n+HbjgNBR+x/WhLa8YWAqSeAZ/LtN+BAbXWkc4h+Ep+zgMR3CFvrl52KI6Fgy\ngbWeUgza3QgcDrIuEysVFFr48SPAhnwcGepChDl5vDXVZnoLWCcUxSshIkzB\nQx2aynV8p3nlFU5r+0HkFg4txqSDbCbpyUmsaIT2YYiymwj0bPeGWAx8XJE+\nQcYYonrIrxtrk0kfRDPMiySGNOzj8aPN16NvpBJhfoojPknPjacJEdK9URwd\n+zoTawbI2R5fnAPJmJrHhzz6FzsuRDVeeY5a7HN/cxiBkLKWo1EhwL+/wVsX\n2E0mkdLQO6atkq6WTMuh8eSx/U1f5TojNFCDT6muu11iRCU6vLNki71Q27HX\nEKH+63n7SWj1eoRMRPu+9luGAaxXdQE7VZZBdNMLeKUykYPpgvDDqsi/XXc+\nDK85\r\n=N4ZO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzpztnKIRsEBxeRbuItdQDuq/LQGWTEDt15BaeO43GxQIgN+K3mV3hkbNm1Aky/+fYMT1F3f45AnJsz4FLf4WBr6U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601316133-ac7841a4.0_1601316243533_0.9159746291357074"},"_hasShrinkwrap":false},"2.9.1-next-1601316407-1b786e00.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601316407-1b786e00.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601316407-1b786e00.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601316407-1b786e00.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Fg1cjWerdjv1Dq4zSK+R/r6rMfTtw2KHQ2zExcyhbV+RlHS9NGHLymoyE+hT95IqLkiF3XE7b+DdX+dLcA3pig==","shasum":"de55d3385072cac29be4701910e85b02d83dbc4f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601316407-1b786e00.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfciavCRA9TVsSAnZWagAAJkYQAJQ8D7xxkyhWvv0KoULd\nDo2jpDXVdfvTG1sObRCmsj3PE7Q6L2YPpF9LbXiTt5SZt2mHmHw7wQ3ZHEdo\nCo0j2Mcsk9rN2bR2VXYWXJPt2kfvFEMTkhkBKExiYp4bxlM9s6U9gdlzrP/8\nBej5ufkI0zJq1uAaHZAhwRbQrFZUCQQ8IE63q4HjehnFQUSsXIGOwmyHSAyg\nicgUgZgKamTJ0C+6ayTr3sR+fj0pBOCnRDVO8a9Xhlq+lI/W/DI50BrkiXzr\nNM9kLiycw7OUDoaWQ2/Wy3st6ZQY1it0uNSTMIhlu3MiJBZ4QyvpTAkxSnne\n+H4/MYEWv5A79+XejKNtSC+gPv9b7l8/X5Ioe8ktwa0RrVAvSoZ3ifQ2xVFe\nz1a6/0D+KUqqMYcp3Dwn4MzhQ4WzW9x0X/CPIXA9SaBL7x3VoQqgHo5I33sg\nNiJQ1RVdwCB1tzNeLGraqfNsIEVZr+K3e0IT8cWRBmwjdeWSAdkDDxLhkj3X\n9p4h+euFVQVCECeuQyfoXlPttjYC+pOB7z0itJOolUypsX5gRrefJwEK2rBX\nHOTe513XUfhj/QdRiyKxSOag4Z+Nm/zJ6Wmq4PsU3gRvTdQ4G3NUP1ilU5q0\n+2JBVi9APjHbkAkZMBToA4wex/aQ+c/hvAogsZ3HtmOvFe4jt9Gbsby1vwMX\nyl4H\r\n=H/5/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcTkUlj3lqwieIb75Hj8/amR9X6FFh2+ZLtbgQugEg+QIhAN2DDzkssyzm9NbEFNQ22NMQ+VQG8DtWxrLE8Mr2uD0H"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601316407-1b786e00.0_1601316527190_0.1286301673528245"},"_hasShrinkwrap":false},"2.16.1-next-1601316813-fff2bde7.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601316813-fff2bde7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601316813-fff2bde7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601316813-fff2bde7.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oMPqupKQj81P99+kYNHX5maqppXVfMtmDN4z1BjIBNaV3f4ReYJGEmmFkXDuSZ5trUETYyC+uQoTq4ycqFxeWg==","shasum":"d48644af53c3752a3c1ab547b06b76aed42305e7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601316813-fff2bde7.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcihRCRA9TVsSAnZWagAAuQ0QAJi6EO95VptRq0HE0ris\n0f8uKoPuDpfEnu/gU2Grefedi7KHK2ZRTPpL1IULxabZCd0bGdaG2LODX0KN\nCKhJXWEUOL2htJDBc+fVGvDLABcvF6IASshqKeob38kkKTP9uJnJiF+FhCG0\npglbYsXKPnvbD7ZoOd3G18HRBUY+eLYIc6o2baNPD98XefWzXj21J8Eh/xb8\nse59tM+FLCQwNT1C18Wsk9vMW5+FkfR7zW9R96A2DW1RpdPi6ZJ/H12xHNte\nMvmrmnLUJokd1jJblWLmvKgbbMj4DZ0myantqkVB5jLjs2xM76mbiZirldtL\naQvrznlxCjH2RutR+hl82hMfQS58UOKjinsce7GMucKGctMcvilPjQyI03XK\nDo7Gqw+lRHwWC/+R93asChsuD92nu3yFUmEauxif2a/Q/WJQmHklrsDVFAW5\nz4N1Fo8kEt/DR7n1kLfMMAEMURCFby95BLJStfRMQsRtIMrs7t+9pBrU9kkh\nfQXEMGmLu/bWrVKILz4zV+cOi3zMmNgN/ib1jRItJqyipWobo2QhPLPIOodD\nELCjS/v/TjZQW/2G6xgJWOYX5vscyDVFWgjcVdEUOTtsb9N0zniUwi06psQT\nmXs/IKSui+50XvADnLPlMoV/QxowgPMMQOjrhNvbdH4mvEdLtKOMxHJ7R1Sn\n9NUn\r\n=ArIu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxLRGWdrSuf3LeUlpgdFzT89IdcbuaBDj8jvwXpkT3oQIhANAKmcxMj8SxM621OUHCsOKT2yBtvlJOuYMIwcKOkEOe"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601316813-fff2bde7.0_1601316945374_0.07018413695197534"},"_hasShrinkwrap":false},"2.9.1-next-1601317779-507e3786.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601317779-507e3786.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601317779-507e3786.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601317779-507e3786.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MaY3AhAgsD9ZxGyWEOAfPIc30rmX/lJDpq/scRTp2Fpu0yUQG7ifGecTshBwNqyjEIdECHZqzv7u6THu8dIvdg==","shasum":"8b9dbb152373096d5999ee3e4723a39bcd3e3241","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601317779-507e3786.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfciv6CRA9TVsSAnZWagAAsEsP/15DGHB63z9/PLhrMrYU\nl80bf5F4FLZaFQ7LrYFsgKntCCPW05ZuYD5bT90VzWYXYkE5Vh0kucko4GRo\n05StpVuVJQLfeUaO18UW/yY0vfMvkrq5X8KOsc0qMcE/BXRqnmcVLK26UoOS\niwwuFOD0fiJCuILo9euBfuO7Z1b88FUivSW9mEfMyhaR7tAYrLU3bCY6QnVb\nS+Yh19HOS1g5cmM+GssmLxw+SUXA5rxJqez/W/KUleqV0WWnZjoDxKyPeBaG\nTnCyg1BNwii3BuCyhzbPhOkvRSZDKlk8DcfehwzaEl2dAzvNiKYiOs4AJ8Hr\nc6iVhk0ESd6LAwyGBK+ozbn+VOppGzSjmCGLL68q89uunQBL8uApD3b6xe0t\nqzo1NLp/PJWxCC5dufM2608vciTqElL2PLJ9ksMlI+lMLQOyUv+Q/Tf23x2Z\n2Bh6GwS5pqW8sxBjISLEHfHRyBhKR1cg0RDDXDMsybdRr8YUxQSY7/qw/jI6\nQcV5wDT3IIcvi4zGpxR3ovOgKZA2jHYbGSWkmYWaALKl+Zi2po5jMxecXg+L\nuIwff1Pe/WODagrYToy+NKnAGUb03P6ln0zS+fCO2v5b6MWR9YxGJCCOpPGR\n4QGs3Y30IUIsGdS8qnxbv0wk0dYXA+EJw25vviwLGyP0SVHI0tZa2fVe4S3D\no8rK\r\n=VfLj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiLs/Hdj17IZVAzJCtLq8cTfh4hbils5N2m1ykybHxkwIgcJ10tIqQJLdRU/FWqDJo08HRYfyiKtFRuFexZXL/ik8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601317779-507e3786.0_1601317881789_0.19281720197286045"},"_hasShrinkwrap":false},"2.16.1-next-1601380450-e61638f1.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601380450-e61638f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601380450-e61638f1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601380450-e61638f1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wHdIZtXnUaClrtrz+t8ufDBIiOHzUYy7KmZPcLzGwCIM0v+3+VGuG+WuwE95wLyZhAghA1bxZ6wp1t+k6b6Tvg==","shasum":"68c83c440b7c64f7acc1978679b407cf992e1abc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601380450-e61638f1.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcyDaCRA9TVsSAnZWagAA0csP/1ROuS/fu+pWFG44NzWU\nld6h3JIVVb1G1VrUW87u13vc/c+i1Q+fTudsdpmZZwyeSPQXTDw1JbXo3QBj\nub4jYQoLobEGg/D34lsVZh16jfhPIn+Nqucn6N77yHN8r5sBBOy8VBNCUsEN\nt8sqoEuuxVnmuWgRrWMrUrj0KnB8vLyJpRKvT6b634fG2pjCuvGXGXG0e/e4\nQh6vMdkNabB4z1e0PNHqwfYDJnP4MWUtJhS1kT5fFNJxoEXOdcyOxU8e54CW\nOhuLd2DXpWztHxY3Q4IeT4uGE3Loq8o27eKtEiQNvINjZdoFE4kJke5+SyqL\nuIAn1MssAu6Mp3KbQnZqJeI88AYTZJbfE9IuhMHNz8eqO7KkoOe+RoAQvC5Z\njOtznReUyDzqyvcuxzYOmDT63HVk+taAikatXdSsn3XoUJOsXIOsceLDhNwQ\n05XsYbjQevAGzCHJChHm6iiYkRfN1O6jDLWSR13fZJGtLJu3SRzcKustt+HK\nt/uEx+PT9qFtaBHIRWaLBBpq3/xqj0i9jgd5lUEuuyz1crLpmuasg3vJPni0\n7+DGO6Urzwk/AikUYDH3c5jHKRdsNRszoI8lKIV4+jsUlThWorRrs7e68V+q\ny5qZthxTwnOOKiEwJF9d0BEzvH1i5s9Z2kLjhG5npPJA3Vxa6Eab/nvESYBT\nPerz\r\n=4fGo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+2EzvtCwyi9iOPoA7ZjjB6CjrI2ucCcawSFnrESYyIQIhALNBYNxWREwGKPK8CQb9lbE4DeLhMgP8fxP/7KqNisik"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601380450-e61638f1.0_1601380569718_0.34872516934418374"},"_hasShrinkwrap":false},"2.16.1-next-1601381873-e61638f1.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601381873-e61638f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601381873-e61638f1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601381873-e61638f1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3ghb/0wr6wOlVKQSLrhWGe084lLpOVBGVn1XyPy9c34czV4QsQXEgVopoJjYZa9DZgEs8W+mXN8HDoYx3fdNLQ==","shasum":"4a0d3c092668c564dbcb72559c2336b1ae3cd88b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601381873-e61638f1.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcyZ2CRA9TVsSAnZWagAAsGMQAIVkTfCgL6rT4dRWboRI\nwdC1+qM6Ivx1z4T0lMkp4sSEtU5iPYCAs+QYj7ELEK4ZyIYdHsMCHIOE8xs8\nuHMNjQPwUuN6fF2pjn1ykEiXY3gaHE4IHK73LMOo49oqSyhZz8NCPxznaTGx\nIY2n6kTcu3K3VN1HH0xnyzJz+G1Im3tPdl4jPvdPnYsRZbyoqPssdVdtw9Mk\nS86OrDC8pGhllT2uWu0DgfBr+4YXEa0MPwFDLN3x3dl681jumjTpJq+BG1YN\nBIEnxB7HC/tePQf8HK6mrSQsixOw2oEPp0IvlC6A0JRX2WU41qtuLwcV1X0S\niPCp3Tu2Xgcq6WZ7z1uZsWtCLDD1z0CHOl7SBWAQL7wXa1YosmeI/ZUSdhAP\nD1WpA+tYw8mtfj5fIWJ5+mJm6O7Pw9ePpUvcOZCp7IfwWV7p+7NMzNzJSAVi\nfHJ8WYfntt5HAOSNoIUTUYogfL3tAn/1vmvAmipN9MgMwj4/OL784LZ1XSF/\nK+U1mszX9vKXkQNJoss6K8GQBZmuUlJhzT9WHII7pS5Sbx20FScp7sFYZ2p4\nHBFrWCYB8/JZ+YIeJAkbTeWLbVU99mFU6BTCjI7I65GV/Rg8Iae7rAMvZ9by\nH+zS7bsNZGwp931+jaxUtwAZ37aPzetM/pJlfdMTjofazOak7J0tlvVS8ZIT\n76gT\r\n=ygSO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGpRUl+5AkAtkxthcEL3c7ynaqQiNIaISantGazT1XI4AiEA4CvPyTJ8noZQD3B07fjtTWT9z4Jurl70uFQjh73XSCU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601381873-e61638f1.0_1601382006331_0.3519170384764492"},"_hasShrinkwrap":false},"2.16.1-next-1601388310-50f56386.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601388310-50f56386.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601388310-50f56386.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601388310-50f56386.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wzCST0vwEwtjEZPGQ0KsV4Jr9WJNou67z+o6GZTvjh1O7wT5abHtfPX97eKagjytIhFjuf//gc6R7iZiibYjlg==","shasum":"8d7785d7778b99678dc307c353f023ffd0ada16c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601388310-50f56386.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcz+cCRA9TVsSAnZWagAAZmoP/3rAXTAylyd7DWBrNLQF\ngUaNqR8CIe/1nIu6LEjdz0doFT6qiddDGozBuiIKttxnjpAEuibdvLvw14ue\noMvPs8KCxKg4vq9hHwfsoMJ63wnm/9VIF2tFvfO2m+InFG0Lii5nAtQkzZ+j\nW6Zv51+kOtX7THve5HriWrKRr6QhYeq9u+yE2fu+YeykXvn4bX1hN9/F9Thq\n45HtVDnqcRtBdMAmJzHGoMUNkVWjKQr1sTaR3TZkVnh2hEW82OPt83/hJ1am\nD37Esx3/QnnB/TaaTnleBwmcSjKUcwLEyOuKw71aC5C3QJdkyzJPwqfoXNjn\nMg99xtfDUizSplJU35xotjIXc5r3A4Mj9keVUbtb/ZJ4JmjlfBg32j6Tsfwa\njvRqBvojktod2fVmoNjAyPZbxuhbwBQd0K3M9oSh1Bqb2ArGNcPvFreLMtwc\noCL20rI/1Fd1OZpgkebxGdrvsej12nkhxsPZx8/149llS+NHrDkfVjeVUhP7\nQNMkB2hYDw2RBJ1fCboS7X006sqIeBR8S/jiaq6oi1Xu4oTsVn27+k3kpVsn\nRpd/rjrzMVbaxA3krNujB8yQIvy7fmDnOgmmV6ktx8fqVxgz7crvtRUT73b7\nEts1VJKAHyC9+cXuTccyuL4IOQL40Ib18kqktrn2X1GDKPsYFGRZlJmbCzJG\nR9KE\r\n=ZjB8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUftoa67J87dfliC/T3hlT2xC77AYzccmAPhTLYNWI0wIgS316vGhj/NG66W3dgkPuzOo0sLNBofvnUmEFBGPxWmo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601388310-50f56386.0_1601388443730_0.41628479132671137"},"_hasShrinkwrap":false},"2.16.1-next-1601389644-391a8974.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601389644-391a8974.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601389644-391a8974.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601389644-391a8974.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2z8PN61GttvnP001fKWZwoh1EJBYi7o613X21/ix/pjEWws+8KyDC6gSn95noPSGFwyN9czWkri49qn8RMK78w==","shasum":"fd2a41d3bcf346721d23bc2b150e06cd4bdfc66d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601389644-391a8974.0.tgz","fileCount":58,"unpackedSize":126624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc0TJCRA9TVsSAnZWagAAnZYP/ieoE5vbZxmja4dG09mK\n6SFdq/89CbzompVDeTbFiRTJpVQSJplpuYWQIYWmqkqjII4fqI1brHOAflgs\n3VgjU3+C2gYojtOb/YtMk8/1UOZqWgl3gdGP/fNrQGxGLX3lZMAkA7Kgoy+i\nmlhJEVeTTzhgkHL2A4lzSxtgplTvvKBeC2FCYwoJiFgPXP9VD9lTlbEfGGnn\nLygYyCll9d1Jw5v0s9n10wo5tjcReQGg4yhXGgHNd4gXVvm69b72h8ZA4AGE\nOUTAa0k3R4jXgeisfvuRqi1FLpLLAKLFyofwUnkvmeywd/Vz5yKPKnvGRAM0\nZcGeA4qSjBzgGIzwJhDl2zzx3hWRKDJ3BYHfz/RZxS54tKk6NoC66FWyrX5i\nfeef1jvs/XF3JIMuaag1YTHZSXrTHhgCyFtjzwF06VPgI8bnZWv/lU6sV83U\nSSIGGkfZTJ6iRGU6kinUQBnwxzjt2tzO7D3IzjYJFq6c5xk4waiCtjD80K8q\nEmC8dvKaSUrPk7+pFmaIC9X5/KxuaAljX8Mpc7LcFxP4vpsvquklGyZDqRD0\neQMQr+OO6rlNH7CRUQFyL18mLWyhm669caPxW8ECzHqtisj2YOcKw3H/MJIz\nq8dj2+eOodifubLJilfF1SnMVc4AildeAV0N3EEeHuEwB0S91XEf4ZvA8ky6\nkc2M\r\n=63kA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA4OXrKWnfR+enfBzl/e/pBTV6Jx0d37gxv4r8+kHibxAiAtvmSG98ntaPr0gY204+N5ajRMsjOQuBD4VvNqC4eiPQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601389644-391a8974.0_1601389769070_0.0014279836560826542"},"_hasShrinkwrap":false},"2.16.1-next-1601389898-234c8dfd.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601389898-234c8dfd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601389898-234c8dfd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601389898-234c8dfd.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SpKBj6gpRPIU2wJSqkOchTfIMPezyS+gSvnpqMspRv5L5ozC7B+jmCAJiaBEF/ZvmBMNQMBftqSiKxvWokJgQQ==","shasum":"1cf0d2e38c5fdeac42a250183312ccf5e0fc89f8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601389898-234c8dfd.0.tgz","fileCount":56,"unpackedSize":106513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc0XXCRA9TVsSAnZWagAAqMEP/0DkkGbQmrTiYj1iXyS0\nHBUKi+Xt/xWoZGTNTI4mRVVWIf//ycyuA6Wsxv3khHpijlWABwANiwntXMuN\nquqMFNEhJPrFhKUWmLuB3YNbb/R/PZqV75nwQ8p/h/+MRXWD4nuXYPSkkXS8\nbEgAnvq5/h8TRMTEpSiryFratZKBvEGaJbqNOwtuWIrBJ/ghnOL/N7EWZFQZ\nPDvn5n5jlAK7/cGcZ3yYkzE+p4lpye3BFpSo0Iuf8u66nkhhR2y10dh6QLLo\nWuMmb/c1AnuifV+8VXLFYlVRsdy1kDFE05fMwMGPwIMlzrXRQysQv+1EWhlX\n5gQkUh82tjYRoGq4ih79wW1tacM7Q73CU5vNEVpbkixHMhWWnJ5cpkv6Db99\nufptbqiF/8D56ncXL3AGQ9U5ui/GOGGMgGHUKwXvsZwVNGmeFbPDUvKePMaH\nmWPZ2Sexd+tE2PTcUXgeHi01irHyruBF0BhDlyeTzFDSEL9BSlA7zYqb/s8i\njnKsJ7P8cEzuLIJWXM+otr0T9mtBEye/vXUAJfvFhOeqhmBfMmh6PnV7xZOF\nBi2YrfoB7YCgTknV/IoroYygKGiC7h59YxAiWymO/IQvVf0njpAviF2suaGE\nGm1RbPs8robPPZaglal+Fv1f+ZSr8ZhqtAVHhK/7/PEbcz/6bmNekXWqZ49r\nlRiP\r\n=l+BF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAgEsyCGThaY1p+AYgbbgEKtc6KIpSt66aMuvXXFMdV/AiBOTbEiWzHyxcdDw/8u7lZbK0JpmAalum+F/hKQlCpx3A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601389898-234c8dfd.0_1601390038687_0.12899912468263208"},"_hasShrinkwrap":false},"2.16.1-next-1601390836-d227e703.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601390836-d227e703.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601390836-d227e703.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601390836-d227e703.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-bgKprUkGCZam/XjgEzT69Z0ZMuVqZmOh2LasyLBN6r7eE8WF6Pdu8n1NcDEAgGgetdII01QGtTX8Srt1UtvoTw==","shasum":"11919d9d59bfbc746f5f68a912c4a799072fbf4d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601390836-d227e703.0.tgz","fileCount":58,"unpackedSize":126624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc0lwCRA9TVsSAnZWagAA0nIP/3HnuOLaojJIR8sfsPPb\nVh3rwjNyblNbyqfPRjm7ElT1H66mT0nSp69mZoKYVWvr+ipjUKGFY4T+8mFo\n18ZzmehY6XBOOAW2XFhlDTV+Qs459rfBUQvz8sd7FMP+5LjbIhpYrb+rBFeV\npQMpBu+cIDIrWkk6UKbRmrhO/YO5p2Gp8llIJ3iuoKDwiyWSXzP9tr6QaqFn\ntAyWa8uxVBIUd0TexB2ZPVXyITiQLa6ma4po7/Roq9gtnqa3Vfl4lmkBBJVI\nwxapjghh6ZGc5BL7qDPFTpyDfEZkRTFTUq4IVWnH1zB1Dm1SdA1twXmNVj7i\nUnsrSxqLtsBrHDEDudhb92gda+mPH6JTN+n0m/WdyCa8k7PLrOXLuCc06om/\nWtaZB2Uau/gJDqT2jQpeK75gDGrFToe5dCFGNlrTNo0m7J65ymhaa+8XNwGO\nNXxe6GjthE37tlXJbp09kUSGS/aS9jrJzBoqtDoer5DookQXe7A1o2KrXieU\nNpXvD4GY4XboJuA40cojV74SaqYUHtNPhbhQxPEuPsly6JxmwvkEbsJgLGPB\nyYboJeJb2tyPRtMjvDovhDgKtEAvVOSD/M3qOte4wN5PC/CqfMiRDYEGSJRZ\n0Sv8nOKPadLGUtC4URLZdtaskaQHQoNrxWFwXJZCw7RAPUYPE135L9k6zifK\nTHEq\r\n=O8RW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE6JQCeF7ipunSvfV/i50cIU3De2klf318zDr8uqhT7zAiEAhCS/xLk0eC1MWbrkAjhueGc9mkM+htZcatO0Cd5Mntw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601390836-d227e703.0_1601390959838_0.25469170665026075"},"_hasShrinkwrap":false},"2.16.1-next-1601390946-a93e6976.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601390946-a93e6976.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601390946-a93e6976.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601390946-a93e6976.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8T4bVJcESdB7k/qMQRMXcrvbeI3TybJ52L7e8V40ll/PakXWIR2/EnwADy0wFBemFLFt4BP1iVrd56H9BdyEOw==","shasum":"07a0265bfaf60208d2c339ef7d192d42059b2bd7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601390946-a93e6976.0.tgz","fileCount":56,"unpackedSize":106573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc0naCRA9TVsSAnZWagAAS8EP/1LiAeP/SJrfWRHXz3b3\nxIxRRQ8LfSOVFV9/N93AO4A8rkUrl1KseLx7UCXDvVQx8lN7hy1zgJjWcELX\ns66EW6KjXsd1Q4kcad613pNy7t1NDhj9xp4VN07gMHaw66d4DGO7EVXQkiUV\n3cBnzEqzhkYAz9Io79M1rkWQ4cJ8f+ju8IcdYAGweBJVhiW75Hn3eUlv/c+o\nW9ArPNxTEZbEN43gjvEgRdvNcYDrZylEe5YYXXFeQcAmigFCVIAqJ6mTdrj4\ndNUbRgq9L5Pd+xfDIKFFmaYJfSX3/aLzYaJqaR+0oQV9JKezBG18NO5tpxq9\n7Out8fj84N19vkwAbv/eflp/+D9/a0loQtA2USSBqJ89aB25YwSC41AWZ9D1\nYd70TyD78Q7Th0df/1pXLRwg96aX2cszkSe74C0foTHyh4Njv7MbPNEVn3We\nWyL+YZydE/AxAz7A2FCWqyxhYGPnJRoTXak8c+CXbADr2V5BEtWhaa12Hos9\n1tfyBqc3bQykc08yhoeQfggLIYpEmnhBUBAa0OVzAdASkGJPIplX9tTWTX4h\nS3tAsK35IxTxUCcKp8tQlA6HKvsXkWoCZHs/2YoZCZLZmIWbh4iNU3xcf8r9\nz40zG9JF4iODDZAW0YLE5aWc+axI9sRxbtuW4z5y3fJDV4dwWVm8hWalQQYO\nZ0h7\r\n=yiCA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAtjItr48HA0GUoUzaaS9tWLK4NwEVk09j3hYS8RbcyZAiACxt3nOqM014D2V4szCTKFO4vsKpkWej/V7ZIid52Heg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601390946-a93e6976.0_1601391065695_0.5852999789962523"},"_hasShrinkwrap":false},"2.16.1-next-1601398946-b9c0a712.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601398946-b9c0a712.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601398946-b9c0a712.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601398946-b9c0a712.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BbLsCqBxPLGd4U+mxr8JpZSHgXYJLByFPCtmNiD0+sWoTuart0PkdahsS1G2tHFGXnbutlWzVKUHo23re9MyXw==","shasum":"a001b383d4047e965364f843d07224b8fa51992b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601398946-b9c0a712.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc2k1CRA9TVsSAnZWagAAOIEP/0jVign4G2Fou+wTHVC2\nz9SMBvplgcVTi0C8EQIwDB/DyV7u09uooaH5DweoCcjBU+VXnTO3FO3OpTCa\nrSx9xUC6Y8ScGaRRkXI258xW48dE7SF+2E+w5rsmQA7AICL56Vuvl3KOJRwn\n9dcqOJE7WgFORI5eRHjWl9Jw0XctC3IycvniWVJNU7uuzML7D3m0OSs+Vz99\nluQOO+mhD2dHmtoW8msMfYWVvdaG7KJYv/WCaHCXZ0Q+t/QXwRuUO36dfFaV\nywn7iyDgRJLF6jbjSXZLqSNaZT8KCFW0JBbZFWtGanD1bMnB2kInsHkAXiWY\nJTuifpj69+o5cREVcNL/voXqkVagIQqRFs9M8WJHW6RsMXZ3IBXGLDdEZuhP\nW4nEftGkh/3TpyVFzPDmaa4Q17rE9/fUIoaofflt6DYkRe6Kprkvpoo5S5Mg\nntoJVJi1zmeKj+kt1tIPWL7t8q6p+bKEpo0I/16TeyPIfiUEmsnRPTRGBwxj\nWex44RhMr0v0+izitj4TXuvMl7527Tw3Y5CIX2R0ZBUHZS/BM24Sc5Z81XkH\nK9BlNrpjwCMk0BVZBgRsp1UpIirO72IBBLQECw8u4b/HLMylHfCicrg0YA03\nbclmlb6W2ZqnRucIR8hZgyRbkuiz0Pm1mxvFTXUnlzRFJeLGOvHVsI82p/sb\nW4a7\r\n=bbxM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEokCvJQcnmhUaFohN2fouE9X8GQvZfHyrsBrN042YZ6AiAAr5OkuuZUGOszbNVpfXHwgcYCd9A+UGJWQxNVTdZUBA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601398946-b9c0a712.0_1601399092309_0.08109440107966082"},"_hasShrinkwrap":false},"2.16.1-next-1601398989-d37be773.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601398989-d37be773.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601398989-d37be773.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601398989-d37be773.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PC1vZ1pwNIreZ6czawTNeHHIcayHW6KGzkvcjKVSHzeX++Z9b1pmZB8B6zfWxIgRyM6Xhelrl2IGzvBGZ/NOIg==","shasum":"72b697e395bb2e71c269920f70cd5552d17ccc84","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601398989-d37be773.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc2lRCRA9TVsSAnZWagAAm0QP/3cU3VR4YfoX3NeyihHa\nP1R5imiTYdzrbAGRRmepkf4PtF4mOCNK5FPEpP/8xGewsnKHiJJp+7E8AWQQ\n03yEepMscYXnF95xu2VNwLAHqaxEBO5qtZin/1KAwqISq5lDNfZRRyu4mtsQ\nQOFVK4KgFo6YPVw62OdztRIHETued75/qFpj7AFUT5IOqCeZAa5a9xaXHOPw\ndEVmeU6WgcMlG7y5m3q8ZMz+R4xKySvhQoRdycz6HqGX6BjadIymZb/HnpqV\nWZ3CAptlKY69A+WxCfBpCIvMWS7qWp+PwY+gQVDaiOcNFzdYW3rmvmMz7/rS\nK9ej5+DR3CHRN+u1IyfWwhD1r/2qTRJ5NxldDso4Xu8/7pbOdI08AP4RNGmu\nT+PY3DUJEIGstGm5JZ291Tvi3wIhgLWAjd1IFZqWmBVL7hcg4zp0lH3Z9JTG\nt0KoVf8PCMZ4KnfAFaIeXf+lGNM8eTIhjM79eO+DB1alHv1sgL+8D7U6UUPn\nbWmH+qZnvCkh0GxcMxuUgEpYXk0USjMEjhXCJEFdlmtV/i0u5HjzF0RbusQa\niY03u7pJnN63GeswHl4XqnE5/usSutSvqItM3Fq+InCPPp4Vu59h24T0ycrA\ntmdswPlsHYLoV5eIBq2tUwA4cwzURrbcTCX/7quPngn+iLd50wz7oEhJzdj9\n4jTQ\r\n=kQl3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCltT6yKqM/gxBU0J55irJz6TANn1LvXm/P5PDjz50AXgIhAN4+WqwBRvhMcYi0SVh2mKj3Lytcy+50pZ7yLR6ImrAr"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601398989-d37be773.0_1601399120934_0.8760623433971058"},"_hasShrinkwrap":false},"2.16.1-next-1601399009-cf63866d.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601399009-cf63866d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601399009-cf63866d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601399009-cf63866d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wv6rP4OTrTk+ENvhRbneHgLcUwsDL64vPvBxjYwF/EOBai2btgOBTed5XuQX18ptVm+um8v32+4IBLi33ypYjg==","shasum":"ef39ba2568a35e80f360c41ea605288f4972a0e0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601399009-cf63866d.0.tgz","fileCount":56,"unpackedSize":106573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc2lmCRA9TVsSAnZWagAAy2QP/isVg5rGr5UiAG6dUzYk\nbuw3mW6H41zR6sj4IyIDrn50OK674XsSraGuqWL/OACMWXZY3Wx8TDmyNT1b\nCe6EQcFUqeH096LdAmrQrq6pLNyWO8l2gQ7TcJFO1HvsBoJtIspVBgepe2nh\n3jJHsdXbunuinopzH9KzXEZEx3hqzB3vVUCcVtBohnEVJkn7gqLWEHUxXXaE\nng166dh6nJoWNO6h/t2EoYYKTbiPA/S6P/Ck6Dkv89TlvzCAknfxFHFixBRF\n4NSztSaZ3gvvxk+vu3XR8cHDQeuILWIokr88vAk2b4Np5qg6RlRGTbaWvxZx\njYzLojBxwoPJlmwH9OOjsXKnD0++1nGkH2wnpPWdxgLDZ5UH0Het7BkBmjEN\n3WvhXnKzD56lGNhV3b2QxXHhF3gcTxmXTHWP2AEvmQi7GQrjtB9Q+Lk9pmU4\nT4rXT7DgC+UgQWxGUejbkgMK1Tki37yXujGJHwfKXBWCf5AJ24a1dT3ZmyQs\nWmHZ1PaJgvdY6xOX5VprMEHBC8RB/Vz1JVDhEE3fmhWNIjQSEkb9+I+mDF07\nafNmcczhrBXyiqRrTLJyBMkEbdG2MhQ3PU63Z5Q800nuDPprxGbZmXZSEB9M\ngLbmYhXF5ipqiABoQX911+1T15dvGhClMeItugcXIyhJ9JrohUtWp9BThw50\nFa5Y\r\n=Cboo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBjz6PqHyTaVEYZ4FEC4sBodh8vKcIRIduZTdnVw8pOxAiEAjed3ZQ62JC7btRNpOiSSZ1SR0h2+jXydprVT2kjaVyM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601399009-cf63866d.0_1601399141953_0.04051938605976213"},"_hasShrinkwrap":false},"2.16.1-next-1601402231-69ec0d32.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601402231-69ec0d32.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601402231-69ec0d32.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601402231-69ec0d32.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SsKGyv/m3Q37tuiPxq73x3Prndyr6Eoi3XSl4C2I2fuK21VaTZm5x/yJIoUd9KPSfMu6w/SkgZ8lJjLudIb2rQ==","shasum":"7a905b7a08d249ba4efae9a476d496cd4683604c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601402231-69ec0d32.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc3X9CRA9TVsSAnZWagAAkjgQAKRTDmmNwpnDTV0U1ZkE\nY1q8kANn2OKWYQstymNZ1qzHTsR9n1kq3t/aN/rRb224jwE/WSMZgrimqOAE\nw/HKWXjmW0pVC0J0efDGplAZekKuJzu9MA1TPfJ+aFyLFJPN8Hn7bWoGbrh9\nWUXXC2mFFcN3qKdFBGE1s3YRKMCyf4aBP+0d+zikC0Uc74xzclXdr7hu6E5y\n34KejYtpfXfgW8OW37tpkG+nD8+hUSVBwrJFAa2zBxGyZfZaB7ay99TgXD09\nwtqcHKwSlfFdxd5cikwkPNVWrGg9wI7azhNqN5XH8HcDFxqyUDtlXae5waJq\nvuF/wPev6izTCh1fQZVrZ8ShKsgLsLel/eg275a8xq4W90hSUm8ueTZc/swg\nLlycOzhtMJi0uf60UHckksCtMaX8qSwf298MMo7ka0tnRQ12vvQFmuu7dS4V\nstto2HFd1D8lSwwuf9S/oe4M4XmeSxl8l16/1uBOoLB0+M/iESQ6hoetyMvw\nLt70Q4BMYzZO9MgZflOD9zQ6li9WJRA+bFomMrldVgpD8NiqhYk/bYI8n321\nYy4RGXGqSLjIPLEFTh/DrUBLFoBg+JOsaNgu/4kblddiuVWbzEy4zd4ylO/Y\nCdj4HDmgvBZqbkf049tpSlZXSB1Lg2KAylZ+IPtSwoevRZdzMJYc4tgqsnJq\n/vQS\r\n=kgQs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDWqOTre4z9TeIMLU6FqaUuspat1yxscA5E/qwGR+WoJAiEAi6O5OiBwAWVMMsBpwljcasSobdSGew1uMNMGiprqH0U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601402231-69ec0d32.0_1601402364479_0.6031972207403224"},"_hasShrinkwrap":false},"2.16.1-next-1601403575-d37be773.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601403575-d37be773.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601403575-d37be773.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601403575-d37be773.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NM6jx3+TQj5rWZZQSypfrRRwQ/NHPrQ/BEhrYikL4sbrh4D7n7Iyf2b0RByCmGgdpkM87oLq69g1MdvPjxGhDg==","shasum":"433fcd30eb5dbd25f83fc027f08d0a6f00b9c56d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601403575-d37be773.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc3sjCRA9TVsSAnZWagAAdC0QAKC1Y3aqveE6N3hMbnYO\n0eJdP4GFtTvjW4Uck7SsdNBWkTU36s64eNMD9lj1rPYw8yCBJCe/j+YkxhS/\n7EsPjhWIXc9jxRxRPl5ZQXGyakwhu5zh3v4mCdQhTfnNpLEfvnt61vmq/GfF\ngwGfSaOP0E+mJi/HgaWHr8tasFOirOPW7AFhvgrnSCq8nN/T9puvoJHNm2QY\npsaboqYiogvB/ld07vnL27OxJQsiZ8bkhcYr7bbNqIQVx8nxFNdu6lfiKXFx\nrsnI44J1SL8mRFAgt17HzYvO7Z9L6Ug310XGT1OJh+1ucnKCOKAWrMV6XYfI\nw0P5r2TcmdsumuUVthyPWnqeI++6ye2oIzNC6x5i+OO1IWTZaSX5XHt5SsyQ\nlXXrIa+fzm/GWgeJmPRZqguGHKg6JBpysBmNBikHa+Upc+lxAP2NWkPKIUhg\nYfyw22qhbMR5+oWNif886BEgxcMYCCObwX801zcuIvBYuNXrKQkRcTAVPVa1\nINJQ5WoitYHEktmK4whX6kxXqd3OIupybPD6hFlpNgMLsdvCYGzfU0WHo60k\nyM2kqAVCnkj1xwNr6MhnF4eWg2aOgWd4nisqBBKo7w4UzvbPrLueBCMIUtCd\nuYkGuCf+hmTvAWylfYQ7C+N32m+Ob/nnZuprzkebSlY/s6EidwxTaCiE/5gy\nO5se\r\n=2Iob\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4vM3AocBD3XF7YMbrOp2klJ+E1F5IjxGzNenPzsnohQIhAMiF/GNd9numNB5V9fgvZZMeO6AwLdlECv1haRlRIbuS"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601403575-d37be773.0_1601403682968_0.23976270835676905"},"_hasShrinkwrap":false},"2.16.1-next-1601404887-4f794537.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601404887-4f794537.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601404887-4f794537.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601404887-4f794537.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5OiRXc49lspaxqsghoj+hu4Cl7FAzo8ykjtdJWdsXl0mX2lNXT1FD9qd0TCfBvs4tbP/cSdW4Ce1rnrIvGYnng==","shasum":"e70f81695b427c048b096edf84adfb5e62a0abc7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601404887-4f794537.0.tgz","fileCount":56,"unpackedSize":106573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc4BUCRA9TVsSAnZWagAArKEP/3uDS/AhLLNBsnujhi1X\n+76frYvYd+32BisWKUYXyj1oO4UVBOoCNgb2yJWChXflsXKYLh4Mrfwd98OP\n5N5jGUaSJmftW8Wju7S42pJ3g7EG0J3xaNwCpQFpm/yZhVwnQFXI7V78WDMu\nvRw6OLYvM2I4hxbkmn4QLB/Q0ZhEM2CX33Fl4+edjGkeNTpXc6oTIvusCreg\nscxxJBwRUud2C+lqEQkDpHUlFReZANn92IDjr2KSXLeNEALxmEkuPYgvcsAk\nlzpJMV9XISTq2UvDP3CMKHyfAVVgx8WCtEnib9FfRBVQy2dNwbfjnGRbFUGm\nCicgKIF8wyvn+H54gpFXP4cTmq1R/2CiD5iXPp2fsbRUgrUKz/hzT5HB6e57\ntZWyjWIItrnS6NrgLAULmfe+E+0AMO7wG7SkvNjW5aNezW7jEQ8uIP6sPXML\nY2UjMke7Z72dj6UgmUcVu6mVmRtShEocz3n+87BN3jwzi4fDPIjJd0W7ND6m\nQ47Pw0It0WEBlPNDAtsYw4g1vnxCgBFctEVvNTIyK5/JQd4ASVTw3pKmEbOz\nMIsf8jAgS/x26tpjWUpAje3h963NwmeUVlfBhq4DP1bwQ+/D5ekttP2OdHO+\nWB3CxZAuajZXPTeIqvI+M7evWxUXpCUlUUXLBHJUgBffW/qUT9jszEwlNBS/\nBfOB\r\n=3hJ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5prLsKOtv59N6ZwE0MC35zfNp/HfOk8eFOozGdjgEtgIgfe+RANsG5Jhu+dYSk/PYqMK18CrnHe4iJVmhgB32ix8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601404887-4f794537.0_1601405012016_0.5296276978983385"},"_hasShrinkwrap":false},"2.16.1-next-1601427429-cae0c4f5.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601427429-cae0c4f5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601427429-cae0c4f5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601427429-cae0c4f5.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lduAPeHItEx8DVREuPwgEocGo12QZCPKbbttsBjjFlOJCDm3S+4GEFR5LxpHCpG10urKXzeO5FSrmdde+uqxtg==","shasum":"05e6a78a0c73371e42df09ee2e5c215d6e6104ae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601427429-cae0c4f5.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc9hlCRA9TVsSAnZWagAACNYP/1dUFUREp2rDiMNnPMla\nP4eRAJDmu0y9MPVApWaa2Waw+iKQCiI4lt75U4r5pSMKAPQbeHM7OiwlTujZ\nnuUBx3j3qEe0JHzw2+oHJCdNcuGX9igwa90sM9gy0N8/+P/Vo8VZhYrAEWCQ\nTwkJCmgxkQxYn5q/4sKY2FpvAuKYYNYPIHjRwMuX4564N6sgEkNEKlDYzA1T\nmW7BM3NlBw8lEmim+g1re9s+je6xsOGmWQul78Wo+AJeW8gHEZvwsVplE3Wt\nfaf5zjeBV1o+NbbZxaHQKggud9czWKBMH0Ozia2E+0vGe0kl44yE9p1Fywo5\n9uO4eQhw5zkwCqCbWF1rS/yRMJD4I/gq4IGBEa//Kdh01bywLpWEnHf4NcDi\n94U5Pp/PqqHG1+vKXEzyCbOWiPiOVmqFpEROwIeQ5+U5xNz/S7tqIHiXi68y\nfrzsHs2HYAMUdBVUUpZiro77hJUhof0Tkhi49D4PSMDvZqOwOPahOSmJ9UON\n9hLSpP10pHg1vNIAkdDfXgx1gJ4SxY8t2wnEKNPPVtn/a6yWGq2gdAPQOshj\nEYpF6D/pGxNNaD6vfowtTa7WC93glXZcjpNo2RIq8TIWeSfXM45vQZWUuFhV\nE3xSmmuWK9KJYjlfXkzwwEDjqm+9g0WfDgdqtITT3k5OieGrta/5LOYLawG0\nloXw\r\n=8Eyr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHtMg7J+ETYUt45ubyr9kS7ZJr/uE1pfoB6kLeaNxb70AiEA115vAPnER6XEfug3QBrvtnZIkcUqCXDP4F/AOSj8msQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601427429-cae0c4f5.0_1601427556769_0.5382680340190467"},"_hasShrinkwrap":false},"2.16.1-next-1601427532-e5e45590.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601427532-e5e45590.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601427532-e5e45590.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601427532-e5e45590.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jmrUg5AG1txRyrRl7NGnxVSbigafSAZtuRvUoRtk7YWKbs8uV1p2754dtffn96vSIrm6OmJqUaP2OYUZH3kV9A==","shasum":"d61a27406ebd6ac7b43b31e527f1f913c0d58001","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601427532-e5e45590.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc9jQCRA9TVsSAnZWagAAx00P/2yIVS3yUdRcWpx+gyHs\nHqyFL+5/EMQZAylJFbOlRpujV6JCPWy77OFpzIAKXgkWpL4vSbueTXhWS7WE\ned+wLD7VeIfYWnCFGpybG3/PdF4NqtAKrVhv7zvI6Q1EzvVa/G0z+oWV+1Sx\nls/avygk8zJW06tBqJGZmDxSjBDh4/taQefUn+PR13q9l5bXOz0E8mmEbFhM\nA3K4PNcF8qL+r5vJXLrQ0IvPoyeanIzLV2sXYL6BM1uVDtI50oBThpBDSE4Q\nP4qFPjYEISVbXBJfWhPSbcN7o5QMDFg66fGxlso5v8/WuFjaU2Gyr54l/4b3\nbBHAAhWy38Js8m/ofN01vbUQTbvZNa7XsqjVNVbyr1wz6e2btVsry2Dyb+rG\nNmpKNzko+RRzqbXRIHI97RJXlrftn+8lFIX2CHL99Ebke3fBCyW8/auRXDuD\ndp5r+mLdB1YnWgqAQ9pCXOYRnTKjsg8hRqPr7Y68ZOwriSCU+4XGzR4Hwfxm\nc5C6QgHyrk2zZLOdo3LKhS9/ZjHtUUf0Pd0/TKu+ly7xZuG/KGw457OaVMMd\neAqFnrTIETh1619WbHnhoXTo8nlOjO+ZZFDoLPZVypCs/ZeDfJRhmvR+n0K8\nvKamG5Rh9ntwSJUDKyiRFc6kIaEhUB6DSjXBdx6Ty8LtjKSdWY1RxS4YUmQy\nJkMy\r\n=Hk8X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC3wRaL5EHuI0/mVkA319kKIA9V2eU5dAuhv93wiPAwCAiAujusaKVru6P0UB3ikSg9IvyA//4oeSJeHECDqkKAPOQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601427532-e5e45590.0_1601427663898_0.7805177597911377"},"_hasShrinkwrap":false},"2.16.1-next-1601453130-4d26bb32.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601453130-4d26bb32.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601453130-4d26bb32.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601453130-4d26bb32.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-IylebkAiK1Cjt47HndoCg7M2u8lEkEKR1/vW1VyY36IaFICo33CWp3LGgKjZR3RWSmZcwEdLKzCrqpH66kRtgw==","shasum":"d43b3f28ed428785c0000f724ea5af389da09b9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601453130-4d26bb32.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdDzICRA9TVsSAnZWagAAXQkP/269eZ8TgF6hDUwu/t94\nmTxCVRwDrVD0fitsOUtj2rpTnlggvFtiCr1UtoflmdCAU0uEsQ0wSDRPoD42\nmzinlq6A6V4evs5MY9Vo5XgRNdbsaj73tC5vFEfFlulqfkOR8UjwF5zF5UnV\n8xNvwd013JqHXZfNeiTRJn3RbbZ68t52jMebEs8BdCVPCNvTw4O9z/boRAbV\nmeET6fjw3nu+TOdhYQLc9YpS8taYLcL8FyJkEEV3a5r7abh+FhzJ0/FRsI2V\nCCtGPJO012bcRmSt3zqVHTyWsG3DhtqeXg01wM/L4ASxch6KhM+rcBSCtLNv\nC/hsHBH6OOblx1Y8XW0H14Ivy3MP3w+nJVjxc2iQu0E6yDwhYlkdmiyPCULL\nRXYwpzV6dfhCDvav4HHlMlrMxltuWPEXAeo2kCpNxskStESz0kxSKsLU3Kd7\nhp+sVTIEzJKyVktbM7CATre7NSHslMlTqAfyTwg1UhKq+8unN6bHIf/1OGCK\nEo7KufLS8wqZQ8vQUIhE2sXscDFG/NWCtb88YAQMAXrAoHu3bkwUfhU7Dg8m\nMovNiJpvo6RI8+qi4di4m3NtBzsY8m4DVhLyjrZcmnKPVp2nHW3CnKCgT6AE\nODx3AAuRnyPr9W7mHXlnrgRw5v7UnXu76zTuCZw+wWsQR96gL24UhjjZWyIk\nYq7T\r\n=08Zm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiiGtYZgWSKREkNhn/Me9BmEwxwASJDQf/VbB08NGT/AIgOoAZIMRi2AXk9uU9aQOwF/Je73tpekRB+j8uW1yjKwk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601453130-4d26bb32.0_1601453256396_0.789915879437727"},"_hasShrinkwrap":false},"2.16.1-next-1601453363-51973e5b.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601453363-51973e5b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601453363-51973e5b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601453363-51973e5b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ScjdiruL8xw5J8/zmPUd6QrnmhhMk9hzoe7EK06sFjc7JhX+Ov6kXKf5xIe2Pik19A0MoTm3KEPVk1Lj4NJyvg==","shasum":"88f77a05a259223d08c357f9f62a07b23ea4fef7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601453363-51973e5b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdD3BCRA9TVsSAnZWagAAMA0P/j82bAcJHWbxpUzW9nuW\n0owEe9Bfd8yAyYqVKCq0fZXrmiXquYdpd7luHFLbAzjnu6rUe1xbWkBi5Dux\nsi3PaWiy7wlzmBBczXHxEN1sZmLevxoeNNlZbXZtD28ppemWgSooiZm/VTkB\ndsImbpVQIdD/g9P5WDzZffV1GkQykTYjhW2dDznCDwgBxFv8v6UTep9y6e14\n5eEtklbKK2HKxH1WM9b9Gbfhjh5muA0n0w6gWNwDlJrWmm6nwkiO1wl1eUmP\nJmoSq1Zt2Oq51YINUdmGJhMN7UenMNAIZsrsQgARVcgdX6+0wXgA1VNGCH7M\noUd/WX5tT76g9XYzxMpUkc4mNFlRJbzhmO58m5bS8qTcB2EYFxgg+eMrxLaA\n2rbOuaYPhylaM8OWjF2BcSm5oQ/zNvXlBe9o7AtPJAn2/AU+nM+R4AGxuQQS\n7k00hzIT00Q5FA4PNSCUV3ICRPKpLjUqpjWj9RPgezlxYC0a6fH+EF/GYnFT\ntdQK0IwUgKB0fv5Ve52ZGL6Q3cidrjOSFvHPqjwBeEG1G8FJy3z6LtzMcP4H\ngE7nb8k+h0sgZ6ndJKeOZRsr+RNG2hGoSErwGfK15WduuwtsJ1lDAnUhjDLn\ncmh2yFdf8j1Glc21AK3zLPzmGqrFaZv3jFkoQ53+qD8cnHvjCySOW2RrDbEY\ntr5d\r\n=2nNu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtnJXEC+X3jPDQAOHWfLT1ohVYqaDz2cWERsFhoU7P4AiEA7ypw+9fmhCpngDIqNS3B65QuBEXngUDz8SQiM4OcC4M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601453363-51973e5b.0_1601453505341_0.5936637875439663"},"_hasShrinkwrap":false},"2.16.1-next-1601453604-aa0c86eb.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601453604-aa0c86eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601453604-aa0c86eb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601453604-aa0c86eb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-QT42o50rTJZ7kk1PP2awd3R5i3FC+3I81ce35r8gVu52sYidrV7xkgmPdiDibrYt5fKMOcMj0OVV61JJi09aww==","shasum":"109da0cdbc3575f8a3587f68e016d8666732fd50","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601453604-aa0c86eb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdD6qCRA9TVsSAnZWagAA6aMP/iIjaPGVyim0QsgHnDuK\nvxO/DALVjyKbmlybkVJxNaiG25CEJFOdhO7G0sSUtCW5KsqNDhqawSykz4xd\n6ryN+TlzSuGx1CkZuAPfabp6qUfPI6Efobv9f4Bckxi0sTbeGZB3MXahvRxX\nmG+y2XqKpqP+JS4v9NE6OpLrSaUpXaI0tjZaH/znS8Xzu84U4MhI3WNyGx89\nbNSqpMMhh+19wTSSfrUpv7elSa9wTUuhsrL5Se/pnfSWRpOss4SfUQavGDUR\nMJ/CkMc9DwtVTxHTnKxtgjuHDuijjtLaf4TpKlRhNqIsiWLGa+U43wkUE13I\nnFYX0JKj0+9pjNCLg0tmI4IYx5ZK9bs0Z5pZTbm4S9cMQAJSzX/buRgn6pPe\nwNCZRo/NxsQXpxqnLEvrZ/KCUKHg/Qh63+KKAul11r97MjGzHpxGpB+Hwnsb\nW6rA4KbTWRJeQ2fDvTVmAlghSRq3fDjZMHleY9XnVhRqNJ6pxWEu1OZwRyO+\nmBw5VUZFbRJq0v+MQdiC1eieLrX4vuTe3K9S5EhOSWtu0CbLAJ8p5ma73obR\nXHOGgqELGwZyomnQx6EmfIcxTQNOW16f4x1h5S8HyKq93E6fvxR1wFX5BIbI\nZNIfRWDphRbvIIupXkp73ZKWUSrW+tlU5hjoR+1n4qwdJ/V5C02ssN5p8L14\nrkCI\r\n=JAy/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4FQes0bm9B+6iWst7zJCA+DBw1R26V5kpZwPnqEVLpAIhAOtsBV55VQKzZraO8FnhmdoAPX3KQ1F5v3KGXtpBWJ+C"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601453604-aa0c86eb.0_1601453738363_0.4885968059644752"},"_hasShrinkwrap":false},"2.16.1-next-1601463258-f6c34b11.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601463258-f6c34b11.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601463258-f6c34b11.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601463258-f6c34b11.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-K26f7Ij58AeDcdO/viptaUdGl0WpZV00vdj5xzDgCAJxx+fTi0QcsS5T1uNhE2rXP9pTujyf1lHy1h6r2w6Bwg==","shasum":"140334c09328d91fb0e591f01139094896aab523","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601463258-f6c34b11.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdGRdCRA9TVsSAnZWagAAg2YP/jt1gMLrdZVIbw52p26a\nk0ebl0V55zxiiZiearNL8x41rHIIzyva8hCfB1fWBvY+sQ14A6+EC9RHVx5b\nnS3Iyul1SlaXxwt5rn70lnCd9ZJuOhd/bERl7Sa/ytkhQXX+VyxVnVAUmRx6\npv2pgGCeQT2hbdJ1gJDbKK3BfKcWbzsbCWUxpYAsImW+sqZzNE9iT7IKZQ4U\nfCzNsaEBRbOT9CZEELV76irYrb8FigtsaEWjrnEZT6vyy27QNwhME6GMnOYm\nJNQArrm+/lDCVlgZqC3Hk8igvVQXNTpas65N7xu5W8rWyW2zvotro4ehxdi9\nWuNplOTWkQZkQbh5BU3cbk/xAUEk5nFs3a8pyYgBck+V7++Oqye0n+jWttld\nKk2OW5jfmEry8kKXHJhAKxyMqNIsAc1dllIDT7M5AgPPyhc2Ax0aw305mz+F\nkkaW76yV6GzwUceSjZcapWqQIH2uWxW7U90BKbG+ztGavL5ic2+95KycH82i\nS+3Mc9LevL/oXGLDdOKtUxDfSQluAf8BHqa9fBgWavPT/GI55wJF0uToinWw\nLIK1AapkxovAlMjnWoF4uwNuvRzCKJXpkrAYokzIlMLcvUhrzJGw0X/Gi6QK\nr+zp9a8pXaStmvV5q6pjs/agYspsJC34Kvb/niB45zU0iP5R4K7tqCXzdoA/\nBDiY\r\n=9WQ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGUDjTBW+6fpwsTQH6/fOMeb1fQr5dKlpWFVhdNmH1mkAiBfl1WdoW2BykS6d4oaeUmVYR+q9uigVYKg8+S2m4QDvw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601463258-f6c34b11.0_1601463388933_0.3962678516118867"},"_hasShrinkwrap":false},"2.16.1-next-1601463771-413678fb.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601463771-413678fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601463771-413678fb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601463771-413678fb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-hhaj/sCWTaSM7caCpNvsrYK99F2w1KC6VKEqO3cA9L0diaSm46geqJ+dP1FxsSFhHmpkb36gc0jq+37nImgEMg==","shasum":"156c28a2c4dd8605d62ba9962fc24cd9fce9c151","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601463771-413678fb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdGZgCRA9TVsSAnZWagAAUYUQAKBfrdKIQxAdIHEBQTPp\nktUWdknaQoBg7rQyZVn68oS/xALayMz+rb0S9D09XPGOPMXHju7hU79hQd/m\nMCg9Iv9PtxfZVOdmTLzOIa/c8Pry5eKtHHnBYuoHmvHAjGyn4CjQ1746/Wje\nw923cMQM2o99MlH7deerE2x+dPDvXwFQDA5JavlFVUUpbzveiEuCuT5rkYRW\nmt0BO5VZfocIhLMN3p73SKP1DuwoihcHOD4eWBXHKAy1xzaGRf7hppBUaYrt\nZ/FL3JHKZVNmKGy6Rf+3KEQP4KW0oTk2Jo8akhtc8Qu5vw2F8e7dgAGvzPMr\n+z5tzBjRiEOD0LpVt/gFI1ibSwhOlsJkVmXUkOW1cPAlPqmHn92goEG5dp0M\nG5CYAqSwpPykIzkCWIoqoS3EPV2n6PI4IBE4J7CZATGFyH9U51PuwCdgEbWc\nZy0BkeCwj7aEsRCog4pRw+pfw+sJl1AhAu6BAH2O+A5PDp3sq8XFIi8rICT4\naCCOjaKfscaRWtH3eA1QkQJ+icE3kvM1zK4EWxjTmXTBoyyO6Jf5gJfgvloA\nfuXEkLXY0MgXZYuSVCXi4CsiNuyVx1zYa+G7JD6kDXWgUNEfmDS/Jv1AzEI0\nkxigu69j8cXNhzYbcjUDU5lNDVVC5CZTjjTSwhFSNUEM8w+hV9rxC9oJ+9ZZ\nToPB\r\n=beyP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFAD8hvJ0o0kbtMic9gYMD41zJFT8fD2E5W5ljhQbt/PAiEAjIMz4McG5NvKEUS6+8XMhw7K3fBsUpKwFL/BIbXDT0I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601463771-413678fb.0_1601463903682_0.11921448809838964"},"_hasShrinkwrap":false},"2.16.1-next-1601464013-35e42348.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601464013-35e42348.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601464013-35e42348.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601464013-35e42348.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rYWpuidwQ7dJHpYn9b3Ew5gxu8bEzn1YLjQbp3nZwAlOz7rgxlQ6hS1jdzmPHjYE5OnpPk4WVbi+hAlXDD6hvw==","shasum":"6146d211b66c1523848ee9698e22b1c3f977450d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601464013-35e42348.0.tgz","fileCount":58,"unpackedSize":126858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdGdRCRA9TVsSAnZWagAAwqgP/igV5l0Y6WSroulB/ZiQ\nji9ZHFr5GnNMUMzGFzug1VfEx3JfaCNugT2H5eaY4YwJ6FC3BnfAJb8M2ekK\nQAt2e7aX+WqC5XVjfHN2xfUKMWtByPSLvTiGXfiZK9GXYIRF2E+6aoptZ/OW\nX/tQ7HNG0qOEvMWH38GjeJlxMcPxrWcJya5cxM1LV+l3wBQKxNNoWmJCgQXL\nxJLnPtYnyLuzw/jjhgi6oRDO3s2fU5GeuN253b/FTUdD2zsJ78/lzVo6tUK/\nshXIbEdEiqLwVmuQ2XAFN/NU6jgtTS8yxyHuBM0pjS3jI8zHjGj2QZXoXiRI\nXZfSZeV0o4cUi6RFKPKRsaM5o8m7qgIVJnHVShmG2dgN/FFC7G/sEoZO905b\n1S1HpwT43vjGt4Rib6UYS4eQizrR/6T5gm9xHlVJH+mrKwZsxO6ezBVuVLdv\nS/XHO7FMSLHW1na5VtF3kLbsIrZGJNp1tM6e5OCNfu7Z8vprfBBxeXR5/P8M\ns2FWTqjF3ZMYvgxlfDLijqEdmh2yQxK7k+UIfbiVD4y81F9T4rhcjou3HzRw\naFDuR9wRvKqGwrDMXjCSZscQWUul2GpiIvW8ZzlDGosQLW+7ZtZmrv+4xH7f\nHwskiEZXOrYkKDXgcwcm7Buw+UZOybQ51cvnLzERS9S3yZ8S4hGxHG7ZVBsQ\nFRGd\r\n=zcI+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqHV+4qJZYetMLrBDB6z2DbUAYky+eSI/HFLjbpgIGkgIgcbelVx9vRzMR+G6e1sQcmg0zV2dE+aF+3M/sQOY213M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601464013-35e42348.0_1601464144770_0.08439427631386498"},"_hasShrinkwrap":false},"2.16.1-next-1601467889-5d12799d.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601467889-5d12799d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601467889-5d12799d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601467889-5d12799d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6fHdzwOrbnKE6c2+a3tCg2YKSRsj4RBy0Vg3qJ1C5nSxHjGYCIPqe1p5qLqNKjhF2EWCt102h/lb0eV6F1qWcQ==","shasum":"4334f2f20452c7c7862fba6275b9d0a3634f7052","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601467889-5d12799d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdHZnCRA9TVsSAnZWagAA2BwQAIzl4N/4Tk16WTduFv1C\nvTAMQ55tq0Q51ySsY9Pg7Yqp/m6QBy6SQ69gfBUWg3SGwbR7CqZ8Ti13UqIZ\n1rnf3XBxu9EfjORDUUwF6rukFpt7pgWuAtVlCv5COoBvsRN5CNt09I5PU9Ky\nR/zUwphNrTVvrxRjO3rFHTRviBA6R5wnfHNH81sTHUslcAhGbuXqKcA/C69Z\nUtQ/M62A9i+d9sWFt4M86Ry170pqE2JyFXuc0u60d4k1Ig1VpwNA5EqREC0r\nNtY7F84QaMPNR9FtRYKUQOG1Pc2gC8nofZaDAugdNSdzZes9zk3ixD57tUwK\nSb6jkzFZ6XbKOmf3LJ0HanP+TSECuAgZp/ehRQ3FjwyYtrakBHp1OMcwsXXq\nnRerN7ik/YBQiLYyK1Rg2MYr6nSOas5+CZuh3e1WlxGKwdOifppeljaa0+rb\nMPiLRPQwXlcLSfh2AmwISyoxcjevjDgLrM9dE1y49CvfyXFGRLVZCG/xwCNG\n2/nGkRg0OOTmw6XbCTan4Fk8k9I1z4EL1KRR19QtN/5g0DZKX7VOGtH6zT/P\nOMPUW8HMXVTMriRm/rgrHUSICG6c6vqKva4+lYmwUQ4Ii8honROScqucNNR6\ncLFmQSDVN0gwy2VV/VB3mxQbwvmn25YLUTAvrRwZbh9xZdUyXUIU1ot76RCg\nOILn\r\n=yiUh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWHevd6ve3yYWJe2cK/u/t892afs2XqytW1WEoLrpEIgIhAIUUTj836N75z23D9owjho7aqEXplQXP1753mdYpH937"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601467889-5d12799d.0_1601468006394_0.9249614016365557"},"_hasShrinkwrap":false},"2.16.1-next-1601468686-f6b33d3e.0":{"name":"@xdn/prefetch","version":"2.16.1-next-1601468686-f6b33d3e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1-next-1601468686-f6b33d3e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.1-next-1601468686-f6b33d3e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Ct/Md6FMVyM/DnRYd4ebKdTZ+KKJ/HE4R9KOGrwWgMn1+URBW33cN/f9LMo9Gv7Gt3wT7t81tNQnInt1D4VNYA==","shasum":"0d0762be24721d358a0d8462c1c6917efe157208","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1-next-1601468686-f6b33d3e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdHmnCRA9TVsSAnZWagAARhcP/jAJzHW7ycHz7/dY21lV\nOtBTEDHIMGJ8nnIGOq8FiMivEKN1388UVS4xdqwXGf/a2jIEGDFt9jreJ8+z\nvteRwPIHq7xqi37lqWH1ClUCZty/AZmWUGPyXaFllP9TDl/DLT3vLpOaUYUE\n1X3eGMC8RsoV/2yZ6scmZaeQMuF10D1Skay+HB5+ccjIkflER1cGQhaUylRQ\nn4Xj4D5ybKmvv4WdQl6sqAZHwhlnRbzkL+jvU25fGb7eLscYWk96jgknrACn\naeUWerP0y6wqWBJ7CBeBR5MTP6qSmzamn295/g2d1Sm0wB/h9lTufsid0TDo\nc0h8NUrmVlQr36HvWnXsQXQs0p4KJGPvpfEw0pWEfusHdddzRrh4Lk1hgUXe\noUfNkJBnI/TAkVQIQM06PhRiR+JCIgLGhEDtCX4HRMK8CeWRX4DCCAUGVKrB\nl7aeLbXHBKxQqdMXYNQKN8D4W/VwfV6JXF124ixZTosgG6J2iAy1YTQYNzxj\nTteR5UoXmuKDI+5ryAZRGdKbMLUisigE22y4bT4/+GxjrI6h7+Z6ohSVN6Tq\nJ7pVfcgc/0QD9+kyd7xlrAtnt+pTApNklIbIz2g/X5x4ZwNo499grT/daiLJ\nFv94SfXDy0sw8JBfG2wpcRv1idDe+VGOQTObK6B017iqXNmaIcGuKT9T0cbU\nwV9g\r\n=pLiM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE/roMgi7c3ZtRGjF9Hkuz92VJ8YUGZh4eAuhNoltXMAAiAaZtXgesg4TdoLNFvwHR7OS8O7HIbveUoItitPgMqdNA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1-next-1601468686-f6b33d3e.0_1601468839006_0.04921191775512557"},"_hasShrinkwrap":false},"2.16.2-next-1601468817-63c2db85.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601468817-63c2db85.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601468817-63c2db85.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601468817-63c2db85.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qdWqfa3GM5DVESGZ8fN5lblFtNv04r8NCkUbprmbEnMbLuKKaJJUUk1WpUUcueCcE2FpYVd2aom+xjx7Cl1HSQ==","shasum":"8d0b67d6406331e6f178e86af24a99331a717096","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601468817-63c2db85.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdHoUCRA9TVsSAnZWagAA/RIQAKMCpLUOyn4haZ+ZpFJn\nD2FBZ7uBJePR5sLWAHYErfl8avZdPyBacMklinVb7GZsB2o1yweq8K0VHQ6F\n7IN7HwPCIRsF59xv+7WvgNii1E4qyVZY0iYzaGVXznK9k35McHqamWBWmtTB\nbeR24X73gZ26qoK5kCyRSCIFntz9egiws8VGrP8H88e3wPpLoblm1NZyK06g\n2aPgKH6fSYvEHYE6rSF9fd2LXRuca6n4RgTyKmj3IRxGDyCsgB5AKDePAwJp\naAw+xWIkuH5ZXC09+5pFRatMlPyqmkHxBzNxa4811PIzq9zgZ/cwbS+4Scol\ne6JJmkhXgbNchN14Hs3OsUfZeIwgsPU+fW+Oz+XXaeJXo2IOOh5/pDvVjGbQ\n90ksE2aQOP/HUFPCJ3EpsXNRk3Lc9CCZ72rVrDSZhhvbJVgz30L/G7BEPC4k\n9T7ZUOL2CaYrgHpiMQ3KMcIaguekFzfqJ5pIVt2et71H/svKUrNVgnUNFqHD\ncWbHAS5bYRGYm+21j57DWBDmexRPvO7fKDorcSAiBidlHY649vJUbuoQx6D+\ni64VO+2u8e5ZS95YH50UhNhQS6IGXkXTBubSsG6uDrnPqgHLLJL+aN3za0dt\n8KSlYVtVK4nqooNDcwpPbfkThoxZQxyKM2DitmhzgrxjpVvP7VfyOdr01OXS\nQ/Wl\r\n=5Yc4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGz1qEbJzqYGlX85EisQQ/bkarXZ0MGPd2ltZcloMa1lAiEArvLJxzfsWjK+SGzdEGQMdkay2nQp29JZKG29KeT8UKE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601468817-63c2db85.0_1601468948505_0.9935716766080895"},"_hasShrinkwrap":false},"2.9.1-next-1601469175-158b08ea.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601469175-158b08ea.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601469175-158b08ea.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601469175-158b08ea.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2CvoX84mJ5nao9ylHUfktrV+xhB8jLamJia8ulXg19OZ0FcZyOnt3Me61+6buAyGYGvkkCDahidwhmUqr3XEiQ==","shasum":"d89bcb7a9480b22574a619c7750d59424a2c80b2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601469175-158b08ea.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdHt3CRA9TVsSAnZWagAAJW0P/i2jtlKDEeDQFUCynbJt\nt8p9GLq9ObdToEAQ6AkwXnXi3odj2DD4Br8V/+GJY/Dov2dSv+ehuqPNt0ZW\nmv4kT3NCS1ELGvD67W7u2pCJjp9D1tLwqoaUi1P1cUPopyuZebkL6OPy3IKD\nG7POZl2j9NZtKpOgiVnIA/LaPucIYtfpq3CrRS55YYRyjexItz5cLstxa0j/\nMN2QU/ds6B+WZNvU/GCe+0eIfItMdR5Gy0l6ZHfNBSHZD/dwtC/Vgids3jyr\nA9K8EB+IGBoLZwVr1PJjGYyZ2ZZcfvvKFHIINwDk3+aNhSyrmp2tBwK0jnUi\nnjpmf75xbv8KpB2QIiCCbTZgCUxJDMBArsMEd8k/KCBtLeyxXEs/KynGRRX7\nrnuuI2YFKy7O9I8iTpqLsRSx9lhitDZ5ckPYZjFlAKt9p9dEs2bpoPkMi3a4\nkLozdga3Y6/9thLZOkTf9J12JeCCTFaZWZtKLbSdbGmt3lC1Fv8Qz6m71b68\nGiShXRNyQvc9N+vtO+/cuOP4T6VaedurHB1jijSfv8cq1V/qlZWUBWMJTh7d\n98DpisaDp/g9YgHL2xOqezo3h5neWCIFFhEnD6mky6mE5mtqF5YKZsIzpskf\nFqB2SLJsVdkwTmVzxcl0rZ/BvWmqYmkBH0BDHt2UbY142z9W5lsYQ5norMbf\nxAeP\r\n=EvSF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEraAJeIQWr3IO4lkGxYQRypZPjxXFkxhEXKgHjIi+J0AiBGa6MyekAALja0aAGYhi2UnzyLP7CRPfSYBbiq2zKI8w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601469175-158b08ea.0_1601469303202_0.21801533503153658"},"_hasShrinkwrap":false},"2.16.2-next-1601471321-ed67b029.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601471321-ed67b029.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601471321-ed67b029.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601471321-ed67b029.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WDNIMvNLzUVZmuOX8Kju7V1F/iIyvO7WXhu5yxknNG+YqTavwheqjYSf0C8QK916q+LhzTQ2IhiovVvCkld6ZA==","shasum":"25a40cc5c780be6d5a3218bb378afa6ce5473f7a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601471321-ed67b029.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdIPkCRA9TVsSAnZWagAAt5gQAJHNNyVkP7CYrmzinN0L\nI1uhbo1e7vvdI58JyWFiRQAbcgvdmmGbMG5lfyR0XyqxPI8MgKSYfPGxeeD8\nrIEFvgwODiXa97QxMnQ8U/TUf2yrMBQs2c5nLNpKfQAAfk6vThx+/pe18yxW\nNcqeRmZc6XfzWjbcAzN2sT8UM2NXmpMlauY0t3fsNcCvMO/q/46BKDNVeNJV\nfzGCTCRR8d6KVlebSKhVqH0FCzbdKwhDHWuSv6Dd9/JqgGKthQVN1jLlGdCX\nVvZEiBYkb3Sl4MLmtTBKB2l7RsFhWz76vqtREGEL33h06TY5pI2lQ9sQKyel\nFZzUCLp5PBStnrB57dMh3vIJ7IMlV9Wuo9y1bpeLGJ0vEjOQBvdrgXugSEsV\n1zC4H/1yZ54RbZgT95wUdxTlClQ8YPl3EoCof3pyXR/GWHaPEJszo/34ZmFG\nCvMucYKRKmGudaMLvJJHD5xfAzBcxskOcm5Xu6qfb3Rm8oqMhi2Bhr/kZEe9\n+LKnbufE/Q2Z72t5U0lPPkf6Qgm28wJtom1Pbn6+DvPVu9kp/UlWLEZWhDWe\n2CCdmFHr2z93nNZRa5wHP8vVoGWXP7JqNRyaawogHSsP9dGebdqwGzG334TF\niBZXFDS64DKVNuohEDI5nwWzQODlNUngSi/vjVnZJE++t/s7Gs8dfEB9ckSy\nulHx\r\n=ZfNG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAuaQZkIKKNMNj2M2QiS/ATw9eHUAnNCqOeE3WSSWjnMAiABPbxiyUPSC9EsFyH0fmdq9+yap4lg2JtGr8Vj4Hlqhg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601471321-ed67b029.0_1601471459651_0.35927421605132115"},"_hasShrinkwrap":false},"2.16.2-next-1601471394-1c809fcf.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601471394-1c809fcf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601471394-1c809fcf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601471394-1c809fcf.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3JCUGwPeJ3Q5IwO67K/Us3BjayVqhVWYBfvA5vBmsRJ33vLAnTs8qWUxyuQKWYWTIrvZkHNMPU1LP2fd6cm+cQ==","shasum":"a174a0aa67a8872bfc9e3f5206b51a946d35a7fe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601471394-1c809fcf.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdIQqCRA9TVsSAnZWagAAVu8P/jMBmJT8jgSSrfC2Psfq\nOBI9LSThczMLXI2Z0rIBQbu9Z/KtawzhoPsu7s9bx1j975wL5+kDagwL4/mj\nRFXgvFGLgDRKQPqaSrENruOyWclIdl+ROIMM8dEhYcG0Iv18feWiKtQQ2f3j\nFFAd6dNCIN3qa8ESxhcQnM6J0X8V1716tgxUnMb3pVYJNuOupYCjhhX7jN5H\np+v5rmcZn/nFy3HCgs5e09weK5b2z86aTdKRdA20ydB75+Ei9geNvpmgWSBh\nf5SwFF49XYrPt203Pcx8TTgAhsTadtZ4m+bD/yV4F2xyqiwo0zm6zlXJn0zZ\nyQmJ0NcvExQC4dYbd46CS6g/hlq5E0vcV1vsn9QKTwKKu/KQak2qyUW+Andl\nbcU9vdlU/grGPDD1WBJ7rLm8KvkcOSX0TAWMa/O66B3ssvLpQhAXS6+FPOLM\nCV+sBlO5b6vFylx8NzYJE6nJe+4jLXoU1SGIfAxnRDQuNyBpKMS5wM9xy8rV\nRkjH5VlN9Jp9sOy/60ds0korPjjHZQQPaqWkRAQYLgXqJ9ihxfI4GVLkNJ1v\nsDtToEoA9EOhiK3y4oqtaftHU2fZlzb5nZ8287rPUbNLpMXD26MHonbS2dEy\nzEX2DGJSfLJwJ3cFn7urlIbNuTDm827HD4E+K5eb+S7XCM9UPNIYAfLpjgm3\nJP6y\r\n=fUEv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBCVUM5XaOk/jN2ceIqS76RuhWeAmLC3FkM/2MeSy3sNAiEA0lmL8PfL8O3IJ5w9n2YC+QJP+CVbEJCZTruWRxaY7RQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601471394-1c809fcf.0_1601471530315_0.14775666316558067"},"_hasShrinkwrap":false},"2.16.2-next-1601471671-29588c35.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601471671-29588c35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601471671-29588c35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601471671-29588c35.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pHje0dLEBJ5LHHheaKqlOVdllw7ew5aT8E6leXawrLuyfOW09vx00sr1r6LPSVAqmXuuR+Oo8NSuDVNdGMf4tQ==","shasum":"fab434ccf730ee250a42686b81d2d71fc11f9e19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601471671-29588c35.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdIUzCRA9TVsSAnZWagAApREP/2wbU2Rr6juI2Sii/xyI\ntG/CQeWH/sARAnKR34YTjqK+jfzlikfL7Dpw53U0QHVCU6h/WN7pbuw/H8yL\nhZZrO9e/gEK4Nns/0RLrXC17A5vRanMzThHkAJcViUeeFhbm/Q0LIz7Nebnd\nBUrHeUFpbwon1fw06OqMD8C82GxFmvCQ43I6HKr2x+Tv9StYH31GyZY9sAwp\nZ83lrHYP5xL0yRRqucoCduFRP3VbtN4koc61yy9/QSytaMc9n0H1aJ7i2yQB\nth1hNuj0uJYha6WfB0b6msmJjXjSjkEn178u+C/hbi62grLwgH89M7cGBmim\nqkVRPIB7b2F/BcxkSyayqAE19NN2R011v9FFfymRTp2GgsJ2ON8PuakRdF7R\nw0LO+TcCA/sddBKKK+xeHKiU1JQ06JweO6L7NegrN/UwJ4sztXwRQcZJCzkO\n7eBKFJg7muCD4oY8DhmAVhiqu1eKCRBVQQDkBa9ZcE0ycqfi9T/zj/y2fFWt\nVBEJb/kZ/cz3g9ttTvCYMTKKpKEjL98hRSufmmrWnuty4mt21ojpBFRQ5rRO\nLXvJVGc8nLDy2yLcr5NAyiaouJEFZqQS23i3Dw39uQmbzLtNbOvw4I/iAyQl\nRE/ElV3FOzuFEN6DU5jnE4/h6bYb/vUb0HQuAcK9a08+st4+hBnqKspFlBmN\nhftE\r\n=ivL5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd9KvNjuAyE+WvqNnRqQqfzYYkd+RpjaL3Ai7g5aiCigIgGQBueYShB5+tnJUv/T68ev1l1cmtJz233ldefpHFPvc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601471671-29588c35.0_1601471794569_0.49300653531855976"},"_hasShrinkwrap":false},"2.16.1":{"name":"@xdn/prefetch","version":"2.16.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.16.1","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kDn0UkdpEYd9MQ6Heq6rFR5V6pFLaOlhUc1HkpRq5ERv+OR3Mhn2K8jygVeLHwx2+EbE2OpElcL42YBGSfBkcQ==","shasum":"d51ac259f2e64910510cae32ae5311363eeb11a9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.1.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdIuPCRA9TVsSAnZWagAAbwEP/0XFcKor2O3BawEBsLd7\nuV0MbMtCb7g50w7wdNOq/7Te3b8Y32RBnui5R5ZcUslN37vGd0VHgpRg36bN\n1H6i30x9hNQ9dA4M/vKnZ0q19NASNyO1F/MstDd5K/guUHmaA01w9RUjlWcI\nPEdYW2/zDwlVqY4M7CwjsgXsn9WD96820O/vb52OXAxLErtLiO9yU+QAPJIa\nys9fU8CgnzwzPtCBnmHC8HCRsRxzW4NUgWcuQpvrUZ3n1zcV8PofTF9521gC\nym4Oos9mE6P8ouy/8tl9KNqz1ny4ZaZQMFUnvgd9IvCe+XD7SQb5JgKKjgHA\nmqNdg170SRFVAB9fXTy1+LZTWdW4rWeMSjjrEE8mG/0cuKrUPqQZvW2ymLub\nIDFQRX2da29A3BVG2LUfchIOaiD31vdeUoo46CkRUeW71ak78jyGN72k0jZb\n8NDDzkUpEYgLYUZ6N2tKZpnTr9S06hdmWPPkkvlBWgW4r8Fwu7v8c2KI0Qt2\nQFCWElOhnMoJe/uYBsGWXrvY8SgG53P4Kkny/z4SfSlvlG4KeMjU+JKuawkh\nLThkMJlHBtTLiQP3x+SYq4On1qc2GACTvD7RUoatdOoAs3FKI2OhtuAbRxuo\nlw0fU6go9Dz0tJ5sCMvLgkBUqVSyDXoYrN3s4lemorLWB5VztdPAqG1lljjf\nYv15\r\n=A7e0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGWl+SUnUZwvGR5VOxmf1FkJ0zwtnxWO0XXBEf9VH6yAiBVjKldYnO9+g3YO3Ee/VSl4a1mLO/EGCcRCgX+/iWhww=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.1_1601473422360_0.7591723549985907"},"_hasShrinkwrap":false},"2.16.2-next-1601479195-0ff4124b.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601479195-0ff4124b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601479195-0ff4124b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601479195-0ff4124b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YBjSMKaYFex4SGgJ+x8W/7XnMGkrfmiDVXrt50PgZwaYohdZZs3e43NWjyxLlCK4yXwousuwkCTwTW86OHe/1Q==","shasum":"717fb3e7ffbbb242b61ade92be00d9c0d1b5d3c3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601479195-0ff4124b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdKLKCRA9TVsSAnZWagAA0qIQAJAdtjaPIaAuTrYnf6T1\nDtS8Cc7mZEoxadwztCtKUmS0sBblWnfFn5FlmMD29ZGmZuuWhZabqjMM1HU1\nkJ4RZmqce5JiHWyOZAXDByQ12kGG/b9xrxU/xIC7j5nBMrqhITViXWbWqfPY\nFUPSgcVnqu5/3fK5tZNQQnyOM4gK54iZTQkz7pRFnc8WglFfHW4wF8Y/kHrR\n/OH432yYXF/RSX279hDfqIuTvW0d32przHhBXFy5c2h1tkWURWEisieYQiO6\nrQ7VBTUfUwwcwf9AnvGKtX4r/ZMZqmUN5VMO9sq2CNgzYkQaGgloa/tAEUae\np3inU5abgW9auzRnC6O2nSHuDoDTx7gysX1+a6DgO9JP/KQXXiz1Qa+w6vO9\nBJqgNCjyDmMBU0KuLZOS/IyivDHfrw5NMH3SqmVhNqm9tbCY49/yKV72E7vs\nKfEFBvN+RR3KbS0A8J6wQKZaDPQ8AfhmnLRqrukkDSANpkLvOiZwJR7F82FK\nIqud8Tz8ijDuC3W1Yh5lFz/PcRey5y9nAna/+ZmQu+hm2SWkqm65JSRasvKQ\n/IO34q776Rl/i9GTcmclyxsqO/TbE3vmMtRq32KbSwhvEayuAzMTH6u9rNwG\nXupqf4i3hHWS5yRwqquZPQ8Cs6pgGtWnoDer1DQp+VfYLhnnWUCjPRiZpIQ/\nBrgP\r\n=qRDc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGcoprG/9nkJ3Xtyv3Mi7gBZgABGxvyZxsIfSTh+xcPnAiA2qOkXneix9wPYYnIeZy3Vv7kyUpfKuKYjMRbmAM6uWg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601479195-0ff4124b.0_1601479369896_0.056853013928689355"},"_hasShrinkwrap":false},"2.16.2-next-1601489696-2b2f2951.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601489696-2b2f2951.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601489696-2b2f2951.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601489696-2b2f2951.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VQI36pUkSCw01v9Wcgy9T/aZnWaYKDlYDfPPEY7TtUxhuS6JQo1Z6n0lidx5/sNpVn3EhTXWASP2J0gXO1CRKw==","shasum":"c72096acfb31fa4742fd99205084ea1069ed376a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601489696-2b2f2951.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdMuoCRA9TVsSAnZWagAA5akP/jCQC3hGHJt/fKnMygQ3\niMUmq6j/YcqQgp0kj8mU7Bulo5nIrZj21TGTK9KsqwXDh3KswUHaYQqruMIT\nsw3VvKgTiz0eTgyx809jnQPC3n0ye99X0z9s0HOzVUa2ghfEgMRv4/68AkGL\nMV3SynQtCP2SHHcvIr6drG80K4q2gyZ+is8XeujIJwqiSNEe5sQROXw1gyDE\n8hrUdGMXfFSw2dWl0K/UMb6XZRjUHbb8s7r437q9lFjcfhjkYuik02bEeJ6Z\nTnz9G41Z6QlccXb6Sn8dSv3XRci9H3wtkABwrMFf/4tZefMoce0ry74CMuTJ\nIeiwyGG4OUziXdz0lIzoSF7U52EW8+NhxlEhDEWac43bgQTHD2nuSLCnGEFu\nQ31esJs7+Loff2Y/LYd9qKo7r0ctWEYHKDXbcaOdIWNb3ByrV1zqwco84NQ0\noaHRCArGPfB8x9QS7hF/t+NfDhxymUKDcOa6pQ1DVuY4BmLLHApuF0OXoHuU\nxo7ozaZB7VRB9qmljGcu6+2bKOWTZD8IgGEYdOXRm6IitZSoV3pXEi8MacRW\nd6vNNTpehEbubvTItIc/QQQ/GM70aouTeuF2p4ymg7AVKv59f7qRYBspyvbc\nA8ioxwhPujcHfSqis24tVIbOPpqIaB1/jK+fAbvcpVzjsFoIClAP8Bmu/EbM\nlRuA\r\n=jiBt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDutzipnwd4CRTWmrOLZk3FPZPA8unK4usmlNidHlkm4AIgUh18tZtOtsym37WKeE0VjV3K7gcKyvBiBhSwmMz4lLM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601489696-2b2f2951.0_1601489831581_0.5926385279328035"},"_hasShrinkwrap":false},"2.16.2-next-1601490286-2434c70a.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601490286-2434c70a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601490286-2434c70a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601490286-2434c70a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JHmAdaCiBF7xhCfdHp0vP0cMixOSzkdz5ypfPmNgvTpcpfuAieoFOvMU8GfzAzcUqqq6fNccdXbjHHR7FR9gEw==","shasum":"2d8cfc0e6dc362d962af6a226c8d238f4ca3638f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601490286-2434c70a.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdM4HCRA9TVsSAnZWagAAZ9IP/iMt9VGM+EYNQhatykPx\n0F0sHvGCCt0avnevQrW27Mj96e1X4TryPC0qlz8ir/VV2m1+CPQLHt3gqZmq\nqn0IGU5k4nvoePs33pKIauWj3oj1qtLI+PSI60bVTkgyP+OdT5sDT3UHTHrx\n54SR5GL/GECGDsLX5321Qg3lgv326pG/H1NZCdNfUyvNTD0X8APhya4+ae9d\n/ZvSDDabgbpCFaFFnNPNf8KRZPvlDVgwRZSQ49N2jYmfYhQkR2hR+zePNSw1\nvCiE2ptLBVrwIxN+FsTnatexwhC5bb+li6qlp3iSCsoCMPWnCtOYBEd2cFeO\n/EO+IwDjpJhWuyLEldMGGDa3TLCj22rjtd1XZxlgI1K7V2TD7ptkwTtfBats\nViMM6Ju//BeWLrsUl+pkA6PvC1hVFwrsbtHQKh6QLg47Z4vvt4W43BsgQKuC\n+iBljtQzSxTjZTxDW10/ib/XCmenedWAoXMe+mI9fAPP5DX7PCDJAUdMg0Ul\nPlgq5ItrsdLU5rCpDTCb/4bCRDnbTyA3rOi21IB7qetis8kqa1nqcviLfdfQ\nugTZKPBI46bdeo5ZhViXLD8xb8Mmxp3vEUyi8mr4/pn99ZhyXsWPsHRnFbZt\nsbMGSrqME1hJFSkh98jnuisPLn49SPTkgkNv38oTSY2hc+lqm0Kb7g4YUX82\n/5uI\r\n=6W7o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHekEv3UCLmfOaiiSlX2XQ+LAyf6PYVMl3/JWkJT23trAiBTQy7pwkr1LcIUqTJ8iw1BW9dHiDCGeA3NXo1CVndy4g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601490286-2434c70a.0_1601490438859_0.14038408571151728"},"_hasShrinkwrap":false},"2.16.2-next-1601494314-ba9b1f05.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601494314-ba9b1f05.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601494314-ba9b1f05.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601494314-ba9b1f05.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-D1QqgPL7jD0Xns8CyxMicSOdUmYZty6wL+2OARJ/tuQvUk5lB0twW85204DZOpollKTxQroplgrIfPZCDczJ8A==","shasum":"7a8e154822d65564f1f8c532b2a53d30b56c2537","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601494314-ba9b1f05.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdN2nCRA9TVsSAnZWagAA57YP/jCJStbQ5QjljGCYwk7f\n/q3EGrb1NXYESBMLeCkb7kgg29sxKT2jecU9PEOq9D2Y+jI+ODKGc2fLwUJn\nPcx/UrI6jE+MIy0lRwTlysEruTZ57/noh8uTIZp4vK188YccNcdc/oTpFpsw\nqt01Nr+wlfwshOY3Ce9I/nWcJNHq+6OHZlIsqtrbk4DmkvCssVOWxMACIGad\nkW++i3NXBNWK7l7P2ZIv8FfbRbo4SV/LhdszcgBMUsfOGKZf5OZfp/u7xXi4\nYRomR2Ag8zYQSG687RwFYmPIbtaq7hKxlMw7O84fC/UlrrkLztvMEQYmZCjG\nanrxAM5IJczeAplvgd/64/xtPeMBKxhjiqGTrLBcWbEj/pe/w8egaNW4zkrw\nWtxo62/lfT/FYrUCZattEDh8XzHIJI9Aghcxc2fPUnEtc2L55/ozofWnaBm4\nfN453npqXETPMCwjQbnNZnq3fu+GwFjJqmthbuEB02JJ58i2tqMD5xfeeHqT\nA+KnYWebT87WKlt+z5mVkQz9XrOqxDyp1H/uJW+YAfvTRYk39dYd0r+laOwm\ncBr4NJkgpALErAtb8wxRwKA7PR1hieXMOGpk1zghFH9QraW3W9QgvXzTDkMN\ndUaEXXhCTXMhFxyMMeNWOfV7jaH23kMhe9zwXw/U0fM0X+C424qK01IDYJLW\nCGwo\r\n=7n1+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEEddcFVf5FWDw35yB1gHre8VlDhs6dT8eyQmeMq1ijaAiEA+eBUSjYXULGHfdewzanAaCothVolERpUzXXDyB1XTyY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601494314-ba9b1f05.0_1601494439229_0.4302681432436577"},"_hasShrinkwrap":false},"2.16.2-next-1601503009-4c6f3a64.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601503009-4c6f3a64.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601503009-4c6f3a64.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601503009-4c6f3a64.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AbylSsJ0q6NnjBLpgKCXob6TOG4FRZKdVebQa9S31vGW6Bo63Ni3J0BnR4h+FLutnaIZHmsWyAjRMKC/6bZl3w==","shasum":"11db182e843c7a973ba47ffaf39cdbaade12825c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601503009-4c6f3a64.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdP+fCRA9TVsSAnZWagAAx3IP/jvoUm93hHQ43Z6xIs81\ny1L+BC+O+wIvGmBBtYTXsS1L4f80SSmGUzwsaL93k/nK5SvMygb0DedOiB8M\nt7UjIsPfVs0DVqWa+qywN6LN0h+mHV51MCOvVIXHFkR5ifOErs+Al4pRMHCE\niVAh5KeXgFpbyFkrl0G/SPQpR6D3BAIubzGGBHWfZXvVukA9yEGx2LTpkbjR\n+ypT8ot3JPGw+DGruRekgWv38LF6G4lbsZy1f60X0TOGGT22Cvspouk3XpKd\nVVz8nLuogvvqyY3eNIKyRJz9MhpLfIeZKQDssycZXTD5rokcAuMrBJMazXIM\n1m8eB7/nc/oIDZc/DojXVedB2KLuzgDJ7oksPSP2sFlxPVnDpKPc/fuP0/sW\nnXKZD6gWXhp7qsdryonSTZ7xG2P6Zt26HyGyjFp2Ud+mbQLT66Zg2RglKw10\neOxIF1EcNK65L/Ve3OWMNLVpYbsoDZn7CL2yJCDyO1RM/jc7hqT9kk1hFaRi\n96/6gwN7vQt7jztweTDnBwpsaXMkqqTNhPko6M4Bdg2tvH/7phtsBQzWewd2\ndr+28WhEA2clxN/Buo70sLEcfmpTKt+o4jC5hqypBFEE7Jx+jeyt7Fe8SDv5\nSF0eEDvBvfQLUnvtB3nEIdaYCnEIdXvsJehM8J81jM1tflbeaczAtsS0MBnn\nWfVT\r\n=TUJL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV7NO6c9VPrX9NFu1uRLv9VlHgnLU9dL/LwmFcUaizegIhAIAI1ec1EV2pGli+qlbBWz/ATnBcLdAgIhVYQh7B0hWm"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601503009-4c6f3a64.0_1601503134417_0.15139830057927828"},"_hasShrinkwrap":false},"2.16.2-next-1601544381-b52bb042.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601544381-b52bb042.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601544381-b52bb042.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601544381-b52bb042.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-D9Q7BoLKADFM3tX9F3UHELx/vcHZi9KpaJw9OkTABeZ6TO4W7rZ5yJLYqPdYTIckuJhnzOL03cIKHQUIc3/KbA==","shasum":"28ab98ecf875185ffafe346d7b38b43a285f11d8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601544381-b52bb042.0.tgz","fileCount":58,"unpackedSize":126858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdaFNCRA9TVsSAnZWagAAK2wP/j+nXJ8EQ9M49x8jMMhA\n50xUUP/DPN0UIXusLronXxxj+6QuusCbWeZnBg8pS50xZClXHBUHf73yKnml\ncDvfACDHEFTAndo0qcEgHzbpAip2Pn/VAFC0sQnRdmaAVTH+epOsK6nwrzkn\naa++wjMFT9o53VaYAbuHHHXvOD0Y0t8YG/pMPJKA1PJO4MM12xRayCeSlQUp\nU4Pi4lmXyS+nVhse4++Su+7IfSCMd8nzzbpHDlYXO1yVYMzqoXOABOHZjXVF\nnZ1HtXqoeh07VfNdtF8V4nWHAiU+KVXEjilVDexMaok7TgxwoDdUVLTRrPIN\nz4y7N+73BwxB6CHn+kgENFK6olBaPm+G3OdvwmlW09cjRUH3X1DkmzgERSI7\nehgxYCCWS1cTTayaJBKkIQ7lPKLqao2onv1bLJMiQ7As8sM+YhtOmp2Jw/7Y\nhKiqaAi8YD9deS2DVkV08ttlKDMcdKnsmqIKvs7Fzkdc8YBSmmchPCYngu6i\nqkuUTd5FIhUKSJOPtxLCn79epCbIbw0VJdnwDbIgbdYyoIwJMu94THIeZFwE\nf5+4QLddDY1eDMv6pufzTD/8UJNlN5jBx6B2erLHvKzJ5VG327H/PtOHHH2w\nFobmAxnGsx8T8f2RJOuy5mF5JmMqghFyzBz5FLkAsBkZubuRonUzLC3LQwTf\nuE+j\r\n=FhFw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAPHZq2r/zvmjYd4Ec7QgzvRHEkQuhwKhW9dN+gNvSRHAiBDcx78tmjKWd/B+motCttEyHO26DoQOrsLUVnF1Roq0g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601544381-b52bb042.0_1601544524710_0.2902415801419209"},"_hasShrinkwrap":false},"2.16.2-next-1601545212-4c4feb2b.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601545212-4c4feb2b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601545212-4c4feb2b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601545212-4c4feb2b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-i2qjfrJEV3mch8i6/i+heGgZ9PWU3V4oBSCH12i8Oz8P8eRgmU9ruxSEdewE43iZqMBH59o+C/X4uk94qq2G6w==","shasum":"7f910a628261ca044c396fa368861d2662656a43","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601545212-4c4feb2b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdaSKCRA9TVsSAnZWagAAtMQP/3k+CysSB7c5h46jEhXu\noWf249a/48pFwj2mAvXRacmoketM4wWXYC2gj4NEQPPjSIDuXNF9HNBC0+zJ\nUCub2r2P3tuW/7jwOsdSzZNYraJbozDJdqmeVhbbx5b5XaegDQP2dX0eZgcR\nPfTi21UmlwyMOCpQa6ENFuZg0l60ihlzXyaMNz6aSSi0Ehgfkeosm+on+YyX\n06n5SQ23FYAAMQiQmvWnjtz0xrC10/4si5PWwwUdeRXVltgH1f5NBU0+91lu\n+F1DpGe6kPHPnpo+htxjSSv8XkePsQUgMcKh3jYA4IfhEC35VQ5Bl/eF4XPQ\nN7LVl2uXQkk3EecqKUFqj5Yhx6I42s6uJt3Zqrm1TVgoLOZa4htK9urOWo5J\ntkOozhri/mFTqJtjFFZs7EB5Jgpr96Cqhk15qDzAPQ/YttN/TlGQlmhwMWmW\nHYfGyDJx3i4UMN1K7NJVbfxrlRwbKyjVElIPNxdJZXcM8FtWm3RqEl/7bP2A\nCfXgBkLpaIdNOJxoZgU1eSB6aAW3Bl+qasjwaFqv5qeCjaMegkqRunwmi7hv\n/PPAvA1dKZE231XVk7GVyO7UzgCBypHh3AZc2/ywwbw4ZjqK7tAgLlASX/R6\ngaommbwAxOOMX81OIjS3UrValUJnfYeONY4fC7so9c60j6qq5D2WyoVlWKGF\nw2rJ\r\n=9dY1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCHylTWP04I7Y94MyywN7iiLYIYPUumlsr8Y/chPv8s1ACIQCnyY7HaaFT5GQIe5IP8fAzmd2iBNYx4Oul7IoSKG3uYw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601545212-4c4feb2b.0_1601545353706_0.9014155838249625"},"_hasShrinkwrap":false},"2.16.2-next-1601547521-8d7ede56.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601547521-8d7ede56.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601547521-8d7ede56.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601547521-8d7ede56.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+9tJY9zKheVeY8wsk+SE/w6cGpYl3kNAuxex512rkTjjDghaNuSQqTLLCmfzu2kwddXhphm7WiGzGZAob59uSg==","shasum":"68f344374d0b7f54b88204eb92a070dbc36fe9c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601547521-8d7ede56.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfda2LCRA9TVsSAnZWagAA8pYQAIRU7MjRbRKmS7mbbYqL\n2RWRfu4A48rC4NR4I7r75EduvNjHrsafjnTarOJW1lF7k5MN7o7H8uPORcpP\n27j6lGOoJ5PSJc++LDoqNIVEszZFm5rTJ/26erdkFD0td+M1xz2fI82LxRfr\nTYx+4KikHi6vB+VNOC475kZfWETDi1pxRqaV+8MJrm0+IjM2sxTEDS3MKVrG\nRCaeNRqmCSWv40wicZHPSINWORgB0hUOnHqbn9o9ZnMiyzOmEpKv8DE5huOT\nOG56LwofK6zbB3PQ1MMFAFnB1wXY9uv6Kcj7UJh5Jgr4ZFNOswSv8MQk9YCw\nmLf3zg17nI+QA4sL/Eq4ARP4coLwwOUgbm1rym9DrAT+PJIe/Wi1mL/ta5Tb\nmpMH0pvI5VFsP7gf1Sme9Kp5Mg66eZMkUo3Czn6Gml+DRLrU+1lOFTMuIhBS\nYuIOOBnCbzP6THZq4GIDU9XNr7CgiOcXOSG0y+GKxHPaX1Ht0LuOeTJyHjZz\nzCp7Isg8nr9ZD5JUQevpRSDHPOg0sfNIm4/agUD91MjoPQJT9K6tY0v4DT6w\nG1N3maE9dV6FPK6utpIiHmeIFp+r0L9gd9BT/YINWBY/Q4ZS9yN3IWcWyual\nm/SHNm+1lMCjT5YycYzDAz13LP9Myqll5xPpagC2w+uIQs+eatlysTtYSiUE\nA4ia\r\n=l0uo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGLsYOdZA/0+mhQv5rDrO7GrE+xf01Ghv2iA85R2Dd4QIhAJcgrP1ZpZQhUhx2vkh13cHL3m5aRhypdyNOam4yKHuO"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601547521-8d7ede56.0_1601547659385_0.7756264918765738"},"_hasShrinkwrap":false},"2.16.2-next-1601548524-f707ee2d.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601548524-f707ee2d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601548524-f707ee2d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601548524-f707ee2d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cTZkWOqaMHllHUvWZ2M5wVINvARYbGIUqsvf425uGLO4HDG6rUKtjy8lceJ5as+RrLTinn4ZC4/DqH2yw8/abw==","shasum":"0c58cbe56b64e281ca268e6b3dac131997030eb7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601548524-f707ee2d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdbFrCRA9TVsSAnZWagAABEwP/RtiEr1GaKsOb8u53HuI\nOD5hUS6w06cLuo92xJQGceZzOx0DeiJHJBBN/b1oJZ5E0AO1wphoKCBdsrmf\nyo07bdgDMRd1K/HmXJNvdxBAffBkGLtCx7dwQJ6GqpeoD3GYRXBJkD1UlrLE\njHfhdsNMBfz/WbxK72Lgplyew4KKbm1nmBJXx59CLu7Dubx9tF0rKWnVr1Jw\nCVwNi6Bwu0/SARybSNzdAJU6rGdUPa9lQFOVIJPDwk5uaO3L1n+boDrYVJNw\nELliR4XhxErzkrpYB0R9XSR4V6L2b3DyuSpmz3jHuRMIu5G7aiK/C50EOrMz\nWOnu2vC5+7PW88fUfsLNSdOw7uV6BXHYwX8flJE2vMpFkZVBgjOcrTBFczkr\nWt/cfUbzTnM8geLSkb0rBFsePn8ta6wkZkt2FoERXks+JXU/KifLehwfmArX\nVLgKG7ckq8+5BhA3g99K4I81+mg0kpgA1puSzjxGk4hBYlOg4lS2Ecx4RP5B\nYRLvDB/hvC11lyPnPXR9naL6ndnhbxTcQbr7R2jC1ip2Tpt64Cik1FdeDCoN\nYVHAqvLPXDn2xQXnIErs6QOzmTtySrhGf4tKbqVgNDQwf6tp4PD8gbd7Bu01\nWnZ2QX5ZU0m9oRT0wxevWN/58o8aLPhWi93J4ZaRReJ/84t4ezd99jT4ZRe7\n7kRU\r\n=wfrD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB6VWBKaLvtMEQm/6SaTfEcdN/hpZl7V7inz36q49a/BAiBLco+i+OhoZ5+UXeHu2eKFigrErdGn0MZbIWoO8qWF9w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601548524-f707ee2d.0_1601548650641_0.255839335807746"},"_hasShrinkwrap":false},"2.16.2-next-1601548817-4787a41d.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601548817-4787a41d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601548817-4787a41d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601548817-4787a41d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wcPV9/9jFdUPNsZY9KFnR0usWe+VPoo7HJE9YJR4s8m6+TkgEfLJ14+i2zDWbL1cf3jZ1zrZ5I7d8iOcyPrxTw==","shasum":"9d19cc4d7eb448d3c40d41bfa4b9961f427bf32d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601548817-4787a41d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdbKTCRA9TVsSAnZWagAAoywQAJxsol+umm8JhAz/0ZLG\nMkYirTkz+kPSkOvEFgciH05adKk6iqJtO9da7T7TZtqrenf/bfoHzIdw8dj4\noIy+RdaxDDkKwUYVocuGwaTE+HyDa/GidH5//M048ragsKGVCOGGKRAsqXFI\n0w48dk/cTnGsxG0hy99arujXQ2m938kaLQApB8IqU5hh54VdLDjoDn4IfNXA\nQiuhWglWfRQIwlKt7wQUf+PzvLxOeX8Sny8gO8h/lakOZHU3BIi6azu/cDeE\n9SfMdgqDIwDintYx8Kf19Y8lL4cQf0xInVhlAy/koNpC+4nkTu+NWgb60HIl\nFu/Q774KgsCHekhJtIarjCI40BUbh7xoPOq7mk0+5w7QK5ITxTqessDdxXbb\nr2dIaqyuOaY5er2+GiE+AJv60z4xO7qergVqrzNWFL8Q66mjSvGN557PQl7Q\nBcRbQYCoEm5Yn+dBHQyimS9njAxfrIncWxlAuGZD8+3xZpKiGSgp3jPwEXkT\nsS+XSoaP00CWzmTfcHYuF0peOpDrqXKCigQp9qZ72T0vQ5kt2tCWgj/eSgyc\nciUXrBLM2dIocIr2npq401iwB5+fy6GlbyQfCnwUmHhU2t2/9EOty/3Sue4T\nMuDyzQeM+ocwVHCCBZwA0cZwlurHXN1wXOWctUFNQO1eU3wPEUQ5mQzRwmMH\nU+1r\r\n=JrzF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8qw5FskN0JhqJnK/rOtqcNmUU1YTu1mc1Xb9lQVqPNQIhAI7jLfibApon8RAeK1Mno9vEAXrdMSaMk/g1oUGGuDTz"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601548817-4787a41d.0_1601548947126_0.787521387924262"},"_hasShrinkwrap":false},"2.16.2-next-1601551504-61074577.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601551504-61074577.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601551504-61074577.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601551504-61074577.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3P6GFIM2RV5Aer+A0rnJOBpkusXvUoIGeSPN8sDIIa5r6fLScLCf5YIzxt5HJvmJkEygnmGs66ZBbzBh1xIo9w==","shasum":"be7f32d2474514664670b5d1cc705a5df89827d3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601551504-61074577.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdb0uCRA9TVsSAnZWagAAl/QP/jC92I4Fi73Xz9ppOQ4L\nGsq/DHpHQ/y/2S1NhOcowu8IOZUp4jDxfR7m/fiefvCrv7slB+DIy+DkvYtJ\n584Reaiayg6NABQ0ZKJ3CGHYxosMHAjLjYM7CP7egZISkayOeBwOSkOhSYoc\nMCWDeA3bExhNh8YHwHLXEZ9g3Bce/b4zpwFzNkm3Nm2ei3Od6soy6Ullp3S6\nO+yPGavKWiWUunOTevhn4AKlm/5Djxn6rPT09lb9M0Hg2EoYJhvsVpbcT3zW\n99rCS4LGGbmVdNOFwQqtuiMhGmpIQi15rBpz39jtfdf+ex7FKcMkE1wCpCKV\nXZLY6pg7KypyRsQZB0oWDAJ/J0Ekwxd2zljgQzNglYuh434mqKAjP3gcPsxd\n9t8rJerv2ryrZGzYSibShjiueCRJpvE++IlxbIX7BxFuNLffaAlIgaDTWrbC\ntKR9Ffmt9OA7HXIgTDc3HyW3udMp+duYWMdwf7MuvRoVDdZqh/VFM0tbllp7\nMSWaqi1NldIOYaNtevh7gmKkIAdph/9b6ywuZ77rRuwD42E9bHzpy7JiKvGV\nR/I1xO5baa+R6L0YAYIuarOzH17/Pyx3NNe98yhwn2L2It5qdqZ0ClXhbBAA\njIUrvDpGmpC8utLhLlTq7iACun42peZ18DnY0S/dfmAT5SneyT2YpqtColAk\nz5rQ\r\n=oSTp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlQsSVWU2KkcVGWvwNQ3eUtfA0n++7UdW9kAzq6sPDAAIhAM8EOSIh3hDWlkoFqr01Rfl4AQKhVDUcru2HMELLKAWe"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601551504-61074577.0_1601551662387_0.06143344448782995"},"_hasShrinkwrap":false},"2.16.2-next-1601551522-25f498aa.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601551522-25f498aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601551522-25f498aa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601551522-25f498aa.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4d7tMRP3ZxQ7Vma1Gl27YvNDWFe7kK5+houVjWXTN7Xb2aqf4S6+faSANCX73TwvniLFlxe0fvWdeH+SlAM5jQ==","shasum":"d3230a86bd4810f7728da1b8708c5634ad7bbb6c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601551522-25f498aa.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdb06CRA9TVsSAnZWagAAmq4P/1bA5/IyZaim6+w4zrJE\na69cho9P0mdDMCZtC44BFyhXxateC8DZ9ei4ou9vf6LxhwsOkxerlfkWA5Oj\nsCb4iQ59ruc6L9p/FwSfi4mu5hAri3BZZqbO9KdOpP8exkkUxeuyJg2TsgY+\nAwW/QEZUDsiNn1m8QuAoYfn1P/xs7MaYmA0yQ+aZdbZEz57gG30CVnSepMK0\nfPxHzsXgKHENWiJVI2Qn2snLDjGTOwr3/ExlqtcqNGT3IUBOejRiUj5QHkG9\nXkmi1bDFs4u588oIfXY6uYvqGNGoFL6rgCJY8RjwvaJ7tsRIirgDG+XRE+dY\nJPfUsHNYoKZeuCjk0q3lugKHM+dAnnhYQiXCuSdPsjP24Bh7VrNzU6xkftJQ\nL9gbpdudSa2YIRMiaAGez9sWkpepgg1YrKkdPjzRxxIX5wT38f9gKhSE21WU\nOJeUF7kZ+l6i1zjRiPk/a74wQ8I0bOakUUE76pT8u9yTXzg7v/CIqxa6Q1az\nZzwI8m5m4Pje7tU1jnS4OjRuTGCyY02q9w9i822gF4encjoMw48rZiAvhm9r\nx0kN0EitqOuHKRcG/4p1tozCb4LHhFkuSonCuLtu8+ygF8nOmgLwlE9PdiUR\nnfHalBsCYJj8B7VPU91ULoY1pd14eUvsCSmk8PVPD7VzbHLmSY+cdA79w3SY\nNTvd\r\n=PF3r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNVxzlmxjuPbYKZ+f1bQUSq8pga/DVVY55aE7Pkm1llgIgX6L24L2hc42M4ybMxC5sVS3tvmdlm6q9498ju9wOnkE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601551522-25f498aa.0_1601551673655_0.6982433815553597"},"_hasShrinkwrap":false},"2.16.2-next-1601553290-ab24846c.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601553290-ab24846c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601553290-ab24846c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601553290-ab24846c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zFxAwW84LPs11s5g5C8cAUiatK1m6XSv7IjlavkHsVazkF3efCEznnE/i2AYioUBk77mvwK0RTMPCU3SVkFiVg==","shasum":"0f316fc9d95d3cde2124c2db1f6db94c40879c3b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601553290-ab24846c.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdcQECRA9TVsSAnZWagAAbFgP/RkAwGe6MSoxXZZR3l+7\nZzJik3XTDb/ivn3JlJgWDQnIK6JtfBNG+Ys6RJQHu9T0/giW7Vc0iiJ37IWP\nJiwc5rMG7jHvh1KAMX8ePiHofh4Rys82it1tOFnifg4Q8FPChga9/svZrqlj\n8ZKjpBLhKspAJzD0p84z7BgKvYXx1Co0iGXZ5kAL0VRQOH3q5kCXB6Wjs8Or\nq/gihuM4f+7quZTfRIObvg84SWo+ZuP0T9aavqA7HIr51uSpz/IWZWjxXOV0\nIJtWRBpgsOrr6/05pvUIT6LfFWMwGn0PGJE2AlOfW2SR4iCgI8NWyuo8tTNp\nKmY7yKtAfrIeUwpnW3AvEAgNsh8SafheMfdr6X1fEti7xbHTTaNqHHHCtb+J\nZYGIItHsdBZS5XvT8RHoS3NLcnhijaaUCxhH+1fsH6pZT51I9aiDreit9901\nBoCTysu4q408dtQ7Dhr+4DscO/j1vJSzg6GygounTP+0eJrzNMRABAmYtPw0\ngTUWgcO0kirbE5gXS0Kllxyf+NPzUdgGnIzyp7tEYNio8459gWPufc81NLJi\nLZgL5UfrrPCOlEpPWQeu4ibj+GHZJhAQ3Dlu9/b1Jj4kG19FKmn7EJoOI9Vo\nQEBiYIPEwm5hEF3E/5KRDV5ux9lMWe7kU4DlRvzIisqdyeA5g/NlHLJGIL8k\n61WE\r\n=fmYX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3VtQn3KoV9ZNpQBBVtvEk02RzcMIzUYubbUatUpiRlQIgWZAK8eb7P9Heqqkr2fwRKSdOwnpyfA3/WOB9xxGDuZU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601553290-ab24846c.0_1601553411613_0.9575987394001833"},"_hasShrinkwrap":false},"2.16.2-next-1601556447-10a8393b.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601556447-10a8393b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601556447-10a8393b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601556447-10a8393b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KNgV3HRftEAJdTE2qAek0f0Fv1mO3Kl298eVAvL1UEsR1pyzJfl05oajpru+EipLBakx1vhxg1kXvehGD7qRzA==","shasum":"550f11d09cced0fe8caecfc46599b62cca29d38f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601556447-10a8393b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfddBiCRA9TVsSAnZWagAASPcQAJx/Vzj3PzgRjNUxwlmU\nvOBg5xJa622vKt1uzp9pyxESnM8bF/kjeeZxFvO3tiwM9AWa015cpbqAJf73\n+wIvwfuXQjgy4XBgNliKqrA7N+TpSwZ/RelqN8pK6TD1ThlXyFYGeqJ9pAG7\nLTnj4lRTXMVWcv1RlXSrCQ1qRQn5q+AMjW0HckbsdPbfkIAbOzN4L4TqvppX\nDGfyVor8eo15OCTPPwhuDoMDQ7tmEDdsycZaNWcm+rnqIta2Gn1jD8L8YqzD\n6e/Y3FQIlJLDyMBVU5pKxn7DvnpCbcAqWtsiJ+gGVP2L3SVbEG/hkoLf4EeU\nqwWTN4ZuSCQ4uSfSs6qD6qHlDKde/c6XtNEAeRGvhln/n3qEgNiYnLJ7rT9a\ntKpvgKWBq0M9mAPy/U+Y+Okz1B4+ljTQMYRQj4n8Xo1ovGo0b+g4tq3vV86J\nwhzwK1TClXYocXUwZKNO94jurHSUocTTpF0n+S8Wzia0rBAkJhqnoaQWez+w\nsMK1DU1DjegngxjMiTWcyz5/bSAymPrudjy0APqUXKdpkrpdk4W8g6QqTKYf\n9R3pJeOWNTYq73dapMm+Yl5DJMi/DKu7nQlCBn8xgVj7AfK1lDMTFoQ1Ay9n\nm+IuyVBr1ztMaEkQYOpxEdv+//Bch6SW6fKN4HSSM3RKuXXxno0CJ4YYue3Y\nypDq\r\n=K4wL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFyskUwaNgDFo/ml5a9AHlOt4T6/UDFBDuewM6FMjoR8AiB4eepQB4CQu9mmEvvVdblgUQD1TK9BQXTZJtkXhfgJ6Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601556447-10a8393b.0_1601556578027_0.4931066409403011"},"_hasShrinkwrap":false},"2.16.2-next-1601559888-773b1b88.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601559888-773b1b88.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601559888-773b1b88.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601559888-773b1b88.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SQvAecDzoSwNfnQSuKkYWj0IoHcWakamFQr2WUSqZlRnouNk+4Q8WQf6g8VRhoTeopMpI8fd/DKedLdREt/2BA==","shasum":"98404c7a7149c3c32ec292df3a501ffe3115f376","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601559888-773b1b88.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdd3ICRA9TVsSAnZWagAAulUP/1qtGHHlwixPwbIPNs7x\nCptUofMg5J55ICzL7y4KFYeeB+VVapFt1oEwv+mUupfFwsGYEVMxfQxHTLnU\njKwb6T+fH5mpP7hN3XuyQ74q9QJDr5HueqnHGTJntaNzvYtwZDVyJIpfz2I+\nVPAivXEuTE1Y2dPZQG4j4mIVjDHnfDEPm+vOmJGjpKmag8lfm4EoKd+DkFgj\n0p9OGfNx/JzP9Z9Iugx1qNjQGXZeDeQBDGRwqJwliqJX8ANd48TXPTKr8gCn\nwLD35yXJnqpGL/kiks6zSKn6hL65ElO+uW/ri3gkWdMCqET9YVhgFHBRyAbr\njCqYkzeSCmzlbdwNTi/+FjtlpewxGxSm/khFyZEcDqXYB2aZ4yApE/G0cxFm\nPinyZp/qQE2WuI5h+D7l/3sQg3EQiWJE7uGpxpOaFSQ7lH2bG+JSkYbpQ4yF\nv2D1yC5jJ1fRg5tZXQUIZLD14DimqaEn50MRR+5tJ7OJc7YKLqxneowu00Bl\nTWaXfLqFhpRIg9PHhtN/UhN8UkAzDsX3YXDvGUT/WS0Po2/wGoSMtErfD+g9\nWvGX3gQcpzMwGGwo6e7uh6NCyA03hHr1DwmWteWkLYf2RGnh92Wskzxk4FIZ\nsCImXSeMiXHtQb5vM5fjb4LPmFxAdeqaVOLc4494BGMwIJQuNfQZq4oDClHz\npN/I\r\n=ckZL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICdenHWFrk1bhBeN57Bv0r+AkQN1VqY954mz2C6/XOqbAiEA5wnJLr2RIjXoG0QETcRtvAMNhv+24R1tRSBCJ+GEqGE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601559888-773b1b88.0_1601560007508_0.02431012718721348"},"_hasShrinkwrap":false},"2.16.2-next-1601561015-bbdcf76d.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601561015-bbdcf76d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601561015-bbdcf76d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601561015-bbdcf76d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ARfuKD9uJgzxy3QQqS8CujNBnh3I9W158f6gfTp/Rfkc/3M5ovQUJS2in5f1OJ2Rsy0OoU7q/8UUDk6aA1PtHQ==","shasum":"6c23e09fbf94e383b47de8b7618064f7cc7632c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601561015-bbdcf76d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdeI/CRA9TVsSAnZWagAAOBoP/jH91NmBdCHZ08gzPtV+\nouu4PvhUwpMAolabdKNyPf5u61xsjU/kLaSyiKroyhUPtOvPfqJ6zrIYKJrx\npEE+iKrm5Ah+UXSAXSpKGZevotq8X47ZTzqjxsiTQVsuHu282a8lqViM9IFD\nPQ24fFkpRJcL7r7RVpUieLfgZK3oOLUICsMBrSz4JXsMJo3OaUKUdxW9V7F9\nhr8YJTQgBSH0rph3cqKYtkw7ouS2oZfq5AobzI633IbkaBl4M/7CgEiEY1Kx\nd710uaVp/5GccU0BSHJdhxLut7hPbscNWWc2JyDpgw+bWaJ5PCVD/yjVyF5C\n5tiR85oMc5JMZwKmv4OXmx742MlGm394JyFgTe5kSUSuuke9WGGgLANI3GHF\nBUjreADjOi6uiHHv8nt2I7Y6a7kuzjyfGJxGjNNbZnX6i4l7Vz0GXw7T/iGA\nU1b/AEnE7pdng3EymHzd5LEIeIGJAH/J6fIgdx828U6nO5kqxspkUVJZUiTR\nSi5IY57fOGKdiVzYedHhG/bgYCHT3EGhvv223ryvGRnWPsdTx//MJB/ZROrl\na7r3jkoKngHa+/NmDvggmI3pEZKHqyGAhcsowV0AeRMeUzd+zc65NF26oiws\nTkWqF7l/YQfrCO0VzPvTP05zmJqrMIZO9nClQvpLZev2ZVkViVgDzqCYenX0\nzDiX\r\n=x12o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/k7OKWbuY8uhcsFWE1YDYi1mzUkUXKZKJgcNNKwVHRgIgTCx8T1+MnLLjh8MOO/d/ZKJIn6QJRwiCk0r2aVioAPY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601561015-bbdcf76d.0_1601561151123_0.2103215654977808"},"_hasShrinkwrap":false},"2.16.2-next-1601561426-5bb06db8.0":{"name":"@xdn/prefetch","version":"2.16.2-next-1601561426-5bb06db8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.16.2-next-1601561426-5bb06db8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.16.2-next-1601561426-5bb06db8.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OiDeKShmlN2lDH3z+kda8YtZBwGw7j95MvGRWatGkbfuWhEn3oV5lnEX6ffhn4pZ9vKz7/8ikfXzziIwwsMSQg==","shasum":"f082d0226e862f28f77aa59bcf24bbb43152819d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.16.2-next-1601561426-5bb06db8.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdePVCRA9TVsSAnZWagAAOocP/0cRahmzZeFvTUWrhEHe\nsyEbHhHUo5Y1A4tQyB8MhIdos6hX7bvTG8PoLLjqFZQpXjN1AoGoWOxu5Mrt\nId6Nj9rWqZPNmT2jlz7ed9S2NLsg/+WjKUl7RKjRgcK9qf9RorBJzgqbWlGg\nJkSYnl2EFealX7DQkBqKjnzlwiEf/MOHvucS4u9PFP12mqDQY5dtOJ1bVlC9\nBJj29xW9y/u0U6+ryHC89Ca2WZoyQ4jhs4DF9V9/IpfGai2v1XpI1lWR6eRn\n2gQk1IkJkXWLs+kxnsWwy3b8kXQ0Cg1OtljseCiEe8XmDPdLul8hL4VX2gmn\nvUZB8EkG55mORewKCL8BvaTeSj7aGbkDM4ZxX6Oms2G8HzOy24Bbp/7LeRe6\nFGXus75bQWR4Uy3vy0OtyzeIZMaMC3z9+IB0SmXLxKqkSWBgz1LpV+hbs78V\nTBn+yr1z32x5oEpz4PsYrvdt0nIscB5ZdserbsxqUbVJFHxZtua1R0L9BWao\nwb6FzJ2nAaME7oM+BsmLdBVVIxzF1WSL/ck5RZksJRT13TJajWhLz9aBeaQE\nm3OqfHn4av/iFhOu6xrZbZW2a+QkRrBxTR/TLFXfMo427aPcG4X42CeIDmM9\nVtUFvXItLXcHxPB5LOExBg23GU2TQhGTvmidflP9h5ypJPfI/AcHS0b4d91N\nZ90A\r\n=O0zi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGgK6IB5fqv1QLRUk0V3YY7Ctj78RkKDLQqgE/lnmVvTAiAn64km8AtDWCxlnXmYEoMLhK7XeJcp62IIXT4C6NXAvg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.16.2-next-1601561426-5bb06db8.0_1601561557111_0.08787208424887383"},"_hasShrinkwrap":false},"2.17.1-next-1601562480-c2960086.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601562480-c2960086.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601562480-c2960086.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601562480-c2960086.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rNK3/JaNYpWxfFSEuuolLJWb51hmf5JFFs6zofUow0dkNOeEzDVzB9NJWp6Bl5pfR3pYWwzXHK0/uZcBmhGrpA==","shasum":"7fd0743b3c7893363dcfe1657abba85a224ff5b8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601562480-c2960086.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdef1CRA9TVsSAnZWagAA6qkP/00/fMdgUhYrm8v1xBb5\nm9Ox62k110JnEhSExtXAfXunIO8blm5HSaHAU/PCBXq7ndC5yESoHJZETFgu\nAG03cKp63u5UNXxSzodojRRj67PHze4Ge6vQ9IwnsVCY+biyotXcjWlfoLtC\n/A8pIGAdJ0WyiCMo3Pu0qLFmKIP9ZuDDBAP0027LqvogQ+7mhAPxMg2jY7wf\nVJjto/p48JM4QAAp1rcsDlQvYdyHIMm5ZCOZY+PyvPkPfx2lNXWrDvJCaBgX\nHZkVWYNv7c36tc1t9wJbIk09cb+eTk0PITZVQskboX9z87wYpgZX40su6fWD\nvMbgWh2AJDqG4pPX7JJibkuNuoapalrTWRS7kUhngOmZqsIgifhDLV3u5j6I\n/m71OcLn6E1DmM+dNjslgstJtHDQYY+ON3e2gJertt/KnG3NmoldXb6sCjlj\nN5jrgKl/G62v8lVTvi5VHOr8u8SUYifWUSpMQAfyK8aDKRMio4FACevQZna1\nJN0uYyzoM52N48lfgkiOqPIgRKYpv75B8569FVcdwYYu01ZX/H0KJoUAmKo0\n2asZRF7M0d4hMgz+SRCDtdkbdIrzEwyffUSVcGPCuiEpaioJCQyGT6GE/Lbj\n/tFd1JppLjL3G/qnaRLy1QjwNN0u0mY+2a+xuWiYKYLQCm0NbJQkXtWJ5E1X\naQYu\r\n=5QCo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTH+5KdpKW/ltsPn5If4ue0dohgUP8TAvBcDPnViijTQIhAJC2GEWsLND/znzUlALSPLNvB799oZoo3VXhObZ+IsL8"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601562480-c2960086.0_1601562613036_0.6238707095902996"},"_hasShrinkwrap":false},"2.17.0":{"name":"@xdn/prefetch","version":"2.17.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.17.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jbQ76wM1HjjJjKMuNL2ALUim4pPsJw679p7lC/T2abD9pt6QlApW+i0sK+zMVJKK9D10+Te8m0vBAvhdXD/8OA==","shasum":"01b5da6de84eceaabb13271c840b86c8fea0c870","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.0.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdehJCRA9TVsSAnZWagAA0QoQAJFF8drWOi204iW9CKCH\nwB28vDch1/XjYAdqC0WyJxEtoV43rQRdpPpOhhMt89mLizFbEij5awM/DGpd\nf9mo7gv2P8sutQuJIcjHLVj4qwjvVhZqUHhdtvdsnIQICc2MWTJm93vpd3TD\nMIY9epYhGz87AwlzCYFF1laoJISMwSCrAqTze04mWo6oNc5vEKLlvdbznosx\nCf4wUHQMtPW8yu9G7r8UrwX2+foDJ9IMGtt0K2F2d2xIuAyffeBfgb+uCmnu\nFwF/rvvIeL26w6zP+HNY5yTzsUMn91E534qMJl9cB8Z163rhzjjancPOWxk9\nv59/VQLiNlsfMIKJyrk0c4srE+jYVPEPv+z0zN688X3oIWa0dXwiMo5GPIf6\nONioNTSGBtXDYlZN7FxWHU3Elm30kHf93waRQtm6Nz2pVN1o+h3DbBTfAGuW\n1r/5KsPZ52giIT/Zskoz4EcTqX5mk2GQqe9c0mLiLrero3hsBCMmjNDJGngK\n+7wz/+9Ftz9CT3+mZl+dy3eRGiNDLch1IjcuFX52KRgkXnzf92T1YWxamktR\nh3pWtFypI50qmETs5H8E5IB58u51kK3jh1EZHzjNbfBiha4pgXc3XiV8cE/Y\ny89s6Yu6N6IbO+APM+mQcEtkFjGh1od2I/FnfAUmnipNQ9RdAZnJM0IQM/KL\nb/xq\r\n=Auqb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHCqx0b3bItrjWXM2x0loJ5JSO49CM2SB9zeQXYmCZZWAiEAk9IS3JIVIETIdEcJklkJhu9qWRxEQ0Xr0rbZAYMeB80="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.0_1601562697403_0.3715500788855046"},"_hasShrinkwrap":false},"2.17.1-next-1601568621-303af41c.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601568621-303af41c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601568621-303af41c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601568621-303af41c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-M6a5JTW21YjsON1kYxGEGRuzrsT4p7QcZq7SyAQuFxgpz4Nk1S6t5pXQ2sPHWAw03eulN2U3MEixOlM1yFMEzw==","shasum":"affe633a61a6226280eff666a982a7cb11cb01a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601568621-303af41c.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdf/lCRA9TVsSAnZWagAA0IkP/jD7N9x7BRLSUviqVMaT\nKoSIZ5eZbM9yKSneNIn3Ty6+rfrSedO8xoGq3WNcZSt6LFisRDvB/kqYAql2\n+muedoKXGNm3kOkiTgJeibGsxVLpdqpF2tMUujuzrtIZzz6C5EuO+ZhqBKqF\nVIDqDGhGxifojX6oWgA7bOjFRhUFkAIOwLH6sRVJ2IBrxT9czqZLdPfnlQY7\nhKvwnPm6YaOMV68tZgIQ0Jy7vonZNSMbayFm/5JATjV5kl312EZ3Y+xg7LCf\nP86CRwX8tIhayktNqHKNXMcRSTyfcUoyvks3ZUeMwExSeTvaWPm+k7y3cUSP\nbyhpgvzPhZ3bW/LNojwbog3Mb8Z4L6Q38Dm0Y7vkNcwCwVW8ucUKOcyiYxRw\n9U8YkDInXIqJib1J+fVIgpN9pnUMLeEy237LOH0jCFRbFaDFo+2H9uHfNGP+\nrSY7WbMfETf9OR2vX//jnN/1xnHVqpeB8+3aLe/uVMshSMvjAndkGX2sjZNf\nutNst+ygHTEQ6740fAc92Q8lBZuCxexzs6k5riQrc2nDXeihdav7cYgD4ZlA\nWwaPYREG2WO2k/TZeEziEkBQ1iT27rrJQjlNRVpZCybwIb9/37QzZ4XzgfEj\n337eUF3y13434VZ7XeuZFnAW1GtPReYNeyN+jHCvRo3qVtWBIVb0UdWT1I9k\nhck0\r\n=ZeEq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4mDqjfxK2tXezwMfBQ0bXj4X8sXLa+lUfFzTWW75rQwIhAN1tcqbwOg8lOAXMq+3Twos/YkvTaxXxs/SmG1mrO4o7"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601568621-303af41c.0_1601568740482_0.11791303248573426"},"_hasShrinkwrap":false},"2.17.1-next-1601569930-ad9d35b8.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601569930-ad9d35b8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601569930-ad9d35b8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601569930-ad9d35b8.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tB+570HvHIz/wHzActLNMfwz4eiVruqdbwoTkWKESLvMWeq4MHWKrKVs4SXIH3/ZE33J0Pl3mjvjWqVyw5MPoA==","shasum":"0aeaeb6bc2918a431e75e94a9c29ba88d1643f25","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601569930-ad9d35b8.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdgULCRA9TVsSAnZWagAARVkP/i3OLsEQy9he74aYq6+0\nUk03bSBHRleUaN4xony7hHGBdKLG4Q0AoVXFe+aYbY+EYdxvwUodviote9jl\n27R7Wg2GVatfwvIU2Cp3sTUr+CiZQQZ4oHmBwPGU/ZAWVW1OmjSosqgD6JnF\ngjrmrLmwvfwjXz0H4GW1R0wWtKdDkFtDooO62ecWkaYedNslnMPzpDkftuJU\nR5iXbOg5L+4nDtzSpMCQiUMJPnaZ8i5vvyQh2XbP4OCE25Q6Q2vSnDmYByNR\n4p9cKeIRundQvSrBsydMdf6+c9cw3gI+e2m0YrxtoxCe44iq6UzkeMbDVDM+\nn9bBLECYdpQmHnweK8MpnzaaDqnjwOhDmUVNhV3rrz8ht4Wc1sq5iWggP2Pn\nCa05Psgik38Qo8pyFnZcHNoCj3zcX8VdmqdGp2zoKss4f7Fd9p9FVdjUnfxF\n5tu0b6RDAM9GNvlJR8sBCxcMqEeRG25El5RsxEGLGv/4nnTRvBh7dw81h0hb\n5KWirmBieyJbzEDIW+zM9A5Y6SWhWWdjhF4wGMgRqSB25KDZgEtdzS9X39Fz\nwdi6p+0Uy8lNwSjEukOqJ3bKMUac+/Ofne7BRVm69D/dlds88Scevm5y50Gk\nkGymyohUAfV35z8hrHiHKc41dIfK2dKAo8ePop/1CJ6Mc+j5oTR+4j8GkokJ\nSPRV\r\n=cY+6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrCuqgL0CBlNTaU1Zy2WzhlbiYnaEfs7ca8fSBd1AAZAiEA3LpOyx0goQ4onNMflzwrgozap0hTQzWq1QAvM10gA6A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601569930-ad9d35b8.0_1601570058601_0.5616880259878012"},"_hasShrinkwrap":false},"2.17.1-next-1601570971-ccc86704.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601570971-ccc86704.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601570971-ccc86704.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601570971-ccc86704.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DO9R5PNpOFV9PVo6eDrDMRAmI1nwhnIUeif86TCL4D0p9T9LpeP0PL8jMVpV1TWYCdgFMMSWiEO/eJBn3ouoKQ==","shasum":"40e71afab36e0ca886b4cef1367f34e8e59b1a2e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601570971-ccc86704.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdgkqCRA9TVsSAnZWagAAB4YP/2osrp5ZpnH27KPjMejV\nZml2JGWh7LB8JXDnEYxcKvdYJwU2oSFONAJxw8D0BZgUV6yQzwXCRiUv5nbg\n/T47B0qlIFsgicZEsZwNeEg48NrGtZ06HFZ9jSoGRoaAMadsKhIUbuYeeikr\nwbRDjHUh9TkivJOgmgb/6VOBqrI+g1YXFfa277BrFoTe6MhW7vbJDGWo453D\nKSoaFP1utlbls/9TlAeDjML5Gs3uStj8jX1GWGDPbvNTYtqRUSYfSdm8BLnD\n27upDple/sHDAuPow+FhBnjcBTx62Ttv5FUyB8GVqm1haoqGD/ZQpZh/LaqY\npEH1XXUCMKLp1NAs5XPK2dCMW3O+Ejrbujn6dvNL6sX/vBh7xpCUwqRMDgAL\nRucnxBNR8alGaZ4KuXYBPmV8qiiM7jFVQiB9BT2TdlzQIzV6bWsCrGblPuOo\nY3IA+q5X58zksfkdZtiKUe7zBbr5cHcwJLPuFwRrzb4X1HQ5hzbg1aawTTg+\nu9vrMdKcakbjOA+wC9vfIM/1tyN7ERlNA7mRla33Mjy1kFGfJz8NHWqo3qzz\nldaN/bLkZWi997gvccQZAcJMZmZUCkx43ael6fktZJWfmL8WXxkwNeP2n46i\nAI80HwPi+n6nQpYtpHzhZNS5W2ksHSJr22p6sjzqi9D3JOarI77U9lhsOhCC\noQQ1\r\n=VcWO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCj35fVjbbBbw0j62OFzyghAXthpNoX0Y3brscVWhwrgwIgMtIUY7xDF71VCnb+1P3YA0DHuJFu14xcYZ6nk5SpfX8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601570971-ccc86704.0_1601571113446_0.6643902974126799"},"_hasShrinkwrap":false},"2.17.1-next-1601582318-d05af1d7.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601582318-d05af1d7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601582318-d05af1d7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601582318-d05af1d7.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-qo2x+Va0ZHVU4BmyYQHcWqqdZhAT4WX+lKNA5FmM7fRfDO4ktYRthYasArWw3zOafEtK+K9N2QQ7twsa/a79Wg==","shasum":"3c920aea3fd24e40b5135bceb07531fb220fd864","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601582318-d05af1d7.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdjVkCRA9TVsSAnZWagAAKsMP/1A2NCGLBFlnBHFcnEfb\nZg/qba5DRehK4MPbuQw6UepE7RG0c1H9SQLcQh4DQ3dfywvW6TujG+L5y3+1\n4rl66DatpfAV16/7tbFkhjpC9Bo24XLwYG1s9lHibbIV6I56AAiV0mSrAwX1\nJySJLF+FcMTBa8UHA7JLIN9eC2IdAKzsVjf950yUlHkyCSC6KxFac3U6mzy2\nVN7dOf25oN1AjKy7bOI0HVJdx1P6bEGzWxKAFMql27M0dQJQkblvASLDHsLN\nihE8woW/Lb6sJmvbGUPi+g3CKOtWwoNoA0uFfu9ov5M2SEFDJSaTbLQELhVN\nld0M3vy2gWhLRg4Rbj6K00DDQe4xEW6ydnlLy6ZkIiMmmZa11gY+Ym457W/a\ngkJAwSBKyO2t7zDwbnVzqqwO9ouLY8VveHocju4GW16imG8ULJ1JzAedATaz\nlB1nfUw+0kElNBIBrMm3XzMxjBUTnEALS7WDnBf2K14d+KseA5GEU7Lkaijq\nAQgAR0ymYlK9jBSoNMtNApmjvmuhgMialM+McZ9E1EO/a1BVlZMg0zqk6eNM\nZvetegOxDfHbt1v2zMf1cwnd6oVjsaM3YXLx1LPbLKVPALjcZsw1JN7dWyXr\nOSeaqpsBMJTZ2obM+X+vGozeHRSKJ2kgUQMzoB7Zr4P2QZBp9GhEjr3yCGpm\nY3Sk\r\n=LV7k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDesYHgZZoFhtghBkBoT7dMmSZvK8bKxb6W8FgN7Y2fOAiBWva929KC+FezuSUsHj/jv8CJKsljGoZj8CTmmHkKl2w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601582318-d05af1d7.0_1601582436254_0.8631557567951116"},"_hasShrinkwrap":false},"2.17.1-next-1601584943-e7c564ef.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601584943-e7c564ef.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601584943-e7c564ef.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601584943-e7c564ef.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JGed7OhAuLMsUmehags/pR7K3ddlATt9D/Q3jLXemKlf/aWOVaxpUdePDcgP526l0Bw8QLIAFUgQZGSXr/sr3Q==","shasum":"2e29d19f0633cc8a98d1c9b0ec3ea83a78414aa7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601584943-e7c564ef.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdj+yCRA9TVsSAnZWagAA1SsP/Rfg8sx+aFei1VD2KaSD\nuV4qBBC7sFHRrZ7EzLkOZehgLb+FUvvk7DRgYNHPA3+evFJb3s0sySl8FS/v\n3W9VU+Oo27CJ5g7prgW7a+0+oAt09oxN/vuIlpC1wYs/n4J7dhuzoO+u8jeZ\nDiidjVO9PZl/FmppzVUhlJJ30ouwcmHby5YdlT9iQqnVnoEODs6I92LhOJF3\nXJfRBNF02K5Z2N5gFdFwGBMSJvYIUwbDBNp19hxa+AdwnBqXDnCqZrcq3Bw3\nh6/SMMkO7bOec8KzuN0G0KjeO3aGVxlqtWDGz9nUPSuhi03bSAGyz8lreeQU\neIyaRWD+KWPwOCXwSmAeG/2XrevsqtF0ZDmEq6SXVrSQyAa8PtrKLAlauw6w\nwVVBFpm0xibp43U6JfpElMef3W02x4G1IJOfHMbQ+Go70gEM74bi/2IsXcsj\nSqDTI6T+/IoCoPS8NXt8eYHZM6y5sTOggb4zKWDOfdS9xEXPuuUk8fy+LvPN\nBu9n5RPPg63tRPtDNNF7XMLbNLX6UJAA1LKFcG0eLbLCVk3hE50JmSwmd8KT\nhGdZvo3rP4gaxhYXGLvV7IXaAux2EExz2T5sX8xhoSYa2zCZTn28xbMk/9MM\nWJCZ5BRpuQoQJUIIJHJonMF9Q0n5eEYYmRJKk8t2I9bSLb28zZsELvrjcrix\nEClX\r\n=hxWf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvj9iBJaVlToVeFcb7wPT/k2+hbONMVume/FBzxwNQlQIhAIE74hA6nWM60ou183geLY8S/tWlTTb2UwAhVaCXKz3H"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601584943-e7c564ef.0_1601585074269_0.05910040189059207"},"_hasShrinkwrap":false},"2.17.1-next-1601593993-8715d591.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601593993-8715d591.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601593993-8715d591.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601593993-8715d591.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ID9K4y6IeNu0g5RFMF18j6qFNKcu0nmgDIl731GU4M8cQbraNloPj6cUNAaa8rA6cO5T+ugGQ0nDQa8C4c+uzA==","shasum":"f4daad5b8cbc60ce716466c68c1dc971b615cc2c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601593993-8715d591.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdmL9CRA9TVsSAnZWagAAx5wP/091I5gtLuIV+aa+bw7M\n9xYzbD3FDFd+/WvGqxvlyte8f8NkTkELww0nKcFUiHe8jhHmVi6jRpT7WaaL\nD1YPIQt0VnhWvze2xFrkh8ThspCK7fcw9u7q8XoroeGKhuW8o6OvvJj2coaV\n7d+GYM05DfjDUInCtwwRK1WQQQY95Tz/Oa+0z48aGLax5tLSFKkMgZP0Unj2\n/pkbiAcmclbTbEco9iDc7mwDQTWCYouJw2YE2DtznWliq9MleIuIwiyLPHrK\nUwuv+vW83MKR7vpb+ANdQnbfWH5yw+mUXE8FghwHWj0Dq6/l3SEaeVUAi7Gu\nRKTWLaH00mhYQIklh0pjwOCS9g36EpKpHe0oA0vd6Dj1TqIkHzJVOSLLHgRd\nrDM7WVj0hJstLc69H/KjTELvRX95Rgv94LEOmSFcrXrimgWRr8n1Sx40C2YF\nahVH9vbSzolKMhyjzK84G6HB2UM+oPa8Bze28FL6c/ogcRxon6KH7cX+GDfQ\nyUDBu0twFUKfGWSTLfifFit6SqihBKwwE+aDtaBLZalMBNpP1x2sU6AbDEHC\n0vZvLcaoL0Ar++uv5IH1ySe+Oxyr2Xv3cMtznYk9rvz7FRLG9ye3AvLhehpS\nEdbb0oqTz+ggSiy8KZqZgelHWONdbgGfIboAxsPd1A5KhWQ1KVOxyxldYosL\nBFmy\r\n=BuEP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBzRdliZzoJMI6J8N/oZbptuayVBofZtxlMYu90h72H/AiAnlzndFLrDBf631Cs09YCg7su++DM1QFRQHBw/tBfaYQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601593993-8715d591.0_1601594108595_0.7977707657746589"},"_hasShrinkwrap":false},"2.17.1-next-1601595126-7ca0f45f.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601595126-7ca0f45f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601595126-7ca0f45f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601595126-7ca0f45f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Bm5oWnURrbRB6aXT1SBWZYpIOShf4h6UoMTgDbCgzx7j101PWk3sAg/SHIxIq6+q3dVKSrNYq8nqg2IzBjIkAA==","shasum":"45c63a0d6c7cd47ace6457bf7bd1f0f9bc2cec88","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601595126-7ca0f45f.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdmdpCRA9TVsSAnZWagAAK5QP/1FstjtJOG4Yi7mlgVaX\nya6Vx5/AL135a0z547MslLfAjc67V604LtWeHjuZEYA70VoWWIeyXRnWfd1N\ni8dxInvTnxjvCTPdTlR2zqGika4kUQ8Tli9lmwbldFaBDFvJu2sPVAEQdYk1\n4gGjGXX4ch1ab+5dfeFvZuiusVdSgzO2bwpEVNRTWj3o5QODTRbqmYpWfuxd\nbib0+25t6AKRCz95ZGsIXbVpYl/E4j7c/rDxMi6QGX/yX/XiFpP/mmcuahm4\nNI4YYCRInd12wO+AMQZY2IHPTjHZfb/qd2sJunfOA7/FhD+Rz21J6wriU5/+\nzr1L0yHnMB4xI/kTKHD/3bsuk6xfELL4YjboRLLmXyw7JE7tALfS/CQVR3aP\n1GJRU/oDNqK8rJTi9f+TuoS2hRDUg1NSv1wZo8mRrRD9j4khM78reKIHhJUs\n45rvfv+lDG/4VxESt1iIIltSZiqtmqFVa5BUbh6g65zim+Lcwti7y4puzHhR\nA7o1Ur2/K6oWAN/g+GUJMoy7nQqTHwVj9LcRprOe2PYYDGZhc7iAUPw0ztA6\nxJgRD2MssWu+ZnKkuCw/2DJydbGS+1zz5Uon2KnjGnogzN8B2Aokm+Kg0+xt\nQ71txvO1N40J7kq0XMRDLWw6Zq1/niv7Bie3JUy1awKbPBay9ST39l5IKohY\nAY8m\r\n=MM/r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkpAv6uHJFQB21KXh6DBv/BcSbxmzk7PbjkrobrCGo2wIgUQYFgHuplh69Abox421SYiGIxlVOAk8WPDFiRNu+8Ig="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601595126-7ca0f45f.0_1601595240841_0.2859439098729266"},"_hasShrinkwrap":false},"2.17.1-next-1601599497-556c15fb.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601599497-556c15fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601599497-556c15fb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601599497-556c15fb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2dT3wsppjOyZucpb8tk6Rza2hBFEJhxbN4zsmQd7GhfDya+Q09nOy03qLrUX4NSXkYXUQvn4PjjRBRikHLgc6A==","shasum":"82c16fba43be2fcd302bd623609e45f67c75d784","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601599497-556c15fb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdniCCRA9TVsSAnZWagAANZsP+wQ96nUYp8rC7bZXUjRv\nyh0OI9AaTTd8CIfkWpYwltPVz05viJeQFrsoAFCiL7vjyISIpMA+45VghezY\n3grIPik/8OflWffHvHWEvrYV3QEy2Us0fmSx2eSPX38RTIYkkca7cnIg9xfp\nfMxOwGpocHAwgotw5rlo9czq1kF+qs61/EIuN6OjYz0T2vomAtcDe2EgoCDE\n32Gg9lPflBjRZEPL/Q3ZGdBcwN+hfx1xH/d3TZDHPQZSm8+HyjCYsQ9GW9w2\ncRS0VY1LB7FfCHCQqZ5BbYyioCPHC5lAIbNiMB8gezu5jD9N/utMC+miobvV\nO9tOOz4NLoJRBVS3mOk06uIMmZ6ekRDbXi9ZqxcG9uEDvuFUGDWpx9HIgOH9\nBi+3bgWCNyFokqElH9oz7Evokhy+BshKeRaQhk7igWpwZov0owz0+JByp+6p\nmzQpEMaP/OG5a8lulAArxVZfyOoY0JqW4WZYdvC+RZPyGH8a5BwkTfFhf7ht\nfJp6evdjWWRg+9RS/qjdOtX1MqR5N0zcXma7VMj/r1d0Zw7EHWjKiotyXjrD\nWRErEPpQg4JzZES2KYrLNEPtKgHyOLYBk+CIhWVGqINYiPXupMBwHuZLIlvB\nP7/34aGnokZeZ4Ue3XnDTGsXhKK8PxfJAuGOpuqwGC5T4q30mjY2RsOMH9Lv\nKbkw\r\n=xSb2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDf8XThXxW27Gqdwrx0WgNcW8WUWhRhEj9JNZPVaA9tlwIhAP8GI9p62m1UyBxZ6Qhpst9gnPUkwZkSFE4IbnqI3oI5"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601599497-556c15fb.0_1601599618425_0.4304672884052565"},"_hasShrinkwrap":false},"2.17.1-next-1601604448-287de422.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601604448-287de422.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601604448-287de422.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601604448-287de422.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0lbBCT+t6wZXA9k+/7Y/CcMoI3WgphFw/a7dQKnc+95oz6IN7/D3DGIjmxqNBlgVAoVIEplJDF2VqdBjDJC6Mw==","shasum":"06af6f57c09ab17c848c19efb2f11f501c6c9a9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601604448-287de422.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdovfCRA9TVsSAnZWagAAED0P/idy2vuyth/b99SFifu/\nqHobOxLNkIatzqSgX+Mo4JoulBhL8KVILeiKZABPXwffklz/ciCgPHipKsdR\nZvPYBXbYWv/I5jzmvdPc0X3Ogl5z0MtzXGqITKjUhWxoUr31LQxV7pyKsIda\nL7URKkhh+uOmnV+WmUSMrNcf+O32DxHlirNF0wLZoh+f+0EjXpcvXVPdVJQG\nsTQ9D+CQVOQaRPVNDcbtbUlBvm8cEGXL8sQt/dtTym0Dc+NoLcSGfO2yOBtQ\nBnVKlrkVEj6dIUbegVLPPqhSh+nJUeE9d+cEo0bCgkq06bYGJfUgB4OYQeMw\n7nJugG0cxe8J5tcEgYzAQFct+AU16YneY9i6iCZnY3/gdxMojNATMFT107qq\nYEonIdrhP0Rq6VxZp0pUyXIMgew16sz6esc0npHwlxEZ6r7N3SRP+BNXKq2G\nReO8E2X+1UM0LFZ30wrbqIvTUMw7oxYEB/KLQ7Ff0S7Udox9cSFoapTiycOR\ng3402YDt++5rTvnGx6dRG48CjexKyW6s48Yfkn92JRk7a+aX1XIcXFQa/n+9\njSUdRCi4XdO5+jl285E2Yphw2LJy6c9IcL7+fH+2g5zhrFzFb7jrQDoMk5Pi\n3plqc+zsmvOnGPSiaMzaUhBWODLenOVMWPIRUVLl1uHDWdlTCZar61R82x5n\nN7y9\r\n=U2no\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGha1IRwEE5oomViOwgNIu0VYlyJIuvmq/HHT6Y1JB8qAiArk5G6NKtgfFjyfOi4Kzen5zjHLqEHnMD0qK07GorTPw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601604448-287de422.0_1601604574561_0.7475536804688845"},"_hasShrinkwrap":false},"2.17.1-next-1601605820-fe5651b4.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601605820-fe5651b4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601605820-fe5651b4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601605820-fe5651b4.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/ldiDPDhkQf6sTcU+oYDueyeaVTv17vQhwCwGDGWD7I1K+DgGtrdqvoC7mWvj1tD/DAXW6rr8PnF+NPvh5V5LA==","shasum":"cf852461e360b66462feb008522b7ac3b96f79a1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601605820-fe5651b4.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdpE4CRA9TVsSAnZWagAAM3IP/0lQQ6fhmeHkTNP+cepJ\nxM7T+/KG6etHppwGs5g7wo6ik2pV6fwPYtagnldgWqshw8aVZGi3ZnbAvB1E\nAkhVWm4G9B4PXXXiIh2WRJska7Bx7qg/l043z8lYWNgY4FFDBNv0Oam6A6MO\nPstgYE/EZPhbaqzdvrnkWIZz09jsCyoYOMbYIfEF94YCttGjFfJXV9F/cs9v\nNQTyzbNb5VwfEudJV44mcrE20pJDB9Q30fXOL/89TvRoU5rzzpooELbgvgQ8\nmGdcjDyrY/9ErGL64c9GpiDjwbr1IA/3hS3POfAXNdsKf1P6Cz/9r8htCqGC\nzHkhM4xoBBJOXa/bv1Ti05rBgoX276X1KXnVMOJ+MsTzC3xiuvxnIWoQHsiv\nnXz2gnPR89RfbJAFwqYhciAQO4+0MUaV2pPCNp1wOhdUxGcJQreZIG3qBoAs\nojs6bn915X4DY17TkLHgZR3QZxkL9a2tFv1cjFULsZZx0bYJXSI894MZuG8q\nYccZkdfamlZ5qk2eVFJKCyL3Y1rjnIjFbH+xXfjAvVmymy2XCS+HHd55TEUh\nGlEB7NiEkHBbXzkv6PqrRPZVqZiiVEHt2bjwYjHKuVCPLz9JHXET+6B0HOyf\n8VDpcJAtB0Fw+6AVuSQXmXCtqco+0d9NY4haQRUkNE8O+9jb7a+/6B25PCLh\n/+Al\r\n=byIt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFdpLxN0Noc0uYN7FcEVzcZW61NcVETZGTZG3u/Lm5ywAiEA8bD9wtfO50EV5Sa19NZb1kecq0hJ83RYTx/6UXAkoN8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601605820-fe5651b4.0_1601605944380_0.06152005359906676"},"_hasShrinkwrap":false},"2.17.1-next-1601605964-4780440d.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601605964-4780440d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601605964-4780440d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601605964-4780440d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Fx6mcUZclYBYgEm3NQiHvC6zqmTSTVKsVk28TbiYZTBjhrtMxHunpuoEbePbAP4mwtUmEC6BsNgNhHsGT6cJAQ==","shasum":"1a3f188b4c9a17b3a35cbb8d68ca2add23378d44","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601605964-4780440d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdpHmCRA9TVsSAnZWagAAC0oQAI07F9zlhG6cNA2Spc2Z\nlU7eapXiZIzyhr6m0g/h3DCPLbkM+FuLF1+fi2/Noju1352xOvyuoUEqPDaT\nMSsv3iKNCsWOHbJtSXOtzxzdLO/iZu8+FySsh0CoU56NljoXmI1A4Yr7uwVj\n8ykW+lDNkBAElS/hiqygxc6TZGUDF9gxxP9ptTO9kGcKArl2yLsJWS/OBGnU\np37j7PfnDMp0eEW7ISSS72JnHTEhREd+8UcRVJSqTJ7dXDSutkYiDyMuYPK+\nhRFkP2ieaKtuH25FydGzoeXrjSqU1b067gTGroPHjPZvKPnE66fHUUxqD6IN\nzJcHwpD8uogRDqEOMXzzpJCqNrZYTrNcham/WDWscM95oNNwOd24JXB9/D/Q\nzaoRyPmG3+TzxhwS8ijVyJv5eTTDWhw63fCNTUddBdmRk09l9mt9tvvlzQ2o\njrrPSP/AFLu/MnXLb8sn8tFfJhU1055Y/uRmnsnvEvIEsSXHotfzjUhBeXHn\ndMITf8y/NUZcVGobdNbU0nWYF52MKEfLCeVBw+d1TV9nm4MUPnoMRNP3XhTx\ntzryID7qcrKCF0L7GAofRC3rLITfK38l/deO0aFM3qI9p0G4qlOZXTTsLE3w\n4lYfi/Ll8ssbLmx6LGd+5N8DAi0k2OanqiH59h9LXPuMoLHkYX8YCWzrymom\nvCsC\r\n=Cu9U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDdq5qKZD6qhUXSObM5sDC7xuPbWPnj51+AeB0tzjZjEAiA5UY7qi4JB0P06mfjAKQEw40AgpwOgbSRJowK5T18w/A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601605964-4780440d.0_1601606117951_0.5189556688974246"},"_hasShrinkwrap":false},"2.17.1-next-1601629464-e280d7c5.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601629464-e280d7c5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601629464-e280d7c5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601629464-e280d7c5.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oPtQ2eXjdp+WJI0dQ6TgOcieZKqxZ3MknKt4Q+NTUKQ+1UPPY1B3rfY5nvwokDQ0J4W3bD91yPFaJt4ZyLdZng==","shasum":"1f37f71e8f130ea93d51dd08cc7f8cba9acb9b6a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601629464-e280d7c5.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdu2LCRA9TVsSAnZWagAAxFkP/0cbvo6vGut9/s+lXnlT\n1Q46NtsIScdUzbGCIlnOhO8KxHtEUH0iC2AcAOL6/eKJr48LxJLRRY6yiY7b\ngkTSwwdEGb+rvG7iebMF6wm7fBZq6UW245Qjuzk5Q99CjpkyH6uzxlB4gP6m\np1ZVbF4/cb6HUiU3ru9azUKfMsnTLxKXaURy5vXOgmYoPTgbZrzjRQRRLb8T\nht9VR5vFTnC3D7E2HRlNaQpHM+7gIL2WikdHIIeLCpU4o7ibbu+VKz5wNx+4\ntpSO3qf9JLTOJNNkzHI+1hHSZzERAKcJDvQRtY/nqdwAsAmqW14iGbvtZKWU\nLY4Y1xYrZJiyb7BwHDapUuTjEspmfexoxIimEGLV6cDuJLlnU8KgrlaMstve\nwJuZdjoQHuI8LTrPfbGyJBu//BoH7DVSqI3G46V6hx8QjvZDPxrGnEeWmGVn\naWTUgL+995jz1fvZXMr4gM2Zv2/GdmzCVUk9Zk84f2rPP/YG7pKDo4VyGHmV\nFCcMRnakjMlO9riBPzu4yyHc0NAkqGxfNzg52d2kasuUodeT1IEExJ+B0jRd\nw/Q9bgRmsQM0qY4Me1Hpe9U0rZ1bRR9v8g/YfTPDfCwP7Dcb2iMP8cUl7BNE\nlsx+709STx7yYooXpa4BNBKGkIyMnRezpeTBYFSEXey/bPy+gXCMu6yh0rtc\noRDt\r\n=prSz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR7CUFs9is3SPzeSOGlJKyHL3D5waczwqQcgC1yYiMHQIhAMnIh7WnrMuzAMCLVXZfXzJdxgmIX0AFGGPucBJZpVLP"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601629464-e280d7c5.0_1601629578706_0.2717901002353944"},"_hasShrinkwrap":false},"2.17.1-next-1601630989-4fa52c12.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601630989-4fa52c12.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601630989-4fa52c12.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601630989-4fa52c12.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HWvpY0FD0OH1OqmAGIvxQ/z82qz5v1J1yt/TQDmxXJb9AlZKyrB3JyFqUYi3CvrQ/4Ydj32HV+7Fp53im5ggCQ==","shasum":"6378c39ecb232593fd696a8f1ab7959ebef27dd5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601630989-4fa52c12.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdvOJCRA9TVsSAnZWagAAA0kP/RWtTr1d5rIFBgE7pmaG\nHKFyjYm524z3+R4VMrUWxYpWwhiqCfGkf7VGF4Vp5Ug2/V9O4SXmtxl93GHd\nt3a7pE/UsTtq5yuccvKzxjNkLl2I9BKQFdEk7C+t534QDS4bICfCv8zSvlXf\nJOEPzmDFzVAPJT0blPAZjG0hoBQikLrDhSJq4wV/dG0Vj/9VyqTXCq0Ndt5i\nkpEnjnlZQtfNiws6xzphxhp95khHVXAgh3ayqQcWKkvx7tUIA2T3MyO+Rcj6\nQQNXCdEPSiaHWTvWIfJvm9pyku/02ZBO8LSgpZyVRfbVuMRfZHTUFygPvBd5\nWIhKd9maVrCZbFwzES3bp2WQApl4lNISJJbm233D5wZgXxn5dF0DcZDWn/B2\nMBdkk0zudeFMCnlgBZn++qIrxfUpXPY/m5wVJqiDdUltp4ZrFj13wx6tSq0Z\nJsybZN/YRpV1Xc5Xi+x8ld9GVHrTn5DhRan3aAE4fF9f8HHB1l9iZEK24QoH\nk5czuCMuvgzKQm08juBbMMHE0cdg7gyjgoKxLpvPtV+Co8zxesVWtxXmGkYi\ngzfhiQ47gSIC/B+clHzbKPtPv7HeZWLqVi5Bkr2peLO1iEIJGOIkD2GnNRoK\nkq3zrf/O8gge6AWRZNHkYiGkJloWolhu4wTlm/PBYdIyV/IAmOCAYXFvesFW\nswo7\r\n=q4ZL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDehpzN31otOeyc+eXZAy/pf6vMYJOovdGD20J+uekj/AIhAJv98sK9ng0jIN6POLnaP6l1Afnc1dJ2HVeTAH8N8w/u"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601630989-4fa52c12.0_1601631113446_0.3150050699334874"},"_hasShrinkwrap":false},"2.17.1-next-1601631233-7999e51a.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601631233-7999e51a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601631233-7999e51a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601631233-7999e51a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4jzion/Vjt/xVmK5XoFDJK78rH10yjmXcE36zaFHsyhvR7IUfjsxek9ThFwS/4/1FoOFXRvy72J27MaFMIFAkA==","shasum":"661cddfc4c5349399b311cedb599e4be9cbf48c4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601631233-7999e51a.0.tgz","fileCount":58,"unpackedSize":126858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdvR4CRA9TVsSAnZWagAA3lEQAJHsoC032gsagrjKaBCS\nhLfOeLfGhlwsROGW73LBfnCmFeyIRyV/0dCTu5CnKYzoGYT+4cytq7w+Y6cr\nvHqoRlThJzhoqu3N7Lz8m7YdUVjokXTYE4M4ekx3cnTpKpWbmFCs9n7MfnLV\nNTnsBqhfwscPSwp6x41iLVpKReRuASk1L2XVIhk4LVrUtW2JrfkJhozBKFPn\nxAothR0ptnngWG4sOnnyq3MYJnq97Q0EcqBEyiDk9FJTGNL3TbdTwpGsV3If\nGHK9FHPG5y23S5CJ4Lyy7znBlfTISN83si2hnLyM5tDbXmvRMxU2XBuX9c3e\nBjJDkBaMgLEx59nFzk8ylX7Xuj5ts9I7arj8npOUJNKWhf1vrU6VZ3GXUMDU\ndgFN+Dzvawpo+NdLakR4fXdEVwHRqzk5WYndJ1r2bldvrtDVRvB8POrdmBXd\nJN0NWnvsTRyiYquXRxpTtkF374gUQD7jkjpI3SWO6AujcfYKcBxKyfkxkqor\n1KNQJknbvaQlc/h5AjcByiAt+LOlpPTBjoPBugMgYNbrb3XtKp9EssdNvG0b\nKGzaS1OYPsx4ViiUfUQ7QSTmA01aMKCK1OSMcSkRbxOiXltjJ4w7UHVA4dOE\nQRYLiJQm9hRcgDKy6Q0EiZUWiS6QnJg8PmaI7dYgRRlN8poI3Em9dVLjjf6X\nmxbw\r\n=U+jL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRKaHXLt4L7semGfgoTaYsvfkfVdJUZNhV1yRWTol/oQIgZLl1hBW73m7915/PoDgUtJwCOxiR/20WH/5FEMha6iM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601631233-7999e51a.0_1601631352219_0.26561399050305234"},"_hasShrinkwrap":false},"2.17.1-next-1601631827-8a994923.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601631827-8a994923.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601631827-8a994923.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601631827-8a994923.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mdK+vXMi26c4KagkwmELUcYPRogpOzS90Eacm0Iy0Ro3PGWIUcohiMNEkC/7r3UCW2vHYnUMgT4rMAZST9IOxw==","shasum":"46ab544c276489f5d86eae2528ea57fc2e1f19f9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601631827-8a994923.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdvbZCRA9TVsSAnZWagAAaxMP/1WdHVRtsMbebXjuSP+h\nq1XJqexhTNK8wShDl0UD8Dp8j5IEhDq4ivfirw3ptGOcQRKM5Htnd4Dy18kG\nYmny9JJ3glHNngfhKhGLjh/fU+v/ZN53FT164Fx4a4ClOCuryS64lLnMvmeY\ng4XvVo5ArAH9kdtvW0ndveGHd9uwHFFfXBwj8FX9tySd7rvVQjD3snkypLKd\na4A9RO1kFiSN0cV9B5V0BHhudVYtSmq04ULftZgbYlA3LXNWdpVQVGGw3dwh\n9VYTE9+gqVzVBORrVXGIlo5datacVM59BgfYiQa6jRR7ubqm+VzYMM1v75x4\nlNH8Uz3jkFy9poTW/SFOGTnPonlG/7HiD23rkkdNvCMgGD55m5gQtRbtO3cG\nShnFDiVTC70LUwTu5Oi+pjVoeV5PiTNAyvA4AvxpgDNBgWXmkRX4fGXu1zSU\nXfIO9KVP7opm89Mp8qS6TbmV6iqId5Hs5UfW61AaSMjRCFAJclciplFhSSZj\nSj3vIB3/L+yI3nEe3mtAo/UEmm8We/M4UccHuI5Rdlgz9iwBcvaB6Qj3OHKA\nQO3GUN4hpj5jpSRsfRq1kec24cdU68ZLNX6qvW/EKfebDICTUC2CMNxhPMTC\nQPYw/aMviJihjqay9U9aEuWrWeKxqlsHlEaGftFVK52yJO0OPCApEjnWt2qJ\nL6ip\r\n=eFvZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH9RCIoAsjuThts+XLVIJoQmkTxse94W3tvrfX7HUz6LAiAtiW2J/z7HU9JbT87OzmI58UgrybcJWbObPIIR19kB4A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601631827-8a994923.0_1601631960990_0.2172705873111891"},"_hasShrinkwrap":false},"2.17.1-next-1601632810-4fa52c12.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601632810-4fa52c12.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601632810-4fa52c12.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601632810-4fa52c12.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wSkB/g1lQs3X7ER9ojB8KWDbeUQ1h9nYNqezo+2/Ci9D3xvj7rjcxvnAdkcKfsxVCJimp0Bemv+Lx3rzJi8Hcg==","shasum":"7638190fbc6efbe90c9b6a58719827233ab8c02c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601632810-4fa52c12.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdvq9CRA9TVsSAnZWagAAmHMP/jBLWRF7K86D9jQAjlB/\nETkRWSAQVBGCOkWwXgO6SHUtEGXk7JDJRLab6zU6J1B8kYtt6s2SppL5LpNW\nrxd7eQseUFvF6atIhjGnV5t+pFlWURasGHd2+h6hjvncuX2IyhsuJcRR/Mku\nlmw7YW67SQ9sSWUyYTkrBxQJ1Huc5+nIl9nPyCKpGRlB3PnPHrzGzQH4RtVa\nzAuDiGcDoIykl3q/ku8Ot3HXrQRRN726UH+QG0tlbhVBEKmxr8pEpVjeEP25\ndl79mRmJDnRn7PbrEgCyM4IbkuOddFPZoa+m2MPr4v/WYrLRCWBZ8IIslW+P\nU/G9mFZgB0Ih79bFEYsNNhGiOtbxpN8VYa0L9eZERztSQPtM9yuX3e9EQOK2\nFmhkEeOjQoiKlzcM3/1NKuMncC0UOEov9ztNjMZrNM42wNiP9GOnUr/DLmGg\nzHXNwwcKD4+LpX/xusSu0L4hw1NnxrwfjlWoCCfPpgabxS4IlFpwfH9BaIX3\nWUuVpkfW+TCDf6ImqWbwSdDWiI6s1yVuzx/a5Md5/kNmTw2nIeOrnEmMSnCD\nZ7Z4D21HHMF8ZGSMWzkA+jrcE4Yd3ZMuSgkYrdlBK4IR0M6EOlNhSCyvjG7b\nToC+HwiI0bZQDx3T8axPxL30FaDnTq5H+PR/hxSwwzGjkxoCJWmGhnMShU+a\n6Nyr\r\n=KRuY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHI3PKrNsfxTg4PbORFjm+cIosdVx9CsUVBXYIOz6djNAiApUWXPKHvYSfQ2MfblAj9VbzpW1DdAXzn40uNMGwQ9ow=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601632810-4fa52c12.0_1601632956731_0.19617659804336562"},"_hasShrinkwrap":false},"2.17.1-next-1601632853-d9fabe9a.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601632853-d9fabe9a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601632853-d9fabe9a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601632853-d9fabe9a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ljiwyFLLy+fimZXrXk4aAs2YJ5LAtU5HhEuDpMyb1LxPBf9jKBIT+8mdteQMRG2tvKTJlbZGxh2gUxwY+pdheg==","shasum":"87ae480d6f704f4ad347ec4a3dd3e527181525dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601632853-d9fabe9a.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdvrWCRA9TVsSAnZWagAARUgP/2FVTe1hcQA1MDMxRUkd\nlWXkamA+c0y5PGrQ0IcYyLgdIgtUAhV1KJgcYVgdnvtxfpgX4jb/AFKF3srN\nIGzZJ0EAfVDOzx/L/0VeBH5G6thCH48irbUQtC7BBwupzO2vMgDO72+dnOor\n5jqLaof0YTLqb5m9bU7wE7BgNml+yJjNzoFq0pFwa3tNmgi7MxEzbaIp2/eh\nRj0evAmAMFyptkkrNqhYs9cZrnwkdfJZuTgscz7MUqHvf0zerDhsQT3G37RJ\nMzz6gkbS2jA32NfBd83Nsqk2nXPBz+SiXKXg5qQVfVnkDua/wXcuCieUFByz\nMd+rgBnJiXeJ8fpa720qysmDBfsx+RQyDotF2oYlyEechC2MuI8gAtUf+KRE\nSM1gE2r1FxKQdm736jQMBlQV6kZ+IR56lc6f2/f8XkBH7Ug4JshDzhwrjUId\n6yaMPhrgv847wO1tv1ZaJWAWwyW5fTGZpZnQhTKmhuPQ+ULXiNWeHDcvg5N/\nYPJUV1UkIG4YQkqWMGEahn/YW2h5x9G/AWEsSgXQKDfBIvlUxuLvZ0QtXzgz\nMOWSIYo56bw3nhDH/ZcvrkTIJ3qE1LPAIyAbjKkP845wSpJAGbgPMsMmv+tQ\nNV+oiAJCv53wnhioEkP9H4UPGIQVf5SxFMR9gkSCeeWIN1P7/hpGsq6I1TOT\njEcB\r\n=qdXk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/+jL9h1ALfsoN+u1Yxet4cQZBhBLEAq1SchcglQKmDAiEAkfVDSAivSAuz+3VYgGCY4Mr114AcrG3MoL+jYdmopSw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601632853-d9fabe9a.0_1601632982163_0.7102879886799474"},"_hasShrinkwrap":false},"2.17.1-next-1601633715-fcf487a3.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601633715-fcf487a3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601633715-fcf487a3.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601633715-fcf487a3.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KvFxOwSOlrZX72Btnry4/hw3wGzn0auutNEzYN7eQVAP1pqkSy3ebD3ud6zT36XryHk8d4qzQqbiHtCMeh7mQg==","shasum":"636ec57568bb7ea73ce001c123880ad6e9f8ec18","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601633715-fcf487a3.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdv47CRA9TVsSAnZWagAA/Y4P/2u43ZTYMCKRVepgGtI2\nq3MNuxUblG5FI1w3DE9951e2nIMsc/Ebt8iM74oi+PWJNlqZs4tzGafiov86\nOC550ZVP0UoFXrRA0Uhx6jUUvdn9+W0w0fc/okX+tdImGcwo8ABEQwZlS5Fb\ngwMdbGOgLJfSnLppgAElcIB46HiDEGo7Y+5hMdlemPOoJwjNMabJw6LsI43G\nGtE0jzDIUp/agzOcBaFLOzcFNuVjyNKPU05YnboI/RnrsFYN6ZGWD1NHqr3W\n8Ko/lYgRaZkIE3RCZAxs1r8fqkrlTsAcDhm39d+JCeurYFyRa6lnn+tcGaWL\nbkAqs7JQtZXILrNIB+Tzzy9LQehD6p6MhenGzexUXh0c3+tHUALK5FMD0hUz\n4XnAHaLHyCzYUwVo4KvcNpp+8CT6KuQb5+hAgHIpkhfR8FLcDpap97VMu9Pz\nqra5XHlWED85j/xILvCfEtj/Ey41lGcdKVRuV2aujGJxCx5Kj18hc1aBWV5y\nYQ9tNatQDcL2UeuDj+rSlXK3TzmtJzL+VIS1RXBIcwhLQsyNRKBLFdQnBknx\nYr3URv92R4V8FbVCI24tiBBtX2EmlnfHQT7HlWZRFcC+dcZcKHo+N0BDpNkX\nXupiWeA1BTMT99s7JFgqAHRKtZ/PXRchCBP2J6Cq7EQOAgJQReOujfb7ANgn\nlbUB\r\n=uOyl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHoFTmjKlKmdH5ywEb86yw8MkMs5lR9Db6zrzeXkVVebAiEA4IsjuFv96VxdaNRE71HvdUwlrZoBRjb9l1ulJgVt6jQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601633715-fcf487a3.0_1601633850975_0.6750696196506738"},"_hasShrinkwrap":false},"2.17.1-next-1601634215-d03c78d1.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601634215-d03c78d1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601634215-d03c78d1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601634215-d03c78d1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-V01OxYkJ+zGL3qMb9BW0z2dF9quFYGnBf7gA2JwVsOvJ9Ug7ss6AK+t8uk///pE2RuHvdAJed89yOS6phXEldg==","shasum":"da39c13c7603027caf510c26dc54df812618b3b8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601634215-d03c78d1.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdwAlCRA9TVsSAnZWagAAVRUP/3ImLaiBNNhu0tex2D8F\nVgJ8v04Ind5pNdAwvDZ6x5yqWUw5V8AaqJYpFjRc8U7sgUYz57G4akfud63n\nUv4jqmXHPV3J3zwpr0GMXeQ25yTiW65QgkMAEeZVERhITYQS3m/TzM5TV9AI\n+A/zFWXEiyTURo8MDKfKs6E1oiNgvO8SXK5H9tgRh72TKuhmBmKvG1BOC6Md\nXcjUSWTLh6h1/l+feKOh0YienYCDsZcuYpouI/iAT7DBfMpK1ar9sq0j4F1L\nHftGdU7skScpQFGDWTTWd/i1vTbC7mMm3ie+Kshej9hVgKHRaHGr/pNwuaA2\nTDzFND/kkHmLDxJqLN/T6mE1Sx5xx58hjLYCqEgALUqlvq1pH12OWi1jjX3T\nB97BXumId61rELOt/hD/c55QvLhWGnCeSTMWCRF1GZ3hdnxtBop5Tkqr9tKY\nBkmxLKdw4ao9nRt4WKnplH9lPpy5S6CTOl6Ay0w60gINhHGn2D7jhB6pPasc\n8oSFTgKBiydCfMf/WN8sdpwMGvJhwpraXuKv7YdX7rF9TZmSbFGBNKJ/525H\npsRAVBQW6H9ReX0lwqp1K5Vva/rrXCMWPp+ffuGons4iSRdGuFAgJeYy76X6\nA8N1by2WPCrXmPaNxImrLr00GIr1Lk46Ab/mKs0XOzZ/s36iZsa+M0YjvNgk\nI8mk\r\n=ERiU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH3mBJJ0K0QK+soTRZF1ushlvj+kgxNdvXFen75HcPJMAiB4MRWVX0qCWQvFm1Z9Sl82Wr7zq+2odmNUXe1MRRKz0g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601634215-d03c78d1.0_1601634340635_0.6798028910463252"},"_hasShrinkwrap":false},"2.17.1-next-1601634250-7dc033b5.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601634250-7dc033b5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601634250-7dc033b5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601634250-7dc033b5.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Z/URhQmcO/R8XUKMPTGPcF09X7JUOfliVvono6g9Tvu1SzAtYGMw+yKYR7h7Gxy56RY7DtDrqVWelbhywfVrww==","shasum":"0e5a7cc2c05a629d5102bd893118ab50724685dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601634250-7dc033b5.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdwBMCRA9TVsSAnZWagAAUgQP/0O5qlrCN4ZqIuTnwt3Y\nZOQ4y28W0IUkzzOMdfh8DJfByPa2l1jJFraJReUo3ADETr/jzmoyGpR9nBwE\n4hsjXMHrL/LyGf2LiWy4pY4VrSsaaTFQuaMrzFTtZoIk2MxoSAODnBIBq+b8\nYJWg4he+pqHdaQXuztwMY+5U8a53RjJqFTmsJBauyvT7QhtFm9eGHyQAtJEk\nN6gNpFUw7iDChAxjF9n+tWoQezUie3H122C9nI/8PejFQR4ECvXjWSTsyB4u\ntjfF6MWE38am9jc8yhKWsPUOO5BzwNfRZ3veNloileR1BjHk5FTGEsx9EwKp\nMyF/ZiGZpUE/5mDoMJWu2DF8njWhtMRFSe0879DOLa9yxuxPfW6SURgphM0q\npSe5wwM1nKfzjmcQ9aIk25FhEk8Llz/fTcAIpldixw8jZ5K8QaO24u6ifAJU\nEplN9OQtCVeupCJ8IR7IMDQL7lR71DXoLMGvbKI5Ij59U5HX+1zj66h7ggGo\njbDQjhEuNZsW2+823np9u8B6OvBFs9sADk5VD/xfBKqoecWQe9AglqimOPfx\nkXLNp6UdELnIKnfup7HItEFayxYU3hOTTC3pgkjHQIQsGpVEOUcUU8qsGRez\nawt/cG+s05C4hoxWUvlz6+I5DjNrbrwdKTM4dVSpGpxy5Ypxe910IAyh5Xe2\nZc3n\r\n=fusU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDTj39Uj/CaWIVl2vfCKa/vI4Sis/DZqcL6IxJeSQVIjAiEAxphMTck51kox1akgwqcZNJKrpuMhLAN00aO8jR69uPI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601634250-7dc033b5.0_1601634379525_0.953084084190843"},"_hasShrinkwrap":false},"2.17.1-next-1601635923-8c6c7d13.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601635923-8c6c7d13.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601635923-8c6c7d13.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601635923-8c6c7d13.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1oE5qEZi0OrjymXNGrW8w7EGV331cdtSKeu4YHH0PcHS+RM9zIhWwzkJqwxIMj4V6nBxS+5FnHw83hEpxTQMjg==","shasum":"4fbac3353b08c5959ef55be0923a614025a5df64","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601635923-8c6c7d13.0.tgz","fileCount":58,"unpackedSize":126858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdwbfCRA9TVsSAnZWagAAMskQAKQYA153E8Ejc7KM9vM2\n+A2CJ3B6m+xjW5uCcWK3wlyhLWgDFfrDvq7khqD0Tq3i0+E9BbgCb0iBkMyb\nyfbyu1VhmDmxfyM8hTAU0HPnWssZHUxdgoxW+c5Aki3mFVj34x9OfH4urVSQ\npSLpYYnrlhh01uDVk+YH09wCTjX9TN5Kiiepfk8/d0PSn45su66B+KugyVFe\nR4QL+jjmWJbn06TLmjoWnvCHw0UtnqAWfnFXlvrffHWfYzohZO9fQd/YaBtj\nQWQsnkgidVPIsmsZXE7PhGkOjd5OgYMp/EHPfCVfNTfSsUxQVkgUQMuxMDo7\nnfw7FDJgxnAilc7gLLdfFOh4hTCKCcLDYxiefqjWOe66noTnoRPBD1s8XLI4\n/x2QKWw1Oxx2BpW3iRyvEZuHFm7Nc4jQh/GRBhBnjZTGNJohECBNw+JmqNj8\nNwURTLvl/ufrlh23dTsLeqzML2VuSkTGQrZFWa4vRMYysLDwbrXQDxpeCVnA\n1vHY/gE8VZlffbKgS8pgayjXktzo375caQT7YR+BRxpPBu1niLNMSd5TyFqD\n2IWUcaabufJXVg9h2SCi1tXziZ92HLzuQvYSPKGZQLFn+/zvU3W8I8iB1F3O\nFVZgLexe76Q5laDsPysXinNj2qumxYXAzHLTEK0okAwxJQTY9kupu9Cvw5TY\nRXU9\r\n=6/oC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCs31jkUNXhdJx2QJ+d5G3V87+yWjH8zNN2Xjyjhg3a3QIhAPIEHOYRdY0dWa/8l6TaUhq7IvzI7BtJDPwQNS65UMqF"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601635923-8c6c7d13.0_1601636062552_0.557095594108747"},"_hasShrinkwrap":false},"2.17.1-next-1601637594-42c1f22b.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601637594-42c1f22b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601637594-42c1f22b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601637594-42c1f22b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MkpswvAPg98hAt3kZVlGLM2M9kZJ/FfjB4ISniMNnSC87N8PPy7K577WJo3npgDFiaE9oBQpglmNe6ESHZSKow==","shasum":"2638a1e2af1f1606bc7a0587d28f4f5ad90dfbd4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601637594-42c1f22b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdw1bCRA9TVsSAnZWagAAwHEQAI+DR/IkeFeFjqgmoj2D\nFP1aNUpT7UTTKNjvUYkrITp1NMk1GQbBLBjgdEznNeEGexTRYBwTwfwQ4Z3d\nY5zAeWOY8HCCaD2m+b92bHk+fx70CXs0HGjvBWCsuHP91U/W+6j2b+6Zz5bf\ntb3Jnq7dPtJGQOE3U2AA5DT8q+Lxvizbc0y683A4kqbNSHhbYK0GYmOxudni\np1rrsWlaGJfLXooG3+2ZBSAd7K/OHNnIsIpcU91DesHRbOT22xsiJntAeRY7\nAXIwTZcL0FUaKrlwjIIFewtcMVrdHO2BA6D+B3DG0TeCVFDVo/N1eEP8+V7s\n3MbyrDl9tv6zcxs7IZJU7MQ+Wq/2Rv1hMU952ajhUnEDmFeINBmjFtEkzWxF\nUiDtfvdvpoWO2uP/FoEJYD12mZQizwlxyvpWPWnduE+VCiIaMBU/VFPriiu4\n2TLk20906FBR8W87+0XZyHYm7VQqVK50ZaXNXe+fjhn7nW22l66/oZ3+H6Hg\nyD/Ncsl8mPtzZTKJAp9xDMdDbOuv4+hoVKle+UDPhmK32i96NMobW3Aib+gb\nxAuwTeasxWbQId22XOcHOPLYIyB5yfewe6uWGmUc6D63eJwFrgEHh6OjUTLb\nAo+Y8Mdo3HKQXA/4BaY4lOyaw+/+8Rgh0ZKFKJRboguxrrDI50zO9mz8fBLy\nl9w5\r\n=jMvX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDskEOxDinal8VNqnJiG8pRJSfMUcC777ElIlX+FVw88AIhAPtZybgcvXGt9kUL86tYE1PvM6DIoG8W433guF73q7OK"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601637594-42c1f22b.0_1601637723018_0.8438818314663634"},"_hasShrinkwrap":false},"2.17.1-next-1601638172-bf8156c2.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601638172-bf8156c2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601638172-bf8156c2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601638172-bf8156c2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-v0vUEE8DI6mJzHPeP5HUFsOBQa7rW/10yuz056oVDj1I0Tp0UnY59dDj22M2Ni+d7RFlE6bajqAgd5OsgD1tMA==","shasum":"5566a78baf7e8b75884fb8a07ac76f96d95f3262","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601638172-bf8156c2.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdw+XCRA9TVsSAnZWagAAuaEQAJNNnYJj5cE2PLNgRXyg\nb3aNEGpDC1Ht9apNQUoKjFp6MecEGjVsLuWOyLhzKoUMZkpDwzMzbie8F5zi\njBkVwypDzNOw4vkXukGSdfeS75MCmO5gyHhfOtL25MlpJzOAWZmJp+JHEP7N\nRGblLRUvWZ1WggiLCQca0H0nqqsiKeViTaCqHcza1UARmQFMrQtZwkRvBN15\nqxQknEHveGysKJI8lA3mzlve62uE2dtdGE2p9WEWxSoaDHHYt6Qi8f0XcFJZ\nbt2GSCEVOp/rnM6RWxdU++TjjFcPe0TrVgoPXeaxi0HasMXgC0CRI/L5PEqD\nefxF23CPJohN9HU/1QKZWqraLDwJ8jkgevyTjVkMBcUEzYAh6TmUVA+Nf+zx\ngPbIeldbxyJMFSd540mKkrCo+qqc7wdooRXkZy5BQ+/oXgBXLSIKhz4vuKcU\nwKH1+sQwsE0VstLy1b2Nyug9Ey3m+Fz9NIUj6yZAs6NRmTDxlZM6bES4GaTp\nB1eW8oeEtm7WpB8WH7d+TxuF/WywWthc+aGE5ee71/nkw4EBXAC/KXlREDld\n5nw6+sPovVz/uMlOWFdAvA0GtANrS5s5iQU/lBcLzfV1sbO2Riljo3s/MU/7\n0FxXz0DyjVz5cvqN/QeiyBAHX0umgLeK57Q6OHAQ/Ulv9vcxKCcS/mVFRcY2\nOSYD\r\n=S7UI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrcfpH7kxif2PAA+1PJZr/HA67YoZ671IScE2oUBRr6AIhAPcf0VzJOihXxMhILEKEAWqkMYsoDzLJNxvLo2CMbx+c"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601638172-bf8156c2.0_1601638294991_0.3127018314428849"},"_hasShrinkwrap":false},"2.17.1-next-1601638332-5a28803d.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601638332-5a28803d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601638332-5a28803d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601638332-5a28803d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-k69y41InAssNu/8kv6I1JzzCTf0pI9WF8IXsBH7doiV/rJ4dJDf/+B9XETbKr0K2o6RzpTURO+4rxyg7G5GubA==","shasum":"dc279f5bd8cbd1f4bd99a2d58b806b31fcb441b1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601638332-5a28803d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdxA4CRA9TVsSAnZWagAAKGIP/RTTDhAAQLIybOhaFxVB\n2hAipbBO1dQknSZGWfpYc7F6N+bR1JNJNVbNeuQgj36VDPz/jP7bePPqXTIg\n1IBYh6SqurMHJsCElf5+HHCZZgnwtAKd5YJPKodzlc23eJk5dt9eohuLX6DW\nSHiYBXLZqllRjkxhviTg6ADlsgSWd9liQw1nqTcKaBNns4aJOx4zAIE0jJcX\n78UBKcoD86SL+NEjNPDAK/9+rJ5rvQMsiPJkF25/3f2B4vNgq9mD/81QYCHS\nvdSOz4Sfg2r9EDA8bCk4ME4L+03tDgemu4snWvX+TFtfxPurCDhRmsHWhezK\nmx7Fkb3vrtoBIJxovv9W9AjHwgLr5YTWFo4mX/CswuW/62mELQMuCww8cKiE\nN1zG1qXDgMO8mlSFCsx6SEamjDG+PvkE5UhWtwFtbyVRv+TMb4Z+XVd4At/J\nwyhkVcVJ6eAP9jlo15HB02/Bz0pspsVg62dTPYv5yAemB+c0A8ssI9Ysx96S\nX9OXP6UQNcKhHIoKCYHqULhffG+WA/CNY/aWEVH6nPn63q5FM0/c/atrWqwC\nqa6tZuAMeLxH6pt1575JxIiOFP0+jX//kmUfqvYb5vUndIyW7AI802J49yjS\nw1Weu1YI1EgmCLeZ8lerOjHOT8KSY5x9GpcLrS+WrsqG135uu0N9B38h06cj\nEbNI\r\n=6IRC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeJHlKiW5IaxMQIpw5ipwju7kl4Wwd8arLkNTandp5ggIhAKXwesGKfPBGMl0EKXnLmfZXBf1GN+ubFL6juglFboBd"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601638332-5a28803d.0_1601638455974_0.43898171523781504"},"_hasShrinkwrap":false},"2.17.1-next-1601638352-8018c917.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601638352-8018c917.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601638352-8018c917.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601638352-8018c917.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uy0n8wfIA5VGY3j46+2qR0K90B4bKuAGgdJqNAUlxPWlutXEYpRsPwfR07Ep6r5+pB7MaLw5UvFUU5CDhRZo5A==","shasum":"638782ffa0a5e718d4ae0ee1d314090d9724aaf4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601638352-8018c917.0.tgz","fileCount":58,"unpackedSize":126864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdxBaCRA9TVsSAnZWagAA1jEP/iTYaxxdjaphyVRRrRYe\n/7nhFpX4uad0VOo0BXUCfP6GFDZM0O1YCnu/L1/HtglG2aDal9HmevqMxIr4\nMdiQRR9jO7hVa0cn5aRZJ/hXS4emorLrrzlkxB3X0wzi3kf2uN6EuFAmsYpZ\neTNYFrZcOnYtHlZoG8yYWyfX9463TFhtooZir3vpH6iSagH77X0IuQxLvoU6\nNwpuIxYSPQUMNhZl/gDqeN9/6X9SAjHjT5JjnhxacKWE/KfcjYO7pEGEa/05\nIi+WGUhK4ScvkRKJqYwYD9guBzZ8lotJPpI0vb2kfi3l5ayfMCPqP1oMuist\n6rRF24mOVE3/mmBKKJ9j7abKhQjnhGWi64vFrOeRN/fkbxkdH0TL/a3JPNRL\npi2E7PhZDuiAN8wgxyDladnspwKp6odcQOmZdMu96HsJJeydfX8ry4B52Y5f\nX3yVfhVuH3BkolM6naldLGD+xG8bVDSZjHtde2JZrDR5BUDfEnIkB60ydyj7\nBD8atU3TaWUpqmqrIrZmrgP1/R6OGHibedfe9Kd/9/L0TmE7S/iA71jryTQS\nnthAeKm6a2SxYUrvhMJcDG8U8Y/8dxPX1NTalhUH0DCNrOTbvIQpHNbFetAB\nVKYqgC1uInbjUDaVI0OiXxhhcOtig2RaURFdCQeVHPJXWbJk7pn7rRwsbeAF\nLrjg\r\n=suQB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDUeTGBjIg9QtYUMUptoO/eSl8B0WbgptbQSfP2xAOaPAiEAqxSRCUtLcjyIKiD8J7sQaEOUti1pW+X153EKvwitvuk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601638352-8018c917.0_1601638490138_0.9572803870179656"},"_hasShrinkwrap":false},"2.17.1-next-1601638685-fcdb2fdc.0":{"name":"@xdn/prefetch","version":"2.17.1-next-1601638685-fcdb2fdc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.17.1-next-1601638685-fcdb2fdc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.17.1-next-1601638685-fcdb2fdc.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pNOzVuYqkdr+fEeHoxqx+9LYbIEQUCEWK/Ij1N/g+x/q/fMSj6GmYVMzcVmv9BEWZndQMAxUFM8EvO+5Ogd4KQ==","shasum":"7f7d7741e94ed4ca713dc798142a34f9e8311144","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.17.1-next-1601638685-fcdb2fdc.0.tgz","fileCount":58,"unpackedSize":126864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdxGpCRA9TVsSAnZWagAAtDMP/2omgaMCkDJ1ZvwoGU1v\nvHewipBO/hFaEyf0e8uIeBgFlncMfxtJx+3rzWmHBvP9wxIdgrtWhvutDmXl\nJvjMkGRkHJ98Y5JMco3T89fd5K1AR/6fDg1lhZCAcALj2LcptUGbarBxmEB1\nfsad0zzaz2En4wbO4Hn5et16gPT4z4xbzBRc1f6kutmB51oI/jWbe6JcOIW8\nkJfdwMzmAG+DFk1Asyd2L6tXXxm3RcS+c9ZZ5bRUUbWZeefLq5iIMg+9jOTI\nCq1xoVXblAFzD/dFz/2W4yaHiTfhBswNq7K9QBIO+xb5v24iBCtVbtHhQ6aR\nh4TdrTEXywf8wKhZNP1mb4G6lOmiGkmZvEqfjxwRg2TckVxDxHLWrq0xEPne\nWqj1KilYxJkejr5AB2YeR0voaVY63snlTW5+E7pCeqA8iTDef290fdu9UuL+\n2k/66vWyKRupC8ZSIjOYJutJJUr9C40kXo11o1ltC8j/WWpG3Cw6fiSeZuMT\nymxAnrqgVWj6S5IZil81Y8A8LtqKl18pPTinKRW4bfx6Lx1Kf/HT5Xav0GRc\nBm79HTYH3n8Dct2i6SSVXgqxa6HiQ1huzGpaSFlfbHia2rsKB/KtY0tOw7sn\nhdwRcS9qAD1SIvX7OvDA5rYep8Fo1bu7g69xI1Xqd7TUrMjWggKXLB6IVGiS\n5lu7\r\n=E9k8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1EHJw99MQyPIwBm8Mi4rdi4Kna9hXfKEOK2E7/AN7kgIhAME9hcRr/dEX4/W99+JpR9YiHJzEiT9SI+eyJVP/TdS8"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.17.1-next-1601638685-fcdb2fdc.0_1601638825427_0.5428112522177451"},"_hasShrinkwrap":false},"2.18.1-next-1601639054-115a8012.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601639054-115a8012.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601639054-115a8012.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601639054-115a8012.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nTaz3mxM6J4Nd6ZQllGG/+pm0ssZa4T4SgUkPMm2110onrru8X7D96wu6DhVVkY1tN2BkMZEy2kkPDYLGcrVaw==","shasum":"7d2d2feb6b2511758b49e889418067db0aba7030","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601639054-115a8012.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdxL/CRA9TVsSAnZWagAAahcQAKAABnHuo8F4mSSPh41z\nHbpCgKLpOqQ5Eu+fwMfN5/gQJNRI35KXEMnK5gaVTlY3OL8gpZyXcC01sjOr\nfGAk4ZLL+nrKaqzrZYpg5dLNKE3tbt1YNpRWAu7fNu3lPcRPCiWIwFNVEqR2\nSwGGQA87N42XQgCNSKnbba8bsV/aUMQ0jNWkzZB+gN8p6Os1XU8KolaO5Qcz\nJ0nxXPD4RiNP9CAtZ7SqXQyr5qOPF8oydwgoZiHqAjxREKmQAeaO6/X2lgkR\nZbkYWDW2PkjY/Vq+kjGG+BkgXiyFzKkGk41kM8L2OOVk6YpAx8F4ZIiEg50X\nHw0rD/nfLqJvO4cuX4vKGWw55gvDWQaY4Hzf2qUt+q5W9mQvVEkDwds/O8OJ\n45bZeGrKnDwgTMq9zEuE3eq0qhqyh6HigodFuRB/pyy9Nb+jX9Z16HQXL6i/\n57HdLoRWADScLdRQ5A1qAiIhDG458GkPioZWMp0y0JnP7Hb+4l8acfUwJeXD\n2udYfVSOHcLldfgWgizIi4SZ/4eCIxAx2+3vSME7tiOjFWBSrl7XJwaVjaji\n5kFyfyRy0P7ZfVL6Su290YZuHol6te94FxYjzYq45BYGSS59MSk+R6pX3QC1\nFb2HF85cRifPLEmjnj/xtEFfhK5ZSoXB820mwGJvAZGIsbnlJD+d/Grk1aTa\nq8vg\r\n=vDFc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjL/a50KIcnTuu+JeAPm0wFROCueympj2cl2GYbTReggIhAP0yvwvnwNQKCwCx8mGRjKjbC9aujT7/D//iQjO53imx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601639054-115a8012.0_1601639167124_0.8763871440202167"},"_hasShrinkwrap":false},"2.18.0":{"name":"@xdn/prefetch","version":"2.18.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.18.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1pHGFcTZd4zqek4jq7LDfGNq44eWFCFRzRX2gmL9HV+NQIjQxTmPceiaV44HGJ/ffDtoXSc5r2jS5thxbqVKmg==","shasum":"c16a5e77046fe06c08c4ae93e4895de38d5943d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.0.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdxOFCRA9TVsSAnZWagAArRQP/2dywIesVAxPrP8OjtCA\nXV7pyKgH6jPqbLMP3lmyx2ADWj/RA3nrYCCViaobbcrf3G6Qu6u1uH7HG5y+\nYq+TxWunk6Qeu74v/VGCfrzkkE6zA/GU8K82F01V6s2snX+6p1CR3plVJYSN\nnaCaImg2gqQb1ui32mFaROw1uWFzTQvFNFZt2NSjcVjbdVCC9wB27NCs49Jy\nQrLLZ66YPkxKId9n0oWrtUn53HhJgQjjBcyUe89+0+MvfpIFLdpsUycwaG+L\ns8XqmbmHRn3RPX+NZiKgP2vc53JyMrjTvVyCbli9DsDd4gi4t7XrDknennIk\n1LjwyU/abqLVcpMRMMUfUgnt3416yMxXq8ZQ6Jtmr0R6vymw/oWhgWxn6Cjw\niQI6KxKNvxTJFAkEm3NgjeCyXYmF1DwFBa+EeX6ShEw88VLS7UhR4Pp0JJui\nPX/hsOAVmxFWLpJgIoxsDMaRjmzwWMWxAslC75Vou1pVFSE77F5VfOSj6VvN\nCPSkkhrlSu9a3J9AADvH4JKF8NbMxa6uHEdwcK9BSdQ+t+QfCi75iFlQawS6\nZGIekYBVETjAXzCfI7/vUTZ4x5jP7rtiT7um+AR0IhLXlh9KtfoHWzEqI0z5\nc/m2wyNXvhADwjtXzlqbs2yDWHBIUizRJ1XdrU6tWF/s+pFXkNUE91SFt1s4\nc0nI\r\n=weOM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAriXE437Tvd159kXwLzX78RtMu1Tk4mXPOkxKT/6N5wIgDhKdnOuGXHZB06MVeaIrHZHtzx11vkc9KFL/yY8Z/xc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.0_1601639300614_0.5579395505535354"},"_hasShrinkwrap":false},"2.18.1-next-1601641375-d459de0e.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601641375-d459de0e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601641375-d459de0e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601641375-d459de0e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EWcXlxlDm2zq6iSeJDr+1UKu2GtxenxdmE3o1DlD0L+a1BnYkrc/1YJ0gsYdESPI3D9QRwBgdwU4h/0adDIq+Q==","shasum":"98b5d76457ccafa174fa44958568a9106bebfb9e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601641375-d459de0e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdxwqCRA9TVsSAnZWagAAm04P/18o+E3ahN26NqS6YeEN\nkqAHZf1CYDpzqi04F1WX7uZuKjl1s/njDRx/pEnZj6oksLOnbggAWoGw68Va\ngEwIAbctIcyTrbFPZO3FTbs/mwidYe85f9bY7M6e0Pf1+s4cwGGR9Xfl3bId\nMktxFH7UHttYuxpzX3rvyKOS03bY/HgkL02ytYX1Ld0HiSFvE5ctKiALtkyr\nJvw8Sx2xFw3KUnfx2ZZG255g4kjIiqvQuUqjWep5+Hipatx+YrCmO8TJqpMZ\nSRsXHFlY9170/S/u8d5zZYbN9M7SSIDNRhtwNw/+FKjSQqLuU728IG2ZfMPN\nylCjE4H4GL9ikYXhD0VkOg375+6g8Tha6haQPcdZVN3quDhm2FmQmCBTzegR\nQ6p3Q4pEvncyuw+FYXY3C526OxQBAXpRKy2I2nJFoRlwQHZttzZbDvxPZ9fD\nMTTNKmEkmvWAd0LguHpf5YrICig210AEgXDyUprvGFZRAfVwQ8l4Lx2WHSe7\nZSq6sS1E3q1Mn4SlxY9zOajwfHtmnoqVq+eZKeaIvb9n9soCQY+nZuxmH0dN\nyRv3pVjat1TLRFw5AsRmSZIn7uM8ZazmdLUcX2HCdzKcaoE2J2QQAj5uotnt\n91SEI1FbCMmdAoVGCFdEtX06yJiOJIFtheIbeTAndnhBQ7FBJ6e8QEBeymrO\nnb+8\r\n=U2R6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKaySwQjUoDwBnx3afs29EBOjXV1I1AVc+C2oNj3dNLAiEA708kqTcXyoDiR7ZwU6z8c/h3eSfNndQGieB6OGL90Uw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601641375-d459de0e.0_1601641514018_0.15330984006064963"},"_hasShrinkwrap":false},"2.18.1-next-1601643050-c94f69bf.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601643050-c94f69bf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601643050-c94f69bf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601643050-c94f69bf.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4JwY9T3DC0keCb7K26ZLRNSr3cNUaGN9C8Ycs9Nn34XMNGNPTx8PWoEPAIPyZZd8TE6dtI1a5lPhLnBsBzN6Jg==","shasum":"7fa286af4171fa096a22c848675aeeb4cd42b27b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601643050-c94f69bf.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdyKwCRA9TVsSAnZWagAAnu8QAJ78oLoxuFRtJBRGNhkQ\nQszmQ8XIXRDJfymOzhsscPsKtTdxXWr5CbmqyQxdx+mbmiwDwr2NNKQBCxBi\nK0u1Xwhwz++M0VYrBcDINT+KOtlowXrvnKqVk0V8HFmwqBYc28Id+Ve6c0c9\nE1di51DUsQdVowq9/DjZCMqm0KZ+/vj3Y/877TPn5nkAq2Agrm+h0Qa9kAIv\nHnJFCokdE2675y5QCTQUy+IaE4OIA2RQvgZEk4WvYZ/MGiQ6ybz4L+rF5zm9\nwBjKqZ8LSUigtIrSTyaibKtQxs74HNpk+uULCots5lRISA34ncrkud9wCEU/\n5uRZ2SI7a54UCFFYLwvFDziSXkCTlH8TJsDG8R0FePUdUc5hHoA500M/C60y\n00kHp4lo4rL6BZ2oDcuvCiI/kQfu/A/B7zdxpFc0O27SDAUvQmg6WrLAgfIZ\nEyX+bFw4g6/ZUgKy4Bce/PanMn8VcKLIt0DremO2KAT588JQWSXUCxFqlYj5\njMYtKwliaiIelwHUkTj9qQ8PTetzttcDTODYFVriohQEI33lGuBajorDTNyi\nRXxLGovAEpsoDNDzUVtGmQTklWDtOqISPmK47G78UOxI8VbPINmfb+azCntB\nKa2p6fMUmz7HSZ4UhP+SUjTc9v6oj33FDpTonhVt70K+ojItmPTq1+6gphqb\n3tZr\r\n=f8hZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/VBZLLXicLWh8AprQ4yxkEp2LDd62nlw62L9VKeE24wIgIzm7t6b3hDF3qYn096lASK2OwOPT5HDK0clWhdl9/Xs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601643050-c94f69bf.0_1601643184000_0.4259913195964524"},"_hasShrinkwrap":false},"2.18.1-next-1601645389-ec176b0d.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601645389-ec176b0d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601645389-ec176b0d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601645389-ec176b0d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7Pv9m15jEdqQmaPgQ475kF2rUsu7lxSA9KLAAt5RgF6Tg4XgLada6X3kkyhrYGU8OGc9cm4WiRWdGyLwwfcttA==","shasum":"ce59197bb266e418fda4e02be2fd96caedad76c9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601645389-ec176b0d.0.tgz","fileCount":58,"unpackedSize":126864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdyvRCRA9TVsSAnZWagAAyg8P/ikhZH7KNiaV1p9m/wxk\nyhLrIYCohSlk9vC3bJs+J/p5oneL49/CTGqFAq/qsrSBXP5zU2IqTS12uJ8s\nBZ6Cu9dSbig8DLm1OeUe/JrR20C34jXD3wgx541K0NyiiB8X54dGEtYF2Hu9\ncI8AqeHwz9LuqAEVyJQI+gXW20mGCG1Rn7i4eiQX2Wax5QJs3rCqngkqoX4g\nA4/2s3hzsJ/mvo7DkNXjK0JCgQYN9NdxgB7kv3fE/h6f0FEo5IsKY8frJgCW\n2rVpyYXA4hwNx25O8jJH4Hy7CX6b505pg7AzTzMb0C9TtKzvq0Sua/IS81cu\ntoai11cf00MoXFl94cfrUcrBWxnwC2V4vjBO8Mm3F31SqfnShMs80IaiEbUz\nMLBgeIhFPOV+DqA6tdR1B9a2vY33tPoJ6wONffWC10eOIxsyjWLzQxmM4YBT\n71MgoixGrWCykgj2drhWQvdPWTJ/GdsUvI7ZGXr/B+pTkqdxz68zKI3IjKbo\n45SJkP4Xf6v6h/X+nUX/K8ehOB6hJV4u9TOjNSavYdM2Qe0TDt8TcGNCZsrg\nCaqbD0J99H1R/3Ijh1i5aYX1mLZ3OmOgpET+jGO6FgqrDnT0Feo/9LDa4myQ\nGa15ZO36r+YkSklVTHqyAi/fb7fnjRem2d/dBWit+2IRo+kfhr5owkqvP64c\nMUlb\r\n=BHXw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBgo4S0o9NlrkSYyCt7lOqlvDhg5u0jVdvP0+HF1a/eeAiEA1bFvTLxyG4sMvL7hBgd89SvU9PgwLb7iLVERlxC4bGk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601645389-ec176b0d.0_1601645520977_0.07301401573669808"},"_hasShrinkwrap":false},"2.18.1-next-1601646017-b1b61b6c.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601646017-b1b61b6c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601646017-b1b61b6c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601646017-b1b61b6c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pHgvjq6DxUR6rPSTYmzqs8lO33qgfFR3DUNI3/JDlgxLwSJEAaJDlTROd04F0EcOvh0NCLK50lCH1VagQsEpeA==","shasum":"2bc8ce65739675277fa903ca69a8748dcdfcf788","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601646017-b1b61b6c.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdy4/CRA9TVsSAnZWagAACf4P/0CUlZyjNe1OsB8nHbO2\n3nXK4MzYpAJOyyLkoewp40qSryJT3uV0LLYyFvi9cSeD40PqVg6kUwLIPgBA\nyBtpVUysOR5riNUxyYIacbGeX22YyWnSlOY1zlOe6pEqJ2tqq1BivkHmVbeQ\nLPPxfBMzpkJoZacDQila1KuapnAq5FYJhMRqwlyTwp5AFpAj4cDmmxzmkr3r\nSkcyGKcL6tPweItR4M2/NuLkk1946ByEBaKDI8sYka+vdbAQefLSQZnSuQre\nqguUOzv7YYktQ1eLyUqtvEk1JF06evC7J6UCT40MKNYpk19Eqb9v+eYNnc/b\n+YbGh8NrudSblwrr9NXPYfARvH9zzrSSwtOU+h8gQCo2Gg/0s1p6PWX5kNbT\nvWnwjksljMCJVBgVF3eBlqicaAI02J6qumvVSf51qLavlrmkTWh6KYkzLj98\nnkQlHrE2YUj5m6UPILHmygVEuzqsi2G2VTbTyLMsJwIcwJzbHMduUM/Qex3n\nB30JJAQTQpXgkUA6jMzc4skrbGyyhZqYL5BIVgUwSaJrtYig6NSJjPURpu4R\ny2ZpkydPDpMaB0L5Uz/OzsS7xJKQqi0yZ9hszgF19RgxAz1gtxyQxp6Nq8H9\nznsWz1U8S4JVhSKPGYez21PdTPDdp03miRjfQEObPAn00QhiC8bbpQAQXY+F\nRDQh\r\n=IESD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK9srudNIX/NSs1R24eNCwT6vr4YbAYlWBqVAG6vkfMwIhALRXUGtyacCZzJqTJXPCOy888MuPV/C2wxf2nBXbdB0m"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601646017-b1b61b6c.0_1601646142962_0.9238713224166852"},"_hasShrinkwrap":false},"2.18.1-next-1601646872-1be968ac.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601646872-1be968ac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601646872-1be968ac.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601646872-1be968ac.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KbZM+40fS2mwk8NnWmKrm8ZvZgCAWv+ysJEtWbBvElbf/uhfMGcV86QMTU5Q3Pri/vWZLPh32aDyciSu62q3EA==","shasum":"85f11ac4892bbe3d1ecc96e9d3b805c73ca672b4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601646872-1be968ac.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdzGlCRA9TVsSAnZWagAA3tgQAIlMz0f78C7BoQ0c/qk9\n4renLpWn1GL3dw8GWXUDoxJY25f2KxuXKYPmdHlw5nU+hEdqQ1gN8wAGwmrF\nHFky6dddUry21sGKkv2s9DQSxnZAkbFLc51O8l2dEAcD84zmb/YCkxuA7OvU\n7cGwFtYRHMwJ86Y8Yziw2WHv1e++pw0xrK9GzlzRMga/3e42gJgkVcLGL5Gf\niz3qiwkkjyj9tVGSAJnnRWZfl2oQCHpCaBQ7NjwvTpsCR0uwFmL0s4+IRk+d\n1Eg6XWIaZpuXVscNtswNeq7TSrvzHBCK0gl/U/oHjNDlBUcHhxiFN44bjD+n\nwETh8xJjT9ItIsJPpOnNJNZlaJyDtx2XBLkfSZaFE+d0O7xdK5bNHAc2cu1Q\nou0EAYN6IDSSxpHl+9EK1nZ3H1vsnY44VyJMhvKvPSLBeuLDdrw4yQljUvFf\nGH4R2/URG/EL9WS5Czo4xspUeLfBvwwZxcn+0hB1dUp+g5W76BmizKfYMxjG\n3JokGv68XY+itDwwuTaIGQdTdlqc0cvwEH1c0fno4R3dffqlsWmTEmU1GWZA\nA9+EepcYqychcveC0YUPJ890P/cksyskDhM8RqZzFtGL328Eq4tA0+EztUEF\nDxBd7Ip8630CS9rQVAlz9kVeiTxf2tP9FDQNH0sgD2HYKMeHB6u2HQFqfy7P\nEYY+\r\n=OKd2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDx5w/Cf5P5A1g9uQURT3qgl1xt8/1XCdmbqOZtr8chcgIhAMxFwS9JAAb70u03kIJovpMgMaVxOuDKMYQJUmX4Pngm"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601646872-1be968ac.0_1601647012946_0.6240046491078661"},"_hasShrinkwrap":false},"2.18.1-next-1601647582-a1724a97.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601647582-a1724a97.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601647582-a1724a97.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601647582-a1724a97.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cmieMzBLknCMXGZcMT67GIJfDuqyh4uECNCqR5eZf5Do2TLDWSYcEhHw/AdNFyT7JI14mPjXzHKN9SOC/q0Zjg==","shasum":"6f9c008ea7ec2d0354d4edaf1cb9bb74e063d4af","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601647582-a1724a97.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdzReCRA9TVsSAnZWagAAp/oP+wT8bqT0IKETY1DZNqWJ\nFr6VDIFL0t4JI/eOVQbOMtzV20t9VB6J5UE6DJv/J5G07/dc/+v1F20SDrcG\nYnsV+A6vEif+0Ninw9GlG/348nuyQ5ZVkKjg6SvDWwhZrtphYceCYEhmHHmV\n84uuIhtdWR45TY0wUVgzQ6UlUO4qftkZdtYp6z0975Q6wuvQaF/BDU3IQ0SC\nP/Z9QZItDDMdOfSYj3461RA0Png1zXUIcRsItfId69ZRGeYlwLi+3wShF/zT\nuvlD+ld54XRnUQRr48Zohw90OOhy8aYYG1fHasfRF9EdEkG989fiAj6rIYHd\nCeXbnAyRLVYGDxc8+QL/jnA5RwC329cTgoI1JmPNXOKBkLm+WchPzrSEkJCd\nPvFoSuoXWIzixRS3Npvu9K3ml7/KQVs8GESBzJWCzyoyiD06JXWxon7L/6sT\npEhyuDjIHujWCs4OhodN4ZSXyBTUQEEXEb9i8B9z+dl/dQr8gGNlcipN/Bh2\nXnGWv4Kz0kjHKcwtrP9KhwzAO8DigRITbizs35hHZbrAuHfJOurAv68GLUMf\nWOMUydYo5xO7OLO4LGbNLa1KPMOArSoduj7VjNvsK0n//PCpp1UUqLjDVQgR\nCOuHWM6D5gb8weJiaPNAw2o3ze8z09bNod7pQwgClTWJvXpIoXGXl4BU1kzh\n7jwj\r\n=MRxJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHDoPFObpnU2IkuV0ob7Be8DI28D4ZbuNqAEJiyWZYkcAiEA01NHBmRRHk2XdE9z9jLlLZoX64LQm5cUBZqenc3hEUs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601647582-a1724a97.0_1601647709556_0.4560948000457665"},"_hasShrinkwrap":false},"2.18.1-next-1601651422-20119658.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601651422-20119658.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601651422-20119658.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601651422-20119658.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-u6sGltIfNntfNI9a3tFd/3G4LAVAprUHuBqla5UgvqsqiIgFtaX+/KUKoc+blk2syG4is6KsFwxpvR48RW/xgA==","shasum":"89e0d38470882c18354da625e5bd9d28e8d13d97","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601651422-20119658.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd0NhCRA9TVsSAnZWagAAlqIQAJkCbMwOYP7TwEr1xs3S\nHJBOy7oWS4EeXWU3h6WgXSsxHpjE1Fiql58ja5aCgudJIUqTX/5zq97DwW00\n1sSXCZQe/fgahZLYGv4MTh8hLsQlYQe04vi64fR9vWDfbKp45Qk+PDh3Vtkz\nM/QdccMcIQt6/hBrzcRLiHUeyykrBE7kcQPldCH1ElAlL/dqJlFLYqDeJX4K\nvYLRZDRcMJ879TgQP6EUlcwiRY5+I1crN15bV2gzBp/cmx8nwyu4+ZzzVRGb\nghiRgwiDPyrkuHE1JWbP+kf3hzRdPrmuMmhhAc33tcVOCKFOJMSGjI7t+vfu\nSiTkEeEgolZ99Q1kgPU+q5NpGq2NVe9f/ZqIH6/zUlf3BUkczn8tO/hghUjE\nQED03vyFjiHAhu6Bs1TgwT+YMa4E6BxsyQzx2wZk6hmNVMaExvutmJbXBsaV\nTwliIqRXkDuQF2SF915qlG2vgG96i/2OhBy0m8ysv3mim6ID7XWSFrbxRt1z\nR2Jo8AfpYmtkdg8wjuJWK4DMsfbsGySkeo672Yd8r6r3cJwHJWK4JFMJnGch\nnj4ie7G5+s+fie8XwMWi3dFCEyRlQVDLkxeMX3ucMmWuc0c8pmH953Stog4x\ndgh9MwXcfG4XB8I/lFWfNoQs10bFrARYELCxi84xHZ3Aqqi5sPyhrs21zHTM\nZIAB\r\n=Z1rx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDuyGzfNx9lhfeImYvl+IRTZnC0b3RzAl5oapNTc0Mn6AiEAtkjUmYm8HiM1PLAMa0smf2VXyk+Md3nOlQFENVxUQvE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601651422-20119658.0_1601651553092_0.28113886888156103"},"_hasShrinkwrap":false},"2.18.1-next-1601652297-115a8012.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601652297-115a8012.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601652297-115a8012.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601652297-115a8012.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ePsALfoCHr3XDlb1wOM+1pvzrWoJV1aWpE4Ky3osqbusSfHJAFbSDZwBb9b7qSLMJSRh4d/qfv2yXnEwnG1NMA==","shasum":"70b542deb28d91683c271e5d8639e74eddba42de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601652297-115a8012.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd0bSCRA9TVsSAnZWagAAxvUP/1P/lhBvYUdXfRRkKcvA\nTaSBAvMRMB3CnTtQXeNv2YPpKZ1zodjJQZ4O9sxwzxEFry+jJzXIdYSGQo0s\nYTJsGZ27lI7H7C75u6QcYnRcYe32Llgp2MbNh7ieW6fv48rVP9rxp08MDRvi\nOb3gFq1kw0ytu5P9aAQY51RXU7mC3Oa+nhBVKBN5sGFuf7ipfXbOtKIwkUEZ\nt5HeIDQ59vHXTqFlwyrqyqrTCD6SrQ9epd7AcSpOkr8/CvgYru6V5NV2iIEb\nnwZFCZ1t1q3brIPY1Pelfk5GDGgyv0jrmZKsuGi2E1xMk6Z+Dz0PPwfEUfhR\nNBgaUlNGWLngEonq8f1xcF6uXKLo5EM25pTdL035F0+RNn83DV8tY7RmNCGF\nRWPGiwttmpx4qj/cz0Kr0/LFTj9uNNMoYQC2DNQeT35KZoXOiC3i3Q3GPqtZ\n2D8+gwfXP4UJ7RbWP1DUBz/ZUFCW0UlY2RwUwCAiTWSnlOIMP1kEVnM29NdU\n3egN9NTm3jgADpd38DkhdwETcYML1Obn+Woh6s4rYxCVUh8uDQ5aLL82a3dg\nqwgR7bo3nHBpKA8djkRwpxA1Z44xf1tVo8vYONdb5nymRIgMUwCNw+gxZFKF\nIr2905kJcM2/WWZWsiD1In39LfNS0EZxZ5f8+hitB6VZTsx2f6jKSuzdpvN9\nQYM9\r\n=lxOt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCF5wcPf++RZizQyN1PR57IYcw14T83hFtPaM6UYyyh0gIhAJlsK8f+PYKvd39tVNfSKETMNRauNc3VtFxbNMPDV7Yp"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601652297-115a8012.0_1601652434099_0.03975927057015505"},"_hasShrinkwrap":false},"2.18.1-next-1601656824-20119658.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601656824-20119658.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601656824-20119658.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601656824-20119658.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1TpU5dJCxYoC2ziZHN46l7cH/yAuoNlECa+/hnarqnzJ7lMPlSw5+8fGeryzF2QDrj7HMAH6ez64QP2JN/NOTw==","shasum":"23db32a5fa10eb24ab098da9345ee6e7da511335","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601656824-20119658.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd1iHCRA9TVsSAnZWagAAvK4P/1xf10WjPjERUmGwI2l2\nTwjJJWJa5oBwm+2UpEIB1O4m6F3siOC/KsHFQZpvf9+8uYYEHhElNsTmW681\nPaV6LH1kbhrskJ9v+LTQ+iat0F0ywlgDENtjDexsANagqqmEQ9d7YMviDLHM\n8IuJqYrVAyjaAxMJFHcBY9UQvWq6V0QXEi9RKuoVNEKzAn+36W9gL3Ni1EK5\nj4qInueulTChtA7AoD3gdCl9rJ8lHa0hr08eciHs47Ma6AYxnM58ai3ExKZc\noxXgtpsiKnu2esstDWXpPc+Ldoci6tPtEVBelGVdstrvznEjuVQhwwfGj2WE\nqYTXKlO44SimE9It20l4Nnson8DnkfQJtRdf3FfMfFFsUyrf7yOiPIcEcfGs\nrAA71pywpeXNFRzN8fZUXlAFwvLZy4Qt5qZeDT1wZBMMeOZUjn3cTd6ir0+G\n0Qg06o0N9b9R/QjnGgiJ36Sna4JOap5fGfNYPUAZqvOuFzfP3cGnhXfqvbhb\nrehsrER0LJR0W8gMv7GqLR3/Z0+ui+uMPwSE2J8YGTfrl9CnuzMZfq6y+7Bv\nqk3l4gmgOigwF2EN5odv2PjbCF3B7yEIbZW5+bARW/uF+js8YtJZrswE7ll/\nJAXRUr6oyICC2eKfpLryUJGQv+6AAOQM9cU9USu7+O2SCzrT/ZH4hzTU6Wbn\nNGVU\r\n=eaJy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH270bqigxnI4SJsmSFoKUwZDgwSjybASLJ+8CMliFVNAiB+MNoMdBZF+IPl1Zr1pmNmS1vR38T23QeXH8Ig7SYKKg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601656824-20119658.0_1601656966917_0.08242302649497435"},"_hasShrinkwrap":false},"2.18.1-next-1601661116-c3e70925.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601661116-c3e70925.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601661116-c3e70925.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601661116-c3e70925.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FDhi83tV9BUQbky5IcsLUBCsjRFkOoS/u/f04hRNeH78FUwIkIQd7aW5luELuJr7jnaL9A/OJeqbVnsx5SWIww==","shasum":"00980c51615350c1255790cd25f6830180409b78","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601661116-c3e70925.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd2ktCRA9TVsSAnZWagAAdscP/0LlTqwz5+rnLpiXdD0C\navpq0vi82ywSOdYNJlluX2k6sZ+NzQEuCFGgVq6ni2/dUvzWckK8MwfSY9Qj\npioMH6gRbtc60AI3ovWXC8Fbbz7bFfxq8U9krOo3pG/GP3IxSPLQ1v4Y1B1S\nFNKwUiu1IuMC5rBMft9PhgPkZl4B8uo257aUigLSXyfVlkY6vKVJbqdajsAs\nnOz6e70yz/uIXNY4SUjOBa6ypJ2nUy1oQ9NfFoHdinRlt3ZVG0b1YzW9pSiH\n1uwQeaKnSoNwN3HgtnBsefyqzSiFtrllwI7WJMO6KA79Hoz/IjZI6oM3TtoD\nvyn6HFQs3BfoHkwR0IyuqgbHpuoJr0QiGZhylTFayeCS0R6EM8457Zun0V0d\nV1o/IC/oECVMwHNGIG6sGnqFPdaLHh63hX8qtfNmG4Bum4pNTceITSTY3b5S\nZjgbyFsrVW5f3sw/Iy8gYhT4Zkv7j4j3u9J3xdLVaFvCm+vRdBrlK98A36U7\n5OiQWywzijjJnjLZUMwlO6eRqQylim6FzwpL08zMTBLejPjNUdFdKgiZ20Sx\nS9/50Qbay/RTAXI00PiSFT815uCdxW7/C5IIPuVOeh/M26BUM4np/NMSSJu+\nooHQUK0m6010FAQjLxCkiFM+Dl2KYA5P1J4SC7a/421lWEvE79vECttPCvYY\ngBL5\r\n=22RM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEuNKr0knPKT02Gzzdlaqk3cuzRQOiAFcxm8GtXGb6xtAiBhXpkJi5Jn7FRCubl3HhFh3i7UszvSszXz8MBZDx0Hqw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601661116-c3e70925.0_1601661228996_0.470928706796345"},"_hasShrinkwrap":false},"2.18.1-next-1601662319-80d99d46.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601662319-80d99d46.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601662319-80d99d46.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601662319-80d99d46.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wxITg+BtkL+d0zgUdJJIy1FVwguaduyOMfnE97mor4yl1dUknxJayTVd/8qrm/dvyt9w9i1xAZNe6+YTXKQrIg==","shasum":"e5bfadaa84525376aaf4cf5b95f25aa8dc854071","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601662319-80d99d46.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd23fCRA9TVsSAnZWagAA7ckP/1kJfSm3C1ZFPcWbBtt1\nb//rpQgAtsZiuMnPaUJlzhaPQ019eWUtJABHBUoaEhFnCObjhmEHBU6cL/dp\nP8RPF+mdgGOe0hTIgKfj4Tp2BwbF3bTBaFgBBxBB7EkQMcXh2vyQDkSFxZE4\nBoKb9460yau/TuNX7L42foP2S2zv0+HY3MaJkR9cgnT0l/Fci522m1ZYo6Nq\neoJneU72vyTPcD7TK3qm0QNIKrkdHIvrf5CMmxZcnxsr/zO9n+QGNUp5AijR\nQKr17sXhzp49iRBbcLcBPB0EZOyfjQLEusl6qaQ521JMmzu17NJBQerBRGC5\nJzQosiOoEXqTX9bCn6ERStxiXkxdGE3xaKDm8HTBIq39Amm1aVy2yvksuulb\nGtJS0diC9HBAHCsTWL87PkTRuuLk1I0M8NFJifvixOAO2SxflRDqF70uLAu3\ne4VP1bUglTn0Vf/9LDq3u7fBBku2py68t1hYQb0qEtRGJNEOx/FfVrNi5qiw\nFVWMmFQ1Bf/Bo15qTUHmPJAyb6o7F9sHYle6gBmKbZN5qfkd0t9Ikt24RphZ\nSJDvwFWUTGxovR6RnhmIQavcYO1gXeYVYXL9puaXaSTDYn5kolgaKNCkDThg\nVtODM31YIYqWnfs8vdav9+lyf0STvpEWN3mUoNL1PjU3hKG5nlPU4mZti5Ez\n0zt4\r\n=aSmI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhA7ThBhRWufpwEzcvtuzXq41XRKeqR9ToELVautZKhAIhAPYKX/TOc2WNLiJrj0Cy5IOFzU+D2vQYQjJcmYkWSWl4"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601662319-80d99d46.0_1601662430725_0.6565272727334917"},"_hasShrinkwrap":false},"2.18.1-next-1601662726-554644f7.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601662726-554644f7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601662726-554644f7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601662726-554644f7.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sva4SOi5at7xwf3fTvUT9qyLkxez7+R/gIXmIiqTjhOc9B0It4apdXiYLZ77l3QfHEIzsrRcglcSEPMNOPYwiQ==","shasum":"f3799b642ac8e2c5838262ee56f8c645e3cf02c2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601662726-554644f7.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd2+JCRA9TVsSAnZWagAA9p4P/i7PLMaMxx/oOhzZSMGp\noVo/iwaVn1RXKLH3IgJq4W86UdpKpSTiiVb0TCwa1+EoAs6cAJ0dwhsYu3cP\n1NlMk8lM69i5UO/h9zm5KXYyOTRlj5T1iBg980yLoxdTXJtXu79r8YXWvjNZ\n61fxnLmP2NlFqYgFBwnYS111CAHZ8poK2rtPk2Im+Cl9XWYUyhSVJsB3Rvme\nZ1vfTvjwWoU8BtOwM6YPNCzWzypcQSHh/yNA1pebr8mi/VW7nbRnPoyJx884\n+vcn3dH45kaEQ5dRqtvbiS6QbwnIxrAnUSfqmHaIA/GCXWc2J5OiHuDl5yYP\nLKKL3BUDZJSO+jBbboYjz5Ah/aiZdzkBNCSb8yQmowUNE0sl/v0qsYsmu0WD\nyCEOK0gQXCI2NTc/ooVzM76YM+b2/VclRv+eQnn1AN21RppGgzB3ZtVV3ovl\nttto+PsIcc+mLOtGEt91Mu/B2pCjIFuGP+5KlttR3pqA0qUhhKo+CB/9C/Id\nNb9rSE9hfYT70mkoVPu1pbYKf5LPcZFnAUyW8PYiPJNiu8k/7yUSdl5HAsRG\nLtlz73NmmKvBxXYl7NW/lpp73Y2gIK/TBv5zGCB8Giyqz+ybEuRzyxDt5lSn\n/dtsnWJiakerWbSyHkxIP7C4VBQhifgaapZrAhyMVKH1QkXNvie5gQHh9evG\nrKwy\r\n=Eh1D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDV57vjQlQO/WEtluOdCtlQcrsrCxeVQ4XsmMGnbk4TXAiEA30U0eXPj+qDP1BVB0sNPdYv3OxHtRc7pIaYDPKGJrUg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601662726-554644f7.0_1601662856295_0.6047714292966406"},"_hasShrinkwrap":false},"2.18.1-next-1601663326-aca715be.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601663326-aca715be.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601663326-aca715be.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601663326-aca715be.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-IbtSucOlGPU8oiC9aQ73NPt2FxcjrYuyqTWpxT02VFrVLxH7AMkPW8jdX4cu0nGd9oo8AAIzspQbj30Knu8k5A==","shasum":"c1a1416c8a40d50b7d161356c6c9ff7db04932ed","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601663326-aca715be.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd3HwCRA9TVsSAnZWagAAUdAQAKBvwpu+D8WPOOpzCvt9\nna2kOoFXjmL8kx//fVzHKiqRq2C1QEzCF4fuNdDSLS7RvVZiHf8QldB3QgNB\nZuuhIJTCdJztwsKqRm021EnJiA9pah0i9TGxq1fIHzTyn8IRuHJs3fHhH5+8\n4QangZHoUuvSWZrjA0YpfxTQFVoYJ0V+LN+Gr17KUdGpMzXu+BsQ61De7TU8\n7S4A4fjTv01lE3rJ8o7vgPZ4Sd9OnBPNvouqP8qcPlWy5WL+7r292BT9JkQs\nnQaYfIg5LHwp+r/EU/1baFnPGOTVfQa3rQ1ac6kvuDJEpBpX9CZTeBXPPxcU\nKyvPGBZfcy/cquukbgZg2LIyuUMr/QNCSgCCrt8BSWc1ZINBPfcUj8hLbcEW\nT4CAGlrXhaLhuZE0di6qPWfAEMJ1AlvK3+r6ev/uQxTz0E0U5KcUvTn/sZAx\n+jLb/vQo074TYsmAcXHv2BiH+xJVoTlU6y71IeyBj61RGzw6y0DqAu8WiLOS\nsIiprfN/eXaZTyhuxOd+pJ4jY9952CXlFRHHzKZjv6gEz998qUkIUJiUXqnx\nMBStXF2sRU+MrYY+baRpE1kpNlwbDnwDsDnstSGRNtTF4CWLY92GfnWd+bdk\neJ6BBDb0hPFtgual938dTqrkV+MkxzGDfvTNkNoAQlRNI64xhmnBlBv82VSk\nAtx/\r\n=2d74\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBejmIQ0I8dn9/oWGJ5YNb6RDHO1YuIdHeuQEZEFYxDEAiEAnS4QHVF77OluAW2xjC1Ac3CCjSKkG9mn8ezKhC16GKo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601663326-aca715be.0_1601663472234_0.05738076227425548"},"_hasShrinkwrap":false},"2.18.1-next-1601663910-72ef8b7e.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601663910-72ef8b7e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601663910-72ef8b7e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601663910-72ef8b7e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-amgeXzB+zhqfgBaG+bUqLIzdXOGIVZzp+76DpB49st2IyBuqdS5faV38lLt7RT0A3uE8VxfFB9ohib/L6owQxA==","shasum":"f6e8f47f682902d601697a83ab97d42d1ea20c60","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601663910-72ef8b7e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd3QsCRA9TVsSAnZWagAA2jkP/06bZzY/JuXuJ0Ocq2iC\nCoiA5juRSCHMKbtVD0hsdkvElCyExKlbO6f9ORjuL/bFl11hU/8vf2l02K9x\nBHzQV+5NXPGg/sbxgm45w0W09y5oFsJAKz/X5AaG9UPjbxcJP4eEA8D/zdjS\npEuIfX8NHmmKmEc9MtjPKY+gkkycj/F6TqS4oLcrc+MLsghJc/Vj54eZTNPU\nYirrlMFNMisvraL31Qdbq14g3gyEFz7xfCwvq/F/2+GNimRfKdzNcYMNvqoM\nDfCivZ3EXrT49RdMH5vZVCv2dF3kgORnFtWyeLAO6NTYEzNLDP9CH7PHSsAC\nLyJj9EuFiWRfwQ76MP7a059m4halYi03SMD7Y9jmwHfnzNjFPz8ZU3VYR63U\nq/B82MAQrjhldDezifr5uqWDxkPhAbRV/P0Ba+8KecBELBHAzgWd2eUNWGQE\nW8xSB3Kam/IB6QAoA6+AgNzJxF88hgdingjrkwfVYzSoCt0cDQtynajj+6fO\ndHo3OMv/DF+XTbCXaDMMJNMQA8bL0+ij13J+xuQxgwMxz3CyxOwBpa9z8GEf\n/P/4OmmfaKYHIDALH6xNGm2h5LBLpjqMmewC3DqAkKMlJZmqoSpj4q8/kA6y\npKWe6wtEalWbb7khJFNhODuJ8yQVjPH2bFJRzUOHE2f9Deoq2ORv8lOjlCqX\nfrQK\r\n=m4sM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEGTyS0iE6sbs8R0yNvZntrZK0ugBQ/s50JzGroenyFgIgR/yom4ZVifhM+B4zC8iPabYMkYAQeo4iXLnSiuGeoow="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601663910-72ef8b7e.0_1601664043876_0.6871769983679994"},"_hasShrinkwrap":false},"2.18.1-next-1601665777-6f7cea47.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601665777-6f7cea47.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601665777-6f7cea47.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601665777-6f7cea47.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xNDzGt4P3viEVChJbZT06kr0vzhIqRU6Pw1qtIFCeAll7dGjJ+mm1p1QUxVeipKQI1kTFuTfY+AJA5yZTBzM0Q==","shasum":"366db0a8154e81e83bd2f8d8926059b4b1c2abae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601665777-6f7cea47.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd3t1CRA9TVsSAnZWagAA83sP/im/qAZFhKSFI6m5mmEf\nMv2jFkMDx2H5qivI+ZJsVXgCyZrvPhkyQmQxPwXPSBvF69oOwAI+sgnu6trt\n4CFGF9sqRHSaWAuxmXI4GeazeCmFQsPX/rIpoB+re86tYOgBCBsiVBkJgSyD\n87yO74VR6ApLw1d9y0i3rZe9D3FJeAae9ZztNbca/lGtseIK+vlIvRksZPi0\nnGUoRG3/exFzmrMsseYOM3OepixIRbpPXXrRpwgI4qCZyl+6T5WwR2ww0vFO\nxCX0bAgI23vTRm+JQV8zLXVKEcJNL/ngq9mJZ1w2BqRT6PsU0dnAYHnArFx1\n/D2ifUD9tDPem3wnbJMpCsxt57Zi5oDi8NBciGRBWEYXm50pEhfoPM57ymT5\nQIGbXow9POmmnUPZCG072oHsh4cIzJwE4yv0AVMnmGyxcVF7uKPUdMTxH7Hf\nV3Vbsuu05DyEN5ntq3imjHLvzhby6gQrKeCQIk2ofqTkI4D48ZyNhJVc+Tp1\nrm2IdsxJQ7FCf+4BB1PRDwqxnbYF1r/ky4SFjU5GPp1j2D9VXppD75FTqT5t\npnf7I6yI3nKE7Gl87E50IbLRYbrXmZlwPEOG8V9faxYDddfrtgz4B2+gVtf1\nv2lhnef1iLzD9I7WxRN+jxDO+fcOqFQfu30mk5N39CqzqUWGRIu9m9jChbvR\nabsP\r\n=F0et\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQychU2E+q7S97uJQjjGiLvSo9J19gIqIfYJw60MsENwIgJ8YfTIJucYtIfjf5e1ZJdlO6Co0zcnjhvj6TT9wREvc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601665777-6f7cea47.0_1601665909486_0.4418931796212511"},"_hasShrinkwrap":false},"2.18.1-next-1601667162-9f881693.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601667162-9f881693.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601667162-9f881693.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601667162-9f881693.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KssFkkxnVQl7s1ceCkpIDZK7bOMS6NlKRs6SaF9FT4UIOGM2YiDBywe8NlGGjdS9FXMhSykargvROj6ndfzgRA==","shasum":"8e395c54ceaf63f00319722dbfeb0e941e887f2e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601667162-9f881693.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd4DJCRA9TVsSAnZWagAAcTMP/2tHMhzj1eStJm/naloN\nbcwPN2J1kePLiVwtM+24VC5pM2Q9bMbE+7J8vZJ4Ag34fLa/irSYPdOcpF4r\nshmEkRYg8WTJ+DjtV3aJP2YSKju6UHYLUx9kXdWyBbKJWDZt7pqLveL2yb0F\nKEvmcAj6QBQWA5Zk1RQyH/pCHhw2bVdTQdw+EtCnxeHs9qDfTF+lwMjOC4M4\nTEh7AsZkPrPBVaVxNJUOdra6lxy7XdlDTN8F1YCCI1qvhi7bkm3B8yJ+pQgc\nzqnHKEpHipJ9B63+4au479lg0DUdeeyMld73+orIcmI2IaV3XsUXzt0OioEn\nc7k2fRi6a3VzebZBAptCw09PXrzb988dj9L5QIERnU6Np39246A4r8OR+dnK\nONkJN8pOIHoHPlNm60GYp5hPhRNv+Bkh+QrCkv/fLO0OYs/Q8KDEIIH40oRi\n678LCPBsRh+TzKn2+mnJxKTX3cgOkLX3uvLeV1yV6zaWdkYS8VaXdVx/Hv0g\nTqla2PXDeqSFCa8tcug8YC2gSGHxsT/5DZWJhmolbAJgnZ/Qz1IPUE+WBQ9d\nJMYbD1BIRYbJzSFpddwc9kV6Si5oKCovwJwHztv28kZhBzrQsWbcbeFjYvis\nsXrlkDHCI80KW00FuX89H31JizIFmDE5DeT93NUx2JgnvWp5eV58HLqphNP9\nfB3X\r\n=CdF8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHChn52EN6BiEl3RYHflJR+WTaY3wlyJGgYr4RiccnxVAiAbRxdiWBuhZ7Mu+rtOykqwflCpPkbmnUT9y2hJczincg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601667162-9f881693.0_1601667273411_0.37771927089103063"},"_hasShrinkwrap":false},"2.18.1-next-1601668899-9f881693.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601668899-9f881693.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601668899-9f881693.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601668899-9f881693.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-bkJBCxqnkN7Md19sdh1mnDXQoJf8EITswBLp/VUptwRklI3wuP+sAnAX2B3AGltuZldctcE8NEDnskD/QkjVlw==","shasum":"a4cb75aae96bc74d136f3a7fab423599e2796c3c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601668899-9f881693.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd4ecCRA9TVsSAnZWagAAIBUP/iwhFK1sJW28Ck2ZIc0L\nYDolqa5EDHLgM+FHT7vbMlzTrAOWWmKDWsBqSdaFcAHU2AtOsJUS50skkSku\nunt9I+uPKdL6ZSHBE40/Gmb4i0LLJxVcPa9UEkWbu2MoRHWrGnLWWAPiqPZm\nIsy9J4cHF25Ym62VqAno0bOa1DCkoQPinWSXnE6te+OmOr7NMAk7iN9dMGgq\n9+/+9LvLBPj4WyL6STAaA54nMe42W+jcpUrX23RKlsWn8Am5+a4TRevqutlB\nfHm1KCivh7yzNoFNp5TF5gffMzaw7IgZVF7N8K66Oe+PqDbQPCXPx3zXFEax\n7G9D7jiqH153oRDwJmR+vG4n6hBpQBLuAQqeo7jlSXSNfco//ZCnc+pHbYiE\nCeEexCH3UjTEG7b+8rBL2zuqAuCnoqzZF9Yh2YN6sEKLbrPKYXK5g7zMTG2e\nOfIGIoynTZgvZ7uv1bTl9P59LOCom3dXVlCbfPLfqAJeqIbgU14Tlvm6ydGW\nlkcNH/mw+6vJ3DPqOnO8PpBFhcplRj8ivDmhtsTBX3tGQFdX56vaC1L4fSuo\nRkEl1hht+FcyLvSafyHWHWHBMRyufvF0frdzeL5490h5JwPmgpli1d+3k3wF\nlY9lUJQ4NweiIPlLYzULMoS3Kaf2dfwgPIBQnOyT3lTL5X9gmyQ0wh98lAip\nX6t7\r\n=VM/f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNwQzLeNnVS98dpBnwwg23rPDSgkeiT72jVYWe95/jHwIge48WMpbqJTSmjooBsBPGSXlhUMmhuzTL27UBUBitLgI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601668899-9f881693.0_1601669019973_0.25475119876494423"},"_hasShrinkwrap":false},"2.18.1-next-1601669306-48085889.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601669306-48085889.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601669306-48085889.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601669306-48085889.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-L+DNAoCgNpXr7EdGjNkfh7BNWiadzRhjijyKWmw0I27OfYPcQFLHvJhBevNLbttUZdyQwQ6Xg1a4DDHGprW4Gg==","shasum":"697a3de8d3ef5806eaaf732058e9d1fe0fcd53ae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601669306-48085889.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd4lLCRA9TVsSAnZWagAAH84P/2L86NLQ5gB2vXozg3Ut\nsGZYLkbUCeS+rbngsQ8y4ReE8Hu8TgkRjwCVMOFNRHHVZl0dXbZuLkG3WJEl\nhuqsMuAaxvfM0o/SpHA2iagbVnvBPFsVhwji5gBaCBWTOPKL+SsRpusQ95R3\nE+wn1RY5G+hUA4IZ1P4qtJjCf9XAfVhFKa+B1PMIqA7iAWUYrP5ze58HA3Cg\nMUClWifVwr0wNLADFIamNksU0yPa78oBy4dFyEk+538o9b7uh4XzXfbygOaZ\n2Z0zRkucxe4hTeTRvpviBTqsrD/o/6Em1DXynPatctONkJCXiwKoGy9U/EDx\nK022h70LotyKg+KHq6vYyUWOkd40Vmn06b2Dfz7usgNQuNSb/uRb5bD2Va9y\nGB6ikUBOXQXbYtOHGJQsOInjLpyMDk+hZiTVU+5hLTMN5j1QshoTiJ+GqYWS\nVuU4iKcNhWC5M+hFl+QtX33B449jdECRpJS4wUEy/D2hVuXtAkGSHBndLiJC\nrJS+xv06/pCwjBq0lqj08lbQBLy/AbLx4/ImUoHx0uhEtHY++vuOgI3oSLa5\nIBM5p7TFb+Nh9CuRiX3Rlt+c+bj/Jdw9lvt2jTdB+l4rM8YgOyyJbWp26pNu\niAMxIkU0Y5fCJ8S7gItNtpBj8J7lMWv7OXUr7lsGngqE7OH9OdVCI9Gq5NXu\nnmEP\r\n=wcgu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFlanyzG/iLDU795FwvnLqaWirRzKzHD+fNgCtvj436eAiEA0mlTU+K5iL6UTypyUewWqgfVbZwORFdcYtwoVfXTff4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601669306-48085889.0_1601669450573_0.013413714650672315"},"_hasShrinkwrap":false},"2.18.1-next-1601670845-55aafffe.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601670845-55aafffe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601670845-55aafffe.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601670845-55aafffe.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-hjv4fyIZvGe5gwyInplVgQtXIGcYYKWH6kryB/PKaIsuIKRFMafbljXLUfXuWs2HbTQZ37Gvn1EmNa9sD1aEeQ==","shasum":"0aed5930f4ca30cb15685bb6d11576757ecd8a2c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601670845-55aafffe.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd487CRA9TVsSAnZWagAA9A4P/Am4nE2nkvI1CmtiO+08\ntXwDXACF2h5m3d4nrl5OafKisChjJSI1lbSdSsju57tM3V13sa4DMdfyAk0d\nA9OsjYTtSCLOgrIdPrwRjBGQwrLM18i+GaO3AvKBse8Hdo6hSfCqv65nIJdB\nLYrZqm+LZNMgtjBQ2JNs22wbXlRhQBxtqBDeneYfjH1FUa66wzPHNqltXTac\nTEoOf0Gm6s8fZp8LZxIh/J5Tbo72QynEkRLcmtxKMjDWnxkVchcV277iyyi+\n9z/RNt+wHBKSLjLo9wqm4zYEZJX+zUTnJjg3FS0OCFzTmCrOVjZXIyglhB00\nB2meOv8i1Gu+t6+DlwSDiXwjzEEmBBL+fu9blLY6vrP/FR5JyBCMJJ3yBlXw\nCSsKJ9EftaUz3a5vVzBRdhWrH8uGqgZRe4ujpx5DzlafWkISjrMonb5HOsPx\nrmx2JUEcrM9uIpjibJXax0eRR7w5Z36tsbUE088RLxPRKyCo9x1EQD6t6jjs\nNaq6ikp8tOyEPJUMJvkdMtGwWDIPyV4lgq6lktvA8uc84NeYsvVVsbfRFQGw\nAzpyFwwv081tN5ykzTlp24a95C1OD92C2nuCD5UL9yuS9VSi6SH40+9X9/0k\nPf5Wnfrlo0BmG9uknU2yyzHFbmw+d5c545KdPPx4n1ZtitPVQRiGwvFJ65+v\nBTYv\r\n=oKeG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCboZ31u3v6K7880Etcvqe5/Wijbebyobc8fhsVTMVSOAIgdPvvIt7Yi/PtiXYkGvOYZTDbok6fXQlsI913o8aLs+A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601670845-55aafffe.0_1601670970988_0.9759012264693729"},"_hasShrinkwrap":false},"2.18.1-next-1601672502-6f7cea47.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601672502-6f7cea47.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601672502-6f7cea47.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601672502-6f7cea47.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TUd5mTp2GNG9glNC7cibdCwOvPdt25CWu5d8fPlAMN9apIikg12WP9CocV2cqBSC3gJCZlldr1D3XQF4+9NFIA==","shasum":"6e5efb859f8bc1c56daf990a96cc8154a69a1285","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601672502-6f7cea47.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd5WrCRA9TVsSAnZWagAAerEP/itbX4T2v8nbAuo1L31t\nzrA1FPHRfnBXig7Qd0Saer2q6Vyn9j23uLIYdpxam+kHeNpRMtNxIRIIbtTP\n8NtAPnd52yel1t/km0i07c9RqzTVJfJMwBzY0Aga+X8hTUq+Mo9nrmfBhcA7\npH8XTX+URtFAMSd1lq380446EmropAs2mLW0x3O/MwCRmecnMK8rl+zjMPZO\nWWPZYGq6fVpvz78RHLAguwsPCF0sE1hcOvMUZtQVVRCQONn761n07BcEkYC2\nAxzc952x6URqQZzuzLoMqPVzLnA7qHBawbZgfMhcEdNvJ96SEJMr2Y8CGmoo\njj1aiCUT1nAWj4WAYGCpSVbhmSiJN2RI009cpv8SzThOSjpaUsxREiNvj05S\n3EoxjAuidjOoOvzW8OBLFHhWsb70ND7emd/O63lcUPuUEhkBt+MUeUesfhsD\nb/M1ZGN2XCgS26iGOHMZax34t8rcGMrdS6fE6KGyLKafcwmi1REtdGRKF5Pp\nnqJJWp2B/Gklnvk42ACzFMZ+A+gl8ZAhslET8xpUuLWZHvkBGv7+SdDRVU5Y\nKspZmCYsIueJRQVW2Y0xbOYfdmA+I7svGAWaGcbcol34K0Z/x9KsLAgHm5xH\ny38GYaJFsbbYN/6rO5iHHQXN19ynD/pM48M2aJ+uMjIjj0g+qf8BW+yQCYGv\nCfbe\r\n=3WSO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEdqqHqG7lszJDMpoll8qpy8F5sal/dGvwRi1b6NB1n7AiANX5yaVjjjd4/O/gY+8OehuxlBdmR4cHGKmfUYSLPlWg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601672502-6f7cea47.0_1601672618794_0.9116556725537399"},"_hasShrinkwrap":false},"2.18.1-next-1601694360-55aafffe.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601694360-55aafffe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601694360-55aafffe.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601694360-55aafffe.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-h/hmsoFPU/QEw6aWRzkXwu22CgOlzRssHYsI9LSf1G70W7vezJCvYH1Alnywb7FqJ+Jjx5UEtWvheXOCv+oDNg==","shasum":"7ff5272a280252b17a9c741f70a620b29889434c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601694360-55aafffe.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd+sbCRA9TVsSAnZWagAASZ0P/25Gkr+kf6NVHGPSulN3\ntT4U8x8nN2OrHeVpy9hWgJY3/Jzs8SEsWB87WpSPIdeKFKDbhSgZWQft/qwd\nxM/QV1ERiIgNramOd531vtZ34dz90VpBwLBtqAWzKIKkIWruILg69CuOQt5n\nodHyUQYnCKLpM7Lie1L8lhpB3Q2icOgF8obZKO0OA27TmXskA6F9fQOksWeX\nTEUbFRS1gsF7rInARLg1uHYpWQCpHWaYTPztiT1g+fQVVWWidViRVknReFHo\nFpXxPIFO1FhCo5ODJ4hkwaQ1OzteRW6IW0km7dRJAXbNFeue1Vap43IfHbzZ\ne7F6i2lyByr1ajxAt9dSI38asrJXOTfwfCqGIUNxab1FI/ktBuKwuZF6f3TC\nXd+RHH5z1Bhle1wjNjM7ZCaELI839nDDGYg+ExJJz3Tus5SYYf8wI6g8PNOJ\nlJtGfK3dfvZx83+gPmsZ6wn7qhUbEvO33pzvIo7mSq7/BrqdZHvPRt/0wG+s\nREjMDofG2Fj44DpGD1TmqsIQWJ+WVjEnCjn5rE5CH2VKb7uxU7tJJ/81uV8s\nhsTTaeTv0RtWpqn0INiJsHcvF7F0fklH+eoy2CU2XtdIa7tYQFNsFOleMxnj\nGgJijhrfPSUNkn7OkVp16F4cpbM15+HeC/hyUgPKpvSJoBpl6YqA9ioL1DCp\nKQsO\r\n=3vYM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcLTU7h4LRaAV4buI7oC7T6qcTGCuLO/bQYDLINeiI5AIhAKfnCPc+4cfpFerWTbZhV3aw1JS1mLvGwax94pe/9JuI"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601694360-55aafffe.0_1601694490884_0.9011288708549601"},"_hasShrinkwrap":false},"2.18.1-next-1601696343-6732389b.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601696343-6732389b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601696343-6732389b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601696343-6732389b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-p72mCfLcx7hILutVvWvuSrZms8KghQbWWf5fn6UO/4m9YS+AHjXhiVAd6ySJOxDXin0xQ1ud7MokU2n06NhYUA==","shasum":"6cd5aff09656be4129779ee174a1190d9843fb19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601696343-6732389b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd/LcCRA9TVsSAnZWagAAH9cP/jqatMS3pEVrCdc5c93p\nkYDjibGrR8fVMahG7p6b4p61Yz1TcP5p093j3Tncdb31Y2hkd6Ste3PJnBaG\nfkFHFURi4V8SmAJBZgx13mXRYAHFvpQm0GX4OMWjgnui4dm2u++LAY6OXUDM\nunn8XZ6Fmn2lHumsVwMCODaacgxW00JMdPT3SZ6EuulhhI/Cx4KsxjYAJRSe\nSFb4ihLa8MrKr0gHdga1fpvx7O2KR5R5LuzT2OyRcZaRW+w1i0atsPuVcmew\ny4loKQZI7g8eGj5YE9QZAc16gS5osnI/3bbz3vwB9E7T61ssRXv90pDjuwkh\nPU6ilpE7mvT5ObqKxcAEyaDX73gONEqXYW+Dd6h9qKksKluGu5hWbZwGlPG8\ntv+JU8DNP+vtAN8UEdGu3D7I+eV1KbysTd5FmHtVKGZbDWRLjvOozQTFHmr0\nLViuN3hghKnZxHCypleFJt9RiyNI7CiW4NOl5ay8ULboS2UJ3xWI3zn55ptE\nBzbvFNTfTcXPm68YjR0rWTHL6VpBVOOWjNuu4e82PxH6GbV6LC+fnG/O5vqc\n6DbpR8HxFoz15KzWqs+cexLGfE8MM6tpimapDDTbj+GWExWvkVeJo39/JhAv\nhxOJti2UzmYQiFgG7Pc+rWkLou9i5ucwWd1euF1xI9g2OsO+8y17mPVnrDKn\nRlEf\r\n=IlFz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGxFwBEldDywFAayvSW8ETYMiwPk118VGJ2SwppuBmufAiEA36tMZb8DB06RbSJybWE1X4Gu6xS45z/YKwUXdCTBk0A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601696343-6732389b.0_1601696476391_0.35805116500756107"},"_hasShrinkwrap":false},"2.18.1-next-1601697320-aa0f239b.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601697320-aa0f239b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601697320-aa0f239b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601697320-aa0f239b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VJRruMrN3yJW52P+vT0AOfOKRR/o5LK7CNoPhBzKNHZwZasKE0WxzrQiakEiFEYrUSwDOhexme8YGJQ8kipaew==","shasum":"fc8c27577800a76ce0df02a8d16bc565616f2a99","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601697320-aa0f239b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd/aXCRA9TVsSAnZWagAAIaQP/2kkWd1/H7EUW/pwJIqI\nET3d35NJalie9OZwOpMhfEjxM35YkxzPdw3JlOWD7eUI791AmOuEzbMhbP7I\nSQ/QJGwlWH+IJdok9Kl9aVGmHd1+rMpcPWYlHFFm+CUaAs814yqZPe0hV7R1\nYaEhjgQ44/2BxiRcRPmcCzQNvujkXPndPUF2NS6iQhN1TK0O98tHzsZbhKue\nQwxVluHB0XAOb91IaUljLZFTMAFTHYvxR5MBvTdJfhj7PqW7G9ToPBsrxjWc\nKQY1ZxRvR+8FknvMiiLAmp92C1y9q5HicVPOE5Biulkqm5x/SEvhOh/WcNa7\nED/TNt8i46Uz9HkDFmTd+N2jDtNg0oVu3rx1kgAObroiG10Ufq81hbmn/C36\ni8atlcwUW8agczvg61p/MPq1zZvL2kxiqpcNSw8RijfAHJMyvnp+VdWYTcKe\nw4Z2Fmck4VeTxXVojvBz6GYMHPrjLvgpevmiNV1+KBk9GRppdTCA5cXEDv47\nGUB8BN975ttZ6JUs6UVVj+swmMrrSQWdj3hPsHhO0INQ7cthQ8Qh4UQEU0Qn\nI6h2wv7boAql8zhzlIUu0kMgMvcAP8z0dJGGSP4Obh2qXio4+r6zM3ofYSsz\n5VCs5acYTNkG5Kc9Bp8WES7j9masZgxP8r0zT0r0wNXSH2CejGc4O/VgEQka\nOVs9\r\n=/gqW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDy3+3V3QVZLXOP/KDrHv2lkZue5FgEk7gWk4ghVGsuvQIgEOYezWKwVLm+n+K+swfWLiuYWd59Az5p+16N6cJYqnY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601697320-aa0f239b.0_1601697430705_0.9207224779394136"},"_hasShrinkwrap":false},"2.18.1-next-1601698113-509cbbcd.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601698113-509cbbcd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601698113-509cbbcd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601698113-509cbbcd.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3dWQq96cluAGjDJ6MEovSliUha+ct+HtAx8JUr/x5GkLGiHw48a9DiUypej7Gb93rhoZJ4ABo2UIPDxzg/R1rQ==","shasum":"fbab39a512cf4d26ac4937f8049dae00e72479c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601698113-509cbbcd.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd/m8CRA9TVsSAnZWagAAPzAQAKMwY+xND6l0aNcDjB89\nQS67FaUI2Qt2rSu78UGi7UUuMfWOoWL5O4t1JYTGkH9s3Ncxry58VoKen7mr\nBr6YOOulpd4V4aG4aZUAiStrbpDtMEVS+GNBj3xEG687o3FoCmjRE4Zk4Sn7\nyHqnSkOutZI39t1kktckhoKuU2W1KQzj+6tj7iVSgbehYQNoy5XC8/vByer7\njA2ThhrptskNMivg+zC/2CsJO6ZjZfUHx8jRjvb9iwH4Nv6ccC8+9kVqATQD\nsWRwFJjo4P5s0VzDXRa/ZB6CAW5uoOm29TftghTpk0r9K4LnPfx+6l6ENe3T\nQMED8B8N61j47w67F8piEzlVZIZcFFMHB4uze6hszvZmTJ+XapYDQQWbiTl0\nCCzx3ylPxmpQ+JloVL2X1cp8o6zcgrlqnVZAekvCrpNJs7eFkGw2OGdAGcCP\nq1LH/FNmCHLqnCYPtfx/Tm/JbcEW7RloPklCXOBc+lVcXbBZRNXiW750vhkH\ntJ4T+s34oJR6NXHysSGJet5Tg8h04SJlWzvVudTAFYFo92snzKHajXH9cymz\n/2h356sdC1bFnE8vta/gZW8x2o7vlU52w7AhrTpKrhXcFctBdzKz5AkvfmZD\nljne9bmbQdCq7yRCzqNmMcdhXv7+fUTYDoI5pL9+Dz3/dUtHuyCKZlkUC5ge\nScOb\r\n=DvrB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHsguZgvVok/3YIesYBKOryLacnoBcgOPqkCZtIh+rqtAiEA2VHsWG1aR3TXS9AAP/pXu8i1ijnycDu/qZ3O6tTD6qI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601698113-509cbbcd.0_1601698236052_0.8940290525211236"},"_hasShrinkwrap":false},"2.18.1-next-1601733211-1d8a762c.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601733211-1d8a762c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601733211-1d8a762c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601733211-1d8a762c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wIl+xY0NxYl03sZ4Eph9OtjEr2TkRY+gfKbYQBfXFMrEZzPZ1qYn/2AbCftcq7V8X6yn2UnE7VFQNvSJdi13AA==","shasum":"ae15f34bfaf39f1cf75b0b79d8824e11a7fa9eac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601733211-1d8a762c.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeILaCRA9TVsSAnZWagAA3oQP/3EZtQpNmZuBwNbXQAKl\nTbSWQUvTqPExDFehUdZNo24jKprSjRusC+4MiwxFLksTteSfZypInP9F/ggn\nPRuo2kUw78VTDw28jh7pryXemDc5fDw1aD4cUNpehi0NCYzkov/2vJHHxFxP\nWNgQoAurD1D+ygiPHemqInermbQYngGB5DZHwiy+BLzFQg10/okmOb66fz6y\nRxy2Y2OIp1sfOxS8l8dNioj6zSci87J+DohszXqxECKzJ11i3h8+zmnCNrop\njOij+PMlMCMmQgmtCK87Hk+0XCm66hU+alz9qNkQ1YTTqvT8EypGx827klDN\neZMPDmjxd5lTvc40ig3DlJToTFhReLGYgdQkREn7dSf0FlgG7cizOnNlJBVp\nU+wbY6rphHRqHNv0+FtA2eqicykX/o0FussPU0ZmrtVwgSVlfVTbykEf9I0d\nmerYA2x67Rwt2bsf5uToa/b4Y8/YbG0x69MbghuF2VwfJh5X5/GAxWWynjJZ\nlJxduetEtg1AQFUbe01r9Z4hUSawrBATQLSdcDHN4cXGGzkt9VoA83ka/Tre\n37lVkKpVYpRYIiDaHo7nf1dG60PAPrjfXdTvc6eGnJ9zeA4cVOK3DDOs39Iz\nIrHtCvZmwGEYnhp1eR7pLQ2hayAYkERIu11sDgUup505Ut5h7IEXCT+9E9ek\nHKk7\r\n=wwvn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCueRlF5q8HqUyGDUhENJ9dTUDSt4TmB/fniBv3R9gWWQIgesBvpaxtJTQ94qO8f5Oq6HybNhyFs+VPOSgbZVpXeyI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601733211-1d8a762c.0_1601733337564_0.7475573531631279"},"_hasShrinkwrap":false},"2.18.1-next-1601734520-4d6d088a.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601734520-4d6d088a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601734520-4d6d088a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601734520-4d6d088a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-agz3vB73REXx3UNLIZcIJOzXqSi5fOy6epSdge8sdHQx2Htamv5YhQBeP4kf3bbqi0km58ocyPkX18N3IqYKcg==","shasum":"f6974ca337f6b044fd4aba88a71d51eee8a8a2c1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601734520-4d6d088a.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeIfyCRA9TVsSAnZWagAA/MoP/2617oPjGQVZhagUkqMx\nkwXkSYn+t9eGzBKMpSyq/XUgGqoUbrc0OfOJBrXNabmVe4bsnllgiZR5sNn7\n3HDjyBySR1Op7CqyFrUS2sojjwXkd2Qft9OEjziOxG2siAWE2J9RVTe0jSjO\nanIiwdvsiT2T63B6Ae7q5zzvCkiR2sPSrT16AWbODKh32RYnu6nkA8CE92Ek\nnitT2zLa30ApH5H6vT7+Y1uCr+HaTwBXaQGXcm5RvoMQeYxCqP3KRiqqx2lK\n8msbZOSVdVokTj2FRuV05D4BzUbVNvNXTRrcxTTgS1IS2BbY2pQSLJSx/wDf\nqWYrcwn9B8MHumpt7gLGEGUPoqBdkmXa3tdhCLb94fnvEXmhLkju7BRxmpJl\nbmqpFRTQVNitjwjeTJ3d8NlxdubYC2mdmAZT4lA6PvZtRJYCq0Gf4RcmEazt\nQGtyriHhSEHgV9qCnDLTDgCn9Hk2JGgLBe0Nov9U/xY3cz6z+7ydHZwfIeDc\n73Vs7IN7EtR02sJfaWILuLHdf9aHttulYxHfOLWS3HHZqo7H2Z+RjojzKf8o\niHYZVQzaogdGkOJtsd3600GYjoXgZ9zMso+rxHeu1SlOOr+/ME+XXMoyzMXY\nToWtOyowEiWrCSB9HAgygBJ7lSni0paMXYJEZeR4EDQLeiyZAi1nXdZ/1Mdr\nL8sb\r\n=kf+3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGZxyRXve0rTrk6/S18q1v5re71Ago/zL3HbWOUOfdoAiAPe4kpio6YstfJ9ntM9dnW9gFwM1HVE3mjpQV++Gco3A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601734520-4d6d088a.0_1601734641471_0.22665294566446326"},"_hasShrinkwrap":false},"2.9.1-next-1601834737-18927b20.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601834737-18927b20.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601834737-18927b20.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601834737-18927b20.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VrAMFtvhEr0aC2KW3AE7uRjYXlqbURXjcwdeudY1xf4tqp4GHVVLPPhaqXjMChzhlDoVvUXTULOE1lAFbZlIng==","shasum":"de1c29a400a8c366be657648b5dbb53903cec248","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601834737-18927b20.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeg9hCRA9TVsSAnZWagAAQbIP+wVc+BNbm5YSuvK8//XH\nrqHoS9hb9UAuZryFz+ITKJSfXtU9rQreihC0ozfKyTJdRl9tUBTc1yY85thr\nZlx1tBZn9T9sVBgD9jzWFJ2h+m9OodxWEUfkiaNq3BiF42sY4kwufVnWLtb7\nLw5RugnK3RAGnRHJAO2U47PwVE8DCmIlAC3FWwRkwG1aFLYQhwXkHw708EZL\nE7560s2k8P3jVw91U2jvXsaZL6ChHK4ZIjMLW9B/VXnsMMYmB6eCSZ1iJfAQ\npK0s/KYDqOXHFTYuJ6ilepHWobfdmFn3xTsoSjUcKlu+YXL2H4k2Kl3GBt56\nAQWgfN7PWoesNRRDZA9L6GSEBMtzCMRJej5SCmeMilKNQAXH10QSeNQYBhpa\nCkSBZGKg5zL1c9ByCPfgr09oPu4XcMtZqLI84hDFOh8mEeFeUVyMSGLm3nsz\nIYUTz7AsWv54OgtgXdQzZ9lQJhzs8I8Sz1is8/ZRWWWNDgHDeONGQD6pF5Wk\nMgDl1MT4DwzluvUT3iVYIbxl4SaJ0A85IZkjpeDR2TMEgcUMZeQVtjBf5/kK\n9HpUJ3b3iChAQ5NnugJnIq5XIhN1yDx3IdATC0FLS5rGASCp4KaWpNMl5cSV\ncPshnZLpzk5/iV7jL2DCQkFeX76TbfK1//PLFpfW6AUWiAv0+IZOeB3XBtsS\nANAh\r\n=+krN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAGeIRqRPNfYTrA9O5z/OtKE2ABvEl8BdcWYfNNcRdJAIgbnCvczmFFTnkT992ggyZFsRcYXr9A3AZQtiGyeix3Gw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601834737-18927b20.0_1601834848777_0.16994500323039086"},"_hasShrinkwrap":false},"2.9.1-next-1601844261-e859fd2e.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601844261-e859fd2e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601844261-e859fd2e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601844261-e859fd2e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Um9L0lBYW8JS1LjwAGjpg806uBGaHEIobCS+0x2TvH7x3GddAzcz5bSaJeGXEo27VBbPm8JgFg8TKqOGdy7p4Q==","shasum":"55956f34710f4c15d307fda53e54602fffb06aaf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601844261-e859fd2e.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfejSKCRA9TVsSAnZWagAAOzwQAJQ4mSA2M1tyypOaBK5J\nnMGuD0qnFNAQKk/G9zOVPOoJeih5C+jXz6Qg5XqPqZQKm7RVeIDFkmCMAyAT\n/d+FB/UpPci+hVScrEZ1Tplt5/W0WXDck4NgFl8Zl+jeOaNrscz3BGOs2u0k\nLdIxwWB2ETTzwmKmF+oYhQ4FAvIIZayM5gY51GhjpGHi00Gg76y7IDaKGYg/\n3PNULYvJulUCLi1IRUvAmyY7MqewZe92rtt7vZN/0tOs4b4YUZrNXj6EdhIQ\nZXKh4oCcqaZJG9mgIaMAvlOldRv1PDfpY7rTaq5dxx2ZB/JHfsj1VeIOr0be\nUsVKA/knGL0Le/LStYqDHrihwik5rUwhZIhaSpCgJlqN7uUIOpHIipY+M/FB\nr728fSkd1GPdSK9tImA0xeSfSTSYdfouIpuyiRUeYygCtYb8KHGGrRI9jEbd\nDHWAg+HcOxvwBYLR3OuBUg6HVmcOAFUASMWL+a7otfGvYp8DDsdLYGJe6S86\n0FXRvsavRaQ8ZUGEMjmnGLkkfhnPWsisQ88vvjtFz38Ww11nW3dDcbk5zS3O\nPX8blfoLOsCIYrlPH5OP+r8IRNnwKx7DYniAHjpPCwGqc6ou2ufBUr5C6nzz\n+9ryeCs88tsqSUf5tQeRy75paL4W/4Iyk/igAJA8BNwbafRomAfAN5ulGqv/\n72a2\r\n=jrRw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF+erXmGmAyXXcn/2WFxppGzd0tQYhMB4Xgn8Md7sNyUAiEAxK2I5yWPq0PBRmQYBvaSBRUGyaQyfyy5Iiapnkj9cbY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601844261-e859fd2e.0_1601844361692_0.07015220559306345"},"_hasShrinkwrap":false},"2.9.1-next-1601844921-2a2b8725.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601844921-2a2b8725.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601844921-2a2b8725.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601844921-2a2b8725.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WRtNxm2+fFf92OwhFdkRIHbf55CdWdp7naZSIC2tKEEXehYQ17ZKSwA0ityJK4HfJUocFuGIq0P1CU85Xu2fww==","shasum":"8a3c90324ecc9a11d60ed3d03d4ccdbd42f77eac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601844921-2a2b8725.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfejdACRA9TVsSAnZWagAA0sAP/jEZvaKrIKgsKsPjXuXS\nP4LHv3lBg/6tiGe4htkH2cO6MlVyt0o2bCzvj/IYSF3N7DLyr1QxZfLCdJOn\nxnN6L8KJPqOYy2ufet4j14dE1gtw4UyCq6nrnI/6fMsO2C6RNd1cAtPhe+zf\nnEViqmDN4zR4FMIxqqqy3ONSAJ75NXiKjb5VWIzISScbPjy2sdlLbpNME0gY\npzqi9g+d8VaVcBxmu6dzXxI/PU+5D868TRbHwK1/NcinRElCUPNQ7NIfL0ad\nD0KKD3qLyvlam54yJ4+6/19JDRTsut0ly2IJ1KWuOgWxR0YztdN4VD1aZD0B\nkksMftJhb5Mnj0EVnSErhKQuIuXB1PgEN7Vt6VANNiZHONQxzWbOWzITX+LI\n3AnvmdD8D4HtBAg/reTzof1W5IO0N+k40JWC/gVhzqIWWpHePf/54yydxNUi\nr/1rASiVDUuRy1ZrBCd6lbn6Op1kMEf7mbX2eow6ra1jRp6UVu31cfygSzn0\nvlUY4jg4FqvY1lXw2SZSxb9yYijoPWwBy/QKzrLljL7IUk4v42IcNWffZQA0\nyhQn6xzGNhTfMHrH9iT45Lpv2Hl6x3stX3l8kpZbR7kcmXttbp3pMP6ir+eX\nUhr0bcVV8xz8sqOAJaI0QYAVeF0YFJp7KVcqVNm6p+esd06/plBqpUPN8Kz/\nEZB2\r\n=cpp6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhCnWsCgw13mKMxfiUM5GvGZxOm0IAVnf8nbWdfXEN4wIgdAQrjWLqqk4SuSKz2hklP6hKRi1/rNCbpsQo0/UlTu8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601844921-2a2b8725.0_1601845056507_0.6828317800343691"},"_hasShrinkwrap":false},"2.9.1-next-1601847260-f8565755.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601847260-f8565755.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601847260-f8565755.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601847260-f8565755.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NWVR2FnZaXSb1vhEvoBXC25rOjlR9tBiZ21BW0E551bIP5xnq+sNf/HTZhXBGpEVWkeOLuDJ2zTWPTRuxiBJuA==","shasum":"55cf2868c04ecb41ac9727d34c2cf0d9e6759104","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601847260-f8565755.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfekBHCRA9TVsSAnZWagAAG4wP/jj/Yu9fz3NXWDAes76g\np5CaDVLfOYNmwZv7luVwPedU7ypCDck5LrcBMjBu/S0RZbHVmZ3ec+97QPGq\nCnYQl2/5oJhH5+7nbOrFmdoDflW0ZDvge6yEa3OHfqzt0zBKVEhz4n2A79nQ\nRwZ/j8pxfi92nShQzQ4SgwADp6Jty5JV4UN3rHov95UIhT7tPGfbX4vEju76\nciRpzLBjIVFCJ+NXoimfcNcn76BKX9/KXPkH/KcKhzeXM5dM7zWEjJUI2lNq\nR/QCHlf5GaSy6YR8DhnVPc8rKMnqcGLy3E4RNgNKw29c3EEAaA7RV83HlNn0\npUeQV+coY0j0PzLUS+9edcEgTm3unjLCCMazmjKlDeDUDwnPC/hKyrO8UxT1\n40y1CYGZ6SdSWwqODzsKjK3sHNYvqIiLmuR2X7VV2IujKcPAtzzck8jsdMYn\n8rW8IbfFi2DknsaRt5Q6wAFQAw81eNXkjvgsP/jJGfqhm288/oCYYNc2sR3/\n2aRtwzqdp/id0YJ5ZuvMVsDAcRCsq+BSkZNLmPMR56CbsfOYDW5ZKPV2euTY\nsKyrVZEjZou0hf5XmRjInY1+RVyIwg498O0iLAcj9VdsHriwxKyynlPdCEj/\nAfYgZLX1zne+LCW9pkhUYRXn73R+RmUfJdmszl1A++zZtRU+gSowMVOonKKu\nqdZV\r\n=7haR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKdpt+nA0rSFu6GRZkWAV+5T69/KMIr4+eW9HePncadgIgbD7QOjc/N0deXTwFNYezAUi8V6PDKgsDoSBoZbqRMsc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601847260-f8565755.0_1601847367307_0.06731768469791821"},"_hasShrinkwrap":false},"2.18.1-next-1601873589-5484dbe2.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601873589-5484dbe2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601873589-5484dbe2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601873589-5484dbe2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9KbVFqETVMm1TZv6Hguzp+MDm2qmdfx/zMhVMnGsZCqae+exNdLAAtzh+1Q1vs6jLtk3EnqowfyfpNH+FmrK3A==","shasum":"312fda8b3663c6c03f8686042c6db698eb00eeb8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601873589-5484dbe2.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeqc2CRA9TVsSAnZWagAA0ikP/3l0x2+L72y3xRe8DsmP\nTcF20GBW8FzOWSgZxeLqxpKSAlf78oSN62QPySNoU1i57ILUsm+ZR35j9E8E\nHPudTLs9C/Qk8Z1+Tbh1woqSd5YAKzjB6ppJwp8A7OcRDvNVlY9R8dgaEijU\nd4Q/Gb41hiGVqHfzaMxuBgcT/41qEJboHKb92s5dYTkIrcTo7595VJNrPePi\nBefWOaCzO3Gmm1OGOZ7Tr6ZtVb8/fo1eiC+LYJik7wegSl1Bjn16LzPC2hkk\nzsYhSEah25LmU6r9Gzq5vXCReP1wqcYsXxr68RW6aYQ7FOBM/KCAlPxKYqIs\no+GM71qXsC7MW9xYe5kx56zOKQZMu4+Qy7Y8SmOEhrsju11MkWaSqbhjyF2O\nPRU111LBjVcZyGsTfpJ1GoRIuobEJEaA4c+M8l/gg2P4sjl6HAc2kx6ubhPm\n3Bwh3MQL5LXyrF8H+QRtSpla/b46dcSa3rsdwRBN/ahyHzY4dy8xauqXvoCO\n8E0qttzqb8Wwlwu5CuDle6ezl/Mf5kZlx3abLn912R5EkWQcnMwnxSDXXEpI\nZCwlus3v+o9FaG70YEJxHvtYBzVOVKBxszsyXede0X0m3JqUaD+HwgOjhddW\neyOi6xpqi4GtPboHI+kDofnvKHGQmrIrCUPdoPgBOFWTEKruKBL7rrQS/JYG\ncVTT\r\n=OrZ9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTUX6akDk4fY90EYAvDAEsN3bPvE5hXtXm+Pi/Q59jVQIhAOX/k2hv5DH9NnMX8CHWsBnWQ7EqkDLCAi/IVUlliHdP"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601873589-5484dbe2.0_1601873717606_0.6379132580334652"},"_hasShrinkwrap":false},"2.18.1-next-1601877390-6fd7cd38.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601877390-6fd7cd38.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601877390-6fd7cd38.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601877390-6fd7cd38.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jepYgEpkxYxj/x9o/tulEGZuFkWL7+W7AT2KtF7ntoIqEOysf862T1ZcpF6OfXl5TbV+hTo+JhjpGcKuvxn4xQ==","shasum":"aca456d916ba77ded7cffe3d0c54f076097322d2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601877390-6fd7cd38.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJferYVCRA9TVsSAnZWagAAi2YP/0NGZWohXzGTqWx0TetQ\nrN7K7JX/JLsXTav1GgD7Y6aILJyK8RYtrXqN8axMzRux2Rh7GlH70Jmxwi93\ntaX+epFZWfTohdKQzfSkY3BezxWtJUcPz7JuOTD0Fxmwx/MLapnu/s/btlK4\npvDTVniTlGjZWyIA6ahBXMy4ku6b7F2ajLpu4uYnTfLCOV5j0gC2SPK762RI\nacaktVFsaJc015OUnH0BtY52yt9Dc7opOTjySEU1S4yyVClhO3l0JNcuRMTM\nLtvGmMlfz6uGT5egYyngehDdG1akwvAA/1180+Tub+1qczDxMCDM81GvlZYG\ny71fDG2iD+mqFA9mp00O9mW30e/X/ekoZ5/oHLxRE+JKuYCVoUKak8cViqXR\nSshdOmJJi1Iri1l8ens30ANeqsJXw1y3vGjR4bQ6AJrpyrl6KQZJbI+2uxra\nYe1AR6SdCdJveZ/6gkfwMtHcjuBdy7PAIV977xnxDPVV8kmZDfqSVAlZFVgv\nctFvCcChwd+528GFug2TGVIj9AYjBaOrGTOo91U7HY+O5M4fOFKfkzxwo0Z1\n8eMf3T5hQXfj+uCYlX9jCY1ZfXHbXEqx3+MW1gg6Oii/JwonRK05dszhRlBf\no6bszEfs0xEZGf3tQQJyduii3blwAbEKV5LA5BcJVmAdjklslPps6G+fSDmP\neSXv\r\n=vA64\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/AdpmnYfzKwGh2P5uwVi1dJj6EUYe3iYj3Y351Ni4sAIgNN/SD6wkef7bUlAqpptw+JWp0h0CG+aVkzielFio+Zk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601877390-6fd7cd38.0_1601877525188_0.19709868442512035"},"_hasShrinkwrap":false},"2.18.1-next-1601877903-47f7bf1c.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601877903-47f7bf1c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601877903-47f7bf1c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601877903-47f7bf1c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4kzqAYDDLeBVCrEjiXuGkn/H1691L9Fm1EJv4QCNmpBzNH6Bbo/tNiB+YAvej+M/1PtquG4RWOrDlMKmfLhscw==","shasum":"081bd295a4e0ffe8d7f5a12f38b6a2991e6d348b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601877903-47f7bf1c.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfergTCRA9TVsSAnZWagAA+IoP/3fJqGm6r7yFu6XKkXrG\nKlKZCdN8sq8xN5qB2iAlgRq+tdsj/tws8XzemVnAJolvC3oCibM8N6nue8NL\n8tu3eVdPqKakqDwHxZMuj6lgbp6Uq/TTthbIlYdCg+VoSilmkeB26Ta+MeMu\n7Ee9/bSLrgFuvCkQ3buO+oCFZJgmf6Ne6nnq6RXzg+CLVjzBlEcMqSuucTwU\nYDhQtKNhpoZxi9g3ZiGgWyNNHYp5TejlEfTRRP5/vh9vIl2A5BwtS5EZG4t7\n1DfbIVJGHZQLqLRcfIqC2jmIVV5oqQsKwyBvwXVw6cYP+cOseJ13HRztquWa\n9QPo+Cj0+sA04pIrw+DlPFkwmOJ0SdeiPdMrVXt0jUdr0TiFnGtInJa7QGgm\nkEXjlQ+Zm7WmE9Czts/jDVJchDAZ25jTFvugiqhEtoxwPo60wUJS4inXLXrI\nB3P4TP7ddpa6tb565tBk+IefbZSj4RfEou5UDDeaOHhDLE1MAu+8h3hw6g7J\nuJGbDvCnDoe4giExlARmZlAFoyMQsdV8xOb6TySDUZaIjtNqH0qc87h25vdb\nP0+6Gyu4dHvjumsnoXrIqmfVptZSasKxRGkZhAc3Pn+DSfMvrkrRiFQlmTBA\nj4nvfbebptSKzxqsQR2QVO+Iju0qFcX40YvI3XKRpS3MolzhohdO0x0nl++L\n058j\r\n=p8S3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmZiYQ1Eavbjc7yRBPmp/BS8YXQKwIJ7jcdfXwCiuCdgIhAIEAKN4ri7NsBjIccMxv2/mTobEEyjkbpcowxWRIUGHX"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601877903-47f7bf1c.0_1601878034611_0.3238234694205424"},"_hasShrinkwrap":false},"2.18.1-next-1601878624-d4ab9aff.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601878624-d4ab9aff.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601878624-d4ab9aff.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601878624-d4ab9aff.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/RZe/Ce5TkBwONpGDR/GZNRxIODDwOPqfqMqrYJ9m1EvhmB3eg/j6uC8RBP9BnyL92D0Z8bQH1gWoQkSU2kgDw==","shasum":"c9f04ca1c31f7ada63ed1b372e7e85d185420716","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601878624-d4ab9aff.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJferrdCRA9TVsSAnZWagAAORMP/1NSdSqwPuj3N5g1ZEg8\nKJ1lMdhIuol01Octt4pTm7qWInTBhfUZ3o4soJuKZN17bD8Zocsi8Kl7NYod\nfOzd+xyoW1Zes8mJ9o3dxQ6cd92RtxcuDgjRfG1v1NK3lpxL3jQ4cZiI51nE\nhlnX0hIhZzO5H1xh1nSAcdXHwgqiXZdxeM7ldELGIjPd1VHATaqDBvUAtFFl\nIwy9XdAof6+pdzqIBJZXENmREDZ0VEfPj6b1j0Heheekupfat+KQm4Zw9DMz\ncSXJXZOnNg0qSFV0Z8RBW5bqR5XbNofTJd50w5J8QiHYaoFkTAzpP0O4Y6i7\nOJs2VjG46NNEU+CtzsimAxMlXIMjfU7H0DMFMLjZKp3ltpcl99fhl1rfXW+G\nUY0tYrG8VWYJZKX18l0W7RzQONGUlgFIXjyYLDGDOx//NG/ww39EEf7Gui1S\nojuQQhcGhDysmpRPTo16uKdZhhnxFpCVkkHGiyEU1qHtJl/fg/tucYWj1qfx\n6k/bZOj5a4+5TTMuJT3r9OjCNNhMHMxYVtLcnPbvNC15Mng414SxkKxtmylF\nUD10cFM/k1qpc0Ids1CtcORBsvMCgIioDsolK2vIu1zu9KnNQGP2fu1ulF1f\nS+LCg2ckSdzPV9WtuAvXAhE/zJLVDWktKl56XirA1idBgbJhF021q5bnYngm\nqciU\r\n=kVnC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAnHiw5qaKLIdcSATuW/Zpgab0bm9Rtl9/Ci/Yh9pqnJAiAKohb3UHtLVMkQf663po+E7KtkZ/ydV+lUBWFZUYCIyw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601878624-d4ab9aff.0_1601878748814_0.019389612862171113"},"_hasShrinkwrap":false},"2.18.1-next-1601880566-61573a29.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601880566-61573a29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601880566-61573a29.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601880566-61573a29.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6TqF8TlMcxTRp5bEJlhbtzPNp22lnXQJBw4m6DLoIbWB6/xzcIiFkd1rrkFs6Jc5RkSSKXuN092wvZQyAhZ5Wg==","shasum":"161f947f72205e7ca77b667abb47fce5d49c7457","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601880566-61573a29.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfesJ/CRA9TVsSAnZWagAA6wEP/28oZNYg8xORqFzkhE/c\nDWj/7gtyVv/fya4pczsQTERBolQqbhYXzSako6IS1jc/crZt6gBg8gAxdslX\noSiJ/FNH23zU2zRutKMmIWuyfhH0+74YHGKLHuwZV9sxTgi36OUJfj5YKGW3\nqj/99apiKenDRc5iOuCeXxoGFeb7rsYDD9yC2p7LsTJYhJE3IYrim1hwaRK+\n4jNMVOJ0CkPgzctKghRNmlbH14THRKWgw64yEsWcWE71uoR20RH+99MvUWdd\nsDhujArJWElNcr6HyYLOY3BOauSDoKZta/u+oD6/KyTdrxlvC6VZzPj5pA01\nEUjk2SlCPQbB6AsJovmgOjm8yMOJqQ1ZvNXKOR8WqHh97AHJXiAxgF3Rncx2\nZTL574KQz+OXF61tQ8HHpivHJL32zONbU+mf/TemjdYrDzc03m/PT0Vz8WFr\nqHZvmpnuxTEfxXguquhhq5cjn6hJw/d0QPCBl1T+33D5+w56bqB+FtSwnNDU\naRsSER00lc32V9nnELnVym3+8AOmXOx9bq07zS4FF/+22L9FbyeiJVyoFLYO\n8G3zXkjsLil4bv9jQjtJEUORItjN5IGCMLD5nBii3/Azar5NhwBm4eecj+pT\nAl3LETOclZjJPJyP8076s0UPlkIIpX8vj4iWY1PqimVEUUpUWkIRgO8Gi/zp\nG1OL\r\n=/5HH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICSsfu71d3br3IbdX59SHTYTdVI5yvuCMLzde+/bx0q5AiEAtVmQ6rVyS5UBiR0Jypte8dUgSZ42P2N6UaYuCIBLMaM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601880566-61573a29.0_1601880702653_0.9392246126452384"},"_hasShrinkwrap":false},"2.18.1-next-1601881541-61573a29.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601881541-61573a29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601881541-61573a29.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601881541-61573a29.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Aio3KDGMbwEdC1bURNPaRHKO5MjsO4wZ9UCtw0Eefkr63bD3NQukhh+PNWqXtYa1im0V8ik7o7RODD3KZuEMEg==","shasum":"5cd5f39ec71ae3ca1e643dd3bb7d21c51335274d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601881541-61573a29.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfesZMCRA9TVsSAnZWagAAU6AP/3Bn+sa7xSC0aPvcpIA1\n6SiEqn/ToxtBHVYrKpn6HMRyXGin9i2L7tM23Dy/bm4Tp+XTD90NB636Yxzu\nCUXYfwe1Xt8Sdat6Ds8QItXis4GGGthS1oyb8qyu2F3D7+Vi/d+k/p2rH7cS\nG56omhr1T1r1pZ1dfjDIouqmItt0zazWnNuZZdQ9soKUPvdUtyQ7qNCK/CUF\ng/NgXdlVfycVSBXe+eIvQqVw5cTLGjX5tNOGyw36GtLpI90LZWtjGcppIevU\nIf0sC1FuxwxKPbhpihSdLscI3Vhn4/B7onlNMMQTtnUGvog376O8Bfv4hwAC\nkWcfmeEtnQQVnifdpvaDvj8ZxNySH8ULLG9+Gof4bXvUYecmAdIuUAQqsGRx\n5VbGODpStYKj97+i1iPkI/TdFhoJcLC6ekALG7gn3TOW8X/gB3hZZrtL62Pg\nwF4czdJdS2oRdm82rim6Yj9z6BT5kAtsYRNlkk0Bp2uiq/DFRhlRr1bMEPK0\nuo4z0IeXekZ1/zWwXPI6kX/jaKKDM1ZLoU8/nXgP9zByhbEluwO768Ll1VrG\npMtSEF8ItWaVjmbFOJfVSCIzTFJtT19QG+SGjfFY+ungk2l4oXtNCz03JEd9\nwQY93XQNimi7NtnRkCSei0Occ28CckRCHeXbIuKJ23Qr09lLKI+GIairE0uy\nltHE\r\n=q6q2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGcnU/m5GHtFR8EJwSP00EZEOU4nwgsY4u+gSwFIK0ZwAiBrYB9W04cT8KUyoFTSs5nV15x/PUV6sV9QhslFrWvyGw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601881541-61573a29.0_1601881675829_0.7110042307153155"},"_hasShrinkwrap":false},"2.18.1-next-1601884057-158ac27d.0":{"name":"@xdn/prefetch","version":"2.18.1-next-1601884057-158ac27d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1-next-1601884057-158ac27d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.1-next-1601884057-158ac27d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pEYSMcggclyx6qLZBw/xNlsC5Gzwi2uqduZBQwVz1nRACshO5Wcxe7+cJyjroqxlPP8pQ0FKgDG8nmL8BFKWjg==","shasum":"c95196662cac14830026e846f9215fa9bdee1065","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1-next-1601884057-158ac27d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfetAiCRA9TVsSAnZWagAAYnkQAITFXvxe/oEyTnRX/H9P\nZ+g29V3bGxAwMKevkd0sdZ7D7vT0+UFzDBmNVglwiiNQUs/Wy/RZI5FXXnCQ\naqF/HOaJtU9/zrh24m7vkrNHcjuEHDS0KmkO2vi7TlbTEJSsAq5gxupDYFn7\nE8cfghzr3MEKh7R7k9/yQyPakatK2AeYkFiuTMrcI3Q2zVmHVfmqfZ4BoNUo\nty4ipHYXAP6Ck2GxWt1f7v+XUyfyLphuONpexJYilClI/DYiaPIkHC3LZ5k/\n74YNV0RbafIii+Ftzj8FHA10dzrOScJ5v7JPujpUeeVY8NA8FDmBzOIvUCgA\noEPSHISQnrhTJ62UZewacSQ/A8dgGyw6BQkwUJY4RrLa09z/TdMb6+tdshlQ\nGUyDd+izg85K+tcU58g3Hh2ENRGAIJnp2ieZh7Y5PQZcW+7bqwYI8xtDYWGm\nKzHiFKinD5W7huyR+1ZzY7nStGpWI8ijdy1vu1NMkSxF86lSOAi0hvW3sTrx\no0U7ZieUgBmkLOf9pjWvhA+scLvL62vCjNTOb4pII97fmpJw/lpb3k3bxKrq\nTGn3LXKL/7K7tiLeZLjD3uce09ohvlgy8wNy/Uk6yLByUI/k2OS27X4vx+rf\nuxwM7edRdT9NZbR1fVF0ja+Y6yvJIwxBT4TaNnn8t1CZm+F4B5uHYE2xl+v4\nnWU7\r\n=pKP1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHnVgkP/LIsRT8q8A9MmpyfTwakzdBvsvJhQXIY0eYG9AiAY0d7z9dKWgEUaM0/f3etdh/8Jy3ffj915+cVDSWLnpA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1-next-1601884057-158ac27d.0_1601884193838_0.03033595887032292"},"_hasShrinkwrap":false},"2.18.2-next-1601884114-f6d1406c.0":{"name":"@xdn/prefetch","version":"2.18.2-next-1601884114-f6d1406c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.2-next-1601884114-f6d1406c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.2-next-1601884114-f6d1406c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1WN0DqfLaMYBu5v89A5Yf3bQFdAeXrr9wb6AukvrS70966spX4FD5K4pHzPhYHctXDuwTmj7grN68SyItDjiJw==","shasum":"37f698c1105c75a050a79d0bf20a990ef9d3aa0a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.2-next-1601884114-f6d1406c.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfetBUCRA9TVsSAnZWagAA4RUP/R7i5Lbyh8akkx4AWbvG\n4ZuEegaRmVTGrDIX+HXONq7LPb09PR1RwQYD2yblwehR4KplJYqlCX1mMKcJ\n1/Xj1dRAGLD6GiYB/6Vd7vDfYoFaA3baYW54u8qigRgSLRwc7pKPB5ygAQJk\n313Qr4JAiJNg5eXvWP2/eHeljKe3z/ReZJeu3y5rt5/82H0u2jKm34IhGVrp\nHMGLYcl/dcqLY43hOG64/Xq6cWExDbR/WvxYsKqUHVZcgw2wST3uKfS/k7XL\nqtd4nipldynU0CHYbIegd9De+8wtA0at0y3ZDYy7bmlM5bn9rkUsR+fvJzTi\nK/rO42w3thrX8vypQVsYY4Ao+sA3gCDyYbIXQYXNvnRJfLTWfAbCQOO7XZob\ndtV8Qv0UGYF5mg8WGB2onUFCUF0tewoH9FNyKE6c2MfKUeNgPWEU8xfptS9r\nse4jxnTm5yYzEnRw/v7CjAVJ6ISukedEWClEp66IENfyDoxK28KSgvIL1Eic\nXO9FLqeAMeTuNlUSJT/yrWZ2ApxyqADY9OpFxMY8IO0wZCB3CvbobkJyInAS\nawaNYzff0QSmy09hoeddJ1FVqkonMWqeTUvO8CDoual0JU3c0UtSagIVPOWy\n+hC6x5hq1loujpsiZeeMseDhBv4DM4THVFJOD1++Qp0AR8Mcu2RCNhNOpgLV\nC9cu\r\n=TBjt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIADxgaS/RE6yUPV0iljGGth5ZiTOkIBpMIglR2pnQyM3AiA937cFdzpEL75q5dAonNOjLvgOn4kGEHKsTiSTqkBbhw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.2-next-1601884114-f6d1406c.0_1601884243868_0.2223974407513618"},"_hasShrinkwrap":false},"2.18.1":{"name":"@xdn/prefetch","version":"2.18.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.18.1","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rHWuilpOWiuY9HJj+G85NzdtFuUsYpYDN1xKTfPkOJNLdYSNryeoIlutalybX56AlEP7wyH81rTUy1V3fJSRSw==","shasum":"9843957283e6d6d5be10a5b1790b34e4cec741a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.1.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfetCNCRA9TVsSAnZWagAAkxsP/AiF+JDEZOYQkWyT+DZ4\nf32uo2jhD15IR4KZvQoaKaG0YBboIh68CEGcWmkuMsHacGEGV5rxTaa8kVR3\ny9QogxKX4QqCkW8J36t90IQw/K8o+wKpgJqgxDr92sFVCyJ3ig9cji5sjCkx\n/iI9EgQ9gdtLuO6qqQ0aZ32UWzlGQr1q3DF/3/NFUi2RvKvhxBxFhJEPt/+Y\nlWY22b9dY0SRp3ikBxGeYC714olG905iMtRrU9CYDF8rm1pxOKhq1BQBmVvj\n+Mzi3tLIlSmUs6hWeMa9qhXVHowhIHy1oI8bfh+A2nf0em5ZN7lkjV39aoxI\nAKMbMHVgou3UazpW1HdwG9FADuWrROpPN8KTZcGRuLQwfivcO++rYRtUgAS3\nneD8Go9fX1kT7YXCcddh65Nos7wQLUsRw4G7a0JJ5R1T8d0j7sf8Q1Rj8Wzn\nWWVpEjkpJQwzHtPLvL0qQSGP8RiWmPWkCYEwMFDKY22gkueSJQCt4thlnYSS\n6pNKXPo96v7V7ltwwaWhDIi0p5SxXTKORc1oadn8MLB8c2rSwPqL6VF4JzvW\nLxjT4SxQvCoaJtvV4dAVZGLwPh4C3jDN/ST8T5rZUBwnFbG3optdqpxBwcFj\nuE2smjgjGf/9/3dk2/273rtq3pcpZBPrpItxZtM3SrIjcxCMCbb8ZFSHz1Ix\nqYlP\r\n=8+YR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXJp67fbY9+2ensV7f0rr5QVtQ+2FEmNci1eX+k9PZWAIhAPpXx5jJrb0o/O781k+9JGB1eGjfo+iZSYa0GXh3TxJ9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.1_1601884301310_0.6798122497534622"},"_hasShrinkwrap":false},"2.18.2-next-1601884727-4f5634cd.0":{"name":"@xdn/prefetch","version":"2.18.2-next-1601884727-4f5634cd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.2-next-1601884727-4f5634cd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.2-next-1601884727-4f5634cd.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-g5RtcrAuzUCJFHwCewgCRQXYCb2UQav9HHnYfKlDOOnN+x2bIYIq6dQbOwv85W71B8ZnRUgTXEoLvFTEYZKenw==","shasum":"51894b43fd432976622c919d7eef01f636766c1b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.2-next-1601884727-4f5634cd.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfetK5CRA9TVsSAnZWagAAkAEQAInaShUarTefJSWC0++p\nCpZ47x2l66FIMr+UhszFUrtCudCCeby8SjssbmsmfGqixp1qc9iQzfshC8XJ\nj0IDHfCMkk97BQ41wLpV00fgJ1pxIUgIPuDSww+IsCFLwddHSURixDiselvR\ntEzLoeYuw8LBXhJx6BRSiQSFoOCh3IqCemhxmmnRpwmyVfPnpQFtpZJpmQz5\nf+IxqFwhh8+BHEuzM7+24fxzUCNsX6gLnrpewmq9LXUjsygYd3fnWTKJKGTC\na9osUHlcfTjoS5bfiyVDKBudKJSP6RjKRZK5TRJwykyvDnkI33u0c4G+X/35\nfli3+SMCZnTznhN9GVJVEDdgIOrsEqrqmS15SBUZJnLgB4KiPep7Lt3Hv2+x\nxA3urq24r4u+Xmao/9HFNQK4s7Kk2e96+Z1NQNsl1HMFSRKGZ39VBaaQupw1\ncq2bSObedr671O8kU6VDvO+Qb4HjELelgi8fo8a1FW+M2HGRV1JlzuG4u4a8\nMPs8A+y4sqmnsOLzM3wQJ8MOp1QKGctn2UGYPlyLwvKYUUk9/oxvahhjxMgK\ni4o1hff46osloviB0mSHe2fPyi1aNe249eCNNyb6FPjlHC5vSMnWkhQnft/4\nI1rhIBTRJbiPhQjX/Z4hFLdbaNm+CGcvYLaK+Nv+KZqgm2RE6FtM+GRjyMGy\ng1q+\r\n=YtPB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGCGpPSPO+1TRZxusgBUK4DzTENXQx4pCwhpU5gSQ5AVAiEAv2onb1hwI0bBNBM+wZNnFFgJ2mTLPCBhof9kla8F9x0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.2-next-1601884727-4f5634cd.0_1601884856562_0.7069602664810157"},"_hasShrinkwrap":false},"2.18.2-next-1601884733-4f5634cd.0":{"name":"@xdn/prefetch","version":"2.18.2-next-1601884733-4f5634cd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.2-next-1601884733-4f5634cd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.2-next-1601884733-4f5634cd.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-co7+unFx1HdRIJYjHT/OwMUWGfIr7DZVDgn0oRddHoqRqbNIbHNcSlf25vjApNRV9hB4b4lEmiwb3crX1auitA==","shasum":"ef994af9760b918b5a6d314c3a4c10c7107ffc0d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.2-next-1601884733-4f5634cd.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfetLHCRA9TVsSAnZWagAAEYcP/3WIQ2zxVV50qQpySD8f\nI2Mxd7L/O9R1wiAY+NGQScRp3vZsdO3NPLWV2jVRE1R14N/oxsuzKOWeOyks\nBaU+g+8IK9xK0So0q/vtqx0/ToMlwj8USF6H09LcPV4RFJp8ivdtzvVafqfw\nBzxW+wVwljPoW58WWYBD7HC6Y7tj7Z1msJUohSoWnYV3AUPpIlz4EKg9i0X+\nK2iaZbk7Ij13YZSbzWnJp/ejKnVPoWT5qJVT1C3Grl5mVBakVQ1tB9+mfOmr\nhREIWj1LdUNt7I9PgKOhQbMh6UU/PFIVPRluoGMr/JLlgk/V1j/SY3eQGHIW\nHGjbxSbvFMHGqGlX+4l2AisklDgMA9UX6vK/s+2OeRoILG1nnboihP10d64E\nEta6YM88JNm+TH7EbF3FoJEWt+uDuRZzv/RP1q8hu1kooW6c/rYXT4ntumDB\n1441tpjJU3YHtfbQVbXiaCbsGQiNStRXAUBffAGqljnOZWVVmnQdFeMYGenm\nb0xP32T258yZfrOAbf5KbPjBeVVcrhBwtreN+eoytP4wjvXfDPVlo4Wfz1VL\n2lpnlCf/1vakXN2CSVjNxmT5U5upwNgt3A9rMnTFfbTXM+TtKfwnZ06tlFsF\nv8lkLhZeqodkonccgFqCoiTDnDf2tGnYDQdsAfL1rV2kkfMcuqVWEvuNcV4p\nDbqA\r\n=JOW0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2oNBIBOThrrTOYw+cBbYWhHOYOAp6c5VOFw2erVybJAIhAO3QIcZBPw5qBa9RfDhZIDVSGVuSmPxct10zoLBB3dMU"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.2-next-1601884733-4f5634cd.0_1601884871204_0.9356180799941065"},"_hasShrinkwrap":false},"2.9.1-next-1601890789-b0064ea7.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601890789-b0064ea7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601890789-b0064ea7.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601890789-b0064ea7.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DY0u/9RqYhNDIhIZoCaliVoPqxp49NLkPpamg8uhE4/ytvBa+Tu/T+2PmncNPnmXYMa/FYJmP/7FpSzHzHzOxA==","shasum":"71b71240741df5a158a99a26ef14084e8ab948e1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601890789-b0064ea7.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeupVCRA9TVsSAnZWagAA1rAP/iTcx6jDemR0d+iFk9bp\nXK4qeR4nU4OXV2p19lZ9He+bYGMA5ErKPtFRIf0VXorCorAUrVtm2s72KVX8\nF6Edbl50xbb10D3/N2NmZ9WSFrxw36gSwU+7RMCLOEJZgrlGr+jyDxMH2InE\nV/OeutVgfzdqJcJc8x3eHV6i99X11w3BbHUFwYnzfB8La3wfBlfNm1WDoc/O\niFwTYoYEeBBLjbtDXeoBck/WYi3bw5VHHH6d6yZhe/ikzUeHb6JE2vhAEXTg\nIXLw2HlxZlDMG76hfGjC8g87EdG1ii28NRACQDVaDHuhqClZIxM9Rkxxp6PN\nMOK2jnbzj+uJW2L74vjP7ivK/IEE7x71BRDkpfPP9tJFLpXlwUkB4Pwc3sKS\n/VGYlg9YOC/y1Hap+3MV251+vL441V0uWsqfc5YfHg8nG+uf+wXsvO2LgTOS\naoiZEjqNsebM2lj3vpXr35lx8Hp0AB5gwUpHq5sKei0Q54+ngHJwLieAOqgq\n8vjNz5+X7dFV0F0/GpbK4sxbiqQlMrnD9VfejXxGNfDRIvR1vM8e7l7v6nAx\n0LCROVCyIANXRMFuxweN+xshZiTDekmS4Z15M+LAr2k4NpImfp3uoR84azYZ\n14PuI39C0nCJT+NNASwxpx+ROw4QHJ/10ZORBQVzb/P2oqnWmB0TS1/fiE4w\nRHqF\r\n=LnQe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnhVnLG77FkyYu5j5h6Tve3shfS7//1H7/8ygqlP61DQIgUP7NjlyasYh32P45SCHM/WTH9hIvrmgOlzR15rqJbuk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601890789-b0064ea7.0_1601890901086_0.4991788764326792"},"_hasShrinkwrap":false},"2.18.2-next-1601891185-c1b20eac.0":{"name":"@xdn/prefetch","version":"2.18.2-next-1601891185-c1b20eac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.2-next-1601891185-c1b20eac.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.2-next-1601891185-c1b20eac.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-226W/nDkPenwGp/TMRCWB33B/p1twZ38gSf9p8MUHTluTGD4QIXAwYocJllkZLfTHmUrEFPNYf3tqW+Cmp4fSg==","shasum":"f105908d8105740a4b7cfb1ae324a2bcc5b1fad7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.2-next-1601891185-c1b20eac.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeuvzCRA9TVsSAnZWagAAHtIP/1ES8K2YJ7RoV1Q4r/F0\nBynNcJWzT14wOFX2ErGS4eu20CcDIYgMcGqPwlo9F9CO3OFKPBSNc372wsDD\nQkDZ5HNZ//+EspsvU7ZDI0dLUJw5N84u7j7vskfblkwT/8e9rc8+xQ+aA7wf\n9yeWuWy4gltYXLlfpXt/n+QotGcyqpzpVJ9FsxVSfuS7K8kd84O/RZJV0W1M\nHztOcaBN6nhpf9Uz0MIlXR5X4Mo+gtTe3Jlb2OE1AC0fmj8/poQajOcYac/W\ne0rGPUKDJbM4qHE36//lmNI2x2Bw3w39W9BEtClMM0qykDfHRhw7k1I7shd3\nvR9dFnrK1XqWmC/On5diDWdI/+q8qBZYfKvdIGxTeXZfAgXJxuKQwRLZFqTX\n3gey52jHuWyecXEDHq2oswpwDVLEJ8B/1cdjSnuCgv4/zJrN2dCu8jxxzD4m\n7WwveN07Z8dvNamiAaOT9LjQ5cNEUyI5imic5gs7QnWZxK/YBwFjvMwcCulL\nwpLX0ZJ1Bt7HSjwyKfUXKYAGkEOfs99Ho8X6YwBAK/r2kW2nxHWkXQiAg54n\nFFwDT0ZoWmR/yILtupCnXUg55XYKRQz+LSkSIeSaWryPb6E0cZJhQGbAIYsN\nr4EsMk4SS45dEC6ZtMe/0Nd9PzfScVWu7nCMqqYbJIV5+ngg4cet9086OW8K\nlwUq\r\n=oblE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPB2MPolUpf6TTohFeTCXpFVkPDm34gsJyAhRMmbRwDQIhAOcbiO9toZAHQXW8QphBdS+JKjzHXAYgXpd2bdxLWwEk"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.2-next-1601891185-c1b20eac.0_1601891315093_0.6990975976732667"},"_hasShrinkwrap":false},"2.18.2-next-1601895844-87ac5ae6.0":{"name":"@xdn/prefetch","version":"2.18.2-next-1601895844-87ac5ae6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.2-next-1601895844-87ac5ae6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.2-next-1601895844-87ac5ae6.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-fwhpVZYXBNWpHGImhcXLbNgRg9Eodz9e7pd9rwBGG6DDrJ0n4kGVIuB9oC2EXwFJfGfSwa0da99oH4bOZ62wiA==","shasum":"23d50b38d78dff9a77f8150de0cfa1c2b926ea81","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.2-next-1601895844-87ac5ae6.0.tgz","fileCount":58,"unpackedSize":126864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfev4kCRA9TVsSAnZWagAAUWQP/Rq7S1hPEA8yamxfT9hM\n468y5RnvCqcIul3tY1rTKb+zG8qwgVNV+yhyj3Kh9JuUVt8UeyJR4NKEooQK\nsPZfz9M/MHNn7So3aKJGYuH2XnakYfm3U2+uM8G43tqSOyTmpuZSQ5r7lmKp\nko+ay7FWufp8q+r6Qv6X2VPHS/rr4C7UI3A9Hjf/MjPBlwUvZ3Djd6fhq1jU\nljZhyHSRDh+rweKskWaVKa2urgNxtNGRsdQzUyqaR1AxaZpP7WeJoIsfC+O4\nzDQFqku3AfpQHNQKmvRO2bLvOV95W64vnk+eWGkopbG3Ul8+7IqiOY1fZDGY\nAd72CqpLLa7MyiTbFwVoc3dcU7D9gbhSPhajFNk5+vFS2ViP6xU33LjscpNc\nDmeGPZXWK/y8A2+fHdjGB/Bk4cMLhyBFUp0JJpuuAwNeckjTw1iV9bhdIQsq\nH1QsMtb6gzWPVUny9T833bUQnneo0kxgWryeoP5bCYGtPA0veo77/bdYujEM\nPfWHRF352J1p5wUl9XLcIXpJL/cnoFTJXBXt3OAHW67uE/GMR9TdnS9Qka9Y\nqdE1pq5WXvXPZDSqQRWRPB7pOYy1fudmdk8i/OutCQGI6YkgxG7LPbyoCrOr\notjw3MeIjM98+gX1PpzOj9NEs1+gzV7i7pd7Y6Fk5ggj0RPNgrmMD6xGxuDj\nHo0X\r\n=VNqf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC18viI5F+Sh0AOc1XF00SJjaqNFTnpBvV/Ny+IflknJwIgbVf7jZDoIOReGugoMlKBDBCTGS+dlqweM29HPzFs65w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.2-next-1601895844-87ac5ae6.0_1601895972311_0.6332733249966855"},"_hasShrinkwrap":false},"2.18.2-next-1601896565-c1b20eac.0":{"name":"@xdn/prefetch","version":"2.18.2-next-1601896565-c1b20eac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.2-next-1601896565-c1b20eac.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.2-next-1601896565-c1b20eac.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MTh4L0grUGofINJ8MnIIXtJfIM5abos+u+REe5njWdkC8fFpTwghZFfjaT/dP2t6iBHkG6zxNDpKJiz9aP8J7Q==","shasum":"98c4e65115b1d9e9ecbcfa7ab21fab3c53f3431e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.2-next-1601896565-c1b20eac.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfewD0CRA9TVsSAnZWagAA9z0QAJybcNvacQlp0R2MV6jz\nKW08m06c1ZWozYC0AxPC35Ye6Tv+dr8Gqbisvde74IEtkwwHK1RfZV9V8Lfj\nePbLYFhjpwcVwqodum+jJg13/llrxDyTkPV4h62qHR4ytYMR6KadWZ85vowN\n0eH5IjatSRcl9RJtlhvpJ4UMStjDeiMalgJ8EiBKemWJWKu/k+/hp6vj2PJ3\nVkqq5dZtwPC8cyeED8Vg2uPGn9WZ5PZZzUP4X8K5qGQZKWGHwGm5bRDle4dK\n3MU27q4a2WaJenP4K6YyzIaY25Gc4D67rjObOwTrBQXeyuIHBNMzjATMBCKv\nlHcrFuG0kUz3473lGpVwfaTKiM6DP5c3B0vTHbaoJFjf6pxnJFgPIJbtUD+O\nKDy6qFnIE4rvwPAoMrjcJR4mWwxE6DYF3K28Hq7wmDw8iELZ0rswUO4fD/Ef\n2fSHLcyKDKaS7BjoEu9qKkPC4whGxouWkE4rLy87obe1ol5JbiZy5U0Ebpz2\nnovhtFG23NWsBVBvpdzSDVx7fMM3liIJBOZaaDAmz7TPXgWxA5FhUwiRo3aa\n7egc7VvbsF5qvjf1htuOHLiI5IaFCb8ywGhhP7jDX0iO81nD5yaeRfd2+4W6\nqzCmEwOuw+ldZW2dQm5I7ulrE6PwfzFfjJhnz+MmTe6RuT0NGhfUwKPpp195\nxo1u\r\n=1s97\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmQqqf1ArdE7bftpq67Z5K/1bZvo86TAYcaZ+pYyFZ2gIgIfttHtBXASe9gPtgeWf+AJ6cdJ8zwO6AySvV87TSIsU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.2-next-1601896565-c1b20eac.0_1601896691572_0.925727516304186"},"_hasShrinkwrap":false},"2.18.2-next-1601897472-9547bfec.0":{"name":"@xdn/prefetch","version":"2.18.2-next-1601897472-9547bfec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.18.2-next-1601897472-9547bfec.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.18.2-next-1601897472-9547bfec.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MABBhum7FPFbTcJFbYR/3JhKlhayd/so7FjCy7YAOUrJ7PCdG9PO3VEbfCh35vGjyyIWRMtKi2iAH4B6vJnH9Q==","shasum":"149d6b675c258b8c6f7c9c7904d360d9cdc3f61a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.18.2-next-1601897472-9547bfec.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfewSDCRA9TVsSAnZWagAACWIQAJ7DKdmsGyQnMMmkv0Rw\n4a6ICGYsGHPoOS6NxnpPHKpv0tK4SKutVlADzXrqw2GDIIrO1k2vhbiPx7e8\njD1QRMJeGszi8mhGVCumu4XXI1N3Nv7rpWG6vT1j5b7llnH4nKqCp1PrVTwv\nSzDZD4UZYdVuZev2fs454Ic1hgy4rMHKkUw8IpGKGVNgR88kfHxQXuwJtkH0\nYfMATVVMR8Zd5rlC1JKHLXRzvGqqIvrOgAaeyGDnE5j15bMd7Ji2qTMcpIyl\nnx7fhWMdMN4NxzfwdRJ3FkyqMp5TxV6mWV6vlK4OzXNYKX2hJfINOPuswMjo\nE0fyW03MV393NKEM0jB+tFnlu1iFLvFSk9/JNb/4L3t2kJR+mYaXUumqenhC\n8L9uWkkRUogLRyeQkIn3AFwmXgMbQuPBVRS10zR+92G+A4jdyiM8a/ndp1bE\nx8uNN9aHgRVgydGDVUo1o75L7Q8w5iOLMg+jpUHCgRYOXPz8iAQXdLfaUFru\nHftJznmdJJp7biyYTukeJHfQu+2ZcDvAr8231WoF7DjYlXb83uItrBHmqmYv\nCl1Bg1iR8ldtu9AotvrJvhVvjxGWmRaZ0f/fmo60uXH+in/mSa+bUPE8ArSd\n+nc65OxoGfA9bFmqOxeV6Likgn2f/WZl/Yr8URuJ9j04kPArDtN3IyguiEmA\nOzP5\r\n=IX7W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAiZAzbguR+QVrxNROBgTHFFwntYSvgyj0+WzmUt5RKaAiEAhDgZ+TJP8g7OrRPdSWInufjqrvSprAtToUDQdg/jBk0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.18.2-next-1601897472-9547bfec.0_1601897603061_0.8787700313653064"},"_hasShrinkwrap":false},"2.19.1-next-1601897561-86b9bf2e.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601897561-86b9bf2e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601897561-86b9bf2e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601897561-86b9bf2e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JZSKTdXjCCo8MEIzo+dzCNg1wPNXCF7ERIzoE6OdFGXeuXGD8vkAQTbUqdt/cMJfFFRtoIt2GZQqt/qR3EKkdg==","shasum":"5cf10708dc999675eb2aaf9c8793ef2b89b42fa0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601897561-86b9bf2e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfewTfCRA9TVsSAnZWagAATicQAIik1OtvM5eCP7Iavrh6\not/DH3JT2rO8cXlGbc11im/ObEb1sume+LfH+u/2N0NG6T4+YS9Arm11xu9J\nG1QS4uyHoHScYMse8GdJwpDso5WapjMpUK9TYt7qRfydFTBF7nLtDL84tGY3\nrclx9Cu8BOQO0BqwU5Wa5cwNQwG/fYreqvuCJVmJwmA5dLof0ANv3iNkug66\n+HeIb//9buKebwYRtNq17/BfwmGu2uy4r/O1rnNoq7X8PwK7AKTcq8F4+Bvx\n17vKhfRhTZyygG7F7v+lQoku2r2pS8ovmvrmVrEKM92/uwCvy7Mx+XAibbrt\nfEzN6djlkAiE5fqJMW2VcOzkqa1EIDZXiXt8P9w6MTpUX/GJUShCCG+efXat\ncyPGWMCpM4Ek5610f+vjF71kC96RUokbk71li4bCiMBV/zSkyxC6C/TG2WU0\nsOjkTXiQQ6pp8FfHIg3nQyMJCiARH4nX2WNnVidpgDGlUcY5oz+mobxkJ7ZF\nkyrTl1xqplkir/vULgBK3KG1dTxtJ3mTTlUzM2vcr5JvhcsJdlbWwt9kjvEs\nPUa/VmAcdztpZEDniYC+/YDCPBWsXvlH1nZ0rNKk1lQb5PiKFILK+GzhvofX\n/2ynPC5kipPaCMelqCTA52JuGWB3TDTu2LNHaGKvkQHDm+IPuN4BiSFqfoe4\nDrcv\r\n=j/ez\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCckB68P+leerzvHpqDZueBC3+zvJduCeb9XC+8AKoGHAIgc0kJ7cGmEw1/lkbMbhNg+kJXrtGBcG0D/2Co0MjzcGs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601897561-86b9bf2e.0_1601897695431_0.04859978991170677"},"_hasShrinkwrap":false},"2.19.1-next-1601897691-f1491ea2.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601897691-f1491ea2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601897691-f1491ea2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601897691-f1491ea2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NMdsbtvHEIGzCoapBJyrTVngsszYEwznmVdtLXoi8yH2wBV+crQ2kIjO1YUBknhqtjbLY6poLKjNVz14sz1kAg==","shasum":"0a135313e0a9a6908ae0dc0fc36e7a9c95d93392","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601897691-f1491ea2.0.tgz","fileCount":58,"unpackedSize":126864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfewVNCRA9TVsSAnZWagAAjhUP/ROcYUogKStxPXodKjRF\nSin2tD2hz0XZnJrenCXOzhAUlyb0zxb6S5/28ovd2gS91J487W7E4nZmc/Y+\nsmZOry7LH8j99XrQ49TCxhr/dUrcH7W8Gbgoro8sIRHlYPxqD092BVuzmdmV\nPLr/goOUFi6nm/+HEAn9eTgyIAT1Lq9nvjTQqdX0o8819/nnWoW13Fz9SX3c\n3jhVJ2sSXasA17+hmPXsnQskBIfzrZBSwaz90pm5QQU3+O2dadE7RywFxtMw\nljrhyvnM9I+Qg7FisZ98pUcKMiUsVXriyg92gKmHGFiJ9KZoyBOW6chv6r1v\nGuM0Bam8YwcUQjWI0DOXj+9ZqhnW1o7SD9nQiI5yP3wYpG3gTK+ytdFZDfOT\nSo9XnewBK5cdoCewdeJ5Qgx8Wc7mzhSZxKiWpBD6YR0aAFkQ8WHauoJBaiRq\nTQw6av8DOF3dRZzWplLV939matY2bLj49tQDWkVPXEH+GW2HxlU3cERx7HaA\nUWS2SoOl8RNKShzbJ76UznQl1fnpBXhFuPoyhfDW1c0LDDo0491z2gv3x52h\ne9JNvCDu8H6QSG0uRImNFbRTC/kiJaPRaXU/mJiFLh0+CAiTlr4tH5BfJkMe\nsyt0y4yO8dJi5OV0+UWCBNgkk5NMz1+El0BSUHsEE7TS30TtukOhZdFvTyqg\nxtO5\r\n=csm+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtg73DEl3pxVYxDgQuToFWtxuv3qfiRD8nQwsk7VuzjgIgX2exf96rh6XDjxBuY5iWrlvkfIR18tj5ie6B6Q+X8N0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601897691-f1491ea2.0_1601897805228_0.022017068824228492"},"_hasShrinkwrap":false},"2.19.0":{"name":"@xdn/prefetch","version":"2.19.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.19.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oySRHPWq8gEN7ZRF/ZxvehyvkG9LpR4cvvwLJ9SprXQFDyx7/nazTAHST7AVkIBNRA1RB5MSz9d/qgpP+1ggaQ==","shasum":"33d7ad4c7bdd7e3fbff20452f1bd5ad536cc560f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.0.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfewWGCRA9TVsSAnZWagAAKMQP/25z5h0r/Mc87Nt8xxq5\nmePqz6FnqiF69EOMJUi1UlxK4MMRvtRztCpKziiI5yHQ6tEOqWlju04AKUdl\nBRLue2+RPsSaMUxTkeuh51mwfmtIRGHMNb2gqsFazr1Fxz7zD03ERwBuAXyu\nzFbv/AyLR0V95YMP8gAwZFSq+jtIf91bs4YIVTxp6pkU7IoGPVkMop95dsWP\nereoNEsGCt6ZNWLdSxfICxI8noZvUSRHiqIC/DjQFxPvQqszHe5cG43S31Ru\nb1iFN30nsKMnfn9o2iyl/KWL3Hnhf2lNn+dT40lZsIDhwpiXnxHAeZb6UoZT\nNVuj1nRpzPlEkLk6EgU4y+PnblllPKIK/D2vvb5CYXjih4Qd0DjDQtkDiLAz\n7v11hJ6go9p1jxKplZHnjTpcu1gCSYUJlGMVkWFLmFxAC94ZAj1w3fKUcVS8\nwg0GVx5Zpjag8gestEKvZzdSOq1eJys+1aepMt224F+ufM6suM1MrJEOyncU\nCWu3xdzKShRaPrm1JxuLnP0dEXpZiD3E4iYMGzqyJj7/dzpqFkEgrzBus3Mk\nMTOn6RdZ4xxgiB6YU0Pdlw+pR3jWKXHfUcu28pYr4jJrJ2u8d4EkWB1caE1t\nDurz1reHtHJqwy6dGgodNZxYLuv1zmOfv4qx5fuci5IY2wP8n3PrHaVmgKbb\nuuvr\r\n=ksgT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtMR6ujzTit6q0NLdoM6bIMK8I5miP7xl9ma9dw9pJbAiBF0cOTNwVBk3iyRdVzHt6XiTgFSItkCtln1b6UFgFfrg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.0_1601897861845_0.6534322441154201"},"_hasShrinkwrap":false},"2.9.1-next-1601899240-077b98df.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601899240-077b98df.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601899240-077b98df.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601899240-077b98df.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8VgOq+VNqHQMXNw+jKTR7pCxf8FLO7w3B7H2hnhlaleW35f+dcIgkFAKkPZGaVK1EYmTPzWBglAoDCTtrGbQSw==","shasum":"4956df4aaa3fbbafbd0d98269f2ddd76a694785a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601899240-077b98df.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfewteCRA9TVsSAnZWagAAdK8QAJ6SVICzIcrjXDrkSdRi\nDfQ4A77cxB+/vBABew5dsS9q/lx0h7ixHp2irM8EPVDnA7lPtPntioDVSZ7P\nLf0coxF0zD1P7E51aGUVa/9u+Jx07Oi8KFBnneGinpEHx68UBMW9aqpT9bG9\nfblBI4skHhEC9IVWcKjbPB5hDScp8JKxRqPtv587lZ6R9y/+K3taAlfbYsSA\nvEpJuaE5SyJQqolI0ipZyaF6pqTA7EU0cm27L6N0Cfcv1DC96bk3sCooIrKE\nBk5RF7Vwsuh0JueutUv1DU7odpefX1w5tbADXzZR5nK7rCsg5MwVYbi6kgv+\nD1S02Z69YOxqZdn7CshOA8eWERmImANAG6EoJZkA3qcLjuai+cc8mPRnbw6J\nG/5MWRrj3EdjT/64IIs3/sJVU89S0FcoVmWZPMaW5ZbAu/teh1DzikZ2OPxD\n7Xoh1djh2svtItR2O+avYaf7BMS/4J5+52JxGPL5ZMe/B/ERkLNuMQio+oWF\nhi60MsxOKt+cs3erfpq6Yi7eLY3M+XM2itXoQH6KESZtZTTLMt91Yela9C6b\nWNnYAeFsQ1+D5ijSa1a72OCGXrefPsIa53wLO6FnbyRCneGRUZtP+fRIDTkK\n8iSUa1gcGFg/OUYry2XlI/T/ZCdLIedpvY3yDQQ9EFRjoE4XpR/PmwTEqUHX\nSpRM\r\n=uMjg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/2tYekJFfxPY8dFpcaC/UHnHhydLz9JvhFtZENs6KpQIgRJv0+0ihWdoSmi/pKRte3TkXzCfbw6D0a/frRbkMmPU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601899240-077b98df.0_1601899357724_0.2806457799649593"},"_hasShrinkwrap":false},"2.19.1-next-1601900047-53310c0b.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601900047-53310c0b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601900047-53310c0b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601900047-53310c0b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+x1J2fITuYkIFj3r4lWzmpGIyWK1n6r4zlMkvsm1YZP22IrjUYMt1P92Eure9Zw1RAqoiDAYz6OTjwFsl/jvsg==","shasum":"c515ca935f00acba0173aa02af9317c8e8950c54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601900047-53310c0b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfew6GCRA9TVsSAnZWagAAqCMP/07Si2gII+E4yn9yGEOi\nF9nuUSTT9GfnySgvwku5svsq1XEosM4ghjt0g1cYuUta8Qzn60ZlfII5gVm+\nfIkDPwtslxYsfnvL+ETrfd1fg/I0cwJxIY1feh42WdoJDT1enRLgVrmnxF2g\nU7Blud+EVWXP2YWc6/HBimIZvtIcU8mdo9nJiAP5nbBm2m3EYWlxgUWTt0wR\nP+ih5SWIohQEwXAO64XTHJ8ykIfQHx7DpQFlbqDOV6UcqUZdlFJV4uYhlkON\nz5TTdBNS4F7jaXZRB4X1DK+Q5TYp3IFFvPaHhJRg2OgP5XP0+Z04NqFzPHwT\nqTDn5N/1vXHiEvfWVe+Cy/QADCvTkoJ0j7eIULMdP1rWl/xAaiFhKQah/LX1\nHG5iK3U9x3qH3exY7x/e7kDrkh13DF/ghBJp6mi2K14Js1q9cdhcCTWKGAZN\nDSFJ1yuaOLjIay3/J/YILzqEDmz+iN7OG1nqs3DSLHiXmuzoC3qqTjlRnPfX\n8HyCghfXJZTJe5JAKocDNl1pcu9rIbayAtmYJe37HE6j2GUYJSuousJe+LI4\nSU/c1kKE13JagZvXZL1JHEWDZDrHhZqxt/9hvqJR7nYEO4lEP2fvk/7kBYUr\nbgIKU3WlFk5ieTTsRGBwMaYaykqkxXlfU4a0X/BezeLUos+u1wS73m2bmwOh\nBvJ3\r\n=isrh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEnuPdi05Wz75/utP9PWajqgkJzDLAY+aVTrmaS+8mbTAiEA2mIZrqYhBUaWW3YgM4gTes5iyq2YbK5Wwe9Lm9z74q4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601900047-53310c0b.0_1601900166041_0.5944042639481333"},"_hasShrinkwrap":false},"2.9.1-next-1601901620-07a3c74e.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601901620-07a3c74e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601901620-07a3c74e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601901620-07a3c74e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-guYl8KUJnzgJQp1ZUfidOkxj4t6lYtR/U6jmKQw+ceWvb0MB4eplU2CjE90vfxgef3EpGtZsz4tGvAUMw0S+GQ==","shasum":"7ebca890a6b28ec93cf799045c357447e56a822b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601901620-07a3c74e.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfexSbCRA9TVsSAnZWagAAv4wP/At90Tixn5LEPZUkOyPT\nP7dCz1upUOG1WnLaTrwD983/y2GBgZEDqKJIHKNWVKz6RSDE6hfTdWwR3eSS\n1Wv6zhvsk3TfqXioR/G4PN8b097JSJo6bq4II6xBha5yv9A3bIDczlYHv9KE\nI869sHoWgueUEqmDu45mCGilkfYLQCSa+NF3/4eNduOvPO5DcOCX6qMcT28p\np68q6tw5YvUMf/Ue+0KUnE7FWvgRmeH10y+b9kvGuU4kqosSHXSJ2CP1ddCe\nvvygFbR5/50U2I4IZrmuZlnRV4um7MGb0UWZCqE3caMkF/MJqR6PoRqFUnqP\nF9PhHf7cfpY6OTIse8fkZV3OD4JRGaNLaCiEUCyvi9HfwNorJwpRg4F9X2kB\nzEpB7JozkzQxFpNHQoryY2+1wzoOAvaoRq6yYyXPPrX/amBGLnTHYAqi9njI\nQ6RZ+g7BL73qWsI9obBY6TZuN+Bw+He3cl8fG053hnawuWRKgdobO6U6CR2U\nIoXM8Tc8NRT1agMREaycCWxoS1npF6rrf21JKiV2mXUj+YLsebRXuuqhSPjN\nYve/HHWGx/qu7/vUA45xzBaHDLD6IWAGsSuCx/+CbOiLwXT0LKGmEZ8Cr2cA\nIVfyrGBP8QhTkEiqvsE2GpqwsGHRjkayyQg9jYtXT9kGTSaATrt5Jv/SlDi9\nWtTg\r\n=iPE5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2Z9P3uwyTixNGxHENpSGsu5vRgJGLgRL+NsemjjfcjAiEA3CwVFtZav3aL8GnDb4GDOIsL3QQyGgh0XXIemYK6Zt4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601901620-07a3c74e.0_1601901722873_0.9178335247203544"},"_hasShrinkwrap":false},"2.19.1-next-1601902303-35009b18.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601902303-35009b18.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601902303-35009b18.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601902303-35009b18.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TjeOcvDMaDq+4vfJIizoQzL6C2IAFwcq5+g54K5WH8uCz81FMIk7SXD4kVgxxX9JW7qKXK0SBuNf9CtZY3/Tiw==","shasum":"0ced08310a0de3723f04f2e8306017b62889ffd5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601902303-35009b18.0.tgz","fileCount":58,"unpackedSize":126864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfexdhCRA9TVsSAnZWagAAng4P/1lCQ2CXJso2ql9eQQq5\n6oZMmdhiUuBoYixqrzEQlVtUWsIkRyzXfDgwsGOeNwl8Hrx8Cr981MJqxwmZ\ncF8/a9sKmilpwI7if9yFMAUBaDTlpO3GP5rlWNtg1E8FzsjV3ToXX1d52x9q\nXi/kFMgpCUUZ+qNTB1h5f+HHxQOHEfkDMwGoOIArl4/dxNxlMQTS1mbd+0NG\nkumkFVMrhBAXXcLv8YqYdup99jrZZl+jeNVaiBFmCk7qJ3DIHLSdiqQyFYoB\npS2c6nLFDxpBB+A2jtG8L2mzjwSXd/8q3ErCRRderw3QgeOnEMaVkvjOar3F\nr3jCqb3AW425ewWFtw7hRqcTp7Z6tuP+x+3SjftSWbG7KCXCHnH/nmzg9lbg\nAjAhH3jjSB8I60IlLoLEf4imqi/eGOU0jfJjpbHZQsCnQ3Xy73MWQv0+xueb\nbPwNbXMk9hIm56NdUz3SIHqQbtZeHeVq+v9PrDmlwjly43fVXu1xlVlS815K\nlHDXHX5b9oEUa3Iz8gCTsS3RR1dRGqVyhg97qRYChQRyZ9+0OeLZbqhV0ej6\nrVDa8xBfBpdluxJcwvF44PoWGi7Sy2LMW1lek0aqahFL5c4MRPA2lAN8NCzO\n6/HR7GCy0Q0GsYVYK6f4/2QtF92s1RdcpLERKGaSRLCiPJTRelmiZDw3zdu1\nb8IR\r\n=wEr0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdlxf26DKzSXq9flmicmHH6EwfBvLBdYgHqm6iVAIPkQIgLmLqiNWGO39H1b+9cqmcVqy+UrdDxhiZH6p3bqramfs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601902303-35009b18.0_1601902432547_0.3837182185897243"},"_hasShrinkwrap":false},"2.19.1-next-1601902621-f7dc6ec5.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601902621-f7dc6ec5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601902621-f7dc6ec5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601902621-f7dc6ec5.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HlWpDEZncLJGpKgqJC0lwNFK3ERvYiN6OL7RlS6bHqR0tkDjdYIUUnLjqgdhHrBFjC1yKP5GeM0wgpv1x8iylw==","shasum":"efe8ca2beaa01d60cf8baa355ca990a04d435b3a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601902621-f7dc6ec5.0.tgz","fileCount":58,"unpackedSize":127886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfexisCRA9TVsSAnZWagAASkEP/jUBdFS+P9RySacHjXLV\nUq61boBHMIrQpf9OiZWR0fpvG/qOAZEA6zFFXD7ZB/AyAbOeyxv12F9pUsaH\nZAYAIlizwvqFJttd2Oljhd2ItdcScXsXrV1UGIrNcl9AO9MBpKesJ+sAJear\na8f3O473O52elF2daDBc8UUpmUKlL4eQK9Yv1MtUEDF8Z6NZd8nA3Q9jwFkF\nyhhKVXKJYbmTKsZnWQHtLXvL2KCbLvy/B6COIgxtRJgoNscJfhZiQjm4MVc/\n6gs1yOGIh+vKbv5EbUSbruldx7FYGN+JcTkybrhvEVAHkEe/TRQcW0i4n/SN\nwUdfmbvO9NCgIGyIer0AzOvkQy8XQn2HdkMG0ZrmWzCLcp5PXLHKcRbtTnpd\nfcANEWza3/yflc9AureZKqrNczDgmlr62irUCO0/BbpHx3nIbbRCvc+yMlES\nMx5h/GHXLGmD45cC+GzzclMzmcRFspR/4WqsjdDMHoJi3tmr7hSddYccK/rz\nNTv864cAuct8xlTit//VwKyGsS361R4OWvoGAG5xejNf/XxBhmEMgnSpb0DX\n3tal6oJFyd9P4qh2tYIT022jrsWvjae09D3ZneTC3ZVLXNbmjdQqVVFcV9bo\nGuToFzhVHtIuYbkCLi+JR/m8C23d7OsS3DVKsqgRNtrfAw2WiGDVLlLPGnil\n8Dg6\r\n=4gr/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEFXHgSlZDVcmmqT9zjBtJWTfJn763mmDQ8ukTAM8KnjAiAGQVGK7d13bs9tBCl57rPJdRuwlyuHXktgjiezYL5XJQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601902621-f7dc6ec5.0_1601902763649_0.32069115817089333"},"_hasShrinkwrap":false},"2.19.1-next-1601907413-e2c35323.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601907413-e2c35323.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601907413-e2c35323.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601907413-e2c35323.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-G1Ze+Mzb3xh9yXE6fbpzPqkqVYH35RSzWqD7CIqAn5SiNo3GdRfm+89JZvNxUEL0fEaiLC+ZbdV0OZy8/y+fpg==","shasum":"35c7c37f65b01a7578cc54800485a5f151a9a3ff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601907413-e2c35323.0.tgz","fileCount":58,"unpackedSize":129539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeytJCRA9TVsSAnZWagAAZT4P/RWWR+Ge4N/5ObIUGIjc\nHWU1QnfeGOKELauHjC1x5YoIQayotulueIiCJmmIIDMYN4fW4KfzjEN6sPY9\nHBvJXhFMOoYgA/SVVlL2mHIItk/6pHr6ewJBgldV68JS1nRuEpJPg09Glmav\nsRIDZ0jB8XatsdbsjvL8NP50YVw+rOC3y7b/xJt/1AEwUld24sUHo2twS0Qi\nL6dqsY9To9QX1z9gIpwh0E6dojf/Z/2XHywmIgRl/Ye7rSK1h4W/qrV/6EEA\nihT/9QcafZW+BWGoQB+6cw2kGfvDjvTiRKWnOkD70vY1RKcYUfO+936vlhjD\nkUUUtfCHAC0MIcYzxDbiKLrzd4SsRHazUST42fb3zJ7stnttHMD4BhM2o7qI\nZ8+baHz8OjnobVjYIFVdhPqCPdWEcY9v666/QyHGsVyIULuhTW0DskWcfIRL\nFogYC3Km0k4x0IuNy8/HFscPtwfGLdDvHi6iMT8L1UJJT2L7ZgICCvzjq6Aw\nsVujFxtNjznJ8WJ9CWORpGfrXUPjCW1USRzlZfcaRmPpOyxx80LVhKX91KM+\n7bBtDyc6DXxGf5YTTbm0sT+k77xIBrnfXzbliwNCaqhPxu2F2vTElDamH8fx\nEkRQYVVZsSykUY4o6lR3GarnNYjAsa1knLECu9iUlXW/pmSYFObQXmEwEadg\nTjFm\r\n=fyiS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBxwTAGugfws0akDj/7RioE+lqTlbFSf3LAcqbJudnvBAiEA+K3/SOB5I1j4IquVLst7T1yn/nIwOteuk7mUnJtK1ds="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601907413-e2c35323.0_1601907528897_0.3518608043214515"},"_hasShrinkwrap":false},"2.19.1-next-1601909321-352a72e2.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601909321-352a72e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601909321-352a72e2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601909321-352a72e2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/e8b+hZVf4qeVH/L4yJ3STeRp3IPsHOIni+okD0fBz9pE9MBBIr+sr8CGsxw67Pw6rBK8xgqpPW1NfY9gDwFrw==","shasum":"fd3845d5cb4067eaf19e03c06308c4d67bba2765","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601909321-352a72e2.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfezLOCRA9TVsSAnZWagAAixYP/1E/GmYqoXV/QG8+pm5C\nhMbbu8QXElozpwkJVTUetMyQavi/TxK6ZCgsrV+PL7FUlrSv2Y/A1VJ0q15S\nhtok0HyssLI4hJBtJP+0vde4PakgBqZwku2691JfUUkotbdJBCw2j4TvFdNY\nNOXh1/aTf6ulyedTf3i7bYXmf7OmPCkM1QOCo//xzIo7ohx01lcv51dKFbWg\ngizHZlPeXNl6HiF4uuPim4Z/zk4W/Y6HM5U8OdAV8OxH3PE+o/s7V720hGNE\n9/cOPOJUlV3FSTby/shCBRy+BEZMg99Q1f8bL8rmWWxdm1Ls0lRHqKZhTcjJ\n2bQOwsCrRXZEDfbz0DDo9XdUsHQqIp2LRtSgsIhhc7pSn+N36w+5XjN53i52\njVGwcHvD25UhEeU5703ciQ3Hsl7sRlz94ilLFHSKsPbVg2r3vjCMGvkcrokA\nXtarQ/chLu1HhejdTyboNA7XGB5udr23Ai3Al8XHbvq9/EFVqfVYEeMQnrvV\n7fOku/fdWH8IRVyEyJAmhrDEUwzXR3ugZThXtC7qfyZesJ+doLb+tf3duC7/\nrLqpKnBo5KdOXhbWTxvYvExHfJOO2/r6rSJHyjYb4XpOOyPyAELpuvqwnR52\nA1uEkbo3W6U/K1SfZjfNhqXObUXEIfTecrtbs1rmOd3J1v+tc42jerPLBGHQ\nF1Gh\r\n=GTvZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEyYFWd+lMpCZE9De02hDTVEhfJTO998cpAFpJYHNMHrAiAhK4znbq0IZR20TgY6Cm8z+ehO1OT4stHZRBW7PMeItA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601909321-352a72e2.0_1601909454158_0.3507209171164727"},"_hasShrinkwrap":false},"2.19.1-next-1601910519-352a72e2.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601910519-352a72e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601910519-352a72e2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601910519-352a72e2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DjoCoe3eFOaltXwPWuBUWKV7eFq/Ap2VgrY+wA6kUvziyXWBYtWUjEO8yYzivmiK5tIC1BeB6ZmHdAWjFNk94w==","shasum":"20aa7f9af9f8524286976cbf17e0228299944d99","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601910519-352a72e2.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfezd8CRA9TVsSAnZWagAAP8sP/2+EL4zT09sPL/9owwYB\nd8JHTPS+Lx63WCW6gqrNtzp4TCkC040pPwhqf4HJ/RDeWzMhNzqmJN2q3tBU\nh+5kEtJ8IPyzE2E06aqvN1m4lm8IvxUc1d97AAyxDruW/eUSox8aiWdzwiTT\nzJnFiVDEgd4mv9ATG43jsQT7of2V4Mhywi673LEzFuH0qfjQEPO0xhDdxu+k\n+o7WFORbhi2MQgmI8KuR6Eob9ydDR6WyDGT4v8BU7tekp+yElyIkqFj29Pic\nP6wtlLglQe+KTte/wmwMjXQk6LGB1qCz4PhHLYzeopgoCcVlMsq8Kqlw9qo7\nxJYfgNcOhS43NmE1jsQ+fwBOvv8sCK7p6Wca4/wwnF3SuMsOSAb9gLv9nnEa\nDEvtgJmxIhOcafy4M6tQxSUaqbUa2sa7gtBwiqqCt9HczWsCdcn7/S22zaS/\nDmGltTux3pj4ggt5N8NZwr4KodX9RF0TA4uzI7VvkdWfNoC/ePybVcicw6yk\n8HZnl/A4HZV8kLFVVfJjoRh92N2/OHU8/2SZGX4f7So44C3faLxoDXV39nCy\njFMugFF6An0ScNl8uzwQH+8eEUDm1XKwczhML3RolWZaTyZPKsH9O6+/XiaM\ntmrG69OkY3R1FqDzGWoYhcZeccMnPoOuLeLaldCJcAsbI/iYqXB+Uup35Tht\nltQS\r\n=ZyAE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGl+i7bytZ1nr7f99v01rbEtD9Ad09I13n+4KNPlJ/3+AiAev7yVhxVHI5dssKeVgY238ScTKknqWzAM2pYmZ/9A6w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601910519-352a72e2.0_1601910651693_0.17408852292294985"},"_hasShrinkwrap":false},"2.19.1-next-1601912246-f69bf6e6.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601912246-f69bf6e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601912246-f69bf6e6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601912246-f69bf6e6.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t2GZeGq2rdeEPin0N5JK3WXz77C1chFdsPWyfnFvimDi5XVyVab+GHn8JVJoE1EWyNClqmFakkM3W4zr4m8J7Q==","shasum":"50fdad8606d172ecad229dc9f02d6e25d54ae1fa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601912246-f69bf6e6.0.tgz","fileCount":58,"unpackedSize":129539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfez5ICRA9TVsSAnZWagAANisP/2e7ArYbetDoWOlomApT\n7ajLz6MMnIxBqQ6T0t6CFbok64+dtPnv6hY1Vfj5rnY1n3KAa4NyWQ/KkMoh\nDZNWJamFM5Dd7XfsA5NEM2DyH5Z3d57Pr3EgRvYbxvCEEH9GEqJVjx0J7tCt\nkdaf5YzIp6S5gHYG7VLEqUxEgYsP3T71zp4+CazsOuP0ZUzw4KVIW6gXgCOy\nUVt967zDzh+eRWPiapQwyfemsa3njEw7Qs8TMeEsgenJIEh4nisqXhTL+p5E\niEU27Umf4uUNjt0pFNtm0nuCB1wCDihxQ05WeA1UNba/2+3c4hd9Hlmi/BmG\nYm0ggvi8wV3uogHI4mtfwupheUgZcfU0XDeuN45ZqC2yWOkuJDQ+sztjTrxa\n8Z4sXj6fHvqI2YISn8ptE3yuxG3yO1YpgH1x+Cz9wAQI9KE4JPguuxGdIEyb\nYkJ5P2sN2PhcVkKl4Fst09wQdP00mcbHoFjRsKG+uX3bgUOd+H3CQrSm5G4B\nW+mF3XcrvF8GD+N/0mfe++OAHCE2/8RQkWuh0U5a5+AGfMmNrjMfzOIc2xR/\nH4vVI+6b1VNoBrhaL0GmhBVUHCPjYJ6ympQaO0S7kp8iONs9uKyPHXi6KJI+\neN0Pq7BX844x2gWxtUegWS6D4A84BSrzf0wELEJtCYDYlJ16VamLUDMQ+XOm\n4q3V\r\n=5FUT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICBSrKMrUZOmry441batDhOFy8xgwFDAI2ctWQG36DvoAiAs0sXyBib7kCvJ9InlOCp82HUgvhQhZYYAj5IZk4SKqA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601912246-f69bf6e6.0_1601912392187_0.07902924999093752"},"_hasShrinkwrap":false},"2.19.1-next-1601912793-019d0713.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601912793-019d0713.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601912793-019d0713.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601912793-019d0713.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-bmh8xS4tdHMzrrD8vAn8cLi0I7gE/4sMFLXOUPqBTpg/s5M/9aHn0vKpHyQ6rm/hMaIUTaDQvUd737gdv5meMw==","shasum":"999cffee074e00184af25547e0c53a78ca3282c6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601912793-019d0713.0.tgz","fileCount":58,"unpackedSize":129539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe0BgCRA9TVsSAnZWagAAoksQAIO7tM7To8u+7Lx9yTOh\nfcXIr5Ro6ToPmW3n1Bv2XxJvJwZ779e7aGjzEuJaklfltTtz7kD19NLUiCqw\nM+ZlkrwZ9Skbykv0//9VwxBPfB3SslgH1y7OcqwfIAkBGV/38syMEUDIMpke\nzPHVSue/2ONiG51eBRixPjBFa0RJHzJGQ9KX/QOFujzqdzZuJgVMmj5m9tHa\nVuKJ7UXHBPZ0eZNfKXLhmxZKZab6tSJDNOgAIOeXnwHL2fgkSUQessjuWlLa\nCHRzADIR97Vldo4wtC8jaQVBd96TUq4uTltJC+a/CwQPu6aYpqjYktRxwC5X\nXcnKo2b3VnwGR93DPW+vGTTEVk2wdJqw0Ve7S45PahzgG591uto4kaOfQWKV\n3xim/U7K/el3VDQ7GiW8eGJXbFl8DRJA1SSlBgRMvl+0Svgsa2tO0eszYgoU\nkgGP4eaKEn23ttOCgZXgYRY8SM9wiU70+t9X0+ulWCTbNmlrDtLtmaCe5Y0R\nd07+TiQOAaZChp4sRlp+lANLzWWWln6g00kh0phxNATsXJv2QxiqBAqNZcKj\nMRyva8gNi4ZV92rrEmf4JyRBYjoNyX4cub6RUzrNXF7RNxR1gzyPuKg0dd9z\nmX+zCngCrbE9ekbOyMrtpVrGbAqqmX2nfRKwkM57IcC8v0XayWJJNKO4LFDv\nb71s\r\n=L8St\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID3I+tlMZhUFzS5PoRt62rf5eIOcAsjLxTPHBjiMXHBtAiBAul0eF1KINBhAWZdwZtKkWKf7fsAehqb/uxhCMAmr/w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601912793-019d0713.0_1601912927729_0.17441091075594772"},"_hasShrinkwrap":false},"2.19.1-next-1601918002-3bbb985b.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601918002-3bbb985b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601918002-3bbb985b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601918002-3bbb985b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6vAdsIXaSf29oVZqil7OyL8gWQ1RwVCOY6tYjaRm3QO/O15qqNLt0y51ovJQ5s7HGtIp3SA8oaNX1qyYTo78Gw==","shasum":"24167d712ac98bd19f14cd101eb7a0c04e561ac9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601918002-3bbb985b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe1SvCRA9TVsSAnZWagAAoLgP/RThD3kd6oienMqRIwzO\nsSYcwW5ZoXbIHnEVjk93CziceXgB+XSlQwrSH1IlmqsFz5ldGrGZttm/qh8I\n1e+BBGyeCVtnHoMqnjHs4jY3S4B9FiFZR6xprLyEy+I6Jrc9tHTKic91GnAz\n/mOMgeajVcEYSbH3Vj/FBf6S+ctdirKTxJtcVtIr+XSid+1e/Ms/0HURSDWe\nyL9IunE3O2bk+o/0TVfJIcGk8YfL8m0+CTwN/Ruvaa38rGazS2xI/TfgZJ12\nRrG0SCQoXlM5Btk/cjaZg+Iez8OxU0XBBH4E1dSpl+c9+uily1jvbvQq1VDa\nxZEBfXwO8qh9h+Jnr5pXRf3Hc/Pp0Y2mZQ0B80AdViVqJqMrF3629TpKE1oS\nDWvFIMNQGbVxbXGrzxC96A4S1ucAnWcPIWVGL8kdYjyFRz5/5nU9ySrBb6r8\n/K70kvh9biafWwmFoB3OSpnBRut4X+GyDsp4rUVX98vKiO+ZM0vbI28G4yJo\naJqvGRr+msr0QS+2MlyOliSOvHaZRspPo6r0NY8QU7/7wpVFIp2yrB+Iphvt\npOB4ZfYeqq53yjlkQNRUGpUFnuOZNKYx8H4b9Xs0uwOTw8XFRF0jSrXHGzlQ\nZB2WTZOKKzxDki+AXA9aa8vTIj+hxGpjdF0YEPyOeFOrZPjJUmAJKhWQv59i\nkk9C\r\n=XoMY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC3EC7HO8m3/D0G7j72t3eVG9Q7lSIf8MPS5nwUTgxetAiBG0KVPXDx54aSZPDcelJ2cCa/iICZ3zK9vr4h/JKxfHg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601918002-3bbb985b.0_1601918126996_0.7411352326995102"},"_hasShrinkwrap":false},"2.19.1-next-1601918263-aa071856.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601918263-aa071856.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601918263-aa071856.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601918263-aa071856.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uCtyDoM13E3b00QuhzqC5Osua+9TpOJWhnJ7lmZzeWdFHQCt8P1JE/6HYL4p5MMoZ9KS42PKYIcPevlDfDLyew==","shasum":"1d1101f612a35769731d1abe5db77ffed77a61ab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601918263-aa071856.0.tgz","fileCount":56,"unpackedSize":108019,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe1WwCRA9TVsSAnZWagAATYIQAJf3Uguut3mdSF7iSa6R\n1DDFCL7GixcUam58ryRCM1hu1MONwq8RtnuTGTS488VaC3jc7o1WF0W6ESHK\nDX0WA9v9T1wbDxMXypvmbMSc2Bl4hga5ZWUrAS3x/JjZ91t9qaBPPYoGhtkQ\n30+fHlVx+5dUVXrE5Aid6Zlv3+QIjpf4mRYQzGMMuY4B8DXOXSCaO8/F/9td\nVBNCt0fp/W3bXZdpoex1jRcOIhrcuo2hkc2QQ3l2wUCWHI1DJMdZHw8FVkt3\nKo5ivSG1vRPTGIMsPuU0F3u5fBiG2VKV4F9aPLm5b6j81lRJFmUgIqRp3LDo\n+MTAj9OuEUlJwvWF0FBISZ4aQZlOpHSGDHwnh0EyVqctWZwckBqsyRC1uALK\nyUoACm70tpR4N2nlTou8wm91iQFJw0jYucZ+GRcsjBj6S4fGGR6vOOaDEMLe\nKVRaQ7L1YPoRzNKMcEHBqs0rl9Bm0qK65uE3Zxas/uk51/JLbjMX7u5xgzoR\ntoizdVIw7hQhv1H3fxYTQ3xVnWAnqDXOowFifc42dONjczQu4DTzVhputIVr\n1n3yRB4Jp5SKGjQ6jnWYvYBDjZcUK7BHnDpVqUn3b9LWViLiozP9sk34HTlB\nTjJXzJh8/PmiGh70aq+y1732kfdEa/LGpAg91x/IB17cBt5/MayWayZ0hldM\nu2FE\r\n=Jt+f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwxy1+O3Rwpbu8UBj8toYDM+gIR2ZhvlJ4kzv12P1usAIhANujmdlMDsONRnWDU4kQ8WsXymBmMJk9mYEzE7uh0Opa"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601918263-aa071856.0_1601918384173_0.7120934605583638"},"_hasShrinkwrap":false},"2.19.1-next-1601921056-2df17476.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601921056-2df17476.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601921056-2df17476.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601921056-2df17476.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sxkCsP8LNyGQpVVsqfmORJY7qtoVVKuPtMw1oGVtzmi36ha/pdDlSUrxC7zkCVMxhm6VJ7HT6tV6/LkL308rFg==","shasum":"13e992f14fc640c4c9241960b8b3ea6b72705489","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601921056-2df17476.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe2CkCRA9TVsSAnZWagAAwJkP/0JmmdKgGcW8Mz4mIyPq\nd6KgwUvCsXKhuA6xc3GhBpnxVft+JH3uZsbrEuqzLIq6n3pRIBBx8wROvS6f\nZwstK/M3NmvBuCDtJUD299eeobVZSQ83SvYo9YK9SQ2IZX0maWmZre4myZEA\n2tKxc/xOTEFMwiu9ctkfOWp3TVX7WJHGrD/7T0Fiw/FwMkxNSM7MPexb7EOu\negj8TLX6KN65mo7PhENLZYojY6IHTC3JVJsQ31L8bheF5kHtWYmQBxvjvxgd\n67RZBrd9NLKm4y3GtpZyS/SbhjMNp/1gX4SRYqd0YNiDNJX4JTXBQx3nDs2V\n0mIjk3qhkolBaRvSI2UJNP55onQDMm9ryY+rz0PSZcEL1/KLk5k5UA87y0An\n4tk6xEYjCbcXZJMBfR0iq+b8QB9HThL5h8AKjfuQMYG+V9VbdDfFhDoB1YXS\npqZ8N8WNdVLwVqWJqV05psuUGFRDl0hmWJcwVShkuXitg0LwcYQyRdMI4MTm\n2SSgb6qRwkbGhryYaNl5nEXV9sqGR9I56/rKLPJiT5Gp0GKgSuAu+kiCINI6\nwoxuh9iXOjr893NPWW2EOFjhNyJOjfTL9fkF5Xvara+dxmAl11gRqd91C+7+\nSu1oio2cCboA2dPL6ffpejnfACDZKxmL9wbdcrtOCNKtmCQps/G9B8lUJY+V\nrBgN\r\n=SS/r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIASIvKfr9UYIEi3DlC3SD6GmybKrH9o+BJ63j3FvuxmlAiEAkrgdD0YIHigotZz3gn1pPwwysD6vzX4T9kNEvCSOUf8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601921056-2df17476.0_1601921188398_0.6355539750738"},"_hasShrinkwrap":false},"2.19.1-next-1601921074-00815d02.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601921074-00815d02.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601921074-00815d02.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601921074-00815d02.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0v88bFkmeT4Larg1tOiF3Rzqd3B8ibKq1E6RjX9Za+xIBTUWM0bVKU9pJkiPgmOzFzE2kbwdSzOAYolLvD2ugA==","shasum":"7e311c8ebddbb4f231d176eda90a4d771a73ddfd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601921074-00815d02.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe2C3CRA9TVsSAnZWagAAZI4P/06nCisZPFvR2IGc6Pbk\n/XItB6IB//XygRJpIESAEjVJ84LdYwW4hrwSCI+OMAKXQuR/PxD49fRMYQ45\n4HrdPd5TUZX5Xcbl8PfQAnPOjQsG/DqGhIbu4ayCh3tzZwCj8EI8ZczXkgXv\n9Ny8NVZGh6bzA1fP492QyVKzeytuA6u1Ed9fxuoymzHgwYrF7NrwIG0RxIHZ\nqH2SFzxuZ5JKlTloL1541WcQYboDs8x5NNIoogMl1lifmFtaLWdIh+/Xq4+P\ntj6Ke4Ez1A4Nswwcb0632eOHYf6yD5j7c5YsFmj3sP991cCu8dWyjoRK9qig\n5q/4Gr/uLg9ccSAPNMiGKgoM4nVS2Lu2fv8CExB7AxPZesoLM//ypifgBoif\nxng+m4TqdnDqL4T9mUJaKXmBu1/r9uYxkOsOvC/WSmhl/huZYo8YiV8mDQUG\n1terq0Tv5GPzMyW0MLXSsdvPCk/cBaq0ooowkNEqCpU6VhKPG5rR4KEhHfID\nJ0dI8tQJBHhNhekcRZEzd/5DWVnCKUZDljyikS/25cfCm5BiEf8hojNLkZw1\nbgfiFIEVHBU8a8QgHiABCgDVA+qH/sX94IrAE3m+9yayL42NYahAA1lSx9Wl\nTTq3pmXJOWz3wH/i74zCrCuBlZJ9Kl8Y7Cb9+6uPxWbm8R8+j/CNKLBjWQ+q\n0QPA\r\n=MiJj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAiOJrOFJIYPr+vIri/kjQgSHBT7zFz7IuhA5tlHUYOyAiASNWzZYMt5HvWG4ZyozmQBF4h5flOJQ3sSTgctiF9wAQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601921074-00815d02.0_1601921207553_0.21755318710149973"},"_hasShrinkwrap":false},"2.19.1-next-1601921808-ecd88171.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601921808-ecd88171.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601921808-ecd88171.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601921808-ecd88171.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ayTCcUKx+zi8mG3Fcg99moSb0/WKuSWOAYea7J10QkD7vqMQYBBCM7HG3aAJIxGGXcPLnSPzLM4Exk2Q/Vo2eQ==","shasum":"673f426332bd09016acef7b93bfe8ed5df970c6d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601921808-ecd88171.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe2OaCRA9TVsSAnZWagAAOLoP/3aQopTjl5FANQgBsZLh\nFY3FWJUnVCR8hG2KewRv01PT8Sd5wIOyv+buShIa0q0T2i3CiWqWUq+PWaGF\nSeFUGexzn65t/qykMhqtlzDuaunKH0KgjVUNhx9os3ASFcXvRl26D2T/dZ9l\no2S+HKK+3J9RztH/DsfCMUAZOlp6pzUNwR15CD9U7jZZYLEQd0sNJMjudBVy\n1aSNxehD9zb37ypEDpHWKrCfR1g8s2AIxrDdOaMN9QytCMduHOnp0y1HKOeR\nuAjWIkr61xGo0h6wrW8aa8hqdqAx5VzDcLoTYQRjQed5MMGjCY1pDd8TnC97\n7ZwCVuq7Xa3a0rrWpzsogDrES75RK3xaXOsXjtoJCQTR9xvQgzIFVZsfAUSf\nQj6SpPWGQoqMqu4IXej99jQqeuM3Kar1oCAZhaae+ytzY0uMEvVKDr2gI4Df\nh/2edI07v/ZMI/8cpRBHWvkOMIuRu/mYGN1mKlvjWenkOon8fcSi4189OwiQ\n1oVTqei68N1eH2RvvEpbwNbkyPofhcos63oIMXMIyuTLjUkNvwVvVJWfvTjE\ng6KcaGZibqT7Cph90fXlYhRfcM9iZjYoxKzQHG9jyDBUexJs/PySv++IYxP6\nxwRL4HgSKM5dPKWxniABfXc5/wTNXAd2IXUVmA3yowd1oR7eKmdrmfX10/HP\nPEJO\r\n=METk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1MdTb3EDsWQz6vUiK8NhSsKvg9II2Tn2eYVCuZ3hGWAiEAl+VkI///n81D7zcxXmOT+LlRY7L/v6pC227mmNoL5o0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601921808-ecd88171.0_1601921945553_0.7357547908525746"},"_hasShrinkwrap":false},"2.19.1-next-1601935729-de821597.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601935729-de821597.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601935729-de821597.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601935729-de821597.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-fCvXt+Vw39XlVTu7DWxCJMp9AEk0Lfg+IZzY7pWdvtQi2snW+Bw6svxg6vxnTab2TwjMpj1w1gu0OAohCEMxmg==","shasum":"1db29937bf3eb1a72c7bde760a28d88488b790e9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601935729-de821597.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe5n7CRA9TVsSAnZWagAAz3YP/j5Jm5pw+/n36KSMck7m\nCeX+GI8R+KbrvppX/FLk7OvNACvQu72kHvJXkq5VTfxUiO53h1oDoYOgwLsq\nQT2AXXkWvX3E9fqUsEVgSBI2SJbWdhgb0gKQ5viEOQp+cq1VTaccVoAviEh4\nIlokuK2LI14PaFZWleKQ6HvbEaguV9o37VWpgz8gpIxoLalBDbjXOHSrzDg2\n2fP2gNv3ks1Vql9w3k0qO+B12xxn932GRubR/GxralpLiMFvHZAJ8HJlB5YY\nLs2SP6Qwg06ZuZ9MCCTLTUUEtf/C/nvYqjiStn/v4b0BCbN8+xVTDhaHql99\nzZ2BaQUJDxCOs2SWjHcAqgSs8A8mHh/7Bg4pcKZXF9XpWSderHjtBWvd0dLW\nGTCcDAaH0OXeO5dwegOBcwxLUgCqIRi24PwPNEoLq7t3iz3zXly75l8HyDu2\nxR5r6IaVr2gBdqvIOUkBZVEh68DUJTiP9CZkztXpF2ENMsAIYbA9mUp+vwcZ\n6dPyX6Ua2INST3mBciwCMyUIG3iKL17+M6YJO1+q0Mo7FCYgsAIG1Ne8zyQw\nK9ji0Sh+Yk7yfPjTRAbAm8SQaH5iiiRkzutk/71wEbN8/Xzw/bfqgsR8tYdW\nbxw1W/dRN++2fKCn8BnCjle+oXPvbNlxS03wrJ3i0UyP5DDfawKuvuxTgaMV\nGNi1\r\n=vtui\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF5mil4AGpHZYfO3aqBFzUVI8wcPwYKo+vJNbwIXtAdlAiEAgwInJ1OOdPK5l+DdcZ+5reMSKS3gV1z9dSFTNHh5qns="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601935729-de821597.0_1601935866697_0.01721190162540487"},"_hasShrinkwrap":false},"2.19.1-next-1601940838-bb5907ac.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601940838-bb5907ac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601940838-bb5907ac.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601940838-bb5907ac.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-j9rjdK1i8eSl8W4cKU/mK8o9Tldxf611VexoP4HJOAi7uXcQOi8p1KG288WqnNUAr2jmZFSakpcKkdGsr74L1A==","shasum":"4286c190a6da5f948f6d48efd2e462b5264331ee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601940838-bb5907ac.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe63xCRA9TVsSAnZWagAAWLkP/1npeFRVUDPe5Li1x0cC\nEpZlYjJKzW5jXyzUlk7UWAZdf66KozEdUHk1ygeS98I0ClbHhmn8qavfL37D\n2em6V4Zk4ldM4Syq9IVJ8Ui9mtGkzZSOiou2GHwAG9W5b1bwDzu47Z9K7DN9\nsHQgRhy6kGxWI3YH19wp+Pc3QmaR7QckmzoWoIbjQ2CucaaOBb6yAyePc/ld\nBiWBrPsNHcNK21B9JYSP5MIDhhPTBOjUL+f4fMAjmksDfYBVLXAOiBxVSHGS\noVgCNEiJuBNPmkEr9ixrJgy5yyuP7bPeTq0FwZzMTgJVn937Oi44dE7ascMc\n2kOvsq8jHf8b8i5zCM1eQ7heUi3Fu+8P2gtUAUYrAD9IZ/YE8JeEPP9sqZZf\nPZI7oFbxjaX2he+QEMHq1nN3/CSJPgVoXs0LHdR1WCnPoVS7eOodgd2HaKyU\nxrZQijmdupLJrqWGy4zSIOHinLCHBCJKF5gbUcZ5czsyzLGkiF04Br4uWn17\nbo3RQXmCDMA186IHqacBJwdxbJeLe4H5cTViMOoLvNuSrZ3RStMS2F5c6hhM\nEOL9TMwzE6TNkGlN7t0q09uKGypBV/nOLQ3wTGtEyux0vg4+yoF3WWEzsPb7\nNu2PG+7mekFONXMa8zvGxXj+FEee2rIwRqVc6jzk2JR4heswTh9Pv+k7WQk2\ngSR8\r\n=WboJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAOOIK9y6Tf+L1yl7QTbMNZi7APyb4lw5xc+i4CSJTLQIgdv+0iqSuzMt3pTylGGJLhkLr3L1ZeT4ZEZwDlp7+v+k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601940838-bb5907ac.0_1601940976673_0.03773027969375464"},"_hasShrinkwrap":false},"2.19.1-next-1601946383-bb5907ac.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601946383-bb5907ac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601946383-bb5907ac.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601946383-bb5907ac.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NNLmKPaz3UILOfGMbTJK4/4X7a2w9urkDTjQMm8T06Fgc65/6CGK9rJcsBLpMccYOrR4A4sYwicbjVm0hYZKQw==","shasum":"db31d113247bead38d574c6c5d7567776856d176","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601946383-bb5907ac.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe8OQCRA9TVsSAnZWagAAvhwP/08TGEI2cqXvaoDacSZv\n33Rfy1LZ7F8g6qKhJMibHGz+2fyIFvDeNHYeWOUVkRaDGVHLY+0FVyi9QChd\nLgiu6hVlwi7BQ2H9Uh1k5AZXRIoSFuvFwX00juki+ParH2AY6csTJvOECn8Q\n/Agk1/qCPiv2KM2AU/DSe8wpBwOdWUcUiCjmWRkDs7Ose1Y1nuuhgY55iW8f\n7OqJR/FRv97VaIwwAxvo7C/CWIDKc+rjloKHuNB4gSQ7rejUsWmJt134RbR5\noHGzvvPNhHH+CGtEix6TNRkGRl3fvzNybTncPO3xzgfsL19/BZp/R9bdOx5p\nvgqxetItUZHo4ntAp+115uY2Zd0y39OKXGSa1cX9Df2eOjRmbvqbTyxgwqV+\nLW1Lc4EdDa9uvHGc1lvoZ1gsxWO395piFA69cW2j9qpDhLAmiIygMi8tDEfo\nu/tWPrNg9dQ2jRj/Qu/ivdoe9cGcSKqXjaG0qt3T2XUAa9dkLYxX4jeCk3ZR\nUldwauyOJ3CKAO3LBo8lIt85jRBhSM+TLWVP1Mg02xUVE3vYdQrLICBU+vdU\nLK7A3YyE445DODEkSri88FokMhfqDl7V97atij88LNEaqYQoE93VxxCiqQGT\nIBr6cvnB5jGjISd9eQZg8JLzZhg1/0XI81f7ss2fEe5Bogyh4uvIyC4w8lui\n8mSY\r\n=DM//\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJsn41sum9Ni0wtG9cPo3ajQk0a5p+EUE7cVhWFW5lZwIhAJDJHVbzdRACBmphRmNKKXgiRzIMbA1UnqvDQf/xmiYO"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601946383-bb5907ac.0_1601946512387_0.2754314996039027"},"_hasShrinkwrap":false},"2.19.1-next-1601946950-44b0ca5d.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601946950-44b0ca5d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601946950-44b0ca5d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601946950-44b0ca5d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eQfnEp24BMVyxM8jy7crMtnJUtF20KdcsjydY88vS0wJumy7T+w4vuAM0Ngm0v7es1ey9v9OsYCRxC6bpf62Yg==","shasum":"b7f9d3e69a6d5b9edfd19071248c27fb7984267b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601946950-44b0ca5d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe8XHCRA9TVsSAnZWagAAl3kP/2ZsGrFfgNh0RmjrjuR2\ni50j2M0VwY9YpYKwBmBK4jmwvK3nQt58Hutm6loEy1S8aWNO/tdKtrP22bAV\nN1J7nWAyxULUSIv4ciRjQpHbeU+pFIo5jeeNhRk7G0BzloEjYKM3O9IkBrNN\nmnDA5iQuJQgYJxATzau0RVf+Cr/qnr3bTkvnQrt0cLJpHOuaZ655AbbGxWbf\ngM+jC+rToWkB8rJtgE5XlZpKhAUeLc1z9q1pCWqGAZQyNEgrsoTcKa5SWLGn\nDvEv6o6CeHgzk2B2nCh14YHlTvxFJO/VqQFogX5BfPyUla9mG/dC7usdgO5/\nFxIexeUEOfSNJDNoE3TD1wffVjJym7ljQYzqyOGhKOm3VJFqUIK/bQmHMZsY\nZi6PP1oD5s3yfVVY0t9AEN+hsZhQ6ixXvlYx+1QIPc3ZNG4mBd/yZrMQXlLQ\n7WNPjbtipSL5+dCQxUaToR7CWocQtMVOKhWZ8z5h2yIKW51GDAmALOb6SsTj\ni/uhO+Ub0Eo3t/KGyMxkEU99cS8X0gknDDype7kSmp7dy/FnXYtinvW/+k2e\n0tN4UiHy+ovD0LS0SAZdUsV7HDeIcqPJv+Dku12znlmJ5JT/GgiKM9SzL1Fr\nsaJ3+yzvLX/53wCTIWwPqlaNizFDo0pP2RCe8YV0E965EtHhobgRuJ7UzAHF\nUeoi\r\n=S1Sy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB1v746fpv1CKPO+0zetzhItCIXhBRxqZh1nJrMqsSMFAiEAuBAxovKX9K/fnvbz1DxuXMVZJsznS2IrHqXxJAIigjs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601946950-44b0ca5d.0_1601947079157_0.6191937105161638"},"_hasShrinkwrap":false},"2.19.1-next-1601948413-44b0ca5d.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601948413-44b0ca5d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601948413-44b0ca5d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601948413-44b0ca5d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ZprkC8qk3hOvBYQUMC094rInHNRrgIntcJJxAqrylqvuk1Cxs6oK3TFo636HVNHxvTnvvvhmH96XU7ceXqYVgQ==","shasum":"f3197dbe5a4e0dd64ed7e534cfe39811078f7cbe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601948413-44b0ca5d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe8t9CRA9TVsSAnZWagAAPjIP/RkBNeYlgBc2/HADIcgQ\n5gnYLZywdzxNKEQxTjQovy5rJla6xpVonz0+Xdwqt/xJfHIOyovnBaTfdPoS\nOUL82/x+cx1yDBGmJmV7RMpkeG0TTyp/n/N7c8zBTq8GJWad1/vmgu1GRjxH\nlhYX70B7F84rvuiQZfCJEvjctGCOyYv3xPO5uwSj69AyXzQ5nSOdMBPx6BWB\nSZ9NlS0JZoUSs2OPdr6xunez6uubh5FYtJXCTKj+98IDuuumFNTlozFDzHqy\nHd5IbJ/8AF86NcIQlSiSlf8KkYbub0YjgMEHdjj6+QOdtLLhZMJdMxovQSUo\nbiyS6NPyiwqIwfA8StxZJsVz9siwcV8aERjA49rBUilNMgsMjgs2lghWbMth\nnpkCyjwyqPRJCM9NgOst68juz254u/0wq/4H7Cac5zRLUrNcUO9cNzimr3XK\nPMXIEb+CszmNKgdDb+WeiAp4aApTdOnjLG7pPu0s93e/9cnKEayBRMTGQOhR\nn3Mb5l7huoMSslU3T7GIz9uDQJ8DMiC86dOz0PSsKRATcACjUgqU9xyCzGZ6\nClWvCV2e/rXSsZ3g8EUm3R0UwAbe4BSuY2Er1uPM/FyUucAVEIZrKFhNIbKl\nRhwpVIWnVGCmkMnHDlD6zwgqLWR8V17rDcjO9xbY9MY8BDXG6n0P4KnL3GeQ\n1LOZ\r\n=ufRJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDpesQLZzkHZ6jTuYROkUH5uBHWc6c8ZPvUp9YnHmmbAIgCas20lHCJC3TjcJJcgp+i/7q8t50UHuA/rftI06G4ag="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601948413-44b0ca5d.0_1601948540670_0.6598117909789003"},"_hasShrinkwrap":false},"2.19.1-next-1601982851-4a7f23c0.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601982851-4a7f23c0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601982851-4a7f23c0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601982851-4a7f23c0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xT9Ns0N2J4c5KmbJcY0sleHsC45+dEnnm4VdvrklOs5WYWOUbjF4NftpROTVOJeKf6c7t/f47mWcVK8JR0y+5Q==","shasum":"9f5c9b2380b2aea4bb78edb0b5405565a63cbaa7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601982851-4a7f23c0.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffFIGCRA9TVsSAnZWagAAACwP/19zp02L1xRRoEt6YR+O\n3Qq4VMhueC4cS4PzrWlAS0cLr8IahxPe0kfMBdlroP9dXgMaN1inlAz4C04r\nV+G36jYGRWu0clhjfuzL4qjo9dNxWXu2xs0snoM+eDkYT+atwxTuJ0+HGujo\njHEoUQfnwB2QE7GYbuPxf3CJpR7BpntFpP+Mcp6aOOXqIJ4vl8ThmpBUD3n4\nNn/r+50kj/4gT0U+xv8zLKbVa2ODgU1NJe8dM2XyWJ1YPOKLFFvlXIfYlhnq\nbuczZl2mwfPO+MlaO4crTc93NH7KzrriMPV5bauNvw7pgAufpCFJSoshYLPY\nWUxMn8IfttR7B+9GtoTuoKP36FqMGCtMSWVu/3tJob3598msU6gkS0Rij9SQ\nNhxbVPIzNPOvOTM/DvDhIJSV1O8wTGWjkQGyWnhvEi+J7eA5Jx9+vTlcH7Ej\nJS3YabNafMI73DRDBpbZsiEz/u1TfZE3sDjFPp9OAZPOH+1atckjyP4Lns8G\n7afAONCVVgZ3P/rljr0XHnbdaWsaORQmCkZOZpfQmuUthOfq5hJ77BU1odMk\nlGTJ7ZtHZnYXFvJzeOhCqfHQeWtvsPeTIvYMK0KZjvJfb3v/FVi1L6rPi0yw\nC9IW1H1jvpsh2cgUu2pr85qZqkeCGR9h/q0TFnesBmTJEpyprjIoZX0DAUs4\nZG04\r\n=Bfpl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBfPx1TnhG/Y5HSS44SZF0MQnRMvkcReFtSqfYNDTyVWAiEAwgt8L4BF0jQERC1SSFNyjttX51cvZ3MlrdW+9V0IJ9E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601982851-4a7f23c0.0_1601982982033_0.3854640930921187"},"_hasShrinkwrap":false},"2.19.1-next-1601983459-5507edb4.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601983459-5507edb4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601983459-5507edb4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601983459-5507edb4.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3kbkLa5QrXLT66VOxgyc8i28Z96CPAUJifIICOES8kTE/TjlvBr6mhh6bfE5Jfb02D40LsZzxTj51A1JpELkLQ==","shasum":"bc5f8c69b2d2851428642c6023e446a46eb31a4a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601983459-5507edb4.0.tgz","fileCount":58,"unpackedSize":132487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffFSBCRA9TVsSAnZWagAAVrgP/jsh6hmHMchgvdlPYtVo\nuk2MENaQhmwEAbGL08pSA1Xxr/fsT5yBi/ubqiXUDyk11i0N6b60NgjeXBXZ\nGM1TK0TsoQ+nnVvBaVWvfCv/BvWYe/MuX1/KDSvqcRIwDMVp+42Hjn0ugRcR\neE5e31BjEm4nEtXSeAhpszckXlQUg3gFbY096UKfcUG3MBgPvWFMARDbzpLy\nC/rsB1qsoTc/EDMRW+zfm7yKS71jLPjmNviqP1TU1fdjY7YRl1hg9e1eAyrP\nEcAZ+LTMgrzw5z2bKoo+lfUhaLrHWQ75MyDTRgNfFfxskt8/gg6yYlzW54J6\n4bz4O03LuBHoISs/dwglgrgZHhaJr36y4ZP72BbHg4XmqadcH201JJFZ9h5C\nZ4qFUP+10cL2j0s1psZfcnZX5MCZnuGBdpsHz+eJ6/bD/C7G1Y40lDOTH+Se\nPOBRYPlQDAktXpZ2IlyHSmgXfLdBSiWZ82DznedP9/8h4aW+oCIa+5ewsm7J\nsc3/rb+HhH9ux5vS+oK5ojlyyBi6usLyA1K5wBzYYogcxFgm2oZYKwGXVhzo\nv2tcvnKM7C1tjuev9SquckC6I7hw/x6B2EF3W47/J64bGskr/NJVwEca30S9\nUh9qHOh5cFv/VVq2hBGB62ac3z+EEWfm38z+wCJTRQnCfbNTQr+ld/Oo6jK4\nfhIV\r\n=actE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSBImk8AYmFCFLWa0I9xHD3zG0DZZyvLMj0JM6k42JgQIhAI4aiTkwBVKF4/Jx1GN/18M7VHmfoVWHBi/1g439dLPE"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601983459-5507edb4.0_1601983616567_0.9879698953121374"},"_hasShrinkwrap":false},"2.9.1-next-1601983659-55890db0.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601983659-55890db0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601983659-55890db0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601983659-55890db0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rInEoL0OXaXrxboK5z6qznIkqNiPKoOro180xO5iCXnCHUFwpJpZHJ0rlB3S295aizaY5RcSgIMd4vBEdo6DuA==","shasum":"69806aa35cd62590cfd4a504982a4b269578ccf3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601983659-55890db0.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffFUUCRA9TVsSAnZWagAAhWYP/imiU/U7iQNxwxSKKcFV\nB7SOvjnjULOx6H2QTD7+M4eehfkN5dce/pRb5bAI8xzHU9G1juKTr3o87CpG\nbLmpsBxGAMZTODzcyZq8WD3WbsrY82WNzk4SbL9+By7v1mCEAOm1fRRKpWSu\n5xjdgDhS08a6NK4U2qqU08nThmeQgiA/doGHobsyEAzPFIFahKMAoGyBKan6\nx5Q/FFl+4zqxHVhLyoZCzx9w93vi8kFLx4svXnHatO5sj3jRFeiwZJPh532D\n5ksQMHnunwJaTbgKDAjW2i2qf3F+mrvWUfqyfJcLzfKb/pg8pkfFx5oRZ4aH\nsSE3RrYnQrfHo49mtrbkGPFhK9JfTbnUZb6PT3bOdOMiIpqYN1w5JdyEzd2C\nvsODy0cmOmcsYG9JixULUFw0OUK9TJO4oCd6Tgongl+yhqFayJa8IWaA2Syv\nhiGBg2ipJQhDGIFkklweZPxrUeAKQ0dmlXOfMawVRtnLYkylGTxo7XBW41vB\nceQRYz4Rv1daQXOjHzQ8pcvETCMgFjb15l4hS5y7b9dS8ygBA7KJPQG8bXBv\npMteGk0KQlSFm9ibEBtLPGsBK9DD0LE/LSm+H6vb1HIHaXemWy1RCvv+zQ9J\nwy0zOgod0Si6xZbneLE0f6b0+hZscEd7G4H3xavDAb1igEIq9xQF4yUX9y3o\nB//T\r\n=HaDQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHwsRdOw87opJYWGuhl9TlGUT7QJVE6yZbvSLz1uRGjYAiAMCLhceOnE9iBMPsOEU+MiC164+VE2MFTD13MW+oPYJA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601983659-55890db0.0_1601983764208_0.8750010460886293"},"_hasShrinkwrap":false},"2.19.1-next-1601985536-06dd7f78.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601985536-06dd7f78.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601985536-06dd7f78.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601985536-06dd7f78.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rAYPzS67N28Rgcw84V63JXp0juDX3hqM5f+GHd8QptZ5mlL6cK16QvXEYkLT2f2WcS7HqHC6awFOCrGnCTiWUA==","shasum":"686262827de9757de4c110f01a6e1d4b79965473","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601985536-06dd7f78.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffFyACRA9TVsSAnZWagAA2sQP/jhOLmYGI//4uLGyiEf8\n4ZnY1BTxQy/iE2MKw0XdxwSyN27gb7D4fG0RadG15GV3QWb7z/VufpcM0SE6\nSM452rgOPTJcrP+2VdRorPJkUoxci0n8eLWsnGXXvKjHpki/JlA8JBKmd1eD\nhJ56Erp93aMmQWR5W77WaIhyrfw4xuUdDndyoMNMDiJ/UwlWRWD83XB7PlJU\nrMFX4hvQ+i0UwWqfc+4DeGMpifm1svAwLhk7Fe54mGdJcfzn8S7qk1JDfoSg\nD0mik4kilvgNkqdRDR8VELwyE6WtUoHROMlc9iOR8qZqHNz4SM2MS/ivKjLZ\nY9oIj6PbVSqxpcznuRx/+JobBD9+R/Vpw8UciaKuyYILItpXBr+HCbqcGSzf\nb2X303JcjN2dP96MPjwUpJRmQNbTpjZMTCDV47G71E8+NpSpJlqyh2STf22o\nF2glDHoKCXvbYodnEsCjjizdrjthP29qlxh7Xd1E18Xsgh9nbjVcAl06LeSh\nbvb3AR+9kdXsJK0QXJy4tXUDB157B5+CMkcrxMpEzrR6okkljXP244eFrXZU\nG71NNhz1gxcU3MBtsxdcKmxCtN8/lwU7yBHrU1UbghhMq/E+90r5Koe6hBwo\nCi3AYAKoenDb4yT6M7+Ts2m8diwkxXxRxMLmhbEJQ/zfV1P+D4Xl7lmFuux6\n7u2G\r\n=6g8a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBIefLQ5rHcseR09snHs7cwQ/GaScCjKBBe04VTxrlfKAiBk0oH6HY+PeMsEQElweOxBHKVhE6kKwF1XyUGcfZioQA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601985536-06dd7f78.0_1601985664117_0.7470911336914781"},"_hasShrinkwrap":false},"2.19.1-next-1601986007-7a705d6d.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601986007-7a705d6d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601986007-7a705d6d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601986007-7a705d6d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jESBMfJ1BjqFdJzuv/NwCncGGqZvTgi2n1z4t1MjvZvcS8uslT1mOsNjCDhtR/errrfcyQ3Rf/I+KdHcl7TAvg==","shasum":"041fa64ac2e115f1938d160b77ffffc0ee45139f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601986007-7a705d6d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffF5cCRA9TVsSAnZWagAA2+0P/2ed8u565WCNcY2IbRdB\nKfP1VdKnPVRFic/gfefCrBZD4LXOVPoY8C3yaCOUuvZIrrnI4mcV37t88YZd\nCxw81G28hVGuRjvNNPGTciJt1iHvC3+m5Pfjv8CqHfs6DkqrefSbOlqstw26\n2nhFGPVOtxz0PNg2yTDN+h3/NL6xzrmBlpPlEfqAFRKJ+uwhrdc+CtlqjAgw\n6obg+QUUsyGGJeKEoKsGXAfHZ3J5McJTlV6j8PuMr9gQt9JN8AetvQqyvtj4\nMI+0SrrvIA5FydZLGl+lq0Gejq27tw4r3JRs3TvtXh5IsuSTs1QxvZrjzRU5\naDudojD1iEIqrfmXGZSUU3bsv0KznjJ2TUA7IrAZDkGqOqZR7EC452kV6F+j\nnE3w2KaLCXhTcYq/ERbB6dgvyI5grj8zH0gyZrZcdC4uFFDsZ6Z/pfflvJ9L\neLlb5CFooCYn2WxfHJUPPwGwvw9qLRnUl0Bj9LoszfAbWJzjkrJwtYSXJnKv\nTov1HJgzmLt3oK3mR62bSmK9TdcR0pcPyJUSJ5Tww4cXG3JQkyWWj9pGi9Zo\nSD0cUj/8S1exogUnCE6gqApNNj7OMGtAPP91ATZwDPA6uhPRNwKw/fpVfGUo\nat/BQOURXJlAnJE5if/VgnycfJvWUwlqk62p6LxZ0hDgbDhDZ5un23rvrLy6\ni0Jt\r\n=qS0V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC9YIgDNMsJ0C86v8YqYxdgNstp+rTW/4n/qlDxRFlkmAiBU2TfRJtSDI1CWbypKzRGc746HjUZ1Ar2si65edi5ziQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601986007-7a705d6d.0_1601986140409_0.4501181217907133"},"_hasShrinkwrap":false},"2.19.1-next-1601986850-7a705d6d.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601986850-7a705d6d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601986850-7a705d6d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601986850-7a705d6d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rmH4MmS+7ebXL6WMeOrzAHO0YebAqqN8uxv1gfDnXQ5JDrhOoDxWMjtGu4UgyLEdchz7u40FabG8wcEtjHcb6g==","shasum":"2480b3592f964c6c95194b79893d51d69aefb663","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601986850-7a705d6d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffGGvCRA9TVsSAnZWagAAbq0P/iFZ2QAcV8n4oukTfjcX\nj5FEhVT7F+tLi9u//VN+/5r+w7EjirKhEJpMn1ynh3eQ+s8CfTXkY9kXxbPo\nZGG6ahIF7DUgmQDiCL0lFkjG02dNAoh8IfqQ5SkP6gLhgdk3ioRt9Rzyl5yY\nnYR4oPvKotiff8NOAKsqAlvT/AhGkxq9susZ9b+dW+bCMjfmvafZV2L5QPGA\nAVErM014AhGxuH1D5LJ/7h/TJXUCmu2x3Ny2tl19rekSawX5Dwv/ic43rWo9\nUqIxmbkzfEyuaj5d3VoNyw1f4Oi03Q8jchyKegiOvbCi6g29z6Mdw1XAavLN\nQyZkUct+yPvBdyX3/TRfPKTYO3yKGkYrkcf0ZrkuVHYg12IemaZqcG1SyZ7u\n1bA/bwjpF9g6wWnm6z9oxMbPJpUtzR3Uokb2RuJwVzgZ3S2ws+xgRbqQYNBw\nxq5EYtmcmvFQQIihHWbPU5OqywkHBUGp/t/8WIAri+6z/sqYsM0BKiTRAiOo\n4fClo4QgX1KeXHx7XBqnZ2H7I44qym72Y3PNqkx0Nqva2SUCrz6Jsac4yA5S\ngVDGKoPEbPxogALZe1U46HIoOVcBjJXo6dYdC706hWMEG4NmKt44Kkc9noSj\nZvDUpHQryRiDLi/jZYn9IdHw6igOTEHiSS/7EwpaEmEyoMuDNfEtY3pLTWl/\n61zg\r\n=Ojar\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID3j5i0V/s9ojGOkyWg4P4Khp4IE/emcLZXYGEFlBff5AiEAzcylZSJYEOJitjKRp6/dgLCji+k7HkZL6I91jy9BKr0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601986850-7a705d6d.0_1601986991029_0.519986485365614"},"_hasShrinkwrap":false},"2.19.1-next-1601988344-7a705d6d.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601988344-7a705d6d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601988344-7a705d6d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601988344-7a705d6d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kfQG2YroYofeOZW/OPm9XhZeBD3xtedw4UDl3R5Jn8Jr0yhEcrTsy3FrJGj+nICz+E+tun65bCMted/J5dCACg==","shasum":"b2b96baa74a99ed89cc2bd9a35559448d6c9a907","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601988344-7a705d6d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffGd8CRA9TVsSAnZWagAAQbMP/AgbdPLsugA9JlnXU/6V\n4KCaJva7fq5EKHLMFIgXCxOX77NUzL4wX1/Ii3SIWOidCfwwxbP8bCCLdez6\nr8eb4zJjO7ErdK9p6d2DHnRN/Iag2LjR/IY165Hb5GMSkLokc9yXXWIaifp5\nkCn+EutQD/Fdeql3ni9jW5MJbU+fwZVPYZh8Ji33rmkEZ6d1pqQeCFC45B/N\no4kRF1GQBBPOaOZS4mfoO8k8Y4YmIHKxKZ4/C58R4ZXLy9LqNm55rR0zYABG\nKb18q8I+5zKDvWqGoT4he1yIV9+MMvLB2QLAAwyjFL1qs+xRHaq4Fv7oZke4\nFGI2yZZ1OBeSeoYwB96ZxSrlYhweZev8JzePQgl2+kPRXJ/pLT1U+EVs+o+4\nwCGH6BCm3eX5BHf41ZfUqpLdgHd4yqU1G1631RuBhDWjQO2m3EuNjxBNGN6F\n1dMNzv6JVvp0/Mu8VDQeiSOGxLGKRITr3Ajv4kYvTT5od/FaLGqcifecTdY6\n+yF1TTzmrWgasGoEuWNJhBeVYaJqtmcKfBk7C9Y/FJae90G2YvtsIfWxpivb\nFENYQ0qS4SnjyxlCIOdckhoP08+inOcCTGeL2IEeMbLNYDyEp4RoMr4OWpfn\n7PT+PN3bJTfkdMVEM+KtKoczNC67cJcL9E8muCKic6ZwnassOfXogD345X1T\nHuHb\r\n=H2E5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvjA7gF5Cim1DbG6a8BrseePn/L/u1IOkomr7C0eVM1gIhAJncmwNjRgXHU/gxVN+tOUG8PVQSvJOCLIpDkF7Z3oDx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601988344-7a705d6d.0_1601988476237_0.6125932706482817"},"_hasShrinkwrap":false},"2.19.1-next-1601989075-ffc456b5.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601989075-ffc456b5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601989075-ffc456b5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601989075-ffc456b5.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sNpbsoy6S+cqeXWR5vUgJVM+v5yemk7eqwA8k6ZZSpOpXzxskFfthE99Z3UmYf+NIgEwlk5iTyDCaCSowvlXHg==","shasum":"fb8508b24a54e43870c6527a3c4a35bdee849015","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601989075-ffc456b5.0.tgz","fileCount":58,"unpackedSize":132487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffGpaCRA9TVsSAnZWagAAenkQAIXxzRz5Mlvth7AO//WU\n9kDe6LhA+I62ATGRx2zYtCcLmEfWSssOYOavU/YKibOEg6ohfPZ4wIHU0TjR\n872qOx6ayyJE4pD5cG6g5/DuHehGogpsWo2KvtJUc7VNZE6BFulRRz34RMa5\nyn4aonoWaZtOmn9rwMXKOfjEj4KqQywaY32LqB0PG2hWvXrIh8WA1M1/t+5Z\nmod6dAuhPV+HllHMG0QoXticUOnnopFgPyuSsiU8KMiAio7kFv14Bj7UTZq6\n7w5erbgdIocEWbOomAwX7EhD/7cxgKw1fpOWmjA3vFt46QpCIfY0OnqM2SPt\n0rzxvWqsdvWhFYk0jOW2OUdauY4MxypPz2y4CR71xPY8smr9dLYNHKh13aKn\nGG4pSoSZilpMYDgcEdCToSPbA9zYuALRGv7jgdnwBNILO2bVGZFwGa/Q8iKM\nijq9r9KjSpVibR6DR6WbLkT+YF2T0qP6URvthedebktHELfAAl6f6xgF6UTR\ndh+mytj1dJ57+rnmBKhp8BqADCpvgAXAPB/oKiKnxPp4VmpQ5scFC9jdfhJ/\n4Rvtl8NOn8CCMw1HlhJhjIi7sk9in2D8ELgkBMn/9y5+cdN2TWp2k9IVjUf/\nAmdEwaN647dNqOR/WlHJiRqIIhRbvs6GUqfMmhIkuiY7B84IxOyCJow3bs9p\nSPR0\r\n=qi/p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICkLR6pk+lsD0KgVNmq32jNTrstmt5RkqAvy9U2Gvq0LAiEAmYYTQ1sUp6KK9RS8nWZvf1TUBaW21xrvDLUYBaBKVNY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601989075-ffc456b5.0_1601989210038_0.015150609808310067"},"_hasShrinkwrap":false},"2.19.1-next-1601989128-bc4f73e6.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601989128-bc4f73e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601989128-bc4f73e6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601989128-bc4f73e6.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MyVcSp7lDNroseotkUGaajD2ON224mjG5H5+OURp+2ql1xEb+aq4soo6mAwUzpxYaeZKRkPjZ1m0z8m4Jbjt4Q==","shasum":"16f5a1aa35af63f98d900b0a63492fe6a987a43f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601989128-bc4f73e6.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffGqECRA9TVsSAnZWagAAckAP+gO/oagDwub1oYzdAK5g\nJsEY0mOP8fH6Q7WPFQl72UmmApT5i3Xvx+ekgphlNYx+LXmkfc9LRXTQiCku\n7cFU1eEBtCpTbseZX9qCU+IXJKPPoml706KOZxl2G8gB9orP2K52cwPkKlj+\nvKyjHdRgjRBxklZ4m4W2CpfUxk5t2ktbDVJurKHqaQz8o8AXfWlLYDGRecXY\nnuu8eoaMoJ3hN8HWcH4305KB0ZN+P99/PnHwtryRyjuPbRm51lVoiMZd08rh\nM8rGmdPOce74//FQVC3nO5bc51BQlRAwqAZT3GwBezyCCKUN4QFPFC8vZLKa\nJDY8CcC8fx5zXI22Ku6vOM2lPhvKAyys4HermPG5Z9WbXF0jOMMxJXIYGIpV\nG9nq4XYZnb3p43EfjKxdvoiPHwsiaFJd4Tb2DZE1wxhneJR1GLtGAhQy5rNE\nfaxIVM6dQxxesdPLPHOG/jU22DpIIG7Tk/1fcLGIgJntBMS0zXr17BmkwJqZ\nb+8/KGtSZR/CIwtNTSgXWgBFB2vPA1Dgz5XbuU0vEtRpyhhoixpseqCn7uUk\ngJafMXJKvreM0T3ypH+FZEQ28UtTVM5ZkFeNElJySn3K8x8bcepuo9FFo4Wz\nktR0fzNzMZVCp+mUVaus9T30o6HusCxEFOLTZu0rKo+XZtmKIVRnqT3oB5wf\n4qG2\r\n=iIY5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB+sc2RcQvTJCgqaVaOGlB368UTR0brivAdurup+tQXfAiEA8v3dEsmE9yqeZikKxSKnrTeqcV+UAvdPT7MAIeEj4m0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601989128-bc4f73e6.0_1601989252245_0.7742852347332936"},"_hasShrinkwrap":false},"2.19.1-next-1601989497-57cb079f.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601989497-57cb079f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601989497-57cb079f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601989497-57cb079f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2aJuhioNsKUwcI4a82/OSqw2Ma9sFd/vlTvh77PDH58d/TLzC85t7Ol70sXz/49tAY/TTu0fDvnYAq8LEdyyjA==","shasum":"a56e9a09b8dcac07a618e0fba54794d62c219d8f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601989497-57cb079f.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffGv/CRA9TVsSAnZWagAAjLIQAJ55gyLiQwgDcurvT2Xv\nzVDz5hN4RgBknzWvirLLQn5yemcz0czkmIvgvFrY5CzXLaUJ+DepWl/6gzq2\nZ5eg0MLMsrVAG50mvJxcDbSn1xSVTtRtesgYYkGVQIl4Ymg4JT9EBs16b8Vw\n6d8u31rABPW9pfuUtFUwGyUQzhDH7w7jWERj+UvS3UfkFk1RzL9COz0LYNtI\ns1fF9I2cK0JsTdVvCA3BYuv5FUMCow7qg4Iq1e/Qz/VjpK3GMUgzgtScf0VN\nLD2V1ZNifp5VDBYfei67hfhTiz0bjWk4VoUQG3PLlT816CrboiXAj5BzrsRo\nouy1cnT2AFRX/pic/Sef4qaAY3Fr+9I4iePRidf3+9d0LdSvfZyBYw9SvLDT\n9zdY+a18fBfdinLdEs/XNKp/3D0qq8dbS/vHbt/mv2Ni++/HcR8cFQ1cvkwl\ns2iP6WqQ6WfmqBfD5WJA/sQqpU0+XEHFZsXGDayFiEauOSuKzJP8XtN7X42d\nW7dyHrblWUxBONoDaQVX1vCw77kGM/WT8c12CVCbwJsMqYjjRqiS4O2DUtTT\nk5/oqxnd0j2OHI919waU8Py7zWiL/5x4kAM56yD56+eL1D8nJZQYyAa18yyD\naIqVTld3vKxYf8aixNEvGC5RG1bdrlEfUiXmv64fjOhiahN0RdDcd+WdgO02\nlIgx\r\n=Lx/m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmwgkM23YJL10XYg/lgiauCZ+uDpqx0fYbAxSQAY4FZwIhAMqIDX85VEBD+bRQxE3nQgKjmGW2z4cCPxdwCbj8cVN2"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601989497-57cb079f.0_1601989631292_0.5166262283775018"},"_hasShrinkwrap":false},"2.19.1-next-1601989496-46fa8fe0.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601989496-46fa8fe0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601989496-46fa8fe0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601989496-46fa8fe0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-El6wqoBpjsns918mR8Ypgl6TCY3+QIv2FUMAyazF1nsLyxzfiubM5BZo1NHSdNqBFLZD0JXJKUUAERKAsSHziw==","shasum":"5ad2db1861ab7375faeba3360bd85fcf1b3b3d75","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601989496-46fa8fe0.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffGwZCRA9TVsSAnZWagAAiXUQAIhV5j0rHq+MmaU5qwWq\ng5X7ZL02MO/dwrOY8abZs+R9b0VIpNqojgu2fSN1CWt4N7S8S63qMvzElfsx\nuOoP5SfJ77QONYCV2xWOoi3LzQGmudV32If2wkH21VjJ57rHoDZzSkWjAf73\nNipXXHFoJP6Pj9hrVjkbasYIMgV2QcT0wvmZM/sqqsAYQE3nf3RRRmh1mggm\naae3H91fNkdetwCrbjPTP/CTMT6yI7BjhSANaCAT6Up4T4lIRk7dylUTsUJx\ngI1EhIa2QsS/kkv17jQG66+9A0olKfgdEqMC4f4ar1OjzU05WDlC/ppnf5ed\nVAwOfQjaP+YnfQEW2YjdZHdYd+Lq5FHwDdqnJ0YSxe3rhci2hRH+WK6cJNbR\ncmMnsiOJIx0fSYjchyssTFqZKcaNY5TqsV+nMHM5QNcXeQt/4vqq63O+sxKX\ni3Mv/9uqvMAa5GmKlFDGtPyMIkGOVRMzZEj03ZQhadBiNQ52gjOnqrznNKl3\nZAMa16sZARZNRbfL6wfJxZ951/lacMKRmUPrOSGouGGqCJn/6J/YeV2ucclR\ncDwfnI05/qskvy+eycm8xIGFuNHvvfeKxbVA17xF5rfPKhIKbvFl53C6K9Q7\nnvKsOwJEEokUJ8NgAZ2z5GDdSK0Szx6ccon0UEFRuFqMvCkv3ueB90KpayBz\nV4oy\r\n=lfQj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnMv8RaNqcDwQiP80RJopcfW64faMpUPEXIgMCrrS0mQIhAM/8TXic6x3ICgWKt/mO4bVfpG05TuFXRhxnHl1GqyNY"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601989496-46fa8fe0.0_1601989657375_0.7438340473355329"},"_hasShrinkwrap":false},"2.19.1-next-1601989899-a77eee75.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601989899-a77eee75.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601989899-a77eee75.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601989899-a77eee75.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HfRqMCOuPIWj7zNpOkAwEleUF2YKVgju0E7ffwKdF/oNfZcPpn2aZr7xECvZuEfSi8B3OKfXbhmGQ14pXQOwfQ==","shasum":"0d30c3ddca6bc041bdf93322b469c286c422261f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601989899-a77eee75.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffG2OCRA9TVsSAnZWagAAPPYP/ja5zBjOh4Z8psst9a2b\nvDdZH4twGfzSskbtQ170UUS26BNElY3uduuF82Z3ZRYyUPV0slzGh2D7IGF6\n3vSgq/5UGh0t+KRmejuE4mfW7QatNvgdvTxKGIAIV+y98a3t59C4RYaYohAO\npShSlIH/+7CpBCWx7zfH+g2E6SX59riSkQD71aOXc4UkvcEgDrNO8hiuLjDz\nLmeu1XT/cJOoj8uIEb0XnnYVXZDWaxQT6aBLisU387hG5XV7Uc2jqBwA4fq9\n1SwamdGpdw6yp5aMx1adOi3dWI5pbI4+D922ahKdAqChDPV9mp+aEdrtCm3k\niqW2LHrvJGZhv76VHk5GjM7IGlne8uu5koFAidWWIxnNT81UtRugIfgd1ivr\nk9J0NQKECTkj/L3lsYHbRKHq85UXVNySNJWa0TyPQj7syXjm9anxaXdKkx/K\nS+wXStgsfzfL1PuZJFuiEOFmB/Tvwvlkjv1wLYJXRnCTarVTlOCAJdraAhEN\ns0Qfj/VwlJjpSvxEQeOPLxIQHj7vndEyFDnC8993GsVNTgsP9ealPjH+xOIw\n74WHQyxNlPbzKzR8yqYOQ5ePj2wavCXEfWfpoGV38tsX+zgxhzPk0wpfr5N3\na9qep1JUBjSg7Pq4YTp0zP8hoy0esprr47x8GZWcJGkdg03OsbRVCwsI4ig3\nhzwC\r\n=DM78\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYA6xjHSJlOnA5vQy2sXx5wPkffWWvfgxYfuVcvG4lfQIgapoA5wynVC+O0xv/oNuutx885UxHTbfY4xPwz0D1BsU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601989899-a77eee75.0_1601990029951_0.005265830950687889"},"_hasShrinkwrap":false},"2.19.1-next-1601990261-c880378f.0":{"name":"@xdn/prefetch","version":"2.19.1-next-1601990261-c880378f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.19.1-next-1601990261-c880378f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.19.1-next-1601990261-c880378f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0dwbiHybvwM7EXXmMQG3u1xaF/cCpEyvESvafRJfh9qdfPvSoRGkWsuQYC/7ahmIaGr2mIhb6bQocr48zK4tVw==","shasum":"2831fe87c29beaabe61816fff69647f0c3a6cc37","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.19.1-next-1601990261-c880378f.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffG7qCRA9TVsSAnZWagAAEugP/iimIyL0Rz8IQIyQQrsa\ni04Xlk6BaX1lF2mb76CXLgeOU5YkH+eUqQKMAfRYY7A8KtM8njS/CzQPANeg\nUJtycwpSJWW66ZWB7OWzr4Zpx7lWviyQIcw8Fs0Oij1tweyRgNZPcRwHx1kN\nKXAokKFPWlK4F1xzHsAYiM4CvrAFCDTIYPaWogYzKhY5teCn9pPmwwihSaCd\n4a6WgBN37D4LDlhRCQ2cN7JPe039VrUr+H5l9W4K8I2MlPtCKtzD0XrQe9nI\nbARtLVWJqMMuvJKwoewOtzhCMMutwhQ5uzocfnXb+oKn4wdtMN6BiPJZoVsG\neykuW+rI7/StK5GEH/ZoSYjNGBTcftJUHJpn0ombOlwvSd/MD5iBDrfamoE4\nIG5skrdR+50BJxr00xRXlu5pQ7yx6pq2TnLPg76Ku6LnOCthyIUFNFrStZEK\nZXdajtAyyJgIo4FRu+ahq1WDBdbaIDH6lZsxdp59IRLTwvYxapwJ96/Y+QQh\nFi91vMDUXEljTwVcLkFNgiEPf6rQ06/E0wSio2Sj+5mJLC59933yhhNx5cEh\n3BWMtfySIXh3/ESH/HrGjyFoHVSxf8kmdS1hHw6x+cWt3/9QMbvTNlttFuOT\nwcNROx7GiSIQ9YMAzNFQZUvuWxlTFt+kUxW4487CLhjoFEdLckX4XTOXploy\nEoSt\r\n=UgL1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsDOESu9MJpB96Cea6tI6+Z2FbMBCKxXUk8o9vz0nahAIgQ+exJiU3NsUZJ1ovQmTFZyA1LYE+bbhyiRv+A6mxdC4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.19.1-next-1601990261-c880378f.0_1601990378489_0.04071056042993182"},"_hasShrinkwrap":false},"2.20.1-next-1601992202-a2ad1594.0":{"name":"@xdn/prefetch","version":"2.20.1-next-1601992202-a2ad1594.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.1-next-1601992202-a2ad1594.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.1-next-1601992202-a2ad1594.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3yS636H+V1pNgBgTVcBroTjN3yH5cDF2KM/Qs6ihUP+jONYasRAgC0aXK8A+5NinyOgkvtppfF9ZrfxkT1E4BQ==","shasum":"28675bff7784d732660e2b67f095625eb16c2bac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.1-next-1601992202-a2ad1594.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffHaDCRA9TVsSAnZWagAAzhgP/0Jo/e2EdKAHkuWe0Dpt\naD5lg/kypAAGeHCKLfukOhKFYCE4Gvx3mYq2uiNPTFU94qUwxlV1R420RJLQ\n85hO+8lvy2K8AKzAF6YfddUNlHPszjxHGCZMgbdiTK0/O7axuAFCeL4dHQdd\nDpuEEvGQTdfTLSTBHnVpkDaGUktMmFwEASWurDs9Jie2ER3DY2MlXk6EXRbx\nPRkDeq80lSQF/ywlmRv8flTSRSzvYHGF2bAZFYY5eonef9PemNvq6d3/Ot9N\nAS0P7N01VqlRltFNYPmeYsUiPIRyEBaUm9WlqfOdPIjvx/eOwCE8J/aAlQA0\nbshUzNRYlnYlTsy1VodDlD3317VgvgADyeHm1JSgI3vHay2GImSbKLTTEHRg\nXqP9V+DYfwIX/w1subXSn76gRqWKaPEnW4Snp2qxDa+gQHo+Qi8DJV37Vtq2\nWNaTbpFwIOwBMhAECNHWvOY/bOzw+Gh3goK9buYot9b9XmI1yCOBi1ovQDkB\n08/TwKozmVI9KVq/0jvHOoB/rShbkdsYIODwL/PyMXBHVwZuXtpygY4gCKSY\nXgLp+URlDVtzbo4oZfxxjZ5aPwewBWIr7yp9t+mdy3O/wpjXiT4f4w7Npmvf\ntIAQVvEFQu+ywwGJMiWW0VSV8YQwHz5j8JvAWTz17tVpyChWsFit0302IOZN\n3Q7U\r\n=MGXC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCchZAaeoOVV3/k8bnUibu3xcga5xwjGogM8Npui9zSHAIhAKXkZya05rjIOuIX8Ac0UAneOzxhu2KxMFdvvkWpsnYu"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.1-next-1601992202-a2ad1594.0_1601992323378_0.48685635935997373"},"_hasShrinkwrap":false},"2.20.1-next-1601992481-0ee48b0f.0":{"name":"@xdn/prefetch","version":"2.20.1-next-1601992481-0ee48b0f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.1-next-1601992481-0ee48b0f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.1-next-1601992481-0ee48b0f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Ey+APvXV/Z3xmL1wJlzE03c6E8drpAusLvnSPxjpciGUMHgrhuPcdYUjgm/t36OERv8Ihj3VLFJRr4dVweFquw==","shasum":"4ad0b2fd42d4b2a8ef219b89488364c536b7937e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.1-next-1601992481-0ee48b0f.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffHenCRA9TVsSAnZWagAAXGoP/1n9R1BCyIbLTiil7HxJ\nVk1z72mAx1zb/enovgp4kSDpv4nf0pqLuIrWIz0vGyp9WwGluqFYk1liI7oD\nZYmS6KhioSf5GvAHL5jOz9msqOfA/GCRa/TKz/kjfLthsoYsyNGq9wknf9E2\nVE9uXwmkeMEQRDo0Ixw3oY/s09gRO6+HuMfL45sCSMehEWJ4zDg9KbOMrNki\nxdoHNB0/MVTpCOx5UBxPahNBMt9Iv8FaQjmmPYwgp4wh+j9DcunBwIeIFE9N\nO1D0GAzKd7G60mxPKTtZQ1wyleO9tMmm1qFWHNsyNxUhU7Wswvuk/1W2Sgi5\n+FvBAqDAlRvzG7qSYe4F4WfXDDth2yprH6FmGx1DLLASLzFoMSO9z4BUZlkU\ntop49pWaPFzLjJMjDL60WwVAXcaY+h8sUwPTQmp0cT4lx+8m5w2c27JMfqlS\n/vJFuHmKJPYkB4O6dTgQKFccx0eRH/mOXBaKaSyucHC9MPMFHlOG6+JpnmPN\nT8pH1IuddYSQwHMnNjAMGEnjKOFBj8PsJ1VFOpQq+Pc93gf7SK2Z7SMWb4J5\n/zVNAxKL6hRxkSP/za4R+Vv2Quawqk6ZZv3fqXN5Qu2yzYWjcwCbbClljFq6\ngDUOzAidqa2C60GkgnZLX5TyN1pbunHpky3f4yxoINdAuxXXx/eTXFnN78+U\npjhO\r\n=6Bcu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFOcyEyz+REUqXZoVysv2bIKv1QioxICtnNvpvbJoLeLAiEAmonFfqZ5TvK5G4N3aCqx1rvgByeK1WUlL7KMhIFkjaU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.1-next-1601992481-0ee48b0f.0_1601992615066_0.6528931969719243"},"_hasShrinkwrap":false},"2.20.1-next-1601992902-a2ad1594.0":{"name":"@xdn/prefetch","version":"2.20.1-next-1601992902-a2ad1594.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.1-next-1601992902-a2ad1594.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.1-next-1601992902-a2ad1594.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-syQEqjlwPZpag4ZTXl0bFhYiIVRDom2b0NLpaGODguZybQHM7TLrIn7A/dSUgXR+MYrdOeVfGkak1GTMOsnjvg==","shasum":"8a0d338e10825bef2765d489c0ac6a9992833842","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.1-next-1601992902-a2ad1594.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffHk/CRA9TVsSAnZWagAA0pQP/1VmQLZe874iGtREFs6B\nnbYyvtP87QnovG7rZGzIE5hoXVjI2a1PNcB0zRY1dT5JoLB7CpmXQvOIq/CE\nq5PaDUSoxK13g06Gi+rXJ91mgFEF4RsACpWClaxF7MLoWDm1L75EIJproMcf\nkeqz30+nzpQ3ig27Ak2STkDPFn3zmWHzoCWBe7xVmRsj6trPw+45grqpcjg6\njEkiH8EhIzyq1n6vB2jvRq1vijPbr4H9FFEpIbw6agTN208Z/sL0QMWq0nL0\nNxIq3jO5moNfMD6xlqL+8v+aY4otDuzQWo5rCjmCAOiu2Rm3YmbaiKOtadZG\nAoMJA4i3sVxZHvHdmXMzxH2XFYh9RJ5gmcTfwHHfdReWSINC70pmHi8YIvfv\nDW0vQd6fV9kxeSZKHkGPsmsXOhn8bWheJNubcI3HQxufYuQJkB5eSDebAsVM\ndc2JEdA10gCiiPARFwolbwtZMwrVDbCM3BBxJhri89Ux6ZILcCo0TnwIhO0K\njn38asuNlo1VJezsIcpXLKRZSf2z2B+X1j3S/SiRB+wZ4E3zTjW2KaHDdTSt\nODzCkhBNxPJtbLHhkm75Z/UQLY5Wa1lMkeXZPOJ6gDpKYS4+PJPH0ws5MxqR\nBsQr0QCoM2qcMfU6N8I3/T8gPSpWCCn3Gdx1dIuY4QaIL74y/J1NmtBGxVfC\njb8s\r\n=Qtmy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLqNH09Fv9PtNExBijjkewTaKEDEz2O83r7W1Zf1mx0gIhAI07H4yacu7LvdYffPtjTvbqg4+CpQZ5x4AE70gs8Jnf"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.1-next-1601992902-a2ad1594.0_1601993022942_0.9277782567188784"},"_hasShrinkwrap":false},"2.9.1-next-1601993567-76db0ec0.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1601993567-76db0ec0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1601993567-76db0ec0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1601993567-76db0ec0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TUDLoXRqZMgkm0WhjbzmWffbD7qcVucK3rLmiohqv2BsVN7KatNbgkXEjrumdSYC4/4OBGKBfWZRWlAvT+hffg==","shasum":"a4a78235c8aa270c0244f1e05ac534d67e282259","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1601993567-76db0ec0.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffHu8CRA9TVsSAnZWagAA5RwP/1Qw++sgxa8veQBbUYmS\nPPEqMXWejQQtLTcJNiip2FfYJXkTjbq8Yw8nbV69sdp7sNQO8leZkoaZm5ho\nRqgixD31Z8mfMfvOv3Jv8eunX5ywiBHO0sMbzz2yTEBN6UY8hAjegEBtjLuj\nknyXSbGk+DBBJcmcq7hEDL6J8/Z7bWAkKp9D3UDFE5iQ1nC1ioaxsNig33IE\nf71YENhCQ6M9jvFJY3bfw9T8mVuLh0Egx2u+Fi7lPFclPA9Szqk6fkJ/wvTE\nZ7WYCgNBYQxaDRQIvf47M7RVmuWNFxHZ+7UbsqzLbQ3E6c08s8l+KVODLEm+\n3TkCAUjZptUWyellqnRlYQEhdNiDGpzD3MoIpBp2yjGSuKFcxqoTkNah+N4B\nWoIRp7EvfYzM/MqBv8qYASQHPjRSrjKd8PAosf0IcdCv/39APqIBgu0l+b+7\nej7j7jMIbS1RSOMKxd5eXhtI13f5piGmPZTUAew8N2L2gqXqBf1ynwWupJeP\nNcoTYkOc2qwK+uDWpXGze+uQX31uwXJnLueKxnIoJIOol0cxj2G7k8up9pnm\npSlgCCyJmYpQ6ubQIGMbQq2Ex9RyKg2G/DGJSza9eXAJr6BibrW+2mJCXsuq\nlS8TZxIMH4ot5nNZ8aFoXIgMiM0aJ9ySnWOws99uljx953cG5F+bwdrbhIaI\ngNFc\r\n=buOy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDt3oDp+/tjwwz2TH73at6yvzx2ZnLvsc0mIt3mHCQ35AiEAnv8sxUAjoHpVrLDDina+uijj1n7b/ma1GpFpFTCNBrc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1601993567-76db0ec0.0_1601993660356_0.28200790970777234"},"_hasShrinkwrap":false},"2.20.1-next-1601994267-a2ad1594.0":{"name":"@xdn/prefetch","version":"2.20.1-next-1601994267-a2ad1594.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.1-next-1601994267-a2ad1594.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.1-next-1601994267-a2ad1594.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ys7RpPU7CrNu3kYSdlpRfIqt0vVKG7bVZx7B51+UfrdYDfnbYB4Gn3ajuKhx/VQ1v3Fa8Z3K0vcQV9oWA/UkqQ==","shasum":"e47c0e0b4283706d96af45d46431b7668ded3d7a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.1-next-1601994267-a2ad1594.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffH6NCRA9TVsSAnZWagAAoVAP/3JIuRLMClX9R4oq3+o2\nI57SLZDNmZ/DYs9GsuQRBmAsEnOchXREjMfD4jeyCKeT0XxpYecYU0LeG6V7\nLSkXPfDjKt0olmT9T9F/kYz7vwZrP2txjHMyW6ylQk/ELL9GR7SiqPPDhuQy\nJW7ykHsTaovuzWclwX+VRu9K0+9efMtLeOvqP480rha96Q/Kdi9R+LeRfO7+\nrTDNdnFhlRys20hNJO82g9iWfqA1bmWOTwol8Adh7iNt9R0NMwWpRJElf1J6\n7ozPtrkk0dxPIOXxtTFOKvZpuJDcFYXTF76IhCVPZILsRcWM0VPg4gr/v+fS\nh9zlOjz9XFL6AVM3imNK0a1YbfWXdxorpMMdDk5KwjmyXAiQUsFUlDuAhsTd\n4dOsPdclKpf51TOHlpCpWcoql4boYBSn8u3PEWziovRZVBkAc28BrD4pDZtx\nF2GP08Vo89/GsfdkQYWE3AFXCaOpZsnq/Fbz8v4+OiWyFH96bV6da8ZXmz91\nrLVZMUCmbNVUlrCUM4zrk6Xa5jhuh5gl16KykAhPWhr2o0Fx98F8CKHfcNvd\nvtkMbm584ufVYEi8vam2utoBmjsjAemy2S7uL+oS5KBeI5pLt8AZyhfNgVOg\nWIj3/oUIcKnWOCbZRma0xPE252Z37Ck2zjELOVkDbiVBNc+sHf+9ozs6Flo+\n6NLJ\r\n=CvX4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGneC0hog62ZHx0Dnjs+q1O7NXS/sDWdGM/jJOr9+OKAIhANbiwufLP49T/e4mXr0WG9GtRYq1nxJLDRsAl0dVVwt/"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.1-next-1601994267-a2ad1594.0_1601994380976_0.15351056531283214"},"_hasShrinkwrap":false},"2.20.1-next-1601995058-a2ad1594.0":{"name":"@xdn/prefetch","version":"2.20.1-next-1601995058-a2ad1594.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.1-next-1601995058-a2ad1594.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.1-next-1601995058-a2ad1594.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tpeEa0qz/muzr1jFD4iu9e6745T/jQs9zhUOBl+2YSGH4eaM/8Z0k6UwEH2ffIL3w2gbS1XXzDUDoZ6QVamsYg==","shasum":"7737418f26560a61c49a4d06dcecc7a35ed81014","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.1-next-1601995058-a2ad1594.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffIGsCRA9TVsSAnZWagAAm8MP/15O/L3594vviIedRV9A\nPAwY0+/KBViFIWFLlkatsmHPUy5L6g0XLiAhyJZsK0LFR8CnlJYrL7B3LLZ4\n7bAMpbtuVC7Z/2Upfe0LqLGFayhfedcPnxGYWTVEGCnW095Vlf+Os9GirmsN\nvucqnHZAJoiIolazaPuJEWVS+uIVuGB2i4vQr86pbYd8/6QwdK1CEQgDMiS5\nqPsjFa7pVIXfr0YW3zWEnZWac+X+Ggv3+ysRV+ub8loBGRt6GGygsNRXRFvJ\n5OKgop6ja1Xgj1Hw6fxFEGD+W1n1+IgGYsD8oyTP99LoGey2Bu8zHYFGO0Jq\n7/X5KZ6wp8+AhY+Swgel7h51b0znjj2266VAfQrYiC99hY62lxt58tNH2K+P\nSHPkwVRqN/2jHDTL7/BLLEu0L7Yxt/6CAQMm9uNaWyJqSusmhlACTVWlyBvz\nsVGJ5JuAxkoPQ/RTFFolMLVdNDDEx5fqj3m3wwOZSEZk84fRNQ4cMoUc3Nss\n7H1a65If0cicjyIET7prgs87S84MKvNArHOCRtLTjnObVK1OT47avmGrH/bG\nWollwz9kdw8tizGa10t4W9SVinIZoBvpXROQlNI5MTBNEGMrSyblKryUxlXf\nHz1by6dl4ZBUMAOa/HWMTBauyXM+wy6gmrYvjZasKYaJsOmnT7Yn8Li68o7y\nFu/y\r\n=wy6X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzreMKyWNx/kR3vGzC9+7IRCQxhf8rWszhhRjAiM2rxAiBicWybv/Pd4MiuihV2+bbHqNc11LKcfvEXCV66BiDFNQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.1-next-1601995058-a2ad1594.0_1601995180389_0.9216371004003663"},"_hasShrinkwrap":false},"2.20.0":{"name":"@xdn/prefetch","version":"2.20.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.20.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-82QlNnRgJCa2KWT+yL/4WqaW4PlBQ/GGM8/2Q0sqnSvvQII3kErBwnXJ5qBC4taj/8llCeeJIHyCmTnSXRTQqg==","shasum":"2707e4fde394e034cc6f1310bd85842919f51cac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.0.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffIVUCRA9TVsSAnZWagAAjI4P+gLIYGxzuGubIwWyQeP+\ndXZ1m+Ix4+yJDXrABGjc22pbcJUoGCs2Ieb0Jjf35kX292dBFBChwMq7V5TJ\nYnviR0AAdnAHtqH5WGEmslMPZsOvAw3WzDmQgVsISQtViUag4v5CecCdPrlc\nQXCIvrN48Cg7bxliu8zNg4x73SUjYDZtPwOl3e2ict3p47eygt4chkwKLJ+u\nmweYzmIBam4088smPNkRpm/24C9Mr0x/EzSVsIvnBYW7nclh02a/X9Hp6uRh\n+CZtg3EszIqkFizauHles8oAb8mr5+4QuvIDU2A4nDyaqNBRpLZByf6THu3r\ntrjknQF0xqpghbkZ1qhZPBQdjcnsEKkkjJFv+UZOwDWIDJNSBKJXHgEaDnKg\nt7q6StJX0OCIa5URJajKcbXh1y+eMRJrUPq8g0kffhCIb7gSJJJWNU2ShHa9\nz8jgRW6Vy5vJ6qWVmtb+AVM3WY2CFXadbyEqxHkmAQh8opju4AEXlo8A075V\nfYYmZ70zbz85O/OnGOd3R16ckuz+akS6A2diD/gA+WCGCvDPNA7L8uozVWJ8\ndQ6n3txRj/33zbTY1CdfVSMHCU3vDDO3kklrwbAgFA5mk0Zh5gHpwT74a0De\nAgA6y5PEtAQvq3bdGW7LyG4Ni8b6xW/VKq/Uvf0HNrcGT+ZmfIGNrmMzG80p\n3zFb\r\n=2rEb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClsszgfLRSnW+Tyd4ksTeUoDPl9JYImMtwalWbUdMjzAIgK7tX285myCplW0+aqMeSuKmSv9ZWcMiVqJws4fkVC24="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.0_1601996115572_0.6970804520893719"},"_hasShrinkwrap":false},"2.20.1-next-1602002623-b8e599de.0":{"name":"@xdn/prefetch","version":"2.20.1-next-1602002623-b8e599de.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.1-next-1602002623-b8e599de.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.1-next-1602002623-b8e599de.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ULJH59ihvG9tI0fB2j8GWoiAV4fL9w7LS+QrlaExPImestqOr707XqH9r1Nz1kq5RsPP/4MsfRRmkBNP6vZ/UQ==","shasum":"fa35cf7c140c82a884df4b79dcf2b7e29dcf2e89","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.1-next-1602002623-b8e599de.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffJ9VCRA9TVsSAnZWagAAl9oP+gNgdorJn2ES1PeA8E6B\nTUPyNTNWOKD7XzYg61ific99MRajw1SajhNSWAkDNBA9HOfaoo6A2faL2JF0\n+K9A6xtvryZRI0nh+F4y4bXo8E4gGeWi3QYCWM+lK05jzw9GD1JA8UyrXBkf\nMdMUE3ScT7uDQwEEVrkCtnuZA3+ex9jHmouO6Oj6sDJsRUYBSX+ndEzWZSMe\n7DGPHJ9SSFc9WyrXSmsL2uAM8he1iaJlMxfqL+OjcTNJYCuE0PJbivdfr3jS\n0EHbfvbh3KY1CeLxeoO4z0MGmhG/NWkYvL8Q0wfVCHPjYGU9vAJieaxBmLtb\nEaQtHxccs98JjgzZr2O8dqK9ddoDmkkyOQxZr7zXExKFuyBy7aEa2tklOZf+\nb+hF6tjcBk1TCIMG/xZJ0KIG75wD8akbjaAgq0rwHUg8mi0MpXyT0iIdtURU\nuaqJqQTX43Ue/3LyP55kHwiVmwh8ho9RC/xaRX3tYYvQBjb4M8C6Djeq2hfF\nnB6F4+g+35j5Fw49vLq+CtOMYBL4FQpsO7JHD3lHjy+q9HRl/So6BDzRMhx0\n5iRlOb3ET3NsKUlsoqvu3jYbXiWo6dgv5yNpfUpfOWDGbGuTiAMKZc0xDMHo\n76E52aXfDoW4fV/nrnWFCnVN9o62x7kb4bx+Vq+8FSam9jK3l3duaK6LcxDo\non1g\r\n=seUL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHi7icqUNm9GWcKvJBPrCaQ6HgPazVStey2Eu+pkV0uaAiEAsL0+La2tHTd6DMRctcs+nsDDH32y10iltozsMeGFTL8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.1-next-1602002623-b8e599de.0_1602002772633_0.5106030201060636"},"_hasShrinkwrap":false},"2.20.1-next-1602006806-5e61f93e.0":{"name":"@xdn/prefetch","version":"2.20.1-next-1602006806-5e61f93e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.1-next-1602006806-5e61f93e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.1-next-1602006806-5e61f93e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2v/ct4x/gvRVhT38Wm+3UdlfC9w5Fiz1YIBnlQjgzXcU1N/IGTpgPo1VMv2dYR6XpiFV/bMNcIWPiTWby8p9WQ==","shasum":"e74c1172b483a552be462b5527b465cef34cfbf2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.1-next-1602006806-5e61f93e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffK+bCRA9TVsSAnZWagAAPukP/10Pf/R40mAPxqmwWoaX\nURoDfQxiXDPbuvPYmxTg9k18D6edU4S92aHJANwec+ALULpTbSGm/nlZy3AY\nKhhZJsqWP+cMm/gnun59d/wGG5K/aHTgox99Z4uNOdpQFWH00B4W6NhCv6b6\n0CZGLbDLQstX+mUNzvSu4aUMnnpqFgItuxHQomjpJPVHNEro+fptO0jTcADc\nq1BgO4NAtEQcLnvRpLBqEjlajBC5Tucfv0y0151m0eXj6Fxiy4n2UV9h9yKW\nV7kRN2JJtBqY6IN8bClHioqDi3K+/W3O9pkzn7mGAIMP9DKmUh9JMix/rfdK\neBZ+eKk+soK1luvhcauqWnJaC02wGlH4cseaPSonGyEIXLKyqN9aAy9GM0qX\nLNJKiqGTJhK6RqHd/jWIPQzty3DONM7WlnLDLO+NDQDinh9LCN0FhCpYT03T\nk6C6RAdjAGaFZKZ5Gx/NqVna4lJ8tLuyHKdRHe1FEcsm3MYKdi+wDqSow54G\ntX3L1qm2HrfO50PXmEBg7FAtxKfG/JEg8oQuoxVRHtbAsoexx/OIjwZfLfep\nghNKhmCP87XQLpN7ybNDhWZfttEVW65Hun9DE6tNGyluKce8C5cK1QAQkPp9\nFNbf+JNjoncI1Ov6drFqzZv65mub8M//jMhW3eo7mGj1bc2VZyZ+pohmVcq5\n1q8Y\r\n=DV9g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZTntxdDTPFOwkg/1jHyNJjkbSkZzHyApYCcDd/HSl6QIhANNmt/jc30t2IRUjqzMMpF0fdOpeHSQFPsNrIFdk6omd"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.1-next-1602006806-5e61f93e.0_1602006938696_0.8103666408522492"},"_hasShrinkwrap":false},"2.20.2-next-1602007890-9e39bb0c.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602007890-9e39bb0c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602007890-9e39bb0c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602007890-9e39bb0c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2E8NUaypqpb3PD0HopmpfL5byXl/toO1dAQ9Ug6+dihEi2f/Bj6C53vdGzWCpxW8PDvL7TkFjjoIucwHTOpmMg==","shasum":"f563a0ae9e37fa618beba11de0d80a9ca5a66521","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602007890-9e39bb0c.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffLPbCRA9TVsSAnZWagAAd5cP+wVeplupiKGRdx3teg4s\nG2zYKoi1JACUpeFdAdsSlji9PS385oLGyTCO85UXe8uHJPW3SDCgr+cnw9VW\nrpjyCinunEjDFPLzzmx8Mn12Vamts3u98S/kEgalZ+w9BNbwcW7wxHrI87ig\ngZPJfhZ9iUwL0BMxGiZWQ1PByXQA1Uu74NstIW9zcs2mgZjZibgSLXjb08WN\nsApIKICmfKOuir27vRw2HvUxW5N33RLHRUw+u8Ied0kG2GIYAESrmlGeYTva\nEB3A8vgCD/92P8UgE5CmGsPgiHlb5tQAfUK/GDtbQ71WUwdtAH6KaWXwfB5R\nlvaM4D+4dScmo299HKrzmX1R2DJJdmPvlghpzEAKR6MJcTdg0CF9wjQ2QG4C\nuFJXpH9RJyN6yjqiT8k82v+zcjsgD/67EHc3YBO17I2WIptV8FX8zrier2Ug\nQKjez7Ky89rZsR5abxFR9krYQc0EYMKOfNE/y+XonPyDYZjm9rsVVHDnZUMl\nz0s05df9A3yJQ4J1aRYzCJZ813q3kzd9sdIb8InJNGtXzRkQCVLMB6GnLkug\nWgbeQnTyAxx4VZWP5x0hpzsLLF6dzmiXt4higrTvsFlC1x3e8oobaG+bP8ql\nycryvqH/P30+BP0dugKkhoCGz++mdnCVZJpk2dSd2HY0FsrNQHDRpFLTY0qX\nXwnL\r\n=7YhC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDXCsJeHQJp2DKCbclPB+kAmidUdRDopNb7SY3eUCoQJAiAr6zHBnwrAXjPkq9E/RScxKtFDue3Y1n2yzHabHkGdHQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602007890-9e39bb0c.0_1602008026799_0.04638891156177061"},"_hasShrinkwrap":false},"2.20.1":{"name":"@xdn/prefetch","version":"2.20.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.20.1","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-quN25AXZt1PZGn1gdOfB2X3bxIcuMnmXGemhXg7sRYuqnbsg/6rwkIRHFx2kJ45dpTanN40AC+sFMyLWkzTqVA==","shasum":"fb55004b5905168499f45e749ae070e4657097f0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.1.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffLhWCRA9TVsSAnZWagAATLcP/ihvq3Y8PW5nZrloQRyw\n1T5JkPZaaazk+SdQ778y8ygwiXo4XW/8dxrOmY8/y4Qybrc0bXWhSZ1Rgq2x\nW+q4mgxTnTvhy3unntzv6/JYcM/j7AkS/AJJemU1gsy42sS0/YOvL4h9L2f6\nu2VLnLNaWrtIOT8CsFdBG7IRMgHC2lR7EW5CaoYXQrpqiejvRaIWl4YnEzbn\n+PBNpTROM/n6blAjZdHTzqUTbzSDXrE2jLaayWVI9jNGxxCNJQDfntKaPZmJ\n4zxb0KOIZ3WHC0EMUuS3XqXeUF+o3XkKZOoXtIUfaULpUo/M/aIHjNdM5ZDv\nMqN44J7XW6Os6ZLi8KIDuo+BbFtiMmaawxH5G0nMtK3I96oXtt7IhyUmxGio\nHiCargcM9DCnycKTfGz2u7L6ujnLY7ip41zoJl8R9ODQYH5Q5+gmtGJ9gmjQ\nXBC29p+PRh2FpVvZnNBHAax/tv88DQA4coSQ2mskclfHFdFlkVihfXkToxuC\nhWUJM3yMbzh6RPJdzecOVcwTrYyGwfruNL61w7iJ3sWs0r/D4GHIDIhfcqk5\nHxwGEZ1MZzx6geFkpvfyFkt3JZObFA0+fJzsovNeIqU0R7xWipVFZhSJgus0\njEjPnYXq7Q/75532fNiHWVuqn9wXZK8eceAvYX29dO71sO6CPvrnuL/ruyY1\nMaj8\r\n=6Ygd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC4sDrZVYWLHZGRF7EWukvsJtSvOcBiGOiVUjJ7Lsr3dAiA6ou16BhbsDXrUR4tMvq8ZsUIUs8nO9wywxP19rgMQDw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.1_1602009173565_0.057193391518001846"},"_hasShrinkwrap":false},"2.20.2-next-1602060391-ea8e21b1.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602060391-ea8e21b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602060391-ea8e21b1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602060391-ea8e21b1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Lbnr5UnmCdtfLJp0E8XQbvoDntruvhNKOjKctn1v61jVvVVh/BqU7OJc9hyzCIiqDxAVWbOZzHbIKEw/QiBF5w==","shasum":"3c21bbca472f48a3a543efa0099eb0eb8a776a04","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602060391-ea8e21b1.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffYDjCRA9TVsSAnZWagAA1msP/R04WJ9iqSXYqHBQsRaY\n359SpOMuF369YNCpV7ZwegHyaO/tnAZ5MOyK+dzSn2Haq7JTQ1S9lsWU8zPh\n6aYErUC0jR84OJBI8YTMVCFaBMKMrJcOvWHLF0v+rGCAxA1RIb/C+LPkmWGa\nRI2Pl6Edi7rWzQ/bQL6zf6Skgfy7ckKLS1Q2aypgX7L3wvHg0jYaOoJbMtja\njVWVOVd8A2YKYwgPjIBcppByY2ZpRs1hovPivaNPKuvQDg6gaZ9swTtt10c7\ntNeBSHt9fq2bc1NIuma5ttiQoUzOMHLP10vvlgFZNnURkB2u1zzDpDnI2nQQ\nujGu2iISXiXCxplTs28Cgj8V2HnzEYhCq4YvbCps16RkITgjthYCl0o5Jsum\nHguNChYed4fKr9PLE44v6IlNz0cB/vzh3tbf+99IeVFRl9y432SZBg3BmP6S\nPIic76VheIfD+OnEZYiTIBmY3x1ezEPWgJUf1FNAklQ32fusMbgoLjBTf8IR\nX+fzKLefQ6/L0B2I3jpmefsI5rKTTxrGBg0HWp/nFNBPW/+v9HqAhASwpdTX\ndOau4Lofm3S5JWXxrYEEhXPFBIhn0kMg9ElnSONdsww6fef4hb3USjqVci1M\nabqYFwnhELto5ekTxO9WRTi39gFUH1rXxcC3md8lxMEcqS+nCLLGNOZygLSt\nFIpu\r\n=urTj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnbi2FfkjKC8AMdVtCn6u9Ba4QqwZqMGyyiB13DgTXTgIhAMQxgRhdZUdfxY9Hm4pDgFVIG9KLX5XAHyVplVi5h/62"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602060391-ea8e21b1.0_1602060514688_0.9412574599141514"},"_hasShrinkwrap":false},"2.9.1-next-1602066146-7c0bc041.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602066146-7c0bc041.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602066146-7c0bc041.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602066146-7c0bc041.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3+IcS0zGmd6pTt4VfUBMIBI5GWeCArjQyNlI9H/7oc4TzoEnjTTMgoMC6kebNZtiM2SHrUS20b902sLWNmAREA==","shasum":"3f080d59c46d447820027f3178b2e87fd8ce6a4e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602066146-7c0bc041.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZdZCRA9TVsSAnZWagAAucAQAIhHAcuIvHb4pT6e4l5P\n7eUDykwV8Yz23zK3EGLxsqMRqInIAPycHAcch6cJ2Djg78rC9Dm1IDYKYJeW\na0NIaeI4wjjhamvnzfyTErzxI1tUtG5h8dKJHTe6nBXvWbzuIjzSd85CEyFl\nIES+uZ9pu+TURbUklJF9c9/EJlrkF/fCBMVImKR4otAJdTFTwitAwyRR8mfR\n5ftrr9q+rAxsJ/i6EC3R6JzhENbSbLE7GNLWtGISAbUf1ubOHDwEVXl/hr9h\n1R/uMr5q2n1wlFxx2BY+rCuaP9jQlGq3FzbFU9sTfGHS/h02EAB27my07/bL\nGYa7R3xg92deD/Qi18GdTPaR+BfoDprBQSw4j7iQ08iOsLJGHNM/crTUD0lh\nMcbGk6sNBjSHFHYHEU5EdbVFumZStb/JC2OmI4UBqMLGb0qOfDzjg93+jZAP\ngmJIov/yBjyz6fLI67nnduqbuCd65Py1GHTWg9GJo+5IJwY/12B7ZfGiEAaY\nzOS8F0/JmW+rjpkYu591kBNDkBNtFsuWiqanFBIvqh81DOzDqnTsQpoQRX9H\nAiBwX2Z6Xn5u35uWQE2IMXjlBibR5jVzYj+oZHLQzBsiAOaZQEXd2IPuPhoj\nZsWFaJygderrQ+o7+FlQQCZM6liub1j04mGdg0l0iarqTctwHF8SXOWuC32X\n72Rd\r\n=6oai\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDLc6SLgUTYZRtZySLEIp6Ekl7JBBuuTWJZhCKllqY+AiANE+FFqyzXG9zoGtCDohAkPZGSsyvtY5PYHkjICHY7Sw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602066146-7c0bc041.0_1602066264954_0.43908872257636"},"_hasShrinkwrap":false},"2.20.2-next-1602066213-8a7748aa.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602066213-8a7748aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602066213-8a7748aa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602066213-8a7748aa.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pLlKcGQb0ug+kDjNG5e6uHA6u+sGqEIMc62yG7kDF1kJVDD6gFb6kyQUjvbVxUr99D/sDjAyYlChr3rJz0YZuA==","shasum":"6dfdf8862dc6e715d480079519e6269fb53bd396","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602066213-8a7748aa.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZetCRA9TVsSAnZWagAAibYP+gJtBUeJEc9MCHxTS5uW\n6M0A/aSWAvgm8bm4j833OmDJ0xo4CGuedLpHE322MszWNDAsOctUDXyE+chc\ndptHk661SWlAqymEznFLuLRP6J6iNXtXay0L5F2FrTI0vCPwhm+CpFoWV2HW\nKjn/LQjwYWNVtRbcjg+k4OqeDe94p+ORjS98a2U8Pde6PZeHMnvNKansO+OZ\nmYs1PzWa8s1AjKGaATo9zT1IouXrkEPSl5AydMC9pK+ReFOiinoihfn1ba1X\n7JtlLBaLXlfhb/KwrgLllUFPObx1RPXcAt7XOdg+zkc3ZvOkKs6u0eBlsWE2\nl2c8EpftSzcGsz2PqXDysi4BoaeAtfCcwFC2EYJPm5bKVM0DWmaoJIemtAa/\nVO5qrb4XFvtNC6VipLV8TVw2OKi7TnEaM3va8//OdlZ5h1XD3CxAvitS01R7\n9Vt4agFo6JsZpnHMGKRU603rHQmvSrEdziBcxiGHouJNUfkZ1CiSEUwH1xcq\noY1n+fUSWxpqYIgfPxqNXx6PTKeN0hNaQjZd7IDKVo8HA5DRN+bLiNsEE6JW\nBK9wZw4u86ulwXHnpmExP7SWNn5JYj8lnAteS0kuOM0yQAjIXMYm8DZwGaWD\n7dW2D2hW5p8asv4hC9ZUwo6hwHhFcjxfHDbFT0StuwU2HPfJYFhzUO8eVF2X\nxIW4\r\n=reJp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2FwRw9B0veB0XugDGKlpbOYoLWDejaqX5LISE3Qr6zQIgZcM1KHkTUYDBirly/gDoKjJMSYN7Q2myD5446WLe4MM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602066213-8a7748aa.0_1602066348801_0.6600726625895987"},"_hasShrinkwrap":false},"2.9.1-next-1602066832-ba1a1477.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602066832-ba1a1477.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602066832-ba1a1477.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602066832-ba1a1477.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LVFAI2PRP7BNqb9GN+w/lrcQtRPHmB9nRG1wj2oAUcA4iBygmKo/bWjigYuIRwUs+8aMhRTOooQUY3QWO0lJtg==","shasum":"f0459dc795aaf480707e69d2591136f14c1c7516","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602066832-ba1a1477.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZn7CRA9TVsSAnZWagAAy84P/j10TGxo4FXJVWT2eYDI\n1Ek+qlGczLmaE6TCq51i+21uSLO+XWZtuYEVpMWcx/+1dSQ2VklheA37wopH\n3doMnZyIZ7AhMN4KGZHkO+85CSY7Kkki/d/D2RhIFdjwpYrUw1OFGM+zAbu1\nGxtDr+tjY3YxvzdovyV+LGIrvQxojuv5WoFSsvPSRER8/5rBEtQkWtKpywk9\nT1rYb6QoR995Z3FikrdFS8PtA2vxnbbSYA/+UH0v90j7N6qxJ5SEhUy/Sfhg\nfsWCTCUV1p7HiljrQhwjkzxzMdcDInvzx/Rep/IWmL2V0A7Vji6DdDwF9DEH\nUsK6unALrDNYCs4f1e1VxJAdx/FdCdw+0keFcAHS5rxEb/Vz43Z7GBCO+uzQ\nVLFlT6EOdN0aHn+zO/BQohhX+sKj/nKEyKHXgLpCvpHbovWd4sXGqRtxwLGr\ntgsv0u6j50KcU/egSuWnIbmv1sZAv+yCDYUmIwoeR6YKKf/pHLjuKln4GbW9\nHMRC8C+HHiX1UBMzMpM9OTyf5ZSo6hzWx4lx0MQsBkxBGJJ6xDZ9HlcoyCSV\nAhspscT2CK3Od96/ZIzSleoEEBD32l6oCQsA3sZ+AG2QpeqU/3BZzi55hIGQ\nP9Z5w3cvmPFaJXWnsBSODjpKmaMNPWd87OFTEqTe3AmFxgkx2aG6Jru/vp+D\nsGgK\r\n=A/a/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMDM/kJGtq6O+yiUjtd3LPSICr5LQIK6bQ3n9QeLSHuAiBKZWmAkN5Xi9RI5BpwVaLduxAPV+LMAO89vw2OM5uVRw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602066832-ba1a1477.0_1602066938459_0.26814325268520545"},"_hasShrinkwrap":false},"2.20.2-next-1602066979-ee3bf978.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602066979-ee3bf978.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602066979-ee3bf978.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602066979-ee3bf978.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-w1i+gmg5T7UYuG+D3CK25eohkwVGmGxcr2UrMYcem5tgXy/LrENw9J10NhPtYl4tkxbTpREdNCHqSuZWMsT7Fw==","shasum":"5dae9220d233026b07f06e559987060310e57f57","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602066979-ee3bf978.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZqtCRA9TVsSAnZWagAACg8QAInJeynqMYIE3jpJ+xUq\nWozwNvX5phuIcIFI2INXzTon7qdWixGt2jJI1TiwiYg4MWYDMot8cv3sd+kw\njnJsapjlwaFlF1ybpvjDSVto2d/JgXQjcMZlZinaMfGI7Iw4bCG3ENgX1JsQ\nvveeXo8cE8daz+HtxHXB7KdCIhzuad1epC/6OALXWxEKteM+/Qp3VI98EmZD\njw/qz6DwSdQeRWJywN9WhXjgnmFWzyBvIspatD2VqBiaNysnk4ZuMYlSW8KT\nMn6+YQVFyKAqChgnfzTahCKebDZ2vK2wzcFYrVd2k9ETMSr0TmJBlayYV1yp\nqdf4mEXY4kD1RfTLXV67kKFdzAfHL+sX5LylriZ0lenAMZ3OZs1zPKoFEkl8\nw/zZ1hwrADsM6ny7XhWklGggzyhvl09XI2GG+1ROCNW5R5OXMtd5IONrJf3U\nRSuMGrpJpyx5JpAOL5nhyxt4kIbyiZ12rJH8J03Vo+cgRDz1MgJOCvGkBGEx\nWxD61C+Wi1nEuYutCLFAyiQyBbhSLQ7o9kEpFPOM8UcKxc00K8pg3ZdDIzQP\nK1pW0tKVAXt1zkZrpHsykWl/tS4U9ap5qK6mV7hjLn4YqmpPRHRuXVmQoyW8\niuKvgnmnB4l3+bA8JpNhDq88N1gfg90+DJG1uqiMfHUZY2tomTdJFyUfzfd6\num6h\r\n=txcN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFdxZNzGxIZXCAI+yMVqir+V1t4lhCLFgObtRN99rrWiAiAGx7wfefN5nQ0/LVjberc3ygbSKMMs1Tkapiw5DEhyIA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602066979-ee3bf978.0_1602067117200_0.17297931472642247"},"_hasShrinkwrap":false},"2.20.2-next-1602067028-37139631.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602067028-37139631.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602067028-37139631.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602067028-37139631.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NdzaAi1U3dVdSvo1YCOvKZrC2MpThGwTwWFNGSlcgvk10wSoZ+JRAI8w+dZH+i0GYAScQnbK+6c4u0VyqbwDBw==","shasum":"12d8b27e82739891a93edcc04116c5b9e59a2fd7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602067028-37139631.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZrmCRA9TVsSAnZWagAAsQcP/ifnKbxncooviXuIXn0R\n4iakdicCpxCz0ny79R7Gj7j56Npa3wQ1FR/UWEzjHzimb9EJvMlKdolrX+hP\n7+P7cqkA2VjGnek+Uvxi0DTVCl+ZWhyLPh5YoolGJQGVhon9NZr/VjLogBsi\njKhGBpfHQ3sh0j1F0Xnfa95aFviD25dzeSaU60SI71wEbxuhCajXf//F5iK1\nFwmCEZiFcUzFk7IHyH56lebMzI9Q3ntmTNzh/M+IkMHErcLuZWQPJieHYmQ4\n15ct/dk2ELX7ka5W+a/n+DcHRjyIgeGkGmiIm9gpztZ3Qwab7wjPh7MT4O3I\nysow+w8yUPVjmxYMa1V+OMX3f5aGlSp9srxSxFgfOsMBHaQ4y+1mG7ccYJUm\nrkIbrxY5txzJQIFVjjU9wz/JzH0V/kNGtpRnPRgsLPaMEvcOhG3wPWX48Mr4\nBdaPil1DLzoUJdDc5RipOaZlnqrWOCJp0RFwEsENFhCbEcDNCAw10rJCtmJ9\npexNgPKVrPDzMhYbmq91pqZMAVIe3XAPp4DUuFD2dkxmlQjISHO5YSvbs6yj\npnw58xGDHBHCJybnvwZXDNyI1cdbi6H4Osed+tXdvage5lCOM1ak+s0Uy8kC\nEsei8VMTj4PiKKYBEFLKkO5DJC4fYvlTEyGJcVIkf66IJa8/oZkFJ40qF/Et\n+zVA\r\n=cSfj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEUSMW0B0pkICTL1GaSwiUk9p56R5u4SnXwWruJSm22jAiBMih6GlvPVLv3uLlpdj7J2C8WYZAf/cC3LIJPXYSfglw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602067028-37139631.0_1602067173892_0.45938701651784064"},"_hasShrinkwrap":false},"2.20.2-next-1602067959-dcda121a.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602067959-dcda121a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602067959-dcda121a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602067959-dcda121a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WgFVqIJlgM/jAv8H7pOhDI3XtaH+t/bsutQiChcuS5Sk+V9nc7uKm7uSyuf1sSOg/bBsjjMvJdsdzBoM8R7yvA==","shasum":"73b68bd4aff630dce72bf6f779f4bfc454007e2a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602067959-dcda121a.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZ5zCRA9TVsSAnZWagAANsgP/26VLIjZj054tHmCZs0G\n9EZNGMrAGSfqstvSWO5Au+nIrfA75yLdbgRI7QeClGqKO02KkqzQvq22SQQj\nlpnR83XWfo8Z2p67sijJJBufddHP63bC3dZiRi9xURtGODZRnwd4C27/aM28\nJdwNKPOobzwvapkH6r9GGWGgpe27ML+967BWx2/8vlsmf3UTvZgXpl0SSd6l\nJ+LYLg2+8IZ9AJb/jNLjwi37RqewfFogSYDmCHGtCbNREnN6Rmg5zss8ylP9\n5IKpQi5l6Ui7DTbfkm8Lfjn8CfhWsxTDHM8AzxtooDs1N6Aw1IjyM6zdIeme\nO47Cz9FKWcnBufk0Uo9YH0uqCT3dl2ShkMUnZOUluObgyg6TJh9TuTl761cq\nK4zeifAuCeWTLvjFW0RJkm2aCA0hrDKzfxqckmGHV51OPxqzcZO4iOYtSqwh\nksUFmpMy32VJIzZjcCdibNMRBY1+CG3BzHP9PCucDaliE1e7ez5Qo+DT77N4\nx4vBGIBeAk0T+ztCedkVloAapVHhct4JOgSsVuJ/eXngsz/GNbaMNvGqfxOt\nb3kuDs2p+b+j4lx2u8SnROOUfsvnFnPPNRSkNPsx7hspgZWfeKN0zNJvDk7m\nO8UdLZ6v5LUznxRQ1+fw1TDbJ2W1HkTeSkrJ4RGegIVf4CvvdrYvv5ryds9f\nqzFq\r\n=6dAz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOotQBH1XuOSnkE3vKKKB/89wkGaEoJf0jlrVGwW31UAIgAgX6vmE0H0/2FIJOvZD6Lg9+DHYnKzNRfy6ktuc8lpQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602067959-dcda121a.0_1602068082950_0.12251149943304651"},"_hasShrinkwrap":false},"2.20.2-next-1602069505-f2b2abf9.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602069505-f2b2abf9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602069505-f2b2abf9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602069505-f2b2abf9.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LfRCSjQoLbQWyRgEWlII4BPIIW6XtmgX8nSr12MXYlatq7rcJVbCHCuWYmmi5aXgVHXL09nfidwTJ1DYqZWurA==","shasum":"7a17f8f80c4bc73a61794dfa20f31424f92fafad","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602069505-f2b2abf9.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffaSRCRA9TVsSAnZWagAA5wIP/jMQzvv7Cgjv+2N+sEuI\nrMxQ4M1H9CtV7NSDTjcV/Hy4k/6ADbrI2EIARsIYXpePet1pgYxaEL9VhFWW\ncj+ZwAXVAHfu6OfiSY8wzR4xDALYequq/yaxQ51ib4XYi56E7MzEysNpwOYu\npXWKZ+UzQYJFwrW6Fu/ShdXQYyNpNJkK6ymcgndKDvnvhna0INaT4wck2zsY\nnNVhjJb+rNaClRTcrX/fKYFPscgUyvrBDnUYSP6K2OTzxhPu2l9X0Ap6rHSc\n+MNwghEJr7gw6a/czrjQodzfhMCpTtIhDWGhur13f8WNfBHWhVS4Niq/I97e\nTKIB2jsIFlyJ7uD9Y0ePPZXmim0Hbr0r7mPwP9eK9rVpYnw8ajAAlPew26jk\nN2sVqHTfekuWsLSCW8UBwVlN5YJLTX1tyg80wCga8In40+7NrV6LaBzM6+J9\nGb1KdBd6ncO05W2n5Bvrnk+A/MEatMQpVXG85/wmaXtWkM1dX8T7y88qPuUi\npK/hTTWtKnHnbWvAoj7BLzHmUDOOwKnK7Erne4cia7SjUjggJrCZISvtcYnN\nd7Ma7LT2q6S7jVEDvwLyg4ceeUPvrQVpfl2HnWsmFZ6q5wP4+t3BVxfTq7St\nn4CAQWetZm03JYaXPiKDMnL55SWN0APg37vkntWn9vQkHx462yDymMga5UMP\nMeJ4\r\n=6udp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfsh6/6cHNAwQ+9oZLievrLPH5u9hGZr2v7k73dD3v4gIgT20U9sdd0gs1ym0ud9zenYVFVQ2QHz93H+VkZTOGZ7g="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602069505-f2b2abf9.0_1602069648833_0.526517052957922"},"_hasShrinkwrap":false},"2.20.2-next-1602069545-52021445.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602069545-52021445.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602069545-52021445.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602069545-52021445.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-T7ArKo/PXj4SHtqPM2LdjHwndK7fk/IT0uucPEUzSuwWxzzA7hnyBSkR1Ak6NJarzjH4NvzhzMi9XC6uxuPisg==","shasum":"59f2539b6e49a0d82a6e0eb1588a24d8706f8cd2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602069545-52021445.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffaS/CRA9TVsSAnZWagAAr50P/2x32PUJiBPOgPvZ/aQj\nwfQqFdOL/HP/s98KgUxFr12OObvlnOKhZSW0UdOk92JnPK+KDq8GA23+gI72\nZafrK1fLijQEE0S5S08+Irv9y/BA+pqZlMMNC5093K5LfDcILtzaZbI1iiNI\n8Aj9cukJKfWoCOPDMvPZdZOotdxXY32lKgST2ADIfPApCDiB7aGZjXLKKtHz\nVTxjB/kfLM9AMvoY9yR0z7ln33VrjKbwqpjkAfZzkXnbZZ1EEkM76AhVFnQL\n3mB+KTA1hoZ+w0Fqqv3cfXcOlTT1oSfDWxWxrSgxCK0uB5lq1sJGk0aMw6WA\n/WmIjwCfmKb5NbVfgH4I+Tuwiu2UiIAycm9/IkgG5/0w4NVhmNAkvcfhHsel\nwoONE5Vggka0VxLvFcX9tlEm2IE6c7AprD/VcVE/5Id+GVSY4WBDCqJDu4py\noXwAs051UNK1BWknVcFs5fO5wVbK/h0f1x/E/oRLPayf1aUEea+GREVfpS2P\nYfGBnfwVREnI5T412HFJOyTnkFfYjdakJu7fMEf4JLcH3zMxqKlWLGU8kGLm\nVO4dgGLITf+EjOBmBIFjfqeKI+p4AcE71Z1ikYvGMNNAK8GyMPbfVipRtNqR\n1XPx8FLD/YvE29XkHZ2B9pb9zvcVlVl/PvRauiXuDkzA2eTBMvHxF2Py9doS\nvYu5\r\n=PhlV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQWflj3aJHL9SN+6iQBPQRMsDbwgcPcWoQ8vAlI74rNAiEA43hHprAhTWQxB8yepJTNqMWmWlTSaQM37iTt6aEbL3A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602069545-52021445.0_1602069694889_0.7444204386044138"},"_hasShrinkwrap":false},"2.20.2-next-1602069621-dcda121a.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602069621-dcda121a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602069621-dcda121a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602069621-dcda121a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Hq6ylFnqO8Lkc6COXO0Rpa/ciQrYfpF78Fiby/3FMHqbUYkOlWDV6k7a1CMrvxflS5vqzla7NGRZzEho3QEJUg==","shasum":"7cafb52506bf1cdd4e52176909082eb7b09532bc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602069621-dcda121a.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffaT4CRA9TVsSAnZWagAAuzsQAIz3FDS7KRp0brKyrrIK\nBL88F00Uwb5y2JTIpjo4oCxYXrC9xeXBkvKt1s3DFwh14KSWU6XZ0k7AN9U9\n+MJfntd6IdYHChuT6v40gMiTIvLZJU/oiMpP0zoWqUWZb9XjF/Zb+vxCSvY7\nJx/9dAslGXpmPSEwuUlxbgMraFvYEEmizrK5S/tv0vxVfQ/JsWLRUzkCRJSo\n4eNdI3yG6D3eLs5PNxLMoJp2S4/eOwjQp2zPQPXUwwyNNppiVqK6sCIRU3SY\ntSJ2epYT/Jz9MGv2jAfj6/d/9D8vigvABzG3rl9Lq6hYX8jG1MAd3KvG7qBn\n2RcJbbjYYhOUPO1P8b/A/gQvvTs4/ukukmGWkbG5n9mRbbMsLVi49VeNgS+M\nwOdAlrq0E/EHd+zYtc/FDgI/tTOl91KXugXRpiA+3H07fsSGgDiobKFKpa5w\nHdMzsu+CKkno89/3gdB6hqfkFytBaR4/h/qejRgaRXv9UTIF2S3mfh4SWaXi\nF98t3TnEDEc/q4jrMFWnLF04ZaYwsVgtqA/k59RO8s54+8cuerB6rxf9EjVk\nznxcusNtDIuFvnqcpp8g6lp+7xtGJJgogsA8oXybcZBY00guWaG5iBQtsfyt\nUhJWnZz2m+ycyfOnPhulkJsziol4gTM7gXYz98vHgRvB6KXDexJzg0lsiv1D\nTHA2\r\n=bCXV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuvI4RD0v2b3JzjIkDgjT95kbHj9q7yfbP//aLrcE2GgIhAMarFRVABJLZ4jdULCakSXWAx01fZdPDxCOQnJeDDpJ9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602069621-dcda121a.0_1602069751459_0.8508765616595226"},"_hasShrinkwrap":false},"2.20.2-next-1602069864-f453a767.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602069864-f453a767.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602069864-f453a767.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602069864-f453a767.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JDlKsY1bPrPzMFGNBapXxeY6iUNxvU2d2W+lsF3nxoMbgCqUXXM0KdHkk08thE02aephi8/YC7CREJ4GXmZ+1g==","shasum":"5bb193a27b7a2620ab17f9044a5acf5a755aa745","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602069864-f453a767.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffaX2CRA9TVsSAnZWagAAW8cP/jLwFbwVLccYIRU8GTNu\nahoqeBSzTBHIPcB8pcJE98wugay7w2fcidiXNLwoHXYvHPlCXvLEEoA9XMA2\nXDLxKGslHVfewGfE3lMf4Lt+MaijLlM2xf8jnM/3nM/NAO3ZS2tcMgiKHJ8J\ndrlfkiZ54d6aa9DEPx6S7RPIhl1q3nIyBqoF+QXoikztdW+1DofNaJkgftP1\nSNvAs/TDo2cvX9r8/2Qr8rDyKl9Ul9nUdfxd2e1SdNu2HrYv/2oKeic5MrAb\nZmaf0po1jL1SyiJifwz8N8xW0mEChidqul5ckPCIj8r9D/+hQzyLeEqg8Q0O\nTgouUeo8W16Xjt78KIDq1MQBdUwP7StiahBbFyDvBjJj4TzJiOp+mKE9oMzP\nqnCjL46La90OZLXEHi3cqvW9VTYLOeNCg9bQpcRPv5zbucsW2WigyWKLh7dk\nr/4zSc+MGJ1N+RAGi9Asvf/OM6j+GtlZ1D4vBCj79CHIarbsouBpbT3jhbg9\n0Gx8A9Y6FaUt4st+G6DDSOX0OWJ2hhVS3CnVLc+Cj5jMXwKBjaQPxwZKdSh+\nbc3zRpHB7rlO9qnou04yjpLgNh0+RIj5UKSsrG0Xld+nWz/gViGtNPLPBVIA\n2/flVe6DzLdP+7uVvj5FzBDXclUENDjW6ejV1EI3ed60IfK1KP9s35HjkDWV\nY1wk\r\n=ab2k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG8rx4n2nDDEH3Ftx8BG7UKomCXBCBWfsug7G0s6Xu5kAiBhA2U1oP3ylEAjmCgHwGYpBAa0ABL3x1A0HwFiZnm5kg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602069864-f453a767.0_1602070006403_0.10699610725344466"},"_hasShrinkwrap":false},"2.20.2-next-1602070157-580e2d65.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602070157-580e2d65.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602070157-580e2d65.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602070157-580e2d65.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vFrUZDZbpQJXhtKv4gakW693+rjOjL1lCu+lEbXYTLhN9WQbIkFkdT8Edw4x2yRJ9WHf+Z/zfwlWQaE6d9sRFw==","shasum":"3b2076809761ff3cd806b1d87a82e45b0b24e1cd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602070157-580e2d65.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffacfCRA9TVsSAnZWagAAhfoP/3AmWJHULxwlX8M7Fcqx\n+KmxQRfoNBuQzYRlk2G5ULdgiQ5S4u9odnygmjSVuqFZDdWs5cGqeNTLsVDQ\n7VPC11KGdUsrwdM1Dv3C9/qZuIn4ARzxAjhwARJ7MPGKnBiXIh5TSlkmDf/l\n1bRHZ08mfGNCUqRyXFsJTynpECYDtpqyM7DOcbNnYR+e7MmA5nxH2UVxUWql\n3O6SgquR9fnXF2MATLrxhdWgExGpi+UeoFwUIwxBADlLLmEY2RoveI5gAItm\n8uBM4oAlIhZYzVoLhqhIktWJXrc4WYw5y+QkZs0Aku5l51UGN3+q0AAFUkE+\nZzD0A1I7+8JNpgsnSvZZu97LrjulqL+Y/tCU/oII8U2j8zolsT9CXbcyEChn\nyEWvzvODjLxoba5JdqdNWPSd7ne7I9vFqw511KxiUMaVVIe4KTKA0E1g8g+h\nd/eS77O3uT5UO3wgye5KVeJoIU1xlp7lzh4tREn3/oelYMj+uS+P2ZvunIK1\n/mMdHbkwdrqov3ZeIXy4SM38Fi3kGXiV0wkuMB2vVM+XIFRGEzwJm9yDsUzs\nMsfcEaOPmtXD5N+cDtg531Z2q6xXKYcYUSkeWPH9a4TDe+FFSssKj7i5pNwX\n9XOp4y1bGgqlL41iF/1UUSWCGOPgnOJhxbQ5cQSpZ3cq7Qqye8cctx+Sgsvj\nmR3I\r\n=0D+s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6dVYyG+i+SAV7M0G3eENbfYybmKGe6tXHnUIJ7zYhLwIhAMskq1nufS33THRXTJsAPd/j9jR+HLVA/YtRcVGgLlU2"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602070157-580e2d65.0_1602070302944_0.6916927810385658"},"_hasShrinkwrap":false},"2.9.1-next-1602071188-1bb77e00.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602071188-1bb77e00.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602071188-1bb77e00.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602071188-1bb77e00.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-G5eVJVFI4PZ5ONsprlTFo2DxEM3xMUmTBrdchbqPcbeMcju3TXziBVATrnnZfMWskuXAlbQWlPEv7W4YddiLGg==","shasum":"03ddd68e43570dfd1f312e6a2da96774bd8368e3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602071188-1bb77e00.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffar+CRA9TVsSAnZWagAArM4P/A3opjaTQxgUDqHpoNDv\nPGgS6W22vSm1lLL+2zN/Z4O7Oapt12E38z/EhWa2bfSLRHyfYt/PjoAwVRV1\nOprPrrFlIjursGKirjXD4UYhKcFB348VcFy+pPuGCCGjdAKcXwKae2UsLxdC\n7D6U+n3gb4lCJiEpokqMPpkcohglvhQUNZXDvexLfZV6TL9/y9mSakBrkdGT\nr0rFlSWDFd10p0q30+FSNOK+TAMUHXlpbMXHgPgJnp/9qHN1l8/cFKUzSQrY\nOUPxdaLrAzO1y9hYb1Lxw0uECcIQM01vgKn/NddXXF3IykWH4Tq4BVqnZHex\nkw/ARMbgEj7xnqb7Zb10fgUCpYjmZZOWqErCFKxzHvr2liH7tjsH/JBNqM27\nCUxI8qyg1c9tq4X+XoydlAa6PvayMK4tKUE0kR7fH7cRWiqGh1MgBBbJ+Uhj\nwsDxdCqGMfKSuJGABt19Bnkiksv5M5NBLyOmbcAYJ98FjRzvwzhfreV/C1Gb\n8gCeBF9VjgU6t8+jGACzfvJZIRzeifllvXAPw2iu9a+P2jwmE6cjD0nQiZ91\ntb5pSMS7bnA79jVZtXtwulcEYwK6ZUz2Uo/Oh8mdHEhrZwEE1O7HHo2om6cT\nMWa5qniALs45FYfWDIr6VenA9geRRYDhQ9CRnoxgn6HlhQWU6qFaGi3IotNr\nKle5\r\n=9BlZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjQEviMAac5DSbgXVjkBVruHFVc43PC1H8LSKuXOuSigIhAL6TyczzNETsVaeB29I+WIopRHaLpLlWdWcpHIE7e057"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602071188-1bb77e00.0_1602071294387_0.585096553067963"},"_hasShrinkwrap":false},"2.20.2-next-1602071363-f793fad8.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602071363-f793fad8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602071363-f793fad8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602071363-f793fad8.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oMv+5H3+RHVzrxayk9lRL7h6772GEHxbZN4PkV4caJuqc7uuFR3vF4zbbQZVBT75Ntx7CaYw/F2T19oQomtUiw==","shasum":"078f5192e194d8e95948bf79f96e9500388a1f81","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602071363-f793fad8.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffav3CRA9TVsSAnZWagAAvvYP/RrZqHZl+heRImfJnVAT\nRDjdMrj+KnUKBJ0/EJ9+374xix7Ozsda6Jhn1rpphv7ScGBmpc6euxTnnDXZ\n+PY44F55+DAliSlgOSEWevP22nDDvbYjxFqdwxn7VJzJGSme1Ai1/GrYo80o\nTVwkNDEydllj3F6mDbvyZKR/yCie5RRoweAQEUhu06rQKgy5kxn5OnAlxNwX\n6GTrWFGFQWkqxb9yQsI4BLjRvSZCMpDsMcIFNehHJkYPmG/zmx5pFJ+W56XB\nqa22tSQSKVlSLZ5NBJ+dKBpT1OFR6Gh5BYZdb/pLb/OKbdLqhXY6I2Jy3le+\nEnOKvFWnuP5plmaOHwg2AMp7l2sZM9k1/dtNo5/FWm+F6PNRMJ49vX6IVnVz\nzyd6PlAdJ3IlcOkhRbQncD+Hd96CtCQGuqBG0diZVUBxlOFoTzK0W01VES4b\nNxCP0y1j2MVagSSW67XrDA6OOp3/q+zkkKXnapW7X5oRpO8DzSYRFezMN+rX\nXSl+aGm1oFhfSUVtlfpvBjyMelER4pmk0DwZg2Xnk3CkqyIlJH4fCVOztDg+\nynRa96sP/PRNNpZr88Ba3uBrgIR6ua+uHSAPz5Ptcrri1wx/MeI3pxWa29gg\neXj5KhrmAicTaX/JtaUi3Uf9tUzCtNE2YPzdqKp8PjgVWSyejqff1J5Qo1Cd\nmH+g\r\n=jGKT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMvYzHUcmFtArkTD2GQo+QWjoxjZybEkhCMtNlJFKkdAiAZwnZCMIACUSXKLT+rUotOgc1q7darCtTNhryCcI91LA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602071363-f793fad8.0_1602071543186_0.7025338493139386"},"_hasShrinkwrap":false},"2.20.2-next-1602072578-8321d0cb.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602072578-8321d0cb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602072578-8321d0cb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602072578-8321d0cb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eR8p4wWu3nbD+Lv42Sw30aZhKdMnTjK4UVnubjG/wjNcNo/jKqFFlqo8e/n4Z4ZD0d7H+3GDtkyo+o7LbZz/5Q==","shasum":"17dcfe1a28ad26dee274c0f0c4c654ec6bf6b18e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602072578-8321d0cb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbCLCRA9TVsSAnZWagAA3YQQAJXdbF8j4ctok1d1lYpF\nH08cosXyues3kpq7fB/45/m0VpgyMOy1cvFeiDo6r9ol8TwCEsoHbmfaaPmS\nFpInqhbTOB1rljndeJpkWzzAJokl3yzNY6IW655MBmLfA0M3/0dJluz+PJnG\nn9BzY5Zn+LntYpJFJKx7sFF0KGYii2mYoA1HoHrGeFBBPs6KnxOOCfJRGQLS\n3XyA5AYjBEapRtnOdsrqYdlBjuVqnftHYAY9mAZK+IWC/KBTXDADkUd7d2g7\nEshkk9I+7+JOGcm58Ukee9HgtdJYkUYLBxaEqAhN9r9id4Lgg4JbHpJuUzOb\nh74jNdbHYnnHSxyzP/dzfYCZJrDwHjNtbR8CBp6hKAmJutIO0Dft5tdMG5I+\nuhzs/XDW3wYQwVNr6gJPuCQuiK3bYE30QFc+IA6bh0CWoir8nLONEEQOqNCk\nwWAjC8NMzI4kJWcRc8AosXqpWbeUMDODPU2bK3mvVszUiKYBZrXKC4CQ0nOi\nmf1IVn+pCJLIXd8HiIsfHJjT1wyzWCwtpQ8NLbI9geM/SBP2jtSFaIYrW7Kn\nHsXVItxgzvhkvEb55iXFj7+DjhRAJdri7nAAs2kH+UuCTeGunk6lqz/7t0bq\npdAeM3u2wnc+Wgl6gi+MJViuhZo8MnqqiGtPxP2EBMFB5FajcCOSsMP1TQ+9\nlFuH\r\n=LBWC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBT6jR3J7g2ln2fij3deNcNgj9cpXials+XjP6WdIy2IAiAfDl0DPpfhOPV/DPBQmj3/Hk9O6TUbpz17QMzG+DrdLQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602072578-8321d0cb.0_1602072714810_0.693114836284457"},"_hasShrinkwrap":false},"2.20.2-next-1602072663-ee8684c1.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602072663-ee8684c1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602072663-ee8684c1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602072663-ee8684c1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N0/ndoHrEsUtb27i96EVWo5JL1nWpMxXcrBaYEKGXPf50qQFmZWrKBMbpQu34u4OfmdFNb3pdtbbxZvl0+ebsQ==","shasum":"e0a69a26aa6702e4d3392838bf3f19050beb33cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602072663-ee8684c1.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbDhCRA9TVsSAnZWagAArpQP/001El92cFzNgiIVWIj4\nypez06Y363Wst7ZsaP/Ebk1s0oPpGqiNKIdBu4VXQCRtYmFoXMEcnQhloS4P\nDhBwT+RCmRFQeLSXrvG60nKEeDYyIgKEWt0SpNMu0pKTCvqgepHRKEPqjyJ+\n1atcVPX8qvomD+AZBuhuX4ZEYf3c4kBxcg2PVn2TQHSnUdeh4T3SYy6nSrSt\n4fs+Y6W+YCnsbBQlZRvFtdadjcnmfYFECnksPpJCFVBs8DdxwK3J+u0K+V1J\nxFqiHshNtH0oZ09VMS5c+FEl4jp+MXcBeNyUUYn7reHywhlkPCmsHXvaHQJv\nGfLa1UQtX3mRwkVV0yFkhwANOkAjao7UxdbWvPN0ycKPOKpYmBRPA2vCC3A7\nE2E5S+3yYAA6S56xmij20Mo+phPfDyIt5ww3YByA+6ZN1drPK/055F/3vVAn\njupgDaAE6Icdx2EOkb/hifU6xD+E8D4mAIX3gqR49xW8SBUcB0Kxfo3RQEyI\naaT6tAHpb1HOGsvLJu9C1COmQfmiU9Dn8iu5tXLJcbBmjiMEMc7VYcxmsgLJ\ngKdPyj3FQUbv8dXy1XajRthGdlM3AjtNqch2LLl6CVBbwKabki7I+wwm7TnT\nRkEBXRnwT+uiXGPEzFEFs0CNptc0APAvp32H5TCN8wC5t9PIza0bVFhmwYUh\n18Eh\r\n=D9pr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAO0k/Q0r7HeJwxhgsPTmoQFBI9dxWwhl3aagzmbadB2AiAZy6WDnm7vMkHy+Zl9VfyAylnq2ZirKmFi6R9+KODvWw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602072663-ee8684c1.0_1602072800498_0.7933068932656762"},"_hasShrinkwrap":false},"2.20.2-next-1602072970-3ee471ee.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602072970-3ee471ee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602072970-3ee471ee.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602072970-3ee471ee.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8MQOIQdC0inPoGsTThU9U8/fK775o0Lh8ibqMc7HPihZl8isOTlFfDyc5tdX9JwnPe2L/tRB75ECUnGHmfrwcA==","shasum":"62bd40afb0a234e60f6b2394923a31f00631b664","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602072970-3ee471ee.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbIVCRA9TVsSAnZWagAAoY0QAIIARF4mF4JH3oBDUJ+q\ncyKJt0/qx+pIV/qIsGJdm+l67mhsK5TWaHAqLuLytlSaWVqoXOFSWeTLuHDX\nua0RjL6ovCM+0Y7l0mbTHS5e8l2et1R8xuKQRGP11odOTE6BF/qBV8dmpdLc\nGRI5RIOdrgiukO7ymRvYdwbKaIt0ckcz5RV/mkl5rXGylSvRy985H9SjlS9R\neLzLgSytxuQB57QL4gVtpAV7smhbfp/kyXb2FqA5XcH+X1O1ZHiiVRjvxAX6\n2ffOT59SUAvS2Q49rTrFj2X4tLqEqhiX9MJR8ZEu6Ylj0vut6AkcvFQBffs1\nD/5OiPsY71ckloP84S3QGhyKa7soLaB31jywBqOWZfgxIdd/RBWrerWrnrve\nqWkgPnRpfesqUtsNqnjLhlEpXQS2Tx4FBA39fjvo8Z+YdkewsqLrUkurpPFG\nHY+9qDgxud3LJmRoPiTvX4MR0Zy6+VV9xI5Z8WohrB1dZw/UoiEjMH195f60\nxmVgySGTYX61KBapMqC7gBnHAyoEXg2Z2+jDLdKJNBh2IAT3iMI7RJoZu3v4\n5+RdG8kdxHpGC5KKAuw4c12FV7f50GfGjKoKQM0OLnWrDnsTKUVI59vRCqbp\n0Y8OwD1fTJ/rYt/jnvjYR0pItTuvf51y9fKLIVYUDeKTEFmqCLhc7rdoiadn\nhIcS\r\n=ukkP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFyhkYu2ZcLp2fT4oAlEE6PHGFZO/6xqzxnhvEAhLmSxAiA8ay5UpMamcz0IoIjrZm+HPdL+XadkOG6LQ79Hy6VuZg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602072970-3ee471ee.0_1602073109558_0.792245060797679"},"_hasShrinkwrap":false},"2.9.1-next-1602073190-b2c916cc.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602073190-b2c916cc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602073190-b2c916cc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602073190-b2c916cc.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Uo99TVSZeYITnHARasq6eaSpK2ctNnTphQcMdKBnSEJ8weqZ9M0YFQ7J61IcZ724yneeqbeYqY6JFmwz2DlNLQ==","shasum":"ed9d497ad63a58b1ce746018904a501dd2a07667","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602073190-b2c916cc.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbLYCRA9TVsSAnZWagAAuqoP/2lQ8oCi4Fvo1dDduGqd\n9ZGBPHr5NmpQ2odI9/lIYJCaLz7JV327gwc6yd+hujBhP84irlLUGtlwqAxc\np8cenFxCXT1eRg63fnjl7c0LWiX5AmxDUqe2jS+NvwcOGmR7WxXN+qpzsfgE\nkVRTX1m4juc30iTPgq+i8tih4OwxRn/fab2oTT6Uu0EvlB2k/Y0k+gQMgPBf\nJJk2a+ZM3LHSXAv+PWPYSRiaqxQ3pMOU8o6ukV/cAqbBwCWiJkHxzZnREGfH\nR+TRqndKu6duT3/oHuGHBYpdta/9jDkYceGVdgWPSOgVayQChHdIywt9MxKy\nwcH73jOzdsagmHw6lZ6nD/2H7a0iNTIXnG+79B/3tYr65z52RrlIAQcUgrfH\n/3IY0FgzbKeB4N6CqciXDgWbqaq98vqe3ofsDHxVSjA5INU/vqonuG5YGsys\n54OzYibmbJjCNkuW36bEkab+RhmB52H/BO2rz7wbX9f0FRMFSAGS6ppu7dTl\nhDrcOD3osXIwIqKxkY2VB5Of+4n6MU/lijGgyX/ilqbRZp0IwE+QpPq/pBJI\nN1SWpgwz43ivys6LVNCQKEEICsGEuEiieEJT9faG5uRXGunZdO5a6ZB7fgLJ\nwruJ/ZXUDVw0SLWe8Qc0RTo2Kv/Rdy96aL7+vqhwncONZxIIvftd2RgKCA/w\nZMLX\r\n=lvxi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjBSrowFH2Y8REJrX03Rh5pusRaP7PQ7sJXNh4/Lu1RgIgW09CGJ+E1QPMqHYNx3wTWeMt0VgRj00AfROdA3v5VR8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602073190-b2c916cc.0_1602073304017_0.9542270452269821"},"_hasShrinkwrap":false},"2.20.2-next-1602073617-9c626442.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602073617-9c626442.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602073617-9c626442.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602073617-9c626442.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Bt33NNhEu4EZhYx28WWNMCgG7zCfIWJmvJP53SOjmX6hYsmjG8ATnPWrnUW+bMfH8cRLMjUfSt4fiuRAx6Mpjw==","shasum":"291bc4b0933cfde054f24ab374c4e00674955389","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602073617-9c626442.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbSdCRA9TVsSAnZWagAAHEwP/R7YYJFBcvk7eqRBjpul\nC47c8lVVZef4rNERkQTU0dHDheiJTc3zd6elAT3FpTQG06dZ4nfti0Vd/VeT\n3ywKJeTxE1K6v9/pbKfHvGitEJi1fgVfAnefVEMGt7V8HuRLMFbrazkxZhII\nCcTiQNJAZ1nku4QWKJ93983e2jR4k+KuFAmqBnm0wYP//mhnfYPfONEFsfHF\nE2HELir/wbPi7u9kyP37u/YacKAXEk2aYXmByRa4I4IT0C3oDFvbi0GwCZdw\n5t48fVyVGNJn58FSZGhgM6bmew3SAs/kQ47j1K33o3SpdC8wjqwTJnZLRe4L\n/gbcn7CUFjZwidRhfxNtcaYhcIrHxI9G8nlbmtNutZGj9vRVhsJT8+nLx+gj\nY+VKIFcMW+wIqrJaRyysq4JJchJvIFjfLXUvrq4HyzRAPgTlPtxhhrAf4rFA\n704aKL1u1rRNKRqZ2YhJS894KqWv/OKQLgSArnnCmCzV27DsjmkJwkB90PEn\nHCzMsaK/YbUQLwn+bLy2SkLsIfK5mqyVkhI35ixuEiEN1eXv80ZVjzjMZGx+\nEjqytvI4aZvJjtrLSfIAJOW/aoMkSrl33djwesnGrMSX4lYs92mfa4oCd2mt\nu4KQ1N7vj1uRKZLfx6mfMnsC1rTj4b8bp6fYr3xPK2mO9rT1ZJFNa4qcDEOI\no97s\r\n=4V4d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdgKVlJo4fkHVxkQJEnShOMocuQ1duGh6VFb1wp/oA5wIgdzLWu8ZfLAJwTBskQWdT/fVYukKQCVqwmAOZd3lCVPA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602073617-9c626442.0_1602073757442_0.3233679406961585"},"_hasShrinkwrap":false},"2.20.2-next-1602073656-544de218.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602073656-544de218.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602073656-544de218.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602073656-544de218.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-B5e1EQErZE0l/VvLeRG/AWZuWWFMiyN8mPw+StDFjEMyj4yxEjt19GP9IBl7LtJY2CGhG5TMtT5Cb/4S1kqmng==","shasum":"c4d41f2075dbc658a7586d7e6ead07481011e5b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602073656-544de218.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbTGCRA9TVsSAnZWagAAxCAP/2zT9JE469KQI5gDC6x6\ndhOsKF5UHPtdyHz/HQsn42NQ9QT5zZOS1oN7UgAld5R9s5/ZnQVWrMvSmQbk\npDHqePVExnpyInGRSrfidwBN7w4g5C62kynVjj+iGxhDv89foStM/bEHhrcT\n+vS+qKuS1r5Q/8tTSUgsvNG6/fgRfmSnWOUbrZCqAKbiENhcst0t+uP5eu3u\nO6t/3zLC58appnzLNDBoman6MeCTqsENxrchnXo/KfeCHb04SPBxZT8qx0J7\nXtpn5anUVoDOyWijbCmC0QnjlI89+lHbWpI1N5qbfTI7U3BxJeD3iJUCOMq8\nXxR9E4MwLS2jSJ28NntZUTAQjfFaftp3Mp6LxVL3JK0wnVtX1iKm4Ja84h70\n2bsPXSON3S0LfremCMiBv7fdEk+pqLeYvtbJ7QbNewvlRzPKYHbjS83VSF+x\nXIV8idjG2cx9Vq3FAQh2Ukj0fO0cAWj0SMcZyXNOI0aFb1W3c2Hj+F2CNU+Z\ny6cGXQGePOP4ofo9EQ0EHZ6CHNrOO2xOJ0DxGUBQW8gi1dEX3AWJ8VFLMgVY\n+c/R51in43TV/nu57p7MnAzs9kM0Unr66IH3dODQhFr4RCB/XUhe6lF3wlBO\nhNQNH25zATb89c9mvakipOPWjUSPgZ9s8+aGAjzMx3PyH/8nW25ch/E5Oods\nt990\r\n=CL3p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEFgcw7MMxkctBfoKvz0c/1TdipLFssvCCAYynXXV6rWAiEA2i/mQL9MSHHEGWC4chN6NHWl0frZIHp1u/0Bz5z6WRE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602073656-544de218.0_1602073798463_0.8759288626296833"},"_hasShrinkwrap":false},"2.20.2-next-1602073725-6756deaa.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602073725-6756deaa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602073725-6756deaa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602073725-6756deaa.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oEQzqsx85JvJKmsnA9mwryU9eFo3zVxvA0yYMYaURao37Jf16G1uHBeJhc0jBO6uqd0OZcilu14AeRdZhIJU3g==","shasum":"5fe06ab3686eead13f992efb8be3b35995ede458","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602073725-6756deaa.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbUGCRA9TVsSAnZWagAAe58QAILUamaEETB6sfT0LfnP\nVi3fZJ+J3JVpXxxryJuSARPET1pFBeSGrnRtowCtiK4/kAiz9GQhe0uOtGxE\nMaI2kyW3mx1tDAaXW4Fh+lKkfNFB7brKdx0ERgTbd0d2oP8VeftN6MhcpzCt\npEHLx3M5nRPePtHMsVUMeVWlgYSZ8XdcZCL8EH3VVjxFlQ/7TcIkP5JY4CyR\nsSx1KrQRTjfCee4FhKt/WhqDFASU7C10E/zqg/bsV66LuTy+GBLX4o/MJkT2\nAH448Ev3t50Qq/ZIOkEpWEKuhnnxdJPFZHsiho4Xqiz8blcWMyK4zh6DPf5S\nCa/FrM2+nQKBAbNQliL9pZyzx9h46o3ziBYq4SHfLLhxLxmjvOpjoSWDBnNj\nXbAlMJa9I6jw3X8I9F17+Iz715/2K5lWGSm0G2ZIAQtheI1mbPiemltctDWt\nhgtFOUfcAxbtwdu7YKj+Nkg5MaG5clkhhzxeLhE9x/lcgFLxQEbxoFzp3vgH\nnotIXN/C8D3LfhZlTaJjVGZDK9xLNW7vILYY3S9Y/+xbiCRuKgcYgJ4xUAQz\ncTVruyhp7lRzu6+NaBspsRIPUeYiz9GH6jUIHwBk1zC2+/6xDZwYcIy2JXAY\nQVFkiO7TOLuZpxo2fv0mR6ikaWj6sIq1qdmCKltnZaeS2gNpiYyzlfKULCD9\no2qa\r\n=xjW+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfUK9Z2V1K2eS21qchlA6ef807DpVTGQhCjlajGT582AIgYEsc0chFksXy9OhpNWXLykQ78+gpvtKj651Te95+TAo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602073725-6756deaa.0_1602073862179_0.3375208244105463"},"_hasShrinkwrap":false},"2.20.2-next-1602074258-40944e56.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602074258-40944e56.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602074258-40944e56.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602074258-40944e56.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YEjwfCT36Z4f5c90IEtlXt+p5LvVZV24YSvaKkyys6f3BXdxeJTbhkIuFCflQnn637eG5zlQIlKiLB1gZ/DZ0A==","shasum":"ca7af36111c18ec2c07b4a3ccbe57a88a78157f2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602074258-40944e56.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbcqCRA9TVsSAnZWagAAK/UP/1w8/XJhTs8kIX9PZOUA\nU4tIOsp1oAB4Bjm8xzZETjUtHEBV6paZ8fh17FfqK2krugd5xAVP5fnH5Z3F\ndpThXaWul2aMttqHCyEMn50oJAeY0js5g2xxWaWQEvrczd1kcBKM5fQ8UWtK\nHt++4TFv4ajI47hJH8OahD3JV7JXf4Nq1XdAldbX6bwH8+sJzfDkC0zlQmKR\nWMoJyLYVXmg2O+7Jn+D1W+waj7kylIzOYkdWmNLKiE1CQyRTgUdbsAU9LBh5\nZ2mTyo8Q+TgNxFAR9w9Uoaq6N58dRq3TIIu2GYcdtQRsAQ4z4ltytv+RrST9\nvNHVb0JOh6DL3Gm4brRvuq0JjX/uWBXt2ofB+TEGRRF2XLjvf+waWe+RJZks\nzDMZ98ISSkUv2bdNTdDEAFAsPaaxi3Yn+tUiMjmkqZD2sQmVPn9IF/MpciGu\n+n5qsvxsNiEDFW15IeMTpRFoS1/gowDpXg3Z+hNhSTjc/cPDTmCjGoMJCTw8\n2RlClhZxN0JSPJqLeVR/eQTCLZpzOB3oX9mRJA4H4HjjSdkarRMFEMmlRkr6\n4ogcjg7ZRVvN5uU6awRcYGkvsxkTg31LeIbPHpyxMRcO+hiWweq+lIJ2xJ2D\ndMKXlja5LwgAj5jAttB8Qho+aCs/NjpRUXRFqpQcHZMHigBOgOQdp52qBf+L\ngEPE\r\n=EvSy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYRyBF/bZegFS6yzKxYPYblhHch4GVIC+DDQqgorbvQQIgPapTZuAZ5TTyx16OOwu0Uy6SThuXnaei4JvqUD0lcH8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602074258-40944e56.0_1602074409744_0.5943474059349021"},"_hasShrinkwrap":false},"2.9.1-next-1602074303-31255479.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602074303-31255479.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602074303-31255479.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602074303-31255479.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JrcmNc/m/im2AOWSHXOELfWbYVVq9Fox56zHTzGsPu1fGBrMoAeWVSZzXqZmDV+rUXJf/970eZFCzp6myr1Jrw==","shasum":"61c3e2f65a46dda2f59e0ad84e0a9ce74f3d2b93","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602074303-31255479.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbc0CRA9TVsSAnZWagAAcT4P/iOQcc71SMMz0vbjl1xX\nSJjZNtIREWNmgWU/nzw0Up+8wrSYTfWjZWRWtPjhP1KKk3IGSmYhnaHFHun+\n4tdCS7UcxEVoMDeG/dT9WgOXvahZWM36VhwvbYnHm2yBFye7Rh8Sn8pPd8yY\ny6x7K/3W5GRBEqNawp5dqviNsSSHdE4U45UPdKr8lpLO05Y4r1MC9W2LvcFj\n5Z1FAbhcrQ4N6b4KyeJvub4E8CPizGygRQq9kL+PDegzmY9cYHXrYrDis4IH\nFPLX9Nom40iX8gMhZ0UZZr96gnbOrGlodvmg6euEH4ka2jy2I22ho0RurEm/\nCwJGo+qH3noG9NgsYBND/Kzn2lr8g4qeAMw2OWrcIaPR5SGBCsD347uYBpI8\nBE8sLsV1mOdg0fKm0k7xFeBIvaAYkWBYLhi6kUIeRWm+brydeUsQCy5qjsj+\n+CCeo59EzizSFxRzAp5zvcjwUDDm0akYF4peb9xFrHiH1lo56ACiJJq2WUHl\n6BJ4FCvMY/gr/U/9HLkNL145qUlt5KMLkGE4vvphgWLZmBwop3OxmVAFSv/F\nbKOJ0ZiY4fCunkzptebPbD0n/3nOU4bjHT50MLTmsiqm4CktrmzJiPcZ/spQ\nykkNOqyutSDkneU1VExv7sxJOlgJJanonUhtyy5fAoJ6hHP+d6VLzYo9aEIC\ncSaY\r\n=HI/d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBFyC/JozJ7v78J9nhrHHUzSi19YsMiU4HekmwI+IJhBAiBHkOzqWLXQ+vMWHZ4sUkIkIBPx5nEdyQ9juxD+Hr1dKA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602074303-31255479.0_1602074419754_0.8955703191449931"},"_hasShrinkwrap":false},"2.20.2-next-1602074627-544de218.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602074627-544de218.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602074627-544de218.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602074627-544de218.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4gckvhv2bSMVQwruWcs3jRToVbjjHRCsZrHS1cmJoFEQLQ/1gEVBKuh0s7nxQaMNV7/1lOzazpVbM+ZtvLrpYw==","shasum":"368ed4550455ddd66a93118fcfdb879d0ca7a1db","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602074627-544de218.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbiTCRA9TVsSAnZWagAAhusP/3cM4RtwGc7qBe3QnM47\n8QONaxdZYJ1iI4eUt2sHtbL1iDrdJC/fhftBkBFfyVQME1p6jg/Ty5YA69xI\nCpjSxGhw994T+Abeng7Pm0pSQPgCCaCD4uA6Vr+0XAN8dzBVpCjreyG8vpcG\nE6fGLDxMRehQvVb2fsdy1nDF8g1meqY2KEutZ7j9m4sQH7xcaHcC1J7L+tzB\nLO7nv2Ji4pI71jf2sCNkJJOxiWGCUXX/Eh+Ew3pRTd3UK98nYL3/ave3ZI89\ntYuW1VGCumxPY/t46W0gPd3PY8om3tYpjNijRIKsPsb/RVG6T5uja1Db7Hcq\nVkNEJytbfQ8fFUl5Kno62R0A3IqRZIjqqrelwRbyiHzDEtWoNyXV2K/VVbu3\nLfPcpgzrliZDdyIHYrStihbXS2eGkplKCjmn4N39J28+cC6KiGSp+CeQlmUF\nPJHCMsu2umiuO9TLjWDiWbHY8MnpKoFjZenFfOsyQVaTmki+KtTVNwXtJFkI\nYxWsa/ePhpuimoujul2CxJ0djRYfxUyMBUzlmkE99d/YMQ1ygIbPPhS1qD53\nCbqxjojHvW6i5hgQqrBOY8I5Xs4FTjaiUCzplaOU1KUXTJrKilzzZOOnfnkE\nt2v+JTsMyj4tB2kG4fRbfcT65jY/8CMSRDhRXadhKW3+INhcHq7zZusaG0jG\nKtot\r\n=KV7E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCx7zEwnyiAljSiOb0maiFO3GAKes7OLnxXF5UZ+HuHwQIgZbYf0GO3jq6TT3m7YG817qvDyB35CqmSUlH9MdLVbvk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602074627-544de218.0_1602074771215_0.027762918307176143"},"_hasShrinkwrap":false},"2.20.2-next-1602074636-d8e7e752.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602074636-d8e7e752.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602074636-d8e7e752.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602074636-d8e7e752.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Oe2Krf11A6krCv5tAm2sbLhKkkoaGDmMlTyGhVNlJAAvdKLQWrLzrTso0N4uzJSdBx7Hmuqe310qRYKQ7NMreA==","shasum":"dee5c7ec7144752ff410615231a0f6bb14515266","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602074636-d8e7e752.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffbitCRA9TVsSAnZWagAAErgP/jX2ulNt33CXWv5tohNB\nnoKU0P53NL2EIWi/MpcCtXaT/KqW/mTaGflC0OgbwAAwW71CvvDUx7G5O26v\nbefAfORvOTTsJbePAR2LOpX+ICIih9f0l+sGfznD45bGnVrjySULE1rfAYtS\nFrkOXevchyEvwIb3D/Ny922aeyfZr3j1xRDRCW0USE/QFGDYY0TnjbbGf3ki\nT5ZrK5J64JYL3FE/FjurNt922wJOddbjQaIA/pkICYcq9FQistZU5KxP4QCk\nG1sk/RB0gAk+qOedEf1spOtwYCQ6HUL3dwXPbo8LsHoXH3V0gsjYKoDV1lM5\npaayroKiLSd4t1EQaMwXYmZ8hjqBLRUfFSgX/7MRqOqmDNE+CYnel/lsWNNU\n9+TO0rX7lsYg9iHe1CXNVklaGuwEIe8X7vpU8enWPcwYi8bQCizp1pQeXELk\nT4KNUuXNtmUnSxpazCGyh+kDhejd5md7NX3+p+N9FzEXJcm9RiO1op/tYYYe\nQ8KF/oZHjCnZu4rnMoJhPD3r9TMY2KMVB+85I6Qzcm+3a/Y+RZT5/iplBq6I\nH10ewE2Q0rupjnU9Z5FzVBi4EVwwfS7Ic8p8xOasW15AtD9DfFHUV9wlZzWa\nJGR6+pPkPwvio3I4prjfzN3HgZdE1kN93qoe9CkuiJkxIuNDiqcZDfc9go0L\n16g8\r\n=yYWE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGmcEOs8kR5O8/YCuYjZsS2Iekl4M8y1Rz1QgIC8AmYRAiEAv/pVhvckuhKF1EuYSFq3iC2sY3EVH2wyIBscNX2AdLA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602074636-d8e7e752.0_1602074796141_0.5390745404720205"},"_hasShrinkwrap":false},"2.20.2-next-1602075706-544de218.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602075706-544de218.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602075706-544de218.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602075706-544de218.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PpddfvjxfQidX6ADJ/pqfWgAdmq5fFOOXmVHcyMThkUPPPSgEcpl2md1fHxILJ/tVPSgjQwEFIhsW0Mq/I5Ahw==","shasum":"a53a808cad93c76215edb10552106dcf15adaf87","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602075706-544de218.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffby/CRA9TVsSAnZWagAA1YMQAIXa3PghQ696ZPJL/1eF\nC6tDpsX/NEc8jyK7VP0DzM7odtYVjqfFkLyR4qjO9g8Mj7S7tvrORc/0ZAU1\nl9TRn33ABONeN4wLdL3/Tte/XKPchhX8eey08fdZbs9ZpnY5QN0MXEXtsg8s\nOgLDCSwqORRu7bhM3OtCmUBrlTVWAVVJcEAIxI1vszIGZBH0Ybp3sIv+ACkZ\nPKfmnP06SHcz2okvT2UQwHsAo80oIIl3rNM8e5O+w+ZYVz/I81BGR0LO6zl0\n5ChRvMO7Pi1lySJ99haNjlGgc5d7zTFqgeYac4TxRA2cUi7faFhKBJWEFTlT\nj/BiV1zy6FRk8jjUaSmXxcmZjGABcnG1gbxcqtk9L25vJTkE9o2sKqFEnZFy\nBWXgaiykRZhRHwB6hA20atQLGUbiscKObv60DRmkZQ2B/Vtlsgcjg1c8fG69\nSjkMDPHR+sVHMrNgqvfcac/rVd6YcaXD7JIFshnALIa3MKXsVu+iRgiX7T5U\nIJFm4/yRopTNwQaXSZY/tfypQ3bDUR+myPxK43xUdWoRpBs5+a+PAvIYuYxW\nygvoDOPWw8VqwP2YVpmsqYBq1undVFRxwtQmnIp+KA9oIxk+7UpnGHJkxNOL\nfmotC/3oQwos6lRRAqKr4cloqamvF7qRYeWqc5bo+WVb9dCAgb94/LEut0BH\nw4K/\r\n=76Iv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSq22sMQLpfb7WvgL+tQ/g15hzJHda9haVy9Pi3kloCQIgcg6bNaGqM3iyinQlhKNZhWvuZVtJobwZTqbIdVc/UUU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602075706-544de218.0_1602075838529_0.12284218243414546"},"_hasShrinkwrap":false},"2.20.2-next-1602076465-e649494b.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602076465-e649494b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602076465-e649494b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602076465-e649494b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4glQRNXcLz/TB6XAH5M423Vi7clR2H6/AIo7MJcBgiTIdmzTt+4yr2YjxDrYEXVCPg+t3Eq7czIYyUyuiZXedQ==","shasum":"0ef522c78e99fb00f978235bd48f383b379d787b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602076465-e649494b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffb+eCRA9TVsSAnZWagAAVfAP/1a8AjNQhmwipaN9r5+M\n+rZCZC1Rk7wuYmNxLesCjVsaYdy1Db386XVFzIHvVHwxrTKYv5kcFVTNgF5x\njsQAcL6vVqostupRLfx6EUg4bsczlf3RylCMB+RjEgAH+2vnraSZ6DnEYOrw\nZMvUCZ8F5cgjB+S3QFPwtFrLc0yHSYcWeCy/k9a09m+aVcNakjDatDK6tblK\nWe0uBYe44d0PYnT2vt9eW7nGPE4ao2tZM37ejZjMfNty1hvdNB3r4topvYbH\nFydAx8UF7dqYTFuu8G6FDkGMzNkTX4Hhy53iF34q76f2Y9gCPTSATav6hD+7\nMBtFmbr6Ixse1lm0NPdZtum2oagliY7IUY3qFs0jr0pAaFrsIt5H9d8hfye6\n+TP3q35RwfuSsuf1wn/8E6BA48uUsuPpecgWlVClhHMOF1sep9Z5l8r7yetS\nAy9XzgAecr0e50fPM1yNbabArNoYOWxVUo4FqAWPNkOS9hASBUBG74KlJIax\nZigsjXH3+2Fb8Evae73SCa/lV0bGXnB8mJCkHEIRwlG1qPj9V/5Opxw3qoZo\nb+tP1QSpfXTFXUfPtZEs3L1tfgDKmIKcKNrnP4S0gxfvUdjXyKBsN8VSRUnA\n7UOuZhEAxaTE+8Vt3ouGch50KWQ4JoPX69hKi2j9SEGfflHb3bej2yA0KjLK\nACcq\r\n=m0Ol\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmStucneundOMz4zI1WJU+0PtIklEvuIqUad774UOXkAiA6v58WMR5QaEJO0LumhYwjILY8RCI4jHMiadRn/Vesfg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602076465-e649494b.0_1602076573764_0.6917204266832444"},"_hasShrinkwrap":false},"2.20.2-next-1602077083-c7565caf.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602077083-c7565caf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602077083-c7565caf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602077083-c7565caf.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-M9q/Sa6u6/Fkc3ktO2tjyUKQwoia4TIfiHkh0nyXOBVAHkoCob4EfdlqniikzwgVQT5DN+4zpc6NkaaA2c85Lw==","shasum":"b2b5ecdb11c9b62f77ae82d2bbde417abbf3b8a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602077083-c7565caf.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffcIoCRA9TVsSAnZWagAAE28QAIExLeXTaf0jmiov0ihE\n7Hy9Y6Dp0ThLyqiafPmx2BTwH6WYfkV1isfO7S3ooicMazCS62RRDX831f/U\nw0J+iKvXAobyBUYPP4/NExoEpnRv3Wni992giYCfHiwRz+iYFPMn999kyGNt\n/TernaBceJ0ItuxUzRYDx1NEKaH33UupU04YiXsAQlwlHiiDcE06PB/4IMWN\nEJOsiDmSGvfO/j2WVG6YiDA0aUKPNvdSVJFlvjR1Ze5WCTQP3CrVbgl/rDlu\nO5fOBwQlpOOVYVYI7hco0NaywDQh5oSqm/tc7IzQOtTxejbSfQnLjx1XnME2\n7NsyskXA7rZfwd0aqp3tJEG3SIZSZBFrum+Yqy+Uqf8Os0len3WYkTEsjWle\nF/RdIQslKmy31EroGcT1Zj4TlC5uv3royplaN8flPZFZ7+zijzw/oinupjmk\nk1/J3U66uRMIMQf71XLpyTrXQYioZv8ta2a6rfS7jI+NiG0XUVL0ea/c/nY/\njKJKRe1HQulkYbkaIanNlnULr5s+U51FTn1jQfTSK8qSZYq56JXEieRwJo/W\nHmxIomviv63j70qGzGomGhUbUIWhKb7Uc7WQcQxx/sdWBVX5DbXUVT4N6gSM\n3w6BGm1E2FFQ/XoATzOE0GFqOP1LW/zcR9+Lxxv0cvEyWI20UVvYkiPwPAOS\nwvzh\r\n=o0Bx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHaOW6DXPCVxVwpqYjXGIH5QslT6X4mLjHXUPjbclsJ4AiAlXwQ2cT/2Z/2hoyvFbIqClwNeHK1wSONS40o4mjZUeQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602077083-c7565caf.0_1602077224119_0.9906096705335448"},"_hasShrinkwrap":false},"2.9.1-next-1602079646-022decfc.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602079646-022decfc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602079646-022decfc.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602079646-022decfc.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-bIZtIaWUOqX4TKpn93AsNZR/jynBW7O7p+j6yNCnKKMBwY1hHt5zaEWBlIzAwAVGNY1HTJA7CVK4K9ae1i2Bpg==","shasum":"506982db4fb8eddeecc4e969db9f851049c4cfd8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602079646-022decfc.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffcwLCRA9TVsSAnZWagAAuPAP/RHVQnjOMKGnbGcuU1SP\nZ55LV+0gEofoZHsdxW9GCsGgvHWXJMxM9DU9dOTeI9VeFkkpQxX8W/TB40rL\n/zac2Mm44HOpP3mVysqbr8ew4c4eFQai+DJq5s7cNjFT/fXxH94keqzBDXU4\nnMOJc2M0+Pnu1wLCa6/9Xxcfl8oK5NOyxOHlNrAtJlzYYsXFy75TYMzXVYeM\ncG50F2czUQCVlwJufzguuYpTHb9BzPpTe+1AL0VPXHzwnByhABqAZ8ZhN1Ma\naGwWcaZkYPs5x57X0+yH/WN3pdMu6EEmFzo77XKNNCh7mNahbpYRAFRJRbAn\nbKikjRt7+JH+u3kiiikFBhLvxl/u+1sxq8l6wv6W8FK2KvKG9VNLfIlmfrkG\nIYNMMKl5VDxxD49Ic4pryajJYh9isekV6TRaYyAeptUaBuxZJqTPuCGx63ol\n9n2AGqmR012MqvXvW1Dx13iPSm9dzhky4Dw4P6f+aHn/rs4ck9rVzNRoU741\nTMU+ovA4JLZ9aNhOvjCqS5VNe2Zthg2o5GXcWPHiSrtTVtmbdTqLpohE4smH\nSbZFahPjYRilJBFyeTU/uCqHV/0LWfRkxez0HIcsrFe2ADpMc0YnbYR5OxM1\nCToAkf998nSARghZQD8gLQxEVKuP7U1IeHg2BP8XyupFfT0ti9ZGEu5Ls8l+\nsvKF\r\n=vpNM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuyozDCSy2ze8kr+vm+zYHZfPIwoF06jlr1BRPpne0gAIhAI+UKAhcoDXXu5VoD9pp3XBBqNWrPc4fa3HG9TwPmCAV"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602079646-022decfc.0_1602079754866_0.41656710002385755"},"_hasShrinkwrap":false},"2.20.2-next-1602081730-40da9c55.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602081730-40da9c55.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602081730-40da9c55.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602081730-40da9c55.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ryNkBY3+b90PqvfabAPyIdLLMEF6EqPgqlSeYDuILbuPv2Kd5S8Elp8KAhER01OkXEdN95AqQLLf4B9lTjvF5A==","shasum":"6a2b0fa05959b19574da4f48a9b927c679eade9c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602081730-40da9c55.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffdRPCRA9TVsSAnZWagAAmpUP/1S7dX0TCG+6FxWFxaTe\nth4fRRPJYlgjuAqDZfQ6B3VPKAzfCSsNrGGLzeXvZlj7VSdwDzFS7SqvEFf/\nRq9uD3mq8bTHQf5bupIypSgaznh+LBv7OXDNwqc0J4E0eA3zZLGmw9Bg2vJL\n9N5Ku2vnDny2poWTUbHZN9PmWIRyfNK+SnAOw3J9FOV0WQmlvGEE0PyAlrsY\nHv7cAjGT5SuGv6Fslg0xtiwTtt8c8FJlLg6tn4BJg45kQG+9cRYll0xzfHHr\nDW5cMNBIEk/rCUQlBHGLhRFsVdw3/HaBqbxiIlk5DRLNr8Y6Y2j/AhL9cbe1\nZz0N//o5/JPHVc8B6lcE2Jb0xr/IdH3Z1TUPard6oMv9QwY4sYmY6PxD3h2l\n+OcCL+shDOd5BiYZiRQA4ae01szqw48TValmKqfTkbJETxNPA0VvCn9PTTRm\nd6V7iKqHffB+iOCxJk8kbGw7/mw4OEJfZ30Pmyl1g0c5NkT5IecjbYdS4Agc\nR26upI/wzNWJQb3UG3CfAqa/KERV+amf9Eyvdwaj5V99idDh6RyiFhBRg2Gq\nlpXgTA1AyQeII5Sc60nUveCMUJbqlorbxqt17Rt2qgFK99QoisGtOl5E3swA\nJunMuskZ1B5tOMsxLYJ3GR0uFpp8i8SWxUbbp6bqyRD6/i6JP2gpXCTqGUX6\nYeLK\r\n=LEyl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFlMKoxB0A00kGxGj7a5knVRHIIuOL5/Ue8rJe9TCDfNAiEA5hNmkxwBIJlwpGDN5WoTXPt6xIee5FKKdtwCJjrhq08="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602081730-40da9c55.0_1602081871193_0.54330541192927"},"_hasShrinkwrap":false},"2.20.2-next-1602083221-72b8d339.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602083221-72b8d339.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602083221-72b8d339.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602083221-72b8d339.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4+Q66IX5OKyK+M+jiy0TOPTVaKYfa8kOAZe87DFR+iMeZC2ilsoko0YhD8tAh1hcG8RPyShhf2rs6RZEDARnqg==","shasum":"963f774380df440464930a4882ed0d6999574193","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602083221-72b8d339.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffdocCRA9TVsSAnZWagAArTgQAJMfsXl6LpznKOk3Y3ib\n2j4v1GZ3Ek8JrVKxnVlH8YJyikNBeFDYu3k8vAwZ0WGYIOIIMENnqhko2atg\n+cCpPej92aHTMp00RfSBSQBw1zpBoCGuxtxgPS7GPCk2XRu7q6ar+LSiluUb\ngEPqewK02Gd7eJEsSPRZ+ac9lOXtWHjRdjtZddPuD9xPhsE61iOHJlCIQ4Bl\noTkueYSh7plH9NGUKVtFF1wYsYHBWFJrnxLhFUMfiWA4dqKXcu+owtcFVEjI\nYMCe0SS+3BU4wqpoml6lyS0hNFZNC8CBbFMJAeTqIPab9rLAXITp5G74vQ5Y\nidFYm+abhy1ji0pXqIFsyxsZRLCQ+Ag0K8fbIqhKp8SW7hIxchO3druAxB0y\nhAF+BK67VuTqC9WADFkefxgx0p9jgn7jrkydjtQeqhjCh12/giMS9p99dRIF\no/nSYUUiXhdudO5hD0g06eFBawr3A4aXAH6dN7PxilRWTA1gZZBCRutplQG2\n7yr34QxklvhSKt/mqiEuk80ndHGUj3efdVyPZYIFTyQQ4CuPjlaVUPEVs5gj\nSYB5BX4QgJpc58Ll63VqGGpYyS7YZkwOc9ZVAnv9l40//PUu7gh2yf+4Cnga\nOUDMaNm4Z02xmWdJu5UlaHB+EtXq99b9Lvyrdujc/WGP/dP48i19l5GioiuF\np9WJ\r\n=3hrO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCImLi6yQYig+cXoPDLX63+Q7aSpAJNJnGzRJOKP68+DAIhAKCIetWsnMkuNXynZpCzMDOE9/41LxHqoFN+Gc3YUd0o"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602083221-72b8d339.0_1602083356465_0.9856707017143638"},"_hasShrinkwrap":false},"2.20.2-next-1602087350-7de52fbd.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602087350-7de52fbd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602087350-7de52fbd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602087350-7de52fbd.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Hhr8xZv3k/Z+/FyHI74v17WB10u+wbtCGIpSWja2JEFqFniq6WyAoOg+5u505RLhwmyxYes2CItdeglInovBuA==","shasum":"6113fafbaf419af908830e566a1214925951412f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602087350-7de52fbd.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffeovCRA9TVsSAnZWagAAcWMP/RMmoFm6okYt0qBFJOnr\n/kJlPf4ft6l8+SWm8DLRqgcRVmNrBAheeKM3TZsBc/+hLxha5euKasFTirpj\nDwSSV9G9ibbaNuCFz+eryTwKxrfS1G4YqpAyfxiOIszLQ0VXirblJf3Owy6x\nI9DlCGBCgW1hKQH48732a85Dz67xmUHz/pYfxnda6DZLz0eA/ir5FfUiu/9r\nCjcGNfplo5ehHUKC6ouz+0MRPT5qGtWFGRo7y1OgBSJtXEyYoTGb4G/MP0XF\nR1hEh6hL3gXiVPWbXMO2JnPUntYoQvvfC1FN2PIlXJRMvMU/GkLFnbpExuPn\nppvi3qUkJd/ROmJwuBAjY6e0mBrawhhVBlXverXUCSxMzwbYAYnrUkmkuhLI\nNtFJfbSQm8eThWp5iJeZJstoXJg4x1adTx7LljmbBwU8VqjDlzgrNBC25L2K\n2LS/+9nGbGdPl0f/4Lq98TzVknWaYuqWUlAlPlJNM8X+DwCRXI0u0RRAgb3S\ntfkZ4E8oZvbO/ARLczPDRSC4x3/J+HFbW13Sw5I7ZXxE0xfuMKwk8SsfumMX\na60IawIwgMBVbCgiyllEQpSo0FfQq6MuCxN0dsU9aJEYt+p2ixbk+JOEGJ3f\nh//sIZJLk/ykIc46/6qIS3+oOu8+llCYSKuMD7mBfarHN+bsHdX0JkXmifMc\noFA3\r\n=pJUQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpzuj9/ti3DaDcyD1ecfezM9GEoEsLZOlCh2pHYTZvSQIhANmI6oiw5/tWPDBm/ZexgNhjI7rCNumh1BSknhLYYny4"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602087350-7de52fbd.0_1602087470718_0.6649600128382736"},"_hasShrinkwrap":false},"2.20.2-next-1602087719-04c7fc3a.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602087719-04c7fc3a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602087719-04c7fc3a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602087719-04c7fc3a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-p9KpR7D6UAt90tl8gtJ5H1Qhpg7JmvXBdrbIKzsTkAJpF84ebSYLY4opHEscuYgvTY/FYXKOaNuFwYQo18FgMQ==","shasum":"a1d3f87614ef601368c983f7de31d7ce795df4e0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602087719-04c7fc3a.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffeuyCRA9TVsSAnZWagAASegP/2tKBunEVOo5gkO2hfBc\nu/GEKJjjlkGrYORVHo/EB0BuOyxMzLMc0tC1l1oQah16F1uxjQO62bJGxx2r\n437QekmheJUFoQrMfxcyFxH37alhTOPnQmdBsX03laQOnZ/1Dy1LyX87bVCU\nGhnTP6rGpSVQt2jiO61M4PY/fOrvp7dqg6Wip77v1m0PvdjD5YdnN1IdQsos\nMd1m8C6r5Y5UjeN1H5iclNTSXd+sJNCp2fdcaCoI2PvKPq8/LkDvWNJdV2cT\nxgkNU40s5/3foA4OCPiE5bUpy2ydD9ZmlmVUIF1KGqyaZ26fE1/2o8YhSdjW\nql8QlBjI5RvhkqxTCZwww5PDPCYU2BUg3CobEsk/N3p3SX25N06ukyx3kXQL\nhyn5iOi28UcKYAuhw7Q8hVwnlzmqBYKqBOjbaW9BEdS0BVaaObbswljszkO8\nOGsZnZxVzoWwvqVrizK0MlUNNyls+bVCczdlNauN2cjXpoNe0eFiAHcYLpJs\nxqrs7Ti7NxCwdyrXFycN3VUVW9CAYD08GF2/4ukCtrMI+XyogjjZooSeXlY1\nl/Oa63V4cI6OjXQ9hMyQ64QNULai/SbaXSqpWXRd2K+u2eLOB38+KepT1i2m\nai/4+v3NzllGCsZ2514Oz3kGLIZi0nrF7Aksky0fs/Peqnmvb4CEvzLRJq9d\ncOeK\r\n=Z3UE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEW1gXzCsgN5j3OaK9KHFFATvBb437sVEkwAfYPItn9RAiEAkDYy9qrTDKCff0QDT6/sG1M8uEKBcWkU7CXMzx69S48="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602087719-04c7fc3a.0_1602087857550_0.7655480864163211"},"_hasShrinkwrap":false},"2.20.2-next-1602087805-d745c793.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602087805-d745c793.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602087805-d745c793.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602087805-d745c793.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-acXuM56BKX9zPTEEFMrOFwJ65SdrCWPKzhExJNQeBa2g6jsyfMyky+BEpnMFhJ0KF7wawg0yH2StulX9FxFKTQ==","shasum":"3e21265066041ad97261fd7265a25a639287097d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602087805-d745c793.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffewHCRA9TVsSAnZWagAA/fQP/RpE3z7lGniUu17FPNQZ\nQPs+RTkfH1He3p0Ri1IUkm63WqcBrh9jXJOXTF8Ml3MUxTH3D6q1OYwHtSZw\n5EWBSnxm8TYMq1abrfkGN5gHTun5cXw3QSOdT2MX/emvi1w9ZaL5iRbzjMSN\nL8k8SU5HWzHBVyeRU0vWUNbhbjz781ziKOlDSGQnBdVGZrxJci7Kg/7dRIPv\nnNyYIwVGJzqTaFNey60QwDA0oBKOecStlhrzZ026jWKoO/8yuTvR6VMtcBsH\nT6cLVAzLyB2bM0nz2jalErvpVecr9L0sDxPbpvbES9aIPf7hXVR7VSNMBH2T\ny8gmtLA2OnMFva6IegkFmGseEs9COUct7ii0pX9ylMMXXebn3o3lfNEdNcku\ntlymkzyaItz+n5hl5e41teDbzXfeiOIdivHXyXVx1G3EzKlgX05QaHJVqd2Y\n/fa4rflayvIZ4vf1eN7xHYK5ObAvwyST3QoSNWXtHdoyaZuhMe1dDQiZG3lO\nDBfw19ZY/3qnUmewcfDNS+I/aeS3DU82eK5Nn4K1MXdz1TV193FnCl3EhhEH\niKFdkkqGqwYMiUjscHipmWw21A4Ogq1ivigdbKLa16SlFkq6+kMXJEioKV77\npKWdUEDuRP/r8oW+otSxdb3sACYJI0GELARrZU6UTknErTgnRuWjpRcce/hu\n7vh4\r\n=Ihx/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2wC8N8hSYEdkh9qrbIdANbTfCbtBOEgzlmJPqlMA7aQIgXYd2NO9WFdH5WpM1XpI+SYk00SZ/I5Wmtww44I2wzso="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602087805-d745c793.0_1602087943184_0.16671831070419163"},"_hasShrinkwrap":false},"2.20.2-next-1602089423-d745c793.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602089423-d745c793.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602089423-d745c793.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602089423-d745c793.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XZ3RaTzNkqtgD5ZkIR+ABwfK0Eg20hFu2rCipaL0KVgyB8NREDiyP9eZCRxirtFoFqLeAbj0Y9nYYx0FkVlfOQ==","shasum":"6c89d6343bcecccb39ed38a5776314558b2c56e8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602089423-d745c793.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfffI/CRA9TVsSAnZWagAAWaAP/39mnZ7fNpKjovKVkHdI\nxBUwawTJMinP3wAh7iJRW3GP+8ByubvD9T8/t28Ms4k23xpRTL9EGxtOZc7S\nIF6mB6wLysXte+x7ESrm5UEdbjd9at/DeirIVKNpcRA0ICh4WOITki6/la7J\nRTOj5oEtWPNhrDLWBHqFbDlg8EYwpA4CIooeBRBRJBJo6bjJe8elzmzR241A\nDVTSQEwlL/MT+yJ+GHO8vgc7bETjeHO5HeqfOHYECKZqbtel2TtHfiAzc5ii\n2rzuRH4zVJjwpIbxcpZvMO+n8kSW13M0cxlEm72oVFlnAHdrZb/feEpFVdgB\nfKStvTPjlKmrXAc33dfzhm24pNHIDhzeIlYFcawDhvbpg1bagvf6NzfP9WAy\najuPdCHRzLNo2apogT6oI1ARvP6kLv+BO6sDBeppTZMk71RlxcwJXdOs0iiA\nWnBfTHbAlVhmz7ui9D74H7TPQyX9wRpMN7HnWLum49RUxW4xpdX7ZTS67Pn+\nCaBX47uR1tUdjf5svw6+Kb6+pkON2FzqVU1KIbLXCampGZz5CCkVhhednlr7\n9L8om9yT0/pPKBQeLuVlF/uYbqqfO2+HGlQ2e8+sytmbzKhUWzUq+7A4xcTe\n01LRlOto5qlGCkg22wrq31Deu29A1nmaKlSzdlv/PdoDfRqHIazZmlKQYyMS\nbwq0\r\n=NQAU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCo5iJfgBdMyqnqagDgYNx4Anoz4V6zP/ZI7oZN3nzDYAIgOSkes6xwn3Hgy5De0HRaBshab6OXk09kTX0BrnROQms="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602089423-d745c793.0_1602089534691_0.5800839497159767"},"_hasShrinkwrap":false},"2.20.2-next-1602090428-d745c793.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602090428-d745c793.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602090428-d745c793.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602090428-d745c793.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TkEttxtFGZq7RSqAJSjBl+jRfKNpYPdvBjQm0Xuln3G0Uk8ExrA8WCRrQ5mFUfpU5TJjCQQbMEIr3bhfLmXtGg==","shasum":"d32e0d38bbab740ec779c8d4c8209e42c1bc48ed","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602090428-d745c793.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfffYuCRA9TVsSAnZWagAAjRYP/2I1UbYyZ0AznwyQr1dD\n5Jsh5jPEY9f037c6Zo/rRirrQ0uLsqd0LRvZ16JHb74yc0szWb4lmA6I/o7b\nP4wA3PjsmA2CjQDIdN6PlCiHSJXzrwUehqy2WgSSxU/L+6QHH/SWzDDn9ytb\nYH7YBtWO5BwKwcdRBHEKZUQbZsy+RPmrf6LTMO3qMkLFuUaNfzv86KVSwmQm\nHgyTV0eM9l6UoU2xTMeEI19vq/q1ni6kGEbgahgif3ZwdzpQ7teq2rfoQz2a\n7bZtB6xeMIf5xQXNWQdl0LPejGWTsfW+s8UjGR7mdjLtMdAjKZsTXIWtCrvr\nZgytVmYxohIxxaGuOGKg6XlWTsw5J4qF6GFo8klsNxLVLE43bHW0ICtR/YuL\n/+cERCd+lpdL/aMGNnswof2b+PwJWt1fVpv8KevUj5sCVHfRHgo5pXlGfiSf\n/pjUZMf0+2pCdDNnjfnTRK450ddM7vmMlK1xgmjvYlxdwKxxNao1aUP1MlVB\nyxgCG7CwPwBCGG00639+fHuiRR+D+x5pBMq9GmkVfySvcmPg1Z227ivoiBom\n9GgHMcVe8hyJWodWwdysXxeak/wDYWf1/xXOlOjXV9F5xwv0yeioZ3dogi3Q\nAFqD5SyLjQORcp6WrXFlZQIKxrl26r9uIs4eoIUQMnJP1Nq5HWvfr2OH73pP\nFUwx\r\n=W2UK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGHR+/nlSeuupvvHffZIVOsz3PlDaXhX9mmF973zR0DTAiEA0ndjFJrniWZtsoMJ5KAvBja6E+XpMvXVpdorxq9PVAk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602090428-d745c793.0_1602090541627_0.4958508664832735"},"_hasShrinkwrap":false},"2.20.2-next-1602090603-496b9260.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602090603-496b9260.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602090603-496b9260.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602090603-496b9260.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9yGfG9ickBJLD7BKeC2kiCK0dTvaFZEe0iHElIBB6gcuCfypOZGyi3q+gVMNsFhEaLjgE3pZgDAAFCFhHBv/aw==","shasum":"2dcd40011d16ed5f2cc85df3e03a3c2563801e3d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602090603-496b9260.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfffcECRA9TVsSAnZWagAAi2UP/3ttvBQ7SKZZaJZesBiu\nW13pu+4WsfFU6oxrTQol8k5FLzzh1jVp/4D7klrOX4gWQXq6qCJFaDW/dAKQ\ngDHVQKwieJPgqhZ/19HI++pP8Tfe+3aizunCeNHYpyNTlBXISY6DUhndKEDg\n3Hed07fqnj2G5Lx9H6nkSYeN6ybFQuKNexgG1n7wS0NJtd/ddz/qmYAUdekE\nxnCfE6k66Ni0Ei/VuoU8tvQABVj16tCkQwp93YWswNS5v7jmTi0fHKmekGS8\nKX7scCdgwzZbLnGusYcHVDZiaAUUcCEx4MqHelF/FAdJ2Hh/iUAG9tdYVixp\nHQSEipxAaYNR/5P2vFI0Z5Inx2791WsscmFNdSlhomVIEJxUD5KZmyUBOXxe\nWikYGaawYtV5MZdnTLu0zA/U6JPdg0P/UudgQCHimPYExghZgQKr1gIbvtnR\ntYF8UODjr5pvwhkL/aDjedrT0KQ6xqBuVZgfBJMrQOCwkLBRTalGYrcGasPs\nudyzM0NxzhtXzang77JIgGCDAVJKEd3hjbVPPUF2rAIuqcr1R+kJTQnxrlJB\npz+bWX7xNA3yf+j3S0vVnsxLMHGmpw9f287kxPnCik9gXft0JnHWLkXYsyRc\nFyfReOWEroDFI5kKjVwaH1JGPHbMUyWrgZDDFWqqDNWoAY2MqtlABjVBJXyn\nMe/x\r\n=xttS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFYcTo4C62vgw0eIdUML3C7ERd+Ag16bizD8qxVTdIHAIhAL9QG7IfImGvGsFv0yGTy+emonWdv200Q8YdpdhYhASk"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602090603-496b9260.0_1602090755653_0.743540173101787"},"_hasShrinkwrap":false},"2.20.2-next-1602091462-a626330f.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602091462-a626330f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602091462-a626330f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602091462-a626330f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MwNiX4A7ujYNbIar90OQd1gBoepaqiCCjmJp6bOzIxqzAclCcuox/J3yM9ZwaHEAS5biAnmNny4UoEJpwnKwkg==","shasum":"d346ab8f3631d294af737748112d557886bb74a6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602091462-a626330f.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfffo2CRA9TVsSAnZWagAAg+UP/iG9gIh4caqBt5CeWRHd\nT83Ir669Ctvn7b2XieySBDoiCbPD5LExpWu+37IMWf19OC2abMHgIDNELPTG\nbtKxGoUUn34ge4P8nYtzZfDu+JY+C1c66YkHGO353VC4ZyKQhdbqlgCk71X7\nnToZX3JgkBhZD/OtiAd96lkn+/6eSfw3CSwPk2JhpALM6ttweeEpbEGWqUmb\nWeT61eL5YpXP2g/Z2jH+DMN8OojnMK4Du5jCUZTHrJRQBIal341WY9AjZLeR\n8Jg5AsJpreB4WDu8s4we1KTpZa1iD/We0uiyrQ9qEE3jQmquxN1VdxwA/bAJ\nwVKFHX1g6+lYCE/Q6tYJKTz+yatn/l5DRE4LHf05S1xioLWeVUz9y7qWdfW8\nM6n9M0yhdhSQ3ZjsfCZBiXNtBA56KTyZAr8/OGTYKPPJIyBvUgOf8neCkzxp\nvttee3Z7rXXRoVTkdglGjaajXtSQ2OV2Ig/dX1CPJAXSsin9guc1mrrr7mkF\nPtJ7tEMWhPvQaH5pdVyz+KIVMjm+7+Pewl/giwctw1xN7e9m1qzXthacLN62\nUY584PNoarQXDd9EOXSTC9deq08iA13nC1KWSvLDcvS2uJsfpswOSIAlRRzg\nNLAID0Qh1NGws0upeO0ixxfdfNQQr6QvlebUDqIH8WM74lPk9y/UzhqH1suy\nOWft\r\n=Tneq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrQivbUK4YftezFI0F1V0ZNNim6bdTvs+CqwxgmVqTtAiEA17mtA6Tv526g7fRd5Y2aW8uONLM39XF/pDAAtNVDRXU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602091462-a626330f.0_1602091574285_0.8855897701279958"},"_hasShrinkwrap":false},"2.20.2-next-1602091521-b28b8cf8.0":{"name":"@xdn/prefetch","version":"2.20.2-next-1602091521-b28b8cf8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2-next-1602091521-b28b8cf8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.2-next-1602091521-b28b8cf8.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-V2JtDt5+9aqFGQQo8HLPKsQyjNZHalShTHiliLmLTY4eoFjx4OlGtAKQDWTwdVh65XwnAWuOglXjhet5Q7FwxA==","shasum":"60417ffd64d290ad249afdded249c1e891ef5049","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2-next-1602091521-b28b8cf8.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfffp2CRA9TVsSAnZWagAANFsP/1OLIMwE63wmzwLWq7mh\nxOL2bqfXh4LZmB+2EHLFVt3ip8uki4aK1gP8/jKJIQIWDHNFjQ3fncAxqRn6\nfhktzao+6sl2T/JM3ZSKuRNthcsQRKsppGd1Grpr3NJbS3Sf3GO/hrGEsKNs\n48c/t434EDmCz74N+XmRA8N128yv0AXmBFGZ4GJSh1TudwKtYoukaVbkPrRm\nsmRW9HXnJXc53QjryHEt8wJcjVhu2YDktrDjk45oHbGmvHEB9OZawLIKEZbB\nb4jp3wIWGODmUaxrRpxwoC7UI7m4YVlhrxHrLCVz3q/F5/56nRcWAbrgCRf6\n+qD//a68y9x5d2IU1AgsGX51lypeRVQV3bdKYVkKQVp4Ose/YfuRj8qnr/Ef\nWzeEaIpiyuqNHLLfzJ5UZcWlBOjrEJZ0zaOXiMZsLG7FYHf3XY+jeL3GDUbf\nMUyi5YOWViB5yNXxK2PrJhB3J3HYRsvjP5tY0EON8s8WOS7gT7VPdGz90eS4\nx1+c56MTQK5BPEH5WKienUUpZGjX8TbCP/8sAX//8J+2h0IDz6Ak98CgAO9e\nM23SrvMxR50NwgmkKHhGxZtvduJOcVuBupPuGwkrYLkcWWFL2Hg4rQzY126a\n6a8B7ADMZdaBzIrYvXT0W2vRvpkumwTixvZxsySZv4XS5sqm2R8gE8khZBYX\n45+e\r\n=MTru\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBbyvP7jj1tuhSq51FppBc036E2PcYcYQfR9PbBfc1DcAiEAxFktxr2pRutxm4fihBLE2W7JBvI6SCA1pSf3Ld6zzMc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2-next-1602091521-b28b8cf8.0_1602091637570_0.48307184061348707"},"_hasShrinkwrap":false},"2.20.3-next-1602091571-6a2cbcf0.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602091571-6a2cbcf0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602091571-6a2cbcf0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602091571-6a2cbcf0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-aQ85N1QNEWwTnD94ypo45tKsEGOq1eionT2sK2NhbcdyCBAlk4+yrRSOtf6aTrSk4d8qJb4RnBJ/3GvLGT5FDA==","shasum":"63ba73716282dee5bb2ac506da20e2a0057f1ab4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602091571-6a2cbcf0.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfffq6CRA9TVsSAnZWagAA6lwP/iWXL14Mz0SoTMbaZc6v\niyeyPBsF5DYKg4nP+eAJX0EtkrFYbBwcQQb3CicQpqW1cZ0Hl6m1M4bmT/WR\nwZWZAe3V8xVFFMu5cswhStwFXr/adpfxjLLXc4n+oIEpDehU4l4lh4CArp5M\na4aHKaRa6X+FRM3tqYGSB9CxKiyKPqTaGW4x4Z2/9pKEtdmvvxZT8L/KwiLO\nj94wFEGeJ5hkcimHyrgmmj2dheoNHSPgrmfjyA1EgO+OaBGC96XN/rpCzO7p\nS8q/ZKQDUMvOh709N0U4HClVUqAZFOjScn/J3rHlnlrcoiENtPJCLFLjs5/g\nfNoGXTsPbjB0lpdJqT8gHSg/4U1fnHbTpGPNG6EPU+Rnk9tfqOHhCimRrs/N\n3X9rHFFLGlp1xPmoCfrB7iZ8gpKboy+DHduqaGJhRU1hhyQ3EX7I+ujI0v8R\nVUDf1qp+016X06CvhaE41+bzLZaQEfMqHSsll2K0QgYsQ+l5wxyMWQCXYM3E\n7yUYKlvImfH5S0LecWonIPosOUUR7M1BcpexoaqQgGu9RAXlS7quzqk58a5v\nCGc1yYlfbeD+bpIS7uL1YlbCWANICDHSc4IXADw0LJjwSSd+mbIWB/GTtvjU\ngtrdcv+danhN0uwxwE3K6sk79G+22RQwNCC7/0ArvO/hi7QW53jcoMMJCubk\nWeSf\r\n=+Qka\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhzrY7NglBD7FteMd9yCTz6umAKXpY2NyeHcLXnrKqWgIgIIMI6+60I0d+KxbS4CmzDBHUuRYChs6V3aoTK8m4qNs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602091571-6a2cbcf0.0_1602091706203_0.532194699187583"},"_hasShrinkwrap":false},"2.20.2":{"name":"@xdn/prefetch","version":"2.20.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.2","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.20.2","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-56b+IZtk6pBYYnhb2m58aSplYBwgFxw7zaWoMXLEQ9hgmEfgSGVM2zDwzS7WlKTL3VHs4wyRJlGt6SxNGSRQGA==","shasum":"ca8c82a09e6e10d4fc8eb11f4f98d9a01d81a9ac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.2.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffgrQCRA9TVsSAnZWagAAWIwQAKDi0eS4i9Rb9QljKqIp\nN3wlMUuEzsjdyjH9MuhL/oUBVaXOutKF5IC41Kgh/QMi1cqrk19hdtqkmI2S\nu2nq32NTT/Eddfld6TIXGxexUg2odPvCxIkBU3TbCKh9dDdp7fQiEf3dAFve\nsQOd37mvWKBu7sg5mZP3rZsqEWgGr6uiPipZh151h8WBOnCBquFmtWquVaTw\nk9rvfsg7iXSziG8OPz/SLhF3dAaTUfrzt+f/QlLsJe5GFslWAmdY8mMG/xBf\n3gRaEu5AMjrou8mFydS5QhTFokPFs013q0+zwG39eCrDMQTldgfq0gpdFmS/\nPo2WV8OCFZmkkF2jBQSq9prRSI5IgzoSF3fwVuK+Rn7acTDKkRsRBLw2l+Ur\njNe8gZL6wOT0JCJbJwXPHoCczm1mLtzVUg50P376+XMTCpZG/qEy1C6C2Yuq\nz+kXI0xgJN40GUUu13bSSFlbMHNqMBcc3IBn/PER1AeQ6V1FGcfxDCq6rcan\npcPEwsPCSWyQ9TRhRX0tn4v1TjkDl1cJNrFYOfe4p+zPVpXXja0kyvfnLWtf\n8bDTl58q03Kxy6OJfx0/NUz5kPymQRZKzoImjEwispjxpXnaFfenOunbZFKh\nksF3LuwWPS4Dt3wtogAsVIJdnJh+Hs6IHFPfUZDY4h57h0T930rDNKeXEmyL\njT0j\r\n=JamY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8Z+F+2IIptEGl9reQwkOl2VPIYAUHA6VS6A2tM0KlBQIhALXswTXqc/tFZRcNGnjA1NGq1PLiqexoVFs4FW/SuqHF"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.2_1602095824453_0.34658999019405323"},"_hasShrinkwrap":false},"2.20.3-next-1602150961-1dd3a88f.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602150961-1dd3a88f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602150961-1dd3a88f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602150961-1dd3a88f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pKRGNRqARvIEWuh3t9YkWeNSbag3XSQPNm5bqCBdEEXZurR1zKPejNyRU/G6aDF9kKhZ/vzZbiU7bMVaaPEN5Q==","shasum":"9f1f11275be8d109c7619e5b755bf157fbbbe09c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602150961-1dd3a88f.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffuLBCRA9TVsSAnZWagAAN+UP/0auhcxLQ2Id0UoVtxc6\nfmzgqCAaApFtylyCZn2mwwlUkjn0jusyCum3HLxG4cC/7JzykXV14lk4DWSk\nMJVerkObZT29Nb6WSqUWDuBuGGbnXcmCP4cgZndSDaw2rj9+/NMQ2Z/cQq2X\nR6iwzhIP8NWpO4Bb5kwUyhCHa+t/mm2A99Op827m003QZdhMc60+M5AJCFuJ\nNFtMQ5n5SrhewkZAE9EhposwQzIUtPliVkx6PeTvzmw9/glSFN/oljjAnIrQ\n/9fhI39AztGhZ/8TIv4DIUswj+3ueFLIBcJZD/P/V3nUiez2sjgLLazZyqfB\nFaN5/AGsUjf7Aa1Kyuec/DklEzzVA0TIt5tVUV4wm4eA23B5J1PJhaNcxLXu\nnHMVBWM7UirovVu4IPqsuLq1fvIyQE4D+Stw7uEORg2RE70R93qUIijRqRiQ\nlrWRdP6IBQuk2njbhP11bXQztuCGTwlWM3y5xfb4K1c6oV0KT5/9b12ffU/V\n6iAJg2Fb2Xl2qYTm9lW6h6+MTMQ0qfgxXyBmHqv5VX2eLWKJUk9vHrjs+HK4\nIIDCJmlFFpwLRPz6HSe+3jvz9JgQJHIUic7UYo1jvdCSNvm49tQBoSkCDI3n\nRytKEWFBLl+TzfZ5pHjhFmpwOfCyBEEbAM9fEdi0YgT1coSlCVs/acKK3xyK\nRmL/\r\n=aI6v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkIM0yiZPoa7qy4z9A6jg9ZFyDbhfUL/QRUvzzmBN7UwIgTuwLP2qPCFmCujUWYe3RrdOfvR5jkoo5IfS82iivka0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602150961-1dd3a88f.0_1602151104542_0.6920021541126364"},"_hasShrinkwrap":false},"2.20.3-next-1602152731-76bc75a0.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602152731-76bc75a0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602152731-76bc75a0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602152731-76bc75a0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-H9gcQaW1t+3ijgGS18rpABFDK1TjVNr2690rhlTRy6+TIh/Entjxfj7b5oyWWubwnTbKOY7PTfWHiPHOYJnDow==","shasum":"ff14067eef281832505446ffbff39c7a2407b673","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602152731-76bc75a0.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffum1CRA9TVsSAnZWagAA8fwP+wSivHrk8B2wXlv6w/RJ\nOJRcJuQ0DVTbTH7RlK5A+GDp3QQVbccUg6WbIG0L1ZSnSzUe/ljLy3GlGmwB\n42LzrJQG2Yo7yjd4OZQlYHBL0dYZSYj8k5el6m8fzyCocO8jInyD8nn7DZPN\nE6DUmLc8VoAP+Q8edh4BE/IOrOIH8wM0pOKP0C8Sv5LoFZwOBWZxxaGa8GpL\nQhB4g9oiMVdmhFpJcEW9ta2Dbz0FqSA4SclEhwqM2HFHYerthU42TVsn6CzY\nmnx6eASGCvR6aCizXiSMiMJQG9YpQmoX7cvZOzx0q3Qnn5hQAI5dVgC+xqSJ\n9A1tjH3qv/9sHkf8rLaI6aScjZlbDuA5U3+MWQ9X43sdPtJ96O2hH8fh5RSr\nImNauqV1FqIqDvVEDKPoAMfQyXLEj6Nw691RYg+WEdPtZan/e3ql1NWiRP3t\nKe5RXs0oisSOnarVxqzisLhkUaeLko+lVRP2jxDcJy9Q2Typ28s64cAnGTbi\n+DEfuPtMZb0KsjOWH3iNF91TVahdJjfzvMf2lMp41hNRPmyuzhTOLc/LI8op\nniARUdbigiLhMqPEQrs1o2BDpfyOmyKQqLjdUpquMVQQGsOEyGhXlqxuEFKd\nfruBVzDrZh/CNCOqhV12k9QJNS3EFbE1Q074gKLhPM6yIBK0fKAcY2fga421\n13gs\r\n=hjII\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6qROVNFrnozJhMKqwi4cWL1SzjWbSPxk3h6ZZIYcW4AIhAIzvrrUe4NYeJ6kOm5UQAxsBwMOX8uXopcoy1CVccFhh"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602152731-76bc75a0.0_1602152885300_0.3270678957773827"},"_hasShrinkwrap":false},"2.20.3-next-1602155331-c0f38077.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602155331-c0f38077.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602155331-c0f38077.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602155331-c0f38077.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HA9JZFOOPvzG9cdVbegMrgBBLL6RpF/0JviGnqLRkE8rF7JOptNTIP46iTh/65PVHjU37qRFZPj3DsoMeihc7g==","shasum":"54eb55398f6565e453017ae21f3f767cbda1a8e7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602155331-c0f38077.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffvPLCRA9TVsSAnZWagAAoa8P/AuEG0whhvJRUN8tihK0\n92teUJeSbWJk0R4JP03ZSEXCDoWvdG0GaP2L9QV8am7m1RqeC78Rj9BmL5cz\nsW8bSal1AsnlAq9mPjQYhcdQ1sUPS6nzzdnKlnYyWA0vWP5EHTkKExBqysWr\nOsuAv8ynnIJNWADAMp8FBlKrCp4KcyO5Ih/xPcFjkqEpOhaI78L/jrR55bs+\n85FDWzUsIH9JsXSwoyRcsiE9WEMtNYCmZJtGy+n8zJYKWQyv8D2e+HDGjEUt\na9VxnStgt2fwTUB0m9+PQl/s12z/dQ1G1Es7jr6qNZmqOP+B/5yPH/YL/J6S\nFO9bya+RYz9P22c1xdjUyQUCeUx32S4khmNH+mfZ5dNyzoKteGpeU8E2Tt6R\nh6+kJyOuFQWMX2ZyBiQpVI7f85kTO5+gXyLnYR7kFndADG17dj2G4DBpH+5I\nffvaLRN/Fv2wxwWrKVdFc+y62PMT5lAESRBhHNFFzTN8VoD+a9wp3cQ0EIRu\nTM48HFGU4chidO5JisbVS2Xo5bf8NDe3GhjCIfGJ10vlysBM1wQlddF55vpR\nDHFXe5dWZ3UZ8NiJxak8d9QZLBfccvekkGz35q5p8/qeXf6ODiL7/QZ5raBL\nn6nqfFrO8U973uEBt3Ga3UwaJ+flaPqAhiSYwL8Hht1GTduL5eOJlyN3tMy7\nkMdc\r\n=YYoN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0WOslnt0nsQsjtC9xiAUN2y9D2PYnC0jzxNJ9B2RAvAiAoGevRcCcHNnuFQ69TyEWgRSt4OeVE/rSUvxcglch9ZA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602155331-c0f38077.0_1602155466629_0.567382437334907"},"_hasShrinkwrap":false},"2.20.3-next-1602157989-3ceb34bb.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602157989-3ceb34bb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602157989-3ceb34bb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602157989-3ceb34bb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rwcglzmPSXEjw/iw/1Gvivq4MErx6c5zs0ocEbLSuIaLKZZBxrWUMM1Nwhd3YKxyA7abNh2poO3LYlnqQilRpA==","shasum":"3637394551a8cf56f35134238f0da5d11eb9599c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602157989-3ceb34bb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffv4yCRA9TVsSAnZWagAAWSUP/3E2zdtG7dQyW7/K3BQI\nnYCKFDz/jl66IJKbyqegduSrEVV25VgvVjnaR71Fv1PwCYHKc/M1cHkLOixH\nvcDloMYjDRGBEF0xGIqxyI4lH5HQH7W4vyLl88HGZSKTXuHoYPzSktwEZnME\nsURL/zKKCqWfHHEy+i7Dtm9WBqJTiiP11Vlvrsefg8QaGQK/DIyqGZjWMWol\npaP84rTW+1w86dAxjMnJ28Hrb4dLj8coS38oWVxlvHN2Em48sSPWhh5oJ/7z\nC9PT9gmnY/bpVp34YfVDJo+WW03OOnJKGgZKvoJNa5aRzRhGbIBwTcGPbhXK\n82UFVfaJWOSODqd9G5FzySJW2l9wCestTv9+2/hcIexIw9EzkTOcqtQd8uKV\nD9KouJjPu3ZWLVcCcC2bTMj3kOIR/VNA20QS/4q/Azd+J1P6u8eevvLODTxW\nMfJxh5NqKuI3WxEavKWWi/T3j/dCJFT17vv7qovpt7JHqnCemYeqY0pQe9vI\nKYU873WPwdc/8vw9xx5dHPDMMKE0TbBl0bZAPVGKcIdxMEwhWpW9VVzxSuwP\nuSll9NqjbmEA/XWUde4LkkHisacq56sEGZrzrJWxnUo/QPTL9hNVkMQUkq0W\nMDmtgNPhXuFI/anE6UmyxRQjGmS7OVNzHcQ5U7by/Ty9prY6cuQEFRBd+DkF\n6qs1\r\n=lGwb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBNGJsl7zS7azw1xD0RXt0OtF+ziLRA/Vp1Q6XxIja6bAiB0ervmNRPmx8shooRjdS60FoSCDQi//TB9CF+E7JvZng=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602157989-3ceb34bb.0_1602158129849_0.8654377878584063"},"_hasShrinkwrap":false},"2.20.3-next-1602158077-742c24f1.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602158077-742c24f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602158077-742c24f1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602158077-742c24f1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Aa1IbpciIqkQmbztOopuDYEmoVDYx7xR4O+XX6ZK3sFefhLNA/XsLRRVELz2qcL8djWpx20N8dve29i3Gv00RQ==","shasum":"eb7974feba3623af4904905fa63bb4510f4940ff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602158077-742c24f1.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffv6FCRA9TVsSAnZWagAAZ7UP/133u1VBNPP1VXHvnsIk\nTK1G9BR4e09HB1BIsni0KXt2N5oxvP/vnXPt/Xel0H1RWcdh7/D4sEz/6BaQ\nYhBSBND6fkiSpB+BxKTB3GD+a4MvlnvPhSX7MplSYIXZcnvJc0atom+kxzRu\nrDlS53w+u0dom4mkiZFiEtz/9kH7mVs8eBaFZ6sz6xC9QDX/O81FQFGAaA2O\nGjN6z4vrawgIHLlexxIP6hnznuzu4+tS2+msGYDYglA3oLDaW10cVk4D5ctV\n6vfrE5cSnqDUivPFRPpQYLLJiOkVvYwcDTth41NWCwIkuLJI+tg1puQAYM18\nBfWq4mdNBIqisJtDPnNa3UyGagBsgNk5YMb+LmHd5Fk/5IITgO0uuN7OgaMK\ntBUfFAXBwjG3Y/1Xxno4uAxVZW+WvIpk1x3X02av4Mkd+c5t5c7yORxsT/y4\np2dp7b3Y+sDg83v0JRYcrotH6bxB2d2Oc4B6lbhqOnk3CzkrST7NBJd4yX+c\noHWBrHn1lsHcxHVRARipo7vQLwo2gVUIhf33JM/KHmn9U4AES9m9nNaBlRTG\n+5ZsQ3xAqWZK2kjvXRuQJ4xyanBRhTwcwuwqCR8yzTvTEntmP8dFCIIWiu78\njf++9zKoHO8+cWAD1G/agfjiGzS5FCKib22/CIQMNB0FtylEQi4MZRAmnKh5\nmeNl\r\n=3oeb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtMdJhYNrj1M7JNTUcRXTHm8dRhcStuqEkwfeCw85IWgIgCAI9PADJP3DrG7sS42NUNromm4E4bLjeAaj3n3282Ik="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602158077-742c24f1.0_1602158212589_0.10186420950987585"},"_hasShrinkwrap":false},"2.9.1-next-1602160156-d53125f0.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602160156-d53125f0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602160156-d53125f0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602160156-d53125f0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-35bMz+Jzmjf/ABvFjcB/Jy1UQVfiaAx7vOdZqXIKwQur1W8dcDxdm5/V3dDf7RTIDufmTTd2M9sFVotqnU8sDA==","shasum":"40eb995e751ecd58b34d635b73cc10d5f5861dea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602160156-d53125f0.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffwaJCRA9TVsSAnZWagAAzT8P/1BCEqFPKYoQZukzjLyZ\nL8ItmlWrkjCZxN4qIQ0XIrz1/i1Q+R3wASaLq/FCztx8WWpnJyJpo2i0q+Tz\nbOejzg9jk9T6G649IsxhCGVhqnKii+aafm92Ka3p/2R1IHX6u123VEo4iasN\nD4FwYDlE+crs4BIj3tB/wtlhab6JZldpFdCKe4UpwXLUy1Auv17evBgrAsxb\npi3tzgFhLqxgDRYkZ0R1hi9r3HMoxBTK8O6e7ChaCPF3gxDGB+9GrByqIIwa\n/x6St9WAWA6iUFFiNAut7Z3iaR4eOsqIIwU4kku8VrM+Wmhf+i2oLTSIutoR\nyb6NJ8C8hyo3sPbZPRBVTAXEQgsDHYLAUWvX5ycgispYUhpNVtDojdDa8uXR\n2mVdkM/fcz8PxwnxcqRPxQLyqG5ln9utoauP0H8TCws3MX8JNYemJAaUHV7B\nQlypI5Ex+pmFpoeEyvfTrFjAZTELTCwASR9meCXorASIUxjg3veeUWdhUSjW\n+GPGh5Kp7SBnkbzqeK8SeZozrHCnn1KSe1HP2v8W/5oNsrqIzxa1cgdOh1VS\n9iS+hD3VSniIu8vdetM/S3PttNEUSMnCTW9idAFbzxJ/voL+shS4k4BWUG55\n14JYVDPB0TdQZLTHT4+/Peg0bJeGCq09+dP17vAk7qdYiYWwYN/WvoheettQ\ngudR\r\n=2VdM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmOY3ndHmEH1gEXCY3tIKsu/KAM1efqzCxbSr+bvnBswIgS+0Ll6vFuSxddPFCrSjBoNwXvzDo/VkWQ1xjLy2qJX0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602160156-d53125f0.0_1602160264848_0.8358474216932679"},"_hasShrinkwrap":false},"2.9.1-next-1602162330-d53125f0.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602162330-d53125f0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602162330-d53125f0.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602162330-d53125f0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-znxqUJzW+2Eupk3PUsxVa5czbc/KCU+MCMFfzMi8AgQlrYyClCpfe5+T+Wg3ajCRxDQlwVFyzFKE5g9fBSwDQw==","shasum":"8749d8d6ffd9ea3b52e6d7f6f77b857d0d2b100e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602162330-d53125f0.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffw75CRA9TVsSAnZWagAAOWkP/joQfKm4f6dvkN2qUyKi\nJu4jihYGawoX6qmyEEHISKCeKyMWfBwF+OvVAUAvq2xYzQFFWcW0Y84Gtkcg\nvc0mRPEdmN1P3pqMFLiK73gSR55Kl1Y/SvipB1srMNct9IwNdQUCz8yjhG0i\n4RnHpq6+vjQciNrPhenGwFGDbjEB9PNundQNWc+1BJfQIlkEyqQlYgEzHfJC\nX9KCgzEuA6AdbSijGS3kJMS3P/M15Nuvf7hjPOrxms1dM4OQH/RhanAP63wZ\naNP8sMt6ngAPYL0dDEQf9oB6DoDHwyPc2MslyAkRCMtdzqeCXfbnnppeqJHB\nSg68IJAsUZDokXRv79zw5csJ3CFWpCk54XLCx2xU0xaMHMuWs6uCchhcY3Nl\nkZ/uGTpoyNEtvFFEf7AnQbbh2kHd8YWshLxETXLIgplkRAtfTdQoYJk9ULvh\nEgAyY7fdzEgbr3IiLPVLxT/xo7U2c6hT/oEMuagMMSvpdbmCNAZXXG5r05Qg\nsw19rQJUNZZxDAwew9I0D7RXr9T4lmYijKcty2QBws+S7dLwp87lkPGW8mWV\nU0DeCuGilHqn80eZ2UX5MZY+ySL6XAQibn5ccyY5QV5ZNxUkRjGyO65FKTjR\n73+DYkmU8ED5ZZhWM0W2KGG6Vh3lErwkiXRi3SVXFHay3XKRk4meFUweMW+u\nbQBW\r\n=w2Pu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaMyZt+X1hQyboHT9s29IxvM6jPfW53U2Do6M2QP/V8gIgRg+b0fELhatsZa+MgnEFNKpI8Ivw9g0E1kgoqAF1ZSY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602162330-d53125f0.0_1602162425137_0.8905703525867641"},"_hasShrinkwrap":false},"2.20.3-next-1602163360-27e89180.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602163360-27e89180.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602163360-27e89180.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602163360-27e89180.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tqHyXjEDUHqoAcMc9ewXShWjF2PI8gvnBYrkCWGz1Vlm5/Jvlv5DCCu3WFSsuf8b1SoFw7diA7gyDZkuoDE//g==","shasum":"beb45e5439b86f475b41449801c38d676021a7dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602163360-27e89180.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffxM8CRA9TVsSAnZWagAAhwYP/2F9X/Atf+W1QoLS55WL\nrlKXgTZByd0CwpOLiDeWqi43uEpARPWnXK5NuOlT0s2lCnwaVBVFL4KhPH4W\nrgSRxQGsyY5Id9xK0fIgHpGMhQqxkSfmhWyirW2xpXnCHXzes6oiAiY5X5aF\nIBcS2dxVdCrAxFjb68r3jk13LJrcOroThqteUYNpW8rGdRe35YE7NvrN9E4o\nCPZDjanYgBL7Wbt4BJCc10SXh7ObbeRfIH8H2vD6kzZpww4A6fD5FGXHTWQW\nwL7F9GHU9BxeOKjT5azk6unSfSbCoudqbs3edscnmVCpp3Xnl2tkk8+IAG1i\n7fc03YWc0JVuHFWW/A6DPUs/dtjxee5sxJrgbxR1bcTcfiIV35q0dG9O2s+s\nKxJmpkR2TagAp9Z3gJMywvOkn7KPStCohJMiDDl/4EtmUpVQ5wGSy183XSsN\nl8S6cVUEFviDIsmBDtd9fhVufumvw9XUqvlRiQFZrdYpCbO+rmTjGur4J3PO\nA+/+qkScEFbOqZKt3r54VR8CobEQ3Lvtwy2oA57TYfpn8hb9LaIoNup4Az1K\ntuenHx7kLQbq7ZXNhFJVUUyjuAuU9x/KsBbpfaSOvP8xOtbxTaMKu3a2XoEw\nQp5i68o0h4uRceWu6Fk0hYCU4yDNer/oY3Xb7uEM9mFYfJ9GDCTHrLpk7hRz\ntQUD\r\n=SFk7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5cJ/bdPQAV3G69rbCh1MTkKVYFTr7w/yWmaSK0mHKsAIhAIAWPyOcamD/ldw0U6LJ/A4Wpu7Mb3EGFuXod0HgFb+E"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602163360-27e89180.0_1602163516412_0.6587909351971852"},"_hasShrinkwrap":false},"2.9.1-next-1602163410-69827c14.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602163410-69827c14.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602163410-69827c14.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602163410-69827c14.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7zsBXASqPVUlTzFYVwToxcG6MWriZhtMiR7loC6CKNMZJ7+TQIm3GkkMih4+IXteFFTDzOBHE1mYDge6UVY3jw==","shasum":"c593b290154c9a861d502e407100626244d11828","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602163410-69827c14.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffxNZCRA9TVsSAnZWagAAUbwP/1bynQJb6n28fDJnSZst\n3KDkgzoq5LLe4NYGiWsrPNjemQJxZI4SBxgI6JNatUEcjm2MZL+aW/wpWTPm\nkR6QM/qbrAMzl9ESW6teWasgmiOhcW618Wq3pM2k0odqgsk/NwZ3rlpLZKFC\nunN5ZBgSXa4v2GKhKL7+GLFw7bcvLynBDbKAi+iBTwdHIGEX0oQTQps5LXxi\nx1yT84iSHYJoHFxsITHtYMMkdgGWKldnQbvXUQphvNMVM2nghgR0y0zc07pR\nikzeO2O+mHatcoAClrOYTv1r10HDlRyd1DUg3NAcoX3H77gEzh1myAjmSxmh\nJ9XdhvN6ASnxdW4tZo4rI95Jhk0xuDy005uXA4VWSqRqkLbbyh4HH9cblxF2\nW/XjQXmSBhqjadbRoDay1nErF0EKXLr+nyVCmfys9WdgsTq5gEYtZl3m453e\n/iXrwwEClZn6RJ5mm7z+2errNcRUt6b0k21EM4WjtKB7Rx28i0HoPPsoR7VT\ni2GODyD/KelmCrHfVWvuYRTJhEHw4PC3dir5W1atvuOJKn74vdFNPV8dLPo0\nVE+4Gnw/AlhwY7Yc6S/WN1UFUJpDLQln2TTQVkdnVZ26tJa6a0kEP/O00zeQ\n4s3CaxFHka/gCxxDOcjYLOFUXe87V7o/nHdp0kuuL4NBY93QXeDON97/vVM1\nF7ym\r\n=BxuE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDN5DJXTRR+yohZ7IiEuupStDypgzL+CKcshh0Xmyv+tQIhAPQjA50xwEBRC2M3yS8+ABluLGynnP1QgQY6abQ6Dt+j"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602163410-69827c14.0_1602163545372_0.6581680775239014"},"_hasShrinkwrap":false},"2.20.3-next-1602163430-7967f1a4.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602163430-7967f1a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602163430-7967f1a4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602163430-7967f1a4.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4QXJSVkzUbKeT02jyuzh+YHjATDQE/Ki7IN9rV23Dbk7v0ymHng2rbSLNVY45CN7YgR3tQlZD3zfZnXmpnQjtg==","shasum":"14ed76ae1f9a566038c3106260679786a590b757","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602163430-7967f1a4.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffxN4CRA9TVsSAnZWagAAruAP/1WRKrLLmpQ1eXhT0CLL\nEc1Ly/zC8cvtV+/rlxaCPcMxX5jai5DCrX1GFqu0eHCRjgV6PxQ3ujqCS3/E\nyvGAqQ+TecTdLWLb7qF1E7d9HzKd8tDMnhc/YEsC5+FthSqztZrpLaSVRBUk\nq4fb1rSm7GJOldhL/rY0brv6pa4JHh9a3jDu+FBCHnqZ2oKaqIH904FXlZ/C\n5O3xuJTtld6KtYjsSXGXtoy9y0I2KZVt5R43T4K8Jgpbcu7JOv0EsQhKuLV5\nev36+NDv3zfHoTDH3os+2jL49KZT+aG+h8Cx7ihK78U9gFOqnPe/lWIfhyVq\nPN/zS0J1p/6m5Y1+3sKswgHn+sPE29Od9vTJa0f4A8UnYmi7LjaiXF4+Osbr\ndS4/7MW6c1t/Fj6VokV9qwcH+CNJ1zUUKG1GbppN5KcEm/2Q9J4Q/HRFo6SO\nXaI4lq7pW2TvdbimqT6u1eLNfWztOyvVTDJXW55IJdEGkHgZXRe32OUED9Xl\nybB9qzsI+6rjt3U/vdYEIR4m0daqIKQD/RHzn0o06ShzVTrnztjS7K3QNOAq\nDAa+YQi3O2KdJnDqSLBuWytQa6MJz00YLZX0/pvx2566ecap+0uuGPVeFdcs\niIP+llRzgXo11VpsND89MNm9HV97TN5WrKFhBTcuqvtP1OGY947DdHRhDiJP\ngVJt\r\n=JpeB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVs0+zVsg/CDOMKKUKLQiEEeAxFULKGlIEtKm1XQKucQIgO2mWvN9Q0eZc4+fnKjWK20InTTYIQpONQl5gFyI9y0A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602163430-7967f1a4.0_1602163575681_0.7973984086737693"},"_hasShrinkwrap":false},"2.9.1-next-1602164060-855d4c59.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602164060-855d4c59.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602164060-855d4c59.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602164060-855d4c59.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-gkYppiHinVULqAdIaaa8E6hKqikdiVB4aFWSMEuHgG0VYFl+Y0+rb1u/H4MM0BwSC+5jIUiV1vdfPYCQNUx5kQ==","shasum":"919a37340d03e1988ea4337c3bbca0fac97e15fa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602164060-855d4c59.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffxXMCRA9TVsSAnZWagAAMCUP/0ps/XqIsBxvm5cLCh19\nSuzIZRBD0dN5zCjhgDULNyezmzrlUAHDnYkj0FzJkcQbMLAkCYrFH3lGzu5T\n/HwJGTMfrtNF9Xr29bcMUFfUeMajv/dR37Nl/TjVlDVFrpLgn6E/88c1wKBz\no14VWDakDRAbLWQqVFH2zveWjqU3BIuI24IktdGLmpRUa5QNqU2xv8IO2qqa\nZ69c2TJvmEzlRnoS9uwexVnGeFrf1nDjZQnjW36lMhpuwfPiEPZ6twb+x+8J\nLFCIKYaTeluXlcLsejvXibi6itD57GPy++ga0TKSCIsH7fDa4zIdLKtorr9D\n34DQ9nYSZ1eXjVsmmdwX934GiURMSRPiUYytt/BHqrhhAT8IJdcoSUx6JBNd\nbKL0MXQDStXDqBRZlZdzLfnFf0G3C5rU/MHl4t+p4rf+0Uvr/3SwJh8Jn8QW\nOrxPMZ5bkk44yawnpWK7+IoSZi6uncxsu07KKL/Ov0hTQaFj4Sbq2UFb00RI\nP2Nd+TDPaAfTPB7ktL8MtRWWqIlVL7LHf0UqNPM4dROM591WQuknm4cC5F4e\n0leBrxRpok63yIfBVXdhKDV+kGu3u1mLtdCUgAEjaX/fFdNJqyGgVv4OjLit\nREEzs60xvwvHUIGTrVNeIibErnl8d2g69Y0MW/h82+aKQbMA+FvWsY+h27lb\nChJd\r\n=DXlD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPsfebvnHyPYRFm38jnNyMuI38ZfEdDYdddk25DzfihwIhAKujKCzBbM1UTu/4ej9Z7FibPKUwYIAAizonSU68Lnwp"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602164060-855d4c59.0_1602164172457_0.518849989553837"},"_hasShrinkwrap":false},"2.9.1-next-1602164824-11e82beb.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602164824-11e82beb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602164824-11e82beb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602164824-11e82beb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WxHWZyjDSnKoxQAsEC7fJxde96FWNBfktEYU1qfAvgcbpsP+qK2qWu9B6i/77+1bYcUukFSiYUg+uv1przg6Dg==","shasum":"bc4389749d32c225bfe2901421b9972c8450d873","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602164824-11e82beb.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffxi7CRA9TVsSAnZWagAA3MAP/0frgHMQZhrRpPlZ3wQC\nedRCJalQ8yoL3uh4J9+99flEi1JlEQrgdmgkOpRuDXUtuLP0F5swF5jbsS/U\nwPKbgSuOOBI3O9sFGU9/gWXQrCp7seqLlgYqvuEiDtNeGbzDuAIorA6CTURF\nex9MCynFWyRZJcgNjKJ5subMqGvRAKMj/i6ckNMiwlNf2nbqsor5PAOwGmqY\nsdqL/mkRHHn4y/nPxdvx6kOuLkB2g7sc1c6TFua84uZp2yKqrgmDNIxYJ3eN\nOA5Tcd7bi2Qlf8SemsELmtowhm6Ag2U3ZViLRFEMlQ0ifUfA/y9lFN8xhRsU\nflzJYw1x3HYEJT/fWBDNTjdBW/XcLPyAh6XGShKs2G1twxlzgSYRDttO62Xk\nrJbNcj9YjfNY44lK4rbE4XeKcptREWl0dnlje591T2uXhAreC5Sh8d7Goa/I\nSblXmIiJzexA782AV8Z7vYJBOqNG+RJUAA4r7rMv4n5MB8ZQVL8gXPoq2y/z\nvy+qC7Nc7hGPEU2ftDXeLndr4uVVPJJieN3xZRs0gnQVDFLwDxjFYHHJ+HKA\ndDWJCAldU8gfXda2kTQtFeKMszyqK80+74InSPhRVye+TKm7BMOfG/32owgq\ndha9msdApphTP4XXR+y24DnCsprkVen0M1ezsiExHJVed/STBznwOqt2EInF\nMDOZ\r\n=baMD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGom736MCQQKw3KmMRNfUGMeI1wItalZwPPTOw0evxyAiAuBfixdpTNc1WbybYGPbKQc5Jx2BOGYF9hJhz2anVYpg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602164824-11e82beb.0_1602164923043_0.983761829602108"},"_hasShrinkwrap":false},"2.9.1-next-1602165598-855d4c59.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602165598-855d4c59.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602165598-855d4c59.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602165598-855d4c59.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lav8mkvgRTET+Ani3NtprO1S2seRFjWdEEThqKaOBWaMhizM46YV4jMfRLSRHqZ/S9pifqswgoMs43DsWWA2Eg==","shasum":"fdbe3740ccb71a612f92628fb6471fcd8f7422a8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602165598-855d4c59.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffxvOCRA9TVsSAnZWagAA8JQQAJRrL/Yj8iCwNLHJoJrJ\nfYZQ2k3EqolH/jEROGKbLdARRD9ErozpgEoK1EWd+QEVhbjFtVDN1RZdfPX6\nc78H/fEMYWh5AAixAS4LCdWsidacCFOqR7r39tEIh32rog743An5JR3Mdq9T\nUCa3gbc4n9hQKD2KfuBqNEcz4XHa35avsGg0CbLS6xVt1M570n7bAop/2wkp\nAcGf4kwHfQvcohn52xxZy8KdFuB7wQ+M3eMP0aRsnlSsmkNiSJIWIPdf4ZeF\nHmsmQqw/BlnT6WYv4FUY+kdDjrSDaUwEWBn4P1ZtYN1v2XlxF9gFFAwwyaVp\nb1MQrHBc4f/TlGxppMJWY+SEgDORk47U9JhLyDyNQBWaQKu565FgTMnrgzFK\noG+tlyhvBIGSpjul6AgLt/aQXiWJjkjxGWed+HgjyLJ74MsKN+42QdDs8p6a\n+u+3yyzH50RzHz+2pyS/lc+55C+fZ4D8y+q4y5Ygs4IUhXPT4Z9rnskxteB6\n+hLkklXh+W9Lc7t+zl2ypuFvjp+AAyNJDa1DV4jeqHOaHLH34ebdvjt1Lnjb\no7LoTHgOmvYanRw6eXWc8+Cb1BT7EML1YCIetoWzkAadIjeFa1KOoZBXu+mr\njOsUZ2Djj1IIgbcgHPJrMOekYO0s0oliGkXUiEwc+SWZ/V4Lp+azAqUzoaqe\nRkpN\r\n=i3Ez\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBKq2+sTt05dtsZdupd22dzbw8wRqpXaBcuJQc/Qkm9/AiA5Hep/MKP/d/5EKaRxVjyGJwDDvL9aNjasei+YWYKvfA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602165598-855d4c59.0_1602165709514_0.6346881496663075"},"_hasShrinkwrap":false},"2.9.1-next-1602166251-11e82beb.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602166251-11e82beb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602166251-11e82beb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602166251-11e82beb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AnjPBX9rfgNwVdVwF0kfRwvUr3lVq9zt4XmPj7+g+wOeW8dOmwA9VGl5rA5xo6ZJqWUthLzLT25sH0XxaZq6zw==","shasum":"166772d91e908a1e63cfbd3a7bbd109643f7d06b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602166251-11e82beb.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffx5lCRA9TVsSAnZWagAAfyQP/2J1U5cYKmNUW6KIRqg3\nwH6SbU4BL0Af8pbzdPGoULmgNsZK7KfzGCxJtRlYlW5RsnZpgcAfv2ZRZc0d\nIIzW9vkTcckQ96z2TayLomjBdNPoWrq8FGThVXQP1Jucm2/M04ScpT/ufJxh\nGYWKt0AYrTQsTTMrXk71Jwh6vNiHk0w1AfdSIkKk3P3cZW+nBMyHSOvg0J8q\ni6zF3xTyRT9sh9b/yy8S78DI86FmK1M//64Bm3Qx+kQBFJXMOQt/kl2JpDM6\nzjgDp7CnZf1+ZB/g4qRuPRHF7EOXCKS2E1Bx1wbvZgQ113l8fwSnU4dhWqZ9\ndnYv+JeGla9bNmhrD/NMFtrxUgAfI/rOs+TSEnKRvdExeryQi+N++l0jTVL1\nux0MzmcEesubYeNAzk+S1GCphE8kALwQIxwBASY4086LBtxcMogzuynNXmAg\n0paNyocUICZQh0Pr79+SBtReZEXo7va2q7fNojU2gdIsMgNsvoxxTsXGldgo\nDGsuEKEJvL5XfsQ2IqqOoW59LxQooyXgqAE0pf1YYW8mTlr3pKZ5YFN6kJpd\nA2FP2KLRG0YfmoYldCVCYFBOZJPCQHEB+WTkIOfec3C4/7jS26sQbv/3gUR9\nE0f4Lz3hMkeI1aFjDLmn9sZK3zh1eN8YHFgppo7w4tEd1oO3kQbyHRN63aXE\nEEK4\r\n=xwLX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvf8gL5E8tahZi9igDsovObkZhSOTg/0WS7SZKiaLZ2QIhAJmqmE+j9xQdCfg/oFKC+p7fe+ONEUKuxBYBSi4oQ2Zm"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602166251-11e82beb.0_1602166372808_0.4346277161742724"},"_hasShrinkwrap":false},"2.9.1-next-1602166940-5fab8349.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602166940-5fab8349.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602166940-5fab8349.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602166940-5fab8349.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+T2TEhBVZF0C6GEl8huPpmczreF1KvHGzR8q91ovKwQ2IsyznhuxZYzlQsYDjhXBzee/ic7miocRI1yHg/gspw==","shasum":"842b021ce090d9f99f6013186f8c0e3910079070","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602166940-5fab8349.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffyENCRA9TVsSAnZWagAAu+wP/1Coeg5ST86sZjgCwMOy\nFF7UP+sn5hfPAEs4SPdGYHR+Y+4GzL/RQWiCYXiA3qQG9dReIAgoThDp5Ecm\n0WN6RYPSlQtq2Md1GBC3TA7woZtNjZkwIDstKjfVC9vE88UDZovDxuOG47c7\nVRa9+wbThb3PggTb4dWU9UjnK/42vms1XzW5ux5D5C/hKd+zyNJIfxdh1ZBO\nOgYzEI223atrVcvR3kcamYShGkGwuDDY8a3s5n4GlMfFK2v4/eBr4sUqJGPq\neLHB0xs0kURF/npsAW8/km3cf+2C7nU1OoKWJ9cHxfLWBAUKfmKD9hMGAYz4\nawO3G2FdTbXhRGLxfwB9d5vRxTFRZ+uLjycIEKhR9Q3EG7rVLAzjVfB9h4kM\nZoseDIKlGLF4BRYpII5uHZHgiEpuUFHtv6JQLXrfFOeqwVBnaghKXOn/zNoU\nkJJ3g9Qjvc7OcmhBvLML+iS9epbRylSX/RwJozkUz6I+nUke4J0tMOJkzmor\nHTbGYdIFgLR5Zy4k2aoRo2jai+X0pP+g9a1p3wcoP2476UB/XmA+qJMjjNDh\nsFq/opq6NpEzPNRp9efZ07T7aG5tUm4sHyMQcCR5XJ0I2Lmzx0F7xNouYhRK\n8K85GvXWdisOwhUINHEsGYyv3o4TF+0GD/Rbo03JKxKcJahLsSn4nrJlD3yG\nl4OT\r\n=kP+w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBPQvA7QD0gsGt5k5b5PII1v/GSt0HQzaKWLqZ7Nz4tsAiEAxTeKyYBrmPXOM2pPuiYFVTPm773pffcTD/0fASfaO5k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602166940-5fab8349.0_1602167052813_0.679155345778576"},"_hasShrinkwrap":false},"2.9.1-next-1602167403-69f36a1e.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602167403-69f36a1e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602167403-69f36a1e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602167403-69f36a1e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3853LJZ4H4494alAnkmCRh4NYP32N0Dq1Si2isN4XeaV5H2CJnc2qCmXetdmJdaEgDqMxf6xxswHnvvB6ftWcA==","shasum":"8235d774cd1dab879b51dd75cf9f309f232ef768","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602167403-69f36a1e.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffyLWCRA9TVsSAnZWagAAKFcP/Rt6H/2mb67qFrObeWEU\nUxYNIHYN3aO6vDvlFCnnwGetZZgqSlFptD8JKANjbIba5djL8ts1UYFf+JZF\nmSTC8c8GSWVLYOKlz7NxC2YN2nFueBBt2YVv1Ak/TsXo+cwPP8CgCxsoNBfY\nAVp23bgf5sgPsK1aL0qdu7zTXD0vX+f3yCtgNTyMsjiBDqBtCjPULUrw+fgU\nvZFA2ohCgGpHhRBvUcCrppJKFTSTC6DsVyul7QZykUxQObZfBPZisu+TMEUY\nNfvPp6XBZbmJsVlpA9JGFdGBUl4qDfQOoga4ll/mi7klTDzC90m15vJrYAmA\nzmVy0eMB3EKKjunNvXifloB+BACmZwyMK/z7riFvUtjZ2mQ/5iE64fLrqLeX\nRbH/HcffzOMLokwRPoPO3eiNEOZjbe36U2Syui38bsHnni1jqZZpp0asuwiT\nzb+46GxsUxXITdAEEILEIWLmXyB6xAMib1CFyUwna1xpVbiXyX+Y1d8SwNjC\nqDPK1Y/zvb71oake3xnfW2NtHPscF6hJcPspkSkPQ5kD23xbYK+nAwK86OaY\nXBk7fyED+OP7MenhJNxZltpA/j2Lwsj3nJf+j7rAPICOFL2NEkwsSOlzr8Zj\n0IvndsKtR29vKKmU1Jdf4/Dja8ViH1eOuKsg0nN05nxEjG035Yw8bZD4fji3\nWmhb\r\n=3bcR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQ1iqGpm6+jOV+FayLAsJx0xJ3IcTQYYA7PYOtkR7GCQIhAJkIxTXfv177XoA2TfIswD0sNiYyKpn16rJa+Z8d889c"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602167403-69f36a1e.0_1602167509706_0.596256186549432"},"_hasShrinkwrap":false},"2.9.1-next-1602168778-9b132b3c.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602168778-9b132b3c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602168778-9b132b3c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602168778-9b132b3c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AV1ofeAgUjspRmiOEF6GdWMDQn6X/4qlLJV+vnPAEzilq3t6mviAyopjXhrPhOY6/6cZWc9F7ZEDPm8Qjb4W7w==","shasum":"bb4d8817916b941587d85f171051bbd2057d36df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602168778-9b132b3c.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffyg7CRA9TVsSAnZWagAAE/UQAIZ+yVIsFdu6aojvROJE\n7MtZE1f25JOC1WQLvooJcIxKI3u0wFBQBPx5ZiaGTdJvT1B1g06k85xWPvhs\nEYZfNSzemgbenKpve8wmVloFe6WoRLDf5ke06sUZMImeV9J2fgwIdJlDXNlh\njIgPKC5EoWOgKcTcgJ0Z+nay27PxvPV/sdXrEb0CWqjI4sLLkjQ4SKzy6KEL\nukTvV0tvcoIiKCvANKf22PH6et+tqVWlwrKrZOLkOZGCmzzQhIbH9vyWQV+c\nPOMqQX+HdJCH7ZQltGbuxgPN4zNvTCDTrk/5M4PI+v2MRpK2Aqe6ZpOobTAu\nldaenpUkf+lsOsFNE4xGygzsAhoysduqJsgAL7iFNPL8WOKkG2/8rcZ2kIDq\nczF1wSp+wnb2tQryMoQHYN3ZTrHaVX0JnpTPlPWBBW2BDDl3yPTO7nMI2aY9\n6S0iszxq7LWXNJvfn7ZrUEA/6UMvfu5jcsmO2+KhmMLK7zheWHwMyBkDdCqV\n0tQoiLzKpimFOxMvvysAium+4riOhFqUHe3HeSZdePLJIf1Yocrx/HMbLmlk\nClT3T+lgHfKXHHsVivrMUKPEQpbI/yUr66K5hFMF3sjt0SY9RtwMM+fcdFqQ\nYg9Pl4EJYvSXnS0qgQ0veKM9PEbmawEESMBbg5HjGGZhqnhUxK5d8SZ274oO\nSGLw\r\n=PJ8c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH5jmKr3PTR1v/ukSrFlJWQ4K+anv0hBcd0Tuffpv3hXAiEAlWnqF61s7tVadWoJYyW8x8nadGrvpg+R0z0QObHjDhk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602168778-9b132b3c.0_1602168890886_0.055140170120800525"},"_hasShrinkwrap":false},"2.20.3-next-1602170355-27e89180.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602170355-27e89180.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602170355-27e89180.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602170355-27e89180.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3BB4nSajrX1lE6+bu3lB7VRQ0S0CK03T+GGSML9EPJnq4ASA6X7g9bYYftEdjXF0utJ3AqWvR6F3mff9qbtc+A==","shasum":"a39729bc725b285aaafa17b46bf315183a31d8eb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602170355-27e89180.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffy51CRA9TVsSAnZWagAAmW4P/14j7a6qvJ8moDBKUG+P\n+phX4HSKNQNUNDh/aDOCV7Jycu4Biulunsnc+OgSdkTCj04qZLK4GQQB6RjV\n49G5XjtvKmGsiMPoujR+Jiku63QrwKpPAwzBRa6+6vRlmgl9wfrHQ0z6q0ZL\nAXbSc2bDgwulgK2syEHN7CE65rj/Tqi5/03nI65NKKUi1setJzyByjBeXnSy\ntxZcgr81HflT0U1gt8EgjPEi8NoRBkYHbc1Juozd8OX54Kb3OeTkJ/Rr5qVA\ntNNwXVDSKdqea9L5vbgsq6ExSfVo2qlHA/zhiB0nFG8fN2wIHp5PWBm7GyLP\nfS8t9YGEJ1Sjwm8uSj+KwGm8J0ky4jUIcnif4L2PA3w+AjYnsAEHUGI6m3yS\n3TMV/r9rbyLGCJoYjciJnulmmixhn0TBAJ4rXio3Lqa3gjdG950l0nPNHocu\nStoIrvQQDRVYnbZgc33fLLFeCXCwNGCvNjx+9Bus8Wwr1GsDsnLaGYdv+/DR\nhi/R8+hurxwczOX96j/IZ4tshQgR5SmOrTIdDbmDdmYHt08Yxd/BmYT4yKwL\n5QtUl16KYvkJL5dqLE0++6AdILG3B7kUaPE1jKJieXmtyOMntXKV8SzXv92R\nNETnms3xAZa2BdxByHiOlCzs1ZNB0/x+zB1yvN8FizgsJOrH8ra1D08H4rPD\nu3Ih\r\n=Zdb1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID//8aWqtkU3kEzyLx06E+pR9zgroEdn4HjEwnXtyP0kAiBAdsKkjXwCeid0B9e2YbfmGqo9RPU3aSQ/C9jhscXtfw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602170355-27e89180.0_1602170484851_0.8393386651109287"},"_hasShrinkwrap":false},"2.20.3-next-1602171505-27e89180.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602171505-27e89180.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602171505-27e89180.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602171505-27e89180.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PUDEh02gozOOgNaJV4b2PPtmiCVCKFu98UOeUDoXGWXK2Tz0Tc68tI1Ev+zwBZoBDNFG3uOY9kJsNA0YYzHi2g==","shasum":"f1a570a0c21db00a92a0b7b8395ea8cecb72e29e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602171505-27e89180.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffzL3CRA9TVsSAnZWagAAI9YP+wXP5QTMkVEFUwMvOP8x\n++LVC22riuWGq6FHv8NBEec97eUdCDyWyTEjEWWYGPt/VUuLEwA91IhtO6v/\n1iIqCMsBXvp7VfWxtXPDIqPOUOCdEaYh17dQE0nx4BUurex6RF5j5hqziWQ0\nebOJv1DOXk9CIcTjp0ZW+vaWNsrwiq5stySU+vOm166yvebQ4aSFpuHgKkng\nYARv3e/9SZtaW53t4aqqkKO78JjS0InYo94N63qxlixAuqNMe2Dyxcp1dhui\npGSlna1IW/fsWLDBjsRn0JTxNLo5AoLVLtYH+sTNgbYyhFck+Afg4JMX5vcH\nKncT0qEgioi+0Pa1wfZDldxLT9MsGxn+StTKUMqqrGhYBm1gq1rQ8ESxPfGx\nM/N9W0J9BxxBrArpzHedlGKLfG3iVLLJvJWz1NZ0+0gCIKOZ6TmvJIGoC651\nELKWOuG6uv9BrSKfA1jGftFAG4UcdbF7WnK109PI1iZZiCwRXEWQ8duOHSeP\ns5Uki0vFclvlFn+s3j9nkog1WnL2LxfZDq7tinNMPqHOnVn1Z/cR9rxNHsh3\nYg4ro4HSPZq6nh3fL/JlU/Gx+DG/9Y4Z4QLyAMBA8SJh+Sem8KYydIUTYi9i\njgK+5WtxZ3RhhS9iWDlWGOh6Szi1YHevwAYSVFpr3+vEb2o/cb+HqJfn0pTl\nrq0X\r\n=GGhe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUfJI50u7Wg4XXgX5tqO6K6wumY6j82+ZnGHUcfe7WegIhAPXiRsCv+VxyR5isF2Ho8empNwWiJA1YT1MTn/y6YhW8"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602171505-27e89180.0_1602171638836_0.9290305405973922"},"_hasShrinkwrap":false},"2.20.3-next-1602172668-27e89180.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602172668-27e89180.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602172668-27e89180.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602172668-27e89180.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-c+LFBBM5GIvzEPEBmCMM8b3ssl4emIzxJggNbXY29kV7tP72Uzi4CsWpV7Oz7ml8psLGFpb5FHpujvn/7vzZOQ==","shasum":"af9b2fee8a59aab049880349c4d78bdd698b3dc7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602172668-27e89180.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffzd6CRA9TVsSAnZWagAAOfQP/jX4BSnrapOxLEiYIl5M\nc8JH42CBVtEY2zJi+wYy/uPJxhnZEwqMKuX64EDh31xSbJ50dpmp5JIwYd7w\nJkfoDsItJPmmAOUhKxwlJBhj3WNRmj63mGHK/pHjym3W5MYibFBhxLUJHv11\nR+Sldi7jch1g1ZBPrH1gk1L7urkckTf9/eLWAgP3mngKIIrvijasinck14qw\neun0E/6KPPa3gsKleE5aHK5L0j5/vkBNWYXcqtVjJGKRzHVPB4TAlb193yoc\nDEXvC+TbsprVVhSeVDKf2FH4HQBpoECbG3hkDNOILx4PxVhE5SWTisqAi16l\n0EPRAgrow0MHTKTaYNYAEL6cL56BbZ/omTUieahJolO1mUtox5x0wYmHIK2h\ndCJqAr+IkFcJEOCUux8Cf2FwRg+lJHeOEX/kkprWVMFdNOXroeTKfFU6arBd\npO9KVWV9YtnWgQEmOg6h7xS7jNCfCubTooM+ivp2j6s5Gf24T5QnHPvx9dEc\nliKiBy160mITXzvfN6XyfhPzh0yXe7MXcbzYbcM95Qnd8plipk6dFV6TDExA\niocxN/wBuxT0U1IIJnQSVPqZuUQi4BkPZ8mhVVluERk5wLQxj2GH9K22/xj2\nI2vjuhm8ZVXlWOyQELo52UNYDi4ShymUOx9g9oJsBMLMvG1IglKTijRvKCVB\nj6V5\r\n=NuD6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFO0/9kcS+6zjVm7YuqRL1PqxMAyV96uANdul+Lbvq62AiA4bcFoPk5GTfCiypVHxv2JA2uNIQWTWcU5hZ6kJy0b6Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602172668-27e89180.0_1602172793757_0.29072950638106265"},"_hasShrinkwrap":false},"2.20.3-next-1602173654-27e89180.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602173654-27e89180.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602173654-27e89180.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602173654-27e89180.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LI0W7L5L8NyYiUlJl+/F6pCJWv1+akEKxI5hwtgUKs4GFQnXawkD7W1WZtlzEYCSrbJDG5S9WD37evNOK6tGvA==","shasum":"1762d7fd1f7aaa782daeacba4d64a2fd9d0b37ac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602173654-27e89180.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffzteCRA9TVsSAnZWagAA8ysP/0XqQoHKDPBK4fPgz3vS\nUhQ+Uo2vMltNfQkfFIuz7If6Sf41Y/HqRsDuGAn7LcEG0W5msavIfaN/2hOL\nE//qBGWRHF+T+MaaPVg4rhSMTpchiqR2kXYKBGZbjuluLvK+JgdJBsJc9YJc\nrSfKfsW1o5g1sBbqCLsPqcfBlKevtJuBD1J5eh94Weyz7tivvb3yTpdPy12u\nsfR/aC14Ub79ee0zfrSPVP9fpPlvaWHKDT6ztjE4NlD+/WSZY/cCEIY8Zcgk\nWhzlMrVk3V3Pzvm0qDWQCiUXbhcvp+okplKYEtgNllaUzLm5D49GPwk/fcVZ\nDvSOWzBL6miHMCVRkHHeDm3gDm7cJh9l1LfvajjZLZg4AuUQkmC9RrRRgmAl\n5dF6e/ZQ4OEMqp+53rMgIyRWSpT6R58uLa6zwSJDVTh+o1wdbHLbi0RsKnTg\nc0wezp8Vf80stGjcIrP5w7iGeJ0p7HP10wJzkP7ASAJxic28N3ZgcMBSu6wM\nL2mCvvBLIfeIYPf9AM/Fe+xlUkpgn/uxgmVdsPzSbb/GkvHjLEi7uxNT1DC8\nbLcpfL/aY7O9QpwDt7sgJRcFVSMJ2zuDFDLTyf+XP7VRDh3jP+rh6p2K2U//\ny6jf1pbug11PQxupYEcsnAK12bz8d2gjU56I+9aihch5MUUYoI6ff6EgNj5l\nGfPC\r\n=QRVV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4xqdb54qEq37xfn+LCvpLBew0Muw03OM1SixXpU/eUAIgGZoepfYHUagt+ZGxShBWYjMQN/anBwykQXH29eSTe9E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602173654-27e89180.0_1602173789899_0.19457082190215358"},"_hasShrinkwrap":false},"2.20.3-next-1602184590-f19a2d85.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602184590-f19a2d85.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602184590-f19a2d85.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602184590-f19a2d85.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vXFP5xlp8qL+iCGvxfXQHJ6I1TCueAhSh9ENJZ0yEdgtVCrvqh/0M2MmfpSoF16J4GbUaze1f2aaJ2xEejPWzw==","shasum":"15ef13ed74322f6deda6e860a7c4ddc53aea1a71","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602184590-f19a2d85.0.tgz","fileCount":56,"unpackedSize":108892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff2YjCRA9TVsSAnZWagAAy3gQAKHTWEi6iXDOhR3e/TES\nYNyMTqKewTUPVCjedLzoJ+UNNLSfWdVpgZgRQo6hbxiP/nogMX/S1lz1uQ3V\nV0NTBUupdFN4y+UxyAn6Vs8WSmOJA2A+E+u7TkkSKzKuMDs0wK9qqikK09MC\naMHi++uv8evxAUGRybc1vWahuZWo9eyOrs5R+1UNEQJG5B1DPA5dpWur26m0\nu8P5rw0GCSagz45PyATevclcbMaQLamr/RK/J20vEjJ6R3bzSeM03AXSKebt\nIN0ESyPdB6QXqkHQBB31/SzP71ar2U885SJ2Rgsbb/k+qowUokP5wkCQqsAt\nDRqsf7Fy4wVP+8vaL9lgMFuJFjPgmPTWmzk3idCho7TJjL/qtYmXLo5iEphD\nWKYK2PkDMyzz18Umgch4/5Vvk6Fw4m40w5SUSMsCMffmQ/gvWOwJzHttiWNT\njCaEG8mt7It7Bo/sCqNjU/JGkakbJeH285Cv9l1x6K4udCcfSfMRslAc12gy\nQnBBMAuZcCrpBydXkRR9fTOKbvMOBsTy8mPG3oHTPOs7RRa2KKXNI1TaEsUP\n3Ni3M88IPkWDVniOo0QvA95UxkP5xvHcZ/hh+5s1ViEZJpNQzAsK/k2cLtHg\nKkhJPTMw5UrJRv/OqpQNWU8DWD8oQIwBTmVeeil2JoQfz9UU+hUkjvfYZ7M6\nKIEG\r\n=h8ST\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDp1hH5YUC90kC5n1PTJsD+Cm+yGIOrW84X2SpmBZRdQQIgClBpb3cn0mWvW+QaNcwFW26LbCsy2jwkjRPKkJmq/Zg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602184590-f19a2d85.0_1602184738571_0.646014872688917"},"_hasShrinkwrap":false},"2.9.1-next-1602240727-48b951d4.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602240727-48b951d4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602240727-48b951d4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602240727-48b951d4.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-s6ZNlh1hBrnHGFhwRzTnSO3a1xouqrmfMRJn9V7xwI7+w4z3SZTYxCYrySi3vcqO3FkZZL+59hu8NMdA5mvoug==","shasum":"1c1c8d51ea6e7a5ed8d3792f06a57cefdb3b7b47","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602240727-48b951d4.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgEFFCRA9TVsSAnZWagAA7oUQAI3pI4g0kXRk5mYLl28R\ns+o3bTYiM94+bRgItwdNHTMhb7zaJKm9Ax4i36FJ/2g1Q4/Oi+9H71grNgp4\nyDB5yObeR9KEN18KK7lCQa68zbe8V0gu3oIgVcww4juMmfNiMkpfvq9UkwkV\ntkBcGSmUGW6Kf/vmf95YZac6ceYsLasb2oYjwuLqxHDrZEL27b3nzL/7a9pB\nQ74AYLFSm4iXbXFZYY8RM6RGEDwhbTqeYX6Ebrg71cwym6A/Ql6Eke3jULHj\naPmrgr5BQEZEIcbOdblYETG7qg+onM4RqVOlT3cDNdb+I7JaD/98Or8MPy2p\nTrOF3tjgiuZja6ALPF4IODkU+cVTDI7qdCiCkotPwMbrjVI7pKXgTa/MtLcG\naZdgR1NvPy9chLNpC0U9Y5GyXwCpirO1Etjvwtv2tAhBoPbFao4Kvey07A0h\nM1TpqJICnuG5EGM0kpRDoj5i8cxbMcLDsf1pG1NeUE8FFdhAhX2lIi5NtDpY\nfWgry+fYZvOutzmnMw5ZLzWFC1FvEBJVc2qJlinRhfW+XfRZCEakaUXz2XWU\ntMVhmfLrBR+pQckqc5kqjANBubfRXAyUQkLsdHcPpHShxNMljfY6nqxcuFgk\ndLCb4H+Ir6J28ciJUyCa4ikZMjAf91io11bmtgfbJnb9CYw9yqAMuP5i3d6X\nlgkI\r\n=bltf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC3m+Fz+2Syd5Obz+hVg5qSSONUX05iAi8HKWGoS7/XNAiEA2O3S9+X74XRawn5Fb35pcY8yvits9n2vu1mK+hgJf7k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602240727-48b951d4.0_1602240836590_0.6834762763367239"},"_hasShrinkwrap":false},"2.9.1-next-1602242108-c2932274.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602242108-c2932274.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602242108-c2932274.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602242108-c2932274.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8qKng2mZC/mufZTlaxf7M70dbyq15h2vyrLiTgZkuCikAZP4yg2bZu70M32+EKZZ21lMFvKTz1W0z/bIBPXzDQ==","shasum":"4ae40012ae089bcd88492f5c2f221b8883ed245d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602242108-c2932274.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgEamCRA9TVsSAnZWagAAh/kQAJpypG0vFZ5X3HXFFEL8\ngQK/nQJc/6KhpY9fq+gXXU+xFlvgXXjrBKkWjJN7qFytUzhlcvtKqNUH9nfo\nuzcLhVvnI7Y8JFNTQwkR/YzQX0deIhLY9r81cYnhW1wb9ugaonIiacHJwROL\nkdBf3HWfAqWhD8jfVBWFEKz5TYKB6FqI/0wiQMrDObEXn3h8oMYWwaJ3c3he\nCulSPysmBRuXMBfqy2xPjF+1h2JsLlXCHzr++dqZKi8fJSYNVVA8XopK3Byn\n7yByH4gSi2uWdRQvsrfIb2WA4bBqCsEAZmKtSI6Ji+YiJbTyR6UH+B+175WK\nS5bSpHAZ4HFUmo5V1931rZIOw0ESO2WaJOLTZZ6yb0Wb/lejdfPL9g5POuml\n0iS6BHomIbuDwhLE68HoQSvUdAY//b8c5Xy2gx6eBUH5nxeRI9rPXFh6KOJx\nRY0BDE91W7NoLniW9eyWsPGQWoQS2W4hU5GrWUCip8ddsDgqJ1iUQ67KwxIX\npQSrNBNPZsbjjCVBWywdRLEA9AiSDuArT8JWDjCB7AweKwEeah9zI2R6eTRH\nOgRA8AukDTYiTnxDUfWKXan9HBUIXni9w3jo5akUI7Tegl4rWFFGAwTFUKgg\n6ruUsFo3j7fAB15OS5IDv6O85NbVo9BfmpIZ97wH0DSFBLy9eBtvp1CdgXIp\nNLYI\r\n=xUDX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDz2U8QJnDsqeKFI9I2hkkj7tHX2HWunxr9mHTxHpxNfAIhAM7qA3H8jv9evZGPGezqGexkKyMUfIhkrgLlbzsZg4+i"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602242108-c2932274.0_1602242213845_0.35527548611824145"},"_hasShrinkwrap":false},"2.20.3-next-1602245005-742c24f1.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602245005-742c24f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602245005-742c24f1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602245005-742c24f1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Z83zB9oILVmSZXudXRRm06Ex9LIUU8kB2WLeBsnACwQTscgX6BEtYPWYozsZwMjUVoG40CxcpTpINEfiS1GabA==","shasum":"64d9284a40a35171f717229126129721c4e0cd75","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602245005-742c24f1.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgFIYCRA9TVsSAnZWagAA8UIP/0munJ4AExkHRuhEvL+N\nn3J/22AQjlbvGo0uaJdxPPjX9Pc4O0B0jQKFtfqBbwy9tZI4Y04vegFovFN3\nimjhUV5aet8r0PCLin7Cg9ah8n/ob6H+y2LrIAZlK9TZJh1TnDrdSwcTYBgZ\nubFJcjPHLXbfP7C5GNWKYaHXsKJ4VxF/ksfVBruOKDEjVLqreZGXRa+6yDx8\nH8jy6iKcSrlpvBQxzjTC5UvJX49/l+sgcF49T8M+pEFrwrafMXgweG+7qoYe\ntNoVtgievqRINaDnsiQGahzKB2giLhCju0+7QJmXKISuz923mxZhQQvpQcX3\nrajnsItmMdwk9UuxMKxqndqBWuN5S6zrn3ixm2YqdS5hlroDJFMMMW5jnARd\na1gE32O+TYIw/q7V+tL81ituzXrKYj2Myjq7t8s7ndLWktw7My5qJRi0qW4k\nVi8t405BhfzqvvMbtXjRYTnDEBSplQPLD7grrq4ugaDJVq5tyzavMb7/F74w\n9arx41szAPH+dbWj70+G6Xjc6wv13nM5XIxxwFxckDebex1PPj0zc9m3o77+\n4CSaecyX4fkbHjy/MyNd6K/e6W4e1x/sZ9F0+ylYmOShvmQUuc2ek+daCBM4\n8SRdqZXF54+e0m6zc8dpcQA1ef/RTzPbfclcX2clytBAhHcOXs/6lPXSlRAz\nrVUp\r\n=uYTT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhLgjPmbKs47mTQyFG4dP3Cwg1lDm+GJXk8AapprAf9AiEAwPto5y/Cg7rbuReMFWfNZ2r8w7CpUsU9MOIOJJmY30M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602245005-742c24f1.0_1602245143787_0.6460132973721651"},"_hasShrinkwrap":false},"2.9.1-next-1602246224-eb9b952b.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602246224-eb9b952b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602246224-eb9b952b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602246224-eb9b952b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lXoTDPHznqfjbKa6aqpa84A+OyOlXmr/PZWNNv6G9KjWpJxU3Lzv9deu8WLcxi8pylQbFpNysVLR2VrJBT5gPw==","shasum":"3a42a3a70ff7914d0271ecd2677be39d00ea0c25","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602246224-eb9b952b.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgFa2CRA9TVsSAnZWagAAogcQAJlaCjPZ85qXbxNuN+CH\nNLndYl+SiMY3q+NUdUCWLLPnkAcWiYgb9KO+9xGreGlXBDUX3ZddWaeBCQa9\nckHOcZMqE510h8hN02zMJN1CX51kXLCZrnwcsHSoOVDOoShIDiXdZZAMnx4l\nJ0kKa/EXJ19Of7IfeRb1Qc3mXPLMkYvH5w8tjDLehe3Gm7iLNi36LIiObRLf\neSrEyK4d3qwtVamBBR0iaN5OuG8M5ppdLEtqAvXV2VhePnENm9ZBfFInlwbH\nzgxI9E55T8jxeE+csjnra2lNsyouwOX70mBlwYCLd3a7Mmaj5oI2qQ0MRwzX\n9D1sA4g0PyMECqK9smhjao9ewRJ2NxKGCL6OhB/k7RsqNpN4I1zOQG7m/nbv\niNHLI8mFwnWNkLuaVJyaIYfH8xTgDiKSvdWIImLJXJndoFvnQ2L9xsz4wisj\nBRo9Wa7yP3KolDMQuaTq4AHQz7CDT0buOcazIoPkeoHFsUdYTqAe54Hynje/\nhySGjXqgjyqjDM3EQrIhWJKKiA38gfTGzEgtfsBcTgcXW3B7FmJYaMGPu4H7\nITc9hFw7b9ozf4gf7m0KieBDGwttg1We4UuNPA/Mk/vYvAOCJ0GPPjR49qT2\nG1x8ZbxLIY1V3UcgWxNxqqj/1nSjrxHUmWeBbOFWMGJi9N4In+mJLIDRI1mN\ntrNm\r\n=MXlK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGm58bTy0cVb12K1phU6SXhEgRABtdHjn/ZWcn0PSkxOAiEA+CNQy54ezYfEm+7lf9dHCc+xAJZ7XoeWQji4KRczDxQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602246224-eb9b952b.0_1602246325912_0.6208564800718881"},"_hasShrinkwrap":false},"2.20.3-next-1602246726-742c24f1.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602246726-742c24f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602246726-742c24f1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602246726-742c24f1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2MpCNrw+wbrzVXNa8+4RUeLkdK47K0HaANyhXTj/vy5SShb8n7O+kotaxUsZ0h++1jYwlPrul0b2dTU5qrUIjA==","shasum":"59799c642746ae69d7ac4599c602a69d41ee7972","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602246726-742c24f1.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgFjCCRA9TVsSAnZWagAAM9IP/j03U/0mL4RjMaY5HtzW\n/LLwsxcx7gbP+MrUuy0nJYHQpLFxv8Ec9mU27i9tOceSiQZg1x+X+qvl4vjd\nB8Rg0xzfhZbxCG+Sb2J3x2U2XeoR7v1gqHIYhdPEUK7L2shh2uLzQxeBT9v8\nvYMFqwjfHmLvTt/weXvAsmtRtW1HLrxZV7VbQZgUrYoMDQib9sTgwbsodDUa\nyzH0u99snDgCHQmqOk4kxfWZ1+o+7NkIopn2k9CPLkeK8bCSOWS+PmabA4pf\nCLlTWL47aywfTTvjxuOwWBYY9HEYxhRaMHNQjeY596X7mf82Yaw37/4XPBQj\n17HXe9f++HbwxxgaO/m0t4fSfGvQZAmaSE5eX9GcoYYVu8jNOZeE3p7nX7bC\nG7Vj7adRki2WCukPvVNQmGbDLmcsoRSdEMtqCStp4c/GxF+TAuTp0NKyWC6d\n8PouuSoqkgC7pG1Oe7i8pAwp6ml5hpFRhSs6xsE82E3c5gzOYfaM+4gnwPXE\nO/VDGnd808R65sPxgho0uMlODmV1J4DOAQwApdwy0fxf6mFRgLmdfvrezX9U\nOrJb1RAPEIvAhrrzcXi/6uMkvtKr4fXDOZDwX6oSpHauAwJMh0bbglBXTivA\nAq6a/Yi2FKqycfWeXKAcS0ZzMgr25xZOtUnpYldUZeQkzzcJLfhhJx8k4gAv\nVn6f\r\n=SR5g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGyjcvkJ/VJIZbwni2vKSThxdsiQgstOouo/K9KWPA4PAiBO3sP9L+4OPA8weJN6+YK+i9qxQTfW0E8S4OE5DLYeUg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602246726-742c24f1.0_1602246850162_0.6672862356115605"},"_hasShrinkwrap":false},"2.9.1-next-1602247409-20a54b6f.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602247409-20a54b6f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602247409-20a54b6f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602247409-20a54b6f.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-q86WbO6jR9Z4DlntKfsIFb5BCT99Lt+bAJioL4jmbS9I/lENcuMkZv9USqHcW9bP2t1iqg/yJEdc+yktYfRsBw==","shasum":"c30531a2d1214eb2bd80738b4b5b188932811ea2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602247409-20a54b6f.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgFtkCRA9TVsSAnZWagAAoEUQAI4q8x33prisrKyLy9Z6\nHpYaf1r3qg/fieENOqiJ78tgq7EtqUfCEUfcvxrBUCZp4CLU/7ccVYQbGCKa\nyCbTzR1B5qYX1SoNszqKWlLJcYSlVMiJsvoHmwaumlUNVZWhm30ek9QlScTt\np8ymNE1iBaW8lPBw4hcvWI/ngBqpIra1Wc2q+vwvMF/WL7myLqC4oqSQ7ECK\nDm/ICz5RIsk3B9MFdtuvAG/0id69Oe6TWHMOm/Uk0sOKo6j3cP2QzTDL9JMK\nnl/UrKyThUQQQjoWyH+dcx/CcR7QFVu74Elx82bUUNkJbbo93cGSAG3zyHEJ\nkPMXgUhDznSw9vQO2EgMAL8TIBrJJcDZ9N6tPnQA82EfKAd1NBmdl7KpI9PI\nKL8Y8oZRJlps0qq8Rz53QjXhRhUdl/ldFZCzcua/JwT+MmP2LJ2V9euliGcV\nLD3RJX7KB0bBYLg8GXChoeStpcMaXRnueLz0CiVaOwTgjDx7/BVbPgng5xXB\nyevpyr1zFjTz8ActfhNNAG2YW5ciuAeaZmvce9la6JWtNeSW2VzYdYrL3HTu\ntLhfNNLj4XRd+g2kxgamWqmiV7E9/H7MVayHABBeJUbzxSnQ8OOKvBWJjz5i\nTVT94a40KCIFuEocuTYJovFa1Y7WQks9A72YR05hJzoLl1H8xL8RTW3Bne1X\ndipp\r\n=tzP7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHczZodim4Eqg7SZxeFexoquutNBjp1da9G0iWmbEsGMAiEAqXiFZ4rtc80kefzQs6fuH1efAfAqUEeQwRBerovDtoA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602247409-20a54b6f.0_1602247524480_0.720589356902418"},"_hasShrinkwrap":false},"2.9.1-next-1602248916-bfb401d9.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602248916-bfb401d9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602248916-bfb401d9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602248916-bfb401d9.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-e4csuywzu9cdBpTRGrne53EoJpk9lb0+xJBF+og8ys6ulNvywW8m8U43iECYOUH1VzDptSBFMudpuH7ag8h7CQ==","shasum":"fce3d84cab8b1cc8e287f8487dedc100533a3750","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602248916-bfb401d9.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgGE/CRA9TVsSAnZWagAAqq4P/injMFZXnBNqZScEP8iq\nKJBWlLqMJhTP4eQyWf4SRYc9HSA7uSDYk6MbaBWWeHowWgIEiTMIl4U2RiiL\nEFmPanKt21tjqJlKvkEkSJ090PV0xLyQBOiZKwZ1uznE1sfrC9gWuHko0lHc\nFLR8PT64IgWjA3W3n3qblfBMViMvhGu1DvghRZ6qIjGCMLt00Ljtmh6BsZ2k\ntzO1a2lLj3/Fmjn3X9HKKo1XOXmzXjQ0b9k5ts6YmrHV22sruAi9NeEgkzAB\nNA8nNwFw3fXKxB7JkYXLxyNHPa59V1+ZT3aD34j3DTuQJMspe/aTX7XGkxXJ\n+2En2MMk7w0BPFsse3/r/DnBe6X2E3itAb7K/+2U22HhjDAcZp6AFc05PgEw\nZl28fCg+AZiaV+qYgfT9RRBqsvlvwiCE8h84f5wlRIvQTN407dvJmV6/5Ajz\nLuwoFbLMg5zs5X0R2ZNyK8l456+cJaHcfG/n9wo/ZhsEsNycsjhf+1CM6Zmp\nHl85qETVa3a038Mujrx53vCWBnmuAcJaYedm9rA9kB87URjwUgfPQdCEPo5Q\n1/TkifjUa1gmdZbJsc+QlIGOtKOqUAq2KwQ28vB0/FA1FEAveA2JprYvOq4n\ncafw1/YLQXZp/GbHPA8FRIzYR3vBJCV7fn6DR11JakbpYJ6Hyifi6QHroN0/\na3qw\r\n=U4wS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDySbgOx5vlukDRBx7BFh6WdilWSwunHZl6vwISOz3iWgIhAI+sgyzjbv9LV2WjoCy06PhgkDQAQrfB06I5xbPmGFhx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602248916-bfb401d9.0_1602249023135_0.6031601504820927"},"_hasShrinkwrap":false},"2.9.1-next-1602249993-b1d2adf5.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602249993-b1d2adf5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602249993-b1d2adf5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602249993-b1d2adf5.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-LNKsI/0CUMgbS6CrhamO2VqrZs7m3ioXghj0/QXkr2/3T3KPllsxUxOA/IluNHWZonNwZGt8KW5y1/Yg1c9K0A==","shasum":"5a1a5d47cad88456a7dcb5d9256097b092bd125b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602249993-b1d2adf5.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgGV4CRA9TVsSAnZWagAAhWoP/jLXBt1ezUY/IQ2g0q+g\nurxpwVQoZMOINq8Nr77sZtI8MIwmTZETYFOYYbwXxCLXWtjIx88QWlcxrFdx\nqgbH9pKxez9DjKILYsJhRATWux4YVX9YVYXRDNkT2Vil9wSAnPMKSRQ6y+qh\n+DCZKmZsIWnZ1WUMhOqpiC+Bs6wFTrG8wFzcWCkkZ5FXqOqcZ8iDtQY1R8p9\nM08KpW9mHKVxJ4K44Vq2pBndomNmPUNEtxAZMDzgsJyMSX+ei4XSGQgmCOAx\nI1UcpUrXYAUQ7AOEEeG2FAqcHRITV0OMTaxvETx6c3uTJNmOwfZ6Z0IiXC2j\nHZW3AjaDO8Uc+07CVkj/oErcH8gQBEAW9lm6InSDDoQeb1rqxfh/cGTYUG+g\nGTUlfulDNA7RLncaBZLiryuR526VTe63XD7BezzmdKxZdiklK5CcaEMeSGQ+\njW56ZsOdc2wKFOVbBw8q8WakIERu4iPAtXYjlEocJHOJwPYzc/1oY1LICOim\napSpbIQrJZ+YqVEP3YiyVfC8MFIP5h1yXzcbIZDsPXa8lURJCqAYyhJC+AZZ\n28IbPqsCtOknQtSEk91BSxfK3h7/bfmaUEfvj9+LCx/zD3eI3/H5BsCgTE3M\nriI6uqx9RH0tl5aTYGzAuz2OFFnsOmCvQ+6UlYxQcr4nmMbkHvx5RE4rgkJ1\nWna2\r\n=3fre\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdZJ2Ks7/0xXLzKSyAqahjDIT9HkfLGiti9rsGPfBkJgIhAIRzbowm9iluxVAQgJAkhTOSWfmgoVc5gOpamuY6nhVl"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602249993-b1d2adf5.0_1602250103708_0.3329589236560031"},"_hasShrinkwrap":false},"2.9.1-next-1602251201-9ad14890.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602251201-9ad14890.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602251201-9ad14890.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602251201-9ad14890.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rXiCnwwOV0NbjNem7CWErcFIGr7j0T8X7KO7owRnQO5fBWne2iYWrBmNQcvUl6lO7Fw500M9rLdTS9VhwUVDog==","shasum":"3f563cc44ba1cb3319af37fb129bea633955652a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602251201-9ad14890.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgGooCRA9TVsSAnZWagAAfLkP/2qM5cMSUfDhPpsLZ4xl\nDTn6/t4Gd3vXVrQ+g3pFvWpiGaXZbK+DLrKh15gjN9+oqoQQi38uXx0EFFMw\n6ZaNlomN9yU+L5tMwkxeMaJbYVwG/p446rLCtVXRA+MLYBWbO7m9VCtoajYY\nukkeE5JOv8fgVQiuxFjq4G2h5Wm7lrFVBsfwcXgdFq5hMC0Yzw8JaEJktURR\nbGwQgAaxnjAPuheq8PjetodteSOYsGs5ssX4ZZM56i5TUWCA/VRON4oZS2vI\noxJHS2NQGJaDSbBi53ZK+bV8vWxifDPm+WAZW77uT/2jybYUjkysE0Pc9rXS\nOZUHNL8Q66644NcjtGCz83yHDP1HG+wq8/NRD3t7am7QKTjJt/ahvNe9OxJz\nnkg8MP/+ZEYTKu0ySTwHJaVXmFwh2PVFYVx1+v1HRTe7x1czw9oD3QS2R6OI\npFoPFVkQN1xtBDVOUD8J8V6cSDniFKnzU0SdmT6X+QUjAheb9SDybeOyAaCW\nqA0Kuk1F4pd1G2w7BX4jGvJZ8jsdftF/asvGJAAwqpgODAktYt2/hPuG0c/D\na5/2+48Z0wzExaYexs1up3MFYf/8rU3sCT8SdQSN54RIPwfNYTLO0W/jAI1c\n/sY5vSDduPy8b3AOzlhsBgCGRDzbZJNJBOWVBQNwWlPKjxxu6guxA+pqb2hz\n8pe2\r\n=WLIH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH/fkZTvcYj/9Ia0pK/ZDIbQTqgq3OyUci/BC3rbfC09AiEA7iRFw4jhvbhSv4T31Kx4N//HBURUrGxmCbAITTGAd9Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602251201-9ad14890.0_1602251304187_0.10816531959811915"},"_hasShrinkwrap":false},"2.9.1-next-1602251874-f1723825.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602251874-f1723825.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602251874-f1723825.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602251874-f1723825.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Vr3rZbSN+bFmnluVrjkPEeLUlU6aF7blhzb4XCHXpbIB7pv5IYL6Qc6CQxGa/ng5ssUBD4jDJ4eKoH2hcUz9YA==","shasum":"7b05492240dd4501ff6bbde340f987348d65c3d4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602251874-f1723825.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgGzSCRA9TVsSAnZWagAAABMP/37b+42QYmhXJ8yuhNn1\nLQ3cVSITVWLaN5oPQBYYwtcSTaB6MLvxG77inwy6jjIsC4hQHAzVw6PzsT2K\nNKJyGZj3VAUzSx8OIHMhKkW0tK4RGGybdamXGTmhsPf9qWQlp8JHMwAhj8Om\nx1W1rvAcQRCVUjnxIisyo7GSOtKLGjaGax8lPJ6izLISAd/T59NPiMdcwp26\nTbd9f2DOfXMnDympAzATtlBAcQXqiW5wKvuJz9eJOKylCWM3FZudjOmv7lrX\nHx8I7mN2+ET9bOHkJ9R708VXIkxLcIKQdGmhEjqNdygG6ECgUpWIY6maEtuw\nH1DjHcDr7hiraeE4X5sHAMQ7Bi3qECCq9QZKdttk2/Zin0X/RG0LONhSz4jJ\nYx3cviBal8mG3VRm12ekl/UHijckHeaIZ3bchry6KLjvbzgRSgtWyEojVcKE\nns4Depi5XFVRVKRamWLSDfIn1sP3c1IBj9qpg1jZ+CDYQ2PKUt7QyLaZKE7H\n9Q0L2Keu5Ve8887imRn237HD62OoJmKYS5hjz1SYVjAaKm37kN4qoHOCamjk\nPHEjkCI8Pi1R58W8yFUxg9I/aBDjP2hZfA2QzWdlH39bgh7yxDLR676uQfLi\nwN2wdpvtUuYxmlluNoRnnT1Olp5wcOXkOYSFclqJZjPvZLqFvQ5jdZ6EweZh\nbAGB\r\n=6bDu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtcQjBKKjfd7gEUapr5UUoBuDMOHVGnaAk1w7vBR9rhgIhAKIs9dDHpBimGfqkGrodol+jd90rggMj1P6Z98T+5vEo"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602251874-f1723825.0_1602251985680_0.4102870910725904"},"_hasShrinkwrap":false},"2.9.1-next-1602252148-e2915605.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602252148-e2915605.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602252148-e2915605.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602252148-e2915605.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/IjHh8qXXSH0+umMpyey4+KvoCYl35Dh6lW0YXjMRgr0miSJrdXU7ysjc5VOuWJ0oVbHfRN+lBIA7Qpga8x3fQ==","shasum":"c5b7fd80b232fafbde8fa833cbff65a177444394","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602252148-e2915605.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgG3TCRA9TVsSAnZWagAAudcQAI43AW9kehkhV0yYTCKx\nKd8JBV0uYUb+BqDkwo7jOshv75P8xSWPYGYwzCwY2suVwPwZmMDrAg1GPd/W\nfPZl9hZcqizaU1qRt6+VcY4I3NjktV6Kn5IjCf+Bd4GEnXr3/z8+Yj2cPfje\n0O7xIX40RVi1cjTSJWeWNpkXOSan4HPB2xf78h4h/QDl3+GLdwIFOGF2aLUp\n5FrftJbl8G7dBRIbf1fTsiPIm107/1B/CPECcnmCy+mlF2/R6xJ3Jv09FqGL\neFLpv7JeP11aYaq33ZBmVPo08I6uZmYch8ztT+VkQKK9sHN2XEB2ysdWbVXD\nCa1/GEiipI4kETLuLKmgPWapiMjKZ1kuqNzhjDSGy1fvZjeHM+Fj6ylm0hqd\n5mlQQD8SXUJdhLBu7ud0CWlMZ7t4zqYeYSFJrwmp+fszHkdw9V+F5bkQ5Hoo\n8ZmsPzM3+hLGxEJ8Y6xpgJ83mAKPrU0XeO+ouIZN6urTlj/REXGlEMCggDpg\neVX0+YgItJYpqD+wW33mos0wCQRktX4Nq+/ykMphzIKH9pRT5T5LYJt7nc9m\n5sYMwFWr7tIFvEO1TvtFGBqLWMcuTynDWbvXPek1sAjE3pK+iu9RIZonZAsc\nxqKre0WF8t+umvnbWAo2sTlSciCtdX1v7qzFO+AzCNZduzGL29rTOXep7BjQ\nQvio\r\n=oO+s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZmkOHSpYm1hfhGobQ43hVEKMV8LhmN4QrG57Sm+bkrgIgRIeql2nVxTT+XsR3UcOxAMpdj7s8oUHZGVa6dA69XdI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602252148-e2915605.0_1602252243359_0.1612327970063172"},"_hasShrinkwrap":false},"2.9.1-next-1602253079-bd36a59b.0":{"name":"@xdn/prefetch","version":"2.9.1-next-1602253079-bd36a59b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.9.1-next-1602253079-bd36a59b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.9.1-next-1602253079-bd36a59b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1E+nyyxfTdeN9t/7MmnavquMOqTreLnPcpnAO0sK2zJEDw87BNoZGJK1/rEjx+tgHuSychTGQo1tqVLOwcG2Bg==","shasum":"84e67b66f935aa7020894193fcc487d18ab783cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.9.1-next-1602253079-bd36a59b.0.tgz","fileCount":56,"unpackedSize":104412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgHGLCRA9TVsSAnZWagAAZqUP/RwtfdLGA2alklDq6h8v\nlbHf1HjABQdxTX6CRq+4uS0EkgmG6wUg2fnWTW7xxsH/Gp/BbO/BJaqrrd37\nsThA5DvOrop1WY0Bm5WtTP4x+zEk+R0Qs3gLkHAUQSxO6KtCETo0X5l5BTHF\nFq2xPKSF5ydW7XnlM6dxpNa3HhZdhjfGwf91bldrpDZibhdIp0pbpG7OPfj+\nbMXhtfj80LW1NN2jhpcBmCM6XY1CmtoJDiMg36rpFMjctarjx3HJwZYF2QIv\nASSS+ea4jNlo+qEoKWhlTkwnHHuvVPEOh2dstEi5RkvOZXKE9zqVXnUOYczz\nav3kKAC4BFR8AsSPlnzRaaVbrko9s9XqBoNRNoxLZsK2ItmK3NAib93GJ41W\nUazGwXXMoTnkxuTqyYhzTSQ0BgABy7SJ/SrStvgJBWbqMbH5ICRHmUB2+Et5\nsWxcMREbFKwmY4LsuxYgHfK5Rhy6UEKHRLPytB6NGjIEk8u3k7n1VS/D/jVQ\nYoGDxsDNlJb4fB4ThekRIH6WIxs0Q81GfwDVoAmP8fYJbQiNXzoCdngf3L1U\nuQuzDhzxFYti42uzmEjFXTs7SncwQ6jZ1IvUaCqRPni+lcT/FQcdWyOctZvL\nhpR1fn030lPHGTDMZ1lS1dgtVNGT2gjlwvXWXqR6HS+iFrVnNnJYVOElDaSk\nhWgU\r\n=1uTj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG0Uj0gU6OFOkr4Y+05yD4DTx0gRbSl2L/TUUm5RZv25AiBmaQ5/9lRfK8+UrxbJPWAdofRd1V9sISGYu5UII2vghw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.9.1-next-1602253079-bd36a59b.0_1602253195241_0.9265311233815783"},"_hasShrinkwrap":false},"2.20.3-next-1602256394-e8fd1e4d.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602256394-e8fd1e4d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602256394-e8fd1e4d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602256394-e8fd1e4d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vm2ylJGtLDa2pWHQMXkGStQgcJ05iuT9fZ2WNKW5HJ4H1jfk3vqMuYE6dDeZwGDaKQq0wN52X29nJvnFCabXsA==","shasum":"3a04b76e325aa9ba5e151f8bcd55082d802a1ac0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602256394-e8fd1e4d.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgH7ICRA9TVsSAnZWagAAm4MQAJFvZap+oeC4gAcGUixp\nL5JxtcOkk6VqdFdCIwxq1DDT6p3yHb99nlQIzUOQtMtmILfib65rxaQYK0Xm\nXnpg8389HWjU5I6V+7pUAVBgv0UaOa34XwodK/3rMgAbbeXO6GGuamqOqoxi\n38hrsf77f/ud+8WISjQwJYWe9pdE/8Bncq9Cyz8fNDTB/j2bo+pn5Yf+hX4H\n9kAU4wb48DaBqDSygFHXV22g1IKXNzT+rEG40IfY3mFRGbY+HSJkndOK/Dxi\nokAYgz9uz6QF/QF9Ph3L8/TX6NXHDporAw9cJyWmrMXe5ZLjDhLTxV/0Lijx\nePzsoN2oBoI0NpVr8dE7UUtSuuHSj4vqg+DQ/6Num5gd7Prn3qh2OVlmqFXn\n6hWRg891DKxT+yjvKfxXlbSg4cBOawWP/l1rXz7LnB1JwJQc9++z4IIiCSOG\nFGjOjWxQK8SuUO2Gzds75R9UMV7W91yeBeRaDtQC8S8c4e948iMy08ZJLMYg\nxcGyxXND1N5NcGoPqaMUmupzDVbYsYiYv6gZEFIr71FyMpaFsiH44nt+JOb5\nMbLn/bS84i2UeSJAvFP3i0ZyFfVMQWfHc9WkOYUjDxhjZJzyJUyd2X7KEPxG\nLa+FuM0GDpnXwXIMppyU83AH2aKrl7hzdl/RIoekx9NMy131xdNgzFF7JiXa\nx0Pw\r\n=bEGS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBwXZ3caofk3wF8lIi20DyHlsItE7bVIq0AS/2xFTmCgAiEA70zHvYGCNS5SMtTj5ZjcanZvJAg1947GdDbtnCDOM2Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602256394-e8fd1e4d.0_1602256584133_0.28960374529358734"},"_hasShrinkwrap":false},"2.20.3-next-1602271341-894ca2ca.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602271341-894ca2ca.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602271341-894ca2ca.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602271341-894ca2ca.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6MtD0MN02xC7v6GsV20aPr4xV7Jn8oaPfZjpaOfhveBa2T9nrtkcqdypeWjT/21KWzz1in6i/pUgk6ziLrtIjA==","shasum":"39536abb71e8c56a0cc889b6fc318214fd082c0d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602271341-894ca2ca.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgLj6CRA9TVsSAnZWagAA+zEP/A2D5MbOl8++MPU+rm7r\nulcsdTJbR/vK4lcZiiqqwOVsKonsPuzpb/Fo3fA+2/YlPIvx8ZsZzn8n0zxk\n6PscJ/1TyeGZu3YC3V7uaYW60ANq4y2GqL5ppl160ueJ5PwYcj7DAfLa9cH1\nrWMRmGqmJTxlUY9ygJqe+ZPsgO5zbeUUmLNHYDX2qWNvn7bnxSTpEYDpkcLL\nzeGEn596HvuxXuct1CB9xz/I/sx9qKTBey6VgY0daQZZCiujModcbP6o63wC\n6b37L5+3wcpjCStq9WUInP0BsEaWvxbHHyoRPx7BF9JeNoApVm7u/3c5S1s5\nZ9+FacVRn5lQV/vZ73KupbswQhXZl4TnpEf2WFQq2gj8vaZ0nhYwunP4bojJ\nDsvNASABIYHTnxID0OgpRK3tIKQ6FN467XZXiqiy2S3JVdTbABBiT7rOLa3C\nGfGrxXo9zONkzFHbx+fhgC6NgOXXXmH72/UEb5rbShKj9ur+fI+fQcZdSh7p\ncodHOe7XoYarmjcFAH4VPzEuAWxrqWCN72xBcunCUali+Di1/g+I7p/bsjbG\npuiemLXhLTUK0NTcpE/fiucKD/+Qtq4NWJ1nDDrtZ2cyBNwCU+Qdki2FgEvT\nc9tePgPt2q9xOYClFDU6XmApqY9Mvsz67CG6TRujLC8mZAwBeICwkQJLjrnO\nUwP9\r\n=8Jkp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSja3CMjFpBuFvqpVe1TOjRXpQAMQx2ho5CrZai996ZgIhAIHVZAM3PRDLPWGZQn0z1DuA8d4HwUSZLKMOlSbPUzZe"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602271341-894ca2ca.0_1602271481546_0.4625014287085101"},"_hasShrinkwrap":false},"2.20.3-next-1602272382-b5fe5d96.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602272382-b5fe5d96.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602272382-b5fe5d96.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602272382-b5fe5d96.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-T20n8y5U3a8mINq74TIQ95E3i8O9R9hfeykpe7GZpDMogM3DZaArP38aw6kI1SP7ZSjsQc4wHIim6+vSoMQBYA==","shasum":"1b2da30d9f32746c884b6d104bee197fe78f0a8d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602272382-b5fe5d96.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgL0DCRA9TVsSAnZWagAAbfkP/jxfdhAQS8WUb4dIbjvf\n2n1/6Ky/DofmcG7wz9ffFINHfPCW4xA7eHDGbaZhFcKVZvw74HsJEEA3jBbK\nxTtEDnlncEW01ldR22oaqYpUQ+WDH9wwgP1r1FpGJi3ddkYKJ08Eb3TKylca\n5z0320SgfQqac+KHolgsA2e0yVrDA3YT07myTsp/quQG4SL3fi75R9PRNFF0\n6sfI0NlnPrHLcNpPLwFSFY1CgJEY0s+DNbm21m/oUYl+1QXX5JnOmwGwXYn9\nv9Mh3H1uk1dAqyzqiH++KvsACbutgCmjK2qvWsv+QyIO4ZHXKRV+GlsBTyNs\ndSU6TUawfLovX8XoXiAxEL5gH0gYDFv1kWH/brtZRqGjPk7mbGRBlpWLqG4H\nk/9uCL3oAqTBntNVXy7ry6mr86f3iNw7O4XLdPRD9bvC7ARHmcBFYSScNKLh\ncgng2KIoo8SOfcXjmjICwEfx+srKaWSg0nr3raY1/dXMKqbiPCXl2xa+gTXL\nhnk2KGi1egUfUrXtJk1X90uA9iQ8qmp9Z7wKM7x7P8JE3HxDj/G6PUuaIcAH\nBeDiWjrE8j3lSJj8ysMFNMboyLWIheKOagLFCZHHc/mMBVOnwGvr0xZIwSuN\nTeIbzM6wRAKUXVDzr7h3N3MqtoT/00C/6x9mzfcOhP3E2FH3xfzayxV9Jptq\nm1O7\r\n=Asbb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsmwtG8vBYlSSH/Pnu7OZUSvaEcukmFcxaZL5g4D7e3AIgDl3KGBMLLFDibQDdZ2w4Fjk0FdRatqzsu5GRk7tg39U="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602272382-b5fe5d96.0_1602272515489_0.3703197890673704"},"_hasShrinkwrap":false},"2.20.3-next-1602272398-72b55bfd.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602272398-72b55bfd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602272398-72b55bfd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602272398-72b55bfd.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BKKlV8eb0bibOup82O6brMaGj9l99TD1pOKhf0t4g0/Q8VAWLOBJh8Mz2bGcMQQOFMEV7AR9W4FDcjUY8EAH4Q==","shasum":"0c467f14e32063d2519b1c2dcf085dbee186185f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602272398-72b55bfd.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgL0PCRA9TVsSAnZWagAAPGoP+QDQSTQZXSb82Dmelnch\npKRFz4lkLzRXYue2rg4CVGkF4q2IzcWIP8FN8UhFxo8u1BWPM8HO8w9On4kN\nuH1Z5V4fL2OOGh6eQ6mJJM+CjPTY8zC5OeFamDVWbTnsrl6IgPKdhNGkw8cF\n+P+BKRe6KQST6LhkLUG4eMTFLV33ved/YUH2yoxMEQ2Dayic1kk61qnKuqBN\nPBA4Hav7cotmCgWw5dob0lb1A0k4mV7EP14rDpG3YGslcEdpOzNb1RZN8oZE\nO9EmCYka+yVHbdpo7e74rHp9T4z0bVTupjnu5Yu8CwKI6KPHbJmkBYjVHPAx\nCtmvPmqeoxTdxzp/f4M03Jq7s6eVXi9pMGCTU4cC5W/n7/GPPk53FSL6hvQA\nJFndnV9nvjBStphV1M1/oqfEg3XDHhtlIN0Rq6JOyMYB7X5aENIiQp/SyVYy\nIu/B+J8pB1mjviFOj++drJOCkI1C26rxhAgpoqG3RqMU58kzfsB05UIC2dQG\nF0ZxAv6LTmxHO7fei5hMy1tP4uHY6mn0Sp0Ff4nk2UbXfOCmk3Kyy/PTh1Pn\nLLkAK+0GgeraImox8B5qbXEnOX9n0r43UgrCxTfa/hUjvR4NOyVG6ecOz35h\nH5xkqJXWhYnANbEOGMs69Kfv4Z7gCo8hm3LA4UinQYO9ghJet7xIcBrr67Z+\nZ0aI\r\n=LNCx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6IuGiOtSvJrKTz58fOFZQevRZgNtnG+zpBltRza3GGAiA6jIMml4lmCJ9JXKTsykrXWoWSOGKCMOJ2pGBAJW3fFg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602272398-72b55bfd.0_1602272526985_0.2649344664480173"},"_hasShrinkwrap":false},"2.20.3-next-1602273925-72b55bfd.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602273925-72b55bfd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602273925-72b55bfd.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602273925-72b55bfd.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jtuCcWSjsK03XGMkUVIIv6iQTdmV5zGMcb5QmdGm6JUUlO3VyqYYvZKk4nBcS00DGk9MvV+BYTFwGZ6noi8Z6A==","shasum":"16ab1eb241d20a663ccafa43e2beec97bcf736dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602273925-72b55bfd.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgML/CRA9TVsSAnZWagAAQIsP/3avmS/4vKFgoq5acwcI\nyQrZrJ+XOMVZfWwXgQtcsHtBO6gxzyvy2mm2U7zvlPTiREVqpr2174f7Qs8Q\nC3VaAW4GacCi7/ofT2CUOL5dYjgLHBNj6vYROBiAAHflG4aBvAbtaO1Y+W4i\nMVWzzrOtpDtFBp6w7rTF+5F5XOO7nyTqzDXAc+dSGEcqMOmiRc9sdZfzgGWA\n7zSJc+fCrZAlthbuvHZ16CsiyNsxkq9vKnO7vQsRymN5xJmuKE1CgLsfStMv\nt0U07s7lLaY9QAMrgc3wwf1FY8fFuCzJtWrzbfdiu+ARc1xw5iMKdM++WA6V\ntphEnYN8i8o4HoG34cGa7sxBJ6z/tIgC0xvlsn1ZOPCHuJn0/63tTCwwr1cC\nEozXcnQiEzorW7R4dFWQxvufiFhvrcKt7TmOYs3qZItGp+gN1mJTwvqc1nbI\nBHj4sjB79q6rxYBxQye6HlvBylpMiOTsMfOVLM6StbjjWrEXmfGiPoBY5x4Q\nNm115ghHsdVwoj8Ed1AV+h3OFNjdC3HaL5JNkPaKPPbIZY0QZK5U9LreXTtd\nfc8jE3HVEcCxpoBM/wOfrOVJGYQNSpV3awkYtoMuPjf9678D5X1izQnDLoIW\nS5poNrDYDkAuceDf2vIjzLzdtpB2fsarKv+uJSfZY4/7FZ5tSY2w/zezyjZz\nIf2v\r\n=hrPz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZOgpgc53/tQIlNa5rZUMqkOKhN/B6zjD1ApmWlCytQwIhAJIQLhfdPviazp60BaD6oKGL0mWuCtvZeeDn32nvQvRR"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602273925-72b55bfd.0_1602274047190_0.577043655068896"},"_hasShrinkwrap":false},"2.20.3-next-1602501471-57929e68.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602501471-57929e68.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602501471-57929e68.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602501471-57929e68.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-r0+FuH7VJhQ9dW5JTMnkq9w7FjW6r1fKpi+k25uVZQ0T617f+18hmCb7wYL/rph9YTn0T1jxIPpxUJJh6E8oQg==","shasum":"50513bf110cb2fbb1a4e337fdaf09d3ed188a9da","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602501471-57929e68.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhDv0CRA9TVsSAnZWagAA6S8P/jDqJOIXNbEYnVmzbaPY\niOnAyQa3huzv02lsfxtriVyVdeDpm1Ki0DMg9eWIxFM0zmOulSMIV1Fw1FvQ\ncmM2jR1dQQlRYOWznbU1ZL+SZdHx1umLMoerG0QT5YPfWrXyye/J8YKdVDHf\nuiMZZrD9iWeKQo/q9Y3MTyseFmYdBOIHPPLTj5Q1dMu2ICib/lrt1q6MwJp4\nSi8kGRS3nJL1ok+NIg9SQEN/We6ws+f1t0LLk/7PfSb2VdZD7XptnJiCgjIQ\nDCw6qs+h/aZY0moleOufH/luGaC9xw7+Q6arsUO57Lu9g4pJKT3D4AiJFt0h\nppHtAf2Cf1JxX/7qyCQFh8uDe5NekBdnn/MRFmAOX5qN94ow7MZclavnDmGR\nFxirFnij1jyKQ21Y5py7G99DYtTgPC2z+qO65M5G8uC9N9ulMgBI9VoSGkIs\nUMS7z+Vye9ZE9mQBDe6L9ZGkal8uz2vl8dXtrY8SSHM5lnar5JgBQExitGWl\nCZTXeuFU2LxzH9GXKqTzM8md4q1E7z0ml1vp0ud4fNeHEmluJJ/ETiRbBbLP\n1tR6hG8BZqc000kay20GHcACmnFgnVNsd2GcWtFetaZj1P6i3J8Ip9JCkUYu\nJ2bYDNE5DCzt9lzItUlexWnvoWR3SO3gHN9Xk+ZQcI9BMWIxIKIu6XDXFm0x\nLjZy\r\n=KbEc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgJ2zchI3zsQZzCUPY1NayyUjcsYeKC1moAU6jVTZFDgIgDWFPGaFfm/GEoUtVpcVRnAz+nxsUzKNzWhNFAdjQjjg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602501471-57929e68.0_1602501619635_0.5978128881634639"},"_hasShrinkwrap":false},"2.20.3-next-1602504191-1935fab6.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602504191-1935fab6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602504191-1935fab6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602504191-1935fab6.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yGNoaarqJ/fLA5JWPz9dU28o1qegJfXw8tO3hFWgtRO3o1ORMfUqN29gKhodmbdUeT1IRu0oDhrbteVznwa6EQ==","shasum":"d51439d5bae0fbd025be4928b7e5e2cd18db37f6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602504191-1935fab6.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhEaACRA9TVsSAnZWagAABnQQAIDnHyKXl8JOAFqCKmsa\nPc8XgNg9X/8gtrMv8B4YM80YqWF1EjIMWfdOCCxHxAlHsONys7xTDXd+8Bzt\noXWToCWRLv+d4PL83Qmk4vxZALATK59Nv2BJE5L7JPu3OhhnLI7p8DNEU6KP\nn+2NDjs2orhTodPQL1C/UN5xDm6GOnVe0pmtTXbuBvuwFt6Ge8Pg1jmm/URr\nuX6tMwpIbwKm2W+mzs95+mvOmyjZmMwjqjnX2QCsGnpcIAR4JDW5q1hOVZXx\nEdntuOcnEE8o4+2o8dTejC22seG5EXA1PwlKHdc/joydjuFDnzpQKmJ4kX3h\n8RGnRNk9HJbYf/C6LrqEsWoDphy3k36EHAHYT+4SQUC9EJQATlPMB4XbIEHe\nCph5YNByny56kcq90lBa0oO21naiiBNlMBbs2uJ9aJ98lS+SVJJNlzG8fm/P\n/Rg4b6YGOMrmH1SUpVe18edaGZ8mjAQA1f7cWy2aiPGTEkN7f3Kve2nnRMlL\nnJmQJ2uxzfetgsYZckRaHL8kI4/Ph4dKlxneWKf70z3B/KIaEwp69oUGgEOI\nrXrdR0NHLnYvHa5U5gmO/+S23CiJx1MCW5MWAQUEWbkIbZT6XZT6gAtZblUQ\nKaLz04MiUIsS67Ffgyq5fxMSbvwKwzSA4BS5V50NgJX/GjjAKP9uQR3120yI\nR4Qo\r\n=w+LC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPjSz6xyncfggJCYNAzP4c/cFp+/++i9wJzojucXyXQAIhAP5CzoxIAYWSuwSKGzz3WoQKQU0e9R+Tb0q+D3SQvvaR"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602504191-1935fab6.0_1602504319530_0.005954177059264154"},"_hasShrinkwrap":false},"2.20.3-next-1602505609-1935fab6.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602505609-1935fab6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602505609-1935fab6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602505609-1935fab6.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-eGo2EnHtu63TiWquuwL8O/p5PBRGGNCAUi3Znn4+x1g8OI1F+UnCoSOxpdMjYoVhfTD8iryGiBqIX51sB1a00w==","shasum":"35fc660d375d49983c4621d041c9b55df79164dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602505609-1935fab6.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhEwjCRA9TVsSAnZWagAABEwP/R2xsgL3/rR8XPgVJesG\nsOZp0/c/NnZKY0UwLFVprgTkPt4O2xeqtjbJk5uidUHh96cC8vKOhcPTOHDb\ndrsMUWMUuKwp45njvC3YjWEYnsnEwlFJzpU4Wrx/PBU+UsQ9pjxzmJAwg9DQ\nNB8pJeba/nJEVU4jYNzumhpAbJ7tO3NQ1l5hh04Cc2ItNuOf/kqpw8/kg51t\nmM4kaAbPqVa0HFk8Tlaa6mELhM+QZfcafZHA7v1lOlaN6kzK4HbY7JzOwTEr\nBGoOSSLFrvbb0yQqkjbXzzLlb5Migj1eVq2cKIYtkfb1zBYzJhgxmoED3NDB\nDN1LfvFUp2u2NGgpjJ0wJkX/9GXtAzbPNK7EVAMvoZVKzldexGTNJq1aycKw\nTqycxChS2zcs4YjRe1CNDYuZVR/I+cSKe213pm2761TP7+lZp3lCUdD7pC0Q\nBj/jPk5s+slEVm98eixpgTUB7a4454WrhPE3Gca9R6iB722y0y67vpv7wocp\nVIzUq/u/1eN0Yu8p+MmZRAF3IOWIzAwA69ftikvAJNkDBXbzssAFc5o9lPdH\nzsAwJbUMmGjN6t7zq7hvnCXVRlPz9BhBNKKIZ/zJ6q+EG+n8gvFvOTdJD8Ii\nxY0oMBJOA1bZl2bXtQMf/TZkmqCsvTLUSQDNlFLNPAWSk6D5WRWjl1AcjXh7\nVDCD\r\n=Z5ym\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFGTBnoJbOOR+51sT7WJ/fBqvWzwAl7Zs78FSTNkugABAiEAzSEPtUPZTMoNI9SnZzwnKiF6tVcSUOZI7yTLKbqOvQc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602505609-1935fab6.0_1602505763068_0.9034405123009333"},"_hasShrinkwrap":false},"2.20.3-next-1602510733-3daf134e.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602510733-3daf134e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602510733-3daf134e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602510733-3daf134e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-G3i7WKbNjBlkOWcLOZXU6yk/1TZEz7jUmFuo9/TS+rEyZDyyo0Yykc/Br3bf72p61RHViCAWssCysdP5VeTpBA==","shasum":"3dcd6c3d8d8591bfc716e3f8902dc04b23d6bb8f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602510733-3daf134e.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhGANCRA9TVsSAnZWagAAO2AP/jyjkdVp6UfONj7U/Lz1\ni5qL5ZMq+7pWOe9bPEmXdGGcCg8Sb0wHOc2t1Cx6ysfUV5lypfYV3wrWc1rl\neDkNxr9zCpF+RAykK2/fpRfDmS0lKi0u5UuDadmAmPgDIOvKQbHXIhYBvQzY\nQgW3YEu7wKTY4P4DxvHXdzRqR70JwZLqc+o40cLtFS86Ydv0SMcS4lZ+WrsP\nhJCtrywqfoj0vxgtZnARrWxEXDYvx5O8TQBBippfgO49b6mzBH6lTp7bTOIC\nnTimEzU6nxUlVVTsfSkxIKXUpMjat3HCSzkNsbcCVz/YoGaIyTtvquj3VHCN\nbAiGea+AhGeTxPeZAyBhN9bAhG6zNcPvhLreFrMtqQc4Hxu+WV9Lend3VaNt\nnQ92DYrqlYMUCphewxM8KjG2dk2HO+ylhjZ2pt5mXtNCbqG+nt+HACuhEtFD\nIUUVOSuA/F0BQsDU4zn/CgetrnMPC6RVy6pFDcYI6Oo9DUpzQND+aJOwG/RB\nErN4f2tK6/dGjkwjHFU2up24E1xS/4Y65RzoqHRGpNiVpAZhKttoxJr9uV1W\nxR1+BedwjKeVFCHyC0iA+RZspTwTHHj6SsBfmgaRnym/Vu98wn1tY6oBl0NK\nR9mwY3EUFEvlKzgyIN8J95erEte1RbCbiN/ATESiABRJg2DXbmQGpeSqEK6+\np9Cu\r\n=zfrh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBaJ6vEwfKXuCVz3cIF379xCWqd4KZjx6E3SMwnzCGWwIgUHsjNAQBMpy2sLN+/F36gfqf53oWSYRJBTW7W/fQvRA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602510733-3daf134e.0_1602510861031_0.2550537579322858"},"_hasShrinkwrap":false},"2.20.3-next-1602513191-b3f69c66.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602513191-b3f69c66.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602513191-b3f69c66.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602513191-b3f69c66.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8PQNHKVpzMIq3Y4YfVCHzT+hZbZhay4sW76QKsf6S1N3BTnoRdshlCMESslnNoVM8hSGQih4qrib/SLrbxN3UQ==","shasum":"0efbb58dc6da04da620826f3ee445c1ce03d07d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602513191-b3f69c66.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhGm2CRA9TVsSAnZWagAAklIP/0mChCVCmx0CQA7kf9bs\nTeGEZEvOQKKobUrZ7UXXDct6kyT/DIfX8yxvnw1v1QUhJ3e7ZlY2yAlzlZOa\nCr/JgquIlrMNX6fRqp4X5C/77RMZzBzsZbs1BqNrExlNyvhajaE6CSeKolLx\ne6ACzLk2HkiLZuzl2rO4fKvw6D1bWcJl+NoDeTgLFgGTnIkG+9P+uJcqgmsP\nx+Q4yDMIP/3Iymfaq7bOcrhEPa7LsJSg3/k25/YNnz+HduUP4MDqqDe+e4OR\n1YMeVeo1HdOhyatSU0r6YpMBVjdzF1uW0ir0HR51d3N787Im7cRrcsc8hrF9\nnFxFi956yWKtTErKO++OvV98PCwpUOms8BP8KjAigdqmRKsd41jFm8rGxT7m\n6ZPhRa81zlLu5xSoujaFsB01fjm6aYNEE+pi0WNnF8f8LBuW71n8qYMCaQB+\nrIRRy24oMjrF3wxuM0z1AL7FLlcbYv8l+XbEWGpVwMdHgJ773H2vBFHsluEg\ngPeVe2Q/xQM45bOv12SCCzpsOQnDFpXvPHjsrNWTdYDB/hROb2u45bzl95tu\n8oRbRmG+JFuPg0b1B6y3v+WVhNO1pwrfnXalHVo5X+lcOrap+160unk4+ozc\ncvnFNS3tQkSMQe6aKCpRpOssDwDkN/OufIKwGq17FvRB7LNa16WvnrkISdQD\nyPKW\r\n=DdeD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF2FRErmei0oTw/0jI1JUgwAxq/V92UT/N4IaWJ/07mZAiEAlGbXy1+gITgoxsWb9acdRLEFU67nL42wt4a1zABaVoc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602513191-b3f69c66.0_1602513334129_0.21402114388532234"},"_hasShrinkwrap":false},"2.20.3-next-1602524969-742c24f1.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602524969-742c24f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602524969-742c24f1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602524969-742c24f1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3pQ+bXNz3aaDhRJE0A3Z53wZnZtLtjOjha/jnZUFu01TZ9WGNzGDuOp495XTscfUFLaTNvEV0IfRf78U2cUSlw==","shasum":"9c5140adae4fbc16d81fd5dfb8f9a72dd8d1bc4f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602524969-742c24f1.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhJeqCRA9TVsSAnZWagAA5+oP/3jCQMxTKaI/qWcJ4LYx\n3ZCodsieK2vR3xcH1ReXnGbbrXuk2OyNGYGgl4AV4eoXU8/r21Al+bfmlz4U\nz2cAaLiD55MhRlumVJYLz+Bzzfx0ANfqTH0fSJnsiCGSFObLRzwTM/d5IpN+\nSPZ0kmWKiinBDkM4DFh0dOc0rxiigCY89UjtfmhuCYgJu3WYZs+8OdzHxC52\nEPKiwu/XWpl5EvdEjS5O40vDguQnvUytwgfFNLfnhVmnaRYV1L58YmOQzewq\nWjVCiKxHxyFxA7QhiWcQQcPAELic0xAneP//bUDcOZ6aGcHjGKT6lnn8ooO8\n+72tXJhbqjRtMtKLich1jN99RBzlZ6MsoFAyFqfH0KAEh4UBwRVvPpvqaK6P\ncGT5WKzyhQWHllRQwyHMF60kNoh6/AZW8SSSjXgkPnvV0GM07kzTLzkbBYP7\nYqmqMhLylNuzHBMjkyi6JNobkI9yWOVTxtqroyA7silcC0PQkZmZXnJ+Z+NE\n+HsxZv8TqEa7mMMcJYsBunTDM5Kqx6Mx9lIbsQ3k9VW47vh2m2/VCeLZkwJc\nhbhNz2QTLftTJomYazMbrlYBR30mkxM3lA8/vlwlXYXtBD9v5HzMO+HGSGWT\n8c+vDkb3f9QDQClBcK8IahRf/12K6KRyrw3Nc9k2TpgtdipSHgHU5xcO/Iw1\nsDcH\r\n=Wjz1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9f9waRy4fdjdoPkpJdTMpCaoNAzPJrkDcc/jxowzuwAiEAggBgnDcJJYAAXIWjaA7gkx0lDyOWMKUjUquxXt16Q2o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602524969-742c24f1.0_1602525098266_0.3877820596529262"},"_hasShrinkwrap":false},"2.20.3-next-1602529551-6cf1cdb2.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602529551-6cf1cdb2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602529551-6cf1cdb2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602529551-6cf1cdb2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Qot1YG+bnvGEk6u+5j8AfirGEEcMsZKLmXbbxWtUtxe3Nir6NYGExkY8pLHqpsbiaLbK4ybLH+OASLUf6vtjaA==","shasum":"836ef8898d286f0a066ee8db5c6fe259b401dbd3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602529551-6cf1cdb2.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhKmRCRA9TVsSAnZWagAAQ0EP/RnIwRLake05pvIwmStz\nDbR/mHqXquskb61OC+L3Ke/y/iiwARfYZcLKIel6OsWZLk+4GU7ihembPwDT\nzxWms1nTDraVSO2FePVdHvGoJOtg1RZeR0TsL/hwJI4jbdR5wzyOmojNSQrf\ngb+ge7uVQs2dfpxVur+2Vkh6aa88b+IEBkVRtGCmhNzLDFIwO6CE4aPHmywJ\nZI2y+wN4yNnukeO2khfBQiuJN1oie1BHnQSp7oHyenXt/JSNqy9oKkJcl62t\nZKZQnHiQj/FPPeZ3XA5WS9v9Tx1U09Byk/hITV8mAHHqA5dKkvCw12RfLDiG\nrxyg3DWhPatB/ShfrvPNznRCWntZNLG2j+skNnk4qiKs3+TzJa/o/ePdcxmH\nQYJvsT47lV1MSPRx6HluEvAVdOmBssGfEzUHkFgeWkwMo12CStVnpyD/JsCn\nbY+DbaDgaOFCyBivgtaXssjAou52SiAyIB5EkSGDikbhfOgvY5ChTRPPsyut\n/kUZAwwNPVpNZkUl5ahMyB31hnDuV4H5mnj5IhY4ZdrXBfu8rV7ZesGefs1I\nBD+YCHDyuTA6MD+X5amlSxkJ8l7B9WdSg5ok7tl8D96uaHTNK7Kj/x6RFIxS\nDqaORCeuG/DA4k8tktI+KwXM76E+BxT0nVY33JAsS/uedGEGqz7l6QXOYXEB\nImDQ\r\n=bLmt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE3qBMdVf5bZsNfOyQPnkr620TJFB2faQouhiT5OC722AiEAnAf71rl8fMhBGkO4WBCemHeqTCUZMmIn57ahDD9R13A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602529551-6cf1cdb2.0_1602529680882_0.40135538446855956"},"_hasShrinkwrap":false},"2.20.3-next-1602530461-47aa7059.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602530461-47aa7059.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602530461-47aa7059.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602530461-47aa7059.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jv/kc/Nz42SHxzifbChToH1EBRVrdG5YM74Qxr/76Cwzd5OJIa4iiecGTzwyd8WVJ5HvBmhrjlBaRrX2M9qIjw==","shasum":"dc5846632d6a0144d16ab0a4c8ee604742c74faa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602530461-47aa7059.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhK0dCRA9TVsSAnZWagAAXZUQAJQxHBMRg425x1Iuclil\nZe3VvUMnhBCZSDpylfUtsde2Jn3tmFVqQ0Q6/GDKX4EpPyIefOFIhVaNVUbV\nE0smucmkAIGFdarMsuR08gg/j2MpLanVOZkmpoijIMmLUg2g4HfSnlKc1ukb\n3bhBd91OW3XBdebMGULDhAAk/RhQSYm0Rnqd+akEajeCkHe4v0CE+HIT70a4\nivbfQmdVLPOAFT8SeNHUor+SZ+rMAEAmVh8cWIMdknjQ2xxyc2GHytEFsCO+\nd4aOqbFu8/S/tHB6yHBzp1ld52JGPDgbrCsl7GSg98uz+nCQ0V3kBhZGrTap\n/aEI5WoznZShmSKw9+JJPfV1kWXCU/R0A6L36SJcerVxz2jKZge15iSgal5r\nhjDFReMONn3b0KE99sksqWOqCK2VI55soyy/PIX5I13jc4TMAk0dTWCgijFE\np31nFMfEmS7NMmeg3mEnLbpWt7pqC6fsGauABrj9GvpugSl07qWvghf65VD1\nzdgKuFlCTd3+v5972UZ4tKv/93DiPkpiTLaEIdQ2fyPqVXNXl7Fe857wadV1\np5isg38eXLPr25BUveCfms78z2QyS0rtmTfEistRTL77ONetoOeReCE/uXv1\nP7sVaASzZXxkNAYpxIdTc4rWUozWd134v81Vm+EMvnVzw3ifRVlG+hpNqEKP\nDotr\r\n=fMtr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDui8WZ2Ry4bJceXRfox7IbaCXWHWM1sSDsfPmuC3+KiQIgZkP8B1BvoWSrGqfWRLyowadI6Fwr5eCrf6rOKCqD0so="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602530461-47aa7059.0_1602530588871_0.8927698569818439"},"_hasShrinkwrap":false},"2.20.3-next-1602531488-1653d967.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602531488-1653d967.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602531488-1653d967.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602531488-1653d967.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rklEXncQYWf7kE3egO5d6P17XyDYer8OBNeSLaxbFO8+Icn03RB8pd5/GN9+h/W30FL4uauCdFV+QNULJ1rUcQ==","shasum":"a727e82bbcdb61fbfceea03d963fc2f5ad33fa47","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602531488-1653d967.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhLE5CRA9TVsSAnZWagAATiEP/3wh+++5ynWEo6pVM4CS\nimrmD23XYQ84aVGXgY7l0UEZiLfWAQP8j+aKgKBsG+ZAadIvzYU2q2ePCBY8\nMlTNKmki/OMfA78cnpsZW+eMvgmaDITTwKFCf5+x7lOzxq4GMDauOgYgHqXn\n3HyCQynI7C88vPR/XxghSm63iltXei2IlJbsVvCb/wetbSWH1NqAZ1WbDo2N\npOzOhDz40z7KkHSplwBTHp3qP2B6KdXObmN/aZHWscWQ5gET1SS0dN2Z18Jw\nPVVlKASL0WnhTkp8Z+IVUGIFPstIIpLvR5rCW0e+AYJAHo/PWv5p1xOVTChO\nFEF5RsWnj5lACAlaCUjS4TbRR/o1toWx4VsBmITNDeZzeu5RXbaQJHkfPG3I\n445gjwzxcLhdyirnagYCPkj9u48dkrlzb90xvIBrj7BfvLDCDz8JnuT7C5lX\nv0cKWrsVnkAidv9roKTJ1Fg+NfIQLv0WhhSpDXApeV9bja3qiK5w1vHwZSrJ\n1t+lfra2uUzXP5lutE4JjNVC86J/C/FYTHPwoVcJV26fei6dYoFtVFXdwq1j\nKAaLj6kvwmLql+n9uvP4FbSlY2BqBQcSdPWGVy59dIaXRT5h3oK+uka7MaVP\nM2bnh2JFOjqeEqzM/p0FtI2DXAFlOldgfWKvWGlkjlCozkD0+48NdFT9uIm5\nGukZ\r\n=tOpH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtCjKXp2QtZIAyG8n9n+DbB9eXoFYbY1172KaosjHrRQIhAM6tgMA5VhULKZcHA9SmEwoSGVqYnZJ9ebj7BSrfgoEG"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602531488-1653d967.0_1602531640567_0.7556737506754074"},"_hasShrinkwrap":false},"2.20.3-next-1602534871-fc772f43.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602534871-fc772f43.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602534871-fc772f43.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602534871-fc772f43.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KPxqCgemO1IVn4n2ngXg74z+E8gT3Pzk3MJRaidMNDo7nwVixZ0G23nNeT7nAkGhDPKyufG9cIBdMSpBFhdq5Q==","shasum":"237879ea31dc9f750014f06fe49d206d374b6ff6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602534871-fc772f43.0.tgz","fileCount":58,"unpackedSize":133630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhL5XCRA9TVsSAnZWagAAU+sQAIDP8oxvSuekyGWAZ9ep\nt8C0hB6XrBkXSt3MhMEDjFY722zBnPCO1NmFRXeAAK8ulXtErKGa3Mdo1REt\nzNAITDVU/JT3vsJGdpApn1A4mTUpk8gBYBd/MUAtMxiBc7jlQJ1TJYYSosK7\n/I8eywtCp2q8Al2nFZ0ZM3DWK8sUUgi8weLef25J2sSmDYFXpaIE9DGC/F6J\nQdXYs8UGiBdW4OG8keVqhxjfUNi6enondMUpicnFH/JZSHhZuX6CgZ4bHe9L\nc19KR9GRt8lNJCAn8SA6+wVXA/SOV43EjbizJMgXhVbXA3VsLWZIibx0j5kL\nM0jB4H2dDO2yC4Fr2JxE8MOXAGRh0sJucKrp8Fv0p8qHITMmtIouiUzRDLrT\nsG/exOz5BcmtULqSG9FDzlgY7Vzfzmd07JIlZe4osTXo2UhsE86JY7RPqkKh\nvFdhEK3xjTQ6t3ThFS5qtQE+Pl9iVk2C0yV7B002WZiiJBMn+CM1alWpUawf\njVRpzzbcOoDSBIXeZIW9B1YeJme6FVP73AKGV5g6MWFuSoIIlR08B+WVzYE9\nkupkhxfoFYAFd6LXsnBb7rICsIhW4cIqQmQ7I9XgC8SOFv3Hg8LDgLjf34HG\nUOgkhOnV6gkw7xAJJeGPHLENinldLzW2PPnVnxCzGWiVGctwOvtaH40kferx\nJkZ9\r\n=95KZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAmxB0/v5jQ/CYlLu1Ls7nDb+xKbDNPQMWgZ5NDA6XLwIhAI3fwE+HxgqWjzOy4vuIoCNfIdUNCSjOM9+C4rtv+dTN"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602534871-fc772f43.0_1602534999268_0.26061098876901956"},"_hasShrinkwrap":false},"2.20.3-next-1602535798-045f94b2.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602535798-045f94b2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602535798-045f94b2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602535798-045f94b2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MgaDzU22UycdUqD+Tet5oLj539bc1JyNl2hiAZ7Oof5ViwRgXj5TYF+9Sxlyazx4BRuLIje69Eubas9EMDiBUA==","shasum":"5328ff7606848b5144696b5281494180df722285","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602535798-045f94b2.0.tgz","fileCount":56,"unpackedSize":105890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhMH8CRA9TVsSAnZWagAAPHAQAIwh+H+qca4lYmVqJm79\nOLooXYlD3xBy1q79zhsPbo6oZgjo/1ssWXHk0BnZxNpGVmhuA6E1luP5xRj8\nHkQTmki/7YFXyjxDc5Vc08LZr2YChSE1BbwXu8Zqy8Ype2BwJkvi/Y7UuwSb\nqRr6FI+hyrFPOY4VZ8wRArH9fkATLAf4Y7/1qQVxaGwI0ekTM4Ikono7oWGt\nseVHoFU7KOMPHNpykHqODD9Brc2DVAPbkLdnKed4rwjGwZ3fsXKk7zKyyPKw\n5Arve3QD1NhO2cFvo/WjA+MclbwJiGAKeEQ9DkqnK+v5EAib8pVtjNtd6HZY\nfl47RnsbcSLb5JKtfQdX7s9Wi7pwUglrdokPJr4dYeY7wU8glY7iKI9h9TjQ\nmAdApi+dmbcClN/AABChY4shYsBmMbw68Zxpc9VbtWi8G9Mb4PcxtxZBP+Te\nNqV94SLhMD+/AZYwwJFI1GY4+v0uWP8y1rMx1+CnL9XsPnRGvAYHORmGt/Pn\nrtwH+hx7UGq3NVra1CirdLEVsu9jfwlwdSOUjNXjQOW3vhbwzQQ12Rs3V8b1\nrL3VCGZ+5T+DF6yBclqUmWYRBd1Z5O/zW1f30Y+EO1ZghBbWbBYyvn+WFQnC\n3wJiOHutJEImd+VXXhULVmbuFp1k4s8SMXwln2DGQ/siUixIcSKhWotCNCT3\nLMrC\r\n=lQUP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjDqCBAr4Y2Ny46F9rJlj0NH9namUOTd46KpelSoX3YgIgYx37Ny7Sm/rwHGAESdet0i/GmHTQsZRPDvBRCErjdbA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602535798-045f94b2.0_1602535931582_0.04329865557627044"},"_hasShrinkwrap":false},"2.20.3-next-1602582904-a4b55c1a.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602582904-a4b55c1a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602582904-a4b55c1a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602582904-a4b55c1a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SSGDCXFAkHUbM3Thwjw4sDsFBWTX3t26z10/Pms9LbLWFShL+sndmrcwkJBHBfWHk//WoCvBxH50CCr2B6iYZg==","shasum":"de1e31b2b8616f0810401eac0764f840ed0fe64c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602582904-a4b55c1a.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhXnwCRA9TVsSAnZWagAAdokP/iZij0y4Mr34Oz0FXtjT\n6BR1dHy5IM7ZabKTIOAzVsELUNqmUBPSfRrZ9BbouMpap7uBKlIqumOWDBxu\nHaL1fEFT4WxD7uccuLUOmx+x70bjNEbTjm8KDY0tS4oH0XnN1ImkLV3zuELE\nxgb9KmI7pS7fITGIbjo/YcX5+TJBDRFDhbmPOhZERUO9Tch3aFShU9ZvGEhI\n93X5eouLzAHMA0Pl2CAZM4uuWy9Tzr21YBK0H9RuppavzFT0byVwwZmyyjzl\nyuHl5h04vL2DQh17zHdhw49xrVEQc2rDRTt9cZp6dQAhcecPtqoYHapCytk0\nz4+zceDrULhtfeL2rSzlMiabk2FMoPMfX0JUbuz5A1+cH1HXqy7GNPbiwlT8\nxCyVY7tpBSrvjQ1GokWzRXtcDvPKt0eIfc5/13NclId7gehrCoUV1FPopUYv\nj4hB+/w/Bh2GdT8oWkNfs08OuLWDuDgJXNxIdLHA7ZCoXrRhxWs7oHFTyEKe\nZk2RRANT2RjsGolXr1ddJN4q1A9LNEs57iyVjx8DxZ5FdKx8YeO/oIqWl3nc\nDuU1sZlRp/9WdWP2AMCU2c+YpE/HawsbYsMSs/p8KzFE/zuWFVKcJE/ObATj\nIl6fbzkT47VMMpumJe+0Lr5j/N5hcc9XsElXo9lv2rUE914DbqCrOYsa3AiR\noX5o\r\n=6V3B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVtem2MTj6ydx/vOkxnFza9iCZSLoKxaFvxBQFMxeZaAiAU2InKVQvj4LJrv7UvF3w10z2M+hxCBYB55D10WH+7Mg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602582904-a4b55c1a.0_1602583023640_0.16143670327531368"},"_hasShrinkwrap":false},"2.20.3-next-1602584403-632e63ec.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602584403-632e63ec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602584403-632e63ec.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602584403-632e63ec.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-csuF5UvkM87qfnay9fipWPBwIh9Gip+/lc0mppGE/K/Rmg70QBLjUNZf0RcjfIfhXDE8dnOVZc0VdTrzcaHvhg==","shasum":"38dc827f46eec699d7ac3e3f4852159701cf6316","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602584403-632e63ec.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhX/eCRA9TVsSAnZWagAAzwgP/RFFtZCICpfrQ9lhU2Ru\nMj0an5YPRqf+Y18MYJpElzF0OkvrpoumY0lM6fceIC4EQUj+PNPyuFEWMPCa\nUsz6IEPtj0wmf2IPQ9f9LathpD5ZQMlkp+W/4QFMP7355HKG/E3w7AlkTMJZ\ne9+PaNTzoqYzz5vS93m8t8iSe8F7Q3HXG4XvgrDN65/0DCdNUGZZBqsTi6bb\n4pfmgGAiB0fV4IYeyI/RiXcug9WtbIq+RNRFSjjiBH3mG9lnRuRNWhRvbWzk\nOkMLbkCTt0WaabFO4GrF31xEf8YLmC+G/jvGiWTg+qi6BChGhB5RXQAThOpV\nks1ExOBFEDPGesG+k2dtqcp7OUPYDsUkIJWMlKkNFN+SN96/rvFfIS+0KDBs\nlfyZLkGPIZ4aIzlZVgOXx6jSe1qRVmQ3/lX4JZgDUKrUeDPfx5QHcJaf0a3n\nHyW7Vek3dBgT5K2lvAORF85mSZKwfEPAnpX3oPtSLsvAHjERACP3OUGAfXi1\nA/bxmzYl/i5dgDboMJUn7EzVPhgHYKLyHiG/+fAlNAeYvmrFqh2CAXu9huAF\nT0UNsfc4VXBZp8XsDA08KWQfxdR5ivUnFusJIoG61UKleg1DFyuqmpMyQsrF\nb/aeqjVsIBQ93INk9OIpDmmpNVaYwKbyyMm+aZ+bVtZhTilil5Hvr6EBkq3F\n2EwW\r\n=Bkwq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9GLsKryThQ5iHAzO+wqWZRS6H5IOGgZNZZfnQaTq8FgIhANW6QEOxfWIuZ93UQuAOLYTlUmOd/T9wb1qRbGrtqBAR"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602584403-632e63ec.0_1602584542043_0.9226585741816391"},"_hasShrinkwrap":false},"2.20.3-next-1602586168-92ea982d.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602586168-92ea982d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602586168-92ea982d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602586168-92ea982d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TSz3147QdVHSEwKRGFmb+x74W2sBbuoQ3p54EJAsGDVbrogXbTCAZxvQjIqAqLfGN6B18Q3nDIYE2uum/47ksA==","shasum":"c2e8e1b2e66fb8fc882d6b8aa3702330cbc28476","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602586168-92ea982d.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhYbICRA9TVsSAnZWagAASkEQAJP7EHwDKyCgb/LBJ6O+\nW3JRT4EZIpxsDy2Hq8w/Ia6q4iT5DSkBGsZyw0QlHbva6y+rqZtTzKwVnQry\nVtvS3Ar9Zehz2cFK44bgzb5KoKGQ63FLxxDegvN0RMdEJtW8WAlvfrvPviDp\nnyV+rdF9WBBVPMl5L/Oq/3NMFJwHl8Mx9ux+yEFvwOwxe1IBfgp12/EL7Thq\nbQDJ5fu6Nqk7m5EC+oQLwpFo8ZYNM0jECpcT8WORzA34o/5RPTN2dzKNkjwE\nKQGrdcYECWssybuMAHTaRVGscG028lLFQPoC3XqdcqWxSG9K+oddp3/RlJqG\nlRaUu6sYg0uqNMWoZEg/P0WNFzt0zgfj8mCjdIQIe4tp556DzNe+MrIa3Brg\nph8p1k1tSY7mJurkhM/KPbCUUNIl+1GChVB1FOyLD/GLi6xejJBox3qlO/F1\nhjT4zWaqUVk4m+LhPzcleZRshj1mmxVI9XIImBczXdKLtrJr3VrhYXB21YnL\nypwNd3VWWaEILztvmnEhfQnSXOYpBmqvgU7VLdzzrcWZgnt9oE3FrEvI2adS\nCVZHqc8md3Nbq4p2mWh9WYWjq07O8zSHDTBXZfT7u9GKptKjE6ESr/Y29Bgi\nTMRAZIzjluypYDlyi/JDwcSEhjG6nuogCTA/8jO11muYHvxxPxS1+roZA/ns\n4umu\r\n=eQGE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCbP1b6SGA894otkwMnnfJ7++F2I2nTKqcCdm6375TyAIgdTqRHD59aPBFHSbzqgUPelMKtBWM06cHaJvkQtbOu74="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602586168-92ea982d.0_1602586311673_0.2519014106363888"},"_hasShrinkwrap":false},"2.20.3-next-1602586384-b070917a.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602586384-b070917a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602586384-b070917a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602586384-b070917a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9TAoku5vJezzB+X4kTRA2qcGRbikP1j1GoJZFDIEQp13ZPmF+01gkqfH+I+Kh/1i0Yo2eTlqGgiXX50gf9EB8w==","shasum":"dcd78ca7c39655f19d47b2f555dd11a2228cd8a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602586384-b070917a.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhYeCCRA9TVsSAnZWagAAngcP/AlIS9SkYy/ik5kxiokP\noFip3NE5i5jFOLAGyLnWCI87e+bjkVa7vUDF0I1sRl2nz7fmUASaYbEmgQm9\ngmtZ5EMr5guIeO60SdnXNO4CEWthBVqhLWHfxauXBCLQYAWICXKNGhVWUDom\nlEeSfM84hZIFbb8Fxg14znMNJ66AF2EZiud/dqPQs/crxvBiJKVTFoL4/iPk\n7dMKi1gy7XplHC7yhP507SQJ4D1caW/JJ4mKrC1EHQcjya0bnu+kIE/ahWbk\n55dvMgSMjxtjNIsPfJsZYWVVsRjFL9ok2N83JiylEwOL6kH2okPAGS5nmUxs\n22bdCHVSke758nRPqsTHYKWyfQHgUtCtt32FBeYO7hcxVgKkeeGPGbr9/znC\n0gOowCCQqHDMnvJFCovmwKCo4gRM2eUwViA/T4ELtnC0iA+osLgd4HccSJQO\nAWLza6GRlbC6fyJptGbXfZ2YB5hKZe+IyY7BUKRR4tiWwGv63OuOd50EOb/S\npOu31bM7J8QMTToS3Y/1ExByhwI0PXaL3TIVl2WhHmAK9rLpFuGvH4QwVhsE\ngcsfSEf1B5zgXLQq66J/B5d5En/ZRfBbslU0AZl4G/J4olk05cSNTZn0/hb+\nmWUOHrt5kQ6y1S9gtSc/n+VHKFKLIvDKl5CG5qeH9aHWdzqn+d8yuBdLpxKs\nskPt\r\n=rTTc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBvGMOGcX9DHvl1iNx1jISoPhlUVv0ZchfDVPWX/6cOAIgIeuItTSZoQOdP8ghYkllv+d1QZBeAEWwO6NlOYhhTGo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602586384-b070917a.0_1602586498147_0.6861479060108573"},"_hasShrinkwrap":false},"2.20.3-next-1602586790-3a46674e.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602586790-3a46674e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602586790-3a46674e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602586790-3a46674e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-u8AHLHElMSgA974ucqH7rjH4HnKYCvADyY1e/lRXazlwdyH8c+Jvp5WPhEOHdv3/E29z3eD8mKrYrDze0mFvZg==","shasum":"d7f0558a9861d693b0f92b84ee2ed45316e0c8ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602586790-3a46674e.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhYkoCRA9TVsSAnZWagAACjEP/2aGGAXWSROUaMyIM2H1\nisKB3LG9Avd/Qj6dpUKfm+ZJv6CQxNYoYYiaEgljd53ir2Y+jShg7ch7dkvs\nu/n92iPjAt3x2998xWJuxXLH3J4QR1Ul484m/aQeNfYfU8SyTZryLHLKcwcN\ntA2DUE2I+ZpjvOtP/LKIH9y2SEeDO9kzmYVQzXmPIxjdlCw+0hrpj9jrjsSX\nh1n2CMuvWTOO4Bafg+znln9X6T20YJn1RKB7LvSOFlHqIjwyfLc1NCywlixO\nValUwilzIx+KPRDeeQWS1NbrPKNFICkX77ov6PZCmm+xjyGSg9dw9ZNNSpMT\nJ4d65xWIERKgEN656/nRk2i4K+JWexd54Vn1iJxL5xXZeebainoxR29LnA8y\nMDh562QOX3aENECIQ21XBG0I9NLqPwL86v0265wVALu8zi3Oo/VAVzI9wdne\n6xMpqo85Ig0kbNu0e4uR6imKYr6/5PgKsJtJay1vuayEJTKFTLjog5W90YMD\nG5DWHYvaE9K88EguXf1zjvbRu2ItocXIBjiIGpPncj2MPEo2b4+7sZLdR4fi\nv6vWX/fspMPYG8BczG1As+O5MsV+rNYhTSsZ2F3/rMYLVbOqEej5nE+Kt98L\n3imBu89F1sM6A/Kzx6u9u4qoIs1bzuupLX6sq/wsCM+jKaCKq278EkZIUIVZ\nKvTf\r\n=Ki79\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBBUmuJEt9XdE7QAFSBR3mrM2ZC9Zw3wjeJQKJilgKiyAiBFe5gNx7lYsNJExxOGLI/MyJ04EqIfEZI7In7xobHPdA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602586790-3a46674e.0_1602586920241_0.0435112374681732"},"_hasShrinkwrap":false},"2.20.3-next-1602587414-d967de3c.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602587414-d967de3c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602587414-d967de3c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602587414-d967de3c.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sxskoBTw0hqBv7EtxcxHXeoKnbpInRQuzhQ4RDsLh18XA8XH2jgkG+aJMHGl+94SS8emKwbK0mb8QM/KVFYVkg==","shasum":"0f1cc868ccd9246cd3a3137e52c8e921aa972960","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602587414-d967de3c.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhYuYCRA9TVsSAnZWagAAV8EP/jk1G7Hz5+BNmsqbv2c/\nxxJHlGB3n2PkB5SuUoST2HZAtLrMNuKbnJfURSZBBh0QGEMD+XkhhvBy5FK2\n+wMAMT3IKMGvVT1+N7rv9YrgMjMm65XZ1yMPJ+ft2Aj0Xa/0x690jTrU57Iq\nhJcDcKWuU3bMFqiGCTLrVVzprndp2rDzkUyVl69HT7Vfss9nxTymv7Vgc12n\n6OVhu6ZjPn8Dn+JyIufBdQ84yq1OHIjP/NWbpbxftOH+X8moI1uaYBa/8wps\nMEGJ/gfcsN4hw82zPAQSV5s/hD553QHIwnrCZ1YSNKTJ6bDcROWN2d7on7U6\nwv/KXz61nIn87B8ay6KZbvBtsyIf45faRgMB+IxaTW3eF+v38QkIkUpaPLY3\n3J4i41v6eoe+agr9On9T+ET4C4C9C7OSSJ5QAoZeBkL8zf9NLkuZ/t3T6g+L\nG0pvNqdec4P6EbSCsZySpjTV8zHk5V42t+0RjgIV4Z8lP0EAxQFTZUlnZOUL\ne5VSgiV1kE+9gBtErRNI3AP1Qx1fRec+cnAFUrGF1TbHZ5nWKoF1imFWol96\nTksTfM3ZECa6xj3EreW+hGcp63OEJcIs+khbitEkhYmOUMvxLAHfwYM37fcq\nXF4yI1+u7GfGrDum6nB3DRE8cNXfp9f0WYYN1FRysuG3jfjcF7sptNTRuWbl\n0PPv\r\n=ZybQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCi1jM1peC/a97IpmifypKiYILyRVGyxHnDId/NRcprFwIhAN2SoKWkl8U97EF/dNQ12XDDvc7syrIADcifuLvqljx1"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602587414-d967de3c.0_1602587544240_0.8334763183255394"},"_hasShrinkwrap":false},"2.20.3-next-1602587744-6abeac6b.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602587744-6abeac6b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602587744-6abeac6b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602587744-6abeac6b.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JpxqV2cCWqt8O8gWstLYHd2vJHOFWW55vimoenEqJfP2CPnR9UmNVUoFHQhv8mEXYnm+lzh7hpDEhcXjX+h0qA==","shasum":"35d8254f3804d003c393fc831981e7c2cda389d0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602587744-6abeac6b.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhYziCRA9TVsSAnZWagAA2/cP/04UxFq9ScaVyUuSdduW\n6HzmPuvltFy9ztTRSrNgLWeeCFwWWWXKNwRrZua1Du6huFcbivkLQBZAq+Ue\n1nYtHhbmR6dwydFi01myMFHWWVyyztp2RLytq50+Zb246ITlibDXoWvjpQYs\naFl9EUw8gP+mokv8+b6o3k9GJ/IDedN4jJQsJbOUw03CuSK7M8l1mVGtY0SD\n1S4PSEoimF8PO7LOsyP/+tE2GCCTQhCamJdfymoEDInHGBn7ou4dfNcECA+y\nXolaVrvGl+Qx3B9s17oR/nKtcDQJPm6i07g13nHnjn4lzTLEH7lPwTPnJQJn\npMlxtl8S7h3KefN5pLWGYR5p4IuMItqAkg1SMW8c7lF1s3HnJ0/fv37ZM3oZ\ndL4bcFsqZUZ53xgghgA4nvlYi+HVrZwlQz9g5vPC9WCgFd+KTAzd9UFvXvLb\nIsRAnJv4tZGjl0mjN5QPJvrsPLtoLl+Qu7ohLzUrr4zNn7IqbRgmbKvU8Q1V\nkEs8UyvHy191zgP9QmSXPel+nB8ky1av1dVhDDzok6x3jFw5rZFWQtb+YDk5\nLzDDQ7pn28k4iRdqjumOV4fb1nU69gDNQSjAwC4nM2EXh1EzMLsA1g+EC1Tz\nGfk7x9ynR7QJjx9hDmEQ59xb5oXhXAF757pJCTfjHFD6Q4IFFr+1NbZ97JdE\nsxPM\r\n=2SSi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9gG+7D5OVowwnx4UhXAedPxAohYWyflhr7iDlzUYEGgIgEFC9wctA9q2/Tj2z2KqJiX1iPPSHG3B9/OmGTLdbxeE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602587744-6abeac6b.0_1602587874229_0.05085151200685001"},"_hasShrinkwrap":false},"2.20.3-next-1602590122-60628172.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602590122-60628172.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602590122-60628172.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602590122-60628172.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zkXSRq066KYyUwDH+bsRR6IZRTWXwVy8GKic6Y68hL7vpcBew8CdMmJaZqXQNkQLAjAemtLnlNS4TL5QHpYsWA==","shasum":"254c0b06013caeb0a16c4c79c4d80215534eba6b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602590122-60628172.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhZYmCRA9TVsSAnZWagAAzuQQAIu75OdmiTVr8VpO6P3r\nhnlaEen8wW8+4LZ1OofAN6ZmOSN1ck8uVBy6naHFJMFpyqkqpMRAyKHEwqmr\ns4GdqhWbsehPGUpkmzeQQYeFmozCpp0P0/Lv6H2qJ+3CAoqZjAWxcgG/d210\nTP7EJ9pDKK84+o5lqCAoBzUuo9yxKlTzm30D7HzD6/srsc/VhW+0gAHgkKMl\nHQb4PzI5mDysLOxAeX/a5XQEvGclDvi2Xs2v2pG3ohqKcvISmb+GzRS0xn2x\nJmfYj5hh7Brl2fpUHz2xkW2h4IaDcYuX7/SfLj4/CFGw5GLpCgPFfI9xlzVl\nHLAmQdnOlc2pn4sGS8OCNPa1k/GuNnK3t4i8Hajwo83sbMLa0g+dCiJDZnoD\nNOC8RmMW3qcaNH93v6qenGlRTjUAbjuXMzLkhqmZCVvZLQLl4lRfzPDUipq3\nBDIlC0PxZUl9K1l3jjPohQr36RKz4bBAtLMpNn2c7V+pcpHoK09MuJnGiFh1\nsGHHXuNRlC1dvHpd3xtE/4G0k7iDD0T4zHtmrWGFj9pRa4eTfq9NF5N0enN4\nIrJHzKuiTU4aI9Ry8faIAO6dEyT1znOasaSDy8nl44cfUoK/aQ3Sq8zZDlB1\nMHbAieTiTFe7NJ7dqRuoKCPzZ2Atzk0EwfiVA/tlF1a1opi8SsGNWSu1QBya\n8icE\r\n=kn/U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4ja4bd0Y6LY0sBzmgaDb/Z4g6WyoSa7euZMHfzVez9gIhALsnVBQ0I+CRlydSsKmwPRQHI34sMsDIn5BFKdfbxEoZ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602590122-60628172.0_1602590245876_0.34911457617381036"},"_hasShrinkwrap":false},"2.20.3-next-1602590750-41806c88.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602590750-41806c88.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602590750-41806c88.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602590750-41806c88.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5Nv8o0jfeozjWIUyA67KVPcK+0gBjo/CLMKPGJ/qDbdVkDoD+oHluIkTkxTb11ZrKfPeKsEMsHwqPGpaKDVSoQ==","shasum":"e7d03768a7ff6a383903d785d25e70937e743fd1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602590750-41806c88.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhZiICRA9TVsSAnZWagAAX6wP/jBGJ7vU282wyeNKu/3W\nLjWI3+5hatF2vzn1LLYmawo+yKaRFgaWUbLv6es45h57V+hVyAgGcjrV7Lmd\nNXRhdqE52zJaHksviFoltbV3yfebxOQmAgvEix7XuUJhrgOJrrBFi8lwSjyL\ndnudT0dhO2/FgLqHopxD+lpbt4cnOSYQSNo07KfjChMLbZ32nKhdn6jMUNzE\nzqL01G1DO/88yqiJSI3mOoSYLZm58nqBI0QMDlGDZpfnQARx64Y7JLWanGfv\nYZHMGTTyOvPZmAnu+WvR8+1JPQtcCp7PcYPDeKuMnYWb+vKEFr8QGILJhNVH\nJ+D5u0qup9WsWMV9FpJxm/hDaWBjM27nik3ltHzK2v9aCp0mCITY5rT/kcW3\nu5UjOI3bZlKC0tb1MOPQ5v4jFUSyly/x3iQ/r4ZXQgn1Hzh1gs61H2jIJKNv\nKAyhJ9bmYNVG2wTlwGmeyQxu9N1wB2XiD/+pVfVDLL6LYbPKAjD16EMM6nlI\nGWRxHGzxGjyYXEsb68XP4n8JMbU31UKdOpSGEgyvlZNjVPpuLw+iV99EHbhD\nqF+BFhx0lhza7N3i3exWdDp5Nf+Gf9HmKKW2Qbbk6mg53aE6Ojf4tYW6NI3f\n36Rli6Q4H0R4Qz6V9mOAybE0ghxEnfMzsr5oxdydEPndspO3EhldDO1Wqm+S\nk+Is\r\n=NNKn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICaIr7x8z8nDSoKCKpt2YQBendz1m2z4o2BzFkYXLxtXAiEA7CQKPF4uNZO8uWwfKsuo/HkbVJVSAIrB9aOa4KU5+Ho="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602590750-41806c88.0_1602590856388_0.0698938659903654"},"_hasShrinkwrap":false},"2.20.3-next-1602590735-523f8fa6.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602590735-523f8fa6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602590735-523f8fa6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602590735-523f8fa6.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PiWKIT3gzNrGTCLa7wTed8qwIram4MvrtARdYX/UyUdCoCtRsyti12ZThFhY+YhZnUZC+kCyE24B2QJKdP1GVw==","shasum":"2ce6475f68aefd2aedf1d30dddaaeb634c827096","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602590735-523f8fa6.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhZihCRA9TVsSAnZWagAA31EP/2QGvOmxb1iOCu2zRruA\nnz1iMZMh7f6OdRPhMGsX6qGRlkAdeGYTXuK44W44U0/YYkLlHmf+C8rnPG8K\n6y6WJA3bOJN6WaZgrIoTAOvGDJk51N+k3sDttxc+RVMraeX20TNJ+npld8Xm\nVHT3H9j5vvIpaRH2eEQdeNeAnbHuRlSIkfkHfMhvHdlFVmZyCK0fhRfqiivQ\ngrkkOL4HQxtbPxWnlKDVAjmY1DHxrombgzv5KHaptRxbLq8gwW5imwTXIiMJ\nCypbv+i1FC9pIaYJmi0XlXHbj4ewP3o1DFFDlbkcKJbGCOPHETPLk58XCESq\n97ka3M5Ix8JG3RpcFQeaTPHrK4VfMGJlUm0XmSFtCH19RNwgXe4tl7Yj0HGI\nSPegOCUjAZw0Yg5lw8BocPwOl908DV0Co/f9BaTqTz9yYZ5q8vWqzEpFraWf\nJyVNNk9slzFTA6XUdAMiiYj39P5bCyhuVHsFhuxZhmFdrREdILO0eJl1a5TK\nWYZeQG+MhiHIHba6IhUC4RJsCNZyXCtFCnPBvMyfY5cNCOyvzCGHEILB29la\nrphP4+n80OFbfZR2bkdEeR93biQuzQAHYKuSMiZAmJ7cIQoNE6WVTcS1o84I\nbWDVe9XqfYiLqRov/3SIpiL2D275/AmofqVFfcJUvrdMvNp1G8gHW+l1eiAE\nLcwk\r\n=/yoj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOjpguGVLka/WsWBZlNOEEl49D/CE5qmqH5GbZ91Ds5wIgFM1hvOPsCXUYZbycvqDn+f+9zmLUtPDSzWkV9/UgZzw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602590735-523f8fa6.0_1602590880810_0.15224894327388006"},"_hasShrinkwrap":false},"2.20.3-next-1602590836-a4b68389.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602590836-a4b68389.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602590836-a4b68389.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602590836-a4b68389.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-X+15kIZgFb4Eq3C9EN3juvK7cCsGfyLj8O1qRRbsn+1LCndX8tpsNzstaAuJRA3tf4nx/4eHc1Pxk/K7Id9zPA==","shasum":"d809e15aa4ed32031d0ec53974e9a2bd509b88cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602590836-a4b68389.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhZj8CRA9TVsSAnZWagAAWZoQAJ/xnk7Ughdyyqf1+4mb\nefyvwLL272pUl26bImREFAVW7X2HHWTt/dtwOYXS9fQR60aetheHvN5coYJ1\nPLO165HIEek7WMgzEUbCt28miq6P8ZO47nJoesr6gsJnYRJTGReFdNI86zzh\nxI2RgZ5mTPg5LCRlZhiz1rH75sjqeiKDDfxDHGz6otxHiC4sJ1+NENU6yiRm\nE4KKUE0qtYcSMUeqLqK5G4120imuZY/Kf/PV0he4e9owJd+AZ2sNKzXSO5TM\nlzQOd6F12haomRrmcXTGzl+K/h4HU7KsCWpJAn62UZ+Lo6NvYP7AumZUh7qd\nCLASMvutm+69jv4s/CY3mfIm5NQ8FC4yPhy9z/p3ITbvcEvy6Che90jsBRgS\n2xlU4DCdW0/LbPz0rImcHY0yefRgy02C/PbZw2ZFuL++3I2ZSl/Zi5/ZTgb6\n4Mj4E5IzG1TWYEsAN0u3jytt+pxv0BT8rZ+pdAhd5IV6RPaEJFr/f8A/n59I\nIWsbMpreczv5J0s4qx0dz1XMBjAgn2PaIiQUtt7Ov/yghcADH7ql6eQdNx0u\n/qaYk4vZEg9vAuy6//rw0XwuS69dypGHaa2zV+xioqy7DLa2OtOoBVI+YGsH\n1CWfVSSWD1SZ55OBknx2rxRBkokynxXiFetShxA75JT17V+5yfXsLA746/0D\n94bA\r\n=QJYT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiO8gmD/ZET/TXJgC6AXhwPcL4u9qKZhzTZaphkXEYiwIhAKiRR6xM6S2iFlxh9u7Qy8DG+9o+w1rSlbtJ9seEpzS5"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602590836-a4b68389.0_1602590972367_0.19754262462754824"},"_hasShrinkwrap":false},"2.20.3-next-1602590884-cde45fa2.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602590884-cde45fa2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602590884-cde45fa2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602590884-cde45fa2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HyCQuA6zrHXpFGlleKuQUX+DhKplwWMZ2stPuyxkuTOp6VqdGKWiR6/izrphF/9mkNaHff0CoZE3NPm3t992dQ==","shasum":"6001e6877198f2c313b1c67eb7c7efe32ed77520","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602590884-cde45fa2.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhZk4CRA9TVsSAnZWagAAhjIP/2h9ae35S9o8/vfG7HYl\ngysZUaaxNZ6DPfA4+QE4x+3No6vb5ecArFkeHEbcjLWn3E3M18TuKL2OPwJu\nPdnmvikyUZclRkmWdT+5B6zPPgf7bRnBYW1FWdwJ2ar1giDRM14UhlEjl3ae\nFmvcq8Zr8uXxR6vXxfEIXaDKlYKNH6t+JK5gooa7MbEtBB/FqAzH2T1p9G7g\nGll2fYkloICq4cGC8Ztw5KqX8L8qzcBL0p7Bc6NqGzfuhq9aF7wE8OutSj5V\nz2f5JyY1fl1SUB/+mank+ImiTzvt83sU9uWD0e32Pnxx/GwH0N9vkOorIbuN\nyJJCBQEiGred3lutdKWEr2ymS1/dInR8XiMqbYZzjEdxOd9qhLED+iG4gv+K\nIIIhAz6iD8jZ9CfAwdgjMR5h8r96eRl1Dfh8DpPZCHJhqxBdLTtZurOo8Qsx\nOw0Yd8p90dsdwPU7JuWaLH9WZrI7x/2F73nU5gXsPVbx0hogc3JlD1BHftl7\nLNrXcekPNbPSYBJe5zJhBJ9V7cO1PqCXXouqMHikHdcjbDgcP49SRfyGM3K2\nLJx4gjB6pHmhAzXw06i6vqKbxMsnqK9yHPe9NPjv3wJUb4mjZQgD3SfoUCK2\nERgADpD7MT4jBETq/4oVqNIesmr0/xvZzVsyOeh2hlujP1ZtCYUbUrXEadvR\n0PiS\r\n=HOeU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDb0vb+1T/HfWUFPrV9YCfQHWYHS2Doq7ObKr7wC3p+AwIgG3ypKGrv63R/89x347oROGyWR9Yo74Sg/ctkvyGAffU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602590884-cde45fa2.0_1602591032262_0.42089526246827225"},"_hasShrinkwrap":false},"2.20.3-next-1602592175-f1b25646.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602592175-f1b25646.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602592175-f1b25646.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602592175-f1b25646.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5E9Hbk2fx48uXl7wehQ0egqXqvHbl8nYPwNzdUf4IBueK4NfJDsXUUtAm0Rz/6473OGeuu3IKsr4y0Z9tYfu0A==","shasum":"e0ebcc1e0286651475524298c12c6f4eea51312c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602592175-f1b25646.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhZ4xCRA9TVsSAnZWagAATe8P/1NdD/8GxTfoTsSSDWXg\nCNXiForxHMi4ZzB4UBPbfBchG9N4+o+5o+C7FbIZsTgMCwKhBSGCQ9WT9CDK\ngfBUI/OXWCEqapXQvIjDB9KfJWkG/7zaVrdMULoVV0/00kA9uVnVqkA7KQ1I\ncV+eZMqa3M0GxRuXH2m7gl9piC2ms1VZGNVkuYOfjKAr3tqVJ8v1swv+ZEsc\niW0WDpzT3hUlcmbq4fktrLQuqJMLqFtTU0fEv5uCdT1lazbdl0TWEOr4gNu2\nOBaPNL9Ar6DVWxpeVYTyVZ+zs2ny8W75r7JV3I3YlmJxBtNuymo7eE9uw/bG\nQXbgl0B+N8K96AXbWkx7kLrPOj64+WxIoHOfse60fMQ6/yvDstqS/7W4+8le\nj2KC8wGh4X2LjnruxyzfVPb3a2luisCGQ5pk0Md6JH/Rskz7b329VvHx50v7\n27sLtygf9bPPn3hG4SdKGZwFz//a67an7nTWE1sxtxJPqQWWkHjtCVgDNnev\nVDSuVBBym6b9xzfT435Pjv+OnPkSXpSfoG9bvUWAmO2iweSTZV4sUc7p0tDR\n9pl9O1q26n/zE0jqfmtvxFOJAidjBR7kYMUHwRcgpgPFID4fV5jA1BAxcrTI\neSS3CXkzaFP9FK0TjHb0mbnYfGhVsDSY5+x3ktAujeh2lo86D5BV+qDYvuCZ\nXwY3\r\n=h6Tb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjLuOEVePbt1E8j2oDSJ4+6pnT6yC0Xp58RbLb35pGvwIhAMcwyqpbpIrwE7Qc9G3KzxVkJpPc/b4bR0lrmPnkQHAe"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602592175-f1b25646.0_1602592305278_0.9576436242406787"},"_hasShrinkwrap":false},"2.20.3-next-1602592609-b2ea22fb.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602592609-b2ea22fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602592609-b2ea22fb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602592609-b2ea22fb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1+OATaP9lhfmON6CzVV11lmlT+N3GUW4JrcgMj+VrYXFizkVaEgTR84an9g/CPG7Ykzf32VK300kouuVdil9xQ==","shasum":"51b9d0d80c9272b721334fe852f82647e6ce3e0b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602592609-b2ea22fb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhZ/tCRA9TVsSAnZWagAANRYP/1oxipGkoSJkeDK0n6IN\nCjhGWw138KtJOTDX9HjzlG46FTZTJpOsalJUgCG4b1zfbI1gKYIVrOdjopq0\nlYNNJ5G2otu6eP3osrSbNz/nc/nmjl0FXGmr5Fc/W47ThwWEYGUEYuB0Ji/D\nctve6c38vhV/Rn9P7YyOkoUxgBlGeK84XFCzLuozFBoRlMQnW7TljHXZH6oV\nlOWNPT0M3BAYJUIAfLIVarCT4YNjsvmyzavDuOCUZHZaOc/NqqhOiQkVyeo6\nU1R2tRxz8mCcyKMpalJsv+JHP44yQgpQli/QfwgF2sfK6+jAVNCMXjiqut7J\nmPgbrMIG+XX8Ckyz6H62d1IL4sRYQd76TU+UIW+zA0LHsTTdKPA9hslg6zx1\nZoD5KqMHzpXxe1ujYlBntT5713Ok3GMW+ykG9FIaXjH0VvplmZSm/XSjhzXy\nU41A7rmWDQD77eOm0DHGwCc4kBdi0cnuP+D6FdAM4Eg9ncwH/XNTPP4sRuum\n4AlE2zQn6p1m1FWk699htT2KRclMtdMyBwf2lKYmRbevd068iFsyxXasZNMx\nQHH9FW++iNc/hf+3MnjOh3Pv1ach0uSDtBRlKBRBTG2cdadLVv+AuRmI4AlA\nnJX25OEaXVNeh9PRtHTlA7h4aka8el6MXWhzuez+t1E48VzspmqfZJ1DAD8K\nQgEK\r\n=pl33\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKLA1fmmQtRJ/TtMFjMn01LXG3mIhE00zGBLn+CJkE6gIhALuqnzJHmdkoB4sh32UJodcpWjLwUbJ5Y6rsH2DInjy/"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602592609-b2ea22fb.0_1602592749112_0.3690500729758859"},"_hasShrinkwrap":false},"2.20.3-next-1602593715-b2ea22fb.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602593715-b2ea22fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602593715-b2ea22fb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602593715-b2ea22fb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pksOb3GsdeUpnd6P0CzINwGNSsA2tXgvKlEQ+6rUzPVDF/VX2sIe8+KWH2KFNboQIUttJb2Zs5iN5DCnfS9WOg==","shasum":"56015c40f7b36ccfc2c0b49070d1467a2c7ac4e8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602593715-b2ea22fb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhaQ4CRA9TVsSAnZWagAANcMP/RCtcxxHz+J566owSw1q\nrr88AwdtXGltTxwFu8IyBlHVD7dZ9ckHgWk8DAljiOA+7X8gSOy5iC75/2vW\nF4PBktTCT+4g5XmCqTHbW7vlXjF+igpwMzix8lHKLs//YMPmtxK8Gpu6thiy\ngZ6zpeJes1uKqUeUV+2lkm1L0Oco2WSd2MNvXkeWvFLZLVcdWVguH2ndCygG\no86g7IA6NDcgD7w0uKTQWrpPjaov1vNriDtmNCq56C65i94J0CnAgdpGn1Wi\nS57l3w36hdzmi8eQTCIwMOqv/dcudOiXMN61IkoV7k97Hx633XfTj6z039Cr\n19ZoIy88LMttNlyxa/aStwwkrca9Rk0e+f5wcGdfqCfiET9IqG5bdJLhYVcb\nZtky25nc2BnrFZ+nWSc251FGklpHllaQjLI63OC1Xg2+a5uramaYDQL3wYV5\nuFeBS8uACmRfA8fD4W4CsUMPRkTYZEufpCbq8xjlxiRi2QYX7DYy3z9s8U94\ncJjxDd7UIiMIAhrW/hRgsvez1nmdpX5bBpahcznZFEV8vdQNBBVW1LYZgyuu\n+hsyoc96qw+auzM9e0Qp+2uhNEXTuhSqtQ8YmGf4+cG95nEVv/sqnQGAC3pJ\ne1b6LYfZT6+a4myptTa+J1GjlmGpcC5BZgB1SCnW38QbSwoA5z9fox45Ikxp\nHcZU\r\n=0s41\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4B5Td0puRwE4b1FRc8WHdslp80sWTyFXDrXFGOreYggIgV+AoyXQw8tr62J8ZU4DZj9uzmS/kBbEd0pAomjSiIKw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602593715-b2ea22fb.0_1602593848325_0.9291520001497371"},"_hasShrinkwrap":false},"2.20.3-next-1602594840-b2ea22fb.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602594840-b2ea22fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602594840-b2ea22fb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602594840-b2ea22fb.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-x4jiEbG+31Hcn+2kPzizjDQ1OScH3up5nyMUpwn5UUWj1XuBiR2U2jduahMXYGv/qYc2dyTf7ai6UURP21SZCw==","shasum":"e951198d6f7dcb1daaf69e18478409b0982fe9e4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602594840-b2ea22fb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhaijCRA9TVsSAnZWagAATW0P/izxU61qDJ1ZXDLb7pdc\n5Tol2XegpngbKennWuNnvrdWXF/FD8BxszBDAiHq9kZks4k3ZtDNX/3Gs1Q9\nf5Wg6dsTKtHpD8i7pryBSp59FnNLQcNTlC1e8bAXLkW/r6Gk74IQ3Y3fs/gN\ncQfyukwazd9Y0MHoje+TaaGq3xM3vZdTZzg3L9WDu9Msye9kPP9D4ed2r5CN\n4vq8X9bZOVjGLef7tZ+gLNCItXo+CTzjYyrc3umVQ+L0s7awTOI8dU0luU/h\nKx34459nHTfMLNVX3vmzYEFyIKM58JUWJFPreSavv8SztorqeI/3f6aLtd8a\nyuKnnXbGE3bpm/F+PJ0PwAxA4zvl0qttBJ8oi1b2f06bQsB3fEfLVAu6FpDG\nTConnv1eZ0kTh7S1w6Bplai69+/AYWLbbNPveZrlYnv1EgUXShub3QTudxD4\nHmB/6jC+W/xuu5FamwKYrB/bQC5GvMhiRGnEqz65LxPl7Z3sniS11s87oHgh\nDCQiNHxnHeGbEfEABoQi2DwwtQuK39HgHXsCY3L50Z7GCPWfzgVAFARhREZr\n4fwHNpVPbI4sQyd7iJgSN5roVfIu5D9eqTr4kz5z1/e2IKkx0/k533Lf4Het\npz/hK725T8jNt4jWP4GbcsIN6f+xPRmfCo3S7KLVDDqdONCYL3pZQyVJZ2k+\nDjmS\r\n=lyJk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQZHoesFMgPDhS3V+9FYzvjnFWMyGUS6wiYdnIcDV84gIgfCyPpdGVaytWDPpgqsOm7hRsoYJH44qbhPqw28/mfSw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602594840-b2ea22fb.0_1602594978716_0.5432193295909726"},"_hasShrinkwrap":false},"2.20.3-next-1602596144-bb69cfc9.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602596144-bb69cfc9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602596144-bb69cfc9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602596144-bb69cfc9.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-0NSq2bzHsdvjVBTVDXsfZNLXUAaqhaxTfiJtLojVqBDiAMIq3myLilxK5b1QwCH5kG8nUj+U9/NPUtbvvj8CkQ==","shasum":"20ec2bbc74cb00bfd17b196101da997b13dd822a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602596144-bb69cfc9.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfha2tCRA9TVsSAnZWagAAQdUP/R5xtnj7IgB8TObcaT+n\nBithi8DHKdJuTozWW2jA3bkqUwmC/g1MqGPJRy4qlv3RYrEa8XRICRNbgAVg\n5+mIkaDHv1IZKW7LAmy5bEqGhMeTeHBGO4UJzK6lWZ+WE+AP01cWwo+WBqEi\nUMumoi0VenXZ9px+2bb/QsYTx6XCvnORitwYbUV/+XAPY7Hw+ScNEyqHrl+W\nka2ph+okFbeH1QPc9iaNCdkSoLdJeCuCCEpN+lqQ/cNkvnnUraPhT8MpxzvK\nCmv8lK++I0ABjCcu5Rym+PQWZpSOh+Hv3H32MzDqn1Y2X0VQCagz2CT/hQqG\nWslVbENfQjhBrBxMtrlEcaRE/yiVfwQejcCrf2bREvSJbEgz0jBHvCEM4p/w\nGP5DZQf2exOqH1oRLnHyPeSdkAl3uu5y70Z+xJyOfNtRH0WvlIYByfupcFx9\nWJRrlUOpTNRjof29Riv0EQ1Bxo3Inb14F4UApgRzpoWy5RluXPJn9y4pzwmg\noTywzPrUfkYRumvnf2BcvlrwoFcRHHGb6UE5/mhmLtL5+LvF7bEAFHdiLdXV\nP5V4pA4vJqhDfs6N1/CcwsmxB6CEbMskoUwNd3Fb8eTW2MbNpzgZOrDz+6Ll\njizQetc2Xr2MYzQ5wWCj8v3Z9PgeV5xIQ4Nbg9+sIguUGQfWLz8EPJmSXRP6\nKsBh\r\n=nZd8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAJFWq+KTW8nFnuxpbBUAYONKmdmV9WRYpYzvjy7JA/5AiEA41mO8NtkGqCp3dkTMYXwD4e1xLTR1EXdlFcQGY32LJQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602596144-bb69cfc9.0_1602596269378_0.17306366317308153"},"_hasShrinkwrap":false},"2.20.3-next-1602596161-bb69cfc9.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602596161-bb69cfc9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602596161-bb69cfc9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602596161-bb69cfc9.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zyYxPGRdNfjgS0J173PWZW6razi77Ix49U1hlLbKzku3o6AtF/C0T+YzZx88tM1ordoY0GNYSCukX8E7/JkZLw==","shasum":"23c83dfa540f2cdf998732402b5d9ac1e6d237a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602596161-bb69cfc9.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfha27CRA9TVsSAnZWagAAd7sQAKTwNrh9YZiUZAs96Wnl\nxtwV4vX2pn/Y1zZsRwFIs+3iJu/E/zXAcY0pM1RB9c2AjPO2QOjFCnA3VJOK\n1nSSLDt3rNMYkgTJuukyENcOfiRemC63YXQjDVPSJEzh2SoRoovgtbj3mbh8\nZQ5Gx7Cphe5iIFDcOscQ/DEpZ9WMw9CNWdca1yu2S6hVt2Wpzyjijl8BrVih\n6U5EIDgUKF8+ZhIpkOmlUzPLh+YMasM2CgS3U+b7f0FIB1E/C1aCujv327qv\nQCYniMkw/+cVYcu+6Hx0GdUADDRsO4/VFfZvx4CgxeEb8yvYWxkvEv6KvEnA\nCPbulpn6TYab5ZACCy+GC+PbvLrsBuffU3aqBgoK6LqFf8zq7j9g6h51MXdS\nwkwkDhCYUzc/0CDJP3j1AF/dPjQ69vwwThPGdxZvQY00/br/OltVPb8tIsls\nkYsP5bmyCgAFsYvncWnB3Bb/0Zu8zEat8L+glY7zm3+Foedyqb3c/CX/vdcq\nEaVToC8nBzkaKGzZIBPCo2Upv8re+B1pL7ris0dyrftPIJXTAKES1MzJVSyQ\np3JGb7oDq8+BGuRq3zoMThLfkCakQejofMYlwO8NiWUqQTChjH+CvwXQAleU\n5gnGHKDclOVLLxijOigciaYMGzHkwYbdkQekMt/jPAGhhhoGfuTEd7EXkqte\n9xVY\r\n=KEo1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNXln4ZVahKF1O6KQXhzLWdrCe0csJFbCCbITeySz6hQIhAJgaAF2a9Fh2ujRgMxG3bNZiinlNFAGI+W4m2UQocX3Z"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602596161-bb69cfc9.0_1602596283272_0.1233041020606187"},"_hasShrinkwrap":false},"2.20.3-next-1602596826-30bdc55e.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602596826-30bdc55e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602596826-30bdc55e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602596826-30bdc55e.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iIzd0HFf8lo0gjDDoq45SWbi8uz8KKpFneqNdmaeMEaAB96JGulWotb5rfSVKNUl/lWdSryxWmd07FGM2nWN0w==","shasum":"fa285098f48c0476f808be89c240854a02aecbb9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602596826-30bdc55e.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhbBsCRA9TVsSAnZWagAAcWkP/3LKbcqAVCDGMFOpirDJ\ncYcAPeaUGi5NT70vEIGGaYLh/EG0mYQJlJkuQZxmcPOr6+IthdSDxxP2zEG6\nTTGnFmSzF9QKQnSMNQBMgnj8f54foY9Rp/CTvdAr1rO516e7R9svKkl2HjMh\ngI2jBgIq3AIZ9RR1WyoxhwJXiP0ldiblWFLvEc1zobPFX8LsFZc5dBTIn+No\n4pR+UkDcQwikjjWxw1BCzeJG+iqqEsMTo5hhFDZpRcEbSlCSg6rhG79KQKeA\ns+RPqXdZEtUagm+lA1yU0soa7w1cgtH5q0Vq3gg3EWpgBL5SBGm4ePrz9Mb2\nHvaFPvVlOgkKs9cB1eladjr4infR0JrXlnO9VrPU6sYuinTuY60jwZaJ+oyO\nuD6ARZuyWLJU6ND1muUT2H4p4UnqUECHjc+XRkTdInjYdLR67BCLi3xiJzZz\nZXBr+GBSXcRV0+5zvUks2RLdNMNUhWf9BG8KnwbqB1jR1Tnojmz8f6MjLm+3\noeEScTChpsDSIisQgV1L/JEyyD4Uk9j8G3sLlPf2kIsCYs5oyT+1UEoqv7F0\n+8piA3yT1MjPbskuFgv3b7zAOUZiiZN3+GGDw4ixvUbg5/JbTbl9nDp+MKWQ\nNBudAXTkDgeJghFxaUJvACNU6H3loSfHOXxpR+XnmBrUjXAIT2onvAhr6kvz\ng4Xy\r\n=KN7x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+klPMkf5VVvKehZ41mOJkXLcU43qz8jO1b7A0ZVkStwIhAKvaMGpcnz8EUtilTzIfaFVCZX0YNjb9Kp2xTnFWx6iQ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602596826-30bdc55e.0_1602596972141_0.20812019423868855"},"_hasShrinkwrap":false},"2.20.3-next-1602596970-c094c5a9.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602596970-c094c5a9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602596970-c094c5a9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602596970-c094c5a9.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Kt9PQZn9o54m3qcOdxohyLr/vibbRCCmH8qcw4q1taHzx0t/cUPutwlxHyxfcPm48XRZB1Gx+eBgUuHHpRw3Mg==","shasum":"8aa0a5d56405bcf706809efdfb038da38625a31a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602596970-c094c5a9.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhbDuCRA9TVsSAnZWagAAdEUP/j2dCIawFVB/r3F/R8kC\nhf6BPlkwWPtGqUur94atuDpzGp+BorDnHAVGKY3Mia9Bxx0PcL6lPmIRv84x\nIvk8q5xCPhMWe8AZM7uUGuu8m3pdYXskhZuSLD4hN5LKH9sGoDABbtSx48ZG\nUcRXqQFa01jVsuhCRfxVP+hF01FnsMLdqMSaG5tcj10OpCH++JHqDc7zDPfL\nMY5++NG5CXRFEwzkwZQX8IsJVgrHFg6HDS7E03E9LVn/23XF3/W1CUlYNb4V\npvmG8Ay0H+xBe4cv3dB6ABWberTX3V+TcjBSs5elIB3YzBCzwIowppSqnWFv\nmn6DhbPAsy+w/f4AXvrjIYe8NOTZTq1O+HVYBnIYtE0xWbiwg0ppRKmWYxR+\nLMLloXuPyDpPtERx12+6ot/8YK215NqbZjfAhtjqqQPx15CKA4r2WB6w3oFj\nB0zk0dlUMSScNOzRDzxi+LQzuWeBvKeb09eWVeV/cpH+SpP0P3aOisiSrVEz\nv2Fm+xlQjNrS9dtVwnKXRTC1rpJMQ8wOiCz2UTpZ4eKrBwDYE7qWaPTmhKzX\n0J+iqfz/zu5nwFj3UL44bEv9XfVHQiCEQyVAaeQFJFu1j0UMwEVzV/e/koEr\nikKfDuqZJNYaAJ9OnJMbR5gFR+vYdBLAtqccX+hCSIAQaiwBfetjjkns3Tgy\n6ZgR\r\n=xJcO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGrFC/m1y+20NZIhzxp+NAlOTu2J0ZvrASTEe/yUEioAiB+jxX/maax558aBE2chI32M2GhVWqga/ZFjGrX5Op03Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602596970-c094c5a9.0_1602597101854_0.23040236782021695"},"_hasShrinkwrap":false},"2.20.3-next-1602597330-85a418ee.0":{"name":"@xdn/prefetch","version":"2.20.3-next-1602597330-85a418ee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3-next-1602597330-85a418ee.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.3-next-1602597330-85a418ee.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-g2m5Am+EGFy3XulgJoFqtySf6EvByuFRdwELfwunU2UnJ85PjyrKsgkj1DbgC9u9rrZD20cAGrMKofL6ssfXfg==","shasum":"7621f0a089d4e111aaf1c9a3eeca3cfe4c44a303","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3-next-1602597330-85a418ee.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhbJWCRA9TVsSAnZWagAAS/sP/RYTqsdJIUtUMtn6sKUl\nPtwpAHaiPbjBohX7J/WUb9jPJHqC20zT/u3GdwBKPNLXP82RJrBEkfyj87kb\nzNrRlh/qlCxLhmiT++sidoQQnSDVRAWKICfVg2rCPFrTchVkUWUX+9HIfujS\nooK30VJoglV4e2EjD9foWfFpn4dr0xNDdhx6rIRE5CpA6h5lX8Mz2zhpBG6/\nMmtL0d0L5rXelvpd74jnCeDNtAepqeBwAOYzf4QhNivvk3F+7nhtgG3RzWiz\nk1U9ln9j1e93RL8uPo2Yex0+9upayMTrhABHtyJ+BMBgObX1FH0mwHwv+AQs\n7wkRBe7iZUbJvw4vZMV9oP62zUvVji6KEzyA06o9GykReeaTq1ko9Uku8c3+\npUGP3FbUKj1vmyYr/0qcIH6Juw9btsqnA38Tcwrrv6CCOj3bTUL128vlvKEk\nq9Igb4M0ceV+yPDSxSypt0zlfyxQKTUwTiPKwbVeNs8F5PiroYG7lF9vSpBp\nNsww3LWaC+lwMfR8DalxkRQDf36Z6eHjz8PdYzxcuDCSffOTaI2RjskhJnJM\nQdH5Pu8LATjXlFhNYF3nzuF45jtbUz8fVtLqazjNSR9uSyyB27kUVrdirve3\nye+YQ8GtQNqlj+3PfMjnv0RpBoySonhyp1L5BnCOnZ1bE16sPqmxsI2cZOXf\nFo0D\r\n=n3BV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAKy59KLU99CNKN6KFZT35y1gBIRNmiYeXq1Mvfzwy66AiBmUZVlNML2zySgk1DHI0C/UVnRYHYMyoi6Ckj2wV1Cjw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3-next-1602597330-85a418ee.0_1602597462015_0.02286512845144051"},"_hasShrinkwrap":false},"2.20.4-next-1602597361-dd9af860.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602597361-dd9af860.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602597361-dd9af860.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602597361-dd9af860.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-J6Rdb5AVkwX827YU/MhJbiCSh1QveIVUbjya6O0nme38DIa2H28MSiRqIHS0moeCQYTNrXfcKRjYyIIsx/XMCw==","shasum":"9a5f5b385f19c0da53267477f28df470c377e58c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602597361-dd9af860.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhbJ6CRA9TVsSAnZWagAAayQQAJnWoa50mCgc724PeWmK\nIHqyu+C1UStePpOjdiPHkUWqvCvSy6EvgWsSrB5ksiJBgF9K4NU6QQLkHEIM\nzjwPsyCvY3w7qn0kUgP5Uxa+g3r5FdZmJprP+Lboh1OwrqalmSeObEeZ/7Dm\nv7WNeiXsFgzA6w5apZPsQip2cIoe0vr3kw6SRwEQ7hLj3+4E2roQfImXgt3R\nhlTQIoKdmapQgyAu5nVT7IoJ415ll2jRME7devvAYroMcrK2HLMlL0ohdTH1\nSMWf7m2RL81tGgBl9ul+r+2Qoeumcq4OxG/SB/RRLfONyLz1Wiu6oSsU0Gzt\ng3EtRNH8ofFsALBezGZooLg6P+Yf0IAGqd12OPcRYuWy/JrBgS3yClr8mAc1\nVaiK6FYsRluD4+XjkiNCaU22x8BuBqR8N4DmZeXYxhcKHxv4S4vi0mKGP81T\nEMda4GUBWjGSjdI7NxjU8NAMP9lb6rU19zC4VvvcCMFDsD2lK6BXsrdiw7if\ngskpl61jTG12lzpVeAtn6M/BrHdYsQt+pta8Zbyesv3UoFP02QmOdSmsNFU4\nBUKrNGgeEHpnmW+pnNIKXeMY6TxvXFN2kSF+maZdrDzHQl3BDom/dg61s7c8\naS3Qe1gRg7DsRc7m9wIxrmQBjiTQxG7dkoNxrsYeTU1hlSUif17cNfP0kej4\nOaDQ\r\n=+YK3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDu/BlNB7TLTB1fsrXjIQgKKDUdGskRqUEhlWUiTPMrAgIgLSEIU0fymJD+71xvciFilEtcyfakgZHi+6EVXg8Zixw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602597361-dd9af860.0_1602597497584_0.47665418730824793"},"_hasShrinkwrap":false},"2.20.3":{"name":"@xdn/prefetch","version":"2.20.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.3","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.20.3","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yd9lzsfba7tvGIVpMU4DFVxHOdMqhb5kuGpHP4Lt2qeE2iOr9ofWOuF1ES84W7ox2Z7ULHWsevUjkezMQNwKcg==","shasum":"cfd6eafbfdde0565b8ee980fc9f5bdca0c3f94e6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.3.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhbkMCRA9TVsSAnZWagAAWpIP/2jVyla2oX/++O0e58qk\n0QL1csDYUburZNz+aYfmFP6/6yu3k6GssdSAuf68cEHKxXk/8x1LPV9pkrQR\n2m3Pbmjh7OUOxxTZZYdQMYUg4JjoDRzn/N7bOpHF8gadnwLs9w4rcKCbFDnh\nATgwNFUt0/fX2uL+EcH5hyOLjQnT3dzUOEzy9K/P9AAWWX60H0euGgcr/igQ\npcXgRjWOEzru3hC45wkNnNwwLmw79kBBdorSEOUHLGwjRwNXT+M7gXEJ9G71\nZABMgW7JFjb/WRQFJ0aarJnC0YG1EfQ0g0lOw5Xhf/VplzMO5SV+E4O2f+5J\ngPGHi2LxFcaWynt/k5diXdrEpupRFC3dcSqvsIfqiOvmZe6SBvuJHdh174XD\n9cJ1TIplL7PmD/hOgN0Ysmpg3td+P8xafac2b6wja3U+jhohqMQ3H5X2T0iJ\nI3SeZ/6DJtX4Tsy1j9vUcqbGauH4A3e0t24jx1dcOuHOrZDxmGtzs73YhxCf\n46lZuznH7eGcSZYRXCCHa21EZ7jhKP2pVewKGxKhruegUb7PIgbqsKytcAX5\npLTJJRQ1mX4cFYvCjaY3RtXtceXDLOsLfGhyI6M4dN/aaF6tpOSu/mNpJfee\nqA+UM3T9vh3CjcNyJUle85weXXRCFfJQYum4fh9j7WRc86B+5w5eRORQnrpH\nde+9\r\n=Odob\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHQjnIyoGoRc4G+CwRrcR7tHOp2J+CSTIbvTQ/JmgYwVAiEAmK8n9ripqn93gPldutrh5ntqdScAAnXcbqIRFbEbuRg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.3_1602599179548_0.13589106880196544"},"_hasShrinkwrap":false},"2.20.4-next-1602599284-6ff2aaaf.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602599284-6ff2aaaf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602599284-6ff2aaaf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602599284-6ff2aaaf.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/LhqFbH4bQHg5Di0DrRkB37GaU1fzoapUKfpE6znbI0g+IPIvgsP9/vJRkHfKodDdImgCJ9ZbakzKWePsYKHmw==","shasum":"3bd2beaa05045859a238e8d2648927d20cbdfbf6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602599284-6ff2aaaf.0.tgz","fileCount":56,"unpackedSize":105890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhboBCRA9TVsSAnZWagAANv4P/iTJMO2HxIRqK6KVi4yH\nPQyfKqKNkZKRZd7TxE6y6lsdFx7gqk7kDXYbf8dOT3mUDSiUVXkR8c67j/Yc\nNVCSLwNK/n7hd26NiFJsBeY2zbi/zEnt5SXPjfiR4kdwAWAcFdZAbulMjBK3\n8HBg2x+A1kuEvDLV66fhGQkofm2Epf5k4IzZWS5Jyaw2STEP6F6vr7gW+kGz\nrK2tu6JliFRHbBWZ2L8U2nOwBzXT3OIWMNMRITGn8RZwwjwjnSMVZJk7RQbQ\ncfLZkaxBMuBVS+INvv34Tj4IkVX0/ZoH8ZaMc6hIAi5MoKSyX5izE84eX9/O\n3spHk7T2WI0k9I/sEtQT7hAgvZ52w9ysjmZmCYGnPot105XppEPNoOEqciGR\nbT7K5dqaHlz/JXHJbxYM7A2ru5t5EeyESjrC6w6U/VfeGvVbsbcNw6NbZviN\no0b6m89HfOsbp0KU3y2pLZCfpMxouqFunT2HFsexpL6PdWRaqtKoHCZHzgVT\n0j3ZwCEIlTFeC41IADW8VA1btQ0pbKn/CLy3WWnwY2JTUxPWPfE3KAlHN8FY\nWmPRUCZPBz9HXx5KOjA3Hm+WkeEDdLtrkxHnp8Km9p5eVVa8inmUZW+ZjlFY\nGplUOS8pX7ryYKIe1xJNcaQcKXE/fsFuMJirxUvq6sRSYgnYkRQRB3MwfIJP\ndg9e\r\n=Fwqh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAN+IujzwiuMXKU388ZOJsfuiciMwY/mwphdRhE2NGX/AiAL4++djTV8Je27Q50QAN4OWr7yKre2nQ6zpIpTvgrIDA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602599284-6ff2aaaf.0_1602599425320_0.9592122066760711"},"_hasShrinkwrap":false},"2.20.4-next-1602599315-51d3275a.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602599315-51d3275a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602599315-51d3275a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602599315-51d3275a.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4/px6gRA5MCSxty6s/d+8ckcEAfdFLM/szZ1N+zRnE8QEbJwTbwVjop3WfH2K/EYTbXUeaMlIWiKyewM0Ngl+Q==","shasum":"97e856aedbb64dcd4d1473e9ce208669cbf4b5d1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602599315-51d3275a.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhbokCRA9TVsSAnZWagAAYbIQAIEcs8j0i4E1f2cDbN4n\noW+/kvuolZ2tXN5skotKsGO+unQIC7S+HFuNtXxb2tW/aezYabSBhBKlH85l\navITEH72DGsosftJewv6RcpyBxmuFX5XkjNT54Glz/TFO4YR50SGZMn13wzZ\nL5hQQXntGmJZuq8Ykc1/8+QeE1+5vs28qZZHhIJ5KB2PV4NTEMivvT//xSzn\nS01j20IdnnYTL+cPvJA3RTQvxtErHjgTXJf34AyBOpOUZurwfCTbn6KcQDox\njLwoO7u+OfZYrKLDBuP3KE9GKMelXBGQSbVtJrPGapOVM1AHL+oxFh5h2wy0\nFHrTlmDR9BssFn3qbLgvLvyIV4Vcp0RCYbSO8yx4I58gCNQeUBAt9paB6xHY\neQzaFHArrcCTYSuZK2RDFzjYhx/URZHEldSoCnlnW7fIl6R4BCff5JoUCKsU\n3H4SpCo3pWZgB0AOZJEeNNxDN+d71wmhW04N7y3NjVeF39XeJ+AwCjfmbYhr\nMq7jPEAxOfsbVn2RFtNatqq+lHtW957bfByw7lLOYH6mY1MhDg7COpSIAL5L\nwlh41d9fdE7C6PbTMa0w5cscYk4e6hh7Ro2o2jRjETUJ6ALjpRHU5/17RKaR\nxGbb5YSqpm1EXpReyYc5XkwafQbwuzY5KlEWlOjDx8HUMU2VnCsE9OabEN+G\nC/b+\r\n=9z15\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDt5CcJQv1DLbE0gBjaBPKKVRE4n3RZ0/SDj7XVZftFBgIgbeOZpxil2Uy4jWm3CQMEno5tElLeJ/zBBeuGy4BXEcE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602599315-51d3275a.0_1602599460507_0.4788001611054462"},"_hasShrinkwrap":false},"2.20.4-next-1602605240-32ab6921.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602605240-32ab6921.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602605240-32ab6921.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602605240-32ab6921.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-f/zNZxRa6cAiWRx0a8Pwpv2QF0kjsKw615uRnm/Bt4xMCWUH5Uu0jP9dzrS4wBf723rIt+LoBJVkTNtMCxpLWw==","shasum":"e0fa1c36c97969b0754f4da09c8c57ec1d99a799","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602605240-32ab6921.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhdFBCRA9TVsSAnZWagAA8O4P/iMSGB1Yare2YskgPU8b\nXr/5EAEDO5+j3zjPnO+bU9y12ifmxyfxixqw4IiarMaqGGTmTZCMsABUcbKc\nq6wGt9ehjMWMjVQfACzHTx8zy03tXLWWx1kIxmjFIvQ+Rwx4/0omZQ63H9I8\n7eCYb4RDsYWg88rZxEwOeAfRzLC3ZMZIONnbYvZcqgINF27vF2pmx4ZVlC1o\n+5/W3UewXsa2MPs3dHws7S9+VN3dVlcHbO06J6qeokWPH4ZH2tckqV5Gg7ya\nPSh959lGXP+O8j1SCQDbEsCUm5vMWJNlGhpIc7Qgc29yZeBCHy+274T0FdRI\nIAZVqvRnoimsSHczOyAqvFvEGiWjZ9Wy9iHutw9BHs7/3wUMhYnc38ns/Aza\n+iIqPOge5YzrQw5qGCoDSl6YdxpDHiX5jRRYPuYSGLkojm/J1iZNW5DSV83o\nwq8EzXIe11GxbWpUKeJ5E4p34z+TIJKza/fJCF2WVxSgZ75Tz19mBIhBSRlw\ncnl5hLZH4bl3LJpvSaybPGLfT6Z6EZGNl0RFOF/2Zn4FEj+FTMbiDEhg9bN0\nIFB5HZISvh01ZKzB44vM34+EJJdXj0V9iZxbCQPDyCNgcw52K6a107aJHY8E\nuiqntMiv/UOSfUeE4A2NlGcOH9JYvFqRdEG2RwR58vDJxVJLkgYXuERZMJdv\nXtoM\r\n=WYWw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmizRxjyYzZRyQyn2vnOKNQMhBUYx/1IlPvN+29jYusAIhANaZB4DwCgEQ8NlFaOoPUv9hM8jxUjJWAZ287omUj8YA"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602605240-32ab6921.0_1602605377263_0.7365735642581772"},"_hasShrinkwrap":false},"2.20.4-next-1602609929-6ff2aaaf.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602609929-6ff2aaaf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602609929-6ff2aaaf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602609929-6ff2aaaf.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-H/AK61Ci48xv+KX/66cxYYfB7Acx1HCrGbRwaH0KDWuLRi/fKYfODM3r9AWvd3yQDYV0tj+ZohtbpcHtXYAYNw==","shasum":"8f53f29e9d11232651f58a9437cedfae8f005cc4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602609929-6ff2aaaf.0.tgz","fileCount":56,"unpackedSize":105890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfheORCRA9TVsSAnZWagAAV/MP/0uk+IuVbw07HMk1W74s\n3o63NtTljCWMVOqVTHJvZz5XQbYH6lMc9Gx3xtnsgkS7/nZIVes6GO7dvUyW\n16aEmvBittRZsogOWXIGzajgd/HJXHixRhm321Sv03+GCXEkkgPURMmgCCm8\nyP/44NnpxMQN7FgSAgRliBFyT9Cx2H5ru5/SoCWRkdzIAIcrBYvSBYKOgSVC\n/pJ0+pQ8c8pvAuXpG84McR9TFOgcmoVgTZ9KrEG5YkF0dG44OJE5bCfbdrtu\ngChy3Vw0lNxU3eGMbkTZ7yeEV+vvQXXC8KVyM/dyGQVqBor3fA9+AZN+Fgxi\n01NM1HBlryZdsSdkShEUbnY1yMkiibnnurGmE4uBTDbpNqqm+kVYEVsoYM76\njdsRCvYT8vRZ+xMdVrrRCPYruQwITiYigGt2SY4VmvrKrVCW9d2eiRyxEay+\n5ainumz27c6XGBmFb+rKkYLQLujYMoZXpuGM6EVsd/8QYJEvkgP5NZ7orpm5\nIsXdpr3J+4ZbZrK8/faVxnei+TQ+cf5Rv5i3NX7RuuWMHwxggcMe4F6mVH+s\nNnbkqn61QJGxCi6L1Jr79xi+UblkoA/zUzjqwsaaUmd0itMUAk0zhbWG/EEz\nVXqtTKYwvbZAXBtwQAYo7P6qIBQTzmgZocEXiGT9tBnoIp83ILOwl8Ezi3lS\ncuLz\r\n=NAdO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9ZRSoESfPLmy8mrjkHJnwiWh6+Qm6bqXAGCj3F2wt4gIgdMacr6RmcsuC0lhiFIN2E45izAm5IjcPOBm8hE6p5As="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602609929-6ff2aaaf.0_1602610064976_0.021862874331798343"},"_hasShrinkwrap":false},"2.20.4-next-1602610832-6ff2aaaf.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602610832-6ff2aaaf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602610832-6ff2aaaf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602610832-6ff2aaaf.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jeVhVcFH16AczggGqRWbNJf88XhSAbScgx0u99ZGtcQFsosowUTPR6x2KeDUhSQ2XnjRKa+ba3XteacvjaEoWA==","shasum":"543c443a5575d6acc3770f12ab43b5436bbfc740","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602610832-6ff2aaaf.0.tgz","fileCount":56,"unpackedSize":105890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhecUCRA9TVsSAnZWagAAHwMP+weI8Jliz20TGA76cEI8\nZRKEDM7PSt8Lci6hqPVFdZuqms5s8OGe9loydnNmzT/hCuA/y50WLyUcNeY7\n4pdzP4li3+4mcr8HTMyoxBiiJTvTeagUx781vRbMGcbPpTShClAHWERF7SKB\neXJudlf7hXMviysazk9T4PYZ1kIgl8V5nl+E9uCAJXtcWyGj6mCOJqRwyd+6\n45YXHjXXPbxFh7OppZLe7QpGTUUONH9VNL3B35wOzMni3CWEw/QhuAOHOLOB\nFLf2YlPBoLwv9mVLFqHa5ohlDu7CPJx0sWb/wMdqMx5X4tkp6fLvy/5xOycy\n0ApuIAzKov33fyf9dw7oLJOOj8ApBvVabAga/f95waRSUjFjW4ztOsfkwFRG\nAIjHNqpvWysmgIWEafQxezxVnqiwd/99isPtzhZoNxQr2srXbW9zbDroXYXQ\nosWlmI2FGQGAt1crSnCRWYNwcn2yWhY1iYORBG9qw+JePEwoC06RHc1W/zsv\nhE+nJopc1fbhqd86EQZrcSHzjfUzdo0gFHPqkYoMuZA0kcVecRWNV1niXVFG\nNhGVW2W2PNqJwlt3Cwp+rhuqiqukUUwU8lmCVRlnTdmy3+nxCbBVOk476Lny\nhp/iYjRGwjOEJ8luaO1cU9hZskndtSHKm4PLQxYamX5If3IFeHLtevYawEyO\n1R4z\r\n=73tP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIERwxLv+glCk9u8STQFefr2RBSE4Hid2R4lvpMCo0fhyAiBQP64jBPEEjCs5nJa1VylBj4cWJQbZryqzjPXcLa/mgw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602610832-6ff2aaaf.0_1602610963761_0.9187773169291102"},"_hasShrinkwrap":false},"2.20.4-next-1602622680-a43c3d0d.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602622680-a43c3d0d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602622680-a43c3d0d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602622680-a43c3d0d.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-G+RYSor0kYJWoXqaK+oRAvO2d67x49VUgCvOvuaSXWL+j+hmUB38tq8+lmZZ5mB9Q6UmH+eKdHgjqFUoLcnzqA==","shasum":"9d19ba61143fe180c097d4de7604b1e94b9131e9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602622680-a43c3d0d.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhhVcCRA9TVsSAnZWagAAY3EP/1sVQvv9gINZ7TJtBq3F\nAlbFSeHHtWV+Z2d4j5hXuiSS0lFi9VsTl2YTwCxw8MZAOG/Ri9I1ZtGp6H0L\neuwy/SbeZ941yUyz5+5AJwqcJiqXu77rqfJCNU7EH0BcngnlEqIzD115/5xh\nQFci8Fjglc98E0LPE2EDHAh6KGUp5TSL2fGkP+QSEt7gGEL7zDKr1cSKoOXK\nHlTJEMvVR5UmXquRLqj/Hc/tqIJjCuBKKsccWmL34JGU7AuZA09FQaIuK3P9\nU1onOQHz3QRVRaYdrc6jZCwVr/2M22l3422awdbHGRibiNnsQURpDAbw2KrH\nIwoIg0/fTzewA70cN+oYrRZaFwQE3gbe6qKQXyGwhAUpXF6FXQPsWJYwMpxN\nUNK4IEj4E3PYpB8WUIvJClAfQzMM+NeFmP0cZ88SIcWDrbQ4PMiyF3vAc62Q\ny3Qi8XkUqyxYS8mHeIi15s6mITlnlCDr3+ucJOU5Fms9nhzsn0BfgeARTylt\nFk+ciwUvmHlXrEOljqWtgCY+g0x2tx+ys0tZ8pgzhOoQmGB4cf4vmF6aWpRE\nf0c6tFAJnW2DHiIHpudvdZroPwTglr7MG1aA4zX5EUQrMBP4UKH916do3CAv\noPC4eI6cNDTb+Y48icyxTl12EIbAgIQIyV/dVx/DVnbeZkvSRLPp1q8PjkW5\nMMHN\r\n=VpK4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMknu/wGKL++liHI7nXUwwlkHPpnfVMSp8dJNv6HWE0AIgchP+NBOcPJgU4QEK0XbF5ng0cH4qTFZLrtsX5NVot0s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602622680-a43c3d0d.0_1602622812358_0.3849803574588455"},"_hasShrinkwrap":false},"2.20.4-next-1602661539-e72e3635.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602661539-e72e3635.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602661539-e72e3635.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602661539-e72e3635.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3axiWmSqu9cKrzytB3YiFOmbOnXRggHO0+jaxx/vLj5a9uM7QKZeUc6r6RrgnV3rKe86t2Y8fsCEZzwOuINrvw==","shasum":"06dc80cce8d9b6bc26c91d19486a569893d2703e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602661539-e72e3635.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhq1PCRA9TVsSAnZWagAAHtEP/jiFnYp1tGtM+KH4dK/f\nrC39hp6W6SMr/r5taRC+723qf0soLFM9A8U+SKcTZkjSc8k2hMnhKvrY8Z47\nXQ8tgYLdZVo8yPt7DoAgimIZ0PndvQeLeNm9Zij48YxGnVKwhQyJhXZmiGZ5\nfdrK89uxmkbS8+iBwMIZt3RpOmnCLs+bEAw3JYvMerMQ1aUK2Maz9TYLMe07\nPPVJKDrIUWTp/KVCcx0Srmq+SfSyh3U5SUKcUKFOSRLE04V8jTPOxFEbdQyw\ng8hitqhaw1VDzsrae6SFvuAj9TdX/bvSkrF/eoDGK1xeYziRpgZtXgdVcVSL\nBGxJAizi/YjHOvK1lYeTqDhDqzkLpyf5dumlWtu4adfyf1Zq5Ado3jxRFG0t\nwxM8o5ZQt0aLLcyyEr1frnGi4RcZOvkXKm0ODb688urLn5uL66w08OXQBwx2\nBFZnG8BI5sEGqHh/BHMd/Wx2OVN9/twe0rt5C2lFLOc3Oe0/xavy5bCWpQ5t\n4u8dnEeSoTnZOUhyUgs3TxnDPgI6YW0WBRl1Ap7OOvUzhtg+m6YvKK1WcMW5\n+1lsq7wVqjW/ipYxRBgnhi6Yev2WfluxkXV+to0DfP8KceVVMwB3Yn6yfY2h\nQ6X9LolUGtQ5S/TyCxtkar8TIZ+eQDGzIIJ6J51And3e52kOE6Kt9EDZp1FE\nzInC\r\n=d/FH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDG9QbaqegkTjNud8FF9771YgFfPwFHJuP7CSjLQsElzwIhAOilWS1laSQ0cmOm0edArvlGB031mzRed0PF8m+Kpvvw"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602661539-e72e3635.0_1602661711314_0.07992075281327415"},"_hasShrinkwrap":false},"2.20.4-next-1602661871-9587d627.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602661871-9587d627.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602661871-9587d627.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602661871-9587d627.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-H1r+ZJ4NFHdvfHNe/6FskWg+hEuMbvCg8QHMnf3tEeQ7XKzetC0rCA9NRKXUIwBeVhJn57K6WS9zZuMg9SVBQg==","shasum":"6e2e6008899f4d16f6bb215f84aecf00afd1fe41","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602661871-9587d627.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhq6BCRA9TVsSAnZWagAA5PgQAJP4OnPvEUhRe13gz2+G\nZUif8C/HR/CJTl+6v09N2gciSio5vySO37Q3GcUudQGJEXSSeOBjNsWM9Ud0\nFMR7vclfa/eWoL5iosRrP+J76X+nzHB5HZ4zUF9K6Ht6wtG7hbrJWzdxF3P4\nyoeFOyRc7sJiA7UZb/qlhp8bS4O9Hz0fwZIDxAjkSdUVyIQOTvQSSHv7Yx1+\nGhmHyN4vyxWbTnz7PQniri4u7ph/YpqBHfAZLKqZGFZwf9Atw+Atc+90NUCA\nLow1Zdro5nN7DwseIw4S8TaBbaR/ewSulFQVnfNyIG56Y4E6V7wNkfVS0WEr\nhvkzENf5oF8lNcJ5wPVR7U5tZUfxltmInuQe1iFA3yrflbm0iKs//iEQKeM9\nmwqpZFS0nAd37DfUX+YXXiVcLcnHuCap4Oq3zWUZVWoE0XNZpBsJV28+HX/T\n4Fpx8xOHJdigQKtG8ZLkSiJUDn8bGl66dzH8fXNcCxESZUtKtyUo3UTMtRpK\nR0hslqyS7oWvwFn2FkBVjhgT0H78dHu2gCVvHs2jvrLcjY3HcYrnEBfDKKVJ\noxJ0fvr5kw3G72SDOWCnar2ehCTQEALD0QnwJQYFe7B2vavf7WrJdA2YAoXC\n7joX7J5Qedt/8sifneDtqo7N96HKE8s6h5ID//2N8Is0E7DgCTRhbjypV1KX\nKI8s\r\n=Wzfu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9vyvyNO2yZcgVgT4jFa2dTA7Zr4t0Rxibu+ZnVsZOLAiEA5ZT/Jwo5ilw0dsYNdGfL0psKOpe4ID3gnUFKfJsTXYw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602661871-9587d627.0_1602662017084_0.8234997396189396"},"_hasShrinkwrap":false},"2.20.4-next-1602665620-e14be171.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602665620-e14be171.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602665620-e14be171.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602665620-e14be171.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dRoB6asaHeheWlIraC4s4P3CWb+7WkySDg1rFAhi2GZvondogEbPzCPzdoJjJiw5e0Xkn+Wt/gscT1fCBBOngg==","shasum":"d0cefbc6c44cb2eb120a0be2f8dca3f97bc1fe90","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602665620-e14be171.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhr0nCRA9TVsSAnZWagAAOzkP/2t5vRNqBG+VcbQlNRUW\nyMzMlSH5LyMiNGCUi3OoZipzGwEuTJst099c/CVtg/9iqMqZrU/c1MkHooY8\nEUvItCgXnQQRCFsaKMnVeiJgLF/TQS8eN/P/Uk/Tt9bB8LrQ/JPRV8KTMF/Y\nVfvkjUEpV7UcA/3HpctlXARG8Y7QIpk5LLtlvmElhjfl2A7gveke8pbbjExK\ndw+Dv/PyEATZ/yNksh+u2Jx35xBl0/07nSUBprr17jY5NRBC/wyfqBP3Ypco\nCRkWBeHjR99dNQdYskdve79kMxQXeYgAewKz0/1yV0ar/XeybSW+6TY2lAW3\n5X9NP26BRNTBFLEy5rnId0J3KYqqjr2+1pwpRY/K2yHT05jn+k1aUl7i6/kS\nJSOlTyLCAeDxGNE2WgB/B0WOCBJer88wMayUz0g+zSnFfjHD085cF89Oc6Qv\nRJRzBcEB17tLbDXdnsQE5La7wFdmRSVIHrTVasNfYsaqFOqxar/ovJUva+kc\nqJKChOE6e5EsZcYKugQaIjxlfLHFqI6Q9uyRjLWJGd+lHojyvx81KWcfzH/z\nGrCCbEC+CKQ9PM9jN5fmOZ/3kfV3T6FfbAs3TWbCM7Xim0wW+S/ap/ee2eVY\noGu6SHsX5ZCxgCFqtSmwAKycx4gZ/5NjpmugImW7UHx5ZaqjfhsDKe6lNs+R\nFb7/\r\n=ChGM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5m+G1PlfL+03kh4U6JSNwWaPK74GgNaN1iZZO70bB6gIhAMgxGKfePr7oRKFF44XnX/1UKQD8GCj2o2wuIWajpu1e"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602665620-e14be171.0_1602665767293_0.14051825277485497"},"_hasShrinkwrap":false},"2.20.4-next-1602674471-04b38d59.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602674471-04b38d59.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602674471-04b38d59.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602674471-04b38d59.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QxyJwjjFWz82/JETBxYBxgr4jvxMCLTEk0Nu6PdoRymvOBABXILG7JFdjO8bG3UgXXwuOPXt1hgT4rgTg3jOWw==","shasum":"3dcc223119a23b0bfb6d6fd5883ade6c522a5c54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602674471-04b38d59.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfht+5CRA9TVsSAnZWagAA9+8QAJeOtfWEyVYzerFms/34\nCMvVnb2vurOa1xESTUExTV4j+mc1y6Fu3LwawvCNlldYLKxxGJ8hWiwrIBvK\nVu/jeds9KaMwQ0IVz/b1VSyautnVoHTDpWgRplKqxkpEYPfe7iMH8y65vGx7\nQ0JwOID6PlGONss6C2Aqm8g2C0N2XDg5NvwcSp3O87/MmYEAaePYmqXMoMSU\n0M+U943m4hHGrxtq/n5T6hyh0QUr0AJEZn1ibob80j0TJmzzqvOC83EQF+ZP\nJoFM6qw5FLOUOU5/ytTTFOKrTYz/0pGTahw5xt1r30MkBVAzS3egVGenDpb7\nykKnCUOSU6gVyRaYRD62Chft4cIVYrnljoRlmy6OpjMsyq3qhiwQ1tPxJaJy\nbCZFrBRvoPr1WlRL6SE6Z4jEdbjm2hbdSrXQGjP6VeR9DrQJmbzI07JAjW+D\njRHLMA7gtpzqMlV6lhc5z4Fx35uw9tFCzoJ7Pdp5EvYjEY80ZRFZvw6DCd9s\nDTpQD1eBcqI4gGrCtw+sEZuwlZX87JNqwDLni0OMBg26eHKWJ1F2Dmbsx+E2\nzlxX9XP9xaUsDNg568QEk0WPH3qf6J/s2CvNQY/F8jfvU7Wu8M3aBqDPgo76\nzzaHvXeieOOU1KktbZbXn8cxT8XtId2dwM6XJf6Ci9RY0srqFb6nIiJIW6AK\n9B48\r\n=LFcu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGnnpen69bCext+Tw0ZnwCA/ePOk2vxgxT1PUEZFNgQgIgLjq+/tLxhXyy4Y/vcninLaG6cj0BL6Qfk/P6mu3VqPI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602674471-04b38d59.0_1602674617332_0.6619605441221426"},"_hasShrinkwrap":false},"2.20.4-next-1602674471-4c119cb8.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602674471-4c119cb8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602674471-4c119cb8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602674471-4c119cb8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-F5XZXcbXrQ4zhCfSWHS5M/31QSyf0xEjwcOrUTBAJ/V7O5Pm/K7CoimAWNAV4cu75diGIXg77bbLfdl4KKqnaw==","shasum":"d6b572f542bfee175f5ce78796e1f0385f57363c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602674471-4c119cb8.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfht/YCRA9TVsSAnZWagAAD/sP+gPps1fPMrCvOWEarTxn\nuMSVSco1/zx9y+ORN/8ce5UdTcvzgAz4SMXxHkEgkDc4T0jEDxCWMJXyBpYd\nW0l0EsfK0WdmZswKJjAhuMOwWKXIvgeBF2HFnPYV+GnnEe4kVTx73C9UZnxC\nhve7PPro6aq6xDRCEeBTDLuqcq4G1xqqprwH+3LpqT0XRkB4IFqN+z19lExe\nj+1VsyGPyuU6TIyC+1xtYmnnnNH2HpJAv3f67kYxDp89lIgf9DT4w+7AGPIZ\nWOECL7qcp4iaCUplxAnTGv0aElyT0kcpP9eSxxFnhhScwfpTpXpafGHyAh8W\nTOYZNVKpd6FPDJW/U5RQsO8kkNA2RHFtnNUHj8sWPJSVrIZnC9mfzMIrfSw/\ngzdgjWakC3bRbtgJDo2XMbSh845V3nRYv6+OG78mZMrhXUt2J56R/RL+z88c\nEI2ny74YAPh4ll6uHNvOVGlELMwQ4v/N8sv+bGRPCZnOCgkiMhVUyeaNO7dI\nEWHKIQN9zvBDfnqzxI3FXWCvXjmq/2xtcVZbjg286uIVd5vvdDp1fRE7J9Zd\ns+O6lp451n5cvcT3BiQi2myNCF4d+qn7UfpBE/ZU1ayPRAK0cbtLxrznm3hj\nVwMGXCwAbedFZM8unhmkjPQVcZ7xKeGlN3W/jbyoo3M4p/CCgjR8l7j+06Qo\n+wO1\r\n=tC4Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGIqsqQ6tFYNFSebEmdaoKTOlJNBELeDuH656y3miyKrAiEA05OPEaCuN1T3bipw8dOtwYzkT/+sfnPcZumbw4uYfYE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602674471-4c119cb8.0_1602674648162_0.9179904255196161"},"_hasShrinkwrap":false},"2.20.4-next-1602674817-9e6cb78e.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602674817-9e6cb78e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602674817-9e6cb78e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602674817-9e6cb78e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QIQjdlx5s6bLVphLsZUW8zAKvJpAGZheD4NyTXmJ2BbwH1SvJMZUFUFinvKH6Ft8Ck25Wqgxa8J8ZQ63WUnKaw==","shasum":"55f348395440dfd6a447b67af9c6cf08da58805b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602674817-9e6cb78e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhuEECRA9TVsSAnZWagAAnD4P/jXh0uOIBkrAXX3WsVlk\n0WzW/LB/tXWvHVKoiuQNzLNG13QN5IZEnQB02lfsDfAmGWyEcPogpphp5f1T\nBhWFsNGVp2iMI+EH+zyNlqnnRyqulyaO7Xqwrg7eA6ojbKdJEza8B9VtuWrz\nu6N1gYyINLpSW8oMp3IWeFedaVjBs5o6cR9/SXIR3u4HZZpYfV/nyWLmteTM\nS81Nd2k5GUG2NORoLDJuxhJ5HPcnVO5+qPyZyEVCmzRkp2RHH/sZ9bwnI5R0\noIsZxSnEFUIk5Pr4fxpzMgrIbx1MVNHSQ+hXGyvqJr454JXa1QJCxpo9RK+0\ndZywK/bLczjIRgqSWaeie4vSBj47JHWpLeOMkKgk/7d8J0ctgeLzuw6jeSe3\nbfcpOQdVewo558x6JcP9giBSzZ4gMC5+JNmxSsFUfuQqJrlNhQg3ry7TKI0v\nzL/9CudY5xE6Jc4IDpo0Odecz+QuEewqwMVtMlfwXry6O7rfu8ecQ+LRUF/I\n+zX9iOecQaswFAPMyaKMphfnZREh2HC/QcD8fbehUN7l9gsBoTdCUR4Lr9f3\n9mosM9Wu53wdIMmjqsb+oidgGKDj9MiAcJDC/fUE8AsyogBBedpA1TnlMLqT\nwcD6gAf60OxO3qIOby9rlFcoQHLj1PRdTYIPdJqIJHZB3BjKNsHE5NjAYIMy\nKTY/\r\n=E7k/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaAVQUop89V25LsZ8Yi/evqQH1B9EPivauLOOBwyulkAIgJCtn4gTePZO41kPbqJw6F8F3e9yuX39SGxIY3uptbGg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602674817-9e6cb78e.0_1602674948030_0.9005579147757883"},"_hasShrinkwrap":false},"2.20.4-next-1602674825-77b89da9.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602674825-77b89da9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602674825-77b89da9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602674825-77b89da9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Q0zhXE+0skqiYXKhs6F/pis+cPQl6I9xhPKW8iX+no2IPBuYdh9KCthIFs1QoGa4/7liaa4zywldUvdBuiQFHA==","shasum":"139959ad79dce8b2ab435588e92609505426c1b0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602674825-77b89da9.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhuESCRA9TVsSAnZWagAAryEP/RNKdR72lQTIUchKvYQJ\nZPAN0loUxxxamafKWFT7vES5kQMyV7f3hz2QH20FZW2Cvl8927iIdabKtvs0\nHDF8VLwfdJzaKxvtAIri/RmCcLOs3/nz2JJI7bmFR8Mu8h2tporhANFpHQ4G\npKKLMTwK0SUJSEZSzl6y4pYvpB3MZw0QxEvlNiJPaQ+QjHDbYKtxqO/U3pzj\nbl7k39afJ0ozFHErxuYovfk5E8jBjuj5x2KhFEs0MRV6N9r4j5h0PcbwJaWh\nKIl1Nh/HNrfAKchdxMDbLxLabJh1LcCdLdyAOyuHVLDME05CEgZ7T9VdiLWI\nFI92SKECAw+lPznhir/jjNNTyO6gpznfMy9s6DvYMZPGMyNu1+QvQnQv/o33\n7t13p1hdBpUAdQ46Ip4X3Cgm0xuAw4zHx4BdM0kSbqXydG0mICzVN0MlTrpC\nflEKcSu06cb5nXzrHP3s8wTPj3buXePaHIvsDqH0V9BnhecdhcZ1WVcZ58KZ\nJBiK7T9ONPVxERvXL0mM1w0tVcAwlJiE/d/NkRqyM1etWGAifi389F5lKjrH\nZVB4pYlNr5qpTM9/31zO85p7Ro5xuAk++QhyxmPtQAAJgJ4WWxf7ctlAnBQL\npimHpy+bzcELMnzhTWWCeOu8auPvJRxon1REXeQbbWbxabco4zkbr2ovbbYR\n05Br\r\n=K5YD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCw8LAMbX32LiZr9UXipeuCbM5OSeK34b6JoMo1AP2RoQIgWTgZ0XpQHaskSD1gTJ7qi6LyMa6Haa//LMqS7I89/BM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602674825-77b89da9.0_1602674961681_0.5396728739227132"},"_hasShrinkwrap":false},"2.20.4-next-1602677094-4b6bcbc9.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602677094-4b6bcbc9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602677094-4b6bcbc9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602677094-4b6bcbc9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6a3oYf38hQGgRaqcpfBAcAQ8ywkiZKeaGy3t8WSY0bXUG4vLAjcrYbTc6o5rmhJ96yayef6hQ/LWdwvMEHIMlA==","shasum":"7fa1a364de6173525e9c86bfa0f304dafa59336e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602677094-4b6bcbc9.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhuneCRA9TVsSAnZWagAA8q4QAIKQ8ehE5o34aQXhqOBz\nyBS6m+/or4bJmYdOIJCC6JTLl/VH2TqStSAd5N3zkbpDW8sBlZ+S4LWZsy0O\nOGNjat8DRHJhksntkQb2ZfLFpc6iaZ3FBoBWaYgUs/4UFfq6PJMA2N7roHN+\nFVXqMcEj0uXB5Uw6hupVhGNW/7JDPnz+dtrM15j+RGbRvh+SXnEQj65WCSj2\nRzmPOX3ydOqHyzTDT7eb+e9AWR1lGJo3bNET1+9KbIhHHEWg3PrOuHhBjkwU\noyTzRm6PqnHjrwF+GuNElp1q385qsH7ZTgmjvgCqqZNIHUQwBS/3DUT+lOlM\nqVnIGBYNqn5tNxk/MzGEvHgPmYH6+x1IaiaGCx+9HmN2bIC7jAKMNkwmGZQ3\n8m5AcGLJKtAkoHEumeN1soXra8LeRQQeOWdAzERu++sARkZ6Zeg5Yp3Sbip9\n/xTOKba/aWKOfMVVpj8dsZN1s/TgcHLgNRKH1wDd09lD+OR3Vubi39zlqR9I\nJwbnbi+jOsKseqhl+Lh301PgMZxvKM2VGYpp6BpMdFNLNQy8X539TsLJnJT4\nR2Kt89XCVGu9F040WwdA36z8TFhCCaZ5PDNhMOMzFzsYIvH9vVREe0iYh5Px\n7n5oU7stETjalvUX9Db6DWdBFbdaE1Vl7EurW7LlD2hnENck/4txiL9iBs0u\nfS2/\r\n=nB5w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhPvHCaGBvVdo+ZtvTYyiCjt4ZxYzon2YaY6ds5s+tLAiEA7ug2xNb6Ht0sSPIEN1vwqHKdv0W8yAhoNt8uAiXBclk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602677094-4b6bcbc9.0_1602677213900_0.6358976657742075"},"_hasShrinkwrap":false},"2.20.4-next-1602677082-21bbfc35.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602677082-21bbfc35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602677082-21bbfc35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602677082-21bbfc35.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Uh2dYLEpJ4jf0wWN0OfYzAZmdm0kUqAhsvEplBFBZK+BmjQ8WB5b6y4cjZtkZEa7GZQYXm4bn4PA+LSvG6O9Gw==","shasum":"f90d9bd12ac33ed08edf128267d60a681beda319","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602677082-21bbfc35.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhun2CRA9TVsSAnZWagAAeOYP/2cyn5CL0PbGCkQWpnvP\njbWj50NjMvVp/VX95IfNJhODF2jVJ/we/02+g0Lx1yoybiwcY7MWdh0SEjRh\nz7s/g8nZujosmjY7oxb8/PTkivQ6GGdavZS4MtVUuZ3CuKtJYtie1VqVRmuv\nFCuHT493aVmYjBNL69htv6ec9r2M8jLSM6KMRCcgCctHeRtlYRP7q9lCxGjS\n22w9jWBxexhKQpuUDjetTn0tmHdBRZzt0Y0ExWlShaXzhnVLklbR7OKheUkh\nmjCnRnv9WvhQZNWgrfyMr7g1fBG2JiHt17fFJFSqTLYInWstmVyIpipi2/fF\nFwV4fTrvG79sLj6HVp0UR6+qTq0PKGEOB6lGeBB7AjIDLM1mcZPP/rqMKOvF\npRSNPWAEx2aSs35dn3w1WqFHqOFFWD6TYH6vnVg21knb1Mqfv9iXRYaeQvjv\nsluqyHb9OsgmpHUnlTYKNSq2s6unHo/Fy6OcoViJOQUjd5CbCSy2h3EYF8Ex\nEVWSzp3ycxJ8fHChBeYtmNNYmYWIAO/aq68la11bjaiCtW5NAyTbeWYMgpps\now8iJe6fpzzwFpjK0ezFTjxp16eekWF3RDi9EiqQURfCiRqalQDEPIIShwlU\nuvAntlAS3WD3vxddWymKfVToiid5ORqQi5S3NhZCOpZZKzdr9h+++pZjOL1+\nHSsr\r\n=tu06\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFbRW1hEaBnrgJHsRcCA7uhnl9wXV9NLasVztA5DUCyOAiEAlA2FGNjrwBaa6FxwcUrCIqPLbmuZ+7UDewgSE1D5+wU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602677082-21bbfc35.0_1602677238170_0.28931840700666056"},"_hasShrinkwrap":false},"2.20.4-next-1602677809-6ff2aaaf.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602677809-6ff2aaaf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602677809-6ff2aaaf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602677809-6ff2aaaf.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UUm0tOahVw3x3Vb+JFDBtJLXgBM1+askhZclOb8/H8p2Jyu8xDDcryHCxr2Ura53B5HzO8zN1Ef71whickWn7g==","shasum":"654731ae942e1f1ee6b2925eb35cc74813fce604","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602677809-6ff2aaaf.0.tgz","fileCount":56,"unpackedSize":105890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhuy2CRA9TVsSAnZWagAAUmwP/0RVpOZd4ztrc3H3o98+\n5GLhAx5Ogo8u/v7F50A0SCn+2se61oQklvs3yD7gdX3zg2XVgw58oDPnJ27+\nLS7CnHfJQYTJDCZK4JVSA1u1AXpfznq1GEtdyz5sM3MgBipTxBdZHJdoMXjB\n524mOYxmyBgKZZpHmV/f0PlUHjjFdOHEyeKHmouGGyyivUXVp8WLQ3s3eB5u\nMXJPi/UE+Hg5fZXEA1apkHqQyncqs40bNg+JlNp42DkBaCDtRjbgQaMvRkhK\nCQiVttD/UEdvNCZ7WtrJAajumGvrOY6oKhxy0z2x0Ic/8Kh+dIDVAHE5bQTC\nb+omLO1OlNjVRA4nKtkj6pLFMq0hbhekvhVzjufnKsThRl1tGa9i/+QxC3n+\nlmPm2k3YFTUNCyKyVTclbjKEnRJY+Un+pUMXQUJ6+3WUzGCnXOauA5ckDBL8\n+Gvg2fkq7jrfS5wH4iaUCrCuYxiWIILgv/rOmFHvHRwGcXJvXrKGX8UNgJYV\nyxaoLDaxBUG8tOtVPLuG5EzTOxs71PWQ/afqKhxE/KOIxbirW1LnDoIQVjJM\nEH2a7i7m3Sacbj6hduxz90Bc9NDhimCECXeZWxVf608euybzlGOagK9tl42N\nkyl+sm3XzptNn7/g5zP6rgSjmsoBbt5VSqBMqpugmPwnyb7MlWSrMAP7CPVZ\nso+R\r\n=mpOo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAE2Baa/3CZ7cCQ9LfOomaExW/EaGnEtJMo1hzWa9HFAiBnkG9HCZ/BzDPmyPMmLg2UF3OejSj071yfbe6qtmF0yA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602677809-6ff2aaaf.0_1602677942181_0.003508986781361134"},"_hasShrinkwrap":false},"2.20.4-next-1602678193-c5f76981.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602678193-c5f76981.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602678193-c5f76981.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602678193-c5f76981.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Srrj+R86zkPvf9C9GGOIcV4o6CoduhwH2aEIKgp+56CE/to6kk79+ocz8FOeBYMH5XmFP3rbBU5dn/0EDH2fiQ==","shasum":"6124508a0c2a7801f80dfffec32e77d683d4cb5b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602678193-c5f76981.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhu4zCRA9TVsSAnZWagAALy0P/2RLNfifHt9ok+dh5AgZ\nOCiiKicK+wXh5AL6/txVybMyl50ozCdI3Qqc0BHKqaTCE1jyZN/QEMlaG+wj\nOQSoudAP47ZnnEm6n3x1gA1FuQyGn1whsISdyc/rejoJUO5qOv3JnJ8feG3c\nNCkzF7gzAIyDCnVryOmUGr0Hjp8KcKKYWMqglslwYkGuEPqyvCurZfjYklEr\n+llUxtSU/YkyIBatp9cP20A7w4uaQMKbu1i2w/NYAgilHv99jgd3QNTQPlSa\n/NsOx5m2kceUlOmNCZzqeHhkHQ2YyAgV5QE1sWKg6TmSjZ+5n3uvVNiWcpNP\nm8ZWprjf9dYLdOcrSF25yUO+52AhzfM9QvjxOKMgWBnUV7AGlGR8byXKqoGG\nxQsVPahBsKOtWbLmUMbdpevemr8CPEXSrTczZUdGXOzRhJyP461Hux41m9VS\nP/aOC36yM3h472iOBoLZHmVQl/BfCLwiQDXCo6Ta7Se5YQtwuie7PkGOFZiS\ngIhzRXxt/amh7mU6N0hAlqJUqLEIAGAwV2d1ogoXw5HKafEwFJ9/ATge+f1b\n0i8mbU3hCJGqc/qQOQns1Mfay61xWn45qMvVwOK6EDpJRjYeH12WhZp+cgiL\nioAqCDT2TR/KLoF/V/PKDsmNQ2ZzCmr1MECdsXWBox7w54Iw7vpx/H/FafNA\nEB4j\r\n=MFFm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7A5CJl/x+B8aAQ994aFg8D1821zonYH+wBgTF2UqDkQIhAMBvu8WXufLKm+XZ8VIU1vSN0qUZsKnr1T+c8Q7nNH/l"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602678193-c5f76981.0_1602678322981_0.6036145871076928"},"_hasShrinkwrap":false},"2.20.4-next-1602678392-21bbfc35.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602678392-21bbfc35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602678392-21bbfc35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602678392-21bbfc35.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iow7UfdYo/ZcrgTRBemgCBrADKjIf4wbSjAsl1sxIc59rSOg4/q/fxXeMrilGY13wltuj/tOQ76TvfMZniaevA==","shasum":"2e0856b8d9ec91c4ac694f71a705e0e4c16e0399","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602678392-21bbfc35.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhu8SCRA9TVsSAnZWagAA+KwP+QDJfCgNlQMAyd6RO3aX\nYgl4k9/sz3KQwdQP5ZEXio52pKdUral++QxBa7FlT8GCS2FmYwSi+4N9yfy5\nKz3sHAz3SIuhKLxYdnDaJ/k3gHjmM2f/AdnCWKZm2ULh56aTOcd1A3r6uvs/\nzwD/sFyUqCmkI6K31PHoCmhwTDKlvdkdMCSINpKxRCXrlyt3JWwWzM2C35gf\nhzhIbbUVPnyGob2eN5X9HG0eVkPS/x1+pxAl1lGP5Ehs85+4nt6CjaEQ0/fe\n7ufWTms2EG6xo4CLI3I/IqWkdMW5mMWJggJb7AMwkEIFXXdkSqwRX/CjzvjM\n5VOmpps4XY0p0cpxm3sx3kqNZFiZ5lW7J0FSplnWFxLMau2S1FoqWYk4pudP\nsY9moDVa03iK3/Im2WsISsInl0by2CJtDruAx3eJ8aC6kYLtOZbxrvZmfrlW\nODJ3sUVRkcHqeqIdIkMjzfZhEB5b70FI7U8qGvSi09s3z/8k7aA+5QGcI6oR\n829UAm2tJTmDs6adyYG+2pMhSN7Y2I5aku1+HxBrbO9TzgRKJ5NzhsieK2qe\noCEk5V4nclwsiOrcn4YkNJDeVDSdCuO6s+6LzDt1eGDNoIP4ghaPpvTIqhIb\nYY8PTZEekLvPAWFLPu8FqwhylVzxGA1Ma+gbkH0ykdYSpZVyeS3r3WYkW/Nt\nVKQO\r\n=fvjf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdWH0XFjHJ1PU7ADt1C5eAyJlBOoVLeaw4qj2TxDywQwIhANB6Pl0MjRZKTHj/ZRpDXqi7VwTjha4v0qLs2C4braGy"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602678392-21bbfc35.0_1602678545780_0.5497146192794706"},"_hasShrinkwrap":false},"2.20.4-next-1602679228-4b6bcbc9.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602679228-4b6bcbc9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602679228-4b6bcbc9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602679228-4b6bcbc9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pvzuZ1gVxZSwM68DKSa6J3vo1TIfqh8pjRpFAV8CzOtZByKSIswaRkCIj1MRtIio39WsWpfd5G2b/p0xhzi1hw==","shasum":"bf83e0c77f8910eff33faa4fcb5359ab59662ae7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602679228-4b6bcbc9.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvJFCRA9TVsSAnZWagAAHrcP/3DJ2zWzQnbootsDmecd\noAi1rar27eSjIMlabcm7MwaK2vDYYca/76ueKXftUZaQ2K7BF3cCALJ9Ikbx\nxsLty+7ta4C0SueN9EMeUINLGxbzBvifLOB22JLcYr6yDZ2K3hpOOIPwgneh\nMV+pAZn3R4RCqZ1UOHbISlSykZq/3IhWU6q5JfErx7aAamPudf5wcbkbqEF1\nc5TC4Hpy7jj93i38jK4zFyqpDja99tI2qBQZIa8+qoW8ql60lknVBaWokPWm\n0cLc+yE7LN9igMroNw5yvyEPhIrPHZtJXdAzENCuKdEuj7VlB7WQtm1Cs5BA\n3lVtc9z8x2YLlg4ZQoEvbRx8feM9uL9bHPwKz7ySQDAidJ6vgK4DCMH7PI52\nbHxQb+s4BzxyJrEKNIzK0J3srH92F3yrSz42psDD/w83NRL3qSyz+KVXiliS\nMD1uVeRNvI9O5RQ/3Vsy/0N+3NaxS2nhPf1H1arY1pvSfZalR02XIcSq4b1p\newxEKhnaLSXoMeZsAlNwzDjiFg7Vm7Jp19aPIfg/N/EWuOOyCDmo+j5ARBmu\nnqshtLyXveO8gwS9Fleb2QFps6PWANwMEwkZ72SQYbEpYveRGc4agQoNKC3y\nnD3BcQBithVFz+8qRmKzbtQuXCCBZkjTzW4iH4ZLBS5mpta+SEYc0JPAAJHF\n7cJM\r\n=RZT/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAKcJKGbAZ8dO/ahtTG3XlUk2tB0GqPRSb/oWYWEI25dAiEA35+Fjjr6xQtwT37MuhYkHcIXH70AEcGr9uvg2k7EOJs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602679228-4b6bcbc9.0_1602679364732_0.9409445399582415"},"_hasShrinkwrap":false},"2.20.4-next-1602679976-c5f76981.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602679976-c5f76981.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602679976-c5f76981.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602679976-c5f76981.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xw7sOj8znOlIV0GBg4a07g0v9VDdYG2Kjn6LP1WtRYFGEtm4cHGyz/MgRfbjelfo6gBIDh366+YdFLm6gGtmvQ==","shasum":"a0324f1bd8fa0ce4e4d2d02eb98256f1c5776c3e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602679976-c5f76981.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvUeCRA9TVsSAnZWagAAY8IP/3R1byLZjWTH/c1EDnN9\nIhiGf0tGjCdPyn5gOYNPQAvKWefIZuGSdM0vSqE2xwXQ5pLwJiBRWFiiZRX4\ngLLGuUGRR0a3u2d2GT/VaWz+qVJB/lXqVX4csxw4F1j/Zd8rX94g5q8luvIS\n9Jg+7KyF0OOlc88IBzd0K/THTHc6VHnNcY7ei+CrSXI4Jj1zJ7YVuotnV8nk\n7GNiRFU/3QwhwjOhyCeQyBYS8dKdVmEuRDMvTpCvzlgJBDAogNUhDTYG+R+g\nV1BkplulPhyZGKSqWT2I1yUdUvJ3/sidLs/8w1wUpC+SP45XRrCOZnZgZnah\nRp0MqzA0IlRM9TnyWd7LQtF1oryPI1hkmeG2gAUsQBRJSW3f99MZUTVimbvE\nrg+CaZaEZXhPE+Rvaubz40nlimBeRC0WaIQwIjZfteoKuhXEwr5rKsuYyLTA\nRZHJ9LEgLxcawup3yPd2ILHhKPkuVV6c8b7Jnoyw/+t75D2rCUq/Zul7cTqx\ndCO41ZE+Htf3dTZq50VJGsxfZiBSA/YixpRUjkVyxqXNzw4/cDU9qeQnaJma\nfy863fdJiEj8VM1kNuqGR/h0BM/KgwsSn70Z3q+5MGIFUlY1hLaZovMqEPX2\nbeUoiVnOb4GCs+0gVe4srHFUq247h/DVSPm4kCtF0Gq8JrRtgHQPBo70mo1c\nbmfD\r\n=sPIu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDF+swe8S6b2MSuX0Xq3KLDXE4XBBtK3/zL+SCpnJwgVQIgL7S4VzpKpl472j8YI3wfS0LNqc1YjCHbf6CuIyLivks="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602679976-c5f76981.0_1602680093979_0.4929065100290133"},"_hasShrinkwrap":false},"2.20.4-next-1602680245-99620aec.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602680245-99620aec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602680245-99620aec.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602680245-99620aec.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-o6S4M6uCBiyUocT4YbLvEZWWcwuHv9gE68j92S1X/8XBmwOPoHAEbg50mWsGX7r8FOmyDw5X9PM7aYGrN49m4g==","shasum":"f61f63ba838bb597345d8d171d6e15e7af38ee7e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602680245-99620aec.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvYzCRA9TVsSAnZWagAAWPgP/i1Fc7trxr1WpzNeEzQl\ndUTlRz/IM21QJ/Y76WDjxA0el5gVmLhlghPGAGte656wIv0xVoHnh3we3WSq\nlwYYcj322uSFuB02X93POcqiuYTh2UiBAaliBhK09m/iNd9IhKiQWlHshGS4\nKqjIfxHOLJyPFexAtWEvwFA9dK/HFIRq3EM+LNygmwBjeo2jqJ2n2qfnFgpw\ny5zO/0ekQ7VqVAZIL3Ih7mC5ddei880XDGZ8rtM/o3ywHt4apc//xQf3hzsO\n41NQERy4OlpJcCzGr+GUTjOnRdb1hDyhIvCbmN1ytpAI4ID02jH2uesW9RKV\nO9nVGQDSa9Ic7mbG1KH7cIW71gF9FgwHuExq0FrmYYn4pAZgH4yIwx+dynlD\nX11O612ru/j2dvZlFvdrFtkVBVzxbgkoFnwMqz07PaDV6KXExQY0VLmLSC76\np0tP4YX/+zaUU+T9XpVZKNs6MuSmMshbyWXk+75oMOcpAyRW6WsSxC9bkAL0\nPbJLNG88PMZqDyTZnm/vkqCPWCjkpuHinZ9XWgFlOY6LCgp5WkARWet7jKqc\ncmIpwGc7eg1n0oUZIFBJ/6A30Q9qmOGTADrDxv9n/dlQGMfgWO7NJR9aNHqu\nvhLpdPwDvbuvxlQCLvHUD2j2TxJ6jXFD9j0IdYDYeF1cu3lwTAoRO56BWzBu\nX61J\r\n=mVtf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOfSTXLAZNNk2CjgkazzU0epDnAxXKcHaczrPKrjTvVQIgO/ZXpHAIx+e4ju15BoZLBqY4mLCkGVdSwNfEythuy/w="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602680245-99620aec.0_1602680371355_0.023173467593549546"},"_hasShrinkwrap":false},"2.20.4-next-1602680656-21bbfc35.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602680656-21bbfc35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602680656-21bbfc35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602680656-21bbfc35.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qH/OpZy0u6Itz9hySNIcZ0oXxa/Eb5JfixoCEVxnOfl48/wzewL0FtBK5AHkvXnN0WPq6pG4QHy/pV68krYVpA==","shasum":"9c8109e2ce68d5c459a945928caa95c8aad7da96","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602680656-21bbfc35.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvfXCRA9TVsSAnZWagAAtT8P/R9fRqqJAL05aX1ibnvF\nDtv5EZ6cJWugbqCUCMRVJF2G/trQu7Qki5VIaPBcJk5HKqxBVlHpyUNMlspm\nWpfoiy5J/zsIXq1Ql+lwjO6j197yFKeI1yW8GoWWFtNcAlQlGyPIeF3Xm0n0\noErbfkwphXA56saP7h64CH6NR6nO5YCeuzvoCKAf7M2HOnwwh03wY95PIflp\nMgl3Mn9evs+RV+tjldU9bsJQqP24OB02WPuL2BD1cZqgQCyxwJiGnilyUFpl\nGm8jq8bTQzvSBbOAys/NaY2Qrxf2sM5YJo48mrT/ZqqCWuemAdwVlYFRu//C\nZCVv4mNXy22EFV27x9INBPhXUSuRb0tgirV0bzkvSW837SUlVlcM6oR9rq4t\nm+JbJNuU6ntwktk3lruWwAQwSkjELkVwnJaPC7SJ+G0fe7iNVwhWIl8INAc5\nrn4znGX4rWJJOnjhIbszLVpr3DeFCN9H9Ez6JLNIluLq971+m94AMVUfh9XQ\nLz2gN96K0otG6HcaI56LJSpEpfxbb49jzjYu4SUJVwEuPfe/ghD8iSLQ+woe\ncn4e7i3tR7uDJJ2nCcFJloKMXl7rMbKPWdTKSYq1sKSqAG2NueCMw5N2oFJx\nKwUJX49BI+5uhw9xAWmGlIc4Bu0NTphUI0j1GFcNR6zaFMgdy2pEfitIH1dU\nbA/x\r\n=QG/y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEy/D24G+d6PX/J2JpFxSs9lnzpiVVZcz+7FEOMj7VJZAiAORT4W4jphrsgmIUGjLk0CwcF8HE24WGgxsDhz6WLY1w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602680656-21bbfc35.0_1602680791343_0.603006746162422"},"_hasShrinkwrap":false},"2.20.4-next-1602680784-0f25d3d6.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602680784-0f25d3d6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602680784-0f25d3d6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602680784-0f25d3d6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-f7aM7FlRWvIATQBcvSaO1UNtzvdaAXvtyzZOsG2NxD1AWPuIAENN17ulJG5N0h07PyLspQMHmH8hY1BKPZDYjA==","shasum":"2420b77fd763e7089832f67c4629cce2775ed037","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602680784-0f25d3d6.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvhOCRA9TVsSAnZWagAAPWAP/2cdrUu1fB3Y2TQATkMi\nyHq6wI4TvVqkMURLgJ/2OFZcXIcY3IMGL24Zm9VgpFFwLRbwLohShqdHMRq5\ndX6py5bab1vuKdMqaCd9E7Rib8RvFvr8R8+ovZOtZv81rjUQgEuzX6Ti74ku\nHnhKnq431XQdyt/kyfy4wltapm0DKa9+pOWVtF6jR6jwQ93CgZ4NBkrmmgeT\nk1l2lVfc+MlNhG+jGMHcAf7CwuJs9NOFrnLX0LyeXqWp7GPb2Z+0JqyMo8ls\ndyy5TCtTSylj27iZ2rcEa4MCJiMRBjyyB4dQ/LWVmy8ZDRQLId8Trsc6Dobh\nj0vtEmp4HYTBw7BTQIZyDvIxoQW62bO97Mb/G9xuLNVGqbLVgmXlGPoC2ZbZ\nVk+Lo1Edy0AWIKiuQTz5sLqx1gXzOO6U3XX3hbd9rnYr8eho7U2N4YOJCia+\nzPNiO9zTM/95XuM6RVwcef1NMFJUeMifqCqqZUh/OXbwZgRurYfG0YqXhANY\nKd0QMAfyAmuEF2DjP3bdLxcES/kCjQNZfPybgucXmNSfJMwK5EPuz0d/WNKd\nuTy60890VYYijuvk6anTaEdCv8Vc526S0MNjgTq9JEluX9+9maNFFQvpmu/f\noC26sDkss1yInb+R/63cVCXjitCzVkMso7T8T5cfhcFxhR1P9K2GkFCAAn2r\npEVX\r\n=sxlo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDgvTZvmzEOQZSqJUxnZIXSb3zlo7BPKOE4UucABBnYRAiA67JDu1O+Mkz4OIo3bTlUn3M+VI1S2W6myQZ9yIi+7Fg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602680784-0f25d3d6.0_1602680910281_0.9126746102036609"},"_hasShrinkwrap":false},"2.20.4-next-1602681610-21bbfc35.0":{"name":"@xdn/prefetch","version":"2.20.4-next-1602681610-21bbfc35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.20.4-next-1602681610-21bbfc35.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.20.4-next-1602681610-21bbfc35.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EQe3qgWdbwmfGZg5PdUL9OjwTdSxK55oOPnC4CN1PmidObkIzlMIB7x65+F/nqYUjjx0yPtTOM9NeiYOz/DT8A==","shasum":"e26541d0a41f0f4951ddab70e34493532ba405a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.20.4-next-1602681610-21bbfc35.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvuLCRA9TVsSAnZWagAA5b4P/ijU0vtowXdODYaqTsK7\nodtZKs1BEaROr6thvVu8NmZZ1emDM1GjEnHUQynjlv3S/TV+ZbBW/IEiTwcJ\ngYokFPw6ssICMoNRXzDW8K52bupfTmCcDrU3duvOhfEOGlZqppAAaSjCZmQZ\njMggSjBGnBo/iXEA8LUK/bCtV6MfrdH6ehPy64RYHU91O53cAFe6S8FHe9I5\n1K951d0o4kYh+D72bKSKLsz0YfiksqJXSZfz0uVbdyhBODV+/ulpPq7OPNRd\nX+Zjd4oyYxbQL2v95skCtphoEnGgt77k6NtEVt7xyqgAsqTEL7aTxrURZv4P\n5t56Fw98UlGz6jEM3Qc7/8eLqUdoiwj8ab41MjeKWECcb2KBjwlPcgVkOIVL\n+GkfMHD/vVFK8j/5zkUyUoXoD+lNkYBdpRCw3T6WMog2MWhItUsi11V3fkbj\nTM5fdmTcsIYwTFzE4iiBRz/tg4VKJoY1VALsbUn9mSWQ49jIfYGAi0K0icme\nGy3CEdTAkQoW45AW7ASZLMfrhy/YsS0zWeYt1LJt/a69fPYy2Xmcy0WscgDd\nBEJhy+aap8G1lXVeoizymiudpb1KCqaLDtpLRNT3U/EpNbmcbxXnMpnMvTnr\n5efFzWQqtt7+/XQRXV4SkiDR9zX4kYnXZXaMW3OUEgFq2e5kdmK5c8JNvV3f\ndq2r\r\n=xIVs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpB/jdQd3NBv70Fo0Z4k4qoXhrPTq7R9tJhaeQ+VgVIAiEAqfhSHk9SmFmDB6dl6S3YTqJUlO89961JG6oxx3iNTrc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.20.4-next-1602681610-21bbfc35.0_1602681738815_0.48388191950936243"},"_hasShrinkwrap":false},"2.21.1-next-1602682467-ed563445.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602682467-ed563445.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602682467-ed563445.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602682467-ed563445.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PBgxVJZ+xXsCZEnsnA1rIE8kF8sSr0atg9+UgQFdf5oDBPX54jzTEw/uJeYTHhp8dJYQR3znyfA3O1WdwwuNmQ==","shasum":"7f301e5985fb60cb32ae480a9963831f525b2afb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602682467-ed563445.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhv70CRA9TVsSAnZWagAAZgkP/1EVohYLL5berauy/xv3\n9OhuaTCqJb28r1hdgiupC4X0L/M48D771wT5P5xDuUtCCN8VDNah/f06zrWs\nG+I1YqhJJJO7MKVR/26qJKX+xlz+/qbkzkZd29ALXlQrUbqYbX4dGHI+qSiD\nf4waBDuzAw+Ns1LG8IjbQfLoPsC/2OGxKal0Q7Meqq01rWsbS8OnJVusoOcE\ns/YwI/ybHDUmwZIB3dM6O0AC3KZD/Yrthz0wLsPbOIXVn3ipq+leyPYYb0Ta\n52vK3k8l0BSKhFDeOxWdmhYh9tq7hWgLGduanptU0+0e5g3k5Oz92cincLp4\nzTp7Tzc6QOcFhWX+J511M5B8Vx+u20RwnDJoWog4kL02H+v0m9AQpV3wo6q2\n7CDOToG7ODyT3OzGBaC2neWG9ul/aiVgYgzHsCjRGbzJNP2YwHvfGQxjya/V\nNuLJNb70zuFtiHc7bj7bPiLNQtsuSdjkaCSDWJvPE0UaHF29rQbzikEIOYCm\ne5OU33tBOvIvah1VqzyYD5iAG8keHYQWzXpuNBJA04Bv1e3XN46sMKeSyW+i\nt19ho2WXo8K5/xcmvl6DXilCbn4ZBN3cnCv+6VNclCvXhv/H28OXq14y6Sw8\nsEFJ81nXeDeCezkbJh1+eytAamQugCpIvj1UH1QH8tNJBnLskoRNF4MtDU4C\nwkru\r\n=003t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHTENGEoP/ccJnAN/zmJ83aCx6d8mU9SFeLgSGs0TY1AiBeMByUJe2r4K8mkLjewASZR46R1fN3tOE8VXeZtx0HZQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602682467-ed563445.0_1602682611711_0.1757180197586936"},"_hasShrinkwrap":false},"2.21.1-next-1602682681-67ec788e.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602682681-67ec788e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602682681-67ec788e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602682681-67ec788e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BSGCY3qBlFvOjUu6EDwHFK7kMX0+HW4whfI5kvtGLqoAhdybFsbFYPLTBNXjtIajyflERHiEsfq93uSUwya/CA==","shasum":"aa9b0b35ef779a5cda1e8c39ee89bb8d30c0f6f4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602682681-67ec788e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhv+/CRA9TVsSAnZWagAAo7YP/1mr3cFrcRWyaCH/sSSK\nRrqF9Laby0LoPqVc61nOkAij8jYwtpEbuCYfm1oKKWHcmEJ6LYsfy6LGFo3s\nwYE/sfeYSmSj+vx5tNeepWTBKJJL2mY/M/hVFupdt4FJ0zuQyCFfQbZl5HS4\nm0e06h36wIWHlrgPzSLhD7BTX/5h08Ms4tlwgrOzjEQl/TidELge9DAAeM3t\nG98Pl7SZb2KtrJvk/Mq8KPTHz42kVqNkO0p5VZzjN0q4ahK/GVe2Z0bHSz4X\nZzk4UbVvMrcfewr/6HzCoVajKYrlw7OOALTsmTWiL6ew9SaWBX3L2gLpu5Dt\nDty7Nv/jndRWdbhujsP+WJVlBHB+LqCddEIcKAl1t3nnXo+lktXD3jch1I21\nZcZP6WCCN4sZGb9xDWbT2Be5AfbdvCGJnL0/fvrYAN//WmzEamB0CIm1qZY0\nnHEomm+WXz7tmatluT5flQY/vm8RoJBJZ7N+nzre1sioOE4YvW17m1xp4Fwn\nADPmh6Msw9W2IScIlidCmjO+uBC8HVH4e4Zj5oF6aqGjeHIgigYO2Rl5psZU\nf2RM0NeReFAjA5iD9s1IovRPeSFmnZdzq2rtGCzjep4e02w84oOA+Lwk9Gdl\n2SF2dTXbQ+eqvaHk1DNWkneNicKFzDzqm9KfEbIcFd1v0Syy1QWd5uTpt9Vd\n5DkT\r\n=Hrys\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFihokwzUCsjxAkXy03YwKBezvy+5Fsd2iUGQF+nh6HFAiEAs6XD/09sn38TAQ4Q6KTXvdMOSPWid6jYcjb10qc4CJA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602682681-67ec788e.0_1602682815060_0.8800552216264255"},"_hasShrinkwrap":false},"2.21.1-next-1602683380-779ecceb.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602683380-779ecceb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602683380-779ecceb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602683380-779ecceb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AcfGO1mobjVNsAK+baCudnNQhajPDtdFgQyvqnlwr7WOdUwkWc9SNB7pMX5KMTxKyMNzXFCTXe5MPDWQfqvFFw==","shasum":"34c29b70a695634199ba0676a59b02cea9c4c1d2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602683380-779ecceb.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhwJqCRA9TVsSAnZWagAAzmsP/2wHYYv+nuV61dSr7mCK\nHzgDMIho7iYs5gR1MVkRNbWmmZFNuV4+9oK3ExiB3ytSGHkgG+NqfitkgV9x\nKjy8B+xJ82QGh00/6HZNnM6aZ+EkjvKoBvN0Ppw0HY3rG0PCYDmz+cFH5mJk\nmEQBLAcvVnZfhDXlnToiANs1V4uauy1hnZk3XrX+vy1Y4DZq5F52xAXWBcc5\nJO2CIGLD6FAV9/VYnjgj6X59Cn9upUMoRSQ2ZE7ttxRqyF1BUN6TlOynepGU\n2HnPrOrj2u2jwgppFyBc0bB4bE6qpZfzkUSaHT5lUGy00cIsMiz3jUTvkm26\njdrRg67oXwb37ti/AEyqmjCnv3p0K4FhXkv3xpXjG21MhkEJ90SmpNoIQlhT\nUz651bLhYKmqVoVukX2bvkrZiGvynGZRD0EgGW/mn90oUCPcF86/HhTs/WuV\nksoMBhTkp9by/pjKimnX0MZlaSFkS0XOCXQ7PliVmBRLuz3zwtSCwG2kKCFp\nLxCa+fLOiEsOiHpos1opYoiEBx07427N/ZGLHt/sUKN4oH/B9q1bGX38a4zk\nk5+lZ9oTY6jQ0TI5gDZ2h6YNs0xxKHRgiyRPU++/uOPRF6gdwBg1V96+M5zU\nyVkNF8IbtnVYjME8/hOOeZR/QP62cKLB5KDmvpAPPD7U7NPXAg8WEbcXgWWG\nJotd\r\n=IS1s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbVCluT8rY7PAxvM77yyrxtN/VAsDJpkHM/DEXsLOZcwIgN9FgM5WyNGz8KEQAcRNM1Y4VmH1KacQSGQesMjrGa00="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602683380-779ecceb.0_1602683497537_0.5595547284782354"},"_hasShrinkwrap":false},"2.21.1-next-1602683578-31aa321f.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602683578-31aa321f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602683578-31aa321f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602683578-31aa321f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yAMhORY4w6nWh8VlKlIwINZ2WVpkjfUltMMGqZIVuzNsXahrgANjFLTsCbLOGKmWGAGe9ESiFiqu3fXGk72O8g==","shasum":"268a892678347f36423723c25926c5c67288a532","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602683578-31aa321f.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhwNNCRA9TVsSAnZWagAAPCAP/jlqZcPdWCAefaG32Zxv\nR8nxb+UB3mGPrgX7PXuD4H0D4OdFtkjs5WlM9n/TbGtz6tmWE+KQwlmAQi/i\n8Q12nPa7HgSEoo6axDhvIjdhhNvYV6kWcTCkLQUIH+BsYVu/EBl0OZg1vJKW\njgMGO9YlF4LNuNdF2i3AGxBJsxZJ2+/5MdNS0QGZHzr3TQVNAXR1uUU1/yOt\nTDOywqOMk082+qUW76tkYn3Vsp9MDkhB0/p43AImuBOnKQSlIgc1wZygRyEb\nardDAXHhxZqzvOujjYHi8UpH2JvpjrXZRmZNgQ0q/dTMazRpOHhYOv3IFCC7\n4F6IAHD6QZZ12u54YV7KAgCJCwUoNg9N+7NFhZDhC2YFKs7hLwEaDYZucYFK\n8AySBYLykAT53KyY0w3a+S3tOPXzLwANsFJsT9zUt/g2QBM49jt+pwqB5j9u\nrK/ZD/wUASFmN3wf64y0RRwBfZyLWR/09Q/WL2wKf1UbbdLjYsPh0meGzzD1\nWFlWr9KpsiaQf6kdtTXy0LAU+VsuL0RZQeA0msu7URl0HPDUkinLVdiJVCHF\ngRdUqOJxUGV2qFI91+OoS4f1FOHb6kqPn2G+Uhvcbg6QVZ8UwDYmyGnFfntw\nhbt6qxECjV2rTjK9MhtKIfarui2zgK8Xo0qSJfxbKz0RRT2gTsnvDPLRT8nk\nMsaG\r\n=dPpA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxIQZicmOBM/LHLa1qoOOMFg6gn/T9iQEzjCfwkGDepQIgSXRVLXunrCrXpIC1CSZbfLxJfo+6vzbUQG4dRMLbsbM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602683578-31aa321f.0_1602683724627_0.5569039094365005"},"_hasShrinkwrap":false},"2.21.1-next-1602683709-ed563445.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602683709-ed563445.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602683709-ed563445.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602683709-ed563445.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-SeinEi3h7Tf+ivZRiYmAk8oH5EG3qm32flb1N9v5Dd61fIYm35m/MVVpETsjOloQh6ExJicKTwSvoeukeOG03g==","shasum":"509086513e8f51709b779b14c2606692ba0a007f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602683709-ed563445.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhwPKCRA9TVsSAnZWagAAr28QAJjW4wzmxGsCdqHjKyz9\nFnmAz9B+Xl3+3D0IJz8XIV7c1FTVvadmgNCkEKh8nS6t6HCNBwQG+5y9MBdq\nCrEs9sPn2BmufmqSYmmO4grRnydqPkiskbaDUGFDY9c95dNGTyxU1pl+slyP\npjU+3rBBIXJ6ra60Ka/zySav2mt9lJ+4JgDZjVs0VakzcUtPd834QngZ55qH\nBetnhlKHxi9nJJmXZIpM6SYtcUO8JhgtGNSCespygG/ALvTS/aTau8SyQBNz\nfAy+7rw7ZtX1ES9JMaQDAghTCwK8IjM3DCEF5WJAFNHn7zuus3WnILUrWd1W\nXg7aA6VbWsImGRMs2KFyXP00zC9u6o9kRM1notfTrT/TnVagJvSFBFAV7wvW\nrp1anQKGs6WS153XWEdT1GVIOHR0IJrJl/Ron8WVRMe686mrxWfAgecGILMt\ndQR8JiPlOVBWbSLexo97WedC2aJLicainxqhXdr/vAL+rpIO7p6ZsPAnou5w\nLLH3NgDXW7YHHQ7vEABbenqCTGLoYyxyrTqIaC1LLD4UPyCWIzKx1ARqnBEv\nRyf0JhsjnemmOm2JwqwYs5BJ1ommlQxclQGAs5mhte0ikwSI57IdQXumF3CI\nrgFM1kcXG9kaqLZ5sxBebg0ST2f+RUz5oStUUR5slhSFG7yfKNXBuPy6WOAU\nd8SH\r\n=K4G4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGiK8sKK61/BAfs8Vnvs72rO+Ig5GLNJgkNaR/KoBBBtAiBE7Dt3cQ9LTNeaw0VOJIgaxR0fx8asb53o+ZSjuYPjTg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602683709-ed563445.0_1602683850320_0.6919982892422467"},"_hasShrinkwrap":false},"2.21.0":{"name":"@xdn/prefetch","version":"2.21.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@xdn/prefetch@2.21.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1g+1aWJLbP5hYHaxmf1cecqNx0N9B6yh0hQf3EeQyASvQu8LxnN7Baf//zcAp43fu9kc1kGvze6qXKnqspmQMQ==","shasum":"0c190fa7dc0edf0d902a62e52597e084a7cadf35","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.0.tgz","fileCount":56,"unpackedSize":106850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhwQSCRA9TVsSAnZWagAAs4kP/03sDw/ErlP55uGRYu3U\nuZGH+IT2b8hOsA314vGSts8wEVDYNiy8/qTc6cTEQrvLzItMzzb/gjMHiT3k\n0+WNvQLHHqkaRpxGmolbtXQhb5jmNCDhoq/1pPt10nPDN9nlzho8t1tK3D20\nkr7qKWey4zJbioAhulsXDJe8iQ9EoblnSN5nAWcLGDKa2fRDcpBtPh1RgB3p\n6pBzbMPf9hupFLOXXa23d6j7ejL7nVXAA8Tk+Rw0XKVYC+/TOto0j3LJm3Yk\nZ8pwzt0FA6AADJw+Y4uDRW6c8AewC+U9lTM8iMZ0PLkYd67Crhl0Gj+MZuML\ns3cDWeoCRcuckz60REi0EsVy6mmRAfV0b4gX6VK+gbnLvdBHrD+Rp6rEHe7n\nK3XtqpfRZRxtWMNCTzUkbjxpc9VgCtMd870cIBEhzXm+U5UeqUIExwWFKSH4\nw5BDmd9J3mWbCY+XTnnalm0NCPbanxmaED941B75ZzqhArynsxIO9DSAUDxM\nzHkqVZRcivBw7kQvmNoboNNcUoEltqKT5QNNmGvk9FfBQj/PVf3nY2eOE+Rt\n7OBEXOSyIuMjDIajbE1rlkuo2nIKFbPCMTJ601wVFh1eb4/ZwGMKGQZPMlqO\ndstelzILzRiZdpYhql0hEuPXem6YCSzqbtKz0Br/CsD233Q40U/BLRLYQWQB\nOzhh\r\n=5wz0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBeqVZEvd/4dYstzs5Oqs9hRrMzAh3HPovOFr/nxOTZuAiEAk1EBN58/pjakDHHcEO3OiKaCQSI8GT8SojX1He3YyME="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.0_1602683921779_0.3870860050479499"},"_hasShrinkwrap":false},"2.21.1-next-1602684216-67ec788e.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602684216-67ec788e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602684216-67ec788e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602684216-67ec788e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DlpL4bn1ndAFrgDsNiCTk6Ouy6rHfQQ2nd/08b5m80Zycyia6Lt+KB0rYiuoo/Tm/A/NqVvPsBXeX0Lt+tazHw==","shasum":"307df39bbf25e4e43628169b0cec570e364f87c7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602684216-67ec788e.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhwXDCRA9TVsSAnZWagAAZAMQAI78FIhSBuThz4ZkOcXv\nQ4Qo/7fRsYUrPdluj8LdsHhTLL7ecjpGVCahEcWgY2F+F6NB6Px5ob4cfI2u\n/3knjuIlhxVzP2xCjgyZKQNekOPU0IQ2Vg8zaXcUCW5fBOZ3fXnLZrS9yizS\nM3MFA6qZrKMgQtCsfORYEd6FkEwHS6WU3iNRdKO/X3Fxg1P89huT9rqJ646U\ndX/rjHAZ5HBXPBRwe8tfzjdTSBnxNjAYRtbT/I5EGfpZboRloehBOzcnG6nd\nu7VvdoZ73BuFRG6jhdmwjs6wfJFFOWjz3GRM1akMDpvdb5IQG3s641LijD1y\njHdsmySmm8oOiosQ0pKBU7PSw5ymNmW9xTRuX6+PBBRND6l+LZiffDhFYoYf\nhsYA4k3tSNDOiterA+YoYCOFuWJluhAY0lTc/cBFzkFZZPcf8dJidvgD0e3B\n63DgxtFNLz2ucjTKANM+ooSXuK7fKKA5x5Y2JDyhTvc0pd3xoqLkySJLGLex\nRqUjN0rEm3NvBVA9NOF3+t+A+uE5XW6QQfkIgO7/UsLCxrV9d0DQOeoXzeQs\n0wUtndVUMAy07tArxYIs0EZMVBpt4DeDF1VFFU34NsjTiubgts6iJJhoB1cl\n1W0wQ6aSElG7UWbAynvqZbuiyvrTzcggoCI7ITVoU4vS3j96lXFWiKhOAZul\ncUZQ\r\n=1eo0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBfPftJe7VyO6WTwPWh4WuA/wjz9hxNoSQ3P+7umt+atAiBLQVyLNOQR93N6uXHkDZR5M1G5xGVtGDIq9jQRl4IJ7A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602684216-67ec788e.0_1602684354865_0.7638673867478245"},"_hasShrinkwrap":false},"2.21.1-next-1602685091-ead71e26.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602685091-ead71e26.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602685091-ead71e26.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602685091-ead71e26.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Hf6PDgpQ2WOmpCTZw77KYgtChclUwKlbypZg2662/w9Z5X34V+jXzhUceJCecQneIvIw5IPy2ULo2yY/N+Rnyw==","shasum":"e77f02ff5bfdc2b3299fac2b6a81c47f49e687b7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602685091-ead71e26.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhwkvCRA9TVsSAnZWagAA7BoP/AmqOV5AW5KJRihkowRj\nt9I8u3JBnjw14tc8Udp6+CdULi+YDdR1eJ6d1vOz39LK05j8Oj4pbuzW+Fmu\nOKpBLnDYxyh+SOYfWRdsTWYn/XAp99lXhBpid+ql3O3uuszvUGBpRXUMEzue\nf1Pvhuvn321BeeZEq9EpF8ZwYTKN6rzRfSrE885akrMEPs4urHxV/WrRb/JM\nq2DZGeAddjEJXy7Y+8HKZ9syAM/IoJm5bK1jJEkjHq7L2fmXjWJBbg+K1kkZ\nkT7I3JoVifRU0tALNWq4KIL09HKeRkcoqLyHvBuach07blesax6T34It5c38\nKLMQ7qY3fUh43SUvySdLWyd9tA1GtDAVAvnBtkH4gzkEZ/tvZcdwOA+vFJTe\nx5oqKOzFZ9J/aPWH09AbcxR61/xC4PcpB0GYX6133APP1wIV7Eeb7x8QWNgo\nfSb/YkMLSZRJf+O+5kg3G1v0zB8xfaUnKnGI69Pk0rd4w18D7e6tvVni1UgC\n35tDtlnhiroL+i509e/N9LqMhFS2bZwif2bbGYtVMtXpnQ1WGb3B9mjBj3Bx\nrSSK9CDkU2x0M/07R7ebUk4C6CmTfeT8kg41wNSt5cNlWXareqFy20Ct/Jtd\njb/vVSzk40nXz9TTlcCdaqewd+CRhMLeW/oxf5ExG6EiLY8hJ2y1rqlsFlcb\nO97d\r\n=a7rv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDzB0vvt5heJ3Oz+mRfkMo4gMehqnZyv18AD7dC5AEEAiANkdVGwneplEYqi9wzjhD3w8tKhz+JMU2/wGfGIC4rsw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602685091-ead71e26.0_1602685230860_0.46261310169013714"},"_hasShrinkwrap":false},"2.21.1-next-1602688109-b496b1ba.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602688109-b496b1ba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602688109-b496b1ba.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602688109-b496b1ba.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6RSRQSSvdrP6JMhdCV/SA4+68wQPYsc8piFIpCxZRdOy8lo3rVQ4eJZFsucj2XE8uKaJ2Nal7nQuHN7WKN7RKA==","shasum":"c8217253457fed351cbd414979b4edafb1775683","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602688109-b496b1ba.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhxTwCRA9TVsSAnZWagAAR7cP/2NRFRM8RjKwOp+hOa3T\nOh+Q2k9U7demXGDKJ8sUG8Hqfmw2z5YbfpHSPYHQ/8mOxBKDU0BdexGYVkNC\nvBa+6AdUss+BUaJiPlt6EQRXdeNH3V/FDKDTW/jLEhjQj0aWluWvrHqE5pmA\ngw3kdgAdMZ4O2J1nmue5fLQms1uQSZHfu7lkCWq4v+i17TAewfDkXbp6fkTp\n3VgrL/P0Fy/qTI56nDggXVt+M776XDwKHc7blG1tuFR1sfTWuA+5MoG85lpW\nFHEfxUGrFjMFWqlwzxzM1MN3PzYElQjPUJpYubmYnmRsxi4YuPKWc5GaLsAx\ni2k8FwEmiUaK5ANPkA08rzqZi82LA1sVXqvI6txuF22UPBaPcYsEg+Kzn9GA\nY0o5/jNCPRkvmx8rMrsnsgoHzxnV+6wwTjLd4N1homPNChKwngHnciq/JwcR\n+rrlK3Xp34L+dpd2z5lyVd3UMTzWZ71L48ZcvbD7hwOoHhA9rQV00yc6kK5X\nsmie922pXfCau+He3Gy8X/mmC18mH6tqXkRmgItiGPnpHhl1xEqvoW/kZgJr\nA4m1fgLjTb0oFKTmVbb1wp6hyeFFrHUkP0NzSwzaA5pfaikupAatk/T0ym4Y\nM+qE6srKQFRVitoF02Dnx6TWke/8pLV1faDjYb/4q2jRa3i7OO24lRt4Zcz0\nLTSe\r\n=xY27\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEdH3vgSvfnHbVOo5YPPyn0GTywXxUu98wRFfn8ub5n7AiA3sNK50FcIOP8DTtJGWlbw40w2QZEmRIJQ81c+uM0Esw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602688109-b496b1ba.0_1602688240312_0.06150293866418877"},"_hasShrinkwrap":false},"2.21.1-next-1602690685-ead71e26.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602690685-ead71e26.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602690685-ead71e26.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602690685-ead71e26.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qwfxJBcJ3nTHZtLE+tGqlADhrUsbVlKjWgUwAmVLblYpX66WIBRFl3NDf0PPYTOOYu9dmt0lPgeVymvw7jkeTw==","shasum":"2271f7372bc9a545eaf0592f61f77584bce3a6d8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602690685-ead71e26.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhx8HCRA9TVsSAnZWagAAoz8P/3BZKN3YvaLYI87MGZXI\ndmVeEoLWmIEMpCwoFseqb/ypoZDoIvKRsZrk/fDdeQdKiTCLI2WuMq4fLCEQ\npUiWcmTr0NMDtVd6OyqQ22XypwRRJ6Vrhw0vY2ya3xGjdmZQS45qcq5mIW/6\nNs1NVxLv8sZ77fZuaTfhWUPhyGLtVzjoxXdJL0Q61oCJCSG6x6kxxDC9QTvx\ncFaRWOn+qE9L9LAbLhkmrx4OO/Eu7fNP+TRmHrhcjUXlX7PRM//meA0xhqG1\nDGIdTFL3UKG4vsViAorK1Fwb4hXD3VNKHRt2SDfGaUmHugPMg36qJjNLIyQQ\nFp/IW2egnV7nCMHos3pgcbZKwXJie/BR99GK/vRVSaTxCOVbmmaW6rmhJ76L\nUXdsXEsa1AFkRZRJBCfALYXMW72o5EvhbwYzXGmKJ/97lBWs3jcXHCU4/m13\nLJdikaZV3XYWzK06Owih3S9A0HvKukGaDWvUY2eEUZzYGeKf8cMLiM/QCsfh\nO9iZNVdR5ftwGGX6Ux7T6eU051NC58oilxJq9JtxHWbreE6ib7DauKh6N+a8\nLcvSH1A3dSrpb/hDtrLN5AGwuq/zlxssbII0c1+QB3IDIkR/xFNBOP/9xPWc\nZ8O3imeE9E1yMooco6oCqIhAK/dtNX5YvutPPf0iIPpVAzLzN3hsWMZXNR7n\nCDJd\r\n=kILP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCN/yErqn20Nbx9kuzGu2gmG4z/SsNd7HEC51SJbNI4jAIhALhSQq3+u70IVVn3Fysrij1Cc5Vb2jbsjPSr2YMDiNLO"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602690685-ead71e26.0_1602690822897_0.21932736581662748"},"_hasShrinkwrap":false},"2.21.1-next-1602705044-e7a28f6b.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602705044-e7a28f6b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602705044-e7a28f6b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602705044-e7a28f6b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Zo4PbbZE9IipRWGiUgKZTz5jpf6mx9I0cvfzzUEJh6oT6JuF0IHm4LADee/YSvy18ynGbs1l7XukR8EqaGBMBg==","shasum":"c03d2802a7b8add2f8d77397939b89be10cf16e8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602705044-e7a28f6b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfh1caCRA9TVsSAnZWagAAGc0P/j+MNuq2cUjL5F3PQfHg\nlJKKK/L2JIfjrOti901IAViHMd1gmlUbCZN8RVV81ONaLQmewBZRQJvhX7q8\nhJzP0rNPNSKOk81/RcBgApCW8K7gozjZ3TgYq0x5kXFpNkqGf8BtCtn8+41V\n8WX4PTuKWvQVWcl0eL53Fc3wvBaJUBNLLaH2TtLvO7U+PPa6kRAzULdzJChD\npcx203xU+OpEdzN26R9mkX6eWqdDGS8Ksm14rYcNTk+cKZif8DlQBDiv50GV\neDAoQw7o28se5T8M8o7dajtSd2/CDm+iH3x6P9RVmF9INRKvlry5booVTCim\nlb1tLn5hE6YwoD7pbItma18vDpYEHyhCDEfBlhMOmiFD1S/N6otGj8kJJDiW\ncJVW/zJLVKL7eBTi9YPlFjDxXwyl5M3sn/qhgJKX0GALvQYmNTNFRsSZX7j6\nBjeaFy46ff0kdzwMKRplUsjvr/V0Xwa6DJxERenwMVUv2zTZVf05KUJhxeDH\nL0tvudhco2oFxt+6qMRn9wdl5pT4bM8HZnNfz8Xld81D7IN+qqCmCKB/ZIVj\nFMNa2tV9sbdetCqxNUURGH82BLuwHJcDSXr+tUHXzUPAOnBpt35Txyw18ejh\nI+Pb+slm4FQezlDK/qIs88etQiPvoChnCQNPuQgqGlwuN7ucuCxSTk5RGt6n\nKOwk\r\n=JcxG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID4JWTrH6XDG/R9ra9Sc1an13dzks+FAsQwG/z9GWJLRAiB/AW6tk90J7KlIzZcLLYriHTluc9S3HIjTXuCram+wog=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602705044-e7a28f6b.0_1602705178107_0.8604880027167201"},"_hasShrinkwrap":false},"2.21.1-next-1602725475-326862c4.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602725475-326862c4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602725475-326862c4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602725475-326862c4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9nlfBazpRSgbZqa5kinhT8PTAKok0AXetgqHOhoNc5GF6DBS1yIoPmE5TddFistiZKjy7QZEAroGS+pUCV/3OA==","shasum":"457465f27fedf76878951bed6a5c993002b3dadc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602725475-326862c4.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfh6bfCRA9TVsSAnZWagAAHccQAIp2OBNZPga8KkY7pwVX\njJ8j7qcV46f2aHdDYIEXxi6K7VkIyPd5pEMyevvNrlNjCUhLuz16LGpIho0h\n6FURYn21iRgj6R5hyjOiBtxDtl3tXwRlDWk/5z0fHOtC9ZyQ6dHrcvq+6ghx\nRXVMyOD33WK3Ng1HpBYqk7yCgQs3KoJzfcjR4rXeiEEwyCO9V9kBL+uZ+rb2\nZU9fBvsdcUsHjUXm9zzUXy2j45dXixBA2/QU9xyQhzpHkxHF2n/zT978S9yY\n/7uI501ZEVtx1NhntmdBteqDER6/0JQtCQ+d1k9J6AIcsHb44yPdQpCwrn5d\nfLE17of5zi56uxTy7aw9Uc4RdY4MV/kFZWxCOmOep14zWpB7m6RWohinR/Gc\n0Nz4Q+Xz5uRrWCB/GUQVrB2yJsQshXzVUMc7UKUKnagBKlon5a1mpzUjrxL/\n7LQOoeW844iOfMNHXok+Vn8EIuP3UtApWtHHCL9f4DptGueIlHpD8e+W8EX+\ngPee8KMWj+aH5tybtxtwPyDhZDKoa8ZHzMuesL7jUI11hurgWfMlVFgKfopH\nbMT6WecsCPz0zRBunj9bd1Pj/D3sgR0vRWoYIV2m3GqLlkYPFIUaezthuLtz\nMpL2sYe7b//hrOwYGggZnQaMGzSlICWx9q65XReUJZLe9euscF73nzO/0Uzi\n2gLf\r\n=d1k+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFlHPgNe3n/sCO2n4N4WVjpIyt4eSXYQCQn32KWOJrSAIgH2+cRQk6KBzWvjWRS+xxtmm6cI8skY/lvWSIhQ0KlOU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602725475-326862c4.0_1602725599169_0.2507202358678604"},"_hasShrinkwrap":false},"2.21.1-next-1602729949-f2d00f21.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602729949-f2d00f21.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602729949-f2d00f21.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602729949-f2d00f21.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-K/uqVJgFIZg0wvXzOnx05Ah6TyjxOKxX94fH4mqwA7YbwrT765Pt5yRi2SZbdwD2Hff4T1H6urRDWSfGCGsnlQ==","shasum":"4364717692564360793e89721e9822d8a8b87de8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602729949-f2d00f21.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfh7hhCRA9TVsSAnZWagAAdKoP/2pt24TwL01tn017CTsm\nSqwUkW7nIjwfXlLHBIXb+dh3CVdCR0uc2LdU7uyHJaGHDPMt3J7LUBoKcS6e\np7tuY02HKWfEMkJSuUw1XK2KKCK4AIBt3boWLpbjuhtBEwR+u7Bd4BmMy+7U\nbGq5zM4falrSzAlktG8b3DXRMatIonGUV0bOM1jN7YLYfgkmBbV87o+GBX9/\nn+WQMovRLyySoC3CY1dV4imrTKnrVTp87ZWw18tm97uipXuZu7wBO4rjx95e\nx/VYPuaukhpDDGG+dbwElkc5izqYj0StiGL6fkSZwsXW3BjAn0VBGI+cBTof\nYqUj+7fY7AlfByNvqEqarVhfiH+VtzoxAPpdYTCb6bRfknGxKad6ZCc5RfMI\n/vz+7NpwlKpor7RMU/dYx5/5hM+HgOMgoGBLBCUFYZP0CDyDjcMYDXOKZRqc\nMF7EZSvjebDdBq5Ckp1o9ocnZR/FDzByla/kPFKolt3MnbGKwxg2PPWkD+8P\nJ2m/iHQMwnPtolWWyNww5yTjgcAorz2NZXkNW3CL/c6zBpZQLiUcQ/OVIxbg\nIz+jfbJDToQCA0jyjEfLR+7vAp/SYViPBdysLhY7hI1u/BLw48tbmiWoQpUG\n7qFEwPjlYIb3rNa8McekgchPze6+q3d1KzbExlgu6Idj90X+fsGhMzAfI0fp\nNU/H\r\n=FLLy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNgNRh+KXC4qmeuvfjEPsznQfyRPlfQ/RXT3fA8S5v7QIhAOn+C5Vm6ltWJcD//hTjT/x83Q/rLnsd+0/41iagVSKx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602729949-f2d00f21.0_1602730081151_0.09385099622301474"},"_hasShrinkwrap":false},"2.21.1-next-1602730542-54dfad5f.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602730542-54dfad5f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602730542-54dfad5f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602730542-54dfad5f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tZgyo9IOaZwdq2Q9zpADuHsXed1jtwkAPA9ic69HmgifjQtO68cXkEkXl45qhF7L0D+GcOGXSKm4lr9rQNSvpQ==","shasum":"914f73ee9d7aaac6ec222cf785adff46a5b56694","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602730542-54dfad5f.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfh7qxCRA9TVsSAnZWagAAl9wP/ArYlC+6kv6pSo5pLJnN\ntBjAZN2EryfHgOgZvmJOfAwIJ1LH6rk25Xb36hWBerWE1wX9tMha7ADjh1Rq\nf+rRAICLwA/kXiPbUhUZozDPMP/MCue3Xl6H0K0vViSVC7d+DyWMio6eq1t5\nFsG9ZBXoETIHRCM++Asg0fwi7jVTwJsOxdwCznF7KMP26hMEqBlgqQzy3AYz\nUErB2WRUcLjgdUgB4N3QRFnq+PKAfsVYWcb4UrV+AIDnhuEkIVuW1pLzsiUw\nKdhtmYIdWUQ9O6DPIjpSxGNhlUyO10H0IbK1Pk4ROv5FRVl6f9ns1CT7DOAs\nazqFozp5fUkLomsjrCkOhEuiO8e3WxDmEABtK2ZSt+ZsOv5U6sPFi4i2nS71\nxYRRU4jxRE1yFjJLlG7BUr/qQ67CdLGSd5DO4gLf0GUxpXk4liE/lvRU9SO7\ntnYhKSTrduS8JdH2W6veUdzdzLzcKLzEd1D0yYTkYwQhtb+ojmZgJzma5CmP\nukWFI4fjTF3Sy9k7Ks2AZY+gjVwmtEdVRZ9C8AwGrT+tIi5JRTRqngeknwS7\n3XCETVhxrH/9nfVgNqAghyeXHULIu9lQH6RtwWVqNgy+1jZdv5okezVcm4v8\nBuAxIT1piMm8+QNslstIAAvezEGVzQ4Mz1NVGmdiihgwxvHBp78G77Cv8Doc\n8lkz\r\n=kxAM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZTMm698dN9/FTGRku3E52w92TmLe/vAjWI0KRsJuCRAIhAJZUUltxfeZztb2fahKKj/dUQUHDBwyKynIfluLM6tZ5"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602730542-54dfad5f.0_1602730672766_0.7989280785511239"},"_hasShrinkwrap":false},"2.21.1-next-1602730582-c3286239.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602730582-c3286239.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602730582-c3286239.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602730582-c3286239.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yJuG+ce6uSbnoTUktyHB96DXoxHEef81V5EOgJX/zssxFdDXZtKGhI0fIyai+u0TiR8jJD/P5lqKT4nG+K/+zg==","shasum":"913f4715e9d208a14447d19e5ffa5405e59b2503","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602730582-c3286239.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfh7rWCRA9TVsSAnZWagAATukP/RKGESBUIAD7OF3Zx+5R\nYqI/mOB8cVIV4EjX4n7fB2BKQ3K3PaqSzQZq5yQ5U8umh3hE6H3j+d7JqfOG\nFKegamE7aZiG8qHIx7L+fymZ6Q1LKAxjoo84uiqScJI/2WOoS7XbRjrdhPA0\nGq3h7cRt3ATL//fIt4Aqec6eV5dP/9mzoSxNoV0jD/XM+lrf8YrcbaY6mw54\nIBKdvt7XA7FMl0wV18mBczhYDcJCZzKYJy2u1RkRqTFjLuk24QXc8DG9+PHm\nDd50C7vxNr/g7yLM77es9xCv3neBoXO4TJZuEz80x65JXuz/p4LvbyjpHzJm\nix2qPtNgWrpmol+Xixl3FdQerthdX5OUiujtdkMCzFkhYNCf85rM8ibd3aR/\nnzaiO9cw0rSQWYaLPzlQdBsjpidXhSDRWAbth7XQZpBfgKu2WPxx9UYTVE/9\niP6Al2g/gXC7s2jTw+6qrkTFcZO3lmv+aDbaqjPXSigwZ9MErahN5Npj/vMR\nYwfptUXKZw7RWG3Af/rlMwskcx7mD71Vn1vAIrVB7W/Cs/VELKfzfO0ro/cA\nvfFlztaW7tsEZeo4TscnXlW730AG5xm4fKRl8/tu2eD5DOQE3/DN17oGA/c2\nj0FeATlw6WOSpCSqIAmYa/g3e1YDXMR2sZ52PqX9/2pM+raQ0RX2SL/7gMOk\nJkI2\r\n=4KTX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGbo2PVKvwmm6SCY22xzK+h0155rMTD86ebzDyGZqOqHAiAkTCf0efQBRaGQUFGs67oIsyNXl4vEjCL8aD4IKAjz+Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602730582-c3286239.0_1602730710483_0.2935572173762966"},"_hasShrinkwrap":false},"2.21.1-next-1602760091-9dff029d.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602760091-9dff029d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602760091-9dff029d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602760091-9dff029d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7T2d+h3dptyNRrxY2iflzniy2QlXnkNMXrcnlhXuorev62Td65kC50vd4X+241O4mgUI0NGPR1uBAsqi8rra4Q==","shasum":"cf1eff451e59b972fc92c68c545a71f88ab48178","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602760091-9dff029d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiC4mCRA9TVsSAnZWagAA0WgQAIGhxNuE5/SNXIGZ1IxA\nleXNSa/kYyzVyqdQGFxDOr15EsLk7Vdr3xbPEWkl+X0D5fKAEOZBFnMpRao7\n9AASo+C8Z7L5KiK/rAaGW6w1joVr6EOTfCAhjntLOxx05AI/Oc2oqKiPBjvT\nvD6sZrK2KG82KHBnsp4sOWlDi78xf8tfBWX1GOV3VSUt3kV/vnlLcOdQXa+g\nuGA/gnbAM/udr5/Ca8J871hgohpxFyOSws27QTn5hrqrOyxbYN74EzO2b5+B\nzysHpjvCK+A+6gLOwKHbwaxKFLzNL7015tT3RQYV+ppj1bg7aGHqE/CHuR+1\nbPMy4vdSXktPCpfBqXKSymYdbQX58b12ggaytwPNk8AZ0iR+xUYeSFUjUX04\nN+U066U05aJJWQ7BaOXdSfe2ltMLs/8VOs9mQ4taBgatvlEakAa7shHcqRof\nIUU99AKZZdpnuedsy13P8qrwV9zRLfN2MgOvQwyDc/vWXaFH7rVAjMqZJv0H\neXtYSncYv1t4W+mh8zXlXnZGYEoXefF0KrcncYjaOTHM/Erh/uIexexq5GBz\nkO0qa5shm4RnmwC/qMvEIk28xwwhVaN1m6VbFktJZ6pNLE5Wkg+XAATkTOVz\nliHmQX3o/4Fr8wcRO/L9mJ0Sq63pkHTdi5YPlQUDqACIMjMQqGKT8Ex/a07N\nWobT\r\n=mKiI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHh3L6Cdxl2PPiOUzhpuLRgYlj36BNC9DDN6s8/IWQBOAiB7aqPLGX94HYMR4x9KnFTeXAMr8aXWmJ648wG/kjc+Ag=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602760091-9dff029d.0_1602760230442_0.9161918915707326"},"_hasShrinkwrap":false},"2.21.1-next-1602762356-9c47bf03.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602762356-9c47bf03.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602762356-9c47bf03.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602762356-9c47bf03.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gnD522ak5MO9cR38Y2j1G6HOp6rwo3ylwNkHWIZ0t9TZ28ukaRWxhaeq4uTMz+n2GBFcfPpTXgR4TbBYru2fWQ==","shasum":"1adac5233eb407b0b151bdc366ccff2a4f7d8c79","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602762356-9c47bf03.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiDbyCRA9TVsSAnZWagAAMm4P/3y+a/4HcOXhCrmi4u1H\nSPEkA3UQvK45SosplBQBmYSVUNFK1jmqfjSl689CY16r1ksFS8cP4Frf8h7x\nUUOt8VYmYy41HwGNU9j9GLSsQrwS6LT988xlEvlbQAJ479A4H4K9+MYwri4B\ngFxlZfk17JqhNp3flHq4rKU6d9nGtvQtIwRE5y36GbXX+Ls2vYJ3U043beEF\n69B2QNe2fpLwFjV7AW/e0ZDP1qvS88C8OPanpNIXtYBR1AWaiY2t/SqVX8aR\notgPMbi82yqmf9z+MBEadgJEBnGd5ebfjCLoQeJQJnDvmYUYwEwBMr3CS/7v\nwC3Q3hjhoASl+F2I0EhqfGCOOorp4l/3qn+72TIoygVkMhzfeyhKzGIINl5Q\ndkSiP9oHsYTiy1fLYtj+sUrGVHKdBXBXeTL4HO3UZ3z8gTQjQKyk8F2Ujw48\nw1OP+Z3ABYvEyMrZ4IAaeXiCyPnCHNyz0N/wUM+QSIS6NLJt7fdgAQE41tV3\nABo5Bt2Ecys7iQsR+OIwp7wiiN1lt/8HcFgWUbLyVaRsDMxeC/pl4QLOrBZF\nNBsRsBbfnbtfHbMoCg/B6YyeWFhzGMT8qJBzjNXQmMvgA6ZSxOPI5EaeZ6MG\ngIAt+kUSlluuU4adh/C2Tdm6QVJEGmfWJEkRSeBaNSEzHZLBDFdlZukgd2y8\noEEl\r\n=yFkC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBVfI97duym3OO4PqoncK1kJUYtMjjL3PuMr0GYI84k8AiEAwcgFyKPGxuip8dELIbDm66++ErcBoKF9QZjZXRJvUqQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602762356-9c47bf03.0_1602762481911_0.4491896273136673"},"_hasShrinkwrap":false},"2.21.1-next-1602763542-9c47bf03.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602763542-9c47bf03.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602763542-9c47bf03.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602763542-9c47bf03.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9P3k3wT3CmhBUiBqfOY0okvHVN7BMEnq+9K2QA97uz+teEf+1Bi98iVd6ZmNhiNwl3A+duWnQPzdMDqxLah2qg==","shasum":"d001234bd33cb65553761f411800a6367d79058f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602763542-9c47bf03.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiDukCRA9TVsSAnZWagAAsWsQAJAqfysNei8GCYk+db3R\npJVlTF36U6RJa/ZSVcZuyj228eBCPIpEW4I4WeCZMNAOrifG2jzQCd7/9iX3\nIYoV12eoRu1upBWR6biw9N7o3ev+Fd6SAhCULRLW9Y+g0MrBY3MpZVfnTKtc\nCYA08Nt//Lm1rT3Q2Zqo2hc70ve8us9k58o/7eUf5+2xbqyqC+LRD/KY1UFf\nSAIQ6AHKJrnd7b/0ZF5c9NbbXqHPb5dDSFyQc4sloxsznn/QENTGYgWZDl4k\nJCQK0QEihlXRzlAup3tRwM0rf8wvO20araf2F0ehvfFo1sd4uaXmm3ZLHuUK\n+2JMxh0cBeh4jNEdbjLeolJ4oBWIjOjij+vWR2V8UNa2wzXWGWPxw42vaukX\ndDeEcc979t3tTfIQXgafCv+8bre4jVx/Mo104PBEv6AQJAe6C/IqrIJuCbED\nKNd4n7SXUPcIrPUM7N8k9YZ4m+bIOXYSUuZTi57D7hJdd5nRJgWAeH9s36g4\nZlLn7ws+orV4pHABiirFLA/xoTEKqd1enYlge+iIXO0P+whisLsnX1xu85dl\nwpMXsHt5BF2x+xEn3zG6+tWXOJ20aOcVP+JVbN6u8/5hQr/TDXNhyW87Undw\nNMeCFlKe18Yb3MBz+EJ/+2CpJ9+gydX0j2yindFoYNVhI8/yFPQuw9jjAXNq\nEKZu\r\n=QMoX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqC6xkzRm98XLUZ8bMM6bXPvFDjw99+ogdzVqmkJEl6wIgFj+zWGNXUJyiv5zr68EOSw4Ogi+lwLFXmzXSKhlW5KA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602763542-9c47bf03.0_1602763684409_0.22058593053021114"},"_hasShrinkwrap":false},"2.21.1-next-1602764732-9c47bf03.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602764732-9c47bf03.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602764732-9c47bf03.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602764732-9c47bf03.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qeZg1EM1MTTkliV9hvlvXiY36Jasgbz1oKpyyxV7ylKTbTNsWFH4mvVYkYgccACcRiX4jHqn0kA3Pkr4QNOdSg==","shasum":"4c8af1dd4cd14b42064f5594fbccb7e85677f050","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602764732-9c47bf03.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiEBACRA9TVsSAnZWagAATy8P/1xaJTZN2PZv4q4KbmTi\nIaAaTKp7yNxQR+boS7AOFYoi658vga0MpCLVVlMsBqTaivdDapUKXWKGNTn6\n30H7Pd4IUBzCJ9tYdaeUSUt6mdwAoGBjB70qWj8I3RKlUsOQ2DkWHzggJADB\ncZGiVo3a2rTkhQXBYh9jMjzyvr1qEnhDOIn2wPmj6Ibd0nctKMXUe3PpavX0\nXW05ab4rkgvWIbNW5ITy98oD8lXGPZAlCcShM4V9t7pugwOVEShn7F//37VC\nXT34GawGDlMIjGP6D8peZ4wEuQtX9pjEYTAqAkTRQEMIlp7KwZEmTcOMUgMX\n6tba4FaSQhZPbwYHbX/PE/6xk9vxWbms40iBFHFM2opnT8cJ2pGdUhJfcGE2\nJlBGD/3j8wp5MbWoC+jhoRf1DvASAqpnWjrapLoaRF3MBudJoB4BF2NTEnaq\npK1UeyVW8NEwb2UYRaLp/ISAbfFEOsBIMuurP0N+nEHQHq7AGGiv1ayklDwd\nqGpKS5RWb9wbhsGNmJ7RiKtRxrnM4/bTyQRoKE+ZocrsOO61amqq7nu4QL66\nsBgbtfzAeDX2/YU9qhB/Z07bu2n1466zYTy6nQ/rbSBsmQ71QbkWMxWUdR+m\nEbdb9bswilSXcHRk2CbTcJCz3ywT01Ia7usln8n5xGgo/JSfQoTV/1EkKBnp\n0tYh\r\n=PF+x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAmbYiwO+VbSwN0bzzOLVFyvWEIEF5lWXHaMqr/JYWTwIgFeTHPmvzdBR62ce/eaiv4YiagFpfjdPTiXS0Y7N8VpA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602764732-9c47bf03.0_1602764863480_0.37872733960523663"},"_hasShrinkwrap":false},"2.21.1-next-1602767287-9c47bf03.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602767287-9c47bf03.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602767287-9c47bf03.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602767287-9c47bf03.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eCpr9NCXzmwlDWm5fWGDBaLMfq7wCDlz+F9zlCEpjBsWfwPIDi83HeNV951ZCcBa/bYnFCvc+X0S8hdlhZpRRg==","shasum":"566d15014ad71b3547b9a61ad55d7924c8e8e37a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602767287-9c47bf03.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiEpBCRA9TVsSAnZWagAAjWwP/0KcW8GS6A5RmWLgrmDT\nxA2j9fFYYTta0JVSp0t1m5e3aG6rCq3xJvC+hGiwynK/eA4nC5SdzORuRpza\nWOCQYPNAAyxrXZqFbOk2+E2i3pIaTnBb80Imrpu50YIUAgwMaiOhtEq6ECRL\nT1q+Pwpd0PQXPFmPIrpmMFgudn11tQ4Q6iC3lalxlavFzD/JOGyVZyJqrqL/\nIMGoNJMVoz+oDbCDmt1kvZPBX/rg8zwEblRyXz8IOD3E3OmWiUcNj01so2i8\nbUXVjhPBeaGlx67HRlAUfQUmZ+eEdgyc4jwPNtKsO5mCbA8vFtFEBNNwuGws\nvBeDW4QNcVD6LYTP/xyn2tsojUvfDhaBIH/LevMp+nAWNOFYzan9XFuJq01v\nBMB9qoOGS/92xg/qf2/x6FaJEOt26y2NE37bVsLSDW229KXp56XFslpmu603\nh6ql1jmWHjP0W+GjXp29eGKg+YLCTKXK0g9/UCfuorxRvweWazgRSeEn08Jv\n8MS/OAHyTJosjl6kWLgtgVhFPWyM8i19+Ml6OJPc3N6Jt/Io5716ZptsAQGr\nYrDJRjXrf5vSIHFKhSLOkDe2YMsUV/JBWgZ3eOBLZKGEhK4UBc3E6asObet8\nkXrQXYVEnZcyKp9IqR7ph308ML9ZSMLElJ6pMJfxJG9bb+t5QJ522kDEv1vs\nHdtE\r\n=OwiX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG9ttEZSmznnu29OS9LIp7PITpix2lB7dq6AjeXOjZauAiAdvE0RNwwAEIVL4pl5nnMvAX7MaJGAITyVEI+HqpM/yQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602767287-9c47bf03.0_1602767425380_0.2530569785962029"},"_hasShrinkwrap":false},"2.21.1-next-1602769664-9c47bf03.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602769664-9c47bf03.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602769664-9c47bf03.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602769664-9c47bf03.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dWiIeTSVmNug7opuE4MT/63qCFZnPVYHe9mvOjke95+IZtW48pwq6IwXZkeFeqH+oP3g5YPwtTG4JKFISLc9zA==","shasum":"0a7587f6b6d96c63a5271d2ad8b6bdb650b02690","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602769664-9c47bf03.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiFOCCRA9TVsSAnZWagAAkfUP/R7aKi1EzdlAbYBewUr5\n9s+syElXbZ/GoE4v1zw7NWJ9m1oUtH8ku2t2HUwQkNLVk8EOhBz/hsrWRavV\nzMXMwBBH1ey7EeqTDVYf5XZOMYyhqsxDbot0fNrI+KEV2adPuunkNtXPWb3C\n6W9ey/8D60bWTsWcUMmZL9uP83Plq7eDdsoZWPXqF564/ehinhaxqacnTDVE\nkcSPX+YvR8lpgQkLXAkUhHGYnrLjpOe5tZnAkjq4zsE3tV37d2MpDQZNoPGL\n5kmhSGWdjuShFVpIYRMJwbU81r3umph+iBjgP8GSVKmw4/8OKrUytCb9FnAT\nAPOKVc/YCTBXTz4FwXzacJVBULt10SArLcMti8oAy+t5BQF1523grY0uKmpr\nBbL+Y/2iu6T78t9malnn3U6fGA/z5Ui7OAJHd5ethNUqLJd1acmkDt9heL3p\nWpTGaTQZj5Q8Pgm3L5b+wDPRbRWMBYC9LXAMzfSTZNGft/M4StNDvJhh2rvH\nER2rGHWD1CH1QN5zjISeLpTb+sWVR7NCwn8AFe5y5fVjL/LfBZ7i+Tqd7Pac\nsKLpAIt1MNSYmnqmNerkzeHdXKPZIV692gwdOySD3Hg1P8fJu1VcKRw1fXE5\nfLo8EWwbRPFt7eCuy1F7kRD/4WZpSw0MlJIUrUa9xsuLANA7AIpgX8wXJ8bV\namG/\r\n=Thip\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBvyqyTZ5AkUw3Z19JDjHHGWCyj/2ea7oz0FDshAe5CAIgRuBheosHBcmEdjZDzCrzoLcTIxJMFM36i9MGfHJEjLg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602769664-9c47bf03.0_1602769794260_0.006297595248847321"},"_hasShrinkwrap":false},"2.21.1-next-1602776559-bfd7427b.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602776559-bfd7427b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602776559-bfd7427b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602776559-bfd7427b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M5hLo+ooIevwYSlJklf1Js5cm9viIWrTAdVm9qLFhL088/7+n0ZPDu5DQqTS80vSRxJwGxsOV8sCr1EpZ9q1xw==","shasum":"e14d8b7e09f846aabc0cda3ab628ad6f0a33489f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602776559-bfd7427b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiG5vCRA9TVsSAnZWagAAcHoP/RCSHklcnP+yY4WUmAZp\nbHhfd9AP/KMzaqBnpkDgh4Jaj4B6cFwwZvdJFPDqP/QYNIqeOcU8yzz89TXG\n7iCcmYqcKSxIb270A0WLZ0BO/FeDzpLPC5m+Ux0NGfg3ahv6EVGYRJjnB3SM\n4dPNoQwgNNW53NmHZqQdPd7s3iNcwL/qVr0J297H463jlnfFGdd4RxSgDL9j\nOyxkMdjbsCq/R2wCEBX90fStdDOVoWs8nTcPtdlBAZjCKDDTPwZNYowePGPw\npRRRE+RwCt5YC1StTjVwcyTaFj1RiUVqkOMejAy7IvVKNWhZP8FJ+pM2RqLk\nOGI9AWrTzHLhZPO4agh2kksJy0eHMFGureNwS7ISwmWbwMBU0FtVSRoyzIux\n5IwfpTHks7fDeof3vV6XdnHpVo7ouLjLvi5uaQOLRnHImuZyS1jfZ1KSKOqx\njvTHYSdFU+nfxmb+9EhUvIotePJ2Z5HIP34EKiNhHJpqzJ5lz0JWLd24hit2\nKf4yrTgGwpJV2q0SnC8CKdCEOiHwzjBs8iSdAAPkXO/zKN17Vx8q2O0Z4ln/\nqU+YAjnbDvfSJr3Cj8X/yZx6utGNnGt/ebYO+VydlH1plr6Y5/OZt6ro7tEh\nYXFzDhEE0m5whzcEWGUy0o0RZaU/YKjpjtOAjOZBwkFWi2KlOh/DF1v6vawA\nKCL5\r\n=YnCQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBO799rRFYx8zLy/W7E/1fWX63D+6ihA4Zgpdco50ex6AiBAPdRNV4XIHTNDYM3e4Q/7J/bag7OsmLyBKIzDCMf4Qw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602776559-bfd7427b.0_1602776686794_0.8462754503272643"},"_hasShrinkwrap":false},"2.21.1-next-1602777435-bfd7427b.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602777435-bfd7427b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602777435-bfd7427b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602777435-bfd7427b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hQbb6FZ0IdZWANQimDze6rxuwkoaDqyv/lJkworXw/JX7kPmseZD5ajEZEjeBHDt2DZLAKoYtOkwQ2llMHa4uw==","shasum":"c6c2fe88187a1c8f1c1062cbda107f15cf4b0993","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602777435-bfd7427b.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiHHNCRA9TVsSAnZWagAAUzMP/07i9QlY4ue66fF6rjUU\nQ6ZD/TmPZXx9MuzDMWTpSE0cWqxb413W4MEwibiIPFjEat1mlCI/cK3/+UFX\nEIumYq/oWVcKq3Q5BzZjBnzrLkC2EyGiHtmPVYQP12217sHWKF+8e8JfvQ5L\n/P6Yuy7iPjlMTLkRi2ronBcno5iyqQRXKZIajG6fVXyUM6XOuMsRU1bqeKqL\nmDcRH/aPlK6jXHwlLoURKVA3JUbPBa4M8Ny5nN9MnXNml4eXfQsm2IDwLzaW\nEkWkbhnY+lX2g/EGPn6B4DA4egdaLmHhJdphdzZdlpHx+bR6f/Q/H2uCyfGM\nuXA4+h6W3evqK1wqd+bePYGQnweQsC0x5lZUitIEh8OqM7CJ+p0cn384sMYR\nINMeaEdfgp2tYx6d/HesJxCW3PUseUC3uX8fzJhqZeXj9lqRRnQVIxgoCszU\n3wlaY14yajMaZzzi6ZWHjCeL+xCrNkX03FLz1vdTHb/ha8/NOPumrKHFo9Wl\nJCpzAnglVbAM91vdKhq8uyzjtFeKR8UQYAU4OwR3eqVYg6H/ZZxmD6mfnAWw\n93culIz3qBlSLv7ii5LqhoWQloKUBOgkaZCMh58U6Bax13/RyoOgEmX7dcwV\n5M7O6gNR/8Nb0pqE9knkUPM3Tmo/8R1xcaWliQh0P6U1wcrgsZSuPjHy/YQ8\njaz2\r\n=15Vx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmMJj6vHZ3qfwlgdxpTrXukyiepSeti1PocqgDg7C8aAIgeB0exIbUCbWfIiQjPHccks2lFN1wngRw8oU4KV2ayBg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602777435-bfd7427b.0_1602777549342_0.6961225294680322"},"_hasShrinkwrap":false},"2.21.1-next-1602804497-9088a61d.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602804497-9088a61d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602804497-9088a61d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602804497-9088a61d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JZ+Osl506jCB7C85eKccfpCRkW/5lwNcVWcarsaJteYQn7k5xRSFDJ7bK5/FtfihyYFn0xpQ8pv6mEPCm3JgVQ==","shasum":"b05dacca5172a8802cf92f70edfa5f6b6939f0a3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602804497-9088a61d.0.tgz","fileCount":56,"unpackedSize":106904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiNutCRA9TVsSAnZWagAATfQQAJY/NWYIKCCRLwx0ahqd\nqDKKhhAWrqPVN6QiGXnnosuFoHuCEhfYjEYOAgInH6dr/SfbTmhR1LgMtQ2O\nxzOssyTa0oXSpgvpFyVWCWbBKFelguZXG8/X3+5XUTGPwmd3gg3DsD5gpGOc\nOc+Zsuto34uvjL7dkY3ykvduPXv3r/PX8lubhHyVJzPVTyb0xFyWEuf5pGGt\n0Xd3WBSkHXPtpO+SV114lvZjnmTXrSxPU9a6d8zcXOX9Wixkipq9hqvvEPUx\nai0woJicJDRzx2OdbaWRPxmCC/rRaE919arbzppZvkoZlgM1TmFagycWTULd\nlVlOesSVqPXpfn0+ccQ8+v+0ZMr00Qnd3qiIcBG35gPMgV5L6c/WI1Vo1qwf\n81JFvuwZQRSYfHNuGeMbsunIfg7TDH/fNASWNhgkyef2k7uoSh687NE7/0Ds\nZUupIjj+4VaMXvL19xuVCzWlPZ7dDVSU0pyGiepc2qqKqchi80bvhTVzKFXw\n8TQHX23GZ9cMmYsRqSf4NpMrX8QyYLO38Co7YKT/I5ceY5dXqGvDsaHv4xGA\nI1ezjef3U+nNSBmZ+gl0VrdQ9F2sgmCSnhsj/qnzF++2fXIS7hDO1c78AF0W\n/gJ5BPYsb5/+eRvkJuSGqnzTOfKkAUDrPuPTAqy/abnKbk7fMTh4KWg/qloP\nDHJQ\r\n=iMbh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFmy7TQaNsOhMp6RntyNa66Tbgf1Y7swHiJy/RD2UfgCAiAM4/oOV6dLyo2HGTnZArRxtG0q6HMtMIDkdh6Vr6dxGA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602804497-9088a61d.0_1602804653169_0.2271152489608277"},"_hasShrinkwrap":false},"2.21.1-next-1602836642-9d327e4b.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602836642-9d327e4b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602836642-9d327e4b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602836642-9d327e4b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bbVU9H/IMVyswKnx2s25g+nOsmgBXU/FuWm29dTB8h99TZssXWKknd+xSazrAWMhpxLIo8vdRkoPw4hXaGY8Yw==","shasum":"5fa04d7308dfdd5041c474fb3eeac231ea2daf3f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602836642-9d327e4b.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiVktCRA9TVsSAnZWagAAAB8P/AmVhFdzesQmcPQbY3T2\n22IcvWUfgqYhZGfPZ7UPAaOPVR4fdLPymji7ZNqOAgZQWZ1Lpq8gtUPuWnEl\nNA3vNqtDa8P0DU/oUt9C98o8xV/yYJNRbSKutqXrYBi4fLsWil0r++Y7ATBU\nRlDLVz0p4L4JYmycCzr67E5DzgronK205Pb/OJGfHDBtnsTNPymuS8jRq5ib\ntbrz0buRZ69/tH2Xu9U4Fv30RAGzpa9OpujNDXBiCVn5YMjCWij5SXSKtJ3w\n5Fvu2FvdUxPLjh2IyCkwjJuJbQ3FkxsAsToRfYRciVfWDCYORQIqMLIncMUt\nczUhG3hCFzb+m8oKwxfMN/SAm//rdYMGA0d4YKuC3fXyVQB2XeOxK/lXJaEQ\nv5Vqr8KMn7ZHiFb/e3vA9u9wodVytxVmkYqGR/f9RoLcpxCSKGtknVItNOHU\nzr31wUNOuOv/jGC7L9UID4gWRbVMJuA4NCDVkZBSdcsXmoe4SzHsaDIFnYKS\nTXCxHrHHOoBL82H2FEEfr0+Y2Eklyq9P21lQnzmpCNiyK88yoQCUyx7bKjaK\nGdE/kZjgL1QoJPMycbfela4aeapArDhxtg/wmAhk/BSR25vcJaKfpQIaEAqS\nz69gai7TGpQr104whe1odySce259z/Ye0qE0vlTfgYErIGqdBYuM/zv2f2BA\nmjhB\r\n=CBdh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFT3rfa1oXo94fYqQ283NLf0/aOoqP/QVx+4BWbiBgvUAiA8AQgBAaXdPeNvwoW8Uo0Z8SZZjIkbKFBQBo5ZfXA5xw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602836642-9d327e4b.0_1602836780972_0.131706328534827"},"_hasShrinkwrap":false},"2.21.1-next-1602838800-68410b50.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602838800-68410b50.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602838800-68410b50.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602838800-68410b50.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UkJ/aDGuwaL/Gle04cFm8SCiOPk+2VbXu4TuiwcL8z8PWem4mHLqMVdyOjpeneJV4lScqrnDRLts4YzShDaC6A==","shasum":"a540397b882efa6d2b230ca1f2cf910db37a8076","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602838800-68410b50.0.tgz","fileCount":58,"unpackedSize":136015,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiWGRCRA9TVsSAnZWagAA2YYP/i+eJdbG10BmCJlLMLgs\nkHSypVTkV2B6XM08sID/Eme2yrJ5H8A2O2JffyF4ZLy/We5p3RnYQ3UikzOq\nhXOv87ZgqXAyqG3HlfucvNMmffU/wyij363mGbZJu34hi+7iGRGfdwm9LRDH\nyTqC18h61Ho8mZVaSA+Gn9P49eh+EvnkmBT6CG+psHptTljo0YLETNdTwa+S\nP565rp+qKILhW3Envs3uZom1ws26cXmyjw21GgIHWYhw/JSfwAZg2EmYB1sY\n+6q85tiQZ3LN1kOjfhO78q3eKDSwLGTNecrfih0fylXhtvCVZbL6XYzxTAUy\n99MpGms4DMGCn+dh/GC201o4uo6GuS1TUkqXfF/Y+vsuN7DAyF3IKjAmOCe4\ncF5JKDrZ5Pg/MOPcD8wqd5/PXVhCnCKU5qIkrAiJK1q6D0vcSezP4XbselfP\nWgAkKNArWNHmQVNxFEBYaWLhF1RDfHyCR9UhXbER6M4ZoHUYkfjAldfibCSz\nS6HbNoZc6SkIeGlpVBHvTQoF9UzU+2vkzkFj4tfnR+3piEzBXV+Awm3l6/Am\nBEKEkpADAnMpAHqs6HuBM4MWwG5Lu0WWZ9RmdbXfG5i2YLOfLht96QkcBwLJ\nexGQwcRLYnjB195UplKSXWXHNoUgmY/D9+RlUkJbH25X6PNPx/sGaoNk13ki\nERZ9\r\n=xwju\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHc7MiCqNFucbkAac80EiJopTicyl58wNm6++BnAvpIwAiEAidSMfx3Vax9C8kWVL7LbQKYU/PHfc4RM9CRmiRKqJMQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602838800-68410b50.0_1602838928903_0.9993749756034145"},"_hasShrinkwrap":false},"2.21.1-next-1602840811-5a73d611.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602840811-5a73d611.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602840811-5a73d611.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602840811-5a73d611.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LDmPGqnZi8XBBnF715i1uG/hN/ULCvlMUz1lhJStgurqg++pgJ1bvnX7zlsxJaLp+Ug/b5qpCdw7s4q5UWdtgw==","shasum":"64de30b420f0f93db8fa436fe142f488ef70c4b0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602840811-5a73d611.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiWlvCRA9TVsSAnZWagAAFFEQAIvoTGIFAYjIkZo84S0p\nlqCQEbxUQ3xw4rulyJUY5IBbgxH/BIn0cP9G3lII8PDA+Ffodmq4naxwAGus\nKsOmFJJzgieuW6QprqPNF2cVMQQFozA4BlKIpem4ERsH43cu1qnsU4b9kTmK\nQeCF9oi7jbLMQQ1PkoE9PmajgnYK8VkJTtDqHm83tDf7ktR0TufxCXzfBA6b\nXivTHKZ5sxXEOgNX1WJlCiXzF5mYP0bH++/HyGeYrYw/Qk0jFxOKixx8vtvg\nnxn6VD2/jdLgAkY1LLPROUJsOLhaEqJybMOOYBnCL+yjRbsNP27jB+ca/waj\nqDFMoVvECyPh2mOvIQmnUWQGzO0AFmxq5RwsWV3BdAKpGzDUkMNAxIiC+vn9\n+FBBuCXFgEmd2CgbfMcxRggmqDdPvNxQ2rOyiZYuGSJYQS++w5GWRdayWffT\nKmGgGq+M8fKU6VdPT4TlW3Vn2H4l6+upNkZmKCPkhSnQZyIO9tUYASgNriz/\n9QiQFSTbCRDQ5I6c7+mBiMtUS4TMQH5JlHmpv0MH4ni9ipg32lcSRwejw8Tx\nVbZrO1lJvTeACwThINxgp69Jpx+bDY2PBNG5BrLHXB79tZmDu8XsJpfUKmsq\n4XnGmVg0xYFeNrrzel/ghkbdsq1M3LLFjNcsqK/NK6eCILtL/VPzmQwzArNL\nozYe\r\n=qYWz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFq93sA6KP0FuVbyZlHqFAZE/KM8pFeVRl692m794VfQIhAPOvmRs5yanw9TDqvfxLXkESwKNoY7v2w3xkOSwg5Alv"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602840811-5a73d611.0_1602840943400_0.16484304132620342"},"_hasShrinkwrap":false},"2.21.1-next-1602840950-da967db9.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602840950-da967db9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602840950-da967db9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602840950-da967db9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GNFPqP+uFsb7FaPRZ4gAXFXjitCHZbNyY9GUzFAxstZfHXWU9iKyKfweI52KNCzby4objdRi4rr18pfLFDytjw==","shasum":"1197a150b9aa926e763e06521cd814a78a83ab89","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602840950-da967db9.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiWn7CRA9TVsSAnZWagAAlzsQAIDty8ptU1EJx6h6R9on\nz5bqR3QikxprU+Ih1NjNxVyNq1trG/SwYnMfd7oL7MeMJ3/1BeTKCu928umP\nByXod68LT1deZW4ro0Jc5wVNWao5XwSjh85WbmB8U8ap6Dr5B2wuYnaHQ4if\nUG4km9QMC+AG7+wdkBUho8YTeCqpFv04Q3TOZirBCHfOJZViX4fRNHlHHzfj\nwuOu7+EwCEl15fBPPo0g+39BKDH28T+9ffCgBlBqbINbRxwfVkBvpTESCNoQ\ny8kRUEqbdPpJgRrk5ypM7PLRfvdtx63PskJgZnJZhUE3SwN3ucZuzU4V2wjC\nIIb93SIf+edMJZZJmyUczHaoSnrmrwLlyJBjH//lIGCPGvoBLZmf2fpYxkOn\nfUH9o0RyI4p7bbshliFmMY1Gl2HXUOsxOcYpdXHowuJVoj4RlrW8OAQ/CH+c\n9wPEvM8hKH62nOKoQudNu1xLzlfFQzFFrXdONZKhzz7+/6IRIK1YzphlOfmu\nChvn3oQhNFj8y1wG+1UfFOVfcQ7JMyO3xbCilvG1P2PF5RLOGqYBuVBJJgRd\nLsat4alMQpVt+exeZN/gAdv/2MLp1UySfp9OYWO2/X6XG4MN8KXmLbyxYyNQ\nCaFTs33goMLeRrU4nxwfcbTYOFq57N1vTgYy4KXodgh2HGweA5p8DrLH6DlG\nCXrd\r\n=hPgo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICsWzEwLQUSCSSvR7gKkgvZVEtEJslnVKBwTs0DIYN18AiEA1ZiKarJpdOc2HSuxVEz180AtzG0o3KlU6N0iq/PVErM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602840950-da967db9.0_1602841082812_0.03947203903490526"},"_hasShrinkwrap":false},"2.21.1-next-1602841108-63099227.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602841108-63099227.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602841108-63099227.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602841108-63099227.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cJZLj2zW3MW5vluO4oFJBpHJHrJbvp1cEaffCR8PXICyAvTX5Qfi+721f0q3zXY/SMr3cYufOHhLU3vgKN4J9g==","shasum":"0ad81c2b13e72b8ad3a1dc7b53a1676112ff7ada","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602841108-63099227.0.tgz","fileCount":58,"unpackedSize":133737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiWqSCRA9TVsSAnZWagAASisP/0864pbV5SYB8CsRIMDk\nGgIM7nSa8eW+QezaScYz/bxKIj6URkAOWr8u8HTcqOCPxkveZy8uBK5JXDJ3\nb82E7zfxLQKwOpnOgPuAnvGVobVIpdbrJCUS4lqyCFhPWAVncZOwiQvztvd5\nX1MJbqKcuNIC1uqY3nTiXWxU2L1Iw0YgYkBCRSmVig/KCUvIIYsEVAwLejVP\nqtwygOJb4G/tpl2kUBahqvrYB5BXNsEK0Q3tZMWWmyFukkIaNk5pWAy7XwFV\n6EYTUC2KBp26RfNA1qHDrCxnIAb3OGXx6wYWjWN+NUkH+VmjR/tZhAp+wmjX\n4cHrM6KtF4KJrcglQITcmzPG0HnUyYaZ8aUUQWOOYzpdLlMrXF1VDWJ90q4q\nOJXH7zDnQUOWmsRjtGB+gtWAMX0s2XSwlZO+Lr0rkrL7hk+O9Y63dZUT2+Wq\nCioIJGhZnoKlHqwTEFuTwmBR4tJpay51Jpvj04saXmxbX5NTsjXcIC/dTxaC\nKyxPNBcCFvWNsza71ss3qF618ngTVqLQyC7BsY4FDENWBKATaGe3LfSPqfSl\nOTQo7rQih7fRkL4t7crfp50SSwsxmzu/7QEi+Q8hY7ix0omjueykqh0aXpzC\nI6msMebghdvoZ8oDGH6iU0y7SCjMg8fzztQ7UNdbLXeWTPGayms+0YCdLAfH\nXUwU\r\n=O0Fg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCA9tGSeeypOAaEg6gWSevBPx4WDqJhKbAK3zelI6KSxAIgVXM4+7mORXIO5JAvEsmJPWZJPgRZe0bJzYwi9OA1Fqk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602841108-63099227.0_1602841233910_0.82913606319411"},"_hasShrinkwrap":false},"2.21.1-next-1602841630-e2e3a5e2.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602841630-e2e3a5e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602841630-e2e3a5e2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602841630-e2e3a5e2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KcPThXjwn3LCOEKRH8BU/rwEf5LMZtDEUDinQfGTZOIqWvERjth1s1ap6BaWr31judc7Z5n2yahj3MhqLCLTbA==","shasum":"a0b707fe666babd177144a1b67a451f310054421","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602841630-e2e3a5e2.0.tgz","fileCount":58,"unpackedSize":133550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiWypCRA9TVsSAnZWagAATvkP/1bKlB3CLGSr5G1slAi1\niZAVe7pnUdbxkzahFlmNXpg6tn0Cot0U3boa1uYPRlyEiWJ4y2rd6vvvzbCe\nT4KHFEQPwy1HwL9Ik3u9PZnhBf0a+BSFHTEnH89M3em6Hyf73pW0touzjJjg\n5pYf8Vs/HD+oEh05NCESVgyPm4jMxn8XetyeFPzzhKZgDo2BReRqHPiH21N3\nRCY8wXOkKTVy48bk3BA3m6LfRXVMQFpAveOptLyuOx/ACBRc7DaZXP5lBeI0\nHgYQCNAVzyuv+n/+oFmMJ/a2krtyp5kKL1F6W+cN46BVnIyPxDEbV4iJeDWU\nXSkWy7ayE+beGFugnnJUnJWa37EfMaysbCpMwHQqR6+pYxjD0/1L/AjhntHl\nkZMOd/N5TYJ70eKikOfgjING37Jx3PbSKqmrfAsqMtN0ZtzNA7JaRfIJhYK6\nLCI3Xg21Qy1NXI4oUtbLoquWd9q2GGGlCwEQWzJG2+cJDQsyzyikKNDZzR9Y\nHbBUDHjC1r5DT36EGZPUxHb0OwaXubVS9cQ5/9SzDEbyKFN7H5q+w0nzxfoD\n53zT7IU99FKx6I6QilCkhGKhaYHtuykupy/lQjzC/md6PnjtCi6x4AFyJJyD\nkrkFxTaxqjSp9Tr2QYvc1NfUfI6aI2S+P2yJyERrUr8mixvw5dWEd8S7zr5I\nkwC5\r\n=8btQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDK5Tjqec0VakIHFilGVuHF6PrPwF8/VGxunuMtv9HmmAIgTEgfmS7b/SsIiSkFTsh2fpwcPyd4OE4OI7eu3MrX2ig="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602841630-e2e3a5e2.0_1602841769539_0.2907825112731004"},"_hasShrinkwrap":false},"2.21.1-next-1602845598-45b50e24.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602845598-45b50e24.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602845598-45b50e24.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602845598-45b50e24.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4EXugTRV3TYSqr5JF/D4EMetSXmrfrzRUIE7uMgHZ6tbe3xEFkO5L2B2HoIBsnLyHJpnWcZtPmNhqFWbdLAdbw==","shasum":"3df680a35b4189664ee7c23299ebde9ffd3c046c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602845598-45b50e24.0.tgz","fileCount":58,"unpackedSize":133406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiXwkCRA9TVsSAnZWagAA57sP/A42GeQtLUfgr1hFfRFr\nPM8yFvfxi9CKYJzQ3g/x6GW8T27zl5cD75Yu2gLAbaW5K3iFLV2dmmoXaFv/\ncs0gJWQjrMTsYlUTPz/hUjYCwI5d9BE5/dsM6j6Y6wIzJ8yFJ4/nhy5rV9HB\nKqZZO/H+JEDwgW4i3amQXQF3eKZwkhTPmddm/dtZPEanLVCW7LagDNN6o4Jx\nLaEH3Ny2eieqfK1RziqqCXY4E5ojA/h3m0aQ6csYqh8dSA1aoK6bgkqK0q8z\n7/THMAS4e8RaGJ9zXn92zkK1NKMmgZu0+gu9G/QV00Uea2pLUKj6x99EBAI0\n9a2bpLtoOHsL5iFtLXRe9NGGok1BzuopAyOPj8FFbYPZGU9/CRjdBvR8g5r1\n2FC6cGmThpXhwz6Mr3oIrV1wscaeVUxOrZQDOoGWp103Uhka7hxLvtKuVpIz\nFcwKFHIvosQUgseSoDSdOvHOKKoA4RIS0pObzqhFrSnRyfylRxHmbdGMR7wk\nYYRGUL0l3vbnzgwOgn/qy/R7SBMrthvuRkdSuXsvsJRNt3UgnzfrjZxbZJwD\no46ctD4P/ZkeGn2wByUs5LNB1iTm6AlSPDP2ZGVuaaiPDmwcCjeknA8MpuEn\nlfCHbX/kmtJWwZWdfH/iDnreiO9cTkvZwYWA2zoYEhabRp0do2/2Qb76qvqG\nz1wy\r\n=lgEg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+vmRjQKy8StiRjc+AoxkyyaQKtO3DOu5ccJZx4g9hTQIgBZKNaMb22ZmrkAUEOlem60wnGoLcSxGaz15/8xdYC2I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602845598-45b50e24.0_1602845731864_0.8381730354324393"},"_hasShrinkwrap":false},"2.21.1-next-1602845759-c00dc71b.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602845759-c00dc71b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602845759-c00dc71b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602845759-c00dc71b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lfOx+ZsRGuiRHPihTbs2CfrHRiJqdCjcm7RnKtLcg3hcfWztgHlMV3zTwHXeDq7/Yj62tLaYnNet2ADRmjO/bg==","shasum":"df8cd2e8ed14ebdb92c5c2139ef82074479913f3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602845759-c00dc71b.0.tgz","fileCount":58,"unpackedSize":133406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiXzLCRA9TVsSAnZWagAAopsP/3PzJbkMSSs8z2PuyL4c\njjcuPe01IntduYqqU2VOjffoHJtdI2Hbo2+/J7/TtgMhkUf3u5CuJ+ca4UAN\niJt5Ek/GbbMYIavz8uf/FtkYiiCMPda0NYsINEWIbItC6WN7ns2Yp4+H2OBW\nBedAUSFNU9gOEM8YqZZV+dfZXBWwf3KAy3ZPtxf/zV6I/4fTRoTboDNCkLRy\n3m1yqx2HDCmkf/70inf5dh91mYNKKq37luqDwy/VNYgCTjgLB7qcadDxS1p2\n+a8SSyvTudTDKklS2MBOKpHliqD2aOBiVGxILMtUBCg63GYL5tBw9M3GYBQw\nMgKBXGKfRckvPyxNDjIq+Y8ZeVHWEh0HzycjU+igDegXe1APdPNYrag+y1PF\nhMwIuX6OjoVO0RKAW0USvbG/nhsKDgtr9WnlwLlv7xJGRt+4x3X693Ckpaff\n8B0C88u7taOK3F4VGG7YCGX3kJ1sUSGFRwp4un1EuhiAAiSHq1m1Eh/6e2t9\ndMJNWuDwM6fce34koxLoSBYA6R1B43F9T5BRqGglOxf6stv/n510VacbfuEm\nNHvE3nuHFD/pYPAJw725ARo8DlYqAJxrSch+ICBxt/yuAgrltTgQkqz4EQUt\nxpjwTjmNP+/G3+pgl11z2ZHWrfbbqVsIm3PYMeJwD7JdQzDauSZO+oxSX18j\nY/gY\r\n=SWMw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsoLQstA/MLpLb1ekPBsbUL3veETD8BbeDw2wgYy2r9gIhAO7WnvBrw30X+qtOY0WOSVfGSFxrMV37mAYhlZJ1BAAV"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602845759-c00dc71b.0_1602845899339_0.3467841264818945"},"_hasShrinkwrap":false},"2.21.1-next-1602846239-9730deff.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602846239-9730deff.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602846239-9730deff.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602846239-9730deff.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/2Yc2+UHQxxzzGobcIKIn5ngnXFRpqNte3dLKXqJt1D2d5ziXmyMCIj3AZ1AO3xfpZS736cCKhgiUsmuQfUgxg==","shasum":"9785aef735b8cc4988e430b6ed00e10a5ed319a1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602846239-9730deff.0.tgz","fileCount":58,"unpackedSize":133406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiX6jCRA9TVsSAnZWagAAx58P/AppbqfROWi75j5GoBjB\nOylyFRcxn1Gd8D+GGMhEXGuzpKYXxBRZFDYC+wdVfO588HM/l+5ZS80kEnjX\n18QoEnwJd6xvcbdX0rTTLJ2T6rjlxu7+aHLAXpd7dQvoS0Iwi60s0VcOmf5N\nPcyg1WiTlqRVinRUUvlvhJML+Oq3NFN6/uf76FGjCAwB6Bz9aoc1EPPP3qUd\nVvVQmGxydNFx9XUjUvydU9LCjCoswM+Y2jh4buYuYh96UG7vRLZgb5+zgtmQ\nQIc3992ihVD9ItS65J3hvMQxQdDlFNEfq0VyjG5crpCfgVzPWVxhR3Jo1P4S\nWMQePhd3NkrykihkNFQSD3+kjzgU0eb2oOt626RRR1SG0wt6aLAilChznHoN\nbpGWlAmXHcr6WPyRsBa0PHhC3FZ2jCcrRNv876aR9YXNJSwSJ7NB9Mmuwzu9\niDFHgpXCBeyJcGMyCxIQAp4D3uPOtLMh8kRt7cNc7CDycySv9qBbrFo3+qFa\nBGu0WLXQuU++JG9WyjgZJLckJ7RUCMbX7I660W9BbpeKaAliYutycWEC2LKv\nFYdjcPkoOHp6zkBEaqC0tEoV62qqw9oyMy/6rhwGivOp4uk+8yyzL9b2E556\n9WlN2dPNNYivaT/81aY+UTsqbOF3mGcwARbuNl9mpCYyG5Edhgy6RVfvNFoN\n6WN5\r\n=pAT5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHHRbZkdS0snBfFpGDBDV8U+9gOmCD1CsalhpzQ+ao9VAiEA3S9gXqxwQYLxc7ipvcl7H4Jmb9pyRSR97WSAJh7HGbk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602846239-9730deff.0_1602846371505_0.2741593434805816"},"_hasShrinkwrap":false},"2.21.1-next-1602846286-15e3907c.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602846286-15e3907c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602846286-15e3907c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602846286-15e3907c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zGZk9o11nDfpPBrK7vhc63tv451OUq6oOlHJIR/+s3J/9VZAIQu+PZXlrUE1kzVedQOTN09gnDbiyhGi1e89ig==","shasum":"55858aafc55c973c400e514eb1562b844f5f611d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602846286-15e3907c.0.tgz","fileCount":58,"unpackedSize":133406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiX7LCRA9TVsSAnZWagAAiD4P/0S+Z2Q9a5wTdaO4LJja\nrAydl5t0mvIDfBeynOCG/hWrxwGxnqMbIHp8Vcru8oXIMQOCNEj6D0dBm+pW\nf/i4Qjjwji2QevTIJh3DZ/QcgPLuhRXYpmhOlkrqjpfFSXwDtkoqiQJmsHtZ\naZj0kISw3rVuL9BzapKKHsM3L5+6aCMcjrErHQf+C5cTJ9JoyNVSTUi4gD2P\ns/TTz1+EA4eIH8LDMxjGt8tt+UqM4DmVrMTLXrEivliInyGpscow5kiFw4B7\nDovTVOIvM5K0FHFgLBYKVb3SyYZzDf1Ulk8ELmSTnlYvJKMAO511VpGsrO9B\nw7KDIQpD5kccL6bf2L/qzAEhZXMHraT+ediydh0TkJiI0PvncVGX2xgKux0c\nkD72VLup/tahybz3Ber+LKlorD/0auESrxwwqGut9D9S+kmgM7OtSB1WnZFb\nzshXCKk6hancu/+TEGSAcxutSHhLTpjl1BeYeRtbD6YgpkeMwJUpxS+v0hp9\n+BCfwk0pjyUscqnEMyEi6r9ZpWdMCwuXFH789FSCyMzdaHmlxDuhSP9Y0WG9\ns3ScZgswZ5/Kpg7p1VYr+bRDfcnQAd0K7h3OcX7cj/uHxMUVGiMrJURb4P7J\nN6lK7z4mhRiENdagTyjdN70C9zjS0H55XGq3JojJhVfWlpDkbMQ0bYb/aamH\nkBWA\r\n=3+dZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAUPDwOB3oqXGWDPZUDhM3NKhakByrgAotoseAEFdEE+AiEAwW3dK8NeDTqp4jPVYrfTxAvZ00ScTrzTCTukzmT9sI4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602846286-15e3907c.0_1602846410578_0.06675513993464288"},"_hasShrinkwrap":false},"2.21.1-next-1602846633-c78dd35b.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602846633-c78dd35b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602846633-c78dd35b.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602846633-c78dd35b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-537MMOEi6mKNnlPRjC2BV/EP7VolOGCdjcZUQNqpFp8u6ZB1YpIQtFUeV8YxTDPJqvzbTzZruR4AZdXhFR/+Gg==","shasum":"054f21f30575e8b6930c3ce26f4ca06656a2c1ed","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602846633-c78dd35b.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiYBKCRA9TVsSAnZWagAAi9EP/0U++anzdxinKxx8U+Wm\nERtzGqhHVKy3yuTvBAsDN5ZnpMN93HmUwHVJuP7IR1mI7Zj0bPm1wRwZ+FJV\nvzb5yqja17n7/A+81O6q/Zd1aATDQar1Ebc5CcuV+Cly9Fv64x41Fa1sOmJF\nB7jwb/n+SPXk8RM14B2Fu1SaqHQ2tqOkTncj9A6vOV1L2WN3u86LP4YJhtJp\ndSnISZB3bSD/wxXmKROYOks6tEzLJSM67H4JA0r2moJf0rW2oKw1A2yw5o0r\nKB6UyZfSf8tUOb8BGkhhDN9tair52vPuWclmSGtCrETf/4lTXNbMmiYdly/U\nDuvZSgufmbl4bzYZyAkfEygYtyHn4QOMm7OiOOGoStzO3no3L7HB7lRUSEqF\nIo7oELX6687aBAaPrhd87X+BuLhz8nS/lru+biAyWwMxKCMkm4KUJfRbJme0\nBhsd5ilX+8SQ7eOfPWD9MzhFFYhx91WfG+68qEkyErNXwFhOvX/gD4Cr+nHE\nQmHBzeFn14lzUyu13fevSGlKfd6zQfI8FAjaY0UE89igw7QFVqQPHHJhaGIc\nzric0DJO/EMo70xDgv4W3DKxik3pNykTku9cmrYYRRtHpgxEniGzJ1Bdtxq1\nFgIm9BpZRrGhVAjxOFu0Me2Jhsba5AY+ETP3ncpQ9d/2UPd5vpPmw7b4yYgT\nsENY\r\n=FmEL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgANX1kVJuu++AeaU1gJrlcWYB1qdKTs2XpMuOETKstwIhAPML3YwQBarfN7q+o6xuQSciJgmMgXNabnxdjioatc1g"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602846633-c78dd35b.0_1602846794444_0.047916730425952014"},"_hasShrinkwrap":false},"2.21.1-next-1602846895-6d2bb271.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602846895-6d2bb271.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602846895-6d2bb271.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602846895-6d2bb271.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LyZdCx0R+F6hFy8iCXKXxZUBUsxALfUEBcxpMqHe+qIAIwPTFfZJZ1dQza118+RoEyBM+NYYvKJiFL/gnRIFzA==","shasum":"87043a8951935cdaa208125174e2607f1b34906b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602846895-6d2bb271.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiYEqCRA9TVsSAnZWagAAm08QAKSPy3klPsuxO5Am0lmB\nE6QqfBrivbXuKkuH6yISgkQRgiGlgMQnaBKFpTWbNlhuTrfETAXXUCg3AMSQ\ncXc5I9tNflRggLmeLA8NZkwbQWW/zXT22RjhRZG7kceXHX2n9Wu7WuF5yq9Q\nCzX6VC3/Uvg9UaJWSKnlB1Sm9U2FxeAGHs5L29pZcyqeGuPvZl2xWmpdnG4h\nBoBpyzRW5haOk+4dd+PFO+z38y0ocYCcfp/4Axy71g6l07e3U4/KpMGvW2O4\nvctmhlbcrSASFea6RVrPt4z55XvH4rGdb6Dr7jhvfc7y4bj2KRwuXCuDOQ1q\n/BCTyMXShhTgIqNcssijLRV1FHUcxBgHmrELF7EZ+vkjvKt5mZVIEb8Aj56Z\nt6GqRrY3UEa7Eh2dHYO14FSXex692v3ht3TFQKqLGH7j4/aY/p9QGdsh3o6q\nNM47niG6NNasrKYbLGkR9h9ZPAB9OmP1xUdO5a72LButsH8AwyB2I04Xh/Y/\nKp7rGlJZHs+jLPimJKzFUXoKcnJUpz75QeyA7Ghb9I9tpofa5DH5KHGqOXvF\ntGlo/uChHVfIXdx099Yf6YcLfWnahKO8uldm8LqcHyePdwnLURCXvTOL92XU\n8gIqeuC+3Lj+MxVzEKbNQkpICEPWOUSUyFocctFwEEQykuseEhLn1XMAJlRH\n58de\r\n=peMR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfMz9Nj4tGHEE6KG4FI4lOckCH3bVI/4DR1h7xkJu9fQIhAMwFqV+UCuZ5vhiwl0Jlj08Ew79R0+S9Y3w6zUsrAOwj"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602846895-6d2bb271.0_1602847017893_0.6352229300175629"},"_hasShrinkwrap":false},"2.21.1-next-1602846989-49e633c4.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602846989-49e633c4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602846989-49e633c4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602846989-49e633c4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WcTu0c8AWrGXbJHfRIfMAopk3KVt3W2O7qZkwy4AWfiUcaJ9k2HWfPtviIunCrf74S8ia3dy66H/S60UQbnIbg==","shasum":"507475672c35a335919ca80be60da5b36394962e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602846989-49e633c4.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiYG3CRA9TVsSAnZWagAAJrYP/Ati+rH3tw0sj3awoNuo\n+JOquOiuGU9pIdB+RaV/bPcqsEysfCmzDsJu1v9qzERKk8AGlhB+BhbSTPj0\nLeofhrVU059QVDynOx1Qcmqrf5Y+TKYwWhlnjuBLTlCW02ekjZm+Vl/EKL7j\nYq3gj4Q8AGtH1Brgcgz0iVmgyCLEJc2v/L+/yTcXJlZ8PK8OoC95J58smUbo\n71+4NvO+Wq5TzLE02aJWd1xgiTNg5VVZwr2VKSmFtkvw9vA+lvs/Ocwue0fi\nAH7Yx/MJqpFs77cD3Phb1vZIlnd77JUhWhja1Xk08gcF+Wi5X4gsEVdI7JTh\nptKlBtwyrSV/BYB8qG5oaWBgN3TZGrhrgLF5RVgXwNIXM2OQtLh/gjo6GHmU\ndrKNz+02et6KjaJNwaX8GYwcQTr0VbHUTWYGqY6bEELD6SwTd76SbkMkt7/w\nT4sBVilZOZNJ3DjX7SSyLJ+WNakwAOtRbQ282jtgs654Sugvo2LAhq0v0I/I\nI/VKb/mNxtPXzIbgVqK5ldHgrV4V1QKaUkM0rqVoa7Y5Yva1Xd/uJtrVwsmC\nMA2OzT1Wd4yI9IhgvI35iod787wvqBinJ4bb84qVs7HQrNxMluDmEd8m7ALC\nIwpchEmcrSSV8h/0c0MRAWpSySkVAbIK2UigJFySy75Kwqx1mo+WB35qnvji\nhRZN\r\n=H8rw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkYgRLmfnSf5Qpu19lcUs8JdcyjAusFMUI9tPE/PAfDgIgPVYzbqeXm+xs9mtrn1yxN34RI+/JFh1Sz5VwbWhiIM0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602846989-49e633c4.0_1602847158748_0.8534471518847391"},"_hasShrinkwrap":false},"2.21.1-next-1602849089-fc690603.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602849089-fc690603.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602849089-fc690603.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602849089-fc690603.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XtlyVMYS3HezOtivb9vgvFLJbINmLbySuoqF67l46XATpYpmJhtwhZtBabFdV6P3rYGPDIHHgAHwivv+5nOzIg==","shasum":"acf2d2c9abb3a7abfe36fd1bd69000bf55eb1ee7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602849089-fc690603.0.tgz","fileCount":58,"unpackedSize":135497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiYm8CRA9TVsSAnZWagAAuBoQAIqp8Rj5Pn3A1D383K0Z\nsL3aQU1x5zGoVilD3/yHulcgp2+NxeAf5xYjKvxinMHMooe5vOVuoxvlDvUo\nLoeVf2STshxTMRz+efw5EOZT/aT6K6EubcDezvk6kWsKoIL9vQVYFSFKBr2p\n6rNN5XvMf1wJsqVGb+j9xAXgFtfxntCzOo3BNr8t0WTkGJlL505cMufvfT1y\nAJD+04RCtJ67ftT77kj6fc4eAEYkkDzndZ1lcc1khBc4rlu+1w0wbM/dq/B/\nNmTb/ZUEXnt63EYPTMIG0jWG+fH365lk2/Cp9lMIJMSVAulQfq7ywcl5ir79\n8lRBS5ONYvtIzWttqBfOpjT8OEXZ1yNCF+f6wfOZZRoI45tE6QBKgzje2yhy\ndD92vyT3EQehPnn5gAoXmrQkZixCUaCtuVRHQjN0ZD340zzeOt3vLRO0W9FQ\n+hNZP7u2QEpaOcEkhqdLT9KUzOQ/1ZABSn+bWh6OBzOrGWOASPl8g48xYxg6\nEuzxg2CtD+UnWG1loj8XshprBpOI/Vh+ujc4OEFlfnySVJZ3gZsULf6uarw3\nXwPOYW2w3HN1vPu0hkI8rr/0wZHee87jIa5mh56PP565qDaZsw+gLhUBaRhN\nKyRYMgTdQjrtPiN0sel42MDl0567Ms3/fsB7AY5Y0yKvz1WSlCzCliSjr5X0\nRknp\r\n=KujJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEfXD48raPLOH4tcNetfJdtdPKs6aevFnkZOZNWaFKB7AiEAlWjuLvvTv2Yj08rKX1F3USjE1+63qqiGxxBx1rphhIg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602849089-fc690603.0_1602849212180_0.33003213610171933"},"_hasShrinkwrap":false},"2.21.1-next-1602851585-37eff8c5.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602851585-37eff8c5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602851585-37eff8c5.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602851585-37eff8c5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cxIsxjYQWHyxM7VojvN7YzVu1gobi/eLQSkFXua1rs+i6c8eMx7xUvgpBmss+2djvCB3QWG7WkLMW+d37sS4AA==","shasum":"6123f94ede7fbdf5e2c1a7ddc45289a5f9e458c9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602851585-37eff8c5.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiZOdCRA9TVsSAnZWagAAcJcP/1Zm32AAjGmIdXnANXbx\nvceZyJTBiRj4mH+bYo6MCZkwgIaJI5YacjCyrQM7RNkEx2PhoBVnRL4V2jmn\ndoK8HUw02+hLIfSex3CIZSPixrZWZfCMS/7s3Mof1k4eS2SW/XJVwVIIieHa\nZZze9FavwPQBp0UIc19cl33VzrFtXhTBbHhKrQ1RUKnTrN0m7ikZ00BKRbhh\n96m+WofuGfwbGuWIZtDujZ95lP/FJ3PDoyOHkO2ed8pBrD+qmm190Fu8rnEO\nHFuIKU6HWQfEoElCnvxGWgXoe6lclLRDNM28fiuh5h9Xp2OTHxgWz/ak6kXh\n35irwnGmMQLZL99wFkcDAsIbl+RI+JgSxLWeBMBCcF3R5UqW3KkbrSVtEPWr\nNcmBFQ1I1VYToBufN9JdneyKel6YFRwc3jX9cIUfJBzbi3t6eTMuu8hrRqfB\nj+5SJ8qCEqeo4LHZ+68pvxve8Ea7WJO2B9udP2wkX0ZQud/tY8Aaf9WI/AUZ\nXZGqpcFHUt/6SsUn/GXufqH5M6wRbf/bSALoz0uesIdeHlM5V6zHIO+6Pc58\nioH2ipUmJJR8SOwKJ6HXODiUVDFBXAGFCN9soB4kkOpP7QJYlPXgO1i8E1P/\nbzI/eF2Uezxg/nm3yj+LATLP32O2DkquaWSi9OH4/v34k+ZKJHRxt3mDIBLl\neLi4\r\n=0nyu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChUUEY/3bXPDYAAmKQmlqVy49ICH163rFci2h0hozdRwIhAJkW1rq+kGnEJFNuR/N14izSQTTu7C5zmYKeVfU65Vnm"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602851585-37eff8c5.0_1602851740795_0.7726105939240069"},"_hasShrinkwrap":false},"2.21.1-next-1602851661-80f72e62.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602851661-80f72e62.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602851661-80f72e62.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602851661-80f72e62.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fDUKq+HR+60BTdW3rGVFiVySOTcFgF7mAh7aHuR66HNMqUXbgT2PCIBFTStsvNw44hEMwEWoVwYK4KAubaaFTQ==","shasum":"e49c778b8a7839d664e4a2021832fbfd2ed078d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602851661-80f72e62.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiZPQCRA9TVsSAnZWagAAf/UP/1b1RJyHM9QeBNPhaheY\nhLUlbPGQpGeKcxuKVx5Bg9EJJAIVb0LEZyzLIJTdT/FECaAFm7S9r3VN/KuQ\nUkB67AFAnIitibJ58VtxvZQqqioW+9pcMAdkol2eHaM4vVQ5qcTHgruqxQvT\nwFqunL+yzsQJCOhtkFTdrrVwL+yhHQ5hCx9LC4QIq2YAVI9uUoQihzrSEmsq\n3c0jVqAPtclETpTAFxWjw5akHS273ZSrTAhIw1n9nxwCAJoklNkBcvxgf5XG\nIz0zcxVFjJhN7+BWCUTXDOXnAgNemeCxfbccW0e0TW1uyJRg8Nz1Y2aZQYdL\nD1Z4GTTC1viOevnpsaqZwHkTBesmPgu+z72+5pHbWcBAZCHRaOwV5XkmL+FO\nIWryZreVkHPvv9EDh9Ned72Ll42oLxVcoYCGIg0FVofiOUj4SwKt4RU3QLd3\niBW1LWyYOHvSCvD/nI5UAdD3gjri4lTh+y8Y39yhdYe/VCzsfYOlKI/2p5VX\nFmjNg2syTWsIe2vT2+2Rh4gmXSvBwmnl5/F5jgoEDJh1w/ZrwU/QUuf1+VE9\newVhudqtbJ0pxX1sTaTl1dXcbLx5/p8vdv0OS9lTOb6rjyYfXEmzCmePzkdS\n8+oDs6GZxqgaXuHB2rY2AfKx4O9QrI5LNtBMUuasREq+0V+s+zvXKwmBG9uT\noZi2\r\n=3+Sx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIECi2+iUZraV0EJtvKTr40YTIvghHY5iLpyhiirBtO5TAiEA7uL32RdKeeN+zFLPgXHwn9bvY8Jg0MTV1soivpF6qQg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602851661-80f72e62.0_1602851791505_0.16504236914595505"},"_hasShrinkwrap":false},"2.21.1-next-1602851750-c2b1afa1.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602851750-c2b1afa1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602851750-c2b1afa1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602851750-c2b1afa1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EqVRO23qaEfHvBzj35vTrP9bq/hFOjqNWRrsqtfd5eMgSqinfy5TkZ5+C197RI0CSQQ0TIY324vHytP56Vf1qQ==","shasum":"f9fab510a07b45a338ac4eecd940af476d0194b1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602851750-c2b1afa1.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiZQYCRA9TVsSAnZWagAA6iQP/0vjSGyIZABBhsJeGaHd\nfoQHx8ttsRQyLrZ1q0hopnojPss/SS30rDEWiLndnZX//+i4kOifvo1+f60O\nxT/MxNocKAeyzKxYfkk766Qz8YySgIla1avl8NJUssmBSOqkrQ+HIVTL7+3/\nou8JR3MJL8+/3L2KOVEMf+94Os2Vn5wqOHIJ9PCBsQq1t9InWrrp8Te8Fu6y\nrfnnIpnzPslFuV4ZqWHLxAKJEA4nynb1QD00CMKxu9D2aW3EmoWcW4Z1BQF+\nhpP0RgTtIFjHGTjTg5nu7VCTOMe32A1gk9fpTfBXXKC0WHd+xB+ERNSM3XNL\n3LG28dxLUtVytmde0LfrSKU3QtbLmqBb5tLVxaqoPh1jtIE1/pkwyVlsnFV9\nWA62dT1eFOdmS0/9NjfS0yzy1qRwUjjVP9eN2u63gm2h99Cuere+fFGZY193\nzt8sAd3+B7AaSBzqdfD4jmHPg+7YHG2aqUgwDwpjHUoW6DX/iE8jwKn+jRu7\n2o9MYIeOj8RRY82l95NAX78X4pdnuAkoh5rzC4mzWvJhOHHUSwhUdV4N58vp\n1WM0XD90V0TwcZuAF3DNJbDjpnPo62U0nOo8+EvVH3BiZ6a867s71QxEGAtU\nqvzY66zHkhXRVS+PfKbEfUMgz06Ek72iuaVFi2PfSX+bIKB38yLWF05IlJTH\nUJSs\r\n=rGp2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDckAKqlI+1j4vT8GSdQJTORRXYGJgDN1BLyts3kJlGmQIhALTLHNoYTrVBhdyCPpp7xhPtltYp3iklxVEEMlWqOA5g"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602851750-c2b1afa1.0_1602851863871_0.9722860137805298"},"_hasShrinkwrap":false},"2.21.1-next-1602855409-d5919591.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602855409-d5919591.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602855409-d5919591.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602855409-d5919591.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZkKMjQo07NthlBcH/GjK41H/M5oAkk6aj462P/d6TsNajKenh3aruxcwr8wfczkRvMEPTF8thWXm8aTXwEdNYQ==","shasum":"7d2b6052b4d6933bc9345c20c11d1bfac1ca3cc7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602855409-d5919591.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiaJ2CRA9TVsSAnZWagAAWXYP/3uRHHZd9C+rsolc1n3Q\nfu7SWY3azWBQaePRekL8r6FGZDg2aQ1tjUPx5ZC1HhTYkdrjxiz0GqdgXEKt\n+nxrNRTU7CQ5J8tNV5erufw6uBHldOKMKBdXkF9HCXLAJufx0kS5VmRoPpZP\nDOyVfmt1xFrvD2lETInPeGOPmFTvwlV97HKZriH8KJgQ6N6s14Zk7lqpVBpJ\nQoY02cUhRs/pOiIA/InESFeBqDm+xRiIfYFT1EeXc71qRMucpy4WcXv8uV2C\nlO7/Kqyr4ea9ExnnUNJS8pbw1dlaQSNPttUOKsELClBtSFclwKL9YwZX+Fs2\nzYWommESz1oc3rqWPaOfhPyl3+bK9gNoQ9jkyPggZ93nyMCrGTqp5msn1lb9\n9/+GVzrvRuOWfMcXy+7YmhzE6nUq2ETb8PxIMJPmnLzcVWOizdXe6zLFnGzf\ns9VL0jcjMBD/B6HoSI+Npx1QbZJ6K0gv6k0v2VE6vKtN0nE0wTvlbJ51w0rJ\nQChsXoh8zclSvT1uMrOS4AJamV6U4IBejYoxGu6twbwwL/BxqlBplOxy4eTT\nW6JVKX3l2qeNgVUVER3sM25Rw75gIFnNy94jbPw2VOacB0yi42oI3MrGxbQj\nMnoaWfaY8GG8uIKzJ4n1JbotsYwUmRGn9YKNIxr22bKMvQXJQTLgMxqN1ETm\nkmrh\r\n=h/sR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwN1xUhb2Q3X8bQFRJIHniFalZcv5QC/N+JMZMQgWY9AIgHzzQLXh/kJuz3a4CsSWws2uZUf2YgOwX40PR3h/WXSE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602855409-d5919591.0_1602855541912_0.43599964165035243"},"_hasShrinkwrap":false},"2.21.1-next-1602855743-9140fa3c.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602855743-9140fa3c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602855743-9140fa3c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602855743-9140fa3c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uW2ZWbnHSugK4fgzS0lbafQFG6HFRGkFJ/eK1B0uRLGPJz9kvacm5FVytGXeR7gnazioUZlnc0Smz6hfRgdcZg==","shasum":"af629926d9e80dfd46dd8048411c9736d1c0df69","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602855743-9140fa3c.0.tgz","fileCount":58,"unpackedSize":132262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiaPHCRA9TVsSAnZWagAAbnwP/jv+tNx3m9myutZeMO2k\nk6SahJjCkRkf7WOsCrN21lQHyGTw16IqzkMvLWrikif14+13yq2kCxI/F5VK\n/3NYd/JD2dHJ1/Fm3JL/IvqCZXSmO1ybyEDQjxt2DAgweB8vdmBnvELRXCHC\nW9vFWKmLLPqO131Gz5UORvCX1VREOv6HeHlbHbAoQbx9x4SlHGHUNNOpDDf2\nZFrc86ETHvpzXVVFwMxNRgUZ0iRV8ccJkw1oISGNH5hEPJsztWsJ4j/NbLTC\nDMyL9mRMzf+Wfvw4VVN5+rp+DNVZVChvEfVeNglzlSfzxdGdfN0WF4sZ1fzj\nXDAbskesO9SgmFTQdpzCFDJeVYizSQVpU5RICbcdeVie/w0vM+disxFsKERR\nIp9cnyqBZiw9YOW1BssF5YfjbbpkTfhEadh3cQskPbKy7eGLszVFWxs+VEo1\nX6OlCLck0R7qLFj9FXagDoSZDTYBmQ5x08XH99HyjXHqxaAdefoDWl7s78rh\nMK5tG18GJ91h3CSLGY2ZqUkzpVBpuvft76/ho308O/r5CnFtfBVPUBJJDotY\ncY94pZU5aCcJYCY/HnERmn0SogDDE7/SYvWx3amvzwRYGotLVwg0oWQa3BFK\nat8wb4KVDOjJOormw+s7/5loN0VRuqv306xxlfXcEEvALbFpwtx5oePI41h9\nRO+a\r\n=KitD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDawFXkSHkEOjll+soreBuaY/0MCoea2GDqMe3ViZxlXwIgeWpP27EjoX+VQMbWGwJua71gXX7MwmxPGUNKWygHvJY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602855743-9140fa3c.0_1602855878673_0.16927215737251577"},"_hasShrinkwrap":false},"2.21.1-next-1602860399-46c2ba7e.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602860399-46c2ba7e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602860399-46c2ba7e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602860399-46c2ba7e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jpUwPdK4TukiIKGN4nu1jkSLVvuvBNTSv4GAtK+VkNq3YcPfMoWTSQAGRrJHM2AL/D6qFUhyObs2jUiv2RQieA==","shasum":"00c753641fefbaad816e6a1cdcf47ebec46b9247","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602860399-46c2ba7e.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfibX5CRA9TVsSAnZWagAAMEQP/iRH/q3Q79pQGv47Ocw2\n88R5v+wy2dNnBRT2gi6mYSNHtVfKV3ys8dUOVvjkoCogCFAdZUuXRAmryRZl\nkSOTa5e9sDi6FVPL2EzMpTWmiVBbPKzJiFsArcfM2i8m1pnR+DmAhLDekyp9\n39FG/JEoSPYPACAC6vER5gjKyTnvhvXB4aDEP7lsUkzkv32VwIs9Q9DDgEK+\n7Mpfsm8bJDht4Pt7OVyMu7d6HnynQhWs/L8xqgf6WznipkrSK281EEwJXcQx\nW33dwxyExnH7GAuukXYySiqO32V/fqv06zmZ5hbdi17wRJwdoHMGn/1YCrUc\nNPMtF73enwAkcgu6RNPkjpjHY9go0u7s3Gy9z/vj3lUk9yt08pRQRp8WLwtl\nCMpp5ZIoqC0zKDkGAPFROdnyiCakXilvUgL5GRY3kxZOCouqjSvSV4lZwOc7\n27iRZZM68ldQnJptigyFZwYoZ+JWDMknXfPOliSVFcIumzw1oDeq9xwGPyl2\nOwiPbFGIXhPryw2ZxhKaoeHZMctH9MTyNNViqelFR3AHNtjLWhATf9MPzZpx\nIoIn2HGxqOzrlvzTEWTjRjvvgRFn8qbCgiCl3hkdYDVepmQXqTnfyfW79O79\nGWSvlAYKKhUZ52WUiqn4Kxcmdm66PL8eTHuOO9rcAonorDZRBBEwgDLudDXW\nQKyk\r\n=xTPa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD66zSuYuOhdBiw8vTqKuJHwE/43GUp1ADgAQJUW1lr/wIgdfTm7oCKU+/hlpCqv870xPjgEjhA/rEYOmQpx0GYId8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602860399-46c2ba7e.0_1602860536559_0.6404928810044503"},"_hasShrinkwrap":false},"2.21.1-next-1602860607-e751eeaf.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602860607-e751eeaf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602860607-e751eeaf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602860607-e751eeaf.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-C4cxwinE/TkRLnNMzNgS3CSWdcRLbUGL5m/5pEj7NcG1nEr7LzYNbKaUklYUEHf28JMlo/ayFkTCOrjC25Uz4A==","shasum":"f9b22b36bd2c6b7147cec6f6cd75f05e9d0f3cd1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602860607-e751eeaf.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfibbECRA9TVsSAnZWagAAtw8QAJ25htILdUxjnjcw/KLW\nw8pqNJPXEqg67yoDK7GA6PXdEryKNoSvhw3irTRdc9DgJTe9z+586PuJnny9\ngtB+hpO41rwzPxW6OX5iZZfmW0VoljlASArDYFJrk/VhbWPVXzS6tfvpWI0I\nEDT7HjMMj1pCNM8n9T1tFyawOliW3NaGYWO9OQpkBGou/vRdwNUYjsaoUOO3\nZrUqjEINX7q5ANDr++rnnak8UmXC0o7is2i8i5ydMHdcktBcIeW2DUk4vqXZ\noxPpYIPtKXQpEPzNsYXWFcbFi8ZBt12CnQ2YOqRulHZqCQjWLngs0rcMnPqH\nNk6ykTGtks9U2oax5gDO/3ezSMPBwyXpDRIE6/KKXtP2FBoxx102X6WZJlif\nbaeaUHT7rUkhB5tfYHCTse5S1VexgsJVevpuQASZ7jJxlXswQnKAgMg1lq9D\nZgRtkqD0PmnYcbKS8/O/iQSltGiTJxfT/wJOk9eXYloUcMy8SgUpWlogVnzt\nBgrU/WxDhmPYo9GnOe+DnVt1dZk8hcvu/zLUuyp7fWbqyRpTtiKZqEf0cFLT\nFGICnZASDoqjP7m++M5GodZ3GgYbesapsBSEp0tsveFBQofkw7A0IWkMpATu\naRU4i0VlFV466kvbWXQS4npP7NQU1rs/I1vElQxlrEFDXtJ0g258+XFKex7y\n/1rt\r\n=ZdAU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsyctxixlyEGjMrWd+93KqKkAl1jTrJo+fZdZ2FsHYjAIgYbYdzd5emOgg/9Xt/kJDhFBH2Dr+9gxCFPbMuj/+GNA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602860607-e751eeaf.0_1602860739997_0.18188864306648433"},"_hasShrinkwrap":false},"2.21.1-next-1602861398-46c2ba7e.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602861398-46c2ba7e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602861398-46c2ba7e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602861398-46c2ba7e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ea812i++K9Fgr7V01+sfDN/RrTN+9LM9odM3jm0zjwOYAhXYax1BPd9zAbtyH6P22tr8pDqeFBmUEdRwLma0Zg==","shasum":"43edd49c45b6608f77091e389925d9c891a658fb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602861398-46c2ba7e.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfibnlCRA9TVsSAnZWagAAEVIQAI3ELRAF2VJ/IDwVwJFK\n6x1Ag81Q8rNO7gPaTGn6j4iFez4BMDzITrXnjNjBnfdBzf+/0uB8oy1oE3IQ\nWpRTqki9n45z+IuJCf+0ETBmCJP9ItZ3p3b5x9n52cWBImyWgTOkbUrsdJEJ\ngSk5kR5RbM/zHhI7C20gWgeIcT02cSGKu740qNRrzQu6R2jpsBEvCHs+mZIb\n4Cjr9tipx/6CtjagwMcvXd4TnBREsY9mIpN7QW+gop89gi9qB6CNG8CYt2c8\nd4XorW39FwEmAp6b9XeIGWbnz86j6C4lP2uUdu8Wi7ohqY8FB7qgFznbjXGY\n+7y3qVqZMj7ycCH7ZPlE/5n7aoK44hf7J53WQd7Kt1HhRC7H7R1z0HQZqbLz\ncEMrJVYGTgAaw8zRwcNYEOZWA9WeqpXNUsDbcuNWOANwnjUkT+xL+hn91aII\nSJ2XvgFbGKLosTXppxeR3jyAog+5TsBaB7UvG4gTLxPQgN2NoR8NccNYUU5i\n6kIovbcPqRW98YsWV2X+LoiiL+5B5bMUOos/JR8iobG9VAvCd3VVRIxQ0gAs\nsa44z7pOUk3wS1kgMHIUDS6RyYoTR/Crz2aFmOi+sP8EibiMLr2Ck0hqpo9p\nwhrUTcK/0e7hfZxuGX9RnA0Ze0YaX2N7UwEcGqPut71izk1WhtEBOaYOifNE\nKIqI\r\n=sam8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYMYcG49Zb/xLA2y4CbByHhaxmVexWemfi7PAzi7URFgIgUXKcuiVcNoxDUTyNk9JKK0Ty4+QPaQwP7fGEr1Pogzk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602861398-46c2ba7e.0_1602861541501_0.8178285017178895"},"_hasShrinkwrap":false},"2.21.1-next-1602862052-4c1f11ad.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602862052-4c1f11ad.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602862052-4c1f11ad.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602862052-4c1f11ad.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fj8nYcpFwuo7mSvCC28qLTWpsOBwb47y7L3Gcqi0X3kPwBhj0+PSMjjYDz2SV2paRblRebeqkWYE4/KhDtwpcg==","shasum":"649079f79b48fde0a7aac38408275e74c3dcad0a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602862052-4c1f11ad.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfibxkCRA9TVsSAnZWagAAxaAQAJyn1g2w5M/vp03v6WNA\nIWyXz4jyr+wvxRUQsidROCE6bcKsjNLzor3tMFu3vVCpSgur8YHjUXw9EOv/\n7+K6slUiPDjw9xMaWpxlNkW0reKfSBYBUqZrq1S4wS4K1yrMbfP6nFlVngt+\nyB/cV1ybuqEY8L0Y0OX8phpsa3ENvpufccJyCpQcZSd8oOcPCMHhjkH8vKqH\njBFXTZdWSJotlq6ACYq83HU8GQ9kpq0hofBL5DcRiXxeZAeQYmX+7PHGsZ0Z\nMWLBHsLh47A0BhLoK0yBHmzERA3hKOwoVlHoXIX/ECgxp5g7+FxAsN29UnGl\nUPRpl2cVXQYS8gku2+DnjVEMCThAqWk83BIZUJB1IOBOAQ0M36TyfJ45TLKI\ntgqxeV4QsThMWTbl/+XshQumQgYzcsbPVjGeis5VlJ1XHW9UKyl5DSrS6DLR\nz9DbfViwSghToS3A0p1lF2jcswv2y4hPVdaGR3vsrFxqQth9C/8W6akXlmoP\ndh7edFioEaqhsvnOnGekiC4YFLSs4wucO/pJo3giYWD9T0ULNHydVSgxkp+k\nHjRDoRxtHPllk341CRXotOfn2vUqp5XSBLdYchHEviymn37T3o7NsZAMVN7K\nrSI+o43l6TG+gI4aNPLvKELoGPbhUaslMkJ6gcp6gkociKaF0L4JUlxd2ZPY\n6htP\r\n=Nq1d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLJXi02DLHGl1/8VUANlDxd5BuFJpe14I2n+j79Vt5FAiBHvLWqfN3s2KGs8KOsDeSeL8fQKXP1Z2jR1FyVLJZU2g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602862052-4c1f11ad.0_1602862180227_0.8907839971609253"},"_hasShrinkwrap":false},"2.21.1-next-1602862681-bec2722a.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602862681-bec2722a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602862681-bec2722a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602862681-bec2722a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XpLnw7zpYF6TF+niRifoEU+qJw283X2ekzI9GH0Jn2YPgHzRf93la7t73eHWgbFF6DeT1kFFXDbewgWP4BKQDg==","shasum":"1f4586b9df1a49b7b122371d716eef71059a8226","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602862681-bec2722a.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfib7hCRA9TVsSAnZWagAAnFQP/31RuKB7Yc5UvTqUuJwx\nKtBJKMvsO/ZLj2B0JZ9tmE9nOpRbEbnW2X13EZNxN0HcfocI4OkSXpIJNPNL\nb0OusznEHhtc5Pn7ZzEZudM7jdjsnjGI9AgzdwHzCuUplZadMlNrC9kqjTOV\nz9dLkBikquzPkRI/+gJNBcT3mgQ0vq4rTsJlcXyaLrkUeK8w0qglZA2KLwbr\ndjc2u1MPo9KuXNMmIoZhFwlSwiRZuDualOzUkmXmmc+6q12tUP2bS7ezTNJ4\njszeqB3uRNtX4JfpVaJIxyYyV4PPWVPNJ+rRqVnFZl2cj6j8Zf03lZRVmKDJ\n0ESduuu+2qSCvcnWQx8SEdQvntb5A7BwtNPxcIFVrWgYJjy62p7VbUTHM5KC\npF2miLzUEpeflox/yA7jV3NvRvYsm0HBHYMXGBUy7xXgj1jP3+6PC62d3FzH\nIzgzYVODnetS47awDnExUQVVeFzuV9o5XGqZefK9u5FJDJHo41XdVA/d0rqJ\ncwTiOFZXYCsZD2xUu7hrmJKJ13JncB2Yo1iyazNUYRQDql0XWiwXNX7nZeJG\nNn/uuPKARRGi+eNDK887SzjGsLM6pnntMsMVjaWcj0MRHDPTPUTC/zE/pyJ4\n1lbAMHLlKmnR3v4XzUHlHU2aSnEMr1Xjy2lODXUupuyCKpBmwN+tGLDzNEWg\nmoGT\r\n=LY46\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBBLHtjxs9Ifyk6vqFpBhV1K4EUn/bH5nST0sjznoL2jAiB2L0n10vs/jg65l6xk2wQ+uUZETuKec9xz2m9nJxR9Hw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602862681-bec2722a.0_1602862817104_0.48251699545553395"},"_hasShrinkwrap":false},"2.21.1-next-1602862900-d03bc1e1.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602862900-d03bc1e1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602862900-d03bc1e1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602862900-d03bc1e1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-b3l5yMZCbl3cpmdxFceCRylSO0nfaSygIXXE5jAsgk8XcopEapPiG4MitDTI6Rw+xTQHTDeIMC+6tuD8fwHLpg==","shasum":"0bfab4e689e0412e2129d09c0ea3dcf3a2bee71f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602862900-d03bc1e1.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfib+xCRA9TVsSAnZWagAAUWsP/i7pt3nuC7i3L5A2OdWe\nFTmP9cm1ClzjDKtOqPl38w8UoHFZU+1I6dMyOKqb7wEHH3TUhqxlKkA5Ld9W\n4UYp3LYqoSgYEaVLMg2Q3+svJ7/0IO7wWH+CkhKAxO0t+CG0bQL5BGKX9yoD\nqET0ENc9fqDa6LD46andjkLsE0ELxHO0xvEkN2z5Tq05IS3xWwDde3h6eajQ\n4h4EMRbtSjqU+Uf2uxLePmyOV8EBv0p3kfuf5nIHuPM5TdnviAdZF+aMntmK\njFdf+OhT7mDFruS2csAhjpyVFI3DxdaNklxYlKQfsBrhs1Zy8i10Y+xQ9Qtx\nDQaQfGHDXYmDj4eT9wLVD0zS4ISlzX6xsSxiHZvJM/ET7Gvq7jjZLSGP6tp3\n/r/niKjuXHGVDBcTRFkGjJM5Q5nUZE2pS9gtUb2CaKMegpx0tBFuemJBMKZ/\nSSsqV36EAe83b9lSacuImasuw56VWyZ5O5+YDoH4t1b7vH1O1NVgfMRPhuBl\nojphrepFhStoUxwpkeG5hrLtlX3SYk6uw9HIO+/145GvM/eCUQ+e3tPzrW3H\nwaTu5Nw/weMyGmdiKO/+7pBjnlx2o6fMtSPcGP8aFk9SxDiUK1x3tz3TSl8S\nf5i7NssyUs6pfmVWbmefhrfwpq4ETLkVuvKwFhVPYStP+SniapNrE10K30Qp\naEVf\r\n=qfsM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjqnr+VfkHrba/ORmRrOOgWVT9vu2jfrvfcCGmlbaEMwIgMNm2s/JyAnquRv2tDNeOgY9m7wLqQ4e8zrHV7dyuXu8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602862900-d03bc1e1.0_1602863024775_0.31533406175617706"},"_hasShrinkwrap":false},"2.21.1-next-1602863792-f97b8ea9.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602863792-f97b8ea9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602863792-f97b8ea9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602863792-f97b8ea9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-m5Pq13MSdfndsur/1mJqdmH3LMtPtEST0165nWRjt0pLWB9SaFwGxx0jopVa7CdnLdiEohAcvSYzvotS2kGxtQ==","shasum":"a9b8bff2e7d53b2660e2327cb4a22612da92c887","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602863792-f97b8ea9.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJficM3CRA9TVsSAnZWagAAfPAP/3SqSpO8KFekGRtcR+wD\nBOg2EhlmDbfh3+j/PzoBd/1WbvXAWhuMFGkbgIHQ8YtQCcpeln9BIcEvCLKQ\nVRWE5vLQvVI3exN9JmArAmHw39ar4V8lvojxDIoohIZGgEjJ07OEeQhh7Ivj\nce+Sie8FlzBhMJD0QyCc06aantc4K/30WKIyTkXbAVOjWYEHKmgXBaGMSz0T\noIn+he2WAkdCA/lqPwUbEzIDmMagfBCUswsFmCeAR+KtcIFtFWpALD+97Ssg\ndF3p1knCrZuhiK5HbMBYnVkBfwyHq0maWutXL1wJd7Xkl8c5iYFAOxhWZeYi\nO/YNXIyyPLgTumDWHqskNIjgn0gdYzh1hNTcPUmetQ76DTvnbnFZT0xSGo9o\n85KCmGHNcYAXu0Ls4rFUjqGRWtlHbdNaVmzhXxdPVGzvWWvC9nZFWwJ9oR1/\nGjCU9g1MswfO41hTM5JS9dzzwtWKZyQC0rOtwFa1K+6y8EQXOt/XiyQL28qa\n/o2RmbSGpaLyb9A2POj+oaEp5HTHkLFOldSy53hmLhn4lq2mgXnQ+iTBtVpR\nk1saomuPAs2laPhxutBHo6Zf4zX6Sk6swzxbMkAbU4zhrBEWvbxGeju+wlRt\nHvUvsTAzpeNHaou+D5HfG7NtM5vwF8Ul650UK9su3G8+RQ8d3/ya6Zn7QTaL\nuYr7\r\n=mW81\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIGR0x2bTdxtlIhl/1XD6Dlms+72T0jYWi2iwAPUNoFCzAh8evw/vCxHEbchUBcO56LrpXYoV3dayoDUXXe/c8CUY"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602863792-f97b8ea9.0_1602863926632_0.12322118935111659"},"_hasShrinkwrap":false},"2.21.1-next-1602863921-53768ec1.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602863921-53768ec1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602863921-53768ec1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602863921-53768ec1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NUzPNs6k+Xs53lx4hlpk5OCTtXFGxnaPBujbK/UoyBWpgoqbM0WSaK0hZChShDRJ2G2UbHUOI5be3FgBVpWfvA==","shasum":"36bdef2caebdb01ff79f8a962d9fe39d06f7a854","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602863921-53768ec1.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJficPWCRA9TVsSAnZWagAA/a4P/R/zpiFH/0UwwZLwjgjM\n+zrbzyE/ewpNFrTLHVxmQ06lJCbZYESQGcRpuQmYKG+VptMRKcpY2Rrw9xK4\nndshVWeSjiCCxOf6m527yL367/2O1HIR3Qrnx7rL+TIT47L1qhUpvw4PC8Nj\ncNCDomEI68Mt104RXIQV33tAkiO7AID994kNGvnmrhfcJ/npXxjid8P5PbxW\nd88pPsx3xRpJBdFX++3+JvCt4qhwKXcLRm36tpiOrD6wX5jTEHBdtqXQOjxE\nWe4NSz2TC9H9GzknLxPQKwYwWw0ZFH1jquZ1CsrddLpD84dzorXZuFCyGTOr\nHy20e0yBaIopgdD9xgVCw84Tu45vXQjN0fDnzxm2dpljuS9bTa9OzvnPNWS8\nGmH5JCODum1jw9QUKNY5OGRE4rhj2NG8vVXv8U89Gybpk2OvzBWXYpJeoOUf\nPWyLV6YIoHhEfJ6xjv114+rWNII3+3vS54soaSzrFBznPdsKdrsE52zYjDRB\n8Jgd7nXucOhdvEAJf8IjzDPahNwXiFAmW4UUBJf1QX1k74eMtW9kp4RiDf21\nziNX1YZiMEeD3S3oGOXQcLxFIyhlgoEvuMBoV70f6HMLvqxd8oYrBDStJlJ6\n2kS1x91EL1u/kAh/rcMHon15/kuSqr2Bkb9U7Fya0fw6+gH4u7tsCttghjh4\nguyK\r\n=r4uw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGUhubsDXo8gDnlQUn/wQ3SzFKQPJq/V9bCItqQHLqvNAiAdDCjmHt6U9iJo8sLJnVqk/kPkBbGogpjWXDwSNirbrA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602863921-53768ec1.0_1602864086363_0.5326078677984016"},"_hasShrinkwrap":false},"2.21.1-next-1602864030-4c1f11ad.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602864030-4c1f11ad.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602864030-4c1f11ad.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602864030-4c1f11ad.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OnaWIK5ixohiX4Vos2l2waI/l3b3LMT0iJyy+ysqmIALtugENlTpohUTCvs6XHy9OGJQksM1fJmwQ1Groy5Z9Q==","shasum":"aa27ca91aebbf84a2fcf117b39f5e9759f27370c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602864030-4c1f11ad.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJficQoCRA9TVsSAnZWagAA43kP/A19Ak70mnQ6COlLXXL5\nTJG7HWGN75SeQoROIhE0fon4aU3LGIx2RwAJ/mD8G7PugcHMjjVUEY8qS4Ya\nMg2hJ4S/OY6kUU4FJikjHx2ED2/cybF7PWj4gaLSAloxegG/VtR/xulxGtPh\nfd6IXCQRGQrmTEZGVDNRUyRpwJ8txgrz5835l90gAg3IkfN+pCj3Kpjts76Y\naGBXzaKJs1XJm9Oobfa0XS2f+hBUKJTQ7VXSbrpNo049ZM/pZG+mr0uamLzv\n9Hxz7k72Tk3G+GEpq8SivKWbS2VIekFn374Mea9UJJRkpqmgkHhYZFZX+7qY\nb4ooUy0VIFTaeGSSkTabTSZfSWPiuVyZtgdOEzin1Giotyzgl7GOlVPAZWuu\ngqUjM08mEQmEruEmgoTfw28SZFgehAtbgDsvs9AJN7U56eX11jl+VHyseuJH\nUPBnhERW38nlOXmpY0vuqIpfSJ3H5zvxZOiOhP9myUF5480cR8F5x2T8FoaL\nIzgtGtwdUfNxaoBTgFKUpILFUjIzwxATkP4rcizoIGTb+ddZelwbEKs2nGjg\n95Lwo3TUmS5kjuSiBpFDcEX1YBmmIPMqdQFiNT63eLeLiTtFR8zsaNPjiUFo\nwoKlfntAgYfDwEn4/AUeLbWu6/v6JK1zOSLuZK8dnq4RpOXyW5I//MCNUk4R\n1lSO\r\n=9Kmb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqoGf9gKWLnFL7E2aokIn2AovBps5jS2+RT+cNqnTeQQIhAO+WX13afSPfNMNl7VgQL8un0LuwXUjlbi/csZExvDdv"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602864030-4c1f11ad.0_1602864168158_0.6813244216404066"},"_hasShrinkwrap":false},"2.21.1-next-1602870118-f97b8ea9.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602870118-f97b8ea9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602870118-f97b8ea9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602870118-f97b8ea9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cUcdLch9awXmHYQGHZjR4yC29YEaKge8VJpjR7OGfP2LlnrWQmtzCSKsQBSyQFB42+3i2QWsrPP9KpsKz1Oetg==","shasum":"b1cc6bd95c504f1ace5441c81f5848a45e5083e4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602870118-f97b8ea9.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfidvxCRA9TVsSAnZWagAA53IP/iAuGcMl7QthqZWnelH+\nLSVCkTxHrpGLQ4b/+J3E/wLN/F0X6no5gl+oaAIKOd4Nc7cPkR49CPdYJtBC\n4wXJ9XDb35pBdvflXZ0wEzg5PWn2cO1ZsDE9AhBMj5t2b6I1dGy5tRhAu6Pw\nKmN6aUjLe7SXMmkPaBys0FWAqNbkrRYjMPlolPQi+3BCfHj6arA3ivnVfjGt\njlwKz1gJFMOerOE6Dwtzt/mbuxl6LNnJYqn01uM6ArWv5Gx6ZDNwr6l2+und\nWXT6arWy+QvTyvus29k0cvii+sn9JmFTerbNkw9TT02w0N30RF1SpfM3Pnzs\nqZQaydTZLnd9YuOtyGLvYr24Pos5uZMH4Yc/Gqns/yTUQiEyzxv9cGHY49ct\nDYH+WO58FB2hE7cHyKb4xo5N2XxajuP0wi87YZnLXCBFrMGsufp+Oj/3Jhh4\ndUoto7Z4q6+avd8MPaFu7DCrjFhTcGcm5p1iVHsUCt4j3gWUP5ubTKtzZ4ok\nMxORDaEujZOtbZkLNQTZ2tHjTemg9Mw4IjDO/BV03EsSwDc//DltM+7+WsRB\nC9HRAW+hAmhgj2VNCDFnT28gfKU6R1VyPkgKyheHYaUa4STnCyJptipt5y2P\nZloO5fxhuSM5i1uEE/wbGkKElaUMcpm3EHC6JcrWDaaKGGCWmYxWM7AV08sU\nVyMb\r\n=86n7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmrZgtPnsf6fC57y3pCSQ3Xry4/fVJSxEGQ3px9PxJEwIhAPS2ocCuQ6lqxTbiBQJygogQHDIoWioC5/5zxLzwjRHQ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602870118-f97b8ea9.0_1602870257101_0.3362752357163974"},"_hasShrinkwrap":false},"2.21.1-next-1602870438-80f72e62.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602870438-80f72e62.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602870438-80f72e62.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602870438-80f72e62.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wIeqiMtBp0CaFvm0TkewCQzLLWsLWTFb23Y2PlIuVVjheWae/01y8bPOmJV+1YlLo1JKZl4jNHBw0wHtMQVlbg==","shasum":"4badb512335d4fba2335c5f42de963104b7c956b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602870438-80f72e62.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfid0uCRA9TVsSAnZWagAA7WoP/13L3SJABwGcynCc+TVE\nSphHA00kKQiAsmaEiZWDAwpNPhrEQio5YJyoKWst6/1GdW3nnt/cfuC5gdUL\n/ouW9joLG8Ir+mwKyA2Jbs0COijQSVEYqBqrNr5HdLNVYsBSlUNOHwXActtH\n1VRQnOtN2Qj7K5qjcP7KVQoGKXFQqkv3LNpoUNlpM5TVpcPAl+zvurmxvtjj\nhuMhuZlqTCOJUxy0EqHEYk7J366t3by+QchTb8Hk4hLRvbYVnrJfAidpX3jU\nEWlf50EdZm21bC0m2vQO7GCnFSmOkxlRM99iGAHUZZSap9vpmZ3vCCjnQPQh\nkyyZ5vVSTU4LiZTHvjLJnFyXikTp1Ik2xcIzRqBzmu5MM3QSblJPephP1xZ1\ndB46bqokwlfC3EiLx0ZeV6kw9PgCECG/gYUvVUHmSlsTLwAEskincDBoypzQ\nbHkiqpFsKGehni2ggx8jR79vG0nP0Bhq2RPeb360SmMqPATvcUzZIrxMz5Yl\nEbVTPzgvJwMs4TFPXL0oNG8SV4Yr6MiEG+aqfqyuh1OZIS3yx8sG8XNQ+wOT\n0ucX0FX3HTHHtGJIjOfSBHzQUI5qqDqil91EWjfc8YiKoU7TUDk3EFNDUIQv\nn00GqYG/J1B9ELIja5vfhQMYqNrO+488+nIVKXP0bd/PoqFNphn1miWDFaVv\naKA/\r\n=VauU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNwgcZ6qbGy7jHQreLYsCwH2MOA5rtru5PcrZlEoKblwIgYVdi7nU7wj2K7xeaYHziyrlmm1jfMmNfzWgNbGQiTjc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602870438-80f72e62.0_1602870574174_0.2464999324737236"},"_hasShrinkwrap":false},"2.21.1-next-1602871143-9b195101.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602871143-9b195101.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602871143-9b195101.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602871143-9b195101.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/c4J09SKtkHHZTB7eo8+TQs4blReVPWSBP137TrZZK/PlaJKX5/cpLKXIP8tX9Vp02LmidIyODWfERvmI/IeyQ==","shasum":"5e8d220cc97cc3d0092525fdf726a355a1a59878","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602871143-9b195101.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfieAHCRA9TVsSAnZWagAA738P/jbiqnxTZg3mUlITqJLK\nUGeaxl2/8H4TJuzo9nsv36WCWmlgcBLJR46CJA3BhoSY9yhg0eMrIGtumyvr\n2u1PbaHDdAByP/DoxoJ47sIHqzKwcSGNaO+h5gSMwt9zMlZR1y/Wj3+K3W59\nDYE5yCiryHPw2P6e9kGa68VOLaLfEmuSjbCXk2fSmlgRKiCNMwhdlpp3GMNf\n6EEmLERakJGAoFj9OTe/5htWYozAMH+Wby8aCh+l0p270jKpDaHuD416C3bn\nTnTOJR7uL9c6S3EfTZCWidTlP3AyeRfo4NzK628IatzulxUJa3U6S0WMKUuC\nyUceVanWunN4/9YTHM9DYaE75aTOJDRs7S7XCOHLe9ZAmzX9ON47sWCk+coz\nteusqFoZ76/CKQAzzqBIcAnh1GL6Dlvp4JKM37f8fAeEK9tfxZPZbJMh78fm\nAvKo0MPoWPFdp5qaR+E/IwsCaer+kEMpH3HmlhK8/jLPO5mz5+Pq7Qee1VZH\niN/38B5n6UG//skoCjelZut4xKYae+eDYnefBOg9JJYQAauHiumq64fD6k60\nQ884i9vwdcSqbaO/SjZUFAcwLqQI+l5RWm6F29o2ZqK6u5r1hGbKecyioLkO\n6QRtmIhURyLheYahmgt9JPdwb64VprfEZBg1v4+tUvXX9vTueo6AqtxVBLt/\n9JQL\r\n=cERt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH9nSVrDSv81/qvDP8Dra28tTIcYpbco28QZW0HPeWsNAiAOPFyhqyiwjxsllKStNPdELuX5z7B6Rv8KLOSYxLEhog=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602871143-9b195101.0_1602871302537_0.9219896333536151"},"_hasShrinkwrap":false},"2.21.1-next-1602871201-7f53dc34.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602871201-7f53dc34.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602871201-7f53dc34.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602871201-7f53dc34.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-G1YBX6Xoz0OiX3jpsYCBFnzL3VA1ToRKWRURvVH/P7qdIpjXo3XHzrWRQPqKigrR0vhnsB1wSMkYkQ0EbFuxXg==","shasum":"03627f0ebb6dc4a9a4a0c86e0ec7b8f84bfc60dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602871201-7f53dc34.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfieA0CRA9TVsSAnZWagAAbicP/1KobW8eV2gDaBmxPmrC\nfZHSCwmSWZyyXaypFPvYmef4S7AFiP0kcxtehCpwPP+HHYOfDdgLgwZ1SYYN\n+Zio3cZR/2Ts5C599m/BT+T9E3hv+tN/F17AEkJk3Qyg2+u4yMQr9YfVo9Xd\nI3YwC37+KqIv90nY7BV24WRU1LjJHI+Jnz5X/XkPIBcMseKdJZEXDU41yZxe\nQ4UBKDvsyiCx6CixiN1WbBffq6PR9a0lu4g9lT/G24b0LAucShezQxCjF3g8\nrrqg1fkp9TXJAiqwurudR6knrYBBsk/TjjJbkHStLeCzXKit0z6U9KmJBf+3\n5Hw/pfjSegMYIqYsZKGyHwByHBsWx6pbzWsHD2hq/zJCEGoPajA4oFlyGg1v\n59D47JQfo5K6R0F7STb9LzOFz+LNDf5HukkmKGKBHj8YdcUrLNBaD7Cc60LC\ny1yDiRzkTrJMmEsLKElb1PmmTlUOwQ1eA/cednGLWBbiIExeK9TWcKsJ+me2\nWSvye0DueUJGaqCUCcKidIiZVDmFSNz+85rfzNPGY8wyz55eo6NTmcrdLMC7\nU1a4nIo4EnAC1kyQrG7p2Hqc9zhX5uhgqovuwG/JWfXVKQtFcNH5W/UeQQc1\nG1RaW8ZLj+bt7rynh+BuFty86b0cmqM1yKdaZAIhfCsxqbhu8KBbu1k0/CJw\nwDsU\r\n=uOkr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9UilH1WLUytVhnieF6sYCn2s3kNmwBvQ+Z9rSSsnseQIgAyye20qTqEliN5MrSWpsdrlwNjbYCS4Z1/5DGQCpVn8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602871201-7f53dc34.0_1602871348135_0.6247472474652025"},"_hasShrinkwrap":false},"2.21.1-next-1602878817-96f51397.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1602878817-96f51397.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1602878817-96f51397.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1602878817-96f51397.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-q2JQu2d33SlRuKtVZRGMTHz+JOaLdsSDTeCTrsej0fPHfleD7Bm3xWif61DhjQz1duwEOlXRx0gdKlUuM55mNw==","shasum":"19a5de8a188ccd49c188252518d694d2c8dfae4d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1602878817-96f51397.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfif3tCRA9TVsSAnZWagAAtX0QAIdxh+6EUdZ8kAQeGln8\nacF/gJuEgtzHUOeBTTe1gk+PMmOG6QNZeJke75yeMMvaslZ3IA/th87j+/wO\nm10wBN6LSoXvcXy17I83IpcHyFmtwk74HnkOdxTC9jB7cKMg4a/VsRMZn2zY\nu+BURWI4Fzszd3KEF0yoX36QdFE7hRUaONPc+F8EvVJPm4gVekNprPInxETa\n00pEB0PFBcX4YPPqZyLF1tmDHskDepnLJnDyY/PKIVspRcNc74DO7trOgRlJ\nmvAhezgIAW71KZ8shRX9ULgNUqI0ui4P875ONwD/tk7Wh+/OfZa2xve3hWlR\nP6vv3ss6aSSNB5Jng92EpNPVLMrwP3SHoxNqyTONRZsVaiUTo9z1V9VGfU49\ndUc6R27DLOLa261ryxedw3tgsYWhgUNGlPQxdjaHBLppIVp3kGHvu66bcjw4\njU8Ko+Yh3ILsf+NEzWu3XmLjKERoG3QdjQ+g6VtMXgeR1/wJESKMWr5WfKKd\n6x08iEkMRguDsH+/qYhjpKEpc1IUXCKjL4koVJFoCN5AMgHFi85GkNRcJ1cN\nstq2R2aUD2dovhHZtud4XX6hJoOEt0mByKnZx6g+mgzJBl1uOhlfjcSEyilr\nPpVMp/N++m3y2lvnZ+evSRYvE4AZgO4NMwMyuDtcZBDn7lAv5xpFJwn+WBeR\nJI6J\r\n=DfWA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDczgCD0i/SaBpiSWYcuvalnpka4MoVceJhTrVqhybKhAiAMyfsbZUNNaKlIXiApTGh3qZSmh2fqIGjFRtoUNKs4DQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1602878817-96f51397.0_1602878956660_0.043449494966951496"},"_hasShrinkwrap":false},"2.21.1-next-1603096398-19e6693a.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1603096398-19e6693a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1603096398-19e6693a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1603096398-19e6693a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HxGSVLaNAISQrH5PsjSzQlWnvMhJI/0FpMCU0AHyLRYNt+bdTB5xhMfSeNDAjPlstHz8lUodAYbNy/CYjkh7qA==","shasum":"f5aec3d7d742b5f8cc0e3382d04c4289526714cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1603096398-19e6693a.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjU/cCRA9TVsSAnZWagAAxoUQAI8uqSRIizl0SbrEQpMr\nsY05IJ99zPuIDmWghWYX0LOZffAay0FDdnM8cFHCnDRns3GhdGwV3Z/RMF+M\njNIo3AkCcQaZBMLeYXYT05tGJQOeLs4gGl4YwNRLjnhz5GvaWYh+prlOuUZm\nj2ezH3PVvTZ4iykeOhO3fe4NNPkDTE2q1wFdQAKRcJYc0x+zhvLWkzaZjnBt\nQvLu2jsmOvQjrtaMxwLtT2GpD0Saz6pILqAGo4+FSMQOFxT9Hdvvs9gzAWnA\n947/A5sUjYa5cmHX0CDjQh+MoFcAUUnUNewX/ZpcTvKriHJJbNmsVYwaDc9S\nHpfHTQCFVwsE0H/PLmz4cCvIZE92zw51Rd5n4I5UUanKXQY74t5vQyOsESOS\noiWgck50fyqsN8cgCYHyW+VcvAKI1mn1243DLqyBl1MMKt+ctSbEN6ofNDdJ\nF7havdskk87Ws4uWQ9CeNGR3xx999To1xRnR0kFhxAGMBUsKFYsLehMC4Z/5\n3cas38ZMy9SKy5UGGCD6Emihwu9rWVObxMmooa4vydEyEKZBojEn7MQRIdj7\npfEdbLiC0wQ5hZEtgcWPLFuNqMzWeBxk6SNX4fzN9nMPE2mXjyrJzALbq5kW\nd+/sbXNnNCuDnOPmrUEQGv+CKNNH1aJOSyUS10P7ntL2sCWfX8iNUVhzRuoM\nKDcB\r\n=F6yE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGiXDKl/68CExrJ6o5ao6IdEJhPNpzMGhMXhEnTAYGmLAiAmqLSEjOaqnvpAhzWDe/wjBeK8rxXrHql2LOc6nTxfIw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1603096398-19e6693a.0_1603096540040_0.5706987399817174"},"_hasShrinkwrap":false},"2.21.1-next-1603100701-545add88.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1603100701-545add88.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1603100701-545add88.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1603100701-545add88.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-htebAUoFUJ4HPjXXXRvviXePhplEXO4Leub126y7nxFPNOWUWq6Nhv3ZVZioxCDJJyEKdDw6NSdMjBmmCQe4pA==","shasum":"68db4ef0b95a663050dfa7ac5d4179129486946a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1603100701-545add88.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjWC7CRA9TVsSAnZWagAAKfsP/0/vI5StH4O1cqzA6rMp\ngjVI/zrt08jdmHUZ61OSjabwHNr8aWvNAmQUNkeumIhuFxzf+7dOr0Guk8Va\nuFOsq594+yw3r2UHazfPbS4Ij5HgdpN/qGxMp14W3KCJp/Bd4G09RxAg0N3o\nMTzkHgE2cT+pS4FB3t0LgzKcMGWp1jbHy0BrA0MTyPRuNurJj2nG//Wgk+3O\nO8ZmisC98Q/yzawGknLM6FPUDzKXgL4lz56GcGLV/oh9c9nslw/38TjJZiPU\nd/vi63EYqIi/sQneK4z6LosW+9onbTMUcm9PEspQjsQjhdgqosYN8nI0bxj6\n7tMT7rAsaMa1jLLaRcWJq62LDkjEnVugC0NDOv8JdBf1c38bhrGd9qQ0Ne3x\nQPSYf7FvNwIaYI169bAEUelQ3zGpSV8iZDy02v4gQLv+GqraiF8A7Ka1qBTH\nAg8624XpO1M2pJH8Hz8FeIIlJ6g7KpWbeA+7dF/tTfGQFlYFGQiqAkX3RFWw\n4Mg5wM7W9zCaVPpgNEORTA1B1MwqPWV9kWurh1bBMw4JJrcFjNtcfdHk4xt+\n0KxrQSipMIycgrqMazc8rQpICtSHDEIZdsR2BPT3/VuA+Z/gS7g9Bi3MQDFl\nVgxNjH1cb/1Qa8qN+ZgXVJWwUvSjDfbV5wBPji11/945Da9LKHeSEjwBqkQH\nDo6o\r\n=ufQp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHhIK3FtLbwc9+Y+/Te9N2SpQ0UUtpPgHG7bSqlWFstJAiEAk5fDqwnvlB4LgGg4RTXZoAYmahDGNeoyrXLTeyuFVrU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1603100701-545add88.0_1603100858874_0.8320150970854063"},"_hasShrinkwrap":false},"2.21.1-next-1603102087-a375e296.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1603102087-a375e296.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1603102087-a375e296.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1603102087-a375e296.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-slbMEDSW1Oa+CW1tNbWtCYxF2I7A5vQJPV+jmJwb/6R1rlZJmTTWFidKwIZL6CXlpp5yq4s0ez8t0iB0QQjMXA==","shasum":"f25a8891af0b8aa872062e3fcf22677b1e8159e7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1603102087-a375e296.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjWYKCRA9TVsSAnZWagAAsf8P/i2mgJvNhn11v4P++oiU\nqhz7qba3KFnwJsgXxzYRtPhbQrSf32NXCQm0MdkDrSauxGrQz4gFYwpiuRa5\n6s5dmcRKntamlkPsgBZ6k9JKx94Xz6NTNarg37b5S7znaQVJvMn4jscK2qqk\n/eJR1zINSbMQqJKcUORxsFr8ZDFwCQ520vsUmrZ5FykcfqbYsNeRLKN9H4bU\nXc2XOYauXfDeCSTIobod7oMbUzMrGQO/coo5yeBf4KYFwYqB7MTlxJcN5KcX\ngT6e0QZh23I24N+/76l0l8irn5gz6Xp/r0fGh07ygp0NJrO/gdn6rjgvKbPi\nr5u0o80t92bM+rpFVcpG4Xv9biFsRJ+2q1BCrDbu8gTwoqNQ6RDcjM2e7KaA\nrweagKXmT36i3eG7clTKy0S59yQZORQnyCHzrE9kCW+HjX6LnFf16auc5I6/\nKAMVj+EMgeiEy5v9HGlEIFfCAbCf/wW59rImC4qYoFqRC5JDrDZW+K00VRhr\niTEwoCpXRMYBhoxgkpO7cko2vrSsYtkKjx3FMhoOCyCWP43wTwePmD+9VJi8\ndedBIJBATQX/1hovxzOzRe83FtKrkmDwnz1UlZH70PzTFXp2Ac4m9EQavXYV\nC4vA6DcjYd3rSuC4l0xRoHs1MZzQFC56D8W6BpwyaU5tOOlLArPwdf4sMJIC\n1pUF\r\n=B6Tr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBATqRnrHKA7nbW+9Nf3EKcfMmhXqzzX3FlUJIV1NLUAAiEA2gL+rLFThr4ig7ueNx7PDpOftlU9MseUoaTFuzvP5gs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1603102087-a375e296.0_1603102217627_0.3741189947276322"},"_hasShrinkwrap":false},"2.21.1-next-1603103237-9766692d.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1603103237-9766692d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1603103237-9766692d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1603103237-9766692d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MfrQaJTb01D4zcbqFMIWUJwRkQbPg4c/WE3cDW5Y8es1QLJK8efB+4iPnY9h/9FrXMf99OfPPKaI+6de0XMn4A==","shasum":"78e3ce0bde9072b97431d2a1de661690acd4f9e8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1603103237-9766692d.0.tgz","fileCount":58,"unpackedSize":134081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjWqNCRA9TVsSAnZWagAAEQkP/R8hidFi3VjxTDotovnw\nFX2DxlGISNS3aCGlXrsffZ6xfQD0zyO0ZeYVAufa1yzx11nIWsKlI1qqnZhc\nXBO13DIGM1vfFI3XkYUTacSf2Nb+7NqCdwebyvC47doqHEJ9ZHsy1uxxdhd+\nSiSd4j1Yvj6keTS/yeeuGctRETE78X0qtbdP4q37oHg/oiDfsPdJwsaoEgmh\n4Dy0udWBb7v0WwzeKAP+9wPXRIXygqb11zDJq7QNU1Na1kypaIY/4orDw8kC\nKfgvy1htKV5lq84YV/aqmoRvp4NLSrTobPx/Wvzx9FmKScM3VwHFTXXSWo8U\nxZMumzegCAz8SEr3cBt1yD440fS36szE+8edrIS9AKnEtVPMoHjr95No11dv\nsUnD1s2P7wyQ/x077a/J2VJMYoAF8kgqotBmrwhyuupc6UfCLrloUEwyXtEc\nJw7ZZW1qo177c0Ost8PyEz+Gv6wy70hMNo2J1bBGivCbTOhDTc77hE6V5hI/\n+D52fP3ghBO46WHmFvDjaeJIGHCeeFi2youRHlbLOgRiyPpwGVwi0UBtSCeF\nxzr/uJQPnqfT2mf3aeGyB+PctMEPRboD4CCSOEaFzZicofLirzZjYgRJRADo\nrsXVpiqr4iZuqd1r9eh/Gqdc6BT+o5N8M6jgCZDLGmagPdD1rOZZ2UHx/Ig1\nOui0\r\n=UxjX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHhK3jsTADbY1vuyhYq4rv/C8Od9yTu7Y5e70EeGSLySAiBjmY0WIs5IUHVSkEaUBWYRQkmKGK4pvN2b88RuGQG8pQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1603103237-9766692d.0_1603103372697_0.5888363553951215"},"_hasShrinkwrap":false},"2.21.1-next-1603104774-264e2f87.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1603104774-264e2f87.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1603104774-264e2f87.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1603104774-264e2f87.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oM82NoOvnbXAkMFiv/7A6jZa6BfFy4U4K954RzilSUBw1U1RITGLsm/m4p4W+uSr5MQRYFskM++tYk/DJZKhuA==","shasum":"16651b2c7356dd786c4a48233e743f8e172a687b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1603104774-264e2f87.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjXCJCRA9TVsSAnZWagAAiYYP/2OqaupD6jOMYnECZVUf\nxG0dcr5Px0jedSh8axUOmteRtNtgLPkggp1Ve6UZVmjvQNBxM9B44qlQJaZN\nuunoWjYljI+g5dV1bOjbNYdvHUvjqT8h6xRoqEKX+Utd/Yi0q40D+YnoUGw2\nk9J8pZFi891slt3T1gz76gUg+skKRW4Rb6n759zbBcgYqln+b4nB61rqd/CM\nsia2w7Qy+fuJyIeylftCp7563dXa8sz+zApRzjF/ztnxTaFKgSay7Ja0iOXw\nwaaTXoEhckW89bbTOuuctp3cbPQXyvyU/CTeVDcwg3K5Bi5wa9UmR+r7CiQy\n5x4AmU79oLIawhZ/obXJADVZOw0krX1lInR6mVyBsAiippCBgXmwBUIgHw2m\ntt4IYRYofbxnQmJPmHhpn38Zn2ofwALqcgM30mJMlEjuc/ywHfz5R2VPpSlk\noCqvpEn+F9SZvAQ3Mm/Fm/8zSK2iE1oiD4DDzaP/LwNq26h8am1DY2wPVHlt\nixOiNovxh1NmxUZeNwjrrB3k3/k5xmwfUY7JyLMlCnJJoMUQl5aKEu/YPJHf\nGMqQq/zdKDDkDGxMYR2Mw7rMu2xLn4SPIstkPjWWFkC12KpTaxMj7jt2Li9R\ndpeEGreRb79+yRDIZWHibhVf0bjGNdNpCSK2Nibzh7AeSTSVVdDRCvNhhmuQ\n32Le\r\n=8tIQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRvRfvxVMDuiocIEJPrVr1/PeTmdJSn+nyWtzYqITlAAiEAquowSVIxZuMGygvjI7n9jhlrSrLZvFwqnB6sPQiLNF8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1603104774-264e2f87.0_1603104905223_0.6985115464818379"},"_hasShrinkwrap":false},"2.21.1-next-1603105056-24799d83.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1603105056-24799d83.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1603105056-24799d83.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1603105056-24799d83.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xDvVRYqHvyk89lzjHV06zHfmtI/S2Ej+at3/a47mRnwaXEjdE0ilmZp2Audf4AScI9wjOL4YwP0jT+725L8Hrw==","shasum":"68598a455a25bf9d5635cd13f703149fa59793f6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1603105056-24799d83.0.tgz","fileCount":58,"unpackedSize":134081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjXGjCRA9TVsSAnZWagAAqAYP+wYDoRNnYoaOET6A1hKD\nVlSfZCIkCM0e2MhyDZGruWHu80Z4plF1vHuxLdALKL9JIinVFN1/GauHrLih\nWh3MvDjHhsd+Os8QcnvuLS6LxwVFHdi5wiwEyRWoTyh+T2tYYTQ9OObt33QU\nlF4pIa785+pj+OnJE76GqoIbgYlkNM0axRb54pRJg6PIxxJj5r858S8lbk1i\nFqIR6xXftQGOY7naWYhlzUD/4R5zUVHIT/CnAv8q39cjyMb8ZI6w8iOsAsnA\nsxutPPcdKuTf9miKwQkoO4hUHK5brR1VKnTqokpaFz/h6byHxDyROBlaJCqr\nd38wO0mkm8aOT58c41cvSjPsGk4wvP5qWkqiqddj0ofdLEBGuO1MnEDmJOCV\nQowls6IQUkZov42Fd7VHTapSUNuoG0rXTt4pS/IJ4Co/eOmxklkE3aREzvEb\nqQaBsBLZruFpwLQ33+zwU7vYCaHbPwwC3mRJoKhT/h+qMzXv/2NI8SgiWVcX\nH11nVYWSnyFcgvZHnJZFHnKb5LIfdnTSv8GUtxJukZd3nyg0QP8RraG3HZMe\nqqultojEyqgiC9xVu1nkWWXagK5AdzaeOJsEn9q7pZzBSNUGool+iUFrN3V1\n6cuEQYmuOgGc9rwBZ9ei9hqXsj7xCA5j4WpWWSgNfQW0h7oaV0UYQ/6OeJD3\noI2V\r\n=rryu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8Yn6qcACPC9surZ6s/aWWaqW+vL/pGOw6iWFRog7crgIgN9yga5h4hw1zxMv5r+I8HvMJEbWEqU0iZb1UaGdh4Xg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1603105056-24799d83.0_1603105186687_0.7276528224690253"},"_hasShrinkwrap":false},"2.21.1-next-1603105206-31de407c.0":{"name":"@xdn/prefetch","version":"2.21.1-next-1603105206-31de407c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.21.1-next-1603105206-31de407c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.21.1-next-1603105206-31de407c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lncMA+JCUK4YHe3hchC+OShOyqA6sMZEqNcSgYMj28pwdzFVokloUTVtE0ZIqZJXEeKvsIFF9KuuPan/j1zIZA==","shasum":"d094b491f3947f52c75942b24cc4c088abca6ddc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.21.1-next-1603105206-31de407c.0.tgz","fileCount":58,"unpackedSize":134081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjXI8CRA9TVsSAnZWagAAyqUP+QFi0lEoAxbthGFM56G0\nEbUn8wId7ZJnWMHP5SW+Soyw8Iz2WN5ViBG0BXZrSVPWSqNMZgkCDfXnNj4Q\npDttY9rB6jAQ7nHjGgcQRX+QTsum64G2ybYFxFwzyVchkUBbxHcFaL9qj+gi\n24lanjXqj1u6rRy4AtliYgymQOX/2krOe1vSN+uPK//eIlIcepUOatajA4Ca\nxtgRvMW6lkhMG/WAbcZh0ajbZnV5+5B39KOMZCIUpi3AxMuqE4zX3rDMYzs/\nfXid7k9mhIng8ckd8U/uontJ0pRaSkOps5WKbgtP/cHq6KCSLnErT9oFFqkv\nqr8MHo+1JS74LQxTb8lnxxXQ0Axo1N5pG4Gr7AwFF0N+P/j9N1jSiJRZ35vu\nzJlFY9f69+LAMCryqQPb+pStpsYLpC+MylLiURAbTx7+WuC7DQi70sYv+sit\n8C3KEjg1T2a0teY3ErEgViZ6uMAM+qzF5LvaukkH9v4IaOfGv76L34xezlNr\nQF4zytGzXTVLy6CLxyXeeBKbh9KAaN/r1y9XUwKQvBupMWrghQapZc5jKyHd\nbC2hmNU+Vfmv/9CdpdKBFied6vpIGDmVdfHvA8+NDzx6VOG0qRQtz5q34ulp\nzvS0bTbF/CwrxdSsrCEbMhX3csOTyCCfiHVqWel1r5CW9iKVv9+H+2eorS8C\nyYvV\r\n=Xwl0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHt7X2kkYjZRp4yMZllWK4nO0me8qYw+L/PXdZGiVr0gIhAMDr0Cv0OupumIIdUdsAFEouvhTTFEO4rJppo8EdFODP"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.21.1-next-1603105206-31de407c.0_1603105340209_0.752383750820754"},"_hasShrinkwrap":false},"2.22.1-next-1603107408-9fee9faf.0":{"name":"@xdn/prefetch","version":"2.22.1-next-1603107408-9fee9faf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.22.1-next-1603107408-9fee9faf.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.22.1-next-1603107408-9fee9faf.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aSGtA1wDnkl2Z3ImgaOzXBNDcRR18OEiRjzHZJdI9MWc+a3dpDJLjmbU3+89Yvz+1hMHBDamGp1MkzKpxWU1EA==","shasum":"6727c69e9afbae7ca008a265bdaaa1f6edb886a3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.22.1-next-1603107408-9fee9faf.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjXrYCRA9TVsSAnZWagAA+eYP/1Y5Z/GT9kKzHz0imyZ5\ndiqwcZgLvdIlRDaCxmWjXzL/+GFrwaBpnQtX/kjJQjPM5N5RA6uEy6RgPDcv\nsTFFA0wOtBgmzZ2JZezmn9k5KXZ9ogRJ9PsF3N1xhRu19UCWjta9PqMV2ZMS\nQIzTnL/dMsqrScY/z1cqZ4XSYOmmO7dUWIJFhx8jIQGGFe+GU1D53D3ixsyJ\no9uF5SUYLxOP0ylEQj1DcpFdkHn8F+u36L+4CiTVSZV97j2WQ81l1wTx/h10\naBFbTJgibS/RukRDbGsHcL+zg910vM3VIrik/RAA3EMtlGg4IyD0Zq4RGTRp\nKQXe9NhByF2W5QQw08uxS4mtef4L31glIh4jNap8ZLNUq0d5FuErE6a1yqYG\nuNGYdCfp5AZI5ctIQr159ID6BX7M1EN5TvXBeBN7XXXwTzpAXPw4kIDd3Pqn\nrQOYs2+1TFTvsOUQK+ebRbsLBOOOFZnV21P+ktymEDrIOwBYRgsEIqcRVIH3\nG8zq61ghaAEDn0yFTwRhDooT1+MA0wmgzdfkKQw1MFeO4LAk12v45qRdQLSN\n1MALrCdkKeck5hX5rioaL4W6Q6iIF2gaBJdIahGRjDMsqJRXGYawamsBV4q7\nkibjhvoNk82M4Nz5Q+Yz9yzawPjmCTIIJydKrDS5/D2W7bx2YVdNcXT1ffzJ\ncz1l\r\n=Rr9J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGXRhYIFldDIerjwqyPfekfLNg5fzk1LDEVVyHhSFaNIAiEA8/EIZTMB59MZes6Cj7FsNLR0l4CTS4aX7yIxi6wy0Tc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.22.1-next-1603107408-9fee9faf.0_1603107544110_0.5522265733996083"},"_hasShrinkwrap":false},"2.22.1-next-1603108262-8eca63ac.0":{"name":"@xdn/prefetch","version":"2.22.1-next-1603108262-8eca63ac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.22.1-next-1603108262-8eca63ac.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.22.1-next-1603108262-8eca63ac.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-40jptcmn9pDZKYLcwbvY0rgwEf8N8musHR+cQHOrwdN/IcCsU8fm2Fw9kvCIxjPjA2RDTTJQsdYj6egrDpHetQ==","shasum":"4da4a6b24f830515d1e84adac28466a69bc4d51c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.22.1-next-1603108262-8eca63ac.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjX4vCRA9TVsSAnZWagAAcmcQAIeUpOBp2kOJubSzqRF8\n5DyAh8ciGbRM8XGCRgs/7j3qwyoSZu5CXNjwHDhY08tEd9X2LHJOxDtZsI0/\nXSUvFQ2S9tuONe8YCMEP4r0UChAWiaKvNFounKCno8UZgv1hwpQixGh55z2z\nhuBs3ZW4v/7tfX1DT/GGJ61tRzZfUAevvKjWpAEMSZ2fQ/JEIc4Pt3NmWbc+\no03d6Wxo15gH3KsSyIdI+vCYK0rM9dAsrirTknaHo6YFL+W4249NEdHN5Oy2\n/BfnC3HwW+zrpyyqcRS4W9xN8GvySeWcF0IVWxTwO6cIHl/5QaaeTC8Pys6b\nXjrxYSpRPQ/qB0mhBgiCjltsBJl1wMSWGUZMkbmpTdRzpxJQDf51uV1AkHvh\nRmHcvl/4fHKsOmhwCTetLzn4VMg5MNsaID9tTTm4TNalLeRt5BpZ9xrZ0WG6\ndUnz9GnZjPzCjtVSD1aNf6QilvvPtLIS/hZbEOESlCiIvFwGfza2pr3x3wPm\nrfPJCiAOL14c0yb7i22GTXc46HYaZhnA71WAhxi50WZ8v1YeYg3jOYtXq8Vv\naBWTBD61NrWooIUVc58NSjwBM5ulMmzmQz5SPkSozWh7Xf7sPqH+3jgJtJP3\nHmcbz11ycfMhiy0A653KTSBCoM43FR+1cjzEKh6+fCFZpSliIrZmpy86ybHq\nqTk5\r\n=utkf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9wOjvkmo/KLBAitwzjPMMFCVHQtGW5bxJqGL5ZS7b/AIgNUys11KWSXig09ZQzDmtefogii6yDFCZRfNqLqrI9qs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.22.1-next-1603108262-8eca63ac.0_1603108399403_0.251414081228992"},"_hasShrinkwrap":false},"2.22.0":{"name":"@xdn/prefetch","version":"2.22.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.22.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.22.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/jJixEM1XjS+O3DWNs10jemN1DZSzijnrtcU0SaDs824fdpumRtqbxM+0ldH7zeKwxJDfvSR3Q2zlaQDTY7gnw==","shasum":"f6f6f6578f832774c1c6ae8d59e1dc74b3d971c6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.22.0.tgz","fileCount":58,"unpackedSize":133165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjX6FCRA9TVsSAnZWagAAIO8P/3Dze+vktJhjrs1R2RTS\nL8z5VTcpoanr5HN1K4jdCnbgSpwkjhoeXRnHSMoYDyYWlnQy8Qd3ZBarctx6\nxKh6Ja1i8tUKIqMchVHuc92XbW/3HTwkbSBw9OMM2XYAqs8nHshRJ8f8KJZi\np9Ng0cm1qTcS4/5Y475jd36EILKMadh2bJ/MAiZC1zu+9WO5vgVVBgXrwweW\nlsiBZY8xH4TGecgYfQ70hF4W9XtSIg0jVyDhAsTiFv3Nvou1WCwayRuvSm2y\nDaWRasbHFIVarawX7vWHnNCy0ULYTU2HRs1siBYYkatOYiAR6KZi3yihGUUo\nUl9hgkKXwHRtJCftyiu49H3he/sj3/GULA+Yuomart7pLYjK5tkyADi0lnW8\nY6tWvV+5VyTJXXTSmlgIlSOuKxD3ZcbqufnoyctHwrKzmjEvjdbXA8E6LeQq\nI61/pmMsTqWJt0UlqQt125T8+LBh5A3vYuLkh2+GhY6+/aw8dCIyFPz1Wu3s\nouHRfYmykg/ob1DlDOp3Eh7B8PUCqqnNOndSw03UaY4FpuwhDV4UP9ZaZYRA\nsyZxqQUfHc98x12KLRwMszKscOaG8df0ewR6NyXoiJW+zoMAWZ+22uwib3Qr\nK+ZQ+UGhBsbpfBrY51xAmoSpNkjG4Nb7bzduvsVZceeVQgxfHhc+jlRv0DQi\n3BOh\r\n=SUTO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmsyuqbKVWghojUAaEeyYWW9oC0eneMaeXW8q4bUMcNwIgE5RP1B8CT9Jopw7grfAlLfGKPlQQB0orpregbEjbXnA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.22.0_1603108484897_0.6228224933518536"},"_hasShrinkwrap":false},"2.22.1-next-1603108459-aad057ba.0":{"name":"@xdn/prefetch","version":"2.22.1-next-1603108459-aad057ba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.22.1-next-1603108459-aad057ba.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.22.1-next-1603108459-aad057ba.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XASAE5UQoAbqS/FabP0LkwI2+6kCQChlARpd7aaU/5yFutOmwhcMyd3SInNpnvuMGyl9XeuwhQLaa8kplanVyg==","shasum":"d4bbc1efcfc34bccce1dd62601decd5f93264004","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.22.1-next-1603108459-aad057ba.0.tgz","fileCount":58,"unpackedSize":132262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjX71CRA9TVsSAnZWagAAEE0P/0Ta3ywH8QxZ4vn45Snd\n9RWG42K7lTcHFWoT0T5ohVB6nO6QE1dNxAC1Zin4jKPXCRCCkzJvf+mYYfHd\nCJBYbu378m+Ke1AUJw7bSTX9eu4s6y0mz/Nd9WlhHK8Glr2bbOa0z5Gl0a6t\nzbf5JrD9k5mioGEOilO04lE3DJ7iF2jccrbOhUanLutZcfc5Sq5xZVmlG9gP\nogMcwCsCrAaDb/vXMRdUMFbCDTAUK3MTmadV8jCWWPO9oTD1iVbK0KFLJLaa\ng2Z9dNEfO9ST9r64plYECpWOT/ag7Ibxm9ntB5bfOIzCdUzxy3OgwENvnVmu\nD7kI3WDj1FzscUz/4FYXfSYPnZYKNaUwy6O8yapCaN0+HYJYwHx6/kXJu9CK\nxPrCC8LdWLyrtS/R3HO+rOuBKB40tuPyc1GyK5cZ1bCB7zRY4VTse1DeTxd5\nhZDcEz1sbTlm9X4jrgPWV/v82bhMAKGfSVaXnN6GPw/1m6TOwCOu1OmLs1er\njeW1pOY3xz1fnr9Pl6NqukWd580OkX9d/bb4pdwSsEkSDqZLI+ot5NOWW7cG\n2qnz+wMlvOtdDYMK/h77vufqtJKdK3Gx+P10Eyf7M7ZDnKezxCHR3BHa95Tm\n/lCT/wNwtJxfx1nSXhK76trsqQ2rs+abeKEJR+CkdV1N4rlajbKfL6oU1NPZ\nxf1i\r\n=TuLk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAv/FptoH/cLjOHCjDRZKFVlR6s0Ee4Jx7uP5JQmV09pAiAFzTiO1l2k9VmZ7SRmSGsjTUaIvQAW9t4+jA6K1sQLsQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.22.1-next-1603108459-aad057ba.0_1603108597164_0.3908589280856991"},"_hasShrinkwrap":false},"2.22.1-next-1603108833-ce4c3702.0":{"name":"@xdn/prefetch","version":"2.22.1-next-1603108833-ce4c3702.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.22.1-next-1603108833-ce4c3702.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.22.1-next-1603108833-ce4c3702.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fm/2SZKUPZ7NWRfS8OPQHWsiXpzIUmnfDVLNkY3XM8RGwC6Qq/6QTwrY5g0fp+7sKlvCdcV2kCH/k+poDT0BdQ==","shasum":"ef61628de32d8fcff87cac551afec5d2d274b976","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.22.1-next-1603108833-ce4c3702.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjYBnCRA9TVsSAnZWagAAHs0P/1v1QzApEPngytwTl8/X\nomsmpbMq+a4bma6HHUXP4aCCxN1uTx/ZwzokbTDky60hzgmm/0/88j+bOTDC\nLMHAkLHAzNUGPHNe9vprnT+4rUqeEw5wn5KXoKAftP5q8oy3HPZikUL5VOtb\ndQme8tIOrslm1V/mGjV6oV+u2P8y1LxFu+JNqVXmU7eYojkMFEgWs5pP4Wtv\nZ1rT9/Nehu2OcpmIXcW3sK9bPVH8z9rUD4K+xW/Vtiu03/vH9yzcIiIdH0Y4\nqKqkTA2/jGwsdFFJnezw6TxkgxIDqxJHAhKsZ9PiQIntef6Xbi4qQ9MzjF/6\nn9mLMeMWa2d7BYsLIfNApS3RhGSQoxlJDQjQ+SnwOBo0C5hzXy0ap/hGLhW4\nwDah0wPPtuaYx9T+B75z1pvydFMcBsmZKoxTXinyY0jPduLXwERNyP0HxM6R\nkt7h6pu45VovOyU4hrAj8ycXgCGWrSQMRBGTzUvWJc7h77G3FBaNIEwmhIbo\nnBW0jXeYqgn5mM/Fcb1a/EIuoY20CcP1gbZ736+tgmojbVJ0vO2zTBQQmLY+\nwYAvxgUPqVdlsfv9sHJC26C1xkw+Ji8bF0ZOmk48tS1OwnUR1whYStiOl7fg\ntuLAQEcf7XVukCZuUKBbPAYPLyRQIz94w8vsMqmIWUJFgiw6wbXutLVz88Lk\nRVtB\r\n=oq5q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFiyEMkADpsR00XbdfwtX8aUqvP3UnsJEDCYpKbD/FNAAiEA20YVktvGAWZtNjzo+tR9xMEaXaTwe2SSF5WHriwZ3uI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.22.1-next-1603108833-ce4c3702.0_1603108967284_0.7930364109853341"},"_hasShrinkwrap":false},"2.22.1-next-1603108864-bf3e9bbe.0":{"name":"@xdn/prefetch","version":"2.22.1-next-1603108864-bf3e9bbe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.22.1-next-1603108864-bf3e9bbe.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.22.1-next-1603108864-bf3e9bbe.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cpDVGQuVBq9CsIj7wdSqaTBU53VsA810wcKEG/fn5IoE4baij4xMOThHVCllAo9n+zgP6zdEfnSNrOHwTBhdEQ==","shasum":"3766a33ea6dda856e71f7d5c4a137028cc698c7d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.22.1-next-1603108864-bf3e9bbe.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjYCMCRA9TVsSAnZWagAAccgP/253nrC6PkYNTjyJtSSX\nMjO1FwTbaf7PLdAtToOwDcU8JwVxs4Q9PZ41VAkY793vglg8oTlBpmuPgEUH\nJ4MN3Ev7VXSdk9pk6YokycQAb8ooNWKJVrYFASp1OsVsl9cSWk4/U/XapxIM\nCnXlPvmIRVgdeGSZS0br9NRDG3C5wjKPA1rLoWZs9F5aTOmX/PD3B82U+oSp\nCjAqegFMbvEcRW3UJqq+BrKrMdU0aD3bOQdyml9AanhNRTRg3z6tCO0yuZji\nVU5IP5jzC62qh33vanBKjKtuHQWTceVfAR4Hr+YrAjs2nxJSXoN+he5iop1g\njX+uDp9dTjBZdJu7cvxESNtfjfV5vdYVp0I3O8J3BycrSfolDbOnZkyaW7Mw\nCHZ2zK581gjmEKRKmpAXt6jJaKqNVcgwNv5/gqBoFm53RWgbrV7MGgpA56km\ngxi1+oIiFTttEUjSkI0FEl8hc0j8IoE7Ezak7ereZhMMtoMyBSUopJOt9OyO\njNbEUeVVNEMmmz7r6Gfk9v8v2+8bvxS8c8DyqHv+gJU6IjtmnElkEaGsCEhH\n9fu/lbYn4xd6kGWksI3Zl0sBI/aSI4qKna5+1mxvnVo20Jqlam6IREBRsPTc\nK0Q/4T2qE/2TlsYD35v7ejMkC6pmiE/LyK5L7MWEDzbWuSRT4r6IcXBU9Xl8\nDkpV\r\n=brl8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB5fLY6Wj7AOs37Dx/Br9EmjnbbsU8oi9iTdqtS5N5LnAiBqnZgfbik8GEdlJ54sPkF5Fwr/VCk5+IAlZqWvRjZu1w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.22.1-next-1603108864-bf3e9bbe.0_1603109004549_0.522424160634384"},"_hasShrinkwrap":false},"2.22.1-next-1603109151-b3fab68c.0":{"name":"@xdn/prefetch","version":"2.22.1-next-1603109151-b3fab68c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.22.1-next-1603109151-b3fab68c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.22.1-next-1603109151-b3fab68c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-i41Ytg+Y2e8v1+cC1j5ck8xNeNTV9I/GxW/ieaJ10WPADXBoz6Ft7Ahncg8anNgHpJ03WnUXboCVmRuxLfKI7Q==","shasum":"9993829d0a3d5535a61adca818f8c3dc782d9dc8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.22.1-next-1603109151-b3fab68c.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjYGnCRA9TVsSAnZWagAAAbgP/38Gl2/Vmska/ekQLhbB\n0+dLmd+qTCvpE/gPc0uRO4O/WHyIIs8D2962uFsc2UA5auJ07uFv+avOLYDD\nO6wHdRbjBJK4uAjhYDufYFtc+sLkpgCMopHcf8a6bfFD+6l3ciWIxIIcR96D\nxYHUSTT6wHD28nrLxRZyggmK0anyLz9UpRI4APy3bQRiHxY5zP7w2quyzQBo\nT4sAW+Bkwq5Y2FXGzNNMZWyOngQWVmeltBfkvQZSixyc/UoqeK1dfeHLQjxa\nJcxHb2FJs2UmMu2h8lES2E4RaSAf0s2gduSown2pocktqk7Vr8gF51R0loaS\n/VoiXXWTXuH3fybEbcOQB6jBqLYCqiGF1EQopdp4q4Knmn9fcGiWM8R35Y5A\n33Sv/Gt48gipwKHNMM8vdZ1MI3I5jstYd7RidSC9BCcG+kfAhi12q9hgWHcH\n9GbmX5haYzr6nKn8ZA+OpW61Z27hH9f+29u4oXitic+rPQxwDHGpYnEYOal4\n9140DwSQtogYjoE7Tcr3J4Hilj6+rPUEzkJas9adT/imrOLjZwA3IZwL21+B\njeS8Zqf5MxySRLUMusQJ3MMj50XivO5WXxSGUJHQaJOqvjFtNsvETGOqp2gx\nlqpQ5CjM1pEOBPcSkiVF34c3J5Q22FhfFKvVqksBHmc19ST8sinytApdS4Pm\n3jr4\r\n=GeNx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEzKybCf7yaWX7zPwFHXCMp8YazGpFGt3ihPFnCqgotwAiEAqDj3zY9CpltEeZ0ZiyAtCL1xZ/MTde9gnkjbKBM+Tag="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.22.1-next-1603109151-b3fab68c.0_1603109286481_0.2261834841642809"},"_hasShrinkwrap":false},"2.22.1-next-1603109189-1e349db4.0":{"name":"@xdn/prefetch","version":"2.22.1-next-1603109189-1e349db4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.22.1-next-1603109189-1e349db4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.22.1-next-1603109189-1e349db4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-irZB40xP4VP1twUFnkPMlIngPZ/EavbwL3GiNgfraQm43mwhRCbr9duhJy6RzajoQ7nsHLrtvV+grGt2p4esoQ==","shasum":"3fd607a21283796f450ba1e6272df2fa9f8730e8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.22.1-next-1603109189-1e349db4.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjYHbCRA9TVsSAnZWagAAw4gP/2NuQBDSCAaKv3ih57Qr\n/ZjqnOpw9AeirXrCD1spkVGJWGwM6H3l3ngq+1tiOCB5v/xIcHpgvGj/yGK/\ntVgTXFIfUiR9iUAhquJiXmT9vhGkFsmuqSX+IgSU5awaDSrC3v2q9Aib/VMg\nPz0aA/HEo2//JCfXQmlso9OJC4erD6oZ5NT7ZSkptWgcH1P3LUg1SLMXvQKz\nryyn4SqA1oiIjdbOXL9XyqAm7DfZr0ng1BVQVSIupVesffKIMVbWFDMvZet3\neZ8mOS16rzDzXSK66+sUJiY4lkkGnNnMQxq02J83k2HovtwqLfeaEfEVwDSE\niMGskGK+m22pRUY4YixwI7b1mgf60eYXqvDJG2IJXEoi374ZDs3D2isiZt93\ne02M/93OsQkKxJMnzqZMtCK5E/FE9nhIMQNbEzNVcLjQJVCKskyFxjdc+NsR\nZNGQrMATj2ULwIW/5WUOdTLomSTdWXa3xaMOUpMeGyW+S3ohMeD5jCUuBbrX\nY/49zOjc6ykNn0GcdxAHVtw92wgmDD+3Lq54l6Ya54fW9SbO2iDgj8Y+ap7Z\nbHCUL2f263RnvFBYyGw1O2OFUtIAEr03WMO04nhNiIi/fT4aZiA6RveLBe4y\ntk9qGB0V7cbr0QXKbB+8rcIgLkLYvAmrxpKK5GowZRIBNW7lM+UQU9c/D8Oz\n4qVI\r\n=Wg3h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEz5VSJnf8fR05Pnk4HUfVNaHnSVRcikCkMapKHtyU5rAiEArb2RE3C9fAEZ+IsHLNmOG4uW0O61/vLhNvJsJ/OyOeM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.22.1-next-1603109189-1e349db4.0_1603109339246_0.46003591593275184"},"_hasShrinkwrap":false},"2.23.1-next-1603109414-26ec2be1.0":{"name":"@xdn/prefetch","version":"2.23.1-next-1603109414-26ec2be1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1-next-1603109414-26ec2be1.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.1-next-1603109414-26ec2be1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5fyAV2kA9RKOotOSMF5BCEG6ghEs88Jhu9HJqoPTGmoV8XOm00pT5FEwSy/wrm8tkrfm23ArUxem0fJwNrITaA==","shasum":"2ed336612af773ad5fea84468b59779a73bee1a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1-next-1603109414-26ec2be1.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjYKvCRA9TVsSAnZWagAAMm4P/RdUzXrBOJFP1f7Z5yCZ\nghwI2lQn+MgtdkUxB1EVErKhbA18Q5GMRZbbGLFHiXl2YHJY4OaiZeyfUKiK\nBp4nuBnz6ohFv21D3J6schdutDWe+3sDvyDA+xUNjCjbJv9u76f0AyHC0vkM\nfXWS3a/BAppD/YUD8VhCpDWyzmpmB9G1KS463/qG/m3OViTN5VrxgnNfdJeB\nd1jYMYH0Ajo36oV/930WWklWfrfliTCDI69Dyha4uree52dwLBWzuxylgBT4\nB1r19NjbK7EvXW0E0DdUPAAJG4i327q7tNTlO7VuAflflVfQQ2WWWclao0fA\nTiHiBIjPVIUavgcQvFi5CZBbDEV2GErAGenlu6lagtVZzI9s7B0QyvoSjIMv\n3/HuVZYeKi5pLvJmylK/NoFl/j9tzqVdX5ndN/qRuQQoVPMbGtoGrDqJwUtB\nAt19n2WbRBvwtwiX6JMTwYt4y0MNSnxAXjf29RjV0gcWpZLz4np3yHvRSIbF\nyYRQcZBpI+KrELJRrDin6WjDoTl6FAWBqXV4SPa49P1n9Ykh+vrjQCfi/9Mo\npkq6Mgj41qUY0dmRZ5Pi9cakIckKvJDKa+/dsiM/EzlkxuKKJGYyrrBYU4AN\nViOhWXXgVjVnMHbMXajV0/eSPAybOU5pGdMI7CN0L178XihmEWmUv5Ye8Gd9\nei+6\r\n=lZE7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTWC359FPc4P/VCyH4WNSygqxiLQuzPajRfE8h3AYHFgIgNb2LbIVbwhjRz8zeZN5TAdVT4l8HROfJlD2nbr3POq0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1-next-1603109414-26ec2be1.0_1603109550689_0.25286462777359664"},"_hasShrinkwrap":false},"2.23.1-next-1603110088-7625de11.0":{"name":"@xdn/prefetch","version":"2.23.1-next-1603110088-7625de11.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1-next-1603110088-7625de11.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.1-next-1603110088-7625de11.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GY8Nb+yKTmxbQy/1EzWTFtr4cD5O10uKrE4PgCKPeklEsg+PhU0BgCzNtjKWUIqXDSuaUrBglELjpzDWSb8RPA==","shasum":"e7fa9ff1bf3399e0b862da9bee23ddb68de527b7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1-next-1603110088-7625de11.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjYVGCRA9TVsSAnZWagAAJoAQAJYiBM0p9U2Umcyxhtw4\nDrgsnniNctyh7q/8ntaHeY9s3QpbCcUE8XDK9KrggNiFTdFXn4Dl0oXMc6GX\nDNfYwcjpNpjusU8yNmVW3RgqYmgVRW3Wann65I+NJKe6qUT3LtV00FxlcWsv\n24tFS6xlT9dpRqfA1xN9/CmgV0Ruv87Vx1NpI0gBvB+TYnnrr1AbSZ6ilgQd\n3g3A1P+Tx+L/8GUbe48pmHK32Xdh/W6bc+P9CCg1O0TjYqPjY8bb8cqHXZ2T\n/wcJtf0z+ciovy7zMPJkF1dVYuC9nbfz81aG9WH6SO+iDYicST7zTCm92Gom\n+USuVQDv42ImeloQS2oV/ovaw0XFWtYboDDNZ32EWzkGw/6khgOU3700akdz\n8LTMWhfxc7PjorpT9vCPfszlH8HP20XlJNKHgzb8dFUV4Qr+6PIntfGta1Wr\nBFDBy/+lE5Pw5pPa3FidNb1LBX3+zrioV/MHe0MNaLmUU73maoBiT5VtWnwJ\nxtUk70d0tOZKIktfNs+4DWdysg5XKk2iwuVy/YNBfcIm2WsBZp3Vnhb72Obr\nClsQeG9FWLDFnn7T+Na1pb7X5SPSsq61a058C3+Y+/oFSwg/TVziueWs4VP+\nKVqCs27Yg8lP/IgA1da/TPdk3SnWsZs1lPCjauM1ClZgcD34iADR709TbElw\n0/qV\r\n=/px+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF2GisI5jPbWrF/GLcQF/zHugLq3zbjup3lGLeyrB7UXAiEAwyDr6GWK3eUblBdjjZyqWNeqGL/Xqb9ohiEyH9udOwg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1-next-1603110088-7625de11.0_1603110213636_0.2479108433783035"},"_hasShrinkwrap":false},"2.23.1-next-1603110575-b4192b02.0":{"name":"@xdn/prefetch","version":"2.23.1-next-1603110575-b4192b02.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1-next-1603110575-b4192b02.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.1-next-1603110575-b4192b02.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6f2QqUREJDLtU/EXRGC0UwLXxzXKUnP0StlsKJZyD8JT4tYlB3O6+ivqu3tOQ7+KbQfXG4TnUL+WwChfYqms6Q==","shasum":"adf7a6f963e43ecf71f4451000d461311eaa179f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1-next-1603110575-b4192b02.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjYcyCRA9TVsSAnZWagAArtYP/3YA9pCXM7wCIyekfAUN\nr0JcK4TEWxy43TqFfsN9aoPNGM2xGqgZCEfd8ZK+JNXPnrJ68ZhETkpJzuQ6\naGNp4m4gNrO1twn0HgXLpys1fRg9fljqapUfYDdq4yjyeGmyvkcv1blan0lU\nL4b8On9rcdmAGmWRFJgyPb3aj1v8zgLJNj1ecGXn4xEMyrA8//7BktAY1I97\n0bat6PhuZgdwCBaFCb60u9YyCDL95DmJUKbksAGRDuZpNm3IkblQMl8NW+fw\n8DrjtWbgWc6JHaHfX6d7U3LkwrAHwNPGUtcItwKErQUzjqd/Xq6jDqeOmc7B\nZD7537QVo4K4qqluOOEQkQ7cL/fdErS597at8EWWkzHtI2H5fwyeq2A2eXRx\nDfdzHmPmzXFs7DtZuPspqP4vMORYuhsrbUsc4PiD92yXPZD0KOVjbY8iMMu8\n2olBh8OTsN84wLoJ/SZsfwpxQgLOueq0tlnVvDB+KxTwpEBTopnsEV1IVTyK\n83n1OwOVTMm3yayFOFmPByi/jpeNQsOB+nwB0qdsgs5vHDIa8uZyKTdlcZVQ\nfkpF/6WKDoiW/xo6AZrPZPnLfU0bSyzs3/dLjD5q5sk9Rj7LYO0hH2wOcEto\niMBPtQs2grCWz2F8cP7MqWcpXjqjeLHQwlkM8aztwtFEa/wNb48ocVd2JwKD\nmEbb\r\n=FY9M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsDb0r976Nlv3YihGi9iUQZTSAunFLbU88rpl5BcyPcQIhAIS48jXzASoNBhCXDkvqHnkK1ivYCr+aF0iA4EGISoy7"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1-next-1603110575-b4192b02.0_1603110705777_0.031479529387802296"},"_hasShrinkwrap":false},"2.23.1-next-1603112374-51c9ef20.0":{"name":"@xdn/prefetch","version":"2.23.1-next-1603112374-51c9ef20.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1-next-1603112374-51c9ef20.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.1-next-1603112374-51c9ef20.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mvWIz+haUBLncifKs3w/EIccG4AeNm1r7s+nQVXVXBN3fiAg/Y8kFPQYubNIFGjfmfNBQ9T6hzLZlYIqigAAIw==","shasum":"889c5b8e0ea0042ece93efeb367608d79fc3643f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1-next-1603112374-51c9ef20.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjY5ACRA9TVsSAnZWagAAX68P/1mZVQDh5mV5DeVOaox+\n/I8aRdeLbt5Ws/XAWUnlKz5b9EmRjaXeLTDDJEu0vlRQ5A8uEvcUeD0XZfIH\n/LfRE0EJGxObenGEs0tp1R5q4KE/b4mZF+aDK8urfJOvWqjgE1RJhMSKAuM7\niMuTCLw12M0nD6Q8xXnySd3dNq0bva/MaY173g6uWEEiP+nk1HOcTgp9bBwM\nONJRgxdivheXgHXnqTBeNf3pTexVijTx9Tn4olXhVh6HOjqj+7FgP0tnOT1P\nebapBzqWMEMhg9vtOWIZD21RgKcO4/rU1D2PYtBuN9RHMCln7xw7G/rlPrrW\ntRl3myq2wSQOh8luDOAQGPaV2dGHDA7AfQGMGd8Qkmn/iT6Pfn4UAwbmgqmT\n2X2Efm3M0PNlsqAKpPa2sYq2p7vVRt6yi3Sypnxy9ndpzbsmAhhAyiM7eD4S\nk9lgYbDHrInYfyeixbLchE2KshAzcSKNbRQT6j583IQ6xVTFxAbwK8wjMaU4\nJDPEAsLfC9sAi4wsAeKv4i7Z+V8s7/732kKcVz5I2eQFpHja49vHNzKD9/X2\nqHPUMKfANNCEnPQLsRIi96XQ2XJZoX1dzaKZjo63GAUzxW7oRyBLCBVkBsyt\nrN3Ku5rFD6JkvxYHmWYm5d70NtEz1UetCc44B2nOvQlNNnvy8BjbmnXqr4HL\nwfbI\r\n=4z5w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHqS9Pk9vVfu2h35umyIO/p3glANXK9cHPbqL1EZ9zXRAiEA7C+THfABe8yLM1iaUZFJsz9xPtVcsJ3gkHcRXAzjH8E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1-next-1603112374-51c9ef20.0_1603112512475_0.7336746522710067"},"_hasShrinkwrap":false},"2.23.1-next-1603113615-c889fed8.0":{"name":"@xdn/prefetch","version":"2.23.1-next-1603113615-c889fed8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1-next-1603113615-c889fed8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.1-next-1603113615-c889fed8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rRLySzW5gGt2kBhXIAp2p8ryPHezhtOrYp+2ohYBr5YTkRMNezhxoEhXxiOqecxZ9/gvm7tCZdoA7k1Kd9RcVQ==","shasum":"5ef90af28f7e333f4fd98dae767b2ae498f1c96e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1-next-1603113615-c889fed8.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZMOCRA9TVsSAnZWagAAw6UP/0h/uJjC/gKZQ9rBhdor\noz69ia3e3j+CvwC9s7f3oQfyYBmfm2nSRHUZ2rym80pixGgU4s4pGSfcalTd\nAnWKlUEJVGK/BpKLWU30RKYX/5OHKfp/d1D3nGDV7qg5aF/bx/nk8cxMUFx6\n0KMFbr9SwjULdzGREJHXnP2JPPb6rAftx2GAQqNSYi9ebaTvC8O5OqA+lH1Q\n8XbOX7zomDaZv7eRQiS+TczxUKYmYbMF83qo7NNsOu2dFEQUFjlwCg1ZlYjK\nWGhVJD0CyVtuTv3/vFMvUECXD9L/ivaRRYJWGIDdqwvnVSY23oDPjsMCRwpw\nUVV2HLVGuewidOFF8wROAd1vrQ/6Rw8zKTSNiprzwS1gp8Gt6XMuU8PY3yGj\npKY/yaTfgScZ14xJY1DDq9RxaYoVAN4JJI4ez4ZZFJMtLYL46ZXGRZtr7O6o\nH08WAmDy1P9SOGd6Eje//fb7DbnKrSGKDlS2bmDiJ9NawH1xCrkWCtcUJ6yL\nq+BOa2wWFAVU8gaxzV8j93zoafYZZAfuEhh8Sfa56NroYa3RTsxwrq1de1rO\n5V8oxOm6r/At64dVRyi8r3rnKtWgc7RekopWb0rtdfQrWWiC7scdrNB7tXyG\njGiD/pFOpromKBVbdw9uspFiHMvKxTCV0RgiRhFaBstU4DyEPi0Qw54YUxob\nFdom\r\n=DMts\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRyqAalYHw+u9XYsSqiZztIs45LjmJZB/ZZYFRKI/91AiAqy3xV4Aq/WjskP8UU5ClwtreHJU1pz7bFVVMvwgaWbg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1-next-1603113615-c889fed8.0_1603113741712_0.7272245462713944"},"_hasShrinkwrap":false},"2.23.1-next-1603113737-30cba65f.0":{"name":"@xdn/prefetch","version":"2.23.1-next-1603113737-30cba65f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1-next-1603113737-30cba65f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.1-next-1603113737-30cba65f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mWW9wRZjN3gghGvBZ15SL4zvX4RlrCOjoguWkrw887bVmNNpjgUyjCunmfcwrLoY5uCjj5P6DQXvOPko710nPw==","shasum":"ff7ba5b1feb705e112a0782b6aa8dda4c4882d99","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1-next-1603113737-30cba65f.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZOMCRA9TVsSAnZWagAAMDQP/R+Rd3HlnP5PYUKheVIT\nC9XItnbqkxxew5qJ57Za2nPpqoIbKSlrFkWr2QvOL78WPPjeEIOxGsc2ToBq\nrpPOJ0kHcXi07NAx0H3UIy++tzY6jLIEdVD1qo+uw0h4Le+B7S5D0sRop7wC\njTkE44etijTTHWc5haLv4yeMeFLEfQehgGQo40iEBr3pKVxj7w8LXCWRBv9+\nPoMNkqP7yYV4pLGYxtzPn24iDcRr+dqZHjP1qlSxOqbu+h/OccFYYbXUVNVL\nBsfRcs8ZUH3wKyg5Obfhde1r3b1q/2S1CA/TJU+jBjxAwkHgPmcEP+EJnO1P\n50RhqS4daGUNQeURvp+3AaWpFwvsSb1WNZtKSrVnBx0QDX1NqHcvTeyYaLmd\n0bjnURVMJFZ85TzOeSoULGgKvgfaltky7t4CyyKD6V3RgBIzd+EPGxSlGdRu\nt/EK1bXTJAbxrr3l5RlMcKPAM4UJsjTSYxxm5+5XiMVHS5zboyP0F7Tfnv3F\n/kQGhIlvrkRU/7KjWaP4mZQt4IKEfSYId1Hlr5HIgCUdmP3m+EG8hdUGXmrP\nlV0qkohaDgn7qoxTxyOYQ1lq/ncV4j0tqwOwn9RG1sTClZM65qSceogKnud7\nHaBMi45GZR7Y18M3F6PnwhenyheHPC8cUJZPv3FK/Xqe8gFMpQBU6IquBfE1\n1iLD\r\n=rKrz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoZSM6A/gmWiPVhdlLFtkfNo7ytuBipfbsHGvXOjbMMwIgXhtoPiYfVRj8jMyyxSpW6MztaR88AhEZkULS/iuk4+0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1-next-1603113737-30cba65f.0_1603113868369_0.5133114866565587"},"_hasShrinkwrap":false},"2.23.1-next-1603114924-cf426329.0":{"name":"@xdn/prefetch","version":"2.23.1-next-1603114924-cf426329.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1-next-1603114924-cf426329.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.1-next-1603114924-cf426329.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-m3ht9qRg8/a+7dIUiEND+hF+oD2LFqZmB6N3p3tir1ciT9dWPqnzHJxuWi3bRL2IYKWdkYjunFZjS9bXqa3S3w==","shasum":"d565402eb427c04ec3564d7a64005610b43d58f7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1-next-1603114924-cf426329.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZg1CRA9TVsSAnZWagAA1zoP/il2FSGkz7nX69aIci9B\nYa7IId50YfboXfafOqvowNNVTzSt2GZjvpOyDApdBK+/k8s4eIvJjmHuP3cJ\nJHsy9N65X0QFXrq+ma11OB+afuVWBTkdSOE4ZmxfHegHhUb9IYHAXLkCs4uj\nhcF/7PFdOyqLheXk3hHBuYCJ32SIG72vu7+ODkNDVX3iscY9lKYIacYDQ7g+\nm6mDpHBhMiRIXg2YYsx7qjljrsPnoq4S0ejQO/0tdIUSQiKceSbrjMNRgvjn\nRDa6YOVHS2ZH/14VAPZCOc5Ajdvge8/0a28/TNlz41zfyapT42N77mfbffec\n41clRHpTe/7hmu8RK3QZkm8iDIrejdwlbRZFoPpWIE4synINl9YL/UtcoGIE\nYLH6UAAlZC35VlBPqT+boJxlJDSt5TWt5EVbvK2qC7Zxkb0DcWN3jpNIYBLv\nO6YBQQ+F2IVOJ14Wz67M0JLojIHbEpN+ZdbNhAefPYVGe6y86O0lxw4x2nXT\n5Ux3k1w1ojpPjs1/GN2uaKEtCL86CS4ywncL7VzeoC3qIT1M11pBoFMuArp4\nNxcWnz041uOb4995NQWLIw0c8/lE9ALWT5i0xxg5aLslUcSaCSNYFLHS+VhR\nqpNRsruU+UP8ojWAZco/AhYlH9PcJfol/FEoad4TOlnXOEve3HyKWpGCGSxs\nwZBi\r\n=UAF7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCikXpYAmi05sJciVFUk3TNCRa0yITqkvAo0l9C+GfbOAIhAMsub04vbW3nPquGpnuZJdSTwujtfL1i4NCzqzxvfSXa"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1-next-1603114924-cf426329.0_1603115061130_0.4529556883355075"},"_hasShrinkwrap":false},"2.23.1-next-1603115829-94d067fe.0":{"name":"@xdn/prefetch","version":"2.23.1-next-1603115829-94d067fe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1-next-1603115829-94d067fe.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.1-next-1603115829-94d067fe.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-w8PLJXTr9TVuulV2lp4GHBH0o7GU3ytPCbYQxvSF8woh/p4xbCXBh9Jwr5ZWpAp7zQfQu2IZVIz9dI/FOjOmXQ==","shasum":"b4e622155734f65c9437609a42880dcb21651cf1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1-next-1603115829-94d067fe.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZu7CRA9TVsSAnZWagAApr8P/3AkWIFERamQs3jshoj6\njWTDAbueVN7uDprs9z6hPMcse1XDn2UZIHeouI56a+US5da2JFfEnr+AOkUj\n+QjcbuH7wUgYp8uxxDmVsZ18oezTNINgzLle2oAO1PX3cuapif4rXMm+aRLl\ngYw3QvH8+LVknDsDolEUyWbhMVMMe1ml/sRYVzti47n8zuI3UH7B8oLBsiin\nPXO0xt9EbowyMUeXTX7W7B2syltW63xPJPB/rwBbNE/up+Mk7qLNNN9xF331\nQHu4o1RyRBK/z5QrsCXs01F71jEI6zLJsbyYqxL36rKtgnmbBm9umEjC5lsq\ntp/+SxHgFvHzLgLnHzG2c0aflSe6Wop398UPUHJnREv8qD06aMdW7gYoPNh4\nJ6O6cgFo/xzHSQzSf40V+FNk5SB9MqOvDs2WSTnAave9pVKvw4mPyNWXkytZ\ncTETXtyhDn7nHHpLLBAAVXqhDclso464iiektZ9IVA6Ux3SFnKcEvw41sIG8\nY+epEL61wGnBqNz/OdtqLTIKR2KdDmjnFpIuEWlPgIMoTlBdP9OhyT6t8oyD\nLS8s0qvwLdvfwKDBpNfbqs4Q63lq84wb4ryrxptS9w3HF5Pmbq+F6dhU9h8Z\nm1zimzFbOTHiNtObF/gTCwXUEZBULtP2az9tcAyUknQUlzHn87OQbN6/aGr+\nPopY\r\n=17lI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwHkYYyx/kVtlq1A1gchviSMjHzrQ7h7yfdmdldKnbXAIhAJkdgmcr4RiqiMKcbQLPF12bPnJctcEf3a+mesOwhi/x"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1-next-1603115829-94d067fe.0_1603115963390_0.04253609730593255"},"_hasShrinkwrap":false},"2.23.1-next-1603116115-8dbd7f97.0":{"name":"@xdn/prefetch","version":"2.23.1-next-1603116115-8dbd7f97.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1-next-1603116115-8dbd7f97.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.1-next-1603116115-8dbd7f97.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DpXG8lKZXTPFmNigYR0nnIJ3LTZP/L2LNora9M86Qu12eM46m6I5DXmmGZoeqncB88Slrcs1vSdKO0gVnv01OA==","shasum":"95c1a425446f25ab4a8b6006b48d4beb1e5d31a3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1-next-1603116115-8dbd7f97.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZzcCRA9TVsSAnZWagAAVvUP/imK7RzbqCIH6DbSHYuC\n0XUiDG5tSvEIZWOiT3EnCFwbAjdzvIRodRFIxtvwIlrvqeO3mVZb64WAdmob\nk5B2ujKI44CAYePeH6aI9NERFwutDz2CV4/tDSNoAt5Fn9jIrA0IOZfLV1ne\n0JcoYDPzqK+BLpzDsgfMG/9PEmGqvmUi+WjyMFxYs3wf0l1yHFkRLNZkYyS1\nVzfrnu9GsfAaae5w+AFUhC1lR1xivSXYDiOo8A2OGjWh23RSQFICadcj4BbK\noSNO2meyXGtILLM2zsh5vbgKCX2YnfzVMn0GakLJmDFUtwepQfRlDiIqDu6M\nJcCVOqq6uw0ET0Ywn35SGFINZnqx1tB/5g2PJjmLOE2D0+/+vw/JgBbSDxuI\nyVKP2E5EjOG6AC8xxHP86qApeebm4ceCK2ctr/G3zmGgoRrRLkvElyiUrW4g\nkRiqKs/Ji5PUMwnkjntb4VQd8IQWOLRrIJ6T4jnUYKAMYbJb5RXd7shWU6mw\nC/Y/TakTkfddHKxTgCpUT4JX1m/4nNOFlBOSenf1G004VQEvhLIkPxiKbWaR\nF5FANX4ZL9Ej2xHh0amPul+O7WR6kjwZ2bogCJPHpss+jAevjLZ6RlwQPUcN\n2PpvvNwb2+nrGmwdtxpUCS7Ht5rhuE0KI9AUjmYvoCjPXeTB2yGW1EIPPJ5r\nuW/t\r\n=JdlO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkFHyNjQ5vk+BHhadqTvYWZSS7lwrAeOdUC79ns+GEegIgb3KmZdPIip1gqK9DWAmLovK9id4i7CqohkxNCIZqZcE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1-next-1603116115-8dbd7f97.0_1603116251940_0.26192763143444253"},"_hasShrinkwrap":false},"2.23.2-next-1603116373-6a3fd75a.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603116373-6a3fd75a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603116373-6a3fd75a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603116373-6a3fd75a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DtjoPJZ0Bj2UeW1x+/EGz6n5OPn58xJT7URXO1P1iz1CmsUeQHVJFJH1GgTSUtBszjX/4qYx6oEpyc+UhyJ4yw==","shasum":"d109e42001354c715de2e87e361d311b5f5b2b96","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603116373-6a3fd75a.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZ3mCRA9TVsSAnZWagAAQQMP+wcx0rd9tdq/WL0mCx+p\n/Jcu8IkyI9Z8Fa5DeEaXauBZxp+V1RG2Az8hu1CQkQx2JF4VeZHBxNXO6w7q\nAWrF64pFg/XgHjHGmMpVPDY5zzz9ztBb95U4HbDngDem8jLNTbirXNQkl/LU\nEB4IfkKMtESJExFjvBRogEXa5DApVIKynWcwt3in8C7r4g7rEOgu+D1dLNZi\netiW9UiUXyILK9cMKx4Eng5QWbYYAQ0bA5vvFhrTdcvh/Jct1xcp24RWGMNL\nMy//1Rx3j66Dg5bHgF6dTOq2fJJa0ZrZlgnNvoiuM0pddsSrsiGSvoCa+KNr\nHDPduxB1AfZJUwA/b/hBPXDasWpwLBA8o4w/bivqltkB2tKbJc8OrmzEaouO\nvpiLd0InEWyZQYX/xRQGI/NwNQd7xbAVN8drQSy90AMn/VPb2iW8CjVMT3mG\n+jSeNzP8U1CwjhT+HhOyC6V84R+QcdfaJeOXbAW3K7KQ2jeY5H75PW754oTZ\nEJJ8ueGp5pM8TJ7RPIWwQGPZDCud4BXmshOPusoUV9dCu5tBQqurr13xwxcB\nScv4PnHIzYv3fsOSM5seOvkzxpU8wSP5LMyIU/s7AYnR3a8KOWooKd+5UpuA\nZWKqyNlmZZ2zhM4z5uxvHzG7ZQ2BW0fkRiRBVPpEwV+JiUtscmBpR/a1mDWI\ntK5T\r\n=YOsE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGF3hapNexV3sQTMjObWgycAKZuNLv3iLjk9ZRisdAd1AiEA5zAQ7XAUuD0VfcjhZ4eaHDzYTJBsj3wbAMHff7+r3nQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603116373-6a3fd75a.0_1603116518067_0.7221921619796245"},"_hasShrinkwrap":false},"2.23.2-next-1603116389-6a3fd75a.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603116389-6a3fd75a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603116389-6a3fd75a.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603116389-6a3fd75a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lq8tem7RF+68jc5Rw0LLnRC2F90AvU+iuRoOxBhrTw86P3ohJwBP5NufannwluvZcN4BCiAakSdstnnW4QeNIA==","shasum":"b2c6015aeae8d595b951d7eeb2741ed35111d947","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603116389-6a3fd75a.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZ36CRA9TVsSAnZWagAAndUP/RCewzu/xZfa1fkWMKn8\nUi2c83DNxRwn5fn+kavTTGzZNksX+6NioFqdR5OVXYV19p9CUd3TZQ3uBrTW\nl7I+6HZDv+YsNoDr7Qa+F1OYepV4uDt2MQaPv48GNLHo8flq/++kDk3D/zZq\nGs52lj77vOn89tq4imasCx3EHhVAGsjOgytiYJLNarzdwrnnyK2FIOHSBscA\nWstP7sqcl3Zx16gu8g+B/p1Su9q8VfyqvnoxmqMNd/Sh8tGSjf7EiAs3MiO7\n9vB6/8fKXDDrANeTg6GSZHpKSIxZCfKp/BbEE9Hr0lZyqlsrmv3ta6l+7koY\nTXZCU7vrYZFj46LNkFxKeAAIsozSPw4lYc56RhrMscytNmd9/DaLOyfzFtnU\n6Pu/UEzJhAPvBlzA3M22J8IufET5JoUpq1RYFRjvSsXJNG8v1wKrGllLWMci\nSx5i6oYVYigsdLhJXKUjTwxhn/S89eSEDPcJ50tDUNPU5zZqZ2yj33YJbJJH\nEtsk/0xcxFE0q6nDo+rjxGoSGxRd4zDQ/4tKRHzYiTOsFE+0jeFO6nTgWcDm\n6ii6aJOWzqWlj6fZ4ohKUhD7LrgvpS5b33j2MaK/SDE7eJ8ETzVRJhF4+5gQ\nPnEx2WGvXzbCIS8Od12lZKSeX2/rDt/b8j0xTrZEdsoyD5l8fnNuD8G5eyW7\nDl7Z\r\n=n2nT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyXDbjA/ph8ygstr3NcuT9ob/AD02t9uTJl3SyitLdEwIhALdCn70OVW24FKUosbmblQh0BlZE89Nf1/wACzcPm4Sk"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603116389-6a3fd75a.0_1603116538000_0.5338377483357144"},"_hasShrinkwrap":false},"2.23.2-next-1603116606-0e4ecf7f.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603116606-0e4ecf7f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603116606-0e4ecf7f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603116606-0e4ecf7f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yPtCva2uY9KkM5cy6mcTNVMnzbzPHwwQMdjCPkrV4gSQaBbt9jCDx3PCE+/TgJrrCaKcZZ/mmOXPHdkxpnTl7g==","shasum":"847e918a006453d9c5eb22b11d311fe9ca7ce371","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603116606-0e4ecf7f.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZ7MCRA9TVsSAnZWagAAitsP/2xQ3/el4gqjGXOkofHn\ni8Zyh1RGm15/CUJGWxsRrFvUqKwn1M1Rip+LGfAj6x3pBfO8lKi/+fdTRiiK\nZXCPkG2Q2R+ho0XlwBRuZcLUBFYZP2jFf3XviUBJlKjkeezd2xS4cyvbw+F2\n+a+pnd6gE7hKuvLw3IN3B6bJ09Jz3TjgMDND8Szo4AX3l6h+uDJCtLuEY0r5\nJIhLsmi8c5xFGpKGwRppbvJtlRm4JTwNG0TKr7yynmqij/Yc2KO+hyn9m7IM\nmbvOUEyq5o8n5yOjMlwVWJRRG4StkqYoLuQXb1Vih89u79gWe0bKsdNuDI6b\nZroGScnpkVOiNYbWiLX+8tzlM64xrXRUHwZXGNX6lQ3N5qeL3u4EIwbcmLar\n0WJzNqpEcWydqIs7YlJjmSKi+iEiuCqqmfeoEBvj41nciEvpjjAgcsgst9c+\nUmYsKnPmlgS33VLVOnew9VdXopmHpVc2UM4o0W0NzVoEuKeki65l30y20QzX\n+g9rjTMVSThqx++aTcrVJveOtXJQalppkFFTuwxU+5HX53CPlZEsmPgyCUk1\nZGVKyD5x02DslgoDJbzf6232yQTiJlqzbm3K9iI/j+el+VoUyKMl9elBUS96\neOn5ZltHSrnZrw7M01tZiQb9pPQvFWD4JRV90XJ16UxIOdIuZzLB8RIlHVh0\naimd\r\n=kPv9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEX4mcsmNqydWaON+kRbuFc8LvLUknpCxQo8ZFxIYynIAiBah7oOkwRVmuVkEnYvbBwEfVQDzevqI9R0L7dZ51hetw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603116606-0e4ecf7f.0_1603116747456_0.20284858400435057"},"_hasShrinkwrap":false},"2.23.1":{"name":"@xdn/prefetch","version":"2.23.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.23.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-naK4ue7UdXMuYy69aZKaPS++wCUH7/4ueh2XcwAEwgSv5CtM2NLfXDN09tnCahafev67Ij4V2vuLpkSfYEOysw==","shasum":"a6bbdbd2ac6b3e3b00648af64b44e0bb339a778f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.1.tgz","fileCount":58,"unpackedSize":133165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZ9NCRA9TVsSAnZWagAAKeYP+gL3AuXbvyavVjRLtOxE\nOG/RHyhEiimLHkQLIzu3C0bRPrBfMvg0yq3ZkTiF9zs0imWQBWYgk7SLXWIr\n0IZZnljBwL7Y9dWFRGRyVjCh3MIC8Wk+5s7OY6apSs3OUdplSF4RZJu+lSaK\nGV2+AeLcQcxfdCTJZlitbu27zXQRpV8ohS1qcRATkmiBaG8SrLa9XLSCQAbk\neVpEW7Rv5yz8t7wy0uT30wEQts/YrWU9+zmjfwq6MYCEWVG/RClqs9on0OgA\nvgJI2HFP7Df/Z7BX34iD2V1VHUpRf1B8DlXaJ/Xy1U1gDqmas7rMr1NsGabg\neD/kzVOOjtaz+AX/2DaFFAKDAGORXGjDWPE4kXcinY/bDTBHymQEeS7orEIZ\nzIEIFIqcWX7l2q0IO7IdURk4R3z+P1QhUjepyk6SoOugfyjPo4LRjz+BRMjT\njqEJCkk2g0nZwdlY5/bV4anOKDNjC7iidw5knYQ8fWPj4zjwJQbpo2m/Pn7a\nGqBCbFOCMs7xt8ZWqheGFzGUBy4QI5jlwTo+ca5nt5puWSy+1KKC06C4GDTB\niU51kaLxZorCo64JGEKkFLOeTwbMZuUGJp6TKVAycyR7VixXvgI757UGI/cL\n+h2zpxALY3ntYOJBTRs6D0V7cLpp1rl5leZNwkEOBZUyDKwDUnZvSxROxr0Z\nvKIK\r\n=Ae8U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGb7ZTMfnYa62EsbpcKPsiZJ5lD5T3n6BzBQCmpNE8rHAiEAyfXCuLCF1CWZ4nvdm1H5wOvTPnIMgodHqDDWrSDrvpU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.1_1603116876394_0.7691853714875856"},"_hasShrinkwrap":false},"2.23.2-next-1603119884-798df11f.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603119884-798df11f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603119884-798df11f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603119884-798df11f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ui+nrYwZ5i5jw2euqFmrt1SNRKgg3baGO6FVg7Tys3RKQnlVE+ieKEDsQ7srUXdUYoKvu0P35GvGiOna6uQLRQ==","shasum":"69f4d489521de1264846659cc5ad6aae3db62d81","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603119884-798df11f.0.tgz","fileCount":58,"unpackedSize":132262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjauUCRA9TVsSAnZWagAA4jQP/3yNzHi0coaTkDMbeuBP\nwKw9eYO3kAtWlXvHKoY02QQ5QwIykCGmyJbhnYIDq/ZPJ826geitEr2Vx0c3\nm9282FQUmpSjMa/RI6gvSdrFEr8+Kj0jSpr+bhQgyni1VI9JFw3JHEIdSdkI\ndr9s/eWgZ6w6ITBOp5+tsA8ZYL6rHzcygAZSKASPS/y2/v0G7JohcE315PVH\nZmiR33eiR78/Y+RM7bgbZljmM566YZWFIvTCM0qSdwzRJ48PQMtcWpkAEm4q\no97o7+uBj0wEWKLCum15cDKUgjj4M7V5AhT8i6HkBnSjXwvItD5SwNyQoOWP\nOnWSB9LBvA3T2vLz8GTL5++lWVAmA2Gw3nXHP5BVNl9qdJj+TtDP/hlDYusb\n/NsLHkKuUXQF5Sl6ljYQ4vlIeFIMe4toLQfxfmxjLpiORnAIV+MimUHxa/i2\nVYyHshvuve/nrdE23MFyv9k3hNVFwqsqZEzKotXB3URfF8lLzY6gliipet1X\nj7okmVGzCTLwA8cjPRHWaIyqrCGzfhn5H1gJyH/U5Hh2/mGiv9v3u5/Ptpd4\n4fYql1QM0pOPU9kHrgNEy3wPYU+1EW/H/OGo25YVGCMTJvju/L6zODZEwQx6\nzjvztOMCxcZrz0M1HEeXrveTZH+5pmn45vcwCMU79WrtRdkLf7BRWD9r5z1w\npi4o\r\n=EVll\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDx37P0KyDNhtcRvOaIcKI/e5ib9vrqBNwzg5FEWFfwTgIhAIMVzAyPNWJVSOJFfeaqT4pQhk87oHxuyZz0RUjEDazy"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603119884-798df11f.0_1603120019471_0.700288989944424"},"_hasShrinkwrap":false},"2.23.2-next-1603121750-798df11f.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603121750-798df11f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603121750-798df11f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603121750-798df11f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UvtQwdFLzoZNVg9S5QPWwprWqIM+NmC1rn0qHpmmjvskT8NXBXtDyKNBW6TA4YqSdRkT7ZYlUyZQ4Ml8vZxNkw==","shasum":"547e314a55dc3c0a589d35fe54a40a02fd5cf3de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603121750-798df11f.0.tgz","fileCount":58,"unpackedSize":132262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjbLmCRA9TVsSAnZWagAA1gEQAKUgVnlOBDczClUS9D0l\nr8iKqIHMUGmlevBNRE75tTlaa77TyVchB1Ppo8uPICe9TuyyMyVeX6Ymx5VJ\n4gDzx1mWRGAEyfldorla4QZEWVg2cBJddkoGWmgB4zj2UiRl4ZRtXO5jMxsi\nZV6dyH+oB3TzyM72jxv77Hqfxk/PSa93Pel3hrApj9Yov4skmyT8aT9mC/aw\nJfzkw83acvEi1PBuKgI8sUg/9cw/cac+APbe3Oj4NEV6j5afueKwEKVA9tU/\ntnAqSz2NMU9jN48GKdOHG+hCeYvoYgy3e4enHDl6qo3Silld8vY5CFgdXy7C\nVFkODE5QyEy1772h95TA9QnTl1Q34eIdSQ+jo9N+blYXE6Q7S4YhjfQj/rmL\ne6MuzCdr8zWgblwGPF5L+z2UgpLmyvC76vX6tr2mmWAt9eOpE5LNIxRpQCHZ\nTBo7TXPTnKrAQ1cx3asrADfKwADTSjyJM7voiL7WVWbpuyDdJYYdXcFzTmJA\nBTNO6F/gnYshpEVXNaUOTNaoAASNvZx6xy4EmJFV234qeIxlLJcIWrU2tEyz\nZH+TJmX4mSQCfNIgkCMxTyUKmdMoSnRD7ZZopM4UQWoDmiCi45KuzhNavPw1\nt53eIBfBvAEs9JKvRhexWSTwYJXnqPMS9+r4pNpa+ouaVN58lX/F7eeKDdol\nSj7S\r\n=SX/D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDHAsN8B+GBDw+RtNzi2MfVRSPhzUjjtKAgBcDzx9YbAiEAhwEVWYQp9SVxWKbBMTk3W552zwRGVeGgUefL/U0gLR8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603121750-798df11f.0_1603121893666_0.34468442421908807"},"_hasShrinkwrap":false},"2.23.2-next-1603126442-58bc3490.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603126442-58bc3490.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603126442-58bc3490.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603126442-58bc3490.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-thmQgIuInPGNlJVVbQRriqMT1CS6QS3vCB9AglU4UnazstW//31ixf6pEfAUYCdcvlSscBz+yzLQTv5Q374jZg==","shasum":"ab246418bb5b259410ddbb91c2814bdc0a24ad0a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603126442-58bc3490.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjcUzCRA9TVsSAnZWagAAWkkP/0mcGz5sZW383xJr4OM5\nhGi2A3QZPuSQFj1bQ4sj22xkGg4m3JszbcheNPjzAWjSj5ZqfKvNITohvjM3\nW/QIu2BjFllb/AF3paYu9irYOfC3RwbIysXV9vxzacSiHQOGdT0FyLGoEYGB\n3T6UB+Lj3bV4EFMuPJwXaJZigf52ZT3DU5kMZcoG5zSFn8Xk8l6+ucNewJLB\no5E6uvuyc5SYuESsJtF+S/+tXzeYZ1EMGFZpfRZE3VOey+OWUmy82lDBCuJd\nOf2uwNdlyPnWiFdjOBVHZZHJqXd8zs0uo2/R5dcXEhDks/ZFdVglrQKGW+zy\nqcKfWDhsyRoYelqigNXoejfEc1A46fG6Dla5i8BiHWMIotOH85FJ7Lc/T1yo\nibdpSzsGBJFcUKX7wrJO0wR+YuIk4DoQFOT5y7fxK974IDMiJWj08qjn7o/T\nfd9wQOSa7shsbxtgXTWjwXQ/ekPa5inVzEOJgT1iJZ6Y5B0C9gswcL/3Som3\nqVNBf5GRCJ1UlAKeziwcGT1Gtn8XclQnStzOY+XcQBMINzbHZOi0iJrMNG2K\n/oJiLq10QyXRlJ6PsIlDbxs/F6sNVqqGEGNb4eytPL17OgRnfen6moGA4+Jh\nQ4RvP3B+OigE996Aq52LkjCnkFAlEucgiZIuxQrzR+zCozKHSYkWrvtIrQGv\nG4C6\r\n=7JKz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGCxBX7kQl2ihbHEQaurPBvPmIlkoXaDqZJUCyQ2iYn3AiEA1rPtJ6DNVlYgtVPDU96EpMIyB56lOQ/54zquW3siue8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603126442-58bc3490.0_1603126578618_0.6950324067158098"},"_hasShrinkwrap":false},"2.23.2-next-1603135274-58bc3490.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603135274-58bc3490.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603135274-58bc3490.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603135274-58bc3490.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Z6nhJc9bcAP9IhAYJymU/EijkIhYBrx+F73tcJTwlOvm+1jS8Azpo/XQV3j/0XOTiZ43a6fretdndnS+ewt4SA==","shasum":"1e9eb48a13c3d5f8ca5f0b4770a1a8c07abf5c16","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603135274-58bc3490.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjee4CRA9TVsSAnZWagAA2S4P/38iHhrfAj9nfAELM4/3\nXvIdwTEP25xzlPxP6PNlkeE0lmt+JVTuwVte97jnYfO+Al/k03DPQ8HmWhKM\nmSRBcVYt+oTsURHeym8Uuur746XZaHztgTyjoDH7wiUho+JsZc71cE7O3Ilb\n8qKODCxr2nBFeJEOcVXUPPug0oBdfzCNzIDGMx1r0908wWXoj2DLXd0x4OPG\nebc8+9fjj93NHACQyk0yJoif04o63HYrqkogxMREP7EqG2RIo6LX1jcFPPk9\nRpVWaan8oQ8L3MIsXk/smFUoxkSrjltNIOujOntrtYm0NzHr+9n/szZf9ome\n7KsKEhB1iFb1grY2sS8UdRJXLxE/LJ+vPv0ckv7/o+uz+zZH61YBlRXiLuDH\n929G2Y67N6b/1uWR823i9oWSKzf5kuGgeciE/BQui5jbRmF6TPKs1ISbsfSN\nuBb005aa1l6LcNy4IBgx4bvTXfUQZQTu88qCouU3hK44YhgE20E4M6484BA3\nu9AoD+uWwlXYEuS6uGisTVv5xT5H8fw3bL5qtOwcqNWxBLw5zLOp04NrzP6Z\nXCSAVGEjLd6pH2Qm9Bu43NKlBht+9HRoyPeLMzLSrqx2//dPUdgsUIrFNf5X\n39K8uldbZQtPVPk6GLQHel2oUufikxwZNFXzEHmgqs+afQV+nMfeoZbx7B0R\nRff9\r\n=0iVu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID5EjMnxxBB26FUmGrhMQdNWIqdHxRLvfujMIVdtTiJ8AiB1VWZVP0AoElq7u49shApc8XbpJKJcm5Td3vK4AM3HMQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603135274-58bc3490.0_1603135415507_0.3851807410422565"},"_hasShrinkwrap":false},"2.23.2-next-1603180994-03d6fd0d.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603180994-03d6fd0d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603180994-03d6fd0d.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603180994-03d6fd0d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wh1JDLDhKlbHTG2B/MNqiDN/q63dynG9xAJ6BbUj+ha8m/af5WkVSeZyoDZyb2NgTlsA1LyDgy6y/6HU9KhMyw==","shasum":"e35037ee7ba39c6d8e71b30bec7d06d573d8e110","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603180994-03d6fd0d.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjppXCRA9TVsSAnZWagAAJygP/1/YbCsY1IJKLTX77wMv\nMA0q14ME/A4NL3GxzVSxnfsHku9UkSSldDqthoLv1tqEHxRnUFPuAaXeDRRG\nh51qajtmx/yyl5NkJaEZbyy1gU5A++lqbxhkI9k5rIMuJZC4/wmBe0gmnTLH\nhf7Cu4x2PfIADjXScWFkZ4KvWF6ab26/7jNojRnIKnuigvBvc3kP5GgMf9rI\nk+j6z8tVPJq/w194vdCmd7j/L6N/fWYkDWoqFRp7hXyVI9JZwEH0bR8TT1xJ\n5LS1co9z33IywrYxl73t4rZRsbDCdOsF87w8VWJH6N7sQiOmSRN8dzP106gB\nk6ApFwyCk0v0/yRfUwbeBXeUTG6QITfSyRd9SXWXjeQ92IRPFeDCzM4NBdn6\nedVPRpDJjADkbqZk0MTsf81BG5LOspWhIJr0oY/Tpa5T7Uz/fdAAbqJ18Iwn\nsaRsbNu18SLw3mPGWVhUy6BIrGyEVk63we3p5j9BgjSB/pq+IqtwfYGskuIB\nLJtcBOt4g2ou+rNq+7+DqHU1DmyNOaOq9K8RkQINnKRFVyug8ysUxpJdzUwr\ngyyinLrZS0piJOsCYWqei0SDVud5QgvF/cnT760khhQ0WcTAl2LN5oxCLZKd\nH7+9e1tU557kubky9nZO9cs398tKb+LbHbtENQtdoMPDQFB43r7/RaQFO2yZ\nu+v4\r\n=9/VY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOMTgNdeJN0ENFZH6+zLRwVhUS3Hs6+ML4I2R8ciYd9wIhAK+VohkJ3iQ5gr+A82R+cZqEO+ghU1uR+1DP/Q1QhG2F"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603180994-03d6fd0d.0_1603181143197_0.5408490638663044"},"_hasShrinkwrap":false},"2.23.2-next-1603181219-89fad313.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603181219-89fad313.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603181219-89fad313.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603181219-89fad313.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LbbQf5fgZqztuRZSNdVJ7yK0PHZUM3IsgvShbyG63Lw7eRvMT8Ug6oi8XpwihQhwoBlZcfjxEQjzh46Pjwi5Cw==","shasum":"aab776f422ec49df906a0e6de98bb3d5a1563383","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603181219-89fad313.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjpsjCRA9TVsSAnZWagAArToQAJkM/DJgMnpkgA3m3qPE\ny9BGK85VuaN4hvOmrC3CELGvUsbMAzONBetghDCuM8yZOkRJrbHEmYWCtj/i\n2V1ICiDIZwkT41c8XrNcS3hM+8YtaQXfe5pP38rhGAZh/RTxC8x4es+5lZbj\ns93L94QELmw2XIZa3K5WGz+DKy65KVW72m9XGEZ9xDKk0YjHHk+8koDb3+kz\na5qCGDKLBJMfurdTvohz8N30jqpjVdPa+Q9zJnVp50acWS1c0Evd6aaaXssp\nxbFD6xwFtBoCt+O4WAMwDUVQiRAUu26Bn2NsGkvXBZct/NGD68guBwBE0Z3J\nibCB68Znr3aW2R50z6fcGUTiQkgDu6k1mgq4W6XsDhGHo9RWe6pKqGgS2dpy\nRraOVtIo7ad7GLe91xVj1MadqAM3+XK3JId9bttnXKsh2Ie8v19XYjd9uE/5\np71xR90KPvtZvGcqdy/hZkwoCWD4GU/BoNY3dD02ZNG6oLX4259TT4vfSVsS\nsAMm0wR2+EvCcZQuTGQG7GhP8q/G38HUZjU6X8nP6oBLY49G4DtAsOZaXKnH\nlcBfJAVqwW7vAidOInEWsTFcj/rvZqXdESqFywud403RZ2IL/GwJWi2zHV9C\nCibWsVf9pLpZN+f9f9g0DjmQ6TTxte0CXRY6GeNKdDv6H7Cs+wQDIHkdyIwo\n6yLL\r\n=KClK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAF/LI9puLE9slnxAG+mjXwh+NkSVR/H8/YdgKqGaRXfAiA/tQeiJSICZcIuC2dJstgdjrm5+QLQduB3KbYJJU4eJw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603181219-89fad313.0_1603181346981_0.137004235172969"},"_hasShrinkwrap":false},"2.23.2-next-1603181260-2ad12a8f.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603181260-2ad12a8f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603181260-2ad12a8f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603181260-2ad12a8f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1uGhSUrp/P66vAsQodT3sQzZH45+tqRLNe1Hh4UaMZ3hvioZQOehpT8lR6RHUDbB1wmS3b+K99OiM2xct9xw1Q==","shasum":"184ab0aa1b53ea763a98584af7fa0993c551bc0f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603181260-2ad12a8f.0.tgz","fileCount":58,"unpackedSize":134081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjptJCRA9TVsSAnZWagAAq54QAJ9hiULYQK3pjxQ1O2nq\nL4CGUd5YOxUQifX/WRGlJjsiewaZquKBSuUYuAgswkMw1x9vgBSBpk3Fc8sf\n8h7dH3Syqe1+YL/VP3MDivIdKO/fD0s3/7YTQBW043OSPTLkoj5prqodKg8S\nxUCbvNmYr/NP/krNNcpVIaka05hjmW6/Kd7+FTIm5WpSZNdDVN7obOsCl2Oo\nhq1AMuG0OfgQoHHpWlynPtwGP6eRKfP++6gFJw+AWhWBW8vEsYpXPlQg4Pa0\ncWXW3vbWHOkv3gHvhwR5JhBSoPRYQ7CVdvH3mL0cwLlqGKnNngRdlOauJ6bZ\nnREZ6XfVtSTax5lw10py7zrjC35lYCKaeBaoa6PlQ2KFWl0zLQ3Ax67uGzu/\nxHWgh9kTx0AWL3NeEVgN5YpELKSJN6dN41hooOUtq15bG7Hn568la32Ua24p\nQizJBFBoRlkmGpuOv/caq0FpbDd8MxiISC8eXjqANE/bK+dWzObhMNQ57y4q\nzS3d65C9fKi36SPBl49lf3Cl81vMx7MIoVIfimbEYAi6o5w04USDe3GaXcDQ\ncjRDxqbepAzdr2ZTQzlXdLAG/53CegiftS4sqZz/BL/m0/gd/L6WM9Viwrt6\nKlpPcnKqezV/DMmQz20+eqHN5v9Ns2bChoeUuCg6L4F5bI+45o5S7gj3E7xH\nDDfI\r\n=jVCY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+dVggoag54lfMrPaw30kTxvDYX7TAc/akJq3acjgu6gIgZc1XI+2lKdBnTOuXVuzfLG8s57tLgMpZkAWBFEohwG0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603181260-2ad12a8f.0_1603181384866_0.8841679931836655"},"_hasShrinkwrap":false},"2.23.2-next-1603185946-a4fceab6.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603185946-a4fceab6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603185946-a4fceab6.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603185946-a4fceab6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-O0+IzEVsdRPnphM5YzlX0XPqxlIzAvsGEYH1g/IcQAXFnuB9pD/pIsNnH6atZj42NtDDuXSrs3ZwlC93PO3DNQ==","shasum":"79fa0b101a0169ee52c6146efe32345817f5c5fb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603185946-a4fceab6.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjq2iCRA9TVsSAnZWagAAcxgP/3q0b9RxrKeqY6Q+1J1F\nuLMsO9Z8qKvfV0FVLEa/UnJO07qAw6M6R7+/ochFxWoNQVLCGBwT1UNUsxsI\naPeriQpNulc7Em9UfRU/aTLf4tm5aQkNYPYL33l8eZ/K9IHhh5d7baaZsL61\n9r87pege4hz4EPI8T9T6V+IfcMLAwhgYdRo6gXC3oILm1YvCHucUMcx91UFG\nTwii5s2bhQ332Vn8Aayr493cXYlTLXmFsaW1D9aMbSK6Gfm4i3s+IUOt+rMv\nVFRKqtwNX5lLEYAlIK4my88D6H7THvJz09Idf9zYhnnIKZXqWPMWZpCAoP+L\nLmJ91qZwgR6B7JOx+jsy5Jb9chiWbo1DyFKYhhGF0rplEyvvejXbrHuSHqJ8\n64c3i9IzLUiKd9IpjgjjdlqACyiQPK99jlKVAFILktIDt5b/J2vMkIhgIugo\nzY0NEu1Vsn2tHBYk5gbSWT34DfsVaiSxihPQLTIsiSawOpZQ4HJtLZql2npN\n/gPP2z3CVir7Aju5scmwV5T4mMZWA53BeyOYnu7HsGwb9gZEKgOU5AcC32uE\nWGL0neGRB8MThTX9gRn06gtmRPPvzr1qdt0p3kLI1PKmSgZaqv5Uwh0o5nl2\njWjIPAsGp8Ofv7PZC9hkDJ6FrhQWA9pA/Kx99uOS0T7RxF6fUmLhaB1E0MyI\nG2ZM\r\n=JNOY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBI5Hz5VEZ5h7zKP3bIsG2B/78Dt+2Z5s7peu4X9PWcFAiEA/qjwIWsEpq6oFzlGIS8Yy5WARjwbB43NV6drlquqzno="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603185946-a4fceab6.0_1603186082431_0.8857996557504662"},"_hasShrinkwrap":false},"2.23.2-next-1603188235-9a0289e2.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603188235-9a0289e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603188235-9a0289e2.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603188235-9a0289e2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VBS2HyfFiV7cr/9bMfzTnDCtq2DmwLFVSUBNivjz8DzTnosofGzo87ZKMMnRuBXaYlP5aC7rHf4tyqFn4gsFdA==","shasum":"1a8bafd0e370dbdf061838d321f414d20589efd0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603188235-9a0289e2.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjraRCRA9TVsSAnZWagAAsY8P+gObLYO4RmjEa4l/SaFg\npp6I5uzHdqOl/v6ot0LiU5IjNWTj/HeShB1wsnebU7FHOYV6j2/MTsVY3HHE\nX9i/XIPKkF5wyyu/dsP6xdpfOfZY2FaQvOBJjHgeiengtUulA5Z+KGJaOgGY\n75Ey+mZrNiZO3qgP+QGiLnswVuFtclPJ8olBLBuG8q4NtZd7xAlb1mL/Y7+f\nEGz3e6QhdXBqQY8S54VCKNydOufvARoi2DYtvfCRsAYB59QiNedtF23V3qTn\nNKQJu00/5EAxivcoiuKXJEcj9xpRRKXDHWhlEFF7sOkrtRsQ2y/FL7RIBd8M\nJrj5y84p17GI2pToOJRPsxdeb5/5v+Seyqk8Cayz4B8dJiNsFifTuUl+Dz4P\nlDkiCJpr2lyrkzgltffbQ+UwoIKzegDFLckPCl2laHu8IvucDdkZmQ1WuDQ1\nLSmorpv2TjeVtXe4EqXj71+MNAjYxqvmFZZjPbAmdsadFxymbB2vMzelRiqd\nw/ZRlDEq/IKclr6bB0XzkW5IoXT5bv+izhMS92iRBm6J+8ChUUyy7rB8kCOi\nqB8lBgYOIkzwUEXOERLwvaVh8IC2+jQgArsRAEfmyj6YFp5/JjT04ajHNDcA\nhjMdpsV17sOn9O2HCWQoJDMLw8h2bsJdgcnM99tziLb2NcMvqLaV3uuE5P0c\nO2SD\r\n=UcOl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPRxBrILMDbFakjZqcZkHFHQj3hfEcKy383ZGbVHT1FgIhAPoyjHd2sPWR6w/GijfUpVRNEeCILx+guD/vupKI7BXx"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603188235-9a0289e2.0_1603188368762_0.7109244143858833"},"_hasShrinkwrap":false},"2.23.2-next-1603193636-6ef423de.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603193636-6ef423de.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603193636-6ef423de.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603193636-6ef423de.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/HFViSZPQHiCcpNS5cnT145J5zlUNNpatsTWQzeAJFg+Vupad3k6k8uCzg9WTMeQ5/b77aHge+vE7/BUpQx2vQ==","shasum":"55fb008bf097b27eb07a3ba32eac9877466c0329","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603193636-6ef423de.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjsuqCRA9TVsSAnZWagAAO9MQAIJmKvo3AKnxKbwlugkx\ncQVV+7ViI5XJt7gzojtR/edpPVWPInNy1qEkF8UjXGMfVnhH83PlYBRF6hWV\ndoi1pBOP66SiiaXu6Fedeet/OPvKDuT+fwiCH5z99jOCYbKqWYgKm5R68Dfu\nFhOXtlBVx3omrZcoKU8f39Zgth4Ym0aqOfDnzNvFCtOGyIdhK0y0CIIwSZWV\nNolz8TYsF4D7OtlakSj9+icj4qYMy7WbGustbtZfNQ+LyxdhP6zU3aaBKQSD\nDXKREth9WcfH292vdqwMkPgyhfaxxtPFsVvg3+MOGC/wb7jJi7iTCeIQWlpZ\nFpFq0bDvaJEICeE4BbwtphGB6BXIrGsjvY3dfbUxeVzoY9N5U9wwsgkueqtc\nWAaMA3tJxanQmZLWrZcMK2Et6tPEdCaMusTyNFD1CzyhjhLPoJJZiM99hRPh\nfCB3ZCQktCYFeukOjoZoO+tRBmQJjx4lwWgKKgGEccIdOHXN9OC6V5tvo9zr\ncWsU5l5RBXIf3p3eVcm2QMGFgSSqh46tvOB7nepgglOxPSs/fUXH6GRozmen\nuBoLJrlf3EGej1T5qYNhGyHNryXKAi7O3hMvkJ7u5HqUNsz9kEz38Mj9UQnh\nGySyPoemBKYNZgrKQiyMSPqa2i9EJ3Jv5rWfrIgM31dUCCCbONgVPyRBWGHo\nBrl4\r\n=9cxw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDfU4nPgw/XP98cS70x1iFCvYvzoLumOh7fnmrj8QXZjAiEAj8OVeVm4MD23nM+dSEZPHnsta0zdZS5FzJ0LtVKyHLc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603193636-6ef423de.0_1603193769912_0.0673016242759732"},"_hasShrinkwrap":false},"2.23.2-next-1603194126-4894918e.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603194126-4894918e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603194126-4894918e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603194126-4894918e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-X9bYK5xo+JdeC6IjdRNSEHou4tqaWPz0RsMjfS/BytOyEJlA6TkE3mqdI3k4J9tNnzzzEEt15goUX7WoiXsBkg==","shasum":"c0d181b83418cfa71f52679e2bb15a837f7bda82","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603194126-4894918e.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjs2ZCRA9TVsSAnZWagAAR5QP/iLYkwH3qDgWOvp7/0qj\nOAvWPEI6tm45ixUSaM3ZpSFlBH7l0LCGCzdykFRJa3Dw8BGwLRzJZ268aewa\nqk5SZ5Pxtm4Uyegs8m17NLsy1SZxqqT4vao/2jppU9I0eRi/VJeISmuOHCIe\nMKLhXEIWwJX/XyU3yXO9sQ2WH7ibzeU1IGy8M3nXXwKGrna8XF6+8XSw7E3e\nFU3JQ8/Dp2BCRjCYS92sYj2wJb3RpeU6fp/tS/SoxqTVIEdluypSX4S7tF9K\nluCgGdJwnjbcdYoH+cDXP8ZvxpnP/DgDr7TSkPo8+rJIaPae+11vTquIbrLl\nKa1cs9f1ofY3zxcR3UqAKFwvsAsIwMAxvSJVerirDrUdit17Xm7V9vDuEP5w\nCOV7z6UJBrJrmKFxFiocoBsZ1M6+LExCYXDOt2Q4uIFcSpmMdq9yWTEWiDRT\nlmDogG2IJpM7a1OX5HwBHSZoOAHvk5Ll1xqdIua7t5DuXAPv3/MVUFIdWU9O\npbnGPp8tdlhw8pxd0+eTgZ+wcYcXEarBomp9pNvzC0GaeILU4H4KiFB8DCre\neAFkh+YlMFCt8BfJ3J8+WOX3FI7014hhKM/xOh60QjSsskYvGEMJZrF/540N\n3KPUnztpQnrrmKMiqmUE5Y/mc5AoUL4gSXnrly76uOrmbcW6P+3/7dw8dLwY\n0aIi\r\n=M2pm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFHCM1LdxMiYq1ocbpMnxlbFyXQXklq+B99JzOtz1qawIhAOiG6iXZZFaAcWA6iKZafnw0FbBDNIxMm+iLuFfnkU4N"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603194126-4894918e.0_1603194265116_0.5585047770862299"},"_hasShrinkwrap":false},"2.23.2-next-1603194613-3baa53a4.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603194613-3baa53a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603194613-3baa53a4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603194613-3baa53a4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WSEtJoNPlBUehVayRncNlHx/Z0uMnZ8+nN1HzM+0Xz5bPtTOb/kbgkQi51H99dHrAxJEzvShhfczMPGhM6BqEQ==","shasum":"6c3f1dfb36227f11e54ffb7cabbdc643d499763a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603194613-3baa53a4.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjs97CRA9TVsSAnZWagAAMnkP/ic/FFYpFr8PgmvewGep\noCpwuC4/gpJU7qyGWbt8wYxWJI/TfOpo9P72Ar/NG3Sj0TBIz5p35j/pw5ZH\nSa4ERjIcsqw1s8+OtR47C+Y8i9Ork9eD6Wsi0mezGESGyezR379uPnV5vGJP\ntfspqJ0eQ39kRrXnU/zFBebNJbmSnvxZkb4JeQIpIXajQEZjy0FVwoGEPDqc\nLMvreEnc3VR+7IsnjjBFohqWN9Os/AussIchpSEjCubH5L0s0KkQJ4Rzt5tn\nfyAhMUjaozSvOdVf63AVrBW9GdLsB9mRojWleNZumnY3S9yqAFHArggjdhQj\n9uqSzXr2EAD91O+Jylq0EKtd4uU4FxS8idBTtuJWWC1SCKs89PBheB1jlL8V\nN/JAd5R5Penod0TRgdWTroSYFcb4RTLDg4REpYXKA8Qye9s5gWFbG7iDUn4Z\nA/Jjwc71Ym69gXBr+kwUP/66zeQuSVZnvUN1sySkzUtwrlGZji1zRoTlwtcE\nn8UAp3Obgobuq2N589D4p9OLIgrJDUPbILDW0SzBoXaGgKGqgskMULxArJdw\n1F7RqKxSj1wxNB8kTnql4OMeUGRRp4CZNG0BPQxTi/UAI2xWJxg+uf7lRlb+\nul/j8bY9VxoWr2RQZAhqcyvclmetNxLrUeP4c+tKp/e8607vhWNoTSgiiBld\nmc3b\r\n=nQXb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG8hZh7IlVQLoOqMUjrJgwV1Jftw912vARkHOORjw7lPAiEAqd0qFRtZBQIqostjYYJDEz3Y+pmn6KWYGhENdsCZnCM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603194613-3baa53a4.0_1603194746639_0.6942569825572662"},"_hasShrinkwrap":false},"2.23.2-next-1603195885-d990dcd8.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603195885-d990dcd8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603195885-d990dcd8.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603195885-d990dcd8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-g/d9bmGsyv8kzNM2zvOLCDmmdwjG+H67C7dYPGxDsizvXpXadFVPkflo07xLHOXqzJuIQeipBpsz6PZB9Gi6/w==","shasum":"fe25ff143213708b930903cd9b9fdf17d96103c3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603195885-d990dcd8.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjtRzCRA9TVsSAnZWagAAYJYQAIthghz24MDXPN237abl\n1BYbRdxE0TUVnPkfkEzPb0Q+PxNMQbFzbFalTYm/vZGtOrPsD+VEawUhAsSy\nWN/QCpfVjbSCLPahkGDIkbRTYVQaoteHNlGtKfxUllJayXcs1eqvgZjSJl8S\nOJZ21dWDSnTAeB76lBKpklf9DSSXDvPmIMOdCD1JCJZZWDOpAkcdVybcFyv8\npaXe1yS6nd+hg+Jz1lbIEol8TS7x1fO8/sOHfdF4HwZDbyy8jm1Aau59mPW+\nbW+m65sYuH3J1eSRckSz2YBO1FDkpARxI7C151kqCmIozQyzPhLm1L+2ogCr\n0K8gzbyD+NCCmtTEag0Lvvssot5pIWeZA3ZcpIDqfmmArUJicpDKDuqxCOvc\nJGRvq8ekMCwOLVgEHbdvwpwLaANtUNQ235xl9nbc3FaReoyIIXAqeT08bf4Z\n5jDMy69phMITzIHSdPw1iPjDTp7486zmVJznqOGmDpyjkJIMmKXao3SqsPb6\nP2KVe21wumXJfycGgqapkAlkDjxA0YDkVNkpz1xCyD7/7P5si9UUvxfpLrai\nzwt4WsDGzFv7eEQywUzbciJkvGJd3nfeIvkjtvd1haMq4vAkm5DaQl73ySf9\nSmi2KQ9DK81WyZDItCUhfs64u6TFh5rDKPitancUwPqCungEIgyG3jsWsHMT\n6ZuD\r\n=xYnF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPJOg2Da6/ODhIJcw9pv2X4Xb73DXRuFW0hYjbcqYemAIgaMvZ2VBBKTl14Mhv9unNQnNL1Blm1JT72L5HW59xDsY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603195885-d990dcd8.0_1603196019037_0.9902837945435023"},"_hasShrinkwrap":false},"2.23.2-next-1603196927-4a5d2930.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603196927-4a5d2930.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603196927-4a5d2930.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603196927-4a5d2930.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-afD/q9P7pdmKrvxojY9MiSG5wAL3Ik1lXuLHuLD23zP4Kvx8jvE3m3W/P2c9o6hI5KxOUHyuuab9yKR2sYSpWg==","shasum":"1566d92caa9d4b489d84cf42a8e05883ff484633","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603196927-4a5d2930.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjtiGCRA9TVsSAnZWagAAdSQP/1HLaE8+MtWjGWTGUyj0\nlY9Mv/MpVkiNnGc8xdTSfhiUNBCYqTVm5DQhSRRHRQLdgk1ODImAK0luu0tx\nJyc2Wpwn0xoNGj/H3+uduK5tPQhd05qBHGDBgGUWHaQWsKUn7AEqfnrPv4Pg\ni8CgEWXzmGu4t6K31IuAgS6dubKucDvDm6jX+rAMqhtK4KcdPyiqmVr/cD0I\n5TyRhAEZ4uWiLnBaD+WftCfIaRzuXJ+lDyF6V989u340Kterg7x3r+4qo7wQ\nFIbuyIrZwb9oUfQoQ2mrYdyC0CzEkA0xw/jvpw7o6nLqSNfY4+bCGO+o4f85\noY2Lx9t8+3Z7aW0ydM/H3JLiswRGpbCf+YJXn8gpt6WlpYdaPnUga0IfvbqT\nBaEUOievLLUfNFw3NtzrcWdH7YkAr7aOqOHP62LTBq622YkYLYrO3Rj6ZOxC\nC3OmSOteouWDQsmTf/AhsG4DalThTXTP04HZUZBXt99m6BNL66J2ipPF91sA\n4PmZdCFV0R7X6q5QUpWkxOgSp3L0ohBoAVhiidtQdbQvBwUEWuK2SmD2Jjuf\nqmtANyAksi7K5aZ6zEaWtwa2s9QvuL2LjWomtMuI/VySUwLw4xlXSUNncd8x\n98Q/L1iGYCdkY1RFOkwySr/VaUaGUddvVgBGIV2YAa36RDC6iAgoK5ZYimmm\nwWpY\r\n=fOUY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmVuhAiEzG6eZkhfztg1Wo4vfEUrnvycWf/EFMXR/+1AiA1sm83P8nSuozbQ9SFSCoL9FeHEl8UKzD3TrfITtWGPw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603196927-4a5d2930.0_1603197062335_0.21081436649542007"},"_hasShrinkwrap":false},"2.23.2-next-1603197008-57d7850e.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603197008-57d7850e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603197008-57d7850e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603197008-57d7850e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hbRXIlK0TWKvIdTPel6oYvQZ6WsbovooVif/UDXcZhfcMB78l2HhHbLOq40WA3kUmBXOkWtCdNYSxfegUpbc3g==","shasum":"cd9c11796cdb7f9d1a7fb7c5deb641a969c0d947","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603197008-57d7850e.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjtjVCRA9TVsSAnZWagAAeAsP/1sCZBqDBTIz+yEDWHoO\nD61KTBU/UbnVQFSqtCC25XnfFx4AIEkBCA1ZdB4WTMQ4egqMuby6/P+kPxfR\nuQ19BR4NFCLQa8f1lGpLSlMos2KsGUhXbiUiIcasyAXMU2k7Xhob3lbWAzKc\n/BgmOCi7CNlR4VQH8RwHXMAoRaB+RmoAnewJbaQukaMBkKj0yAkSqKEMlJFe\nZWfIvl8qp4NjJ6N7tcpvFnGBh7aFLHjTD7EBtD9MIoEiIiMI7kAa53cAPDrH\nFOFpCHGQPAxI51CxoGdOp2xlz1gn85Hl9JXhwq+4DELKPCRllnp2aQj73+0S\nQzMnXQ4CWX9kj4spxf0TRJxQLc9eEle35tZCv4krCJSC791qXku4Z0kYEiJc\np6Yj3vR65k6RMaDDYdn1rS0oqj0vFcy0cDMpJ4ZNZcBufAE907y4hLCYnywa\npnVF9XdLHtKI7C7uL0J+6qoF33Q6yNYqyizH7E79jpfUlrKQZIswur6T/nk/\nPUjvhEHnrT5tQtvEG3jMkEP91GXMFrJt7MvvtoS1/frOVnAhZP5AlZTRvVci\nhI8UrpxRaHRncYg4i39eOtdrbsyswoDwefuqg5C0OCcIdy4e4N49Oclh296Q\nUFyE6s3vK/oivbB7A5klSc3ooQwOTev9WlZhUavrFNn35uF7HUjKWzpI4DQu\nKE3l\r\n=XBZR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlwa8SSUZ7+wrwzGJe2WpWIso/o7adqOX91u7GBzikNAiEA+t5jeXfEsIZhX0ZaAe54Yd/9k5cqIv0JwdggwW/zIng="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603197008-57d7850e.0_1603197140768_0.8783687209878901"},"_hasShrinkwrap":false},"2.23.2-next-1603197067-7063d34f.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603197067-7063d34f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603197067-7063d34f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603197067-7063d34f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TJ+Rq+S4A+ynm69hM8wr7lZL1oIu8+B8D/0l0vCs318kMu8l5YYbuGVmJ4eKHpLn13fRBh4WLYuPhCsdEO3CIA==","shasum":"f01ae0af096b65dd28fc7438536193f379ea58a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603197067-7063d34f.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjtkPCRA9TVsSAnZWagAAGRoP/2O5X92yPNqyBfKx6VEw\nx0C7em472K7dLHfSS2okDPzdc/50ENzJ+O9KjMzK5XrwB2ab3KrsbOGK7VrZ\nrMLurriFQgHbXFCFsrPLVJR8DNv+qe6cXCqlDvbdQUlY+IGVgt8rrIuwcQ7V\nQmNzBRkiC9q+nxv73EVBFAVX68FQvN87uKH0HzZMbMZojFZ7tSNlRrYjsPX8\na+NKphemCdEq5JUnSTLYiXK/nh0isdKwUqEXFsYtyzw1UlmJC9TyTWTfGdlt\nNZqZ3NXuhZbovN9Xuv5SU5HbwZsvVHlHVYAyRIzGy854U1SqptuYFT84r0ag\nfaeYdVxXpRRJhekXqez0qp8dp0WefUySgJHnd7N1rE27j3d/tJ8o73fa2gkg\npkNx566g2Tbic/7gFey4l0NDk5WCqr8uNHweO70t8fhnj5GshDAH72FrwCJU\nfFq/F32K+YO9qQx+ePGzo+UnUYWQHoU0Q58HHvOqNyr92+V8D+EstHmuG0z3\nh7tO4d107FaMn+jtqXJl3ggCbPwecDK9fPeYh2k2EUJJ7We5CBJV8u8hH1kl\njhTV0SCWIkau1TN8lfn29aNv02VZz51oj4PIM8O1BJ1Fn82YiF52jWoaDzJI\nTMcvnzwPVkQhKFwNHO7fzn45kuHf6dCtnBCOj9wDztwpC7zF7hITg40ufg3Z\nsngS\r\n=KahX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClD3gOMRFAionfHqOkE4P/q2u6mo4rVZPLaFEn0/AaHwIgAca11c8jVxalVpGhB0/RcSJIAoLS9CKXA7+OgoY3iX0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603197067-7063d34f.0_1603197199468_0.09547380632693736"},"_hasShrinkwrap":false},"2.23.2-next-1603197231-06a60c29.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603197231-06a60c29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603197231-06a60c29.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603197231-06a60c29.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-clT1LTcNsDt9m+AuG3OPILHdOSE8aOKzScB1ZANb7EEIzIRAjqzBp4gFheTP6qzV2hk7j2ALt2ivp5QZnN7iyA==","shasum":"55cca369e91ba97f114938bc41b4866a20316e3a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603197231-06a60c29.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjtm5CRA9TVsSAnZWagAAz6QQAJ/cxd7LCijF22/K3Ruc\nBTqxO/0ZzQCucK8PwhD/K3Xi9cHKyla8ekZtZ8O9oclfCVGw+OSneBEzszeg\nNQt8Mth2Z2ez+rRlpolUMRb8fBCW5jg/wp8hf1sEv1l/oWx43VCQjqepdxcQ\nuTAyFgM+xR4NmuPOHRL9EiYHRciw84p8pB7kc//ITv/pZPpNREpXUDzL60aP\n5W7AsAqBgN5ZQ7d+wz6HTNMaU9d0zYt4WEaNIDhRlEt3G+h6gYKsJBGmglRa\nCjHMHXFCI+NTYAmXKnkvXLfzUsb3/PFF377Jr6dbF9GgZHBFgpkA61Yvi82P\nssuwWTj+guUaDhEkx+1NBez77hx1IAfDqh0gzobJSBCVnP/xCHcNyIXujaJn\niPks5TQxgBGuQ1OPucERETM4RHL/Q/owhjrXPAuGky2gwT19p6+FrynHzQVB\n6xfnY1ZPda+t/w7xSsOY5xXAhkyx1tJg989d2BKcbf1kleu6JPTScMk68tIu\n3dPqTj7fBCjURRgA5oqhggS826tjsXezw/KyrXzMIfeSvfDfmZOvXqTTER6n\nsmaGzkdwGsldkzxwGR6N7zukpzwPNRBqTGffRMu28RP05RHDBGYXmxqxlk8M\nOSh+RCWLk5xptJfaeqrqlxl3+z6F9bT04twrwltxYtux9XJBIVotqT6Oy0Jv\nxVw1\r\n=tOZ5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAWMWNdySYkZYVDmIxFBIxlsBz8JuZv7Nc8K73q88+I5AiEA7B8F31VqKzYR+ydY7L2uqdEXf5lEmm+umbuXVRsmV5o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603197231-06a60c29.0_1603197369200_0.6201346011881563"},"_hasShrinkwrap":false},"2.23.2-next-1603197248-8b5a7603.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603197248-8b5a7603.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603197248-8b5a7603.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603197248-8b5a7603.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DX4T0W9ASpYMd/Qfo4IoPuvMS9kT4gWyYfAnI2bTfTRTwLzRsMjXJuB2q4cExoigM2DFDkGiTOLY+D1yeOLI0g==","shasum":"9033f532439cbed797db8883aeae3fda3ed9cfcc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603197248-8b5a7603.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjtnFCRA9TVsSAnZWagAA4o4P/3VS6WkpBfObJvlWmMis\nFaGGFyFlbx2m6PuiwpdwnTFdFoVfUJLH8CCnQxIdcg22YzC9+Ey+YC8kio1f\nXUL9rkEns/FFptR6dK5SaRNrJ7kfiB/sMggB+16jGzhJbIGpX6EZVNeloImP\nfrk2aA4c31jRtABYXniZxOKbi7uwxfZtmjHsRX3OpO5tbH1V7RqOATVso00b\nFKjaYIa9DyJVhv3UlQ8rwv488GAjvf9K2YgB40XyJR5BgwvN1FXB0zTC76Wp\nnDgqPGMxCju0hkyZdb2k2ccZedVaX5PalQLSWS/Td20NoHjVGfEBmFELGD0g\n71mfND2BOKBvxa0GDFVHt+86yyjXfv6sEP/WBmI0YPUg9ijyI+YKN980Wi/k\nBInoDubPt2z5mTgu5sekbJOzblZ/liGb0cLN+00+opM7AvEluhOGuR3aWrMc\nsepRKfCwevMZu86NFRG3ebEwtqZtdZ8blb5JhjHwDX3rq6wLRVglM7BFaI+H\nMIicEbobbK4NJyW5wAUnrHcdTUke25apKsv9PpELnQJsgKuLDZzwDJhI0G9l\ns1I8zUG+J7rHGfJUscO5Sm0OcrAJMuVrFAcsmOm5AZPK4rEYOj3F9renzmky\nOwFlzDSYNfIbCm3hsLFgXl9g09DUsKcAsbHhgcfYpFCq5RV3CJj5y3oYmmXn\no9ek\r\n=v5m4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyNqguRNFT3IyakpDdLvGVKhJokWYVcqqt5xaWQKCukQIhANlCOkTev7CPdmKbfc3p+VSq+igP1MqW8RFx/AWIVe//"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603197248-8b5a7603.0_1603197381204_0.7234672638106852"},"_hasShrinkwrap":false},"2.23.2-next-1603197253-8b5a7603.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603197253-8b5a7603.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603197253-8b5a7603.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603197253-8b5a7603.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZCULBsq5prweAZAWUARVnPiW0P2YLxiA+cKfSUgFe/SnQ7MCwThLCY4ZwjB9Odxd3TX4IJ25L4eKz/J7w3OTfA==","shasum":"6e5f4377a98ee471feed0e274011b56a7dadb22c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603197253-8b5a7603.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjtnYCRA9TVsSAnZWagAAeRIQAJSdFhDZzj/zfxN+dDQP\nfs0GngJlN6ES/Nt/vSwHKqkUHkG+tiurZ9WUUeXM33hWL8EQLoHRzaGr7xNa\nldke5Qzj2c+pyIQUZp62FJOlsJN0SM29WYhICpvMyd3PCn2zewuq0H6tFwMR\n9Gt20y/xvnML0gLg7anubH6VMCyHayPkaIFL5atUI1486hh+yJ5X5vU1q2/v\ns+ID4YyIPn3dDnli5VXvbu+Vuz+rqvw7NPBDnt47L3Z7wLy8TyWvQ66dhQGg\nXSuiZriRhfInYMEZwv/NYi+I0yaYuDbGu28NX6iqO9WGjUd/ddU23XQV8tbZ\nIx+BYIaqIAU6+W9hkg6xFGPsBervXoDSm6RNQ1adZiEYUH1RK/WRazFm5E1L\n6cOr8vGviGY3duFdnpPXVxQ34PnIZdwrwWgpQfpT72QczqnoVEUmiNY1Jpat\nY2sRF/sZBOGfMbbbpZ/kct7r4mx+bSKLnUQad1opj5H01uAhq23K9Ru2ozNw\nvavmP4O3qrwrE/1a0RF9AqiXsKiy5Ksq1peWBI8/3kYJvTsCWGfWgW7geBDf\nDd/1myKCW/a8+3znoAKWE7y2zIr7YSj6cpNhIBuW/Ul07rsOJ/1WwOKTX9st\ncoLzG06Y7Prs1FrhQoEBzKQmxSvg3sZpoDKZO476YScOp4JrPUkKFm4mPS/b\nABIY\r\n=MRRp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFMfU6lb856h/9nPv9WC8fPmsbb633us9DbByPavyv7xAiEAtx4cerHPgVQ4ol4lastzx2Wto5cKtrFy0jkNVonMDMY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603197253-8b5a7603.0_1603197399923_0.01304803720428338"},"_hasShrinkwrap":false},"2.23.2-next-1603197984-dbfb2c04.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603197984-dbfb2c04.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603197984-dbfb2c04.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603197984-dbfb2c04.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zH7nwqbRC2mIdhwv35WmuTgDFsjolMfiOhAzMOZW9mtv6kLxkqg1icAX85/WrmuXMc3G85X56dzSfbqaz5ceog==","shasum":"2fb1f88f3e2ef5d9152faddc4a9c36af2a618a60","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603197984-dbfb2c04.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjty0CRA9TVsSAnZWagAA4woP/i4Vj9lad5x5LPVtSyZc\nSCsYh8nHNubgR3D8RaN8QOgPXN1VdK4LbmB3/uRoP1m87/SWtBD5SZy2LHy3\nmObLT8NqJTWDDjE3cGK2vJC9ux/WoKbtHPsH1l1dj/5XuT/m0JOwwljUr8PD\nMRfJVeNApNUjD1jB7Nwed6NlgenXTIl1gR+VnZ2Tr8jnF4yGYQc97+FGBdZM\nO5lGoLOrQdjEyikjIDB5vsL6wK5qcRjsEyFkW9TONJ7x3vX6yrilf212Pc0W\np/HPdh3+k9Nva14KHmlAlET1T1ty3J79TLiKSRViddrGcO93do6RSXV4EMMU\nTlGRg2XUPfdch928c8bup8wqx1XXls5MRXNBl7+4Lakrx3AYU9iOZl3W19IW\nVy+Tos48BigPr49zuWXuGtOpek1A/pv41Yxku2EqakScSHz/yOHjS8/fSNLU\nnmeCwwPeuLHqYwpNasG92rW25KEn671ZtfentTqz4j5QcmuWZiVf7dMAIfWx\ngfToH9ZgSKd5krL895NtF4S4kR076uwtRqKo/RziWD88G196H1oNM2DYtyhr\n1JgqSYxJ88mhHvatU/XAmBLRUMWUReWtG+mfJAXwU2oEOJfWkFmK7hoEWMYR\n97OPSkA0OkzYj0vb6bGO47FpDF1MsFMe0Q984bsY+2+CkRqax62sdANTyzsY\ndBYc\r\n=x0Hm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChRi2HSMvkfGcven87Q9YqwxEqsuifjJh3qWoT1ifnAAiEA1an9Bb1RHzwQxE8258UKtmiH3mQGut2we23CNz3kQQc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603197984-dbfb2c04.0_1603198132170_0.6135309906169086"},"_hasShrinkwrap":false},"2.23.2-next-1603199962-10e74efa.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603199962-10e74efa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603199962-10e74efa.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603199962-10e74efa.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UQAaFwdylR3ZPJbkAqjGjUhbFD63ZvYYZU2UBOiJOJlDrcp6aRyDvEohsy3HkvPd1AgVPI0epLjGclQG8dRRFg==","shasum":"8153c83b41f88c141466d1e33ec6be3d06e6a33d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603199962-10e74efa.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjuRmCRA9TVsSAnZWagAAqp4P/2cXtaXL88KGE/V4pc+H\noE5e3zH4424v/7ZxlJDbqzKeD0/Yo50hXGuXuSwfhKPdpEvQ7yq7Lbsv85yb\n6Q9DYnq1VweFJbwl7q7apoH6FykgUYQ1YGG1SrDAp0TiRWu67ly8z2uTznrt\n9snqlymOUOCoinulNZBf+yXtFvi1nvfC9/V/PPGUC5GpGmgwVND/eDuYWjei\nBulRhx7+dfdSQ8W/Ef9gp+U9SERSotGzaH/BYGV55wC/C0FHBETMAIKZUVto\n8ZOub4ynKe/rEam/1gtvkQapK20Sq+cujZkBt4b1tELvWd0Ke/VROBP9zvW7\nR4E1nQuis/n+2q87TW7u7B4PY6t5zMo/8weMTC6dszRKGA2n9HiMGZ0ztXmF\nzoRYPMHdFUNq6lKzZPyCDOBqcMn6zr9o3IVNmdosdMXz82A9dj3dD2hemH8N\nmdsAuV5+xQLtIev2bqQ4nP52QToQZyGJm81nkwwL1fil8RHQA4MxMCmi2MYi\nXZzZvGpVTlAZyRas5mTJV2gtIKGBzaZiqzBM3i8fINa/aMN2KhfM7ZpdYTLs\nKasW3T2Ahx0UF8Ku/dN+OCdas8YXCbcQ5znhP8OOKRUb3OLZ+UKeltKhb2eA\n1RwPBdaBI1grFW/hvjN5g0fZSN3lRRN6wbl2tuEBcJTRLPhoPJKVZc+lHCJF\nYgUN\r\n=IixM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHyx0ihaZEnhQcELK5Axc07crA3XjdKvmb6us0YmXpt+AiBd7+jChrW4agyog/yzWINA4OXS+Ou9Dt9ZMwgJv5I08A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603199962-10e74efa.0_1603200102194_0.613240661733615"},"_hasShrinkwrap":false},"2.23.2-next-1603200262-60825cca.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603200262-60825cca.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603200262-60825cca.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603200262-60825cca.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-g9nFo1i9yACz1SycdVp3p93QLT9BaJwKe2/YGw8YdHmspMpI/nNjJhVMeO8bONWOjh6goMc3YN34QC6dIOZ/wg==","shasum":"ed206e05b112d39833fb59098c1d595019f84180","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603200262-60825cca.0.tgz","fileCount":58,"unpackedSize":132262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjuWZCRA9TVsSAnZWagAAAA0P/RY7SE3yPDwk1dEAbgyi\nyc7GZ1Vc94bayUTQgIQp+AfDK0edsAAN54c2X6kfn0C1Ik5k+rzdB6Tkf0xP\n3IwyfJlOylsFycBbERCdkENFU9lv/NIt6VUB4PyDowIYxVJfkOCfYGHXAO4w\npOcNnCDDkk4Nem7Ml0JmxdPIpLJfuYdadoVEXR6zoGqP0u1nxKwD3JXGyrr8\nUvSVxoMOjF4uhxfnZwJEUbpDDLkQDV4MGRRKF3MFQafiJoDxMiyWMzXk/IBC\nCiPYwOlME6zQwFynYB3ay9tbrZ4cbka0G3253FfKs4ZJgq6Djq9F+IKjOjgO\nCmZxFFoEGMKcqArm2DGBFmrV3Zzd4tatd9BFH+8MYzLMdb8iMkL6Nnvmznvi\n19GZVhDs88C8L7ZSu7C2TPMEtB8m5G2pS2Y8dMmPs24dRHDFyBhowWaCmQBW\npgnLISMpJI///66upTDZbXK44BS93UbHGpoHxxA9PBnDdbIRSuK7B7pN3R78\nBS7ucpSj5/72xamMWWS26AfAX+208+Q7iw8m9da3EyRdva5FBUITWejVMv5o\nEM13w2SguclFRdzsILkrBhO/lpPe65xygir0/LjleljhvcY2+iyf5dQeu1E9\nsujrs6TtduZopGCTljNTHRsp2IzEGUe6ZhnIEbZ9WiPod+4hYAg+eGhJsDf7\noJed\r\n=BeeY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUfzp6sbltBUQwJ2XGj0Zvz9ArirO9wbz0r4hp4NmH9QIgOIRXqkKiBIumU3lPy/FmNV/Utko5awKeq5MnxOUMdqg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603200262-60825cca.0_1603200408198_0.07956774750811602"},"_hasShrinkwrap":false},"2.23.2-next-1603200684-e7488148.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603200684-e7488148.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603200684-e7488148.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603200684-e7488148.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AmkGrIeHAVFVhHp4PnCEJ8rOd4hlPc+k+S/MGWiYIy7Ved2JlSeC/vuYhDkNkZydtmYgsC7dn2BLQs41wGBhxg==","shasum":"8cd117df7d8818347ee9b8ad6492deea03f11fcb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603200684-e7488148.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjuc0CRA9TVsSAnZWagAA8LwP/jhHWy8pr2sr7vAx924U\nyfgaF74JLzl7olICFDkpF6BaOdBCy/gIdKQKrG4sISgad2GyysHTorFzo2rk\nTrYa3cU9r6Fpz7TpXF8sSqnxQiF3/2O2IHoCKw4QEhWikJIAL95RWVIHtSe6\n656MjB00uAJ7VQot3bBm18Mlhi2lkNIMhkHX3BYjpvATmAuUF71iw1oUZ54E\nR36vCJiGwdh8EGR6E8TeQ6HiU6V6Q8bwc3/l/p8I10DKHyIu3MoshlnGI5c5\nqCCI3YhnQYPTbC+hBQZblvj9e3iUc+96dRilc+EhQePNCaqXm+FzriURYTgo\ngTtQpMaFVGFRlFv3zxV3NzYxf/GBxal8gMb7D5ppbs1jha2NbT/MONuOBjei\ngEhyquAhdXx3mwklX3q1zWsA+HGcz4TKZJFUp/A4iyFdrna9DA+vF7lHn9p2\nB3yU3uWOaUP2MEzUmXyZWMJpYAryAXT1i1ytCXwGu7npla8Yh/034p9Frdmi\n70/x+9+6o1yxblnjrojXL+sn9QfA1twRb0/KPTiZefkmZZwpDSOudFRcbjAg\n/dyMA3KiWhKsg3u6pe+8GlYqBhZesP9hMyWYO+fiLkpGspKBhE1iljCzY1h0\nVD4bvdAN+a4Yt+EwNKL1msSc7yDq7vVaB4SQzkJi3bzCcAZ/W7KJ5KZstURn\nzb9W\r\n=ZFrj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHJHLnFF/cvb1mx0pYmbsSJi1pJYRbheF2GKTcqXyiyLAiBMdnZNltWJkX4npkMDTJ3J9BJL7p5Ba1cDfn+jLB1pPQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603200684-e7488148.0_1603200819610_0.28314280052315777"},"_hasShrinkwrap":false},"2.23.2-next-1603201378-ccb9f60f.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603201378-ccb9f60f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603201378-ccb9f60f.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603201378-ccb9f60f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9bLDP2BxW8waokyRgSsH+uF4C18oG0N3dTgY+hsInALZs8eVjpSVY3b/Cy0u+nug+1A2vsVeJPIpQr6D/8rNNQ==","shasum":"734e0856e55b69b0bdabd7b87876b0860a15ed8f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603201378-ccb9f60f.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjunsCRA9TVsSAnZWagAAC0kP/23p+jmB2RxUYo5s2nto\ngRIZTMdk+6XjMBqh6wDLRCLwFvO4HxgIpVdo+VABix7Ir6xGO64jaiClo0q3\neplX/MMIBDpLJKUghaMk3QK+dkdNog5AML7nccmIHidlCl/+ODimqP962cnG\nU/JTeZds5mk84AYzaGodof+ASaXH7YN1dqCsQgnsPlp3LHwELkU6fmOjXyLt\nhIhKzYzkBeGEU3XKgauQswxYKLrigBxWJGz2YY4Aw6Cgk7lVbnpprFLLuCxI\ne5O2tL8cSJ7959QfC2MO8qNAflVrkTb1EYTSCHyJG3UvnuJJ2xMTJXr5iXCL\n2BQxM9+3+4v9ea7ZmsB8UONtU1rlzWdoBgV+kjkgc5ZH/vdZy6x6y9XNj28l\ndEPEQkMT8NfJBTVMBXaOPiP7GXuYg9GBy+tGraEgu8n5LGdSSctPl0hZda1I\npv01pYW87vFfUzObk+u7zqcRb8m2CzdJHYSST71C6HBG/mT8yqOPARRyX0fe\nu5R0mYPnkbKqi8NkqE8Ai/xoqAOHzbUsh0ZLq/LZi10epwxpWblOzHJ4/1v7\ngxYtBwbNQ72zNSuudCimxMbN1eGQHLUHtVFBcLemeR8ApnnfY5wtxMytDP94\n3b/7pFVIsyVz/MWV7K9I6tcOwUTpnc39d1byMqpCzj+J9r0uyhlHe6C70MEb\niFss\r\n=dlEV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyQrtrJR+Q1/phDo9k5Mcy7uwQ0yBJFpy2zy8+X9Q70wIhANnCIpvbAOqM6IzImgCFew3SLkOZij6j/yh35OJzBr3/"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603201378-ccb9f60f.0_1603201515499_0.5271840150050477"},"_hasShrinkwrap":false},"2.23.2-next-1603201718-321145ca.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603201718-321145ca.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603201718-321145ca.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603201718-321145ca.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YZKaZkj3kkOg2GbvGI5sNJKHbg2M+u179jfD2UCPZNR9GV8RDekfd0rV6VBikYp5EjNug0E19rmAj4aoON8l4g==","shasum":"59883f2770bea718b0ed8132665bf82f62a477bd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603201718-321145ca.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjus7CRA9TVsSAnZWagAAr9EQAIloSn+IFO0hbefnk95U\nGeyLcNZZ3EcK96RHHOULSwJRhra7nGTWwULkfK3AY4YWrpGECmsFbxgJhuN0\nICHENaIcWTh07rPBGbyuOGFE7mfxdLXcZ+77frn6Bk+a9/avd1tL6mgitOLI\nGw3ziZPJGPQ3bRUJ0TzBdndW/xjSAyNv0mlLfjaxh2VJ6vo6mjESUkghOYXB\nz4PJGJWaKLM2XeUK1LysS6HGB7kge3MfMQ5F8iGM1XqDDLBwmfbFIYiR5/qS\no4JeTy+g6N1oupnr1l4qvBT+camc3bkPsiysHe/9bZ8RZy0+tow4MtkS3CbJ\nqJwtCSg3hlVLfOQlwL48D3OHVWrBE+9h50VC3zE1uv1LRjHFj7F/e9Tcv0Lc\nHYGe6KNEkIQO435FgwbR2xPdzRQhP8DNjTlyEH1YUZgFhZAON3HWZ/YlaAhR\nHGUxhzUJ8iBd2DEtdmkKRfg+iw3pkCa35ubWBd3F20OrIjthppMi15LQD2/e\nfCqOEvXF8olsST3vn3WZvvNngitDGvgxFydKy5uJJKJ2BNv7qdtsTuoiTXTZ\nrqfzQIekqHsVZeUmroHyn/uOC3jl4p5BINjgS8T/Z4lcZiozA09XsAvkDLtg\nq2xKBRFtTpwzVp7Yx8+kkPyX5Butl5ERtVbA7/p/bh19ld4CtNt/MzwuJeBK\n7bRf\r\n=ySWQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4xoycn/O2u/RY1Etryq2fYUXE3V8zDNjI7eK0tMR8uwIgXxNAaC/Y7XXh2+CZSQwEGH/np/UmZV16Gm3P3DtGR8E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603201718-321145ca.0_1603201851329_0.3503032648014013"},"_hasShrinkwrap":false},"2.23.2-next-1603203972-88a6b0d4.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603203972-88a6b0d4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603203972-88a6b0d4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603203972-88a6b0d4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-V7duI+AzZ7blPs61oRl9s0N2i5GcWHGJKSKWoO5w/uKjgkENmjAJpcPAR+tpl2DMh8AHZV7FLca5t8WhL/2SRg==","shasum":"7a8303407218c98f94d403b7ba1f3c698163a7a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603203972-88a6b0d4.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjvQbCRA9TVsSAnZWagAA7D0P/RCj+Ke7dmSJStIGiaJG\nm4hKtJ51uAIFJhwN382rNy3GrBHol6YldQK4kyfOsxzTwL/yqiKURPi4H4xd\ngj5yBxDyN8PPJLNhR55EBcnr64ANqljgn2yKakkXKCMz9uXiAhLK2ps1htxe\nZE6uZ+fHWZqhRvF++99obcBtnri7M46R8Rq3o7UCElw80yhduA2c94zEZj6d\n5dUnw0NwtuKMvPGcjM1mQ4d+u2M6u4cWivIJG3NQltVGTt334U66fRYXNnhw\nDL1G43BSEaeZj71/QtmGnvR0mH266bEfprlFFr5//1BQ1JQq6zTlDL3tD4tI\n5Xh6FC+sWFKEFDnHsqy5ffmx/+GB9dTE6ql36xBqLSfs/QtwL4zvDIZGsBl5\n0iNwQi3UqVx4Z92CNXZbd8L/P7u7o+rvdBoVUm9VpiMxBwFF2XoUCTwK41OJ\nJGwH8rvLERFz2xWvSUUGlOXtE+01bOIunGMpMyGnZD2iY660sjbs3y+i7iio\n33tUEzi6XSpDOgkKEBF3F20irhlm23yLIOlxf61M4mByR1UKDxNsDRoc7gZP\n1TzfXg3aUaUsHiZD+6BItjmIacKCSmHZ5H3qfhgU4etCrupc+LiFgBxMqLOf\ny61TUShH+nB1VVAu5RZ0cTibbuDj3sA/e97zOjrr1GZ1CSXZKmYkHFq0RqA7\niXm6\r\n=yjrE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICPHBxikY0ntiFS0BJn6uehk7JTNGGl6B0/EIVjs65v0AiEA2MQ1sc90pFtWzeGKI41t+6g+N4b0sDcLtGSPkBsWbhs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603203972-88a6b0d4.0_1603204122737_0.04629358982474541"},"_hasShrinkwrap":false},"2.23.2-next-1603205767-d3fe6488.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603205767-d3fe6488.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603205767-d3fe6488.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603205767-d3fe6488.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-F8genM6/5GlZxZf1PA9vSnKMAWNG/56if5rY/5bGbj7eaBsdIH1ZLdwJEVZA4J3UJCNJxyTp3gVWou4jgZd6Mw==","shasum":"5dcfe54a2711e18cd4261511f04ad129e9d8c8f9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603205767-d3fe6488.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjvsWCRA9TVsSAnZWagAA5Y8P+wc1RtoKM+RtHfr3rS1Y\nIxc4fi+dJHCsPJY9Yt3AoKQNaphtUnZwnARuwq7qc6BLsPErCcebGobiSbUb\nUM4qBL2ZWpt1RcG/B6sJ7R0fX/Sgxhahl/xVvKlZG1HhvQLJ77IX1sYky18C\nr2YnRACFIFMm705P2wv9TfMBhoHH22Kb5FIog1KgY2+E20bu5NYS32xNBkch\n2tR9bOQljtzsCZXIkkaSjGD6/0ga+Vn/NMuG54TEGyqr0RMqCTzIOwvi0csn\n6SK1YwiY73dRjlSVOqyIFRBnupqoykqWsggDNnbwtS/yl1dKogI8kCn7q9TU\neINwy2KBRM278yrRszn8wUytpK+FF02JiG4QeL0Bwe9/nsdE44n9WWfP0GDq\n+CxjvaA7yHmBvo85jHxJaE2VrAUjyDamNv33RqSDoNopH3HfBG2MX08Ozm63\nwYqx3kZcQCJ1mPcifC43O9DNQg2ZIbN+VUEdmuIoiijkPQuEEhEXUSBeCAqQ\nqaULTDGdtraCV5b9J4ZRTOsc2trgXGqW6jG5ivGo6LtYzKMYynq3QrlEyDya\n6+UCWA/x9BGt/jnTDfrGFZVMkGuEj55E21fERcESI3EBBMbb4ejrABMSoMYY\n1aUjNQokF71kanvUWT29w3LGCMXYvUPms2jFTl53ZZWg17+whFfzIWNRlwz6\n0xDM\r\n=/UyG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9GcvxmXyK/yhh/BtlDFinsXpG9XSgZhqJClzjK1mWAAIhAJZVORdxFzZOYIdvd0dqp1+Kn8BVX6zlc+Mg5pPn90nA"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603205767-d3fe6488.0_1603205910331_0.792209165817606"},"_hasShrinkwrap":false},"2.23.2-next-1603207426-86a1fb65.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603207426-86a1fb65.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603207426-86a1fb65.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603207426-86a1fb65.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fAN+8pBAZebCBBM8Lu74iGYt4Dc+ysS0h6u+AHwMpxmCoq0kYYuoesxfOxGUMQWxXUqFZjFmldeY03Yi7YjnDg==","shasum":"1b90a03491242ec8f95c3b963c8858c68fc5b3ef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603207426-86a1fb65.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjwF+CRA9TVsSAnZWagAA7XYP/1AR5O+zgoZXNY1Z0jDi\nTt4yM3Dub4lNWaxvNJ0Fc+pz04W15fbfhY9vdjQkLkh5gffeUyhTUZrwVFs5\nWNZcqn6kJrPFx5SYp6rymdrpXQ6n9bA2AevpMEflqL2Av3rwH4VcpvFfN4+W\neKLxykhfqru94oL4Y1PGcv3csUF+wYZCOu6E3OtgsYN8oWtHJEMH+emlMOHG\nvvWonz6JekzJEvjBREWkR1nqd7lRSAk+uREWSCIv7u/cfJ3dD6Dhm2La9yz/\n/bXXc0tNi86U+cf/seZz407TsgpwmlDxL5OUhJkH9EuMug8esckdt7mmnc0Z\nhloDu2HCduExQQ6cFjkuu+9e5T/V/ZlFC6Mr2MRkqrM1s4VLvJeCqjukFHwF\nKqkLRMkvfi7IWcVqLHW0X3R/SmQ8f+2fY+624gyrC3QLxnm32wCPN8vjgWmt\nECWHG/M7eT74aWSCiawChiws9fnYpt9c252r74la0WlidLmWdAmCH6DCUlos\npz+lRpOVg1HDdeQjxLlPlCK8x1plOaeIRLg7uthg3pnXknQ5rAP+dloGV9JX\nFaSw8nihrzqmX1bjxlGFNghy3TBpiVXwB5ukmMaSCPAVmBcSCh/xn66hilJx\nAcQBh5BClAeRUQi9thqkLazr7kx16AJxlKgKnOio0Q5Xe0QoaKpZIR/TnL5Y\nPYRr\r\n=SepL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIElBNcqsTpe1MfGorU6PhuMtoLQkCRaZQ4rtdVlQbZgbAiEArv+fi+Q5x6U473Q/qMLr7z2ydk+ymh91FSQvEKHvyvg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603207426-86a1fb65.0_1603207550130_0.331052523926352"},"_hasShrinkwrap":false},"2.23.2-next-1603214775-cf159f37.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603214775-cf159f37.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603214775-cf159f37.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603214775-cf159f37.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Cb/jDhDqcR2eCfCFMaKj9ceB6DL/3C41Fcaiw8QEWZc89ODB1+H7qUJL1RiQ02FvVKAwHMs29YBHMRodLoGMOw==","shasum":"fb178d08e3301c86cac18aea05a5a20e52a437a3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603214775-cf159f37.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjx5ACRA9TVsSAnZWagAA1IkQAIq764esVAC2ZOHh97JN\nb0F0TjQv79Hlx2pRH8oW5Wb3dhAgvo7JhX1ZyKpplznvRt3mNuypFNGJt5kS\noygm3VFwbsYNPlMyegNqpfEonflH4aHivXx4UFC6r5+6TFlZfgd6BZdj+kMC\n3XiNM7tJRrL6J+DVPg4Qm1i9PH/3y5OGWtfL93k4hRElKiTL+fmmp77R03wa\nlfOscRyLOsFXs1jPMPZgTidoI44J+e7bSz+m8K2lzmZxwLyFjJLXDvj5oruu\nf/4IyU6BgyiX+t+QCpCH+KMxAh7mpqq8OneYGTcUP4NomCxiaX2F2leLZTeP\nW6DiAXaIMnSOAUpmbSpDrEMRKJ5SzsThxnMgXhFlFIqIObQkZ4cS6rEDUEnW\njzqYoP0459Z39Q9M2vjy1UcG8C0q0ZLIl2kxmQTG0LGdy0weTzghEXNdU6xj\nxUvTlsniW1Qz3g3zx7P851nXFVEYJy91VGFVk66NwWEp85cLFFRng8vX5QDr\nmlPPlALMzGPGjsRADrvXvOAQzYdOVRBrOI3j/cdSIZvTNKgGVOZuPyJdFSqD\n6cgBwiZakoYVbzPmOnliufllKpOnVMwXkmaVU6KBVZX5wkun+ZoQQbNosIMK\nzcUhyD1LFRWZsBUPFc/jmb44JcBgIXYNNpncdirZDdlLoDIt8kVp8hwrkomE\nbw0X\r\n=1M7j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICkMys5W24Ag3zm3k+kQK64g08cBUvSJMdm5iC9mq1B+AiAUrhMR1WuITaK8HLAiQtuVph56QSfgA4nBG2/We0ZQdw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603214775-cf159f37.0_1603214911560_0.013586431833308321"},"_hasShrinkwrap":false},"2.23.2-next-1603217761-3fb27c98.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603217761-3fb27c98.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603217761-3fb27c98.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603217761-3fb27c98.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Zoey3aTTpHAPfFy33ScYtbKWBrb/CIy2ABGZRvKG1l4BN8ItZH68NmIYvAtkXeEf/vn/rk/KioSjCjKrlXDPTw==","shasum":"121ce4183da6da2ff961e7563df72f69fc5baa19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603217761-3fb27c98.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjyn2CRA9TVsSAnZWagAAfc8P/Rh2HtwlwhoGNVM3tRhj\nHFDTgF/FLX2gAC2jq6m9YtrjY1pnNuYHmOUs0yzvNLS+uZaPNkxhbgEsuawS\n39XLNcOchiXtrYS9bj1Ovyl23qNvuQ/N/2FgZsSjtIPhSMspKw4Cx6drtDb6\n8ul1qglH+UES9PnChSoCWxvZ3s4v8CdYj5B2WVEq3qKt/OR4GChrFZC4L0ld\nK9ZH9hc00sa+wrl5x9CM7evEnm3YK/GsISS1+JAFj2CA69PItWpGOsmjkZ1I\nCBhL8HKfFHYsiZNkdVSYL53fbySjSlBjSDOTtxyrPQUs7XEAdb6f4DaA65xf\n92StdgAg4nxo2AT2vRnH9AZoxqXlR6rpgVBA6ko0lPRkACyTg+wV7LQXfzY5\nO+b+VFzkptl6htXgpPRPTtuazy8uOyTkc+zLvdRObXTixl/a4RqH2TFCMLr6\nrxMtKNp27sp/Mnj908O/Jq8HTknu2bu3L5kq4uFd5UDKrKF3n4JqF6Cu14mc\nV/1Yfsup3S64s6HJHQP7RnfaGj2ICKVD9BoS5Hzk6Qh4c/Flgbu8mcc/oXme\nmfUKJ48aMoPnvQTMKHEg8lT12iKnlHYgR48kZvWZUsFvToAeiAMOog8NGi10\nYWOaBvkF5WMxpLhsT0SMrVlJxGHv3B8Q9T7PnRW61CaOO4G/jOIunLEiAFWe\nxEuW\r\n=f8qk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1jioD1+HZwg9YW0F5B8L+gBthHXPlF3opI9Q4SnbMGwIhAPWsgBYl991uYVY76Aku4EbjVfg4LDWcKlgE4SSyCcKc"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603217761-3fb27c98.0_1603217909598_0.13132907750749223"},"_hasShrinkwrap":false},"2.23.2-next-1603218947-d06b7486.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603218947-d06b7486.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603218947-d06b7486.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603218947-d06b7486.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-h7v9YCCcRx1VgVZhf+XZtMisjk8NA40f+7k3MymY7g/9pz61j2ZIBBjcJF6o72epGZ758NdFQW4SHIA2hrS74A==","shasum":"afba35a063a5cb6b6554bb3129647a8140212651","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603218947-d06b7486.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjy6LCRA9TVsSAnZWagAA8jwP/RryBL0AVkNh5P45i8sL\nnNVI72uewacjUEFxT5o1L2whk103eg7b7v5nC7IP2x0yhtK6dLVARO7+873c\nrwuX3i2VaEJxJaKB6TXJTpUNVxmptzalKVuIbDKjOsZldP9kFbMFxhA8EIg/\n2Ped4h1gW/OKuAEhqVk7YvQUYLIfs79IyqMEhQQXLU8ODbJMvq65dogKqn2S\nWmX0bXf3xQP2xAhV/KVgAlm81ofT2A1+Qfky9spwRar2vnCl0NnoXUZMN963\nv+3810vxdvhJcZ133zxRmsZJ/MxyrYC7utdbMPsCX2U4MNlYivl51dlAWzMd\nCzEsz7l+9Ye1ZDia/kROImHfJ0lgRHeFW2e1DheJoVY54CjNCei8uBiZo6UD\nxFduntzW5cxAiCq4tMDn5UBxBq8mlxhaz72fQlVa3MOz2dc2DcYb9teXusUq\n4rleqo+efTXEgTaYNKlsV5I8oUrC8ux22Roi2SR4E8DWDeLmZoKriJa9Zq2B\n0NPEbAnJC/2kS/B9RTk64TP0bsZUaQ+iE/2caMrVXewds1GSKSGg0evRG2EB\n7S8w/mR38HfyJ620hRY9pgIh1TZxha66wekEDL4dHBCCzcpxm4VC0J0U6l3Y\nTrT6/QMe82ufziF3HQpWwsBe3vHHmKlMp5hp/EXgQ56QQU0BYrTJDieW0dAX\nOe3C\r\n=Wfzg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChgRK9Fi614owGMeFYk6Itd0kh5StoJDgTU60apON5TgIgM4C0fjuOVE5cpMPE+ejQwF+gubYFRPBWiZ0yoY7y+WM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603218947-d06b7486.0_1603219082883_0.25256362748972827"},"_hasShrinkwrap":false},"2.23.2-next-1603219176-a1d77680.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603219176-a1d77680.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603219176-a1d77680.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603219176-a1d77680.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cm0cxd+C+Sgkjdr5c/4TKGZuxZtSWC2GTs49JS771rAcPekPeJhLn/yVcIKrL8sGSlgnsFM+wSxgBiS86QbXDg==","shasum":"733057e98b239de58bb7fa91d86e06cb93981fcd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603219176-a1d77680.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjy9yCRA9TVsSAnZWagAAZgIP/3iYWsfiqNgaho0Iz8Iw\nFspWdieaGn4Dx6O4f2jocJs6jw/vMa7fZsoB67pIdXbv1ImKrL4PNZ8PXacL\nb49wQSmccVIY03QDq6hA53OGGSN92rqJwvfuN5OS3pmKNgHg2Y586+wBpYtn\nHadHfkZovSDjXcIYxLQe/QEaO/JEAdFh2av99gk7Tj1GEmzSZaTMO0qujPN+\nCkc6bDJ4D/kYwz9r0ZF9QOrLltKBntKN6+94/Qklf3IrUQdOFT+3nJ+raCg3\nYeaOoLc9GNEiPiFO7snvpTwb7NqCrbENbf10lA06Ihyxhs0PbXC1S8iPZAk6\nVFEEmrJOaHncFeGiIQ9tL18/aQAyRXWmP1uYdC5fivnJmWeYmtmPs9J7McHV\n2rRpkZZilZZ1tyr5tJ6SRrge9PSiLPwv9PFziEWcDzwQIGgmlupj+rEdqqDn\na2Focm1zLVtIfBNt3euijUR5uMQIwnhTkvoy0cRvo9+cXUUrELkg0v4kZYU+\nyaplSZ8jjWzf0gCTj5ZJkZgYId0dgnaVFqvhabQXYWE9cgqwS4swoVe0eTkV\nDp8CgEXXopaKk344mha1iwUCUdWYtwYOs5wPewBS+HFuTBby2nNsQg936v+i\nFi4hVbvDSws20VSuFNIQK8UUVmj+iOd2fR5yQ9liUypFox2yfz46h9TDJ+lt\nJYwf\r\n=7iYR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCx57xiazL7xMFglBDpkL9tnDdo2eynH8KmZu2FYisFEQIhAKDhlsTO/0HmyjS4kqbDPsTLNGTE/EL2uF6zIza5s/yU"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603219176-a1d77680.0_1603219314207_0.1539741799504475"},"_hasShrinkwrap":false},"2.23.2-next-1603220841-5594b74e.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603220841-5594b74e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603220841-5594b74e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603220841-5594b74e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M0bSinXb7Km5ZRrp+WaQNier9h5MnYfKFBqWSR+Z/8j7+2Fy15++F7qTsHxm31DBEAn33w+vKr5n0MRXMh9LMw==","shasum":"2560d0beb6d946ed8ddc524780be0f0d7a384114","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603220841-5594b74e.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjzX/CRA9TVsSAnZWagAAwIYP/jc+h0b0v2hWCRxWPq4e\nSPQqTqam/4vBly0SGMbVoFUqXthohWURLyUT2hjAnBhOD7WoPwMs4jkya+q/\nSxnTwZEujpRyUrA5QY8WxYD5hXatUh4pM9vtwcfXqA1htVEOWlapcNvG++oY\nZvmk5qe8/iOyupCZveJmxIw7wDkQSF3f1IQ3r9r0JrZWk7IvIZ1H4gflTNaU\n7+XqdeMe1VgT8MArL0REYYiXU18r+ONX+7LBtDLD77pcD54HcelcaEuza55N\nGMQJzLBXtPyayzNlIVBeK8NJEBNraYvlgPI66Y/5WAwVmToP1ZKwXxcPKn8r\nCmbxfYgVAcGetlohRWaQHgSeegta8XAXnZrbG2KJiQL2Juf1/51NjCLux/8R\nGly1R+TqxX3i+tZZhD1o1HKlsdhf9JZLI66pybRPv15b5lX3f4EAwGGjli/y\n/bUdxvKXLHlU72ZOSfRRmxwlzjJaIuxVznEUeLrBPr4ovaHpyDdMER3EFCVc\nufM+Lz2cF4hT1h0XeCP0/tPodOyQOS4gtZ1gjNmLr28XSL711iTimnLm7tz/\nAiMYdu3JyFhMRJGT5ugJa6Fs2HnV4ehHs3KCkaKbHKkRYXmuIzPilOnDOf0K\njJkrBJNyQouFfwhD5VI7xzPvCvKZRkjh852sttuH72nclhdIeGqzUVcECueG\nXvJi\r\n=Ip0t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuGAn7aAL0GTOIjOlMhHLVt47q9ZfylrxnCrz7u4Wb/AIhAL83bqayqLoUanl7N7tPHLy+o0OM1w0BcCdbcIBwRNXr"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603220841-5594b74e.0_1603220990696_0.014536534398149614"},"_hasShrinkwrap":false},"2.23.2-next-1603222060-64be487c.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603222060-64be487c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603222060-64be487c.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603222060-64be487c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-foHJq6QWI802nGvUIWId9Rxu456G1m6cjFPYsx0QcYrJKJMWd4FqOS7ZwWKNw0DVPez1laZUwF0LBCvqfW8bXg==","shasum":"bd23caed863920c9d7c74c0add3e86d3865b390e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603222060-64be487c.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjzq3CRA9TVsSAnZWagAAtfkP/3F0ovfK9mZ56xQ5APjm\n6cZwVb04CoYHfWlbWPObsPSVAX0l6OgL8CWxOw0/IJT303DJZQUcbicr1JZm\nNNFJxT1G096PLWvqf/1mVFO48Nttd4q4Mo3vA9qqqhNyOtUTtkR8rWhU+Wc8\nxRDvaASE+zoNwuKNGZtZYlOARBwRAE/QAOmLYevacxzEtosf6BpiFs0GGliI\nWEhsGtyZtN7TcrM1t9nNLO2gN8gxWVy63PsestIheplNS88Vp/OSrdqaxmq3\naVC7J2CpJM1WmpqAxLiKHmPkc1jZj4hFeENUgw6HHRR8KzYfiQ1nxKQYKXfH\nnol6pIiBPoKKkx517aEE4UxJj2zAY3cXhS/iwy0ugo8+10MiEWjW7dSC1JZn\nlGh9p/75WeXdZWDGDfHWg+s11H0sXvX7+HzrCzzwF53/7ZrvhxhI3wxfZmPw\n0IvBmcDyy6U+NiALQmyC58uocqfHufkxf53u5DeI6I81hdhx6/BvjTUN/kKz\nSPBG8V0JqZUGQPBHODjqyxS7dlArdWGRlpj7eRoz9xm1mjixcYrkmn8+Q+4r\nF1WsZlU+uDIT2/RiTnOUBSM7AELHR7kNHj2hk42aWTtk2gsW2UGo+E/NgSGN\n/oSqFNl9STEQH/ZEKNLSV3Od/zU7HZKkxfete6ezugfNOP3OJGgzLGuwT5O6\np2DZ\r\n=icoG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE86kzVYbyBTiABnS+Sj+kwJCiPjP+ABhHTwTavS0X0CAiBsiOF3hCJx14f8q0/97ncZ/u+ES1ZNdsNn+VWIcQfmCg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603222060-64be487c.0_1603222199294_0.8667159073957"},"_hasShrinkwrap":false},"2.22.1-next-1603223784-e4a14208.0":{"name":"@xdn/prefetch","version":"2.22.1-next-1603223784-e4a14208.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.22.1-next-1603223784-e4a14208.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.22.1-next-1603223784-e4a14208.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4NOVkTPk5bRyRQSrBHur9im6UyRjoxiYZrBU8u5XBEAbWzKFpOWXuD8gX+6uMXllqauLVYjkAN6TF6/AptyXUw==","shasum":"0fd2edf0bae9d56ef30b5422507540299a7b2927","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.22.1-next-1603223784-e4a14208.0.tgz","fileCount":58,"unpackedSize":132262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj0FwCRA9TVsSAnZWagAAcEIP/iXrQt5joAMs1V+NJRZm\niVeXwWJqVgXYmRWLYSpsAd3OmAF+4dntxYtCpYaIJ3bh4a84QoaCOUSeYSSO\nk5tgrLfhFSnGm68VJ73i86gk1r/6g16KAdfU2b4MywXAFZZg2cCjqbS5XRBQ\naEnB24qcOByh75lkq2IAKsBQlUd4oUY+8yfjTtMSYxuje+IYGS4tfpjb6Y6H\nKHvXEKP14K4eNTaUt0kDZELzGf3koO/uxV2NKx5e05qN3YNlNsDmUwWw7PxD\n9wGvy0bhaCdV7XsOsCyA4VSmkoDIfqpDo7sa8eWlsbYOBkVz26uE/k1aVS3y\nauQl+GSpRJEZ7ZkMujeNlYQ5jsnaAMpYz4b7oB5MDg454w/GJBATh9shVI5x\nBDUiX77NnAjFmfiIWsasXAQQJqLmqsKRXyDTJov5Cv7k6e2p0l0aFsS9Njk3\nBpDon1gXUooPrwCkek8MYg6Wpxsnt3Eld6CDVaf0IB7ep19EdLnc6FffHUmI\nG9BbahFzr5dN2WOrNyfjwXrWM3aOeASYKfMO55A6RYnqgStY9krI/fSr5fAX\n7imAlLGIdR3Mtmf80HwSC3sT+sw1/jweWj+TE0+cG1GAko0OgElJnHnPJP/g\n4gw8Bw425GEFoP9w8MxYHCjbPTnJi3hIKoltfBoeVCHwz4oAD1TrKr8mFZky\n08GT\r\n=ulep\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID8nR6ykKV7Wwg8XjhhhXoIb6SJBP0GKAzZ0q0rdgcYwAiEAzdEcjdsMTjpaB0UFa1kOp2LNaGVkCX2LQI630WklkLs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.22.1-next-1603223784-e4a14208.0_1603223919725_0.1982940507415316"},"_hasShrinkwrap":false},"2.23.2-next-1603224008-d2b969b4.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603224008-d2b969b4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603224008-d2b969b4.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603224008-d2b969b4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PTSwluM75FlyL7sQgvYWVIskozP3IirUHALjj/q17zZZO0UpVE+J95p75L5ZN0xV5aPx9cNQKUJsx1BjAmcYkw==","shasum":"6c50a93fca61d0188e1ed79a009ffc5175677e74","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603224008-d2b969b4.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj0JXCRA9TVsSAnZWagAAGTAP/3GRdMiXPcDvEKcNb8S0\nlwPZkwVoNl5IPGpnkkzS6HJxPjqmhuzkuaHsV7CiPs7uxXMJyDCB6liPj39H\nBbz/7/javHYS07GFAp6MEQV9REDhfpJ9kY9//efUwKgr8V/Pvd7s+4NCvXpE\ndG8oVQZCWd7iRXQOa4rCT2KG55M9YhFt8OTuV0qMHC9EXeEmsUVBwpXHPJru\nXHUU7n8u9aUwtvcwkMwhghVvW+tQ8eNtb3LUA/0BVG9we3A6sUIYv8skA7mL\nkCfF0dKDJfA9qr3TneL55zeyEiCC3oe7H7yNpnRAdysV7nrbSxiza7ymDDU8\njMpZDlYuOKeTtwmUMpfKWq1yhg81v/WBR0z3fVz7xfK8DfTt16qXPAsvdaKi\nusxUnzGRQNh9K64IxwE/sUb6nO7xuTONA4ek3P6aALPGNW3cXl/cbzhdW25P\nPH82cAecx33QWkKS9eP/bJTiMF7XSAqRZrRmeb9I1NmaujAyYx2Px9rWGR1u\nuq5aEb8As/2WaXj4kHojA1/tLcJ++k7X9NNJ44YW8Hi7v41lffwKKoX/DWS2\nXLNFjhiFTVQJ9q45AeZQEhNs5dwa+OlV0h4AUNhF0zN5F0qxPjpMLcsaHbnf\n1RyJqBz0O1lkS7f4YM62DTEfaA7wed+05crcdvoUTUQZ/MLp5C/7nbxRD/xJ\nyDRM\r\n=0M7U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDRl55R3E1jfAlXYYn7JzlasWjLxdDi6iBS5F5xTX3+wIgNKykZQnvj9+Q5qS/f4tz12w3qSrPSdbL/onis1BWEwU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603224008-d2b969b4.0_1603224151178_0.08281851967769671"},"_hasShrinkwrap":false},"2.23.2-next-1603225734-4925af00.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603225734-4925af00.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603225734-4925af00.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603225734-4925af00.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fC8V+Nq4uqMzD3NkMjlUYrlhmxq9Zg3dN2ffsx2m9ENNfZLFo3cy3Hv8pbqaQbXp8XRYtBX5eZpi6NicJpzM+A==","shasum":"4bbec1c4985f9e959eb0292857414f29f59db0bb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603225734-4925af00.0.tgz","fileCount":58,"unpackedSize":132262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj0kJCRA9TVsSAnZWagAAaIoQAJQrw/z/txHOWMw5GE09\nJelFN8QePxGYr0jbR08uQ6Qe9MGQmPBe6J5ikHj/5MQs9FzNtnW309dQ/3SK\nTPEr8evYs9/itsxSLHi5JtermlCZzsFiFIYsRHEOX49/95adodiTbdTq7hju\nlvx9FnJH0aX31zQr24As1tEvOja3HtXfyglTB+a4EI+ImszGSQxSY6p+CM3t\nHvPxCXVaSNWp7ehKfn1KZNxAuviLOl/cdkcrsE6U/DRLMD+98VuuuexkKKbL\nds7dSjYsNlxI92/LgMiPTI4GvBxPc5vOym17dz+3cl80odpIxqGianvXenlj\nXrL0XFpSXN2w9rfVvHY2Bxy1gNZN1kfhJZZd6Dk2POHYuNGq3ogQVOiDRMj4\nAUf9Zv+pNFb+sFAjyLzipXDUcaCD/zkefynwH608/Jdr/N8WeB/YT6AkkXlA\ne+aKTGSR2Hyr4YYdXvXkE8OvbcljpoV4dRbCx1SA0KLkhJwvmVuD5AnX3Uiw\nF8Xi7CA7LegIQEiOm0Z0uPMpFxVT+fqU383n2b87rvfK6c+9fPXo4JwZoTya\nWkErf2uBNUby+wpqm+reWcnPBtuo4/fvUuPjjSYdWJkPCT0Cm67n2GMEJXAd\nNdga6IB5gIWPRAfiazbj42Tje9/7pVDyzkfaiKAcpZmlf5sOf2jZR2t55pgs\nLZK8\r\n=sej+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/uZ98Cgw71nql59Lk+1uRo5wAQMpMavqcdXQ7q37FagIgQLOoeVSQj9wlb5xSWvMgSUVHxgvaMt5VQiGBqtE90c0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603225734-4925af00.0_1603225865420_0.5667893533756796"},"_hasShrinkwrap":false},"2.23.2-next-1603225869-3a8b90e9.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603225869-3a8b90e9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603225869-3a8b90e9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603225869-3a8b90e9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vQlCl5wtEE8y09OS7nHi/gH6jBxAXd3eS0bqJZsNZ2M12sWjEc22IeBne/QExZKViaEhIwTbpeJXPNTzyN9Omw==","shasum":"b7c1f15834d405121e23935729d3ae266195c896","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603225869-3a8b90e9.0.tgz","fileCount":58,"unpackedSize":132262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj0mJCRA9TVsSAnZWagAAHXgP/AhKqs1iwuh2ZLbCSkzO\ntpZgXEASbuaysjrsfMA5y+GEYxk6frG2JhnSbhmXs9u3pMvLAXoezxbIShnI\n+Pp1PJUNkHGaAmeYnk1yS0g7AMHx5ZSmFVQDFGTTrlHefRLlUcc9PB/xOwYQ\nvEV3DtB7ibVVEdxxhtEGQCUazjqTjgCzD6jmAENf/ddeD56dokkoq/+KZ9RQ\nl/GyrrXieI3skpLAJ2PLhEqc/sdsOBGGbXqfSjuGImyk+CiHbH0ZvnFUJbV4\nArMuGEtQfe61hip7r+j65L0fNK+V4Jsrk/srzJVAxqbppypg67/dUW7ozdWU\nKDT7gXCCF1vhKtXiRHBTbofMBG9Py0rOppV1MC8z8wW769GUH4NRLHH7FYEf\n+tLfpPLrjHbNxuERhNSP2VZikjkf7HVxQYlKZvk6KinmLHTOnd+ScILepcSE\n0LW2iv8gLRAdRosfh4bsmaAkWZ1T04Ud0sbNQJJCbcsvfMKfY01Uc9Yogq09\njtuu9kSiYxJhE7vO5DENLd1KwdQ6xWEZJY0AAU3IeFEz/Os2ICBr1u7zNTCk\nWQs0dTf2bGEY5+8xS1hrIBH7cO5di2NS1GtobhSSLkm8bl6YC/6UfXWM19vH\nTgbvSwdkr8y/eJt5hvy6xMcoOu96RvnTMjR0U4GYUfvrQ2xF4++8JCx5FSod\ntXbf\r\n=rEbC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDFuJij4R2w2LKjMGYb3WIqr8c/CpQHw3JFU4RnPkzAQIhAMXxMJ/g0lmfZ+zF4UoEN9oMh5WRzz6z09LQ98dFpRGv"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603225869-3a8b90e9.0_1603225992900_0.083173713525311"},"_hasShrinkwrap":false},"2.23.2-next-1603226704-3a8b90e9.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603226704-3a8b90e9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603226704-3a8b90e9.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603226704-3a8b90e9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Kslf9xRLEREb2qEYp5sC7DJVjXbpgk27QRnSuJADyOEPiKIoxFoyestdA8cZkQali4JmBvlD8HK+gfLbgxCo0w==","shasum":"9d17e32ffddecc8fdd2abbf050640c927aabe870","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603226704-3a8b90e9.0.tgz","fileCount":58,"unpackedSize":132262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj0zRCRA9TVsSAnZWagAAdo4QAIYnjmM0zk4p52bYEf7H\nX+ypLUg8K4Xb5HUhyluX2p/I70GyLGiuyvgf2N9qZ0DJBu83t6lI5kBtjVKa\n+XYCsL8zUHS9N83KFNpaUdQGR6xscyTtaX6MQexHs9FOdI8MpOsBS1quHEKA\nPJG3sowioBE51ZKDYBT0AwcztBL0T+3/UJNcDPEcFddWjQFKCqr5NFsW/UQd\nsZLhs4NCNbhBapN/U1we/yVi7uV1AjDuU0NvF+CXQiFma+JVneUfbk6ppHXu\nl6rewmNvtuXvXWuAuy7dvalalqPPRsVKZU4YDyFqqm4CDVwdyHdr421umfOK\ntdmdqgLpcka7iiI/VTExLUnS3JKjHOhA6yEgWPQhUUdhQaq9UsZXclMHs6Sd\n2czFOx8PWLUlSgxv/gaS1dJnNTf+4544yMU4OLitZNcjssg3u8ll9M3tdfIi\nC/sFMBKBGCKue7KcEtJZmSlBj13d9n5ejlpv9qOCSXWV+FffQfndteF2kcsK\nL4O7JAb+bwv0iyx2am5kf76MqXahg6gTRG3VQwd0O/vsgbrrS7Uw1qiSzAIL\nuQCUaOW6ybkjUYJ6Hn4V76Nfn9QrJ6/SjgwCw2vz3UQmjzDW5QSKrhrMHyZF\nujt/2STylk93Kr+zv0SXkI+jlmzjSzn2hH23SEacbuxw3njHrCh5EcXMc0qg\nOW8R\r\n=ZLb+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFeriSuUzDZVe/Y1okK1QNTWk+BqVZeJWL0tmwjbZYegIhAJ/x9X3E5tPhNrw0Je4n5sr7+1Q/e3HDq+Guc5a0aAqj"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603226704-3a8b90e9.0_1603226833195_0.4027308720913787"},"_hasShrinkwrap":false},"2.23.2-next-1603226945-d13bd839.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603226945-d13bd839.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603226945-d13bd839.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603226945-d13bd839.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4ffgaR1Vl/hoEdbLl0SIzE6N+RuAIa2VtKKmkrXGwkOMT94r/woI0uoB80oY8P5Nxip2KZfXP6nbW8F6HteYXQ==","shasum":"bd45d97ddb62b5a6322ef6c70db53f74d1a28348","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603226945-d13bd839.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj03WCRA9TVsSAnZWagAAthAP/1tgCmpMgpxHkvXUf+Io\nMBFX9iy6FNDTrTelTm23r3OeRb5nNEVkHVAxBhIDygxK1iErJ3RP7sdIlezI\np5+Zk0BuIMjXk8mZ6M8TwpgXWAjh8eY+vOirwYU9Wc7RzZ3Gu/Qx3N5cMlpD\nZfmMIZ5FMe+y1g+tGB+b15eR33h+wm7IWbhRrTFnj4PY97fArApTmvBfTWwF\n19qRR9QNIq1ZK3KOs2C6Z01+5BDvBrdTQYjIQU07x2RqvRngwbW2W/jj0WTl\njhODj7C1CNIPMsjujQV8sKbGf12BayLs6oL2K7Adh3u7G17C5CmfFuGSnK4x\nfx5Mww/AP2LvIKrxVb5S76YqVZmQazylJUpUKxaRl2Y9iNRL8cHb2Yq0PlDJ\n8U7x2G2XOca951x0n+C1X5F5CZMx9i+9VGkDrcXIhjMRPQ6GVMRXH9fCOipI\nwwZ/qWW27raz2sfiJjQeZKj/Boi25qjshLFSZDHDs1HU3//Fppb8bAPrDRPH\npVuuIoeWB43J9/6y3Mcvwm7Lcm/1d01mH2lEQXUsQOUeE0Mlxrjjx7L//+I4\nitBgPV1JiLpYlrPikKtVzQr6W7l7cayk+mD7BqpObv5MqvPq7sWfaS7ZZbCl\ni56xWztw5hGlSJQGc23JnSlSt89jAIlW4OgxOwQ30MRxYIBRJ7DA1AeKVbFM\niyQJ\r\n=8RTO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5vcwB6dt43z+cLPUKaNwmngLPxZJGiGk2TPmAOJ46JAIhAJ1qoxmwjm7cbH2U7zhRwZXBAmAa8UrU7ZEP0dojBICJ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603226945-d13bd839.0_1603227093882_0.14021276617507894"},"_hasShrinkwrap":false},"2.23.2-next-1603229104-d13bd839.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603229104-d13bd839.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603229104-d13bd839.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603229104-d13bd839.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XVGxcBE8mfTAtwuHpnjQMUinhLr4Ub2GcKvVwFCP8FrCubyZmqZXfzD06r2n93smH6TXvxwV/aQAxbP6LozoyA==","shasum":"5f597839f34f10be2125c3784dc532990e07157c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603229104-d13bd839.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj1Y2CRA9TVsSAnZWagAAIVIP/2B4Yw2iPEW6omLUu7rR\nsNOYaUeQfmXlEzp9osUBQn3mOeZajyLIW5VeauNhm8sYpHqEFxeKJ390QHvh\nYknV3lRCOv5/vYeJkYT1gZ/qvmpLKGo+eceGx6W0UaILlSNbCrnIncZHzyiz\nJ/IunXe+xZT0N6AcT2hQbsgnNBItSgEzpUdVmPnIuU75IA9uf6Wr0GLB9iHp\ne57tJbuSxz8SezTX+fhotxtNvlqdgicU3QBnEMoTpvdL3mmAE1SThH8Kel1+\ncMzKSb3gmU4elXg54vPelCFykOOfcnj0D+RlPuTWqcsVxVAdcF1PGGyGhMgK\n4YmIz9EH9kVr3kZQfUmQbPO69T2XaZaMDcTxu6ogzhHkfc3rYA17JfDQYKpm\njhpss9Tg+7lVxU87y18Q+Cxu8ETJOcxAVJiLMQTSArLHGEfUnBdVQAs8tIhh\nr05Xd2aCY4C0rydiXIxnSE1Hn9NHlh6ndIC+Kv/IKlAlzaza2I8ksqAeKr+S\nqAGbXKH++Jwyvo2bAiQnIAsNbYOeUnYx/cHDnfahIvrqD2d+hIzN38sijqQK\nFjw95DiFn1RQbFBObKXp+QOIaOeLwhyiGdV4laKpmFDKSFQPPeOLapVeuRLU\nHQOU8a9UQosJbO/bI6m+X90+A5pKoakl2+52Zg4zas+Y98XrQnaz9u+z6i2v\ngR7p\r\n=OouW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFyk7LS/yNU/hmBOc+v4mPykS/BUD/o76ytzRjvU0kovAiAx+zTWkGWpA01KauzMgeNDjVoNj00CofT6fxYROBPJrg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603229104-d13bd839.0_1603229237669_0.13278212966973424"},"_hasShrinkwrap":false},"2.23.2-next-1603232708-0e1c1f51.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603232708-0e1c1f51.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603232708-0e1c1f51.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603232708-0e1c1f51.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fj8+V9XxSHLcUWZ5kg6F3Ss6vteBJ1lqfrnB1AAvUpS+jerM1gnGFj75f2l0BpaVB48MXLewYNFJ1RgRF8hVEg==","shasum":"28f9bca41995bb4fe394c5deb3076351fcf14107","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603232708-0e1c1f51.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj2RVCRA9TVsSAnZWagAAgf8P/2vcfNteXPbC+JPZduxG\nv8G1KdCkrX1tf5t60pMG4I6HGoCv3bIp29kFX1eItnP16monpwdeTYpNXWuY\naoVg8Sq4zOgjYu2b7B6hssB8C1zWgfsRT7yqmbnAzGqz6HJ0AhkocDveEeXu\nXGavWVSrnBDJFBLz4uInBLLX74rKMXdQitMcuYNYGvTbv0RDcEOqeM3B7m4T\nP50AyvLmqndMVApQ6eLIbybsn5A16I5maczH5KNXIjvPr6Dct1Sfhq1dpJVG\nUHgxDLROWzlFZI705pCjDKKtrJW4LH3SkPZZiyQqbW4AmF8G22n/3dbtZ8bA\npXQoxRvbgU8apkerMiJsK8BHsmRmhSNNRKliJTHi/oG16DtcKrWaz80kRIUa\nbCqO1iZKfk0U1i7dNwBcCtJwZE8OCG5c+jvqAbjQiXKUITGxyrssvhIBtyn6\nztKq5zQKtJVMmH+fz7gO8IXmp5P0w3FgrQLoK37zFX/WZkaVanr1YyPS3rLA\nZ0Hk57BJ0miiy77z5+d74NoNyRxp56LM1ff6xGidiJyHYkbxXYaGbTMa4W/Z\nOIdGwqAMb+ARijULYiqkAu4mKU7kOVzzfibDtKo1PODf9MMJ6HJCrtjdN4SR\nGL4FhjT4U9ZvTyxYBhaTLVWrTSqwXEVMfeii7OK+JUUaLvTI2SHcxg4TQQ5D\nzjTh\r\n=aMbg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6uPEceykLaiQAD58jF3UIfc6tX4ygPbzhG9huPT/Z9wIge9N39Jnn8UWrK0ARtWAHEcOHALj858HOdC4eEKrZKEk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603232708-0e1c1f51.0_1603232853461_0.8862103466273965"},"_hasShrinkwrap":false},"2.23.2-next-1603233694-e1b05968.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603233694-e1b05968.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603233694-e1b05968.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603233694-e1b05968.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DBuPuFNxsdStijX4wBw/tvMgQ7+VH/zXb4Ah/aI2fVR3HusS7A38ahyCfCq8/DdedX7C0sbXxyDhhUa3T0Muqw==","shasum":"467c4bc5c6bb1eb4e9143ad26d2420174357f199","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603233694-e1b05968.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj2gvCRA9TVsSAnZWagAANLEP/0GshtKsrgYBvmi8uW3S\nU0mPPlnx/z/RmdWc+AjwNVeJPfLw4gPojt9cm/BErhdhSMZc2nqI2w4J+zdQ\nec7Q+VLZqJgM55B/Fm7fCOvci5GHt89Nz2u85WSRWHKZ1r2BJ2MIgNtCQkak\nkT3n5TSRNGj7//YACN7lplBwljC+x08mVSYv/BC515qS8BfRpcv4irXhIMqM\nNcrcZDv0YWg1eH237g5lBYv1DraNo7c4v4dIXasp9EuAmfUZKZD6qJrlVni6\nzabx37uv+R9rb4OVEAV6K3Plu5usGDqWfGUfmb4USkVGZfb2XPaWWXD3/LNE\ng7Hkq9cEKnCvEsTBwpQ8V3dT+kRh1imis2WpPRwZcre7/CnWF0QyCsW0j/tc\nBF/Z+LTl6guul77lyjw3sNrrcuDdEM5acHGtcqvpm/7LYUokW9tuopoFgWV8\nYsV5LYa5j94mEBZAwirBffPTHvxI98GbS2HcTvHwJXVDm7fr7QEwvzGRoSbi\nYQhqwBFgsvg/5yUHG+dTww+BzUzMR4hMgagnRJXkeMuh5kyUpVsNAyc+5cGV\n1FC7Diisjgjy8bv+riDxifPQzEaUxTVztQ5SMzcTp+rkmYQsK0wEeLUcFrrl\nM/2pCFuBJbdhhyXRIyBoORiibTHujeCM3VCjRzkY/gUp6QzyX8I0AQGreDk7\nEutW\r\n=Jf/R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCETGLKPsfjqTQ6YtxW56OAwwJ5drk0sikrd3hR+Nw6kgIhAPKZchOBClIyWA5rIexRVscZgBgXtRA2EgD0bkX5toMF"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603233694-e1b05968.0_1603233838749_0.6013557589033915"},"_hasShrinkwrap":false},"2.23.2-next-1603234621-976d2c5e.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603234621-976d2c5e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603234621-976d2c5e.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603234621-976d2c5e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-I4eOT+9ZU81h8SxJUWuDmrAqCM7MG2MC/Zk+G0snaOPWi4X8hFqVbdOYHfnOp2wuP18qeVl5rYfNRtLo7nxHYg==","shasum":"7259495f8bf9b7223904b6f3b95d6235c521803f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603234621-976d2c5e.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj2u7CRA9TVsSAnZWagAA5zUQAIgC0uJzTzJuDuZREa7F\nxNH3DSq7To7wcwCIsAfpk6+iIgrai2hm+VLq8VbXlqVDnbBTf0Nahr1IA0Wm\nEP6/KH463XsSK+AArjy5t3H6p/XPWHQT443PsiuogMVbGgjae9M6KnoWIGBc\nEN06/JqiYYYKjOb3XPo9B8zOZG5jMC93w8C1u7HH3RYYfIYXNDohLS2LF8uA\nk8XDL+Eu8IKdNPjlZk0GiCwPx7fWB22ShDXxaeYtrcX1GefQ03UBi5lqGPc+\nU2hUP5tXXeyeifw4c+73H0cjuotLf6XX63bGSq6Ix+Sr0YGUereb+Y0vVMLD\nd1cN8zxkTJE2u3j5E+LIgN/kQOAG4iUSFbq+jFy5iAPVRyIhDaO9G+Ec5hrt\nnK5werl+VoGiBrSxZZP7YhT0n+3Sp2jioaji66L5QG2/hab35bwbim5vje/L\n9g36sOIFJY8cRVYqOZGfnMHCq/6W0i2S2klQ/wnT9p02x1vZiAba+9QVy6l4\nvn/wBPzCwwgsBEJBtcKinyqXKk8/19aF6EjfwVyTc0QryerG4AUKkLLZNWOl\nfy1+etRtoOeUAIrIca9kV5ou3KVvafQ9viQ+IP9dda2mVOYw8dqO16H0dzGy\nVaVK1PwqxvxjEcWlpMdKm/mMQzAFZRRtZnrPwlDRHvUB1E1RpFE5fCm3mEIb\nItP4\r\n=t666\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBF8RZx0uqy3gSoc1JEh1aZLEupn1gso8F6nHMQkIrqWAiEAlATunIF8vYQtTjM/Pv5aLB0bVudcaRO0RIZnY2B/bDU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603234621-976d2c5e.0_1603234747214_0.8048948858630414"},"_hasShrinkwrap":false},"2.23.2-next-1603268092-c3d62bfb.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603268092-c3d62bfb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603268092-c3d62bfb.0","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603268092-c3d62bfb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-a6cXGhuwHk2c6nTLzHYozS16BHI5kXs6aXV81hJAFIAKaWoVulZfhww46JgPbC5wjc8IjeQEMdY6hkv6LP/5hQ==","shasum":"cdded9d1c1a612ed48a0713bd6180f03a90f0d9d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603268092-c3d62bfb.0.tgz","fileCount":58,"unpackedSize":133219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj+6aCRA9TVsSAnZWagAAvZEP/iUU+pwm9J3Q7LHTJbWc\nuqX9JtU2nLhRIeioHmjmxLqiyPhjLky5jXqcSxklZ7mzOcXjO3hQtVSGDPZo\n4HwocyE3uPQqrfG9d79N+yoYh9iPeabD+0o8Bs+HM7BOvUm8p3EN7LiZDYn+\nWy8saMOHOjSiTczyrjqTJ/OZmcVNaXVCCXJlbJEFXPPhRZs87uk3FYs5cNN6\nZlNfegRYcugHnN7BglntSYMdp75BB7PG49rLJ5hnTkvB0xIssZs5EExCrydK\nakRHUC5prZVACmlh5xVye2WjEMz/HnMDpcgSJkD6OIt3Fq1we/SC3thAM6AX\nYaKqvDuB7h6Wn55MsokBCct5Wl0ZHL8+YjnpF3j1VrkJXSay3Y3ndMiIeQoe\nSotF7QT5e/AFKR+6TJAlHugpahC/I9CeX5KUp+GJAwRRDECCuWIMiQ0vNm6S\nnrN5txn0mTL83xG3l+zzDRcG7XzsCQtm6c+ds00pvfc9WtokP2JAfR85q08M\nYyDToU2QZFVwXMgyVBWo7aqxdlFi59RDG4BwLftnns7kEsOQ9NlzS9WYiGpw\nonmyKjjYTbz2wyDJ8Ns3XMa8fVCbfX8bAJZfWU1BKXv5j/AJ+9vGTxaSl63a\n9uzQpDjAh9J+5SPHkiQXZiRm9xq6MZAabWvZc2KG/ab19bSH5AdNxMh2ypoj\nvw57\r\n=96Us\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFSCk/Lrj/FCbJxnDZbuRTBD0zD51C3Obyfm7O0EesjAIhANtmaP3r7Dx4ui9oU5D+8YeR2tpgeh4nOlGOYLVlWQZm"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603268092-c3d62bfb.0_1603268250096_0.007352002245011979"},"_hasShrinkwrap":false},"2.23.2-next-1603268669-f01638a1.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603268669-f01638a1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603268669-f01638a1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603268669-f01638a1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YfO1DX4PX6jo0B385syO26tk2pkBrBkoCehPgaJgj4egoY1Crdfx4aZKvaI9QM/u/CfeAjBbwIYVNSguTMuNXQ==","shasum":"0b65ea6f7b3d80a83b23dc0c6431d3f5c4102dc7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603268669-f01638a1.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj/DKCRA9TVsSAnZWagAAg6QP/2R0rEyhc03qy6bNduu/\npIt1ZhYdPad8cLOvkt7FupsLZHhLYtCGA2NmVncFLaGWJ4EobrQFGCLZ69cB\n+0Z6XMHlhaXBRG/FJkAz+xpDUDT10ujyweQCSHFmCWDpGzSAv4eEld4eVK3A\nnJ3mn0i2B6zliTTEIqq78LxfXW1frsdgeSeb+xFQvvd9N1BWxM3f4TyuuIqV\nT93RrysJgn7jwDIDxPMGNjHF2SvdikdntmGwfTi9L1WAH8cU74cWkAPHCGWh\n8X08RnHWEQD3+bqUviS18ITfWddOUD5wZq5J1xX5BxeVLbdIua6aFPaSzI9U\npIzDjX4Rwu4bHFHm29VnzsrarTn1x9Ry0wfSXnywVTJ0j0cgF9Su6PXjL7z5\n/IOGHeTVMHyY9CsrTZI3A3rtMYwKGDt//ozDRhtTwfRq164nfo6mXHV5JDF4\nunjPnY4XWnr2Fia/QQKtFD+w2qWT2b+hVr8Qhtlr4ZpKKdzSuQD6VCWYQ9ui\nU3OLGl8BDAPSBnq1JDXe1mDJs+xZpabiTuMB+RFLy8YfokFMJJLNZx3AgtQL\nun9z3H1/iDnMu9tB7JCarx5HQtZflEo3ir/6hfpyCs09sYdNKEt8uVMETF6S\nQ1peWTbYXvJJ2r/kJpHixNY5wNDsKSfv1epKS3Hg/wg0LqIt2SDXv8uo2SNB\n6mdO\r\n=pqLh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8Gzo/QWeZi8A+/5ap1x6khQt5ICxUsYzAyQz6/5V6FAIhAOSedMV4rn9plsn/45+v6KDzkjFzXaspVarGQSX8b5YM"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603268669-f01638a1.0_1603268810001_0.5253483420609084"},"_hasShrinkwrap":false},"2.23.2-next-1603268746-36cbafcb.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603268746-36cbafcb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603268746-36cbafcb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603268746-36cbafcb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9AQkQNVGQG5t/Bl/8vu04wF4e9weB8hDEWNbLrfhHXF4VcruUJtgLmxqfn7aabUJVwO0f7wp14BTxJ0DVPV2vg==","shasum":"19dbe1c8f43f85fde68249733f3a452bbebc354d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603268746-36cbafcb.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj/EfCRA9TVsSAnZWagAAWQkP/1dpO7LL+Q2rxrWtNw8b\n7LdOLA4cdnz6oJvOxxBp3X2NYlOWE5advMSOIut7XbjJ7DGtOny4256ppOLx\nN3pK7OAm7DBGcgqqFIXVP1+Hvz7n5C4RvO/GFEeCf6ajJptvqE00IySoqi7T\nBpuGdpIDavW6DSvviN5iSCr/BZgjB9Wfh7811T2EEZWmawMSM9muc563X4EH\nJUM5Q75B0TmYHtlMJCKTKYu/2S1k6sG5PFqv0wsWZemZDmbGIeNcnrA8vJVc\nJkqDtk14ONu9xh6gmyF7i5vSwboZNEAn2X1yPdmFCn9NvhRQ6jboE5M7X8pK\nsMnMR4hpX/DXpLO10iiBbtWkaAn9cP7ebdm0wbA4FofyQp7+Y5opGwpZcgaC\neQ5u6BK9zKlngqcehbKd48O4WdCB4lbcEfLnKgLt8ox5KJpe356IyIqxEFcL\nu0VdRD+vJJ65xWXPZ+GUJCfFwTFrly27pB/QCJB+jdSh/QoPl4fJdpIu3NVb\nXfKbhntfVjKwOXILpK6/B9QciMX3U496QqsFxaqRqy3htitiO+C6bYH6o0/v\nbtWs6xqpSaWbPki58UbyAIGtPVg27Kgs6XfHpxyhKBYx/T0mqhPhYbl9OlUE\nX6ollFW4jbaiq+hBAtGKUjj8XZWhcCAQq+riWJqT20kd2PK8eiS7UTGBu84Q\nz6Bi\r\n=vpge\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDcMqwINXzqsncVPo7Urs6Cp7e7xx/LUS0buEs6KmuqdAiEAkcqoFTvT6xpZYS6LGc6nYjXBUjQjODqy+wTaGtdFt04="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603268746-36cbafcb.0_1603268895369_0.4377909161296847"},"_hasShrinkwrap":false},"2.23.2-next-1603270116-a12e86f4.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603270116-a12e86f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603270116-a12e86f4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603270116-a12e86f4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-k8qOHVzjouFQIrTSdlXaHIu0/wFEvTLQwoK8VDwmd8eUfLPguotLx4eiPo6FSJh/CjqIEEUFu5FDXHwGbpNRxg==","shasum":"464d3856d5367f003e00546fc7a34c6cfebdd4cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603270116-a12e86f4.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj/ZdCRA9TVsSAnZWagAA9boQAJsIFiwMJEnMpaWGlDTF\nugllG5eIHevmQsdmbyxvXhOymxLASzElBsXMPLm9yThv6qpib2Ig4lpnVGkT\nehfHhqFiEbWo6nA9txk1T3MFCCz7fq1WzJsgMwfJYZgn7LjgiuR8UUd/sGpU\nEYKpyledHHO71y6lokLg0r1vCu1SFAGZzY2g2ENMkPsyP8OMKC1OzEFPmbUU\nUHaOshPytf26Xe3SEMumY9U8V/YR12nNcpMvgDG0LLV4GsYchEnXtl1kii+3\n588af9MYUgoQ4adn7kq60McI5X4Z2rsi89yNjopiOzcXvQp7lfb7jdxE/idD\nVxBcmEeTg92sgId3+hy63OD5MJHDXcC6curt+1zv/ReVeJN86m9cu2OoZ8LM\nMfgONoJ4QhfMyQdabcZVK9zB8O93XzKYneJZivJy7XQ79WqFCowD7+wmkzFR\neopOgH9ugWnQbl1tDL+FX/oey3DeToQwiLA04FuwzUIlDa26yNpyVmWib6m+\nzrDirRu3LZ+6ynlvmGY+luBFSkaS4TLCei6wBZSKum2gwrFLdb3WbMlKp2Wa\n4BjeVONtIqU4k+7c4s/o+sxt7p/nm8pWeEEEbwV6ucK/jyGnJ404D9vMFOvO\nQ6p44ys8iXdencInSFLTjYSEB8cy2SxlCsjl3SRaNIsm6imHETfnhjBpPGHJ\n0ie0\r\n=n3HN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4inIDRl9mWIGCeJuLW3PbyXG1ad6k9VWpB+iWS7Fr/gIgOaYaA8yKxRIl0n40OU1tO6OdUm2auEz5LZcjXjxULoM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603270116-a12e86f4.0_1603270236830_0.5628130840054377"},"_hasShrinkwrap":false},"2.23.2-next-1603270659-83667af4.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603270659-83667af4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603270659-83667af4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603270659-83667af4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HroM6sErdjlCQdb2HkAtwFtEaW4enI91teP16vcuWcrXoFEYRNmjZZvL64UQgBSI1LlFbrgo6hKUaaUPWxIyaw==","shasum":"f1aa1cabe00046543234c0a59c54b138be7dbdcd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603270659-83667af4.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj/h7CRA9TVsSAnZWagAAD1wP+wSFROZ9PoAf5tphpZVF\nDF1M90P7rj42N3mI/0GiTnZXJg2ZDreK+zUDmLIlDiGeGFqtdDpUKpjYkXG8\nlOUGT9/gNu/fb0ZpX6mrd3agGUGFHnpgyMLAKHkEPyNLaPf+IxvtaBEvmKS9\nUGCvt6gyVqyioqP3eQ5ie08Yl9mb1+EJ10zze1BntMR7wjqylFc6z06hNrPt\nbeTziO9jYgl9cz6megt8a3ZNRk3otL6L6gp7ZaAiri11DxpJ70vLwBhpEfnr\nc2Sdi6shYaOE/Vlo+NZrKvj9vpA+xB+baMmYiO44RRQ3Wjg/wFQY50JWGE43\nMB3uu/S299/ZPUO+dUDVKIZuhrek7XuStRvdyB4xVgQk2fjn+y1GOqCnf4FG\nP9saHkxO8PnK0/Jo043aoAwlSmA1+T46AJjsRIhLRTNIfD5C7Blpv+3GJALM\n77MNcvR4w3omw/G1s+iUjXCmq5f1PpjoxyZrHOK8S/XDKd0I/uKF1T/QD1/4\nx7bs+u9dy0VIN7AQ7dkihM+VyTwKMZmOub1t53+K67v62W1M4nBZCJBBFblO\nPssQGrm0tvzsozIskayn3VW3d6Py2JVZmw9neh4vMCQoqUQeBZXRs76XI/rb\ngMRXlB5Gaes4INKI7Til7TaMvnrPhcJiDpfmZ/zG0qMePp3S8W9f5gqwpvOO\ntDce\r\n=ULbr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGh+MZ6rDdmNz+mEoyrCh+Yq90l4PlWcpA+4A22XZwM8AiAkVNmoK4TZl2yyLKsXt4Ur5T5Jo6AGLEJU/VBDrEhDHw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603270659-83667af4.0_1603270778913_0.5841642147329937"},"_hasShrinkwrap":false},"2.23.2-next-1603273858-d53ef9f7.0":{"name":"@xdn/prefetch","version":"2.23.2-next-1603273858-d53ef9f7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.2-next-1603273858-d53ef9f7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.2-next-1603273858-d53ef9f7.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-H2/Mk1+CrFUahOaVkWOyX4a+WDA6Fl5YByzyPyIkMuQoozWR2QcdwpNMvILzK+zxd9VFP8XU7xu0KLdyLTBbBw==","shasum":"a78bb74190b0040ddab37f17c0341f493eee64e4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.2-next-1603273858-d53ef9f7.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkAUSCRA9TVsSAnZWagAAK/MQAIX+fwKMWjw2lDk9FAab\nZVCvgJbpNlw/h1RxR3iiDuYtQRilIhKRnb6lvAiEHAbjYH9WGT+HV5p8ea+D\nzJCtWjpxECfIBoej86LzFh3+EoWNmupA5UUHefXdnQ9taZ7HEs7jqEnGpPyk\n5ew46jiUtI/dhQ11VKigDAmN5G9XXl/26BpEgZDfIyMID2GD6WI6vkCzi6uw\nXS1HUXLu56O9MzWyHkj8+haSfUMUUqmgk1We6s6xERox/8I9i+5V7UOHBH3v\nAQEbhKKpFsefF9ySX781/myPKCiXYn3Owq++Ldbo4FzqLa8h7ruZ7MmLPJIA\nDxa9LKUb+0EzOnZ6wZ95XjTx4vAV6V9FpWqfLMdnKgkyJ16AnpHXPeZJVHqY\npf4nFA+uEtf4gxwUePeuIxIHGdUrqZKnWc5oVk4wwT1igu8Zqai2B+Fsa+BO\nvGA5mjYZlp+uS5FAOFEZzqvjkrNXb5S3/gqQ0+rhiYpI/qeblC2oV3ZRxgdf\n82s/UzaUzCi2PiEluxwY1AsrlQMebax6WhHZag9GbD67OPexCH2nbaYO8iz6\nhU82sl4OunFQsoI60vvesA0yO5EIizM5Md+/d2cv/5DmEfW8nCkd+cfmRwmd\njYMDknLzCmyNVEU3JTTDaNCGrbgl1ZhuJPobLvUnOMpdZ+K8dM1vugi1b170\nYi9g\r\n=FKwl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGx4xLj+DAmQg4rVq0nstGL9oJpMzbFpESjmMuB/BgRqAiEAk5J3AXVtLVyqZzp+MMc3+9zYBcc5rLdIauzx48T0ys0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.2-next-1603273858-d53ef9f7.0_1603274002067_0.8192275017388797"},"_hasShrinkwrap":false},"2.23.3-next-1603273986-9856d47e.0":{"name":"@xdn/prefetch","version":"2.23.3-next-1603273986-9856d47e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.23.3-next-1603273986-9856d47e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.23.3-next-1603273986-9856d47e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ikLMjdKNlaj6Z2Qlhzm3b7Ef4Gl+Btdl+EUPtT0HM2ffD/Al4hZXw5OKrYV42dG55wpgWmtDBUigcVLSdy1n/w==","shasum":"6ec48865f040ed1944e7ed2f3ee1c7ca0e7c9a97","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.23.3-next-1603273986-9856d47e.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkAWNCRA9TVsSAnZWagAAuPsQAJsWE0OrToyrqTgz7EE2\nidLTFnccRki6z4vEooxmOAY6f5o0IFRe8gUDz28SCbciLs70SccY0kjPnnSU\nI88IljqInIN9/hQaAdUk9E0sTU7AcKcrBGWnCeXqnXx+WzopjJxNchbdp3IU\n0W3lkzmcbl7oTzGn0waU1/De98SYkp6u9VJJTWsegQyZ/z5UaYRCEk+LrXfK\n30NvV89PpLbnzbv0d/08HdQ2eO3PEx0lAKTZoLL8bZW2lA0VFWdnuR0YVW/7\nCy3zKmCfMUZB3oPf9eXnimr0DRwxmdbnIrpRHDfuIFKNi5ggpP1TLQgrZYUi\n3bM+jk4ym+Q3VUqgb4iq2s5JNZEueXDZYbbHBfV7MPb1gsK5iG8aGpLFit4w\nY3YTvxv86906weDSh8KeJq9eKFqs+LhCZQ2RkcqHkJp/9kLwjCX/35UaYmOw\n1bchk1PNT5AmU8OORx+RMNxYOtwcFbZ9PuZSZV576ogD++6u0l6A9MtAo4AU\ny9tPT4pbxERmcsKUjnmGY7/Tn4jCFJaNEVZN/J58kQPiQkKL+9gIpfabi+za\ng7aN6ma2qAWq0pKJdC0DzTaWZttGdgyYPAjzVUxbk/Q3O2gTTQhJg9VYNPI3\nXn4aYEI//QPz2/7I8Ry45s2g531bT+TtvyoJ8NHr3WxpKUwmfynzop6fdWDS\n4Pb7\r\n=4QFS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVPTbZdyemLGEyxD/bCtpRFk6RtxjcwsztQUDLV3sKUAiBTfgoA+59deEy1XTwcpHjLeFvSiy8GpIuXQ2RJNZhgKw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.23.3-next-1603273986-9856d47e.0_1603274125134_0.14066364387273111"},"_hasShrinkwrap":false},"2.24.1-next-1603275471-329df333.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603275471-329df333.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603275471-329df333.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603275471-329df333.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eEMFN+fh4eFhfo89V+dT8h05L6Q20E4721YYPZnDvxGPoCWSaLQHc5V/UwumPRjfgeD5u7D5cG9ZP57IaCAf9g==","shasum":"27728decacc8b00757f4410dba5c17b6fd4ecbfe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603275471-329df333.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkAtaCRA9TVsSAnZWagAAancP/ikF79NkyQtjX/IKpTwW\n4SXi9fAObWhch1o5mYCr0fUx7lEhFUQmInnNhnUD7oySICjIBqNeM8SliAbt\nDE1beFm2lfERIwsJWMrKqM4pqA8B4yE7CE9+VLLsdt+66MnD8A4cHX4NaD1O\n6ar1IksMASG1wQXmsBiGoN/h03oC6CIGWlBvYdqHxEYAPn+CRbAxEWULSTYA\nZDYJR0g9c2BVm9T1FRKyYpcA2UCg7sH5nOC0C0WY+ZsruP1JsAzEQ3gi4uG2\nP8CxBnYUVu7jiIgMNeP6K6V+1HI7ADI1YPlQpWt7yzUZ9LrXweqfuZ3YuHqs\ngmqzMdYfHJihqiZEmMWcan1KBBr16mxM9kfKuL9LlW8nMHyGsaFBo5YrAsvz\nms1IUeM+Bu+VJiE/AeKVGTZvomH/WdjyrGBECjJS0FB4XJ+hXIpi4noLx294\ngDlvJQUr8e4O6q1xrQXIq3V02Luv3+siFKJ3A0xtxtzTbdwE4frhpi7ouqxW\n+0tT+dgr5feSW9IVSA0gTwPlIjO5XejNbURr3kYU6PilLBiaTYpiQ058Swjz\n4j0+UB6+kcpeJCguH1Skv2Ns65mWZ5hwkvOCDBQRehnMMcnCfpy+tnMI4V0F\nJt2/REaBWju+rj1NnxDN2GZd0Rpf6+EOFWaf8ome38yAXcgeRJZNPdS5SGX2\nps98\r\n=HSwv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB8Pe+V3zDArJbUzn3DhFXBS3CK1UoWdxP+TbIhe0whWAiEAumyoRbeSY2oYVAH9yUR/WYOVnk2wfXKs62ZEF81pJug="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603275471-329df333.0_1603275609753_0.535949886148424"},"_hasShrinkwrap":false},"2.24.1-next-1603277042-cad2926f.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603277042-cad2926f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603277042-cad2926f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603277042-cad2926f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MRtIKCLq6T2jv+rfN9otV+NYwF5qnBIPlQysZQ4aae9Wn5+1UEBwAWXg5qV51WqfMWxzvLKfaOOVM9HCLp+TMQ==","shasum":"118912cb59de9639a9ef6ff799a0ca954fd7fd00","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603277042-cad2926f.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkBGACRA9TVsSAnZWagAAH3AP/jrhaYQAcOc3FFtGHCi4\nYSbCeeeEYvDXQPWYEjIHTeoZbQ7XwzAP7LGaSlrVEyMLHo3usqrN4pqhj/4c\n9Xci8UolKG44R7GW8duFXtFFIJxrWtIjSpENfZ9pClwe3JIgOBNZPMIozvi1\n+7o2vADH5XXOvpSei2Dw5Plzf8wnb/qlK/N0xGjHYETANG7CA3NDlkba80Fe\nN+UGZy4+g3MUZtcrauySbTFRdtjE5v+WAoz/rERPgF3BAMuGgjTRP4pthnax\ng8HFi4DU+8IWoTin4grlAhOjLrXfW1inxPB0altgXCurGQJMkIPdgWA/Lmn6\nPSBLP3ktGU8TcuihoatmHFmCx01EocksLpbn9QbbGijt+hx+eK82moLj8axc\nGS862MOXzKc7C3I5XS9WTGM+px8lvfOADew8mqShBuGNj/wL5NIYKiJgQYkU\n1Ca1To9ogcTcrwk8FvqzdHJUw+CkHzz31w/eGrjRlTOpNAtG3r3EhYuDrUXg\nho7k8bl06fXUp0TjRBLd7FcfZQxBpfSM0pt1YvUwsjdXJ/KW5K6RGbD4HboC\n7Rko/78EVzWdKil/d1m7Iip7/KjgcoT0eeaYs+f+y6+kfjwpM7fPYEJSlVvf\n1WCnP5yC7PFEILBQT+dWvcNq1iQ1VsmDxmrYk6OplnAefBRCK7MtFh4ESjjE\nvz2q\r\n=9tyB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZGYbmlnUOqUMGYv381tVRIt1qPLbIQXFUIqACIUZ/3AIgFBIEBv5hn5XvoDs51QbtXnMmQICcAehRN56rhyse4sA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603277042-cad2926f.0_1603277183967_0.2148084603468794"},"_hasShrinkwrap":false},"2.24.1-next-1603277528-d6eb3909.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603277528-d6eb3909.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603277528-d6eb3909.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603277528-d6eb3909.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-RenIud11I0mnC2y92Y4pMbTQLXFRHvMi7xZO1U+rDYDuf2VUF1U0CY2VVQy7mMtA6OBjrlJrGoSo/kexASUUDw==","shasum":"12d443f996e530cda467f9c3cb19073c8d5f8bae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603277528-d6eb3909.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkBNaCRA9TVsSAnZWagAAYmEP/jPuluqLLpgyKI0paXVg\nr6E7hLUrXNaploEyyrkBy/X8LM8DIT3txGTLhWSwW7fhVTmE6aeAqbwH0RbW\nS++eq5yx6I9yKHo0iGFsZvgtIO6kp9VpLO17oQ6MS+SqKTDsZMNrvnPiJWhD\nukygbYdlbbyA44SjupDKVq2/1Y6Q+cwV8f/ls5xfCqxXonf5Vq3vVvn9y2t1\nQieDd6KsjWrk4inKP9qql5XSP+lafp1c+8ojVFuSsAhQKUm4O6XiIlRSspNM\nljs1th3Ynz/xZ8NiOyYA1IchmorgqHWGvKWWPIa2DAWHyXzkO1z7Er+U8N5W\nhxg4aQoeXeCkEC32BatYZ4gI4ZqKTVB+Me6eAxaYliybIeTrRNer0SKRy9WS\n/amMNz9/WH9OhXe6UYqGSOByA7sEx0hEI/uTRZMNmFyzvx2gWCvM0dn53dak\nmQk73QgcaD/qa7h8DfrXg+TSWh31/4R6IVa+qHRdkHebn7rWufoPpPj3Knsa\n2AsByMSe8jBVO+be+UBOINl9kDppl0MnQDnswL0kpuNDDoYza9HL9I+eOl77\nDLvryYjATEqM8LcPZmdq4QpIBGHe8y+ZLb3EUy0wa/O5XyKAW4RaCeaZjRwR\nu8oUzAljOMOWeVKRhp0GC18MyNaPzWRiiVA896SMdfJaEEiHeB6INQFUaB91\n0Sjq\r\n=P3Gs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIELtsQlNtGQUGuT+7/STMwuWZzoGHCcqPk9HLkO525QgAiEApeLV/B4HN9cjH3tfxUcLaIZ5ILYimfLHmE4+VhxZwEs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603277528-d6eb3909.0_1603277658481_0.5244341241431638"},"_hasShrinkwrap":false},"2.24.1-next-1603278283-f85daa8f.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603278283-f85daa8f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603278283-f85daa8f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603278283-f85daa8f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XgfX/XsCGJyHOH7mwQifj7DhmUVeFjJMJ7MBkqJF7eNCIW/0XRLXUsZPXgZlSGMdxkgT8Uxn/nHhPF8HnhtMYg==","shasum":"da3c0b090e81cbc8ae7aa79d8af7cffe39794921","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603278283-f85daa8f.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkBZBCRA9TVsSAnZWagAApmYP/0gU5JmT63dsrSPVLiKW\ndSFoYSVF2EJRKG7GJIeX/jdClWRQkuuQBWV/ycNE+tFd2C+8FaROnIeiUBX/\nJo7wa74AUHru34XtKQY0zdBXroUTqzbaw5CBtU4hR12EsPfIXQLk2r3HgO8F\nSxuDRpiEgXsUjYd5EyEpSRbstGGRxXEk2hzgd9EFjf1lph9pVG9spbGWyN72\nE4TfvE+RhnDKYgcY7YEeMPgytpw1szz74I5T5HVNP3NnMXPpF9hRwdT9Wm41\nI7o6UIWcZ485smxFI8gaDDA/TAO0Vxybg6K4vZMGqyawRDL3m+Fx6xjndHAJ\njpsp1KYvOQtodhK7m9z3wW6b+zTzSdbjVDRdPOHiPqrBpH3te/N0HFrx9pdq\nbrjPdyB92XGJ0oLdP7Au8zpIAEgjzMQNGVo0rI3tHSkntUDlmyGC3P8UFBmN\n2KRDkM3l0Sxr53UCk3L1Kgg50RJJcmPs2Qn6pGoekzxoJtokvUaNmGi7lVOf\n9EHrkVfsDeq9g4CqECFB2XziGy79RZ2dWLPRMF03axWE616ZNuo66/bw88iL\nLxKPVOvAyP46KiU1XC3oEfBhE9YCUxIYSBGIomhieaG9GkL03+7AOC3gwHIU\nxz6rN55dHWIYHhTdRBs/uvOUdcXTRPUq5CL7+dbloRX/VYuKOC0z4fmUjqWV\nCMPW\r\n=/gH/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6+3ddoNbpjNWx+8YQZ+Gg7KuvUoePzZbziWeXX3U6ygIgTXfrX4zDCG3/rSRnZ6KWWIUqkJ7ZHChM9AZ93TAHmbI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603278283-f85daa8f.0_1603278401394_0.626593824423789"},"_hasShrinkwrap":false},"2.24.1-next-1603278802-d6eb3909.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603278802-d6eb3909.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603278802-d6eb3909.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603278802-d6eb3909.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-m26t1iCXCj5rrRjVDxlFasjdz6+07+rKo/ztDXNw4b6jt0740OWp3gVr9obcofcdjShgPt2yLS0GKP8l2bPbSg==","shasum":"2181084978d9b091f8987dfb953ed36d9abe78ee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603278802-d6eb3909.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkBhLCRA9TVsSAnZWagAAHbEP/Rb5MVKC0aV9NNzm1DBE\nad7B0UQAtf1IfyIcmUA0uGAHWvQwHqrbrbNrkEdrErGA3exgL3gLgtHXr9nP\n0NkP4FTQScVZguqEVvnq8sv+ICDiPwhG+WfehGts4KAItdVGflNTCSMKFtsv\nxEjUE80Laeym0VXHbnww2w215Pi35Dv3I5VmdALDu188wt8csuLTFPipZ8VX\nPz3LDbxpJ3Sy3Iy+scV1Dn0/DvEXUiA6f8oxhapBp75CsyQ+rADjYzhDHNkU\nFJLvgxMcJAChzgA5hnVKcE5A/jx9tIyRbg/TfQ5TXfW978qwXim+Ixp1FZPO\nNQZIgPOkmX6gHYjDdmgjzqcrQvjorc8hcqrf00tLuZ7kBFKwpZQtPpKGYXAu\ngfjvUlmHFcy9eAY/GXtXfxkVt8LA3aEh86b/lIeBzClGgQ2Vebuc8d005GPL\ntnajxGLLTBULgprtm8AUXaXR06FybOp96uKJJtxxV7PsWGY0H8pygelC8DRj\nT+rRk8dv0xEPQCYS7qhcuziKXWGqBxk5pyRL2fvBcjZf4nxwdLoS3Lx2kf5c\nrhYC4JKy/YjqBfIJHK9OJudjUEuUfvUxdKNeBFPALNsawUa283eHdSjAa/1W\n+qM8ulQ7jdqEWnZDaAdX4x+lCOzLneVG3ExXkH65C0uxRuB6waRkfM8fheBi\n7uAH\r\n=+hpb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXb40O7y4VobKOw0aAkxzwIKRi/k5gm10wj+VORtYSNAIgP7Y6h85Vkynj7VxpwuwE8tLIp8jiBweHUFiIOViWJA4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603278802-d6eb3909.0_1603278923158_0.3438957567290801"},"_hasShrinkwrap":false},"2.24.1-next-1603279073-ab2a77ac.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603279073-ab2a77ac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603279073-ab2a77ac.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603279073-ab2a77ac.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+LD+m2IkgMsNPZxd0vipYqE1oHQYukrzCID65BV1hCVinqL2xll5KWccqeAE6vpUtSYq4NE9LBjFtF6IkDKOmw==","shasum":"45bffc1d8ffb9e92cf0e19d36215a412639f7dde","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603279073-ab2a77ac.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkBloCRA9TVsSAnZWagAAWA0P/irUgS4Lu6rrIdxFVNCe\nSV2SL3cpWzeN3lHrHf3y1MEzFJk2+7/1QlOK+1rQNaxLAHOD5VpPa4ALWZhw\nz7jfEFrLwF1dYiD9zBeJnb2INpys5lnYvxMuYEbefjD+mWA5xU1eNIcXymLP\njIAz0MjEeejdFn680zWGov3QLLzhkhAS7ORqQr9EWOIywm6g+Dsu7Wb76nTX\nqbLgIoL1h8jg1rLQca2s9op6HZVzv0a1mhoBj/ev1S2FHY4hv7tUJW+EHKof\nI/UhRbaGpMKoWmGIupJgHqOcGL78l9d+5hNGvKcFPjWjvdA4o8ZIPlOopPIc\nOePPi3bdGp8NrOoFUZrQJdrYyylmHcVUhf6N4EClsuTJZOqgzgtRE7iJCMQt\nk7BFVZN/xH0p2vBPy3drUxFjm/qSDxoWx2caU2vt+T736/l/ealmQUjYie2E\nmm6C7AeFcGqX4Qc0yaiLZ4CtySVD8QWRwiR3oYOzVatStU/sSxySVJysLibQ\nQps8gPBZQdSLNy/+1u+9jLTXoJ50SOvQXzq2vYW/Rcj0YpJzt9IbdoLso+tR\n8sof5jndDh4IuK5kL4arpuFZl3r44IPfcZhejo5+WLLAZuzA+voq6ftQcg3n\nGL1Xvn7Yq3YHAyaLICFbGRk2INUhf19RJr//QruZzZmUmJ7Gf1Z7SGTjH5p6\nsK0z\r\n=LiqO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB7VjU3QI06r0ZQQsQqfVKwAy0jAGHbVrnoICx+KLv9RAiAKzP9s08Y02EwSsXjxovh84IHec3eyEUMFgAQBZ16MqQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603279073-ab2a77ac.0_1603279208196_0.6369982708596607"},"_hasShrinkwrap":false},"2.24.1-next-1603279440-d7a6d29e.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603279440-d7a6d29e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603279440-d7a6d29e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603279440-d7a6d29e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-24GOdkN/lbQq7T8iTKdxRs1zU8e4QGGnwLo9vXZ4SjMuhhGtfas5d8zi5r/e3/S/hct4yEgM67lNRAvAsd1wlQ==","shasum":"d4c79f079091c56aa1b5e9efd895dfd6effaa60b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603279440-d7a6d29e.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkBrfCRA9TVsSAnZWagAAmQsP/AggLMMUKiZ7I4TmGbrO\nL0QD1MYt0FIJrFXbmvMIefhcsfxAeMJktfkEO3CV6IYqYnaM1DD94e+ZOGxP\nohpZR0wqO7lbjAPVdyaIZVqnc2EBu85Gg//l9z0rMaCbIQHgN908vLNu8Xk4\n1sWtGHeDp3BG9MH3GQZe7XxxPSCjhLAuh5Em3rE2js+YNM3FmeDz42SYK7EM\nKvuCbLcWYoFDCl7Ya7E53FFezzyY+sUGO1fjwdEAdW7D9UVFPNkTIxlBTsf4\nc8OrgO8WJ7YHRKdsvfIu8w3i1UV1/83ZJjjcBOXfqffS9BrO8SmV7BuocfX2\nmPhCrCxxorMTj5E/udxCVKG6bvfQiT77po8HlDM4Fl0ozNLF8ZNiOGamHT16\nnr2qv8YHA93jmxS/6MO/POsxHvuRlIaLHBKv65P5qg++9tyJnOi9n4Imi2xG\nuCdP8A+bwqQ0cShbZMfrEscPJjdMx/iK18JpUUsbPAQE7PFn/I+Meu1kjXB3\nX9Hq/JHGJW9ifscbPNFStu+FSXKgdcHJiPZKDlM4aVxYLzcEevWJL0v+eiwz\nkahMvB1ikT0+LZeFB0XzjjRcQVu1PI47LFyhTxWvgrBUGSpcgxdfe4AFBUX6\njvpINv1OyU9uwPqI1ie17rKJPt2eNkViFXuCQehBjywJmEvX+xAexw2pHMBA\nmbaa\r\n=a9nz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGfc7M+LJXA5fLIPfsqdvagYxg0s27S0KFi4928RMAD3AiEAovUQOMosIgxOgUK4lrXy0nK15UeM8rHasU3U/b7SC+k="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603279440-d7a6d29e.0_1603279583464_0.4188298357930791"},"_hasShrinkwrap":false},"2.24.0":{"name":"@xdn/prefetch","version":"2.24.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.24.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-41jtjU58vEWOZqQ2ii/XK8EvJKS0gA8FH/LZnNQwcyYg/gnonSo6lLUsIAw4pMtyiwTCPqXRFAR7NeoXBxodbQ==","shasum":"43403418dafb72714f2fa7c6dcfb29995ee977be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.0.tgz","fileCount":58,"unpackedSize":135510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkB7VCRA9TVsSAnZWagAA7s8P/jyjC/FxneDmQ85sDT4D\nuXI3TZHdQPtXYl4nxdW5hyXNdD2UU/l5MV/aQj197ejpcQfYvFzsM22axmd9\nV1ywvM8PVYEoQ3W37uS/+DcYXeYOktNmFFPYziQUT/xf+vGHeGaB7TGu7CP+\nVRkGLKt+nhxZefh5Y64YoUb+tQ7tGPx/p3Vrh4pLhsVrvVTYZ9z7padfxRBt\ngrtjUdTvBTWMZsn74pO6sPYDiFYQSW9tzhkFJbXi6NreH6Uos0IZuCqdyNwF\nSrCTy2M6rM0P2Jl2Nd9cL7G9LLnnXIevwrLcMluLXyAL1phAAwsHUZ58BI5m\nx8mlIfFxOSDmTFxpnjPS25Lfa6NEB6yq+f/wORZuyIRDfI8AWSI0a2FftB6D\n8BYYpf2lf5Pw7x4EqbA6AWEdo5A9+WPxfHaDwPWHPE68i5jWuc2t+oypKYug\nf0NQ+VI9yWWd6wpwgZI4ta56ec9cHqQzYftmanZLUaOUGZHNyxpBYzGjuzfa\n+1I1PiB4sQ4kZhyhFoWzC5vGVAZFPrd3B4b1LFLJn2sqOb2eUmCtpAyTI4p2\n+BNH+Bms8qRiRdiQCCnS4JePYGFZ20ja29fzJfUKd+aH8Hbre6k4OGaJtlr7\n4K1TCgRmd5aqX66FxWPGJ7+AEyLcnojLBJDV05lOoxGo/ri+rsADx/+XlwlW\ndIe/\r\n=03p8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIArDbx4ziHqu/ad9xLAMZW/Xi2f8PmjYW06TqK4iDtZ2AiEAsJxF8mUueNr13sd3nyePOZuv3+Kz+YoCWdtzELTTdFw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.0_1603280596799_0.2824618804305392"},"_hasShrinkwrap":false},"2.24.1-next-1603280612-fc1a2375.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603280612-fc1a2375.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603280612-fc1a2375.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603280612-fc1a2375.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oLluqN2i9RwQEB3JcVaSlf85xkVMhXP9z0XF9AFfCE2kAHHQvjz856b2c1uwGudH2+n8D3T+1iHpQOYC4+alNg==","shasum":"291b3d9705f4c3e6a18cf874d816cdb2188f7cf4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603280612-fc1a2375.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkB9tCRA9TVsSAnZWagAAEWIP/28ekc3T8ERlHgqhM3mx\nv8T/rTusbB1nl2GpGpPz7nErBTJuEPymUBqgEZDoMn+DbdlDidELgMSTGSF7\nuaVz+kLGucsuimNfBNnj8fmczEh0IYINZQ99Esnsh9tZbW09wfClSdySPzGQ\n6KKaXJK3c/0WrxwLK8G8LKjiVFoV2fz2A9yV3IdZgDrrLZgD/soKpMTLK4Mh\nJ042eQtNc/d9ec49XMiIjesYZch9FdNOTQKPKzDTcT+yYDUPltOEshuzntYl\nsLaDerYybFCxDRKfCl7KB6YQX+AYIeN8MPtP44RlF6TTC/39HPJGY4yskOjY\ntgfcvG8b8/u3NL71LeGBrWitvfkDxvZvcS0T4Ky2UFrxYEwpFnoF83HA/mY0\nk+MXXn/thMzcf3RnrsK0MYFvP9xtkVbrhfUQaycsnt6vs5vST0PAJYJawqrz\nfNTtL79vrlvyS9DkIt6BpzcsJvviRBFwzf1dirRVxImcYSsoHTsSRSS3kFBS\nriduugn478fh0GTMd7Ta9JfCcTotJLkN0UgOGSl9v6NLViOYvkHYZQqZkDBV\n8Z+RVS0D+6N8Ko5KEbLjwY/MgBgCRL3lxqdI6SzoEVTD6sHx36rZwo/1i7Q2\nonfVffEoPvkWL7lTUj8gj7ZRwgCvS+28cdpHvW8wiyBJpjv9WVx1a6+qyKUf\nbHSB\r\n=NOLU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBgCTtrfn0ZBWmLDuQ7QGNNQmo7KaN2th+Ru3Awao52pAiEApm/QkxoQx0UUkFG2B/LrDS+ynNmrU0KGtal817uJcvA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603280612-fc1a2375.0_1603280748930_0.31309905139513083"},"_hasShrinkwrap":false},"2.24.1-next-1603282050-74c7502b.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603282050-74c7502b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603282050-74c7502b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603282050-74c7502b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ablz/TnQnTBmGpmUA721GW0jcT5gvr43AbxA8msb8aJsirq1LqfSOHUlj7juu8cNIhTtZnXopGkI1BY17afP5A==","shasum":"36d1a3ab04d182eb64ed6f4015fe7a5753b0e86e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603282050-74c7502b.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkCUNCRA9TVsSAnZWagAAwEUP/2eLzzIVBmoqAxhXsePt\nH/TI29nnD9lqqTgPdfB94dfxC1Q+WnFOGU6FkyYRGWFrd55ys95T8GHCa03n\nrmpUUC9lZIkk6mJzg2a30fGxY2v27UPZluvbw5rNriLCO6xQWrkigLPQTEV5\nOISIP1axv6n9UHtO6QUazXEJ1qkrvx/tdGjsmKtO8dDExtuA889zLtvqnpVT\n0q2aTnwThlADix5sRGp0VhxZ9IfGYR1qzO0oLBOzBZaKcdqKg0SDiVw6bxB/\nNZ1esGHnYgbEAu7xqiEESmvE+xW+sqQbl8p/0O4ROE89JhTyQzCr3lkWUe12\nXmPqvo1j4nvl7l6xnITdckV+tz8+SdZ8O6cZ8dYonWM5weKAKPlTzJsoYzlI\nbCHmWP/d+/0/61No/aoyPwvSmWC6d1BZl5jm8KsFRTwNMpLZf4cOXDE9JxyT\ndAc9SqLA1G5d2V6cEeVlnCYMJs/MmYGMIlr6bNYM0YzrEZcrr/5FBDxKudft\n2g6/LoQQyTDAgQxTocG2RjwYml29doIFB/3G00rHBQ4W/cVoRoledGfExY13\nCgqCu+spq07khsQXubx0b0xcO36nbQkfWVov+mClOzT5xXr5yVmivhvKnIY2\nJwcjia7nzcS0a+dNDy7EzX6+xReXLNNCp95r/4Jpa4/UwD9UWvsbW2rdNC8P\nUTdK\r\n=jKHn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC7wnfopNFlU0AT7lXqVBkggJKxdEcHMhPTEupbK75u6AiAqy0+cooBkBDQAyK85G4tBVOKJsQ3XWcPYkI9nj009iQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603282050-74c7502b.0_1603282189006_0.6142715299430304"},"_hasShrinkwrap":false},"2.24.1-next-1603282945-3adc73a0.0":{"name":"@xdn/prefetch","version":"2.24.1-next-1603282945-3adc73a0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1-next-1603282945-3adc73a0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.1-next-1603282945-3adc73a0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Mt9+y9WabzEUTBPFs6PtyfNVPKA3sj18+vGKtPsANnL5uOqB9Hu7EkKRKf6TTI8DjoILVMgVA/aikGupyv8TEQ==","shasum":"af9e19c072f5f0714bac84b7477b2d464444d584","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1-next-1603282945-3adc73a0.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkCiRCRA9TVsSAnZWagAARgIP/Rs4GJBZ5Ds9QBisKgEQ\noxttQTYVFv4oEfmAni5nyzgyo3GnRTlpL5WrYRMNvc4douk2dhhhbE/AU/GQ\nWlxrrnu+64p876udC2azi7oteMJ85PSN5Piqvg0UZ2u41h4zJCzzljW0nEAm\nBe/KmA6PWgbnFH31k/2iOazunOmTMJ8sOdT87BoFExoIOX/fq2fYn2tf1A0J\n+yyYmE4knXMfhuUH7tb6ImNmQDwKBuFPVeJjHTfP+Q26t29m5YkyEsuJaDRc\nRh92tLl2jTSxdR9PbNjihUMBhww0qYe3UN3O5uf9hcAq3zW//vE5RTY4+gjk\nl1hPQl5zgvgtCwxPj2d6jb/z7n3luxTkolWhu5oDCpj9ztuaTNktVBhhRXDG\nLCDPBRTCzgKtptUfGIIl+GH17NIx6YNMX3asntA/5xGtXEZV0Mhg7bxgSqDA\nBoYeo97IXZaNcjCISWRV5smQWS0wWZbN/ieSO/E+AbKxg+Cg+3C8uzUgZClN\nsTb45KknPoB1bZfN3COLODjx0KWYuZGDXg09P9Sa6YUA9gqTEnbAXTiVBaIo\nWoPNQAz4BOzIAnfHFujcsE+VFiUzVCXfHo/ph3xm2sZKJ05AXToKAeQvKsIG\nieaml9jTujUQQR1vcMssCKk8OhcLU1pXtszRoyKW9esVJzqHQg+pVFmDOo2a\nbwzg\r\n=dURt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlYPEInTE8k1fmuBVKB2kt2KShAaRXyqj4PTA5U3BZyAiEA19oZLUnq0T9JAz6TSZLgdIZz0/otKutoWbVSl0bAnAo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1-next-1603282945-3adc73a0.0_1603283088383_0.24750797537182945"},"_hasShrinkwrap":false},"2.24.2-next-1603283112-0f1ef146.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603283112-0f1ef146.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603283112-0f1ef146.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603283112-0f1ef146.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-obnoJeSUmvbz64JxzT3Alz9sShqfel7GwvdJw0xPcWXlMvMHEu4RbUf4rn4ZiglVrXLdDO74MW3ibY8zWdho/w==","shasum":"a8e86ae6e07f7cd24ff068a4a0600b7ced4bfede","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603283112-0f1ef146.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkCktCRA9TVsSAnZWagAAGbEP/1mQZMTu1QCbYrEt99cg\nA/kcbCX2LzgyABvp9bEv/J1DScHFhsQ6CTcmvph1o+5UxcCBi+kY4h24hzz/\np+qSYImvcy5UZlT3h3MHRXHh6XLjxiAN1cvuVvAF/cFUImr7rTgiHX1ZVnmB\n71+vN3Bc2bWW93/5J2LIkoRKBwFHruT7Kv/odsf35oQCONCsOViwU9RNvyDL\nOX31spgi92CbbycJnTWpDDwTlIyG9vml4YxERgoR+MzIJWJmZ3SEtd07RN7v\niBKvVzIfRSXI5b7fVvTKOjqfmvrk13lJZ4KXIvAat1Maa2ADmhU6BbQOIASA\nNpPY7KEQyZgdOlZPbqnM7LELFIql9A4zdNVsT/GEW1d5LSuWzlB3CepRnTDA\nZRJOuH3y2F2CMl42ffX6wVgIbKwE0pn/vJdYtE76KOrTkAoFIHbs0Ae0Nf7U\nC4C/wAoWzFFCE3Fq1F+evNpojMYJ8vrLDmmetoNwSne6ZoIFt4NqogcbwSqt\nayezOUBWJJGz7UiZQ8FqrfRz2EHALzbCspbfi9cfxpk+1XHHLtq5kDJa0KKp\nP1Q50DXtTjZI6xV3ELrmVakmbQmJyVPQcWEzXT/BSHNMPT1Jrm8sDxLfhw0k\nph85dGZYIf//tDH7kR8LkoRjL+iQRFA46MkGm2duJDEl4IbZHUX4BDomJWG8\n9GFA\r\n=i5x7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFvqLIBoh15EY/6F62x9WOnbCt1AyTSiFyuDMx13nLQEAiEA/yPgNd4cuIyPLd3OTWp43nfw5CIpVgFPLF4pAKy1NQs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603283112-0f1ef146.0_1603283244566_0.9963298542285093"},"_hasShrinkwrap":false},"2.24.1":{"name":"@xdn/prefetch","version":"2.24.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.24.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2WNRLZ/Rd9DqzCdxskFpXGzeK131gnHu5P3OUJ6jGWBqZSNIaAp/wpvEBNzHk3k35fkzyO9JE3fyYHK0nALXNQ==","shasum":"1d4f81ac03b63c0a6ff5450b09f517347ce0281a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.1.tgz","fileCount":58,"unpackedSize":135510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkCl4CRA9TVsSAnZWagAACe4P/2adGb6bB6Y7AaLIF57l\npic0kwleGvp6nUEtm6Ao39GeICfljek1a65IqOYZfcYoFhREyp1kaCFcec3q\nss0BRq7tY1qQfx8HPhfoOc1eoNWxijuqxQqLftNGGqdI7VgghqmvQkw3Mmyh\nuRhgEfh3qCxBSNs2Ow45W8Z787fL6E7o8kPgJuMsDS2qj8hoRFMnO/M+yb45\nltKs3XBh06e1GThlx6nKoF+9nFafG1py7ZUJTv2on2foMOSoeBdT9J8IcOS1\nuu6dxQQAYa+pLzJl/zlIALvPJH4lpu5YeQGQz05xcoRD76/R59Ww4FjqPzs1\nRYAvcNq25Mj2+/pS8xrCTfPIp1UCJSnm1utDjq0BHbWiA+Btp1V4SR9da3su\nkeM3BN+2w5jG0oI16faKdoJ+3MAFsH91M//KHAfP4XLhds5TV4QZWmcXuwJH\nE937iN8OKQvW74AJKOUe/cARNT3A47UOKVK76XVpuboyMjA6cCZ9Ce/SUiZV\neRW/jhCVa6wgGWhiMKaPSY6ZSh8ABDFOk5sDFCQu3C/m2yvAbL2z52gxF4/E\n4ZqYh4ETNIfKA8g+IgNX0c/kjogY6B4M+PZ/zJWfJDUe8vbKllpLnbEA1lw7\n1RO6A6CqUQkIhcecYzpwtP6Gy0eJdCM3/+i8keppooSvFh+DZEWfdvuYL+TD\nRWvE\r\n=qT+z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICuJyiN/01O3PKOI6akFbCB+D4wEqTWtvoUz40QpQneNAiBp1R7Xw7OlfOeEoXjpUsyiDfyfC8aXMgi9kEozPN1lsA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.1_1603283319608_0.9571361169502957"},"_hasShrinkwrap":false},"2.24.2-next-1603283329-28699d74.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603283329-28699d74.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603283329-28699d74.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603283329-28699d74.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gimICL/fduZuJYTiVFhBuhGUTcl76PZ1BP4cUFhkgds3fyksM6yXpM7QYbfREQIuTHYGW9to+ES67lxq1meJRQ==","shasum":"0c7acb4aac798e4e2ca5d4e09d534053429cbc4a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603283329-28699d74.0.tgz","fileCount":58,"unpackedSize":134607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkCoICRA9TVsSAnZWagAAEMcP/R4pBXgQ6wy5t9WHbrQT\n0750nek6Twm4ttS+3f8Wey5N94u999FEY2s4LuAQEJA2OpCvmHq1Oga7/khw\nCTQcFP9u4pVOtZc0Njc/uSc1QcgQiI6KvvW7DlWs6aBJoY+volqNozaBXeAH\nEdSogBFxBalLRFqoNajeTxGCnJPAUJuj2do85EVuouiV5bx7oSDbaxriKL/p\nXww5a7bwLR8MCK6500dQU4TLQ6Tak8yJPrB8d78IMAnbDoJl2E9xN5mrayxl\nrLdgTc4vjaXAmIRHJT+PSYGlND9UuPAv8DJLlL7kIe++wy5XO+vhpRs63e5Z\n/p0NmJolhnJ2M7jjgsPPp9DwBfGnSI55X471XKONAmIOI9vtwnhpgZc+Yk3e\n4X5cgkIV2vGuSOCEUJRMoS2Md20rggV5DuZO4pfvLJ7YC/P77zNXLgOQ/d+g\nK1B9l6Ko8cfOns+CbADPQpRicf37w54CUrEzFLLr1/Q10sd5cdWXoewbjHQ2\nF/jPOLSSd/EV6ZN+gMEd/5rKQPuYbhoHM+O38DUrhPK/QHr8Fx0GPEP8Mdwf\nUBC3ax08nNvCYCtCikZfIglq1SQ1lxstL5pWEFZpufTXKr1fhhOGcrcB7GPX\nAfu+vZXx2wctKiid6kN6Q4Wi+C+gcJk3bUNs6J9C7R6GtMMK4OuK5MwLsRSj\nXU+o\r\n=VOB6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAmAqcgIakRvnNif9jHveegw2mvqTRMQZdc2N1v7z7cyAiBvkxcFf+MfETxk4KfyNlSM9LDn6azBvwraml3rhyyExQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603283329-28699d74.0_1603283464127_0.9432382170132505"},"_hasShrinkwrap":false},"2.24.2-next-1603284038-b4c37cab.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603284038-b4c37cab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603284038-b4c37cab.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603284038-b4c37cab.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-X6HwOfp45fuypZosxSOphN4c2tzl3XOLMrTSiCBDCdviHJ+SkegP/4FHUey8o0If37rdmmaOEY0CB76XvaPjnQ==","shasum":"08f71036ebb6729071a203050106ff8d5d2c1f0f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603284038-b4c37cab.0.tgz","fileCount":58,"unpackedSize":134607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkCzVCRA9TVsSAnZWagAACCcP/RHjdPDMvFCzLS4LI+EY\nPye4h5r9ruI+I1CJ5KXGZYey4L0KDANIJz3OliOgNjZvdfQUXnCiT53qOfqg\nh6HxqkzQ8XXXX6oL4CXhlWaRJrYFYVEDY4WNzME36e3YE0An9WvuU4yAeqCS\nz+IejHo8XRTpHgQSM6hgNbelSgLBfFNOU+JCj+YEW9F6Pchd2C17FXG99KCx\nbEcpAgNGheDgiqNDUohpQm6AZkbf+JXNDmwsFv/LsWPi1DmUZPDFyAXluk7i\nPppwu30BrdGS8mL514gMXHFndFAdMbbUn/NUfIrZTonsjmYeD0q1MB5mF3C4\naSAFSc6PJf9eEcM3X7Py+ry+At0LLYroAIxUIcMBNGa9KLeKrsdNtpT9yM/f\nE7HJwrzJaNs95KZm00rbl9ca+zy2q/ExvyySdxQa13jtTCz8cDiQ2gnPijWy\ndV1oL7taqoSl0H+NilJfMvk+m8KxJzMIFuqGM5fpIKeXHB1eAtQmTgXaJEp/\nPj+V58pnfoxgGameJoEmfkbqBRen3mjmKkTtEbXUOdO+hxJLACv8DCtliTxY\nzr2pWbnRscGCwX9q7gjqH+d9D05O1leYCFk9gO99EKLKBB+8+eeoBo/UvcAR\nsVSBHJFr1RMAqWKyRMslvXLZYQK+JxY2wA61YOp+DbEpootwW7XVaX/xtjj5\nllO5\r\n=+Emt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDwS0L00UrfOORvH3Q9rSY6i6dJcvKAREvgCm6lJXewxAiATZlJk76F7DzRnppuTDqExYpdfMSlNcfO4lyb48kFk2A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603284038-b4c37cab.0_1603284180917_0.43659964484320746"},"_hasShrinkwrap":false},"2.24.2-next-1603284449-71333485.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603284449-71333485.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603284449-71333485.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603284449-71333485.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0oCNQCSmU9yOPa6GeEdpzGugQIrLm2yKV0ol8NNHGlRsuQQAXRlbCVZfMBIELJt0Nkd1vQa3SFtud2M4wCfkzg==","shasum":"733dffe70175fe3dc3e8864405d4d661fc697101","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603284449-71333485.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkC5oCRA9TVsSAnZWagAAiQ8P/0jRW2EXBCdzjx7FFMb/\nakbYma8IAId/6+xTI8Oyyyci0H8hhnwvicT9EtIYdIiOKSAMmOurfaMkLoDd\nkuWhGEqRoEmoeibpre6Ud+vmNyvAswyPcEmhBtlxm72nGnQ+hoTmhHWLEmCF\nBpMPvIO9EE7N7m69lfm+0YE14rzOo/Pg+muTIxyb/lr1KbZDHo83KfqeeUW5\nKzQbQAEKKOmZLuLwWjmSg12jUHO+hmwEaIFt/wllgpkaEijYnmpkuXC8eJ8l\nfyF+G+dedtQHxmoFZKDw/PUWq/kxCeAhJGZO2/mwt1c+4WPYLva21679ZPL7\ngTZ5K8tSV37xh4bKAAScUbEvjByh2lB2zFSNpDQzEcG/RJAFWQh+qXJiepHF\nhyuyJmZcLXNk+2266JB5VWTZ94oMF96U+cbaK2vBVIeMv/iarIrFSjErpQkj\nanpP0a9EVj9DO/p9q4W6IvVwJReckhxaYFy2CuyMFeyBe49FwEjBByYCnhh9\ntVG2hw8JZHns9hdRwnwG9e+++Qey9CjCWCXa46633u73AleqZKGEvyzD0cKc\nDJ5TEDpYjpQrJY1ji6fRQqV1qS0Myzrod9hAEfCUnz006EfkHPKFSxA6b9gv\ngixFM5fz5GbNIBI8rDCHeF7O7UJAUVeRzcWHGK4C6H1NrMSTYgWygs9bwsYH\nsueP\r\n=dvNO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDf02+noQRjZc8NHsllTG0BCzEJeOxYKkqrfzy/QQJ5dAIhAL7MIC88oRlOG8lcZebOEy9BNTmaWvXE+il35sd/BJSg"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603284449-71333485.0_1603284583614_0.8077343003193436"},"_hasShrinkwrap":false},"2.24.2-next-1603286057-71333485.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603286057-71333485.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603286057-71333485.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603286057-71333485.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-awyHVwzOAyJf0dwWGomQdxQ2S8Eo72r65WpDi6JgPntDNL400U67RmqYBkR+3shIq6P3C1DAS5DWlr7MjqatQA==","shasum":"bff1900a0bd7f6d9102c1a4af6a43e5eabd98668","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603286057-71333485.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkDS2CRA9TVsSAnZWagAANhsP/jt83MtjnXGEQK7zs7Ld\nwAywmjLgUtlwSCCYlnb6nO0tm1m2YZE9/TnH1YQuP32Zr3OURVNnntAkaz3p\ndr1cPZeerFTVkFqlcY7XIdCIWbc5rrOz+LQTl9cf2vd6TLD6I7/9XOzq1dmz\ny8arzJiPosfzimDZuPCBujJTh/W3q2fvNtgMRC7DKpbg00wvFsCuiIF6iOSC\nuGoFlVrmAEn8xE2l71Chl0Taqtw3VL3/rY0oSqH5ruto9+byJO32zJp8WBhW\nccuVne1u1YUPeZLZNWY2zfqQAyGp9vXnE1nipJNrQn4v8ORQHx5uZlgstiyK\nOKhCacPua3XFy2iEecDWwt8Z9TfElvJmK+TZUjtSg/PMBlLEwWV2pXiB/la2\nHzG+9MM4zaikbBc+gdisbI16Rt6dNeSmglFaV/46Kp/StKNvcvkRvbBdFbtk\nKqFqc/VtdwAzXlT3brAYPKzgNjW+Ht42rpzHzxlDI/Cn8AfffGu3JD2vqMDN\nkfa1blgSX9Izn5ARYKORowZq91MZPVKfF6u5be+zYrJ/omXLMkTJlDY+ZkN/\nLd3ASE7C0TcXjlvA5zfleQdwZiY65arrP2S13nSGxbCQJ8FiXz33tq3Jkq9m\nSb1/tLmDTDFUxNiUnWxkkWx2GkHkpy1r8gRA2sNtxPRVvCjsESjThs9YPMZk\nCDRL\r\n=Uzue\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrMVJrmmhIV6mfDiMAZRfVvPPDJz/D7+8R3JsuYrNAPwIgQaLAKHp+oD37mmGjVPMBxJPUShXUiZNoCtGwy7CW8PQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603286057-71333485.0_1603286197414_0.13089271171100458"},"_hasShrinkwrap":false},"2.24.2-next-1603287393-4254c3b0.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603287393-4254c3b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603287393-4254c3b0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603287393-4254c3b0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-n3mxgQHG9TqKfaHRefQQwYCNK0BYDsr0CokiSJxlkmUARAEgQtLelfYYTWMAYKz5ObjbUDI1H9h8c04duJXetg==","shasum":"c8c309ba73144a4081361cb586ab2795efd674c7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603287393-4254c3b0.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkDnxCRA9TVsSAnZWagAAKaAP/A/SGUHnvtxqDBQmz2eD\n7UK5L8otsTTe0/sJYhshc1fi1gxLXD4VYe55IqlhDPdtleP9CGd5r4oiRCkw\nAKC6eapsvpPimiN5JOHvnIIuybKM1S/PMsaEI31pt018ZD+CajF00wZ0odKg\nfP7CU/kRu9c1xllaM+VUuX00o9YB2sw9TX9NIjXkxECAcFurK3ixUVUMbQbF\nn6N+3aeQU8ZXImZDSMKx/UD9+Lm7N2UctTox7Rvo9Mv+MjKDUwTEXx+Iasyk\neDE1PWKO5GUb6VTv07Ai0mZF7CWdwcSl2IJe++EfLpk1MPj2jB35j2mHg4AQ\n9uitnxw5vsZbT7FU+XmpleDjtg5BaYtHJc7ykXPQk/Mimn5Pcv1I2llftWva\nYYeEEpa30yCqp+JNhI2DqtzmChcgpjFyxQxVlZyNyGJ5jbBH0YMmY18dej0x\n9G9Tnsck7+tDl9UVqSnQCI/k8vipVuBUsiRaneFn9wxIuzp8YXGyCNI9JyGp\ndVWr3lTOPhA5aNy0LNFKrRfywXOZDequ0Moj7M9tdC9axXdOuHb4GYV4kKCo\nqIQfit5dgkY6tonAigGtt7OHGQKBqe2nZSXChr/i/jj4UfqkX4VSKknbRwKl\ne850Nbd0QYKzc8u5QR684kop4xRkG/28N60JIOeIdafZFeo9ZEqOzTJbWUOL\nysei\r\n=Hk3l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFphficYCQJ22XYGesHyrNrHDdyNzgSd1lur7DkNPlowAiEAoxzB9YvmPiu0CWhnDdtHVEYs9+YPPJ9qg9XGjYoSsyE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603287393-4254c3b0.0_1603287536722_0.572151881470657"},"_hasShrinkwrap":false},"2.24.2-next-1603287503-71333485.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603287503-71333485.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603287503-71333485.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603287503-71333485.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gEVsMwPZjHU93JQFqtLecyDdmuVUnByJod3E+c6mJCr/qRUF15xB9Mm4Ly7MkUKt28gqtZ4m7uHNecbuMNN83w==","shasum":"7ab537ec4026edd53fc1a4839b347bdd30f8d5d1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603287503-71333485.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkDpSCRA9TVsSAnZWagAAFLcP/iLDp8HWPDtWRcen1gnu\nsHBw5JgMz7avt+us0vJcL5VXtbDEduLpcEPk/wNn1eiCfpjkTl3JClEDKb7d\nLHbJ1nhbymn+lhPmMt3wdkGkNiqPEQjmObVfiGSRR8Byy0Lf1sJoCZj6IGm/\nnYUbOctMRz7VTrhOCL9WBH8I5EP8MSwlsf53t2IgBv37er/pGjMnoJpJmrb6\ni9CyqQspDQF/3ntMHB52WWnAeMgypOTMxYSKxDuku9aYk4mjapE5KzQt39FF\nzDSzEvTETbzjgVyLpwAdWCcNeSIHZcTYgd+DCUWFu/ctse1e9R+LpfPQHYpC\nLcaylpdkRVoq0o5OKN1emsOq9K3FVGGE7P9YtbdibfpY9zdJXjFpd8A3YGfI\n09N/FVO18MIcwYZIhEV+JhvyN4GU0X4DGIZbU+OVJ/SEjwBI0qUXRrGMlUD+\nfumGENsCvbfVmWZVVJuadViAXj8D3EWCYe/ccJp5kiYtFjIFUQkU8RbOCxkg\n+5ikQVKp6K44epp7tAZ232pIcVd4/cKewvofFbdvTssOn/D8kKHvoHuf1CyS\nCS320uxjUrbgRPlB/JagPzYVLSik06FWqOWnOfjTlPQWIEWptoSzJN2JTyox\ntPwLu83ygss/IXw7ddDsGO9ZwopRLJeTMB/gvCmeMY6szQv3ipzmXkQEe69t\ne5sI\r\n=hJZF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFJPUnQLAH12Ezw1ilTEMdF8axGVl4b3zzEFcoDyyqp7AiEAoaM6dKSPr7nmZWAxVRaUxtzKcwx2Mhd1IXQfm84QA6I="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603287503-71333485.0_1603287634170_0.7500157554748577"},"_hasShrinkwrap":false},"2.24.2-next-1603289969-31b650db.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603289969-31b650db.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603289969-31b650db.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603289969-31b650db.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FUu3lx2yL5uZtF049KM7vGxEF9UwAroxZNeZK2pxSA1UK5ldTbvruQXCw23pFvvGzut7T2jbWpyh5xFNprgDmg==","shasum":"1c6dd38b0eaa82fac302f9178f1c0dd8355dba8e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603289969-31b650db.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkEQBCRA9TVsSAnZWagAALhUP/Ra93lAca8g+3s8j/6oG\nf4JOYEnberFPV3Hou8rmTQkoXsHU030SlpmdgfHF31tF2X8TL2dyEG4rrnfF\nngNx4kunf6+6X48V+DOicEA99MYpy2RKKTi/tejh0RJ1h2RxRbiLY6fS4QIi\nvkJTKlAL4vaX5VvFT18Jw57sYNYwm0pPE3BfCwrE2yoouDHYt2y7VhBHs0w/\nOoG7PDqGCXtaV8nrrnKlHJo4ojU57NINPL/dHsf5598m3mCWHRuc7Lg8rE/3\ngIl0uujiA5zrt/sWw9Awj1vIeHgtO4kRlsznXEFO6hl+yByaeXiEDobSo45Y\nbLuy/VpV9XauaXpy78GMYNVnhsv4bqeiyQh0EylhPFy/8YJKtd9XQ9dkIdsm\nG8kC4Rk/Dci+oOLc54Eu/Oy46qUnudPbPC8Rahp/38+rc+YKRx5fCFZq904V\nxWLw1KfwNd5UkoTUo1PIosN7XXj9H9OZXw6PeuSD+LnMHqZOFX3NS2IaFtBY\nIyehHubLzBOQp8W4RgvdtIamYaDcnx1sDpxzhdAIXPhrxn+9UQtZW6XlBnJ+\n4JBRWUHn1+CERUJzmlE6xun7LbhxUB7IttgInp0vIAuDMlJTIey5TUIvFM2p\nCuLJQlAvUC6DgXTntYMEGxAfUZunn3Vdu9XOTjtp3YWXkOv0Jtn92M8P44Yt\n2wTW\r\n=yl6+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIByV2qG99o3XC0D4s0gHFi/fq8RqzoXqAjUp/24YAsugAiEAijembtNXbCDmM74PwYqy/iyHgNZ3YFp41yv+dt1jqTU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603289969-31b650db.0_1603290112534_0.5698510019982947"},"_hasShrinkwrap":false},"2.24.2-next-1603290728-31b650db.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603290728-31b650db.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603290728-31b650db.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603290728-31b650db.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bwJueMue5R1nZto0TEaZnJX9iVCsSf+9N321nEHqdtLw+OewkafxmQH5zX9NdBhwlWBtNdWz9HTJ97s24ehmzg==","shasum":"33909ffb84dabc1b5275fb0698faedcd27d247d5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603290728-31b650db.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkEbvCRA9TVsSAnZWagAAgMoP/2BGcQqTSwvwJdeITTSL\nROAO0JdE+kx3OZqZ3Tu/M9Fn0umC7iH6yEiBc7jHG8jyPg/guKj6xIz09KHt\na8cY04PanXzQ+3iVZZWmXIswvLJQo2GJGUDhXFfWfxMRb3I1rH+NTy+ZRYaB\n0w3Rj8bUkhrfRAlV2jPf3f4y2AkJyNNgMInZKWqxnoiQuRcLDvZPhdM86PHd\nfl8M55JZgfC7puVWq37z3FpCirAfupdegBmZ5+arHwHyy6ld8GxZV+a3dDQJ\nRYwgrU3TnMi3ikqpR3y+JQf2N2FxjefGyuxCy5B2L+Pao+klqdI2WtAbWd9v\nYEQU5ANGshaCA8BK3QoBEMX2/t9IEE7HEeXrDFnhW6KlWEpu50079Bm9VQ5q\nsib1xzGAQ/m46o9Vior4mo6E4jfnBdGth3EzSQDrNTuQd1mOzCE9UM6LELVs\nln/ZDN1ZGR00hpDjY4hOxO9h4KwJP3maw7b9eaBga0Lr55yv26SKYy0yAxct\n7JY9qK65mgS05t22he+Rl+PIWTePAcipO9gp6CzfIz5wujLcjEpzyESTCM4I\nDTSkSwWVToRyarskYqRTaInIYnfkptviSUXymQ3NCw+V07wACsVSD/ARhnIt\nYFzKs+YAnrbzAy0y82qvZWfkD0rI8O9nuTE+iXquvSTkwqk5HMoe1Jp1bViW\n7/Ja\r\n=MfpW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzhIyGpmsd49ER54sDuZK6RIGXhUlP0BoBn+p+9u7I2QIhANCMy88IPGbjvq8jfRSMBT0vyNNcRACOkklSkJ5uPuul"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603290728-31b650db.0_1603290863355_0.9766606029651561"},"_hasShrinkwrap":false},"2.24.2-next-1603295610-dc4c4f7f.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603295610-dc4c4f7f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603295610-dc4c4f7f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603295610-dc4c4f7f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M/llQ+r46vixEX1+gdKZCGp5M7d+vAgwl6KywSyFw7BpirNKyGwncaxYNsfaVD6tpYWmdtcByUguLd/OnQzGKg==","shasum":"c7b690739b622096e5491a1c40a56d396e8fc6c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603295610-dc4c4f7f.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkFoKCRA9TVsSAnZWagAAJtEP/2ALyresQIPXYH/cTMH/\n9f4fBd8tblYiCcmSPtDyPhHJbsSjb9TPeDzS0Z1Npf3sKRnzmNrE4dk1Uvfm\nDo9XjrdkIz2UlW55MnpAA0M34PIwv4tje/zSdlksxTnWb0GFVrXmcdEp965W\n2qN/rnxbdS1MuXduOdUNsjudUva2+u+xFHCKF0yTuutwBr1e6JGvigryeGRD\nD7FKm0g5j6DwoDk66gc9r9VtMziTlq8h/Ri+biaP3oiwExzkbc0JaISPvah9\nfitJjumU2wuBVbPr1/VLuE7mzaywpxGUE28Cv2fxEm8gmf2oV/uTaMdgT3iR\naz1A1/MXY61dZ4hna34Im61WnxeEwheWNg+oI7PFmnc0yoPa6bOKeTPxV4T6\nzfaacLWwSeRlW2rNFZ4D68s//iJB7p1E/ninaX/0BD9yIa/zGzCf5PYXbdTP\nXhWfV+9buVRUua9gXH52QNnfWcrABb3kWUwTAm6KIkX+3TMu5LvlHGBAdxS3\nHKg+o5z+8lWJ/NFVcD2DhVwppwq3OrrA8RhXHxq07DK1jnxdSTlG8sdPhs8c\nCbb9GWtOH+cY7bLCJ8zld3vyaM98FOBoOWwzZFdVBvZncIOX53dUGh8F6ZSX\nsQ3Xdf5Mzedslcj+ndZa31HVjogA7gunxC+WV4/272RnQL7dp/a/wm4/bhRv\nPA01\r\n=zVLh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGG0Zsx77UpAgwNTVjtZodOY+BtrlDsTsvmAq8zN0h/QIgCI7zC/ln0HZNW2i97w9isBo+E0K/eMGecMgUyXN3uuY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603295610-dc4c4f7f.0_1603295754375_0.7005044008449779"},"_hasShrinkwrap":false},"2.24.2-next-1603296038-7e80c90d.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603296038-7e80c90d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603296038-7e80c90d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603296038-7e80c90d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Du6T09pRKv32P83cE8yPisOLhwjVbaQkuLxIGMtKILYZcmkEV5hOEb1mwH7biSJd0YMYSsaOxRaOB89LrtLNHQ==","shasum":"b0c6821cbb6bc7f83af2570789303ca9f61e8db6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603296038-7e80c90d.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkFu2CRA9TVsSAnZWagAAc50P/2Nhqd3edt+u3coj0PAT\nEZat8Dl18BUzq0z4zCTSad6VDQvH0GxpB5m+RualJAjC+rHchwBkwN2/KE8V\nGinJSFZ3RXx6j4NJ0spY1+LfCtPnGiUtV4EAPFJHoMH+o4sJgrMDvTD+0td8\nlOdTjKGIlHUulcKjEKcnN8mtQqywsE0Pstb3F1O/vLVXuzy1i8hNi1Zwerha\nPrsDURENq6+HyZE0v0HX/uBz0FVRXS9sJ0nswLS3JjcxkDfgVxWCz6xqft5k\nzIMX+y4jdiLDjokwFRFFmC8cmY6P5Cu0oHPToKvUch0+r5OEefUmBPUkq8gw\n4MKljwP175yZi6tbLJ1ri1hUm/YZ+IzVPnGAIHaOIG68KUZ8rWKvqnUdpC38\n9KwurPko/xH2ad0cd7K2nZqkxqnzZqqoKSzDWrXYFXEtpW3UtskAgU8VHQLp\nOTtLgWG1LWzUVw3BCrUH7OEPrFJbUlRNC52jUhanTIlbGmAs+okSSAI0KlLe\nfbgzctXcs6wQtEToFOehWA54AJSvsTt3aHe8+iNrFdbMef3xkvl35g0QKoRp\nLjNe4/eEDH97GM1oHMKunFbHRihXwy4qWmPMjg/sepZCrj/cM4QxGEfPZQH0\njEcN4jwKAruHp80Ue1t1AZg9iAGsBl/lHSiAuQA+qNWymI8or2y4TKy9qPNv\nM3SV\r\n=nsD3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH/G2MOtCOAj0DLw2MhzRBogp2iBIS5vNbAMWAzGEIwdAiEAwIsJfeYvUJjNqbyUzz7YlzykO5dGBAsVmFic2dqC3fQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603296038-7e80c90d.0_1603296182509_0.7810312017987007"},"_hasShrinkwrap":false},"2.24.2-next-1603359410-15ef4c7d.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603359410-15ef4c7d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603359410-15ef4c7d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603359410-15ef4c7d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+ZWx2no5uLLDTRsPtFU4hksKlxyZWSdoCrcGCwgsW7T4NYmAyXcaSd0V04jgn8bTnqd9ZRu1zxT6R6bX1wsD1g==","shasum":"4f80b2773b351f2f35cd9b38352b64cd24f3b790","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603359410-15ef4c7d.0.tgz","fileCount":58,"unpackedSize":135667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkVM1CRA9TVsSAnZWagAAnREQAKHRNINgbYszQnjVdOFj\nZEB1q0C2VeYSGqD6rOCzVJk4V1hn+yJWy6ZdYaxr0h6shwv9O5602F3eQMxY\nPSjSxbV6HViwVjIVUYmXLDlNInGeukc4XfQO7KlEDFAydwi8Me4fUJjhBV8N\n+t+sE3j2nFROZEtsY0zsDgJfPakY2DZNNBlHBx82Bt1id/rTg3WauX8YnU9l\noOM7jB+LZPZzZmDoz40+JdGWPxzmbxFbMdkW/qjUauds6bOKsQVxzlVk2+to\n/RT91HNDNel4fbjdtAIgx6p3hOwzEqMtpJBnlJuux79CQrMOmQ6FjDOBEqXd\ngqgfysg41ntzMLRF21zMG3M9LIyt/UuqzYQryhAI8Xt/+yO2eSte8Zzyu9Ky\niH6UBwzY8LhUXMmuovTM1rMEhbPLAnolj3oZmq9ymyeZBBL2XAdrGBO6FPwT\n8GEDJzk1BgO8qjF+9a2qYEIG6ArghJTMB7Tj4+cQ8P2OZQis+vbVE3lGFWwk\nIVpWpPfmWOcaOqdKcDGhoNIE+YvJwT1i9a0WCN6Lx/1pFlk4KZyVx6lxDaWp\nEgLDBAvp0ia39e2YI6EzQUjeLOETdZ+dv0XPxxv7bxV8XAhin/d8MvaWAT8L\n09ZvqKW8wURKlNUb2Qp5E463Fk+28IrcfVOFz7wLmaVGu0svC21osnuZfyvQ\n43DT\r\n=OvwF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZYE4sTQsJqgwFe9NuRU1Nk4vzwCK856C5TPfAufpWjwIgF/Yetz7fImg06M5k8igOo0qZx3rOyYmsxcFzhU7UJ8o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603359410-15ef4c7d.0_1603359540207_0.45003655448914803"},"_hasShrinkwrap":false},"2.24.2-next-1603360478-5d6af2c3.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603360478-5d6af2c3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603360478-5d6af2c3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603360478-5d6af2c3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-86WXXGZaoAJw3lMn+J6ENqOtFu4mCE//Y8wi1KDGTafHfmv0JUQXYrg+2kOE4hyOMz6ubR0KVj5lUVZqLQCO5A==","shasum":"7ac40794221b8d3f56d50f2d09fb6f258b78f599","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603360478-5d6af2c3.0.tgz","fileCount":58,"unpackedSize":135667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkVdtCRA9TVsSAnZWagAAG9AP/0PtfnvUnsxWdTrIFk13\npF6tT+/3r+tedrXaw7pWVI6x61i7mnipj0oz2R+PJRrCQzYMMl7SHkkcx4y3\njoje0D/nCRQPRf41iYzP9KfBDx8FJlzaJCWJoSzUqA3KNpNRpPJJTeRB+XEE\nCN7nBJLtrC7plhBFIT+qbClPqJ9/Ukr3YJQsvw+bL/jfWvfjBUQoOxIrkBIa\nHw0RycKMXW8jzNnQFzoiqHWmhxP9Ah9uLKZHrthUjHNm0g5oAJ1006BEmmzy\nwaP3rLgCzKITOOhq9VsYbYvHbMRA9Cu9q2Csj+2XoGBrBp9ryoWM41RikYsQ\neOhjs8MjbsX5+GIxN5WWCW3pNhF4bIjDo2mFw3JBjR+GLD0LG2HMXX2/5bqT\ntgAZ2SHImwSOMoT+97Eav9I8kyU5IxIz84lhZoAbRGL0SltkN7eb5wnxRJCa\nE8VoSUgfPcT9NNh8Vc0VLfMdDAwwiIsFSMTeEIJWtu5BSUlwID6dfCU664xJ\nUlzPL73xz0NLSGWE51XM8zTwtvBA06K7MADM+JR7y9mf5oDAz0E8en+ODp9U\njdH70CwhBljFgWt3O2CdCA6T6yfbo8Yk8N1OA9Sx+ijJAgNgvyDB/U6NzKlL\nL9cWZnEfnYf/mdBdnaUcoIKbGOJ0mL0WNYeKZZvpLuuKFc39ij6dl/Mz7BYU\nKWUE\r\n=nd1F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA5L1rzxrL3lj0QKBYEWrz9CdSnavJdnR5op3EwTno4VAiEA/Qq4z5cuJgOOe9b8jRbFTsFkOBBvvOk4zY4RZ+SopHY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603360478-5d6af2c3.0_1603360621403_0.2091807694396295"},"_hasShrinkwrap":false},"2.24.2-next-1603360660-e02a39f1.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603360660-e02a39f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603360660-e02a39f1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603360660-e02a39f1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-z201mW6ae6u+MawecD0xfnKlDLNVvMhDsm5IlAOiX0ezm5Np5/JFkOcA8zpdF9pkLVyHyzPBwY9lUzZNdN+RGg==","shasum":"6f69661f9a2fdb79cf65b07f39cd7774e7c099f8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603360660-e02a39f1.0.tgz","fileCount":58,"unpackedSize":135667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkVgWCRA9TVsSAnZWagAAlB8P/ROvF/n52VqWkwBZ09BC\nNZW0cAnZh8siyeGWtUfJ/lZq6csm6cwQvqX9PDq6kxNb/a7wYUwx4dlaShKf\nSzT3LDq+v1Fab5oe3GSdFoqO5N4OQCc2fC4joV3q2ZFmrD9cZnDJ13KRZt4k\nPvK6ZUiHY/YLw+UGDeSM0oM7Jl/Abx0TXdhLPqg+3cY7CNx96X0urUdNZ2p0\nt3SOEjOjmHqE6s3kwwVCdytGlZxtZIb0BLcmy+l3d4BFCtgqU8CiMq62kgLR\nWlVJAnzevJnhZGNQxdoBCl1uaHLl8GiZFu5+fwvN9VIM2em/2TPSNbUKBsUN\nMEHkJ1bBzDXnka39YjsgWet6cMM7kxC8Jnvb2Y6Qy+C562Kh03PiIMqunmFO\nawC5/e95ecXlzaY4CwbU4w6PDXcDvrUmT1c03AhkydGDJi8tvIo4CIk36mqt\nXQhvX8nOGkAy8sQNyxm87fy/jywkgU+5IZkd+PJ6wZYP4FzLqfVq9VXeXai/\nuM26hk7ZjADZvraH7655fO2l7QKCVjUNCMxgaETh8RswDU1l9yMC0ABAOtqy\nsdRR//mU7QemE0vOIyeXxhnlmt13lMCXndOOh1sLmRYfQJxyJDmUcu9OK1Vg\nOtsY6nHzlidlgBC9ieSm7zlQzECgyW2bsmLFIUYEg4+xDygBngkKfj4C0bJl\nO7AW\r\n=03dn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEq3zjYly4AD5AP6K4nE59LzXsBUQ6k52TLfneHybaXIAiEAtHJd17hGapHRLnsZz0IpFiPmvCrNn43O7Ft4L1ztxWE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603360660-e02a39f1.0_1603360789509_0.7512556411934048"},"_hasShrinkwrap":false},"2.24.2-next-1603360783-7bbaa571.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603360783-7bbaa571.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603360783-7bbaa571.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603360783-7bbaa571.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kHU/ENXvxlG7TOQ5QMM7wzntibWRhMepm7U8Am/px5wBRBdrSFpz+YTm1LHLdQfW7BqEsOAig+oa2acYKlYZug==","shasum":"f04363c7544ec5ca0f262a416d5c6178af986151","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603360783-7bbaa571.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkViKCRA9TVsSAnZWagAAhE0P/1OxCvpXJcq2eIYsxu97\nic8QxEZvxclWpM7wea+zZg9qp6o+Y4hJVLPJl6Vs2TytLlXn9JnxucQZXjzH\naBUZMhl7svFj9c5LboEPsgHhaZ0NNErnfJOmzwbMh+lJmZZ+8xvH97/FIchJ\noyMnsbkG+3UlwTG0f/p/GnXHN4wAJLynXIOGhwwmaSVBiZ4yLZO0r+6yU3DO\n0O+vQoSCu9qvrAGA6BKxr2J6E2S31rvmjEuymuODXL0ItHezgGCKYYcHIMgV\nOf12wRKkD1jVobR2fpG2r2B8u/hLQX49whTuUXi2OBHjmO1Jys3+oSlbnA37\nr6AoKBUmj5dG8yj8ZsUvKpW1YzEusbzh0kYRfR/+EJY+UVm38xSSQW+y9B56\n72ZvedMqh6sSMm/Z783QYolLw0PXMB2P8xYYKCYyXGQvNmez4Lb7bSQ67OXI\nInSsHgrssrKKKDRNa5rNi33VZ8Ws391hbqEv1rIAK173eylJYm3vJ0uG0QWZ\nxZf3DVfoiZJfhRfQF08Cw7ILMeZm8tq80TUglFmgk/qYdNajCr5bh4LyAxF/\nX54eu68qDGfcuaCE3FDRZPviprC8/7xIr2QXIKkC1BI4L6Sl+uAL2ZtNl1TY\nglQNzLgyA0K3Z4AE3M/e1aYxxrTq1Fj8PYtWln90KpqmU9cPtbNpKmbox4se\nm0vL\r\n=L+R3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3FYzq51b5rBoF4O9W8FAKYvDuq9d7RZoon4j0q6PVNAIhANdw2/G+JPGz0nLuj1ungDlg2cqZgMpj7Vhm47mEy808"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603360783-7bbaa571.0_1603360905597_0.39719861988948457"},"_hasShrinkwrap":false},"2.24.2-next-1603364436-7bbaa571.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603364436-7bbaa571.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603364436-7bbaa571.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603364436-7bbaa571.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QAxy0rcBs1kZrqYHYaFfYEqV9LgdMILnGLZR7x14X1W9x9AqlfiuWlLjVqGwXwl5Joj5KYsSV1n2hDto/jvmZw==","shasum":"b18f70bfeaedafde71fb12223969ebac27d03b57","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603364436-7bbaa571.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkWbNCRA9TVsSAnZWagAAwhoP/14fO+Yp6s6h8eqfkF3A\nMrV6OPk0YJ23ifK0Dq3PwmfKCqEhBD9yVYA9q1xmqNqMolqRh2vUZBLDExwK\nG7zK3xPdF0ZGpXJQB7gRmQckcN4413zfJuWsLHhmjK1CYAkDgKOTb1AwtpUT\nrcAFi9b/F4ezxKs159fnGc57gtLEQD5raSuETtxWJGFQO+icpbX8nMFvCWi9\n3tomR8nqSiFMY25EIwQjQiuQpdgNF9d9V307hG9qiGU2jsZgFFt/Z85DugBb\nc/Myz7q1xPc7CkHFFhfZzUjGjtR8+V5hYdSvxejO4RpJ4G/lZ/6T5t9yb7UB\nZ/teANqvT8pl+9v+heRM5G6t7wCakwRcE/xd250dkCXFlnwF5GYQnnFbVA5U\n6tUTaoLWzOEgt+MDkME8EPLLm5llCORCfc/yDctBVfx/zlnzJAD8g+0QrifN\ng1w88g2ngfCw6s6/HTKJlyHDT5PQcqfbAZH0BTNF7jF+LGCFRq7Xer3fgoRp\n4ogoTwHan8g5jiKsCcgWVqqSDaeA4Ueu6xLKaUX+I8K8j8Q8rYOFSVP+e5Dx\nBFpLeQX/xaHpqEsi7+oiWbXt2sTnzlsm/kDYzXIml7uk2uZo6VWO70FBtm1j\nyNDw8F1rah0pQ/RneFMrgi7L/+FOv2ugdz2Oj2THOnNEHy5QtAMahUlwsYrG\nYD8q\r\n=G9s9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCO2j+du1h2mtVPXWG2L1x3L9gc7l+u55sXWlk38IpWwwIgWE+ODyR1w+n+EfAmeqqEPm0rIUJHTwcJ0TdvW3k2Io4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603364436-7bbaa571.0_1603364556677_0.7488652319462799"},"_hasShrinkwrap":false},"2.24.2-next-1603365548-7bbaa571.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603365548-7bbaa571.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603365548-7bbaa571.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603365548-7bbaa571.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NtYNf3Ot60wYO6cQHuyI94kPmGBP3q08yoGxwBLSlSzx7OB4INSVgHYvNRntW6j6rWDgPfOi+VcMgGc86MersQ==","shasum":"91f6da77f2717f7c2c898690d20ce98b49104019","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603365548-7bbaa571.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkWswCRA9TVsSAnZWagAA/GkQAI6O9+2vIhXHzdayjNQp\nRwN/Z+arFtXnqaTwHHe2LiaTgSPpjtMOOigRlLOdpFGix1G7nHDeLhW/MQTk\nwECloXCLjfguF4NwZqA8X6G8pAomQtRmSXtOBXN2LVDkQ4GShnap7KGBf2Pz\nej92JcnmtzYWlRa136Lf9uBp8bBm5RS10KJXuBO1wypuKABZbjtvndxNaSrD\ns2xcP+AP7Bq+yY3xA13Kba3fcCnLOdZGsG/pAA5BAcItQrgD+UES/JeXW2tK\nLe8agJCPG/l67eeSP9mHzH7ixBuNQQWGrXAC3vwjLsXVwZs0j/rCLWO4rnt/\nw6rCBnIkTOLifLt7Y5WNQad+yuvWB1FwuNY8lD1WC0nK3X0LYlJUuk4XSZ2d\nN6qdCQTwUAcJ9zwxVmcqpOYW59R+dOPZ4fYroJZOZw6hvOO7sVUj+shT+jsI\nTGRwe/mmKhRMunRe35wZHpjLQFaD8XqEStfbantFcnKzJnXeNwryHFfR9EfB\ndTJCP9xW7haWCh8htNmrSAjksRsiO/D7dA+mAvK4f5Ewhny1/7p3+nVKU6t0\nbrk+ApnvkvZwwNXv0TVGB2ISY9QI+5/80VQGe/59nhbuXsunstLd9iPpor11\nVGE+eI0VHlCjWsO1c0yM5lvPlPLTKX2RgBhdGMR9jkdPC1UyrbkwjC2wYjjb\n46Si\r\n=oXUx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBQ5IYNty7REbiBNzB/TWR9/TmRg/3x7TXeRhDmJrhJZAiBKCPMW1Gwn1qcEyT43G9wobBqFBVghq+5NZ9RDx2sb3g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603365548-7bbaa571.0_1603365680033_0.36628028375830546"},"_hasShrinkwrap":false},"2.24.2-next-1603366373-f9d8b020.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603366373-f9d8b020.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603366373-f9d8b020.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603366373-f9d8b020.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UyJ9XdjbTqZ0173SeZZEEYua220PmSuMoRJN/EelxY9somhm0ZnpI9qo/RxYZFM04kkjJz6ybOjFA1Ixp/SP4Q==","shasum":"ec744bb652c45ebf78883a640d05518df0c9a3c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603366373-f9d8b020.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkW5oCRA9TVsSAnZWagAAOEQP/3F37eCyREPEvIN1Nrlc\nNVAHnBYo2DOlDEfW3x4xcYJyW5z1QWJpL0IQixZvUfsR3kOEW+ooh/8lxmRa\nxnrvSOkmrkclAO/kkDPBSXA3TluhL5ZbcsWPFlLDWnJLHfI78+KrJoZ9qwnd\nHYMFsqJtTdIKsOu0OxRX7pm/a7pcMRPtYI20hXIAPmlytVI+QwCQWmRpmsHQ\nWovhmTl2mt+pJIH3SSIvs3lrSr8kk1RJ835KEoEy/0SC+/2y2qrXVuSd+4Wq\nAyrY9m3dI9REFBEINGnRqpxGIVEFqdl60arFIoXDt0vgsKGrDP57x24Ia13r\ntVPFL14pKr3J+SnE1VcL0j+ot+vzPiw8p6Gz3/PFu7z6EVUjptiB/zBIRUK9\nCDaVIlWGVrbb0DI0IvqZXXp+72C3JaiFkhuCjOZSxM3nEfBEPK5Ct/F2xUob\nYwT+XHs6p8FQbqMsM9Zn3R8dONzt8qM8uqpXyd+ElimLvKOyNc9K1fBN5fn+\nKX/jJuHlusndfokLRBH1Qqhjziv/Q/ddzl437yntzQpZL/hNeag3hN2Yyv4+\n3/EDBTdL5i3aFEBPXS0HpjjGdrBrs7y+atdiRz+mYBUQufGDV5hDJfWwFt/g\nzUC7pf2mfp+BvsfgZ1wyWkkjZ0dib1AAbAKlauWJaIOjK2dw8gNLAsUSjT6z\nl+R1\r\n=KfV6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDVBa8Rh4Wrni24qSttylXYOgnBTOFupPdees6+fCH7wIhAJhDVoGzWz+39p1ynyR2h5yjnEhQxYVG9A1yFW8jqx3z"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603366373-f9d8b020.0_1603366504070_0.37706691608324516"},"_hasShrinkwrap":false},"2.24.2-next-1603366564-ac9acdb8.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603366564-ac9acdb8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603366564-ac9acdb8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603366564-ac9acdb8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IngUNBYwiQxM7Gy25Mzux3up7L0ZJDq8j7Db8iRVma+G6W40jO2/3DgTGeaiqziMn4IdRaPZJlF6REJlWehajw==","shasum":"0c02c6fd66b644c23969a10f42bf31dd08d53819","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603366564-ac9acdb8.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkW8vCRA9TVsSAnZWagAAzGQP/jrNLGNgl7KPT6Yiwf0t\nISNLUbMO7TAE9XQjlOjl4p+lxr3jI6GEEpxLP23e4SfGXc0VSdyqUYX7Gcft\nWy5V+MIjn5kjUkeDcRT8x5AWIgqtiI5fCenPxuc/4fKNRmRlOO11TJ30tRjU\nN+bAxJa24W0iXV+N+QPy+/oN99YtYXb/6YQuYHlpCKb5XHGJK5AkLDGAG+up\np5ZXLwsn2QfY9wJtPSfgf8pD04sxb9nkFL7HZ/u1kzq97zZoz139Up+LrxUj\n3JrK+7X3N/G7jaa5T7eq1PUGokWVPXInBzwOKKdE/Td0m4TiHkfXfJ4pRrpx\ntVeZT+pY04zkvxNgVllTNPaUdEk8+WiAl8w6JQlANewtiRFDl5wjZsQbn3sG\njeujVDQTXww+ghpCDm6c+VEza7bQcz+YIzx8Y2umAsWBQoFtFh3xO5yGWWHA\n32KYIiG3xnH0S+9mtV35C/eUOkufdrhv6cmYSvf5qMQP7Zh313kwH/VcPSrm\nRxJaSTdxpyn7T3BuP0mtmWnro0fpivwCilvskjh/ikGuFqYld8M4IUWyEAck\nArA65Ta7mFBehUzg/zwZx8d1W+R545leOoHzGSjH0mDgp3pCzJce51P6A/2X\nfDkrvTSMEDW2eGHTNvpkOc9xFqxl+rCxgqCxMOm8ik/jrnlzIJ+AD7HKWaAd\nUNFv\r\n=EUaa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFRfl0CDpvNCt0f5r8ai7xMHuET008VF5Xezz1nsodBEAiEAsar6yaqo2wwDWPIMVpS4J3WQbSWKwP09ynHvez5qQjI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603366564-ac9acdb8.0_1603366702628_0.7288234545547696"},"_hasShrinkwrap":false},"2.24.2-next-1603366688-f42fff92.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603366688-f42fff92.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603366688-f42fff92.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603366688-f42fff92.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-F4nGh1VnRzDm9BXKoYhrY876rxr+OtdcNJp1QlDoOMIl3mbwK40p8aS9GPPgPmrtdnJnAKF6jspA5yBgfBuQsA==","shasum":"c6dc2532317d5b5fb55b1158a04b9f7fb00c610f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603366688-f42fff92.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkW+yCRA9TVsSAnZWagAAucUP/i0lXu2Ge9aq85wsci35\nEZxoOGoTRwHXv9t0C8j2MvkkDseuS79NRxoWO4DudvmebOGe54bXEAWAsr5O\nEyI6ioXTg78LPxE4vdqxxbUd/7Kijoo8yP5bGGV3VzHsI0pV0SLj9iqp7Dpi\n0mOIKFgbp9OYdW8Rsd9k5hbPd4HhFXE9cHqQ9FjfSTYXoole9RbpHEGeGtVt\nKsoaGNtYYGh91PlB9fqrIc0yJohk2G5eA/v495AmQ+wASuL7Z+8/GSmSe635\nEUAjSsTLuTl+QvHwTvUqd3IdHnGH64/myaUKjUdhqf0JB9Bq8YWn5/IU0krN\n4ks5GHOLRkNcwBCPGett0PBGpbuZDZ9MNY35K/1pm4OJM17421MIOOytPWtP\nq/oXdZqLAchrvUrZGQF3eIOCjWCl87hKksNWb+I/Wi9auXl4zrj34gsVS/ss\nS+3pLEggo/kZ9uXNeCFxw/KQJPyHmYeQpt3BUVThaiB92BuvcUf1cKXPAdX7\nZ/ZjCv5sAbqdU3INKD2pk1T2L62IxRqa6fdAvCPG653aLWm+IE+zKTNPcQR6\nNijpmoyBgrjbqYi0CTRM/1LW272I6lFopHifEwYGbctZeHNWQQVRM9Mlttbx\n7Y3KzekB58FYdbHcMFSigEUJbRugXF4MlWxP+KsCsp5JhimNHdxGXhm7Xop8\njx8B\r\n=eqOm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGIrI06tbMCVvQo05vodAkqZ+orM+bXTD/2B33Hh5yNwIgJQHg2dCbSt6h8pbNCML/yOPLFUC8hg4igGsQzCpkEPA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603366688-f42fff92.0_1603366833825_0.8883995834391318"},"_hasShrinkwrap":false},"2.24.2-next-1603367483-5b2fc941.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603367483-5b2fc941.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603367483-5b2fc941.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603367483-5b2fc941.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-k6oKk7HleoV9ddYbkV669ITI3xSa5SJSXpaqnRr/CwHtjSsUYYRmeX3xbHHtWpIPr1Fr8aXD2Io254om12ggPA==","shasum":"6b514ee665ae57ee5f4672b8b024bd0dfe0b4520","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603367483-5b2fc941.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkXLMCRA9TVsSAnZWagAAFhwP/2QchvqNzySg1UkfoIAW\nPKSrRLkFenHUrI2AsPL7TNBsHqR4f/535jXnkVS1jJwyjC0Ff13H8inBNLis\ngqYlC0i2wIco9QILzdlkFJ8bza/KyF1jBzDfSPRo/SxoLBiLsUhN/D4RkUH3\nR2y3qMTGFavq6RL4SvYz33RvzaeINore4cNPesW0pcK9pBVAeOUv3DPKzu0b\nQeR4WtsYhoUJu9rTVfTGUP19RSJx46HUZc81aHMhrOWKA2xY6orj8tLl3suR\n4569c4UIJWJOg2Zv5Lb2Mw2gK52fu5MMuExbfdMMhp+TaJzul4idBCnpfHUu\nKBOspaz3RFm+/3FgO2NJsfdl52NN3CEgKztQCZmyZHNQfWkxzwV/9CAQXhxr\nv6vESt40D2D5dnOZrmmUJflbgFeaTvuZK23j4wwEazT4RRK1gA6mwRXvb6X3\n/wRa5sCums5JixW5d9JOMV3vjrEkuzmpXtEb+YuFgyvx6wytoxZGc+ZaMMoX\nu/sYHRJO6U1w0EdC+X5CrWidwMJ5n58YMfumiGylIRv4aiC8J3W0u6QcD0Pg\nXhshjCe3nCcbmm1aS4Gzk1Yy4Vte3pb4acNvxaDkHeLzms2U3i/XSDmgTwvt\nLl6gbuf9y6EQKqteL8HYdDe8sJZCEZxy9VCHH64QmV/QIG+xTvB/i/+4AVdf\noYj9\r\n=+mvn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBrKfwZ0AlHCZuggXWYtB74zI+NcHwk6mQjfNRIkPlkfAiBHq6iNm/Br5KSmdRP/OvpsTCT3JFrfoWpdMZbDh5D9oQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603367483-5b2fc941.0_1603367627529_0.5897805312776649"},"_hasShrinkwrap":false},"2.24.2-next-1603368242-5b2fc941.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603368242-5b2fc941.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603368242-5b2fc941.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603368242-5b2fc941.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CIlBfSetsN1rUE0bIxGWIiHSSK88uWvmhBgHjZAWA0joZOg1xsn3zyW85vAzYztLnm+02+k3fExp6fFInvgSrA==","shasum":"63f248c8b71399e15f342124e9711f2fab7a5024","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603368242-5b2fc941.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkXW7CRA9TVsSAnZWagAAk0kP/RxvjvM5HU7ITytX3f2r\nLht7HYFwSvTgTzyKBvfFoYgAPIyBBzUN8Ib9irNh1pOQScvfF0xfEPS+ABSN\niESiBFM1jlYnl/YkvH76HE4t8CG+D48725y1R6PQkmtxx6Rb8IF+nQq/HC6K\nl4TQPb4aDXXeRD/wF/ZKHy7zPco9lFGMubrDCMahdCRGCvqfv+0O7z8NmDJ4\nBRthDKAmvXnmLq9hPyL/a4A4rm6UDmTGZtAPNBVXN56Xzv/CKL8jNUquYicu\n1pV0sYnZ7cUgljYmbjNbiya5C326gKGrTO1MNm4Ey/OLe7ONDosGkOAmv83a\nWLUmTBH9p6NielJSOSATLVyqkZl0bfVPgog9O4+g9s3Hoh2kMs7EEv3AUlBR\nvtHSy/F/0s//SVp8g/1Jv+d2lojRu7/iFSWmZLx8W8v+M0oST8M1ECVjNYp3\n53HOYgfRHFBmxUeoMep3BOPKIVfE65Mkbs/wrPHxlLZFPEQNQHURL5/6+549\nSOCit7YefvhIaCJa5myAJnueyixv7u5CQbj5LRnvDoXE08aoKpYGF/3bJqv/\n7j/68AR5w1qX7CmeTvtto94b0bCtQnsnb7Fhx9iSCvPcjEHsRExbx06JbCRx\nToxgM5ETtxtfeNR0PpNVuINf7tGzi7FopMQrUelc/woHCNzrPC1oseeVhOX1\nZJX1\r\n=0Wh0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9z8axqiuAklYNEO5yWcl+2obq1HE7hzfiryAMW5BexwIhAOqB8yVnWIVDLXhE61ityLYqhW7vfn55UJ0/Fnoqxa5r"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603368242-5b2fc941.0_1603368378864_0.8063923274675444"},"_hasShrinkwrap":false},"2.24.2-next-1603371880-5b2fc941.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603371880-5b2fc941.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603371880-5b2fc941.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603371880-5b2fc941.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8DyuuNvDf8ZQm+neP+HoG99WJjI+jTAodvguHN8iAUyI2C3T76ettmXNAovZQH8+WkWW/rUyynu1Zfb/yIDUmA==","shasum":"4db52841814736a7f3d823d57b34a1d1b8bd1188","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603371880-5b2fc941.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkYPyCRA9TVsSAnZWagAA1UgP/ia62DUA9vmXfhtM1jfx\ncZD7RBJZJgIgXaMj4R/Rs9TUxqtYrumPofP7KJXetWIGXEBGU7LZUd0/j03Z\nwRXL8jKDGKVOznw6ogH3Vu+2mrl4FSGHFcLm3W9kOD5nvV753mwKETy5L+xR\nTrchDUkUy3q/23ZmPGABAdpHxj4/M8iUbVRwinuFCqZmIYCNEap2/mQyLieB\n/PCFS2CESNOMitx3anDM59Mz6FEHWYylnEKo8hqv2yJeDUKMkopijp+4dvX3\n+THXCIxtUKeMFyIiBGY1qPI210gCbytZk/rSi7n548xVwoIU8A9IEIB4OTqV\nHKC3U8JsoRY5cUeWDFVjP7lS0kjTB9D4nAKg82AvuhTBCT8MWTzfK/NXck9+\n4IAz7HOHzfDrj7SicM8Z6bLk58gc2glkJT2XZZHAW78SkuBJiadDPLW+n1d2\nBOmy2TN0Qa6P4fIqmJHaWhbjasJQqlaT98ukRbyW3fwq7pl9bgpEubvd4gnz\nxTnuginJpyQhM5ETRTqdErbAR6OP812zWNJ0phKuEfQo4Oc93Off5sVtBOr1\nMTNa4rtHYMAvCPr3/Q2hDbiQV/zVWAOvAsTa3mxavDu+laf5sZ/w843cTCFN\nxGY1hpp1Wizd8ZwV0Tpnlsx68RH84oqe4ALnryXkbCHGyUNPal9YSxaNiz4I\nlGMm\r\n=scJD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2FKLChPZoMfEV8N9ldgx0bb878XnUS2ZZTLvYISwO3AiEA9bFA/a9/VcLESle1fTbb4Tfdv2YQV9tQESNzyDIcDTI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603371880-5b2fc941.0_1603372018017_0.7132379758410756"},"_hasShrinkwrap":false},"2.24.2-next-1603376759-04644c94.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603376759-04644c94.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603376759-04644c94.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603376759-04644c94.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OSGeolDWX0e9MOCbci3iAAsGnN0rYjeO8N8rt+jj2hLQu05FuXMo++lJgBbRrNvn2wnmCzmQsb9Y7eZjreYZ+A==","shasum":"dc544cdb2c09bb62f7f28744513fee88e9991a0c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603376759-04644c94.0.tgz","fileCount":58,"unpackedSize":134607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkZb8CRA9TVsSAnZWagAAYWoQAJF8UEztykqV74HsoaP9\n2fWjcs8KhlzJ+LizViAv26eM3lzTvS0wh3WXb/xxsYH6D+WyorK1Yiegai/P\nbwyfVnLNOIxb2jirM1tQWvpMuTCqXYRmxfRJ7mhcgq8s7CtW0DG3Lia1xLDk\n91gVsJJSp6N6cLWzSHUIeD0YgZcV3+oJkhvFkwDHW1+7F6GsUfvOO7aUDz3V\nYAKAJBhQiO6sUK7YJR//dvEPwPZLmRwVa7BvF48GnW5X5Db/zhxCtosbqrmi\nyJ7dePX+Yhj2vPAvQ/Vcp+jDIml0mFakyBUIw1WFCmVZkrglxg83j/rf8yom\n+Oxy0pfdUBa7vGNKurNzbRmDqDG570KA3QXcV40f2yoAMNOnQv24IJQMbVbL\nJx1G4/sOLZEyl8vUM3gLdHjZhnz19+qyhZ87zWCLt2FMv3lzeP/UrNXRr9KQ\n5dC4jbfSqzdn1gBqvLKlOwOyUsPDyP6seUL/qCv6n8EKrOVE78AzXEyvV3b+\n1lmS+q6+p67Uw0dkFz6ld9qlUgETyseejY15TdIHSQyGeDgB0zd5hxw+JIRR\nwgAA/Aq+BWD0tq9CX/Ilrf0afznbYnSO22RTRdooqC9GwuWk02qr8IKmGM0T\nhdBhP+mNCq9KRh68lqTyCxbTyBUy79DxBJK1EsotLG8r9qZyAoZOwE5O+XdL\nP61g\r\n=ex9p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE7RH1GfqwyZ+3uT0aGasXbmouK8HPZcptlucV7Ly+XJAiEA1DsBK7FOw74OKQWEPXv9v6y4ztW7ogN9QHQb+t35d4A="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603376759-04644c94.0_1603376892297_0.013330215228358089"},"_hasShrinkwrap":false},"2.24.2-next-1603377549-04644c94.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603377549-04644c94.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603377549-04644c94.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603377549-04644c94.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iLiFKF9xqBVrxoxLxmYQQuvCrjyoqrlrG4bLvBoHlnpHq07mQ1rNiLjmhBdXg+/okJ/IRQHPMc8fM5979F3HlA==","shasum":"fc3d94af7761ae2769c4b5f2b7f6e805739007a1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603377549-04644c94.0.tgz","fileCount":58,"unpackedSize":134607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkZoYCRA9TVsSAnZWagAA7bEP/i67hoGDReUSKGHEeiv1\nl6thf3wX1a2yAax/cD7aZKEkXvnYe8/bffVCcjvx60zEjNNX2heEXkAfL5rE\nXuboVWbpE0X5o4gCWY6foe38DImC9zOttxo1hYTGHIdmFAeFCZBA89xA9CaJ\ne6sheaicxFyNnC2CXh19REYI5Hk0m/6iXkfjnBMpzc3oXVD5c7yiTh6YAGhe\njO7Z3zwMUXSRtosiCQyKKsdjnJS7y73SbvRtRvrn2S0cEAtkW0nCIcjEe+HR\nwUTlLQJ3lMF5IQNNlhmTKFHb+4oRNCqkof2CeRXLZo9CboQc0NL88AXQw6eH\n4z4v52HDCIE9v2m9aVLfZWTVS1TVArShYMIhkI5K53elrRPRpb8LbSwldBTb\n5IPFb8+8mz7i1CL4SJAITkWho+l5vxerd8MsqMuyA5TPkZiyrDYto+ObU5wF\nDh5ciCARyjDe1ELO56tdrJvkSCCEZee3SXglLjcGW0GT3JPUlXAEc7lmOwua\ngVOgdXngOLiyNatclYyc64bu0U+es+s7sS74HHwFA1IY+HxE4STDmprJLAna\nZz3McVIaQSURgF6Qkd0w+zQURMFqlH0izIp9HaDYi58FKijYJkDQMkBrFgek\nkTHZH6oJENmG6LrIVSZEPhLjUWDJdXM3c9zzYkULAQOx4KLFRFtUqf5ACO5S\n+TDu\r\n=HMRz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoMa7csxvMjpaJS5MSyxxGpxk6LIpfOs5ONLi9Z2R0lAIhAMfhJWXD/Fo5MxV0W1D/CQMJ8YBSZnpJNC9ZyftmURu1"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603377549-04644c94.0_1603377687705_0.7891764640170256"},"_hasShrinkwrap":false},"2.24.2-next-1603379490-d73055e2.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603379490-d73055e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603379490-d73055e2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603379490-d73055e2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PHYCfY2zPCEa5rje9+V6y9UQRjWuMHFnCOg7wX+hfnvorXV+3sMk3tauBzHpe9BqJMdKQwSGSamhs+XOQhzkmw==","shasum":"8046bc88339f8a7244a5bd94e55d2ead60bda85e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603379490-d73055e2.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkaGrCRA9TVsSAnZWagAAl0YP/3D2zP03yMuox6Mh6kIQ\nAQFCRV9rQ06O1hRltXpLAhjpr/ElBaqTCrwti2VPC+eUF2/5W5ZrXhcDjo57\nT/tQsBoS+48/JoeJ6w4N1l2cnkC35im957rgvqcb4Xl8a76Apk8zbaB15vYZ\nWdk/alUcaYcr3mHgsY2ru81RtCgHhVZ1QaYXLgq4oH/9xjRIKymTW5+L9b5u\nS6RZOU2exfth7gOkMavp2HxXXVUF0PdLbHfH30rChulEI9RXktuu2R0cpPBN\n3L/FPsQkSRy4hD6eqzY9W22P5eChcRsJP2R+nv7kxsPi/XmP2iHkx3MWIO6r\nbWoJP1aonpJFnhjx+BS/QgDFe47Pn8CZvIMP7khP4uiGn4D0RGbH/1qGnaYU\n13wvwdF7FuwdVL9BzStwF9G0QZ+CovojP67k7lZ+EdDiTjfWamGK0h2nLc46\nr+eZ27g1pRD96deiAf2VWzlzP5TPtH8PS/ZdCOjK2+Fp3JUYhOIUJS2oRytK\nAP8y2OlcQ34kKqvTrNauKxwohE+tFVMdnOjeRTBMSE49sUz6Ba9ScurBHwlr\nA91ExBGUeLO9eZ6T2QejjvDPwaukwFF7JGBPFOZNs+gD8uVlst3z9n4FCiMc\nzWEW643yChbdQOctz2fbtcE3NXooaEn+tICF02+4E6dcWwqMIofp27yK+nc4\n+lTg\r\n=FNGk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE0OtYmI4abCnSbNWXxxgGMiDS9gt34dN+uWu4en/rUFAiBht+Rm+Wd6PZQWl2OTbaGMIDc3X7TKkQKEX/BWlIlKMg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603379490-d73055e2.0_1603379627058_0.8109003178437879"},"_hasShrinkwrap":false},"2.24.2-next-1603379760-7e2473c2.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603379760-7e2473c2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603379760-7e2473c2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603379760-7e2473c2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oGlsyswOk5rcLmU3Zz35hG/rZfhH5Na147Uj0kD/KNgUSA8Da5WsXx9RFWtcKlitLMW6m0cNa6l8rGqFsJlAQw==","shasum":"b4b6fc54b647f0fc2f9e6fbf03eae36ac6a0d0ae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603379760-7e2473c2.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkaK5CRA9TVsSAnZWagAAsQUP/iTTyfT92jo4H3V/cR4Y\nh6xpcwVxGUifxXhAwmyem3K8JD1jPT6MJ56aD+fgZazS1HjBC9z9Vu6pJsXk\npG1HEfkVHgo7kD9RXyEoxjmaqcmlrXGctvl6tLB5d4e7IwQ+TXOyh2+VEG+7\n42rUOhQSXf2N/nQHDwJTV601fvk5EI2KAr3XKGicm7iDhuxCtGYG91yQXlmK\nURV/8yKcswCHxcpBUFWANkQdogIqUe+OZMj0QEwEfZKbdhEctHsJ2Q9ndshB\n/eD+LcV3alM2H2xCypSogAuTFlrmqq/DzrTUQSFtox2aU5N+7Zv99C2ABawq\neWB1mPmEYyUdGWJh2uu2mnD4sxvlr9Bnz8PV5X8OynszBLlvy5WS7v1F0O6y\nqNGH7wUMnF31XlFEu0W6Hp/2JoCXRfUUuWjsyI7xOwsC+RnAt8E6z3fscNaG\n01dloxG7eqI/xg72NcMz4A0EMBihb8j3+QeLrTx7pNzzFCyGCn+OLv/vGV8d\n21SU9+W6VwN/kGC2SMNpo9vO8eXnFLDicp5G4oygOGkix8BtMT0rujIjlAm9\n5MSreOPaZUPohBOhE0PVFuH220Xdlcbq88P7r6l4YuRhqUC9HSCcxstP4RDC\nZc8RCqD9RVEcl70MzVUbI0FPOgnanKiXniXma764xMF/GNLCzPFumSJnAsIy\n7Ib6\r\n=Bdrq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSvyDXydZnGJjjcrHABMHOzXT4lPQpMIyHdShZsRG8SgIhAPfEY+viNJyMKs2WpMRPQvCLlVWEyJl7eCp14gjk1sRO"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603379760-7e2473c2.0_1603379896492_0.8850442055768686"},"_hasShrinkwrap":false},"2.24.2-next-1603381230-7e2473c2.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603381230-7e2473c2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603381230-7e2473c2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603381230-7e2473c2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zyCdc1gvdCSierrSsYpsuzs+T9MZuYNONu5RXd2YELPSMW4whpUdTKBHErWv6ciJqJpQHRSMeLsj/53KExK6Mw==","shasum":"68bb3a8ea3acbc62ecfd51a8c6f3da71b2cf004a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603381230-7e2473c2.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkahvCRA9TVsSAnZWagAA8VUP/0tBzeYggfiHI1LLfs3r\nMzjrgwXZ+j8y+KKoxQkyNm3Ra1QiDYQqMtYFl0J7DW+yWFbCtYEfAu/daWL0\nLPBtTvJZZaxIl84evOQ+hOZK8Fd4gsrLU57dfEOwTtFmGhr5S8yzHTZzbZpH\nZ7Fi7SN/AX1dMkOWvnGplyeNtbZLdAJlojvYkNXmqvSADgGmWC+cGKmw/eFh\nKURy2vUrgOFGbybMTRVJ6zbFXeEL9o0feA2Aju4RlE+8M4sCZWQtoicZkDA0\nRY7Yj0jskOhBDIP9fRZOH2dckDlrrQK/sxf2DtVZGvQPeOiJ16mKDBBTUmda\nk6i3U4ipifBQqDzHOLWyS3stm5zuq4qlwlLpoP0QOW5FNUTImoCld08RbYE0\nnru61b0zG/WwJuDencybE+L8km5s3qaAp+ttJHvTFbE7ROE08whgxUq4lvNs\nEUNjIDzLAW34nshiGlocmj/+Bx5/pgtalS5GRkiHoYn+CMu0g1mqSY5xq6CP\nf5jQmKfD6FiZ2tL9yyUf2bMQkpqUWX6t2UV03AJ3odNrzVYUAtfw0DY4G5Mm\nz4N9Dr0P+uUaNhbnxIv7O0J5R7P3kzLpbfY4AUun63j3ArApEeunjehd4quo\nflc0Sees0yZ1vzzLF+WTrjuz8lhMQepdxXe7jCRzGtTwsjKi7g7q2RZMWNHq\ngqlq\r\n=Erch\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBW7z3aNmz6CYasTOKbOPx9pSF0J6ViAUoJCVFJEPMNYAiACxfugOrLiIxSbw5jZ1IdOn4ZU3LK1CrV/1AspxDnb2g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603381230-7e2473c2.0_1603381359227_0.3941480031960618"},"_hasShrinkwrap":false},"2.24.2-next-1603397701-62abe542.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603397701-62abe542.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603397701-62abe542.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603397701-62abe542.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1DotcHWu2kJUrtdrAUzmOCkl2ohgYpq4tXOJOVmAtsH9eceYLI6TuOsYEn4IAbnx34AJ0qaONQiTHHRqgtM2Xg==","shasum":"69551c508f1e761e4efa69e1c534e19de1fa2c87","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603397701-62abe542.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkejRCRA9TVsSAnZWagAAUXkP+wYUTnc7tjAt7SIehhpv\nDwkSgK2zIOxyYVUr6WXqgE1TP+7ImBBWc5m/K5QDnquLujqZXwulda+l9k6N\nV1oRPsyef2fh7XN8q+/2xGboPPq9RdyLmbZ/m2BCqZCRtdobXVeI9Id8mh7H\nBYNoGdtj1YVgx7Rr1XpfjNlZ1EDL2ChKiZKQmitJTCzA9IqiKZdu1PHOojl3\nbPE7tNeE+QkaEZ8vsY8eBXdPWeY29Z/l+ZmkMIIGZ8r9eIA3U2dh1J2w71Hs\nFaOS0wfMt6AaELTLsAiVL4n5vURl6n9onuYKJ0HwdiYT5+oPS0nWYSKEe4Ec\n9GEOCJo2Cx7dUegmy2QmBmdQX9jTJTJa8Ep2egNCWHqpR0p7EakTGv0Oxp80\n+TL31ZqQP2lPCyNKKeNcsIvNAKVhA0f1YzSQD5H0PvZW5KxKXOL1UZO3VbPF\nq4BqaRteNNlk8ycdYWx56nKcCaxJzD4zDa0PUfLWxMO+WYvoqDv3X52axoOH\nQU9nKqZB6GUmwVfgf2qFQewrRamxXavEYesbMof0rgHaOFTzOP71RwB9VJrp\nmVE5281QVo/dInBj9nIE/kyla6NtL9P3XPl27fXDFQ5q0f4FEWKEMsPKBkKe\naOHflGmV1CwtJFs4L5cgYSggACUWi3zzJsekf4HeyTX75yu0F9OVvZleBHiF\naxgY\r\n=cEEw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDKckGzBDwwkhL7rdpsXYgk0Dq7Mhs38RBpU2LlXLwOrAiEAiR0VqFh1rYs7T/DbvzKHZJWABrVXJeKjAoj+cccOWJs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603397701-62abe542.0_1603397840220_0.5053775931998536"},"_hasShrinkwrap":false},"2.24.2-next-1603397978-43430d9c.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603397978-43430d9c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603397978-43430d9c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603397978-43430d9c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CScgG0ciLegogVJl0uxTTdoAm1FDXnIXLH/obWfHT6wzt/C81t8W8ZvXEwFuDtsxAFMUQ4gzCBC44fKJYbt4sA==","shasum":"0516e8d1d72fbc3b73423fcfa997086064768b98","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603397978-43430d9c.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkenvCRA9TVsSAnZWagAA2AsP/3SAqNuMfGnTwlv69vWq\ng2/O+6H1ZgmN5VrrysBj/r8tjMVmbECgSFTpUqZ2u+ZeUd6EfpdjeGa6b70q\nycQzzRhVzdTiFBBVNnkm7gNvSOhgIxE63rDiYJe/ZGk4rh2tHtasZV9qDdy0\nBNl5lV/pE6wOwYVT3J8FipHXYj/JRaYqxIWjHLmVavVX+ADyrSjZjRX0ZkSC\nTysy8LCP0BmEzWlawGMrL9DCxvZboaPgclZGy0BCQm4M/QMCLJ6CWWhPB6Vp\nTr7sLsd0SC1umnYK4FzFIVHgTUf+4aHPR2x749ReBTdsf5TswgL8RCXq8h86\nfnJOSIwtazxDckUc/QND7Bk5IeYCBRB6FiTHcDZScSraqfsI1wlqG0hImFrH\nP2wjvzhl1eaARrbUj8ZA0NQph9hdy/gPH4OB9aYq34v+WJWAwbdRTbkO7knf\nl7oh3HyPsLx2EUB88kda/i8fAcdhDNy5+61Pp/OaSA74t6JbIL+yU+oVeqGe\nEHV2s2JSw1Z3Tnm8jDQdZrLwmTgSALxYUOnWwxkO5qmx/VxtvYibQL5ACMhy\n9zCagpQ0BOTHeW6zccB/j06AFbAHMfeuYF3ViUQ8w5u3BZ/1el3Tdf0SS2NH\nZwQcmV0fhrRYYzuKiHkLYqwqjakEE10/6MWL9PStbfyDleBRDiMJxwg+WxVI\nEScs\r\n=/cH+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiNPK85RpaSSkQOwOUONkIn/8nSmftulPmXmYx4cltpwIgPeiEOIwX/7aan8wpT4LSwgogp6fk0CRXKCJ5aIStkIw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603397978-43430d9c.0_1603398126515_0.4063056174231481"},"_hasShrinkwrap":false},"2.24.2-next-1603399613-f42fff92.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603399613-f42fff92.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603399613-f42fff92.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603399613-f42fff92.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UDQMNgndj3kymkbMFvJYWGAW7RWNATM64V6lmujYA07bNJCuANrIZJDJoOX1DQJ8IytRaYXA2Ops72syUx75Pw==","shasum":"9c75b4564bb1b88c13a030ace6d3169b18a2fe21","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603399613-f42fff92.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkfBLCRA9TVsSAnZWagAA0ZMP/j0KyreWGf+UG/Yk/0/r\nOdQpmApHy5Sa8FiEEel2uUjGgXbjVFTCtEx8nBjGh5O44EMz437l02JKHXb5\nBHxPmb/DGAACyOQoiolQuLb0nQ84+OQzFv+pG2cDfp3dpcxr1Q4mGWk5pguR\nS3kjm7TWIOupyZP92crqnUrOXjgVY63pg+1dpMpWZHhrO1IvXHpIZhJKYsaF\nk1qTgoRfpD+PaALPF6IHmLmmnXJ0JiQrXAFE+dpiAGCGh/hn1nZU0KihNgso\nElahVwE5iZhhOZXGNJjzRwLhogANbFiBnCqI3oWvVTy4G5H9tBI/0HLdhlJE\nymbTC9hlPMt98QYDEVhaqFeotTbdEp6s1raWE1qx7FbW9KK8OsM8DFl0YMx4\nnFqPzvrRoKBycdj3tcDa5+R727otwSrZ3YoOoYCTJ0BgVNYDgg6hK4Ovm6OU\nSJUZ31QVQVQy+OFQd5MMP3l0VMRa6eURcAivOM3+3sTKS0S9yoQmiUh5xiS5\n4Qj/vOPvRiXpbI4mi7f1uLuLjg6PS4QK8Oa4YI7HK/z0H5hPJA2N8M5YY9EC\n2uXKtcgzklV+Dl9z6FnLYfhKDZvE2M3XW4vCOtHrlzPOEckdDFFVa79lmlRW\nfOPt+rIbh3lQKz2erfWYKWqzZ+6VPuEAzyGZ4lYqAgHWXuVe5DX8TKr461+E\nFK8B\r\n=PGjW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIaLwHdhpY6uLzdxk5vlOTlZ30RNedb/Zr2o121Ufg4QIgOzGx8whOQfW4qY+YnhL5CPVzQUWd3GujBw0UrgQX+bw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603399613-f42fff92.0_1603399755448_0.522627067911068"},"_hasShrinkwrap":false},"2.24.2-next-1603399836-62abe542.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603399836-62abe542.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603399836-62abe542.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603399836-62abe542.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+eoUHmbs8JNG5mD9fY180S8Ah+KnVU5MQsxBtIHpSzRiIkACObTvENazh4eKDdEE1mW/cqZsDllDXkMVwMMi9w==","shasum":"436f1abbcefc7ca2549aac92eed94c193a0393e0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603399836-62abe542.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkfElCRA9TVsSAnZWagAAoe8P/28D7pr1vOtn0CoflcZ+\njY8nKB5pzMydHXlVAUrJocVmb5m5Ak9tnzGXfugtpK78p/JPvJxb1CymRVnD\nqLxRygj9csIdVslxWr5dQsZtn2aSIqR3ulKcr7/O3ku5KKNNnqwODhugJ/o3\nkAEL7kpjBjNT2A58gpTLjQ4AM3u9A+4O32/WPcb2M/yw1rg4JBZXv4edx6K3\nzevQbIW1XrTnQ3qfa+I2ab05+Z+I4KOkJIF3Dkr07lRI8m7oM0KaYkeXz9/B\naHKElGDIYzqYyeOYM9lANFxbk2NeBBu4buwR7X2SEcwJZqqr6bmGOz1bRMnd\n1nt91TBHO6RNBiJtIIJx39ELJMFHWtw1NbbJtVbFI3i1DfnYp9fD4JFtkdE8\nWzBc1HTW2JYhysShL+SSAWT2fRcwqjlxw1dxTSYQXWEPMaQdYoggLZQRSbqc\nBVv9Kkm+ioQfcNM7NtRlDoao8R/wsrsT/MjuuTbJdU8E+zUPriZeNWC8+GrZ\nDVKhN50EvbXV7aTtLaL8k7r6yhJqbXi4GKrkX4vIWeUajk8vSR1znlAkx3fg\nKD84Zw8t8Yo5xRVgWb5tYy6istEXoxtv4CX42ke5pE6wx/OoqSTN5DFzW+xe\nLGG71xZuhUQGzpaAqDb4Y3CwmEWV01YECArQC4lqUe5A9JOBAiBuEl9uepH1\n9Rvr\r\n=Mswe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoZtSyGyF0yNlwpF6vZ4vM4HwmAOTd0gJcmYdjavqe0AIgOkOa79W6VmojXOVfMUMpx3bel3ej2IgGnjnU8VDTbpk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603399836-62abe542.0_1603399973072_0.16557456503428591"},"_hasShrinkwrap":false},"2.24.2-next-1603401241-62abe542.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603401241-62abe542.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603401241-62abe542.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603401241-62abe542.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2k0xQ0gTPo4qBTvNgHxVZqIQ5jgeS9tsch3YXwIzXN1mEvVckUjbGeAnQPEnX4ROYg5Q1IehqEny2m1/oZiPiw==","shasum":"80b91746cb033d5a318a56522b16c9f10c907695","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603401241-62abe542.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkfahCRA9TVsSAnZWagAA6fMP/1CkJea0EhAfyjH7hp59\n5/QPDZXjpwUtV50w0dlzl1ZjvtpaiODgHoAUWvPJZpAqqY2kRXBStt7147mC\ntfdUCKcHxwZ+Kp+NChzlNbpUI7X53vMAYjZxV7V9B4e1mt4ORi6r5wmhqdGf\nzG3uXmHqDIrH/pdDx7gkLOhRizvGDk5FjJin0Mr92MGJISzH6dKvF0vE98XV\nH4PPFR/KPEuFekmkA+8YHImsblwGjupihAybcX9WqA7vYGCEcd6VCuaMyv9r\nhpVmtjDaoPAkF0i+Dja16N/IWVRYi2wMHe3bekrOpUyIOW67Cx926V6YVPm5\n2enHZx7QhFV8MgVMtUJ+VuwApm6YV5Rit4Uo4CLvHw/OciKWitzfwMe7loZF\nV3BECKoS6tfgdIEUr5l+yCmkMd1t9Aefu6FbC1HXA5aP0VQn73tIfjFSW5JM\ndOLbc52tWH9iByyJbj9DwnxxhG2L2jqx4SBQ9Hmxb34X066Cj7nCbmPsWvPP\nP+3xkf5CSqS/oOzuFoJtF9nxllHVERXA9IMbkcpWmlGImfNZzgHM3tnvgG1M\nXuQA7G10bR72haXObl6PoUQ7HLNcPcXvoz166y0bHKgloN+dvAM2pRZB3dyF\n9YvnJVWbbYU8F/JZZ11U8WDKR1p/2DvnWzu95eBiNWOfC+cwG5JXuc15iihl\nMrN4\r\n=4qvg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPYy7DPyebO7TGpFn8VkGrhocqv/W8BU4sJaVdvBefigIgAyM/oiATNBwPDKkipmTATvYvXq9nmxxJfRcWs7Rpluk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603401241-62abe542.0_1603401377211_0.5870116059908843"},"_hasShrinkwrap":false},"2.24.2-next-1603402937-8f92e6f3.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603402937-8f92e6f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603402937-8f92e6f3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603402937-8f92e6f3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ASkVWKeMNx9CoHo3TaNuuQpX6wKFN+TOoTNIVFpfhIuvn+qoNNh9VoLJAzoIqsd+k8ukulyekRl1fYSYQJbjvA==","shasum":"12fe524f16e97b5cee496bfa054addaf9a9748ae","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603402937-8f92e6f3.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkf09CRA9TVsSAnZWagAA+8oP/0gZGb4DgdpXzr8YQX5C\nZG6Zn5Ptv1SgWM4KzxVRPsuZn3kCW99HXfIrB7oI0xT/YiIwfUIDvoKpUnZZ\noaC7wBtVU+PDQBZ2LKH84cKei2n8HxQG0oYaH3+C/zNMnsK7Hwga1D7UBn6o\nR8dX1keZcuVTrxaNbeBj/cC6UfbWkKXDkrok0dM2qE+/nFlf5IfG1QsmNg/E\nGKcgO0Mk5AOh0PD+FQdOwTC+kzVCnaEhNSho23Wddq+5bZZWv1oGBGVUVP23\nAh0pcER513fZXk9eMzoGtkqLz0RK3aj+tQ5VQLhRFU3XQ+QYfrfB0MzijEgj\nKz4FFikYFcjnVgRHQ42O83IzV+bM7syeEY+Gdz/qGjjHq0lUcRzZMJhyxi1J\nzp98M1fenttWYfFQbcfXLhxKk2Mxt3VHblIFWDGT9VWaTmi68PQarqwqdi4/\ngZKbcIuvg80OJipXr67CelMEdt3rSJ2mcl76N5K8gWXRhw9jke4regtH7IxM\nxqRY9a/w22oaXNyrSsTK4Ye7IGsBSfa3psDJifdGgzZm+n85X4JvRhUVWpPz\nOiPcSwjZHkTMgCdnRPA/0RmP1aWCpFQfcBhJG1X3GedZdZRE7nKaGesW/y8Q\n5/3wDsajXsZqcv7c5STIbPIEKnZw6WreOJoevQKKWAleAtYP81+1+XHZMoDJ\nY/HV\r\n=gGmT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrBgIGH6wo0J3kMju7OoJoOaLWFlicmXZ1I50v/LIdZAIgZAXuUkOiXZ7LYkxnNE/ZGV5zU/nXcoismr940g/RKhU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603402937-8f92e6f3.0_1603403069029_0.3176930343512965"},"_hasShrinkwrap":false},"2.24.2-next-1603404151-f42fff92.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603404151-f42fff92.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603404151-f42fff92.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603404151-f42fff92.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3X5/Ekt+jmTjUKrHrpPD5qU2Frpqy5faX72R+dRSCe1ZX0BqDLo/rpMAY+EmcuVLThSKLf85Krk16SK0QrvM2w==","shasum":"38cf614ca73da07cb621a360e173ba9d15671d97","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603404151-f42fff92.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkgH4CRA9TVsSAnZWagAAqEYQAJw0dqhIkI8TVocJ1IWi\nzEs7JWyHHMmOn5cgwpyaHaaPSpfDROiBaxDnFsfGTLB/qnovYXEPEh4qyI1G\nhJhsCPhYIRoC9p6h+eBd2vJHRi/VL6yPWbubUsSiyzPV8bkmo2EXjztqgd8h\n5OM9rCIZUcop9rMyC+kNMlP7h1nl4W5nStoGugwYiguxHfv2V74zy12uJCmW\nT0vB5riyMHyhRtuybCJsRrBXW/0ByARv8fAK/B8PtO6A6ePwDMAm0a+e7ubr\nY4Bd8mv4LzniZhDHchjqdPjVmUC2ejwlmzwpgtEFYBaNsQlC8AJe983xA2rT\nkIKsNqt4pVMpnCw2YUz2VL2A9Q7JCTA8Tcwmui0UScMmVlJBcOkFpwL+6PS3\nZDWGoDF2eEMskMUyU1iDly19ASWZTDvvn+n4hC8VIAcq2Wx2brLQYGNpjxtD\ndl0m05JcIJjwuhP2fp3Lw6fJVN7bSK4qoq2QEmnUKVZ9iC2rEEZ5ipJO9l5x\ndUak+jCKiYr/RNYoeyMqzdEz0ossaS0ik4OJmq/+a0Y4R0YGcTinDUlK1Dcj\nnzvb6UxR5hRGN532N6MYxcpNc2lHSR02NENYvX/ubJr4fm9j8FqPAl/Jz7o/\nPv3mNzePubKY48vCy5xtF6rq9kPnZFQ+SHz8zr+adPWbDmLYxAq1AVu7VYVu\nfSOU\r\n=6TYy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGdIgjFJSKh4Cqzp76RgT0B2OmppQiwoifxM+DN/A5skAiEAs8fYOjiQUsHxE8qYJdt70WI74/I2AS6geiQUh9pCGkw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603404151-f42fff92.0_1603404280290_0.8597892104722449"},"_hasShrinkwrap":false},"2.24.2-next-1603406443-6511996b.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603406443-6511996b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603406443-6511996b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603406443-6511996b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3Rkk9UmIgRKXp6bzcRkPNzKfF2oa3dBs6NjE9YXgoylWJQewlUSHezKa5zjM0eEMa9vPTI+r8/kSMw+V21NhTQ==","shasum":"eb94ad196479bd4f7e3eff36c87ceb2ecc5f63e9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603406443-6511996b.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkgrwCRA9TVsSAnZWagAAhlsP/ieKs4mdexiXdPGSOpFT\nS4rirWBGx0qPbDMrr9qOpnJ3H3tWmpEWqpOu/qHHMRxLvMbC59it90xWowUW\n5kqOX0vD4JIpgQVhzI7aGZY/igDtw6z9iiZdAYXe3ZrCT4YwEEAJzzMX73MF\nZrs2RzhCBKbEdr6pWXkVQ74e1dakSJCU3CS6bF4dmoUDr1lX2o1GwxatL+et\nJVXEpp1/O+QkN42fOkWFi5cjzEaIaKk+DZUGRTINSe6cOSWl11g5/dd86yPm\nCwRj+kmAWLrNlnTyJKLvynYHfwdlWcyRXLQQWtTd6dyhbHqYxBhtRJhRc45f\nKsNXt2t2DgjoefokxnBfeihWZbZ0RYtlQXwuw9NukKK8j/0CZLmWVwU34IBR\nl+JXLems7Q1GX/W+lBlAHa/AFx5Un/GT6OYyQWixrRbELq4HyIQI978dv6rm\na5kHzWsxz6XBzCcZnWhJuiZjSmK9aWG9x17R/4XoJYFAnhgrX/95OCOvt1Rr\nn8pj4kqpA4ZIqR+JnFot2hesvIQn10s4iVvlSk7+Od6/5jpvt3EBnFrWzujw\ndXnB64/KgH8PvLUNr655Qkzct7264Zx3NS9k/KFNHRUr0YtlncbA90esbtBj\nSp5xQukd/0X/JnyqjrNTn3ft4izAVH1Hz/G3X8JwbYneFWHfC7zsj0QbhwXn\nLpmW\r\n=lOxu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVuGumDRCEOxfJDPfgiTscq2vEZNCga3PpVQTenmp09QIhAJthyxYqbWIiAJlIDb4roecwqAmxt4JRlkwv26ABupKt"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603406443-6511996b.0_1603406575627_0.9301041564177961"},"_hasShrinkwrap":false},"2.24.2-next-1603407492-0ad9a0a3.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603407492-0ad9a0a3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603407492-0ad9a0a3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603407492-0ad9a0a3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fflrFRfiCVWRmGEZibwIebw9l/hEpquRChjmvGpnKv4Ld73dm4Ta+JPQGqb16Y1rB5U8l6geNcmbXuWShCXn0A==","shasum":"715f05760574e9f384b6023e707b9d7dec39fb66","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603407492-0ad9a0a3.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkg8FCRA9TVsSAnZWagAARJUP/RSWP4hHMMZwln20j/IJ\nDvOdFLnifAYIWovkCCZBNbHT3gqgT4QzITPjQSA4t2Gxlxbt0PAAlz01YLP7\nbzCPsOYsTRxJqtx/eGQactE8NyzP1J35Boxb3rua4YtwxaeMfz8+kzggE8tj\niaYMEKjRsLZfVJr6+9npt42Byhn7PJaV/3PZqcRNh1SBhiZdXakbCVZcL1bO\nhoQz6FEMXwfEkriiFehitoLNeOmdu6CR3QhLwvT3ADslPYzlmE/yVtUJQ8fw\nJMlhdKxvulMEh/O32dFIEzgYDmESPKCuHXKcKFpsnscIqerXi15VN02av7F5\nBw0lwVpNvITp0mAD1Y0NZQaaUg6qnzkdq0EOqE9CEkYSFITy+jyEYEoIo0/b\nU4BbaNXpXDGwZPWKsXIDl4cpg4+ZQLxzz7xH7bbntcyRDQvU2B+O2Rc0xizL\n+kWu/PhDWNUYKyS2HsU3RVEUHoCLRhVKfvzAyaRgGzadIaQpX2xnlCoj4Mui\nGrAaOt9vdIfzob4pjH3h9E/xeoiPNXeeUhd4Tf2Qzap6fehXXU+JbuE4Zslt\nuE+hBG4P4WcdsAHKEdvyN/KcwbUVyLiWWqFZDWiqesGYXFYaIV3bEkfnY6sJ\nQAq2loVesrp1WckTnp2GxbF97QhCfGRcjDNoM63e5leMsgAj1DbaUSFqZNJu\nFfST\r\n=4upd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVmyIF3vp8SeVHjZw2FgEGId16dxmd2kJ4qBq6xJV+MwIgIl+FY5CMt81C8pwqdOlrehIHJyfb/gHt6KeqGXgzb9o="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603407492-0ad9a0a3.0_1603407620349_0.1262886071278646"},"_hasShrinkwrap":false},"2.24.2-next-1603432798-7e2473c2.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603432798-7e2473c2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603432798-7e2473c2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603432798-7e2473c2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PIMfxhAmlXFU58LCV2++3KpKuSigLGqdPFQWdNwKS4/Yz+2ScX3hdgE1AA+ZlM82SOBJFhXGL2ArZbY8q3bnEQ==","shasum":"32ae93b2bbe021a10e5afd733b5c69d8133555d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603432798-7e2473c2.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfknH8CRA9TVsSAnZWagAA01wQAIVxJfcBGFGQGGdWfYpG\n6eyklYcEvGyYmndICES9xqQn5aqQtgnm3UErmirZuLzfDIe9WMsIvKE4nqkl\n/Q4Twm/zmRYyNqigBT70P6PeRXMzqej8aSrWt3RNvcaG1CQIzG9iAM0IYo5o\nGLDCpf/I6DvUHpNNWPoMrz28FahMBN3UZAx2KZHdERVFaHFriGNvD1sckrKr\n56YY+q/8ehopdI/o7pB2N98x+FnAwzIBXgQ29/j0dABN+0nek1TzxSK4/2tk\nmiBwpsrwmEghTCrTXAobS0S4hK72tZ1Su7EYNS3tpOZNxUsGUdQhedt+auOq\ni6RSZWvVJLy1sZxWvGtXD3p6qVTCel5sOLpTIeDsi6yKWg4QJn+S92LL3wKs\nUa0mU2NhsC5fUaLo90QmfHfUhff5MOIUcq5PE+397Idp6LeO6cHs7jFKzM4N\nsRlIV892/HJEhfkTOGxYVjXNwGwlRBrUmhdRNYNLzuqWVUiLAoswjGP9Ttaf\nWwvstbyHxIV0ZY9d6a/L+LLGAr+BmQ+IWvvD+1Fs8IbvhKMNZqb+osN2k7If\nZ86DM0+M0x9htQZoUfNG+XRyma2B1aWJJ2PJt7jCmuWPxkQ1cBbf/n6R261/\nYb5obx2WvF3tQXazjSeFVz744/AJtoo/LA9LTn5bWS654EHv11ECUYuHXO/W\nfpso\r\n=ALIH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH8LrGU2YQTt1V6vss2cS1lL2t+FnxwaCTpFbpUyr+J4AiAXaHg/jxMKc0k/ZEGCsRvVm60DjM9+YbEAbfB0a+qWMw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603432798-7e2473c2.0_1603432956235_0.6750738510295446"},"_hasShrinkwrap":false},"2.24.2-next-1603432892-04644c94.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603432892-04644c94.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603432892-04644c94.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603432892-04644c94.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-t1gak1Hiy4PwIBhu8iJN/1a31mF8R66/CqRpEeX5q9WKBWUJdH3zEaPwP+zkPgVFtbexABxoAx+PvkvOMagAnQ==","shasum":"5088bd330c13c9098451d53352797da75cc5f9ba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603432892-04644c94.0.tgz","fileCount":58,"unpackedSize":134607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfknI8CRA9TVsSAnZWagAA/wAP+QHGrnQXURn0v8rysPM7\n9+Y3TWLZwSjeO3rMLEzQGCQVfUrf8RVAVbOfnCghjI0s7GaVAP1FDsjnJ3NC\neORLrh5XllAykqYKpSrEvPZSk+Va/IBIF/PyVMV2rlz3lbvYL7ydbjP2zBre\nkba+GONFi2t/l3eW972JEmGuNEuYFbKIytk9YTWrN17BSDJGOqS2ksN9fUGN\nsPvekRTNfguOiBNJYc8IJQykwOt0R6ldQZHEa+flgJs+36melK9WO37XxOxs\nSAl26L2quPAs53s03ihzg4/iDclvV+ZEKnDk5S63kxcDfIDhhylsasf/iqru\nAVGnCJF32o6v0sszwz6KMVFn/xDO6L9Lyt6v9iUnyFla8GorHNbWmq2TD9K7\nAE53P0BBwhtjSlRk9nGE86TpjoImoU6vGvKmIpE+bdKcMhxHCbTISOOYSVgS\n7eiO0Wb/ctSgQrdq/i9yCOdI8QllfTxM3kgIt/oAtF9lbVoWXL81dIZ8R0KM\nh+xilom1E7AtaSl2t7V2QcYebkQa14YsRy38bMSvYaYe/IeB5RP1Xk9BUCm1\nRazIKU4Ey1g+FoDlwx67nBT2N827KfBj8wnfYAF9XyDvMs8jhITnZUycQ7vQ\nL2CwlruVFCngjNLhSfDfcmf3AwbL/j7r7crjV9YLhFU47xC5Y4c9WBu55gla\nOOXy\r\n=VXNd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjOJiTVISkXfFuRUCTFLBMiDlzMvrhBwHnjiGunP+xlwIgdrG+eW5Zs3idpU1Q+R3TSnUORCk0fR4oAwC+61t5DWU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603432892-04644c94.0_1603433020238_0.24445208067644075"},"_hasShrinkwrap":false},"2.24.2-next-1603436647-3ff70880.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603436647-3ff70880.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603436647-3ff70880.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603436647-3ff70880.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2RDw/8tYUUZG2jvpQvLIBew1pW+UUKHVSBUo0Ht5ciihq3ga861mlqxymrm0fsGmjeUuuW4GFZhAy+bP/mGNvA==","shasum":"3763fd31882de957b0767176a918bab609fa34f5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603436647-3ff70880.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkoD4CRA9TVsSAnZWagAAmBsP/03NzO66jSU1pnsGCnPi\nNWwxaKFaY1IEWjhstyMsxN+kHUMS5s1SxjILX6wFBIlsqc7UOUVuDjEfAaNU\nmJBVyaBdaXxmJARFjQ/fgJMzO73mC0wobw8WuHVnpy9BgWKJU7fDU7EDBKQ7\ndczVRFXgOfxfRewC88/MaI0u8cFHb0dMlT+lzD36YFaS5VMuLFrrG+ACc6Gs\nj+UYASebSTb/XngEIdUJEtFBcBIGBwbK6PNwbXg6aTQshg9Fxoya9Oe+RcEP\nCIB2aw1M3vypSw4yScjehsfO0EDWU1brdjipmXSrVI2/IFbytf7Y30dBIKUm\nkFb82At7X+yCwl/IrQZHs9QPNBpBZhPDOYb4jsO6NCpqiQBlrReSF7tNYtEo\n0HfvUGSMltyZybGBBJLPyFM2GuhY28uFtxeMtQ+FO+O9F8UbKdgoFoXl1F2i\nETHKBdegrYhzCwnVC4zAMnucOQxmG4AOAzgtycuXr36hxhoZObuEKKTkzjg1\nPGhRekLItvdHZXH9ShsGUbprwmSQrMLWFkOEvPufMMiDki8l7MMs1anW2ulh\nWcrpTCzvhL7VXe5l0KsltEeOX4ioHF2Wi+2gVxly/clMjEOoUBw8aM2iKyOC\nDPCDVm5s8m0Iz0TOQO1GscM/b/3Aul/0n1uXyrCnGNquCD/ZzJaqA/BeRUnB\nmGFL\r\n=hpG8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFuMbKpAJ8+r5/UML3QNCCRBTwNvwYBNf389fIXf3Uo3AiAMnKQuo0eAf7+LyTYTHO45gWVoZ5QGf2hAJ4Jhn4+gzw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603436647-3ff70880.0_1603436791569_0.44139082304943367"},"_hasShrinkwrap":false},"2.24.2-next-1603442742-c1fa42c5.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603442742-c1fa42c5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603442742-c1fa42c5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603442742-c1fa42c5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WgfLmyIM1DGVb4U6tLwwtWWxVYYhS0TpedNUC7wIetNdnYCreS8ZWL33FPyZriEjTnPo65LbuVjgBo6blhBzrQ==","shasum":"bee8a1526dde834f377be7aa839b374fb5ec1a4c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603442742-c1fa42c5.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkpi2CRA9TVsSAnZWagAA8ecP/3Vrw+8jRtkJZwJJfBzk\nCdD+d6nNd4/MbW6yhTI5iXrxzgfnDbWXGYB+rpzaWFSIIY2oWrNznWDBQ+bt\nUL778mmT5+tbIYwRprbfAqMzbUT9F5G4tFvp3T9pjCcAvgVZmRGf/K2bmz/I\n+KblEnK7vpnIKFngLF4ZDH4ZJWp6qTfEkZMy0FyzJZFjK7cX/yNHYXgkU9Nt\nrQdyJ5auGwjnZ4VvoEFphoSW9Pa2Y4XHkCzj0+Rz0snhuTZau/Oz8q11Ze7p\nzfix4qnuT3MRkLRgZvRZek1++LfT8T0GRWVfKa/RJ/Gc3/QbUdOuDzgsEEz+\n1HHdgyNgvz4zDCJYhuhuPD9ppH3B9IcPACvPwlYVeY9W3Ymw7EE4Mw4wfBSk\n8rvV8s6dzjgHaflaI0L/VYBB2h489dWNrA99LrjpJZ83DHNShTcxDUHfpqsa\na9BmBT9iaG5I9hXU3jsusqmaJfotYi32fKPYiNIKw11HJwUGGUI4HQJ6CX1v\nC39UzS+2/DMmZsrdfCGdjPG/yEWbq04YUoIh5RCVyFicJEisK+F6PNTCI8Zp\n2wnllLA5EJMrLcN8X2vPPfnoG0Xh2Wt+lUyIXXikq3V3lVJgFraP3RvddWep\nRbaqG/vJsCUE2dPNHUkZY+T3zUQOJyMeORFpsBaPPQcZDTJHIIXwAFoQgxeW\nBAdT\r\n=3XPl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFi9NC3OLv7MfoaYo5hriEkeJ48P+5XFRGySMoN24dvgAiBg6xTFAjCQ9T2aeV++2qublGKKftpNENyu2aUv1IKMDw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603442742-c1fa42c5.0_1603442869648_0.7949916482037473"},"_hasShrinkwrap":false},"2.24.2-next-1603443919-49a6562e.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603443919-49a6562e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603443919-49a6562e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603443919-49a6562e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CoPTrLJNg+tA4/wibbF+KzrkrvMP73kIcW1hSTdYJuspT/eotVxzRHPmEQXYEdlGi4FgiaSPrbZOwHzVr6ZrHw==","shasum":"e0aea03155eac08aa96e088d0d91eea5e43e072e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603443919-49a6562e.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkp1XCRA9TVsSAnZWagAANyIP/jMLgTB8zPsGetuFTTaO\np8jxyHsaOXFaX6/PJFywaddsz7cn8y+xbHl0gtg8BNrqEjnKB2SBrHOTm3Sz\nF3afR5jQrFrUkAsJJnuf52eXRrLkzM6xCMLw7Exf1txW1UkWYh5mD1G++mfa\nrEWp+xCsZezT6LCylTaLXCGM1g+IpLK4RpruyQRbYkcJPKM/E4C3khXG3Lns\nXbrl545C+W8mbJJ6SDCtSS1k/9t2+1lMdqCgr4yaTdgLd1nWvd35H2bHoAOA\nGa6tdoUYqtf9gPos3i0aOAmcGde/+mqwnAXgOAwYurhiR7A1IURATM9QUVH7\nT+4ovlD0M2qzVyjuWMoX/eNR25W7qFquWY3UHyUGn5D/qVx//UVq207AifSF\nZuNdpWABh9tYH2Wq7wpziv6j2pCTIlyeHCPC4kJJ7Ewp7r968BqJXkqOx77a\n2VX1YGeKeAOGKMkEM3dIKqWANIEfN6hVmAJqGgDIsDA/yuI9Zkfi8UCSm9FN\nk3IIIxVfTN7rGtZTGb82onAzP4rg0EMpyPAF005WZlvz425x9SbBWZGYDWpq\neQ3k2La7BAjSv0Yr/iomm0Rdx5ZthCmlbj0yMObgythZJgeQDEvfUt8qnfHq\nnVZcQzVKu+SqyjrRTwoaolMzIuOT61z4ad9PeB96IwnSox0DhJJLzx8ClzLP\nyo78\r\n=Plbm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC15fXSNF26oWhyVaLZmK+79/C6RPIkRvmNiCBu+Bt+NAiEAk1DcQrBx05EwvJspQa5XGJOlvk8SoKpIOGlYYlsJheA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603443919-49a6562e.0_1603444055309_0.8358148063045583"},"_hasShrinkwrap":false},"2.24.2-next-1603446803-bbf9a11a.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603446803-bbf9a11a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603446803-bbf9a11a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603446803-bbf9a11a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CApMOVExgRkvV0+SQHHYVlfhyLgXjelyWFD1VNHxr0uq6bot23PL0dB+yuv26o856k6QcJHUqjLUqNREwcnXJA==","shasum":"40d941671b723917b210de0ac04a940c5ee16bf6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603446803-bbf9a11a.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkqiXCRA9TVsSAnZWagAAxaUP/1xEmgWwV9YaDlL22ZmH\nwSAmeSmCATXArOe5HG7y8VttTbULy2kXuNwlCe3KI1XwrD4a8xbXW2p2w00z\n0PxS74kNAhGvMf9nG57xCZC1SdKJ8zp7b0k+XjTMxdi/mCyESRdLVwynTO7K\nLzMWPnrRq5oaKG68uWxRItXfLAaVQ+gzdznrVP8sMgfBbWrcoSoCDWl3R7Je\n3Vn/pU1fEahSCeGABYOSDZHM8xjsukLDelP+LYV1E61FQsPn2e5CdGGXiNko\nGot8GGnJHxcl4Ka670M6gkl9abJPUorEsmdgki83Bmtbh/MjlZ0m40ZYYvEs\nW7F8pHP6orbPWx0U1pakbgsbsX5Z3q5Mk5CsM2PVAnCuGIKuyuXRP7aVKDny\nNpYUDRV/n4s1Il51U0wi0KevVhiwFeKPcvzmizwF/ppYPc8a4RpFnyjcmBY+\nl1UwhpSfNIBAkzPnB6Hn6L9Bz1zH+8TMz7ZdoMOOdzCpwBSHbnz9bQmiJ2J8\nYL/it+9nWpBm/DzaL2pvV6Mdd6pWy+OYwSJK1s0WujrPGBfg1q5XfnKI0DZZ\np8XKu/oXWsvFh2kp99hYoA66QxYdEj5LvTw27CyqyDBXgr1lrEIvpuGHT3c5\npxevTtiO9bav748Nm+Y8H39pF31keSYM6HLubUcanJmd8DrdK9vqqOMYMLir\nTIB0\r\n=6XmH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICxAfTvpbxD76COBnRfc8P/gixVj+i2z3zk3gj9DyYbfAiB41GJCC0aIfKw+NuzgISBcGiDvxP9TZv6StRhCc/cXhA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603446803-bbf9a11a.0_1603446935290_0.11092448773203278"},"_hasShrinkwrap":false},"2.24.2-next-1603448066-a4ce91ab.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603448066-a4ce91ab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603448066-a4ce91ab.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603448066-a4ce91ab.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZCColjJ+HY6xOsasyP+sZLiZVM8pJz70RaP+6rlnFopVN9rMsgOY0AVLRYJW9fS6BsxoddStdvJc/gtC17vlJw==","shasum":"60609fdc6a8b0e89e2382ac5b9e3374b73d7f7fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603448066-a4ce91ab.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkq2ICRA9TVsSAnZWagAALNAP/RvAsui+QtXAJMgrmLVs\nYWgd0xA6LBN+ohY8/SojKUXx+UQy5uFP4LF/NnXqCvJ0guir0+R0Sb1B+2S1\nu+8uej4rwsi4NM9RPBy86KbImjKDRn1NQpwJzHzaf5s/NLDVhsV2NgJhMpj5\nYr8Ic08XWJlwT7NAMWDazOr3TC6FiSv1J7XD3V5sejkJdRcGGijrxj6Iyn5D\nlQfva5JWJnU7BQ201Th+NFxmjwvQfLffYRP4j4ODJU8SQ5Be33H2Y2oEvnZi\nHVqfOd2of/bFufGAj+B3cbYANwr+dX+HolC5mcWuvN9sBmxdog/O5Y0O2C5z\nt1Y1PkUVk6x/nlgOwZSVBMgR7zrE9NkisYSYEl0ZAE0sIx6JOGnCpPl+S1ps\nzBLclP6PIIUYqrptLZljaP7TcE+ZJwZ4hxXfMjHHJvs4xsxNGJy0amuo8jz2\ntLSKRHUWddLhflzMWuXW15GCLEP9SaXYPNF6MYIlOEvZl5ctSuQxayOoJ9mW\n+U2C/XFTdGliZeRqEG5gGMjlU9NzgtBV6fapxjfVdyDzSsDYAabsKY10hJso\nNRHWXuMigyfgZmnLwAhjYdg+XXu6AzMPeREYtEavA9/pD894jpSGbobi1Lgr\nsdROrXdE3zb2GgXy5R+EzURpw+pTWzE4jy1yM8a+SRX4RxmX0fE402tISJzC\n9Ktq\r\n=vTcE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCv4xPld/yoiX8Qyh7YbOZkfUv82Et9QRj5o7bveiV6rgIhANVldaZ6636PETCdCAEchh78saMOTMeg4oVZaxTaR5v0"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603448066-a4ce91ab.0_1603448199901_0.6779821509742046"},"_hasShrinkwrap":false},"2.24.2-next-1603448956-ad2375aa.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603448956-ad2375aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603448956-ad2375aa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603448956-ad2375aa.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r5mOZCDdOl1khwIpsZMS/XyHlS5OL6nEngNFGNo3NhASK91i5I9MTpLe1lWYs+JAcj+xd8PZTmcgyKFETmKE+A==","shasum":"431a5579fa417aabffac84b3c9deb822252fc86a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603448956-ad2375aa.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkrEQCRA9TVsSAnZWagAANgUP/isBVMfAFVyZBDzKbjPN\nqv9Ze8AddBPBqVQrpUMVY2DpIoSHYseyzLVb+NH86XTXoCHL7Okv3hIRqTW+\nsk2T1ZOjIL2FF74gvZHHm11xv5XEWX3r0cfziad8AGXkNHqZKdAvVd1WFDrm\nuOP5/flVuYk3MaASG5tTKatIKVuaJ7N0Wt8RHg1zDW4kmkFF5tciA5WSbGeB\nNX3Yd/UL7A2h2u846NkzCi7QaxXX8l1H6ySprcsVugjmgolzHuYa6ADtA5FM\ngjptkoZcfaNMiFeuqDndt0aOrGzgy6/rFJk3V88oXRafc3w+zCpho0e+2W4I\nBPw1D9VzE0PwBOymCMeEb8lxjcwTUHikZOeThRgeerRDcobHAtK/wmDTIaAF\nBHu8GJcQVW7qi81+nLUyT4oayZKH2ePJtFn/qT6yP2a2sWpvNAXNkrWrEJIk\nmPL/CIkT8x/bBFR+khu5N0KWq5MwE7uGBI5JrVn8Zl0qt+oiCWuMABoT5E3H\n2ftQ3JaRjlbklpMU51kpUPrFxu5G91BWUir0eqdP+/6sxEKbWMObigVC+Q1Q\nV+K8RDhj3z6yiN1eedpueJRq7Tgt6MYR9sonXyNMgnVpn8AbB90cryxx2Pdc\nt6Hsgw54qZiCEmfVd+7MXrtMHQveCn7Ce9zPnhVjeAkfsf4ZuogV4CHPQJhZ\nVPrX\r\n=nZc9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEq18Xz0eMClL16CVsLn7BiyhU3DzQu4hYGntI4nUxtNAiBy0PE8QIYy3GPEEYATe/lpu7MII80j/RJnDX6MwyZX6w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603448956-ad2375aa.0_1603449103650_0.9784168768066184"},"_hasShrinkwrap":false},"2.24.2-next-1603450039-4fd7d9ab.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603450039-4fd7d9ab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603450039-4fd7d9ab.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603450039-4fd7d9ab.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/mn20HO8rGa7jHrSGeNtS4ypePCdODCKBRnoPjJg+T+oiCwpeym3MTfYQ751dJcduliUNYiTCagSoazg7cn8Rw==","shasum":"badd68d05a71844a0f4f5ca9859c67cd2e65aee7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603450039-4fd7d9ab.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkrVMCRA9TVsSAnZWagAArnsP+QHB0u07yiu8kHm1d0B2\n5B0ePJjEycAQnplDH4x13N8lpykb/u4WeQiQERolUS1B7V0/3QeUrVlM5g18\nBsWYqtygXG6PtIyKHW5L5myW6M7FFh+EMJLk9EoPaAtNDm+rYVapoj5GTWuT\nwo/85f99kq6AOUaPZsW70OgS76RJCJ5ZfeEiDxLQF82KXZ1nzP8sQpgDjGwE\nCiUnuCG93TXM3xll+P2ixQ/Vknl8SqtQIH3aWV4+afp+HOpYFtIqA5p2DZPc\nzaoVSrUOAThz7nPEx+N7hbx3ElWCTOj+gj8fniG2iJGS/HoZHHJJJEKtVF3t\nyXvC/RZYMePAufAeqlgLpFTKqCOsnYr/LDlWWt2mPzUX+ZkSba7mEIcNw8i+\nmH3L0pgCOe0joAdWTCI11+dkoH8BKXnWGEE5wIYjJW/jW0FcQ7zcn9qXZQg1\nEyV/BXDyXy2w2cQtfi79sj7Qvfh7R2mqq55qxE05aIiN08yyxPVeMkUEYjDM\nteHO9avIRiSebLVgZysFSjFypqoLy/dDice2HOa/FZzJTiQm8ZKULOMMs4t+\nJFUBQBBCCDuAtykFGHrLm2ecIZkrDnyYKZPN1Fmu6uhGXTs7h4lc9kqT8PTq\nKLRn0b1w7SyQiKrswVdxcNMhHbpmSWKb7pySFmZyGO9Ri48JcEu9oeUuCoZ5\n9c1k\r\n=av5+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIIlrLHq/oWX7ZQrnOpoL+jQquBRDWB22flDQAf/1U9wIgSo5vbRsaXeGB1swAWOENXZLGi5EhV4Lbo15nc+YcJ7Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603450039-4fd7d9ab.0_1603450188235_0.6257951697473483"},"_hasShrinkwrap":false},"2.24.2-next-1603450496-d73055e2.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603450496-d73055e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603450496-d73055e2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603450496-d73055e2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-X0eUMXwRob230OtXuuRV/28ZTD5BDcu9GD+MPlL2QkXcvZv7pvEw82L742w/4Tku/BapkCibTn9fYJOm3w+rzQ==","shasum":"bed508f6bb433d65897b78b6e2f7b62bb0ea16a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603450496-d73055e2.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkrcHCRA9TVsSAnZWagAAsOwQAKHlH5/G8vNIfglULDjQ\nAtYIhuYgKX8b0sbdYSYq7+VkDc6LGq2JDbf0h3ucVe86fCzMMkhds/4DvLTN\n+Cr7bCSQkbmwnZLI+zsf8uKOuuwmN28waEh2M7J75gh28t1siSOSYYGrGUWB\nkTHWxpq5Nmvg4RpsZG5+FPGkNGCY86hVJiRuiz19k5sKQxc5vXIV68dh8UcE\n2uhMcjBG3M0PrU2Ond9FDItZeuAfamEvuc8DrQoXA1Om3RSDFsxCoKMDR7ZA\nMQrrI3KYpcE26tZj6Z69+ypzXUV+HCBVO86DlOROHTYuupdJzUZ3woenl6+B\nnZ+Sia5mQ9rQvil7xygu84gLFwclCthig8JcxBsdz0CAwuFb4TaLKH+litsx\niJs1byRJ912xXHYb/XXwFunprLasCNBw5nOW9dPTjBSz5vWnRmFeUvHAUyit\n9WOrmAuYvLTAp/mvtryjXKqUkvfWh2xfBPjoNoTuuT+Xt2AcpiVHriRT0pRD\nPOyWRXHChws/7EkeAk2pFTeIhnZ64VSLS3A216CqiMyNcJ0zip3mGkoJvUlQ\nw4bsRvPBoUn9hs1aT1mplIph7oZs/WqD4iKX8MJKmLlpwU5mXDBKUYHJYB77\nWUnbMO8NEY3D2Cra/L8zTmhsX5uo6X4/qwLKpE2fAmMRALm3+wuIsFuXJel8\nJhTM\r\n=7TTZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQ/KtGgoJUkmJSlcdum9Aopa38nAkRFg5qp7gZzXJIUAiB/TQZg+ydajRIyovGOZlbVEde7gOGocgbLk6XPDvq6+A=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603450496-d73055e2.0_1603450631443_0.01774427791000255"},"_hasShrinkwrap":false},"2.24.2-next-1603452949-5b2fc941.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603452949-5b2fc941.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603452949-5b2fc941.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603452949-5b2fc941.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-q9UFqcgnm6kh9C1y167J2TWe4QPIP8XF3WQ7va7SAvcokLLm4I3TJzPRKwPOwypMoJtdJQeSPXITtm8/FTjiYg==","shasum":"249e6c600dbd93de92b7816297ec670696a17d79","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603452949-5b2fc941.0.tgz","fileCount":58,"unpackedSize":135564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfksCdCRA9TVsSAnZWagAALFcP/1yAve4grXjIXvGuEuSp\n0hDFzJ3vMV8Jejio5orQ3Uq0nwROAurVAwykjiHhiEO69ZOdFpc3pXkTx9dZ\nwdiTxZwsJWwqDNv8fL2/hSx+yncOH2VtnV6ixr8N0nZfD4rFHuOl1A3UNT+A\nNaj+fmElkxqb9440mFg0ewjLdBRihenlbJ1OIjuAjgW80z6L8gFd21DMbyTN\nb74aN6vYalvNZJX9Ar8YrlzB8T0eEBRQRg07cZjcIeViOugfn3dkM46aSBHz\nPckatsMxIVufRPTby8A/4ews9+twkhM4jg5ejDMEOYosYZ1llzuB4BOJOOuZ\n+rqgJNL95jSZ6CCc+4ZK3dwko1ibGlDQhi5zF2SiWrti7WHZ9h1xSm16e99a\nbzIoAtY/0d8Uh4wwAL2+I2M2tmqqsGxJa0WFNRxK+D8Y6FNswyTl38bzVQ0I\nmnjNvfUY4ubMKMdLManJlsMv6rIa+O3RrujgUrSF6eX1n8VpPp7N7LlGDK2k\n9SzCMTp05gl3VRIEXWQtqVclqGVbmufxHwEJXbAkI7Q08DnPdDzDeerb2GcL\nNYZPneEoL5KR3leRS+ynx+Z5T3J7Bk8qqavuxka+AJDfcXyi85HHto9vy9rX\nFxiAR6lROiLqr3kbv5YjxzcOz6ntLu1ZxSlMd/7i96iau2E6htkiNVoujOFf\nWP4B\r\n=NhgE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqGEUhsXpfQ2SpqqrrIR3DdJFP+RvavsxiJChxTCSvtgIgal2qdUlCc3MCPFagJAV9jnFN8gTnP3l95ocS3gpz+TI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603452949-5b2fc941.0_1603453084501_0.7685263177280441"},"_hasShrinkwrap":false},"2.24.2-next-1603454500-d6f5ed75.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603454500-d6f5ed75.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603454500-d6f5ed75.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603454500-d6f5ed75.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iUUKLcLG+8iloHFcMDpa1d+lzpjbEV9Hv4XlYXO4NbpnlLXb5HBwzIPoCT+z6lWFRcotjM2H2wan5FdKTMEnLg==","shasum":"ae6012cd8d2188d6d4fae945bbeaf8865e11b940","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603454500-d6f5ed75.0.tgz","fileCount":58,"unpackedSize":134612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfksa4CRA9TVsSAnZWagAAfYsQAKFWnNEGZZHxsTFpY6J8\nf0YS3LYfalL8jM9INcEYhqVkADUgCL4+j5oyq4Or9+3b2QZiOu0FWW7nIrmm\nw6pDhTuUG+QQT6OFBCLxSeVI1iOIUcfOxuHNbaWCnwQi8xIha6n5VHJNSocX\nujWMz5AOycDRa9rsISvAZx5OrYut1/jqGK991U6f0OGkSwxzQNZ0gUgf+OXZ\nRW1FGJkNF3z2Xbc+/OpCfMJ6nKe1NLE4+yhIGRIlU7uWF87JnxwWbcpLpyCD\nIcwQuu7jPXfOpPFokVVC+jiBon3mtyVVi5pFdrwtPCVNbBlkxTjEsQQpHYNo\njTBCLTUeLF2jSOi0hi61DEudhPpHMnoIbTtIWdURmpoeeUTvAAoAAs/oLCxB\nEjZwabHTXPmqlKB/lM1DfpLifaSzfnLg0SIoRvlzkDIbYusnvjiSFShHFrfJ\nBmPEAUqoReZJc8q/RYXjp1qGDo/+D11QMBBrbTb5w4SsIn/TUxY6lGwiLT50\nBBi/GFlIHxredqjRTj2qt0HImdaRNsPQXz6QoQGzu0VlAG0dHvd9h3ceu5o1\npHeujC5YkxodblUrdyq3g0aMdJXqTcLD6T8IjA+b26DkC4U3uyNV1XXLFWH/\nhMuBrHXZbCwEYQFchuwH8sJLJ7ByD59ltV6wQKVN6EoT/oXk8C/1SVbG8LeY\nchL6\r\n=8sfW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCizQZImIrtIXc7stsMJPSxF1vx50AF+Hlg/fDt9FhK3AIhAJS+M7sx33zqhyng3ePYqc+O5Frh+vWyn2wi8QFqa/hb"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603454500-d6f5ed75.0_1603454647555_0.16275541965065043"},"_hasShrinkwrap":false},"2.24.2-next-1603454821-69491ea8.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603454821-69491ea8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603454821-69491ea8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603454821-69491ea8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3rKIkgpxTANF+8t60EmJzhmmXMR/84oyDb/G0p1+mmlHp/ZBnweCJMR4xjnvYBde+DZRSKmzOHQB0rhDRysj3A==","shasum":"1f8a99771a7d55e503af0da400ab29e32a01c0ac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603454821-69491ea8.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfksfuCRA9TVsSAnZWagAA+VwQAJHPQ07AV7o1goUuuzq/\n/DJWts7vyoxocuLjcW5qiX8hOoTIHy7TuFZP44Hhd3pvIXngLFaRFVLEgTSf\nF7o6Ns2DtvD6KsqDYHKJ4UMO05qy3zPna/NmrdpK7RqIebrf65/SvbdDC/p2\nEvh2l88/gElNxh7Dk+OyKjRPRDkB23K64lr6jlif5xy43uH53rE0kvEtd+gb\nVnGVcrdG99VQdcMlntER5MBMjhEVNtJbek/sGHInhW+HpkRPjyccLtVZcxmB\nDH8s6HfjM4cIOmfC92toNFPz9MmsDTdrm/0c/d9fjTISa03Ohc9GhC/U4YjI\neh8H1MmFFMyoqBfeQYw2vdrjlxTHy6xIfQ+3AGzMWTbe0xJ7+8OJtXgiHbfx\nkMLTK0e3nOuA3lottVYSqC1RxIgPSO0ipWfOUTR9tn2YqBiyDvHLIUz28TlU\ncTM/iCJJ8V2uETG6/4NM8Y1EW1DrodELgUZvY3uLVXhYURxwMh3+kIdMZBqW\njpaDySrlMTP18rY7/yaz5C2OiJUCAy/3HF823M+4EFrnzXWvjDKR+ArlGSK3\nMFERk21UcsjlHO1vlbelap9cjTrAJ1srdvC/y+z34abGMKAOa4r4K/nwdzl7\nspDm1vjahF3DI5pFZZRIG1E5NKNcROnN96BSNdOyMoIXHdcFXc9527rHUcHh\nSlk9\r\n=SqYF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVT4E6t6pkCt6DQa5WTYeV0VF9/WdY/UifjjJHSngfkAiEA6xvVt384K6PgnFWHt9dYsqlecLknlNBy45R3G3IgyWk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603454821-69491ea8.0_1603454958311_0.3394220735018447"},"_hasShrinkwrap":false},"2.24.2-next-1603454933-4587494f.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603454933-4587494f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603454933-4587494f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603454933-4587494f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mDs+peB89SvWhe9Shikfnwjz5KQRrMPoHHCNCWiu0MzB2/DlRJIoPc1os1XKHEzVzU9ikRNeYh6tlPFrN/8C7g==","shasum":"91adf984d1d7769275ead48f583485209f75085e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603454933-4587494f.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkshhCRA9TVsSAnZWagAA/y4P/iZgJtj2jWZ7lUCGDxwL\neUuwvO5gqzGLWyaM3/QkHNvKffs0bRk7qBEFsartzeWqccvg/Sc+fG0rAY9+\ntb20ggtIDkXF1IpBoJ2Q8IS+ZWnD5Py/08wYn9bwdKPkyOi1GjoyhYZyOWgk\nM2ix8dc8x4B7e6+ccSSF0sP/j61QBDrg3MyybcjygCGqXn8eqLkB4wfATkY1\nt3egKsZ75nW+wFSqgrApCAg0csqJpzFClyOArazWYJtTmumQvKSqZoaxUhPh\nCVMZEwk2u7UvvpEIBel34VFcPMO8pyhdqcpOMWA5y6NNTx4DIZpScBN2MDAD\nlj/zLu8Xx/1m8iTdXs4wkxEn/Yl1c2PpdfVQ845bgoxWBMIDh936OG1pEo1d\n3idOa0alEPb3FheUR1kTgbn5E0ILZM1dGfpQyj9TxhKHTNBzAylHkN9KE4BS\nugPAmvhsfLbsdDqZWNQ5itARlvGLO4ylNpy/Mg9VQJWIgX3gb9Qxk/wXTCEH\ne8P63SwdptfIZWVa1i2kT/HfZ+h4gfCvuM5Sec47v8w7VaM0zkkMxG93B+d3\n+SUMoUwMswAYA3flBmh6sWEpnnl64MDSNgPKVWitML8KPksnuTCAKbllsuPa\nChvyIHn/XN/y2Ko0LdDWi0mLax6ThR0P3keLrjVe5GOvl0SXuPnQLe4/zg9b\nteNq\r\n=/IqW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFh3OdYe4HfRoyqsnZ4TM+rNoHq+id5cCXZY1WFS1za2AiBmRpO/iTd6VFWi9eCVEj1VBVrg4PwT9mLZurMTH1f7bg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603454933-4587494f.0_1603455073382_0.4477808848923428"},"_hasShrinkwrap":false},"2.24.2-next-1603455061-5a757eb5.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603455061-5a757eb5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603455061-5a757eb5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603455061-5a757eb5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DdKKYTxj+p4Y5nenOngGa29gwRo3nq2FXY3UDizjfipmoEzYrOtyYg5y1gSz3mTM4ldeatJc+0zLNKIfP69U1w==","shasum":"baaaf171f0276c0e3d1596a015b3bdb90eb14917","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603455061-5a757eb5.0.tgz","fileCount":58,"unpackedSize":136758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfksjXCRA9TVsSAnZWagAAZrIP/1/SoGWMq8cyTa37CR0p\nIMLmkanburvwOWSEfr0bNd806CYR1/4QmUUWwqByAmfoZGYNYv4dtin6WP7x\nAL8xoNECBlebumskkuXlajYEmMX8jloP6IPDTYWSmXYZBAWS3JpnoGV3U1JY\nHTVLim8M/THVhT0/HOltsOXWgVJfOazsyZ+QYToq4eeF/f4Bsgb1FnrsbdT1\n4w6JUcTfm6ufghZ/E+9niq5DS2r8GXsAjo1SlnVUcAsuOkOCL4/qoYHGEns8\nnhFVy26cPgONU68caYb/F6aTA/RitxQtVT2amPjlRfZ8ZP3jFZbn3L8E46fm\nJYTYTNaalGQqKdgI1RtdZyHclmaw1vcUxurkgvMBsoEy3N0dT3gKVTNDg6jQ\nAUVB0eg//J1Gzp10aRSiv4vSwcdZ3CZhj44CHbRkIhIFKuzvYJ1dPGq2KiHW\nyNuOnQpgT+utNGUOrVpAUXh32h5+VpbP11AqD9baYV2fRbh2gMn0oZBaOIJV\n1FudztrI0LynRo3M0qp/oCJe7KE1bDMadliqU84PMnXz/u1W/EY10JetQ2yW\n+UofdIOHXHn+/swap8eOad+BRGvnxIM2e35NCgyp2it4BHzYtmyrczjPk6+x\nMyP6hqf8pY6hnuS92d9rgqgV5U1JsLjSfAxjCqLVT6mXxxdWrbHu8haOeiYB\nGIFW\r\n=ZjAe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG7LDe677Gyz3Exq5IXsQWX1zvxhWsmDn+l+uoX654gIAiEAkgle22UfUzjQwAcQHtInN3Py9DOj8ngwzW6iJj+t7Hs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603455061-5a757eb5.0_1603455190821_0.3684785741433516"},"_hasShrinkwrap":false},"2.24.2-next-1603455826-f279999f.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603455826-f279999f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603455826-f279999f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603455826-f279999f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WIO8JufGDm+rd5B4Epoo0ZS2lEEKRDaTkrErzguaDUJr6Sf2h+7U9ihdM79P78k+C8q20ZkhLHhraKm4W3ingg==","shasum":"f7e52c54a17a54dad09912569da591bfb400a98d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603455826-f279999f.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfksvgCRA9TVsSAnZWagAAU6YQAIOl7+qDw/vld1ZDR9Vr\ndXA5O3uJmyD3oGiwbXut4n8oDb4Zm0QVqwTPmKD0neOdVkHTXRiQdMc2tLSB\nefySNiNtrqWV8LtigaPLVF6owPZBlYB3sBmpsM4AzuRBst2x7mhVs3pb7M2B\nekf8LrmEv9icwC9Mg66B5IaRB8jMZ6UaXlZ+HzG4fFfFs5L25P1Mk9bmG8EH\nuLOgmpUHFKgx393s1yh2BbWXqqaA4QYk+z+IB0mCX66ucqUnBqW+iVPWxpTI\nr4MnqGHixyaf0JgEcAXddqv5Z9hB4SbSzPUjZif6lAiHMcAXbDcUA05vEirV\n3UwH2lQR7hFACPArJ+NfiyyeXR2gZShVJ1R2+FDtjMcAvUhJWjodUzClCUec\nvHaJD69uOyYQtgubcPlOZGLf701nyykxyPl2qj6vexZyIZxi8Bf2xrjAqU+e\nFCpbXlI/k+ATpCQ6qyyHFTp+pfJSgEx/d5txAByEubtWecAbHDMIP6YRnW0U\nVGo/Gz4u0J10xKJudwN8mSNpLjVx6Kda3RwAZG97z80c2iupZ8zUv2WxsrHh\nSiwXgR2fpaX4O7dHBrmyj8GYC7ogpOfkaifIcIgkq9R0YTycidBWLE8jPq0T\nT6bg56c0dCcyDP1eml8G3m8AJp9+S5LZiWt6x3HHlV94s3377ICBJi1K1jhn\noHA5\r\n=rq+d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFsrq+WeX2zQ9wF+3I2J9oJBY7ake/aNOQNV60cNX/WUAiEA5OWU+lmetm/w0qUoiYNVvmXIDVemMpUMM3cpx5IUFRk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603455826-f279999f.0_1603455967499_0.011940454734375106"},"_hasShrinkwrap":false},"2.24.2-next-1603457149-4b4c966f.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603457149-4b4c966f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603457149-4b4c966f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603457149-4b4c966f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-RcbISJC78551/1nhspNk32C/8m6xKU1G+zz2NqssaOiv5LoYSfrcK8H2tAzfSRSkK+A3/HjEw2q7ym27xsOTfQ==","shasum":"87f6deb44fae5f372594b61847b4c31c86ae6c41","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603457149-4b4c966f.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfktEQCRA9TVsSAnZWagAArUYP/AgfM5iTbmRHaMvh3Q5v\nmhlA3kcJhTvEeMIm5GMkny7rwj7iDSJohylu4Cwh2WhY5GFA1YmAVF58YRVf\njhzhGIrp0IIpPw1nFvjhsqf6LmFKYSEjnDrUTDmeem3KOSW3KIq+Yr4JbU4W\nm8BNI8nc1gv6IE4Ed5xdlhhVgbRMZ9YBcb/Jyzf6UHgmdoVlxEIq5OkHlbYl\n/d3S5/ztXt7w0f1HwG98+R1d/44BbX+5UNm2qKg4NX8iVpOmDLehyu7FXvC3\nrItzpompRMIxthewshC+1vs9Vv/jdikwyu2gI0W4BoYzUetGPpsiCSJv4n2n\nVp1trdZUIOecXPJ4h6T2xLUf8YsoMRpoKcOpwRpcbNg2popMixr6esyEcP1z\ngng+I54H6YS1DVHlWh/hBVnOOjmhT4esruN0w3oLNv6MExqd4vwTcOz8nlmb\n7QFaY0BkO9qv9lI6g8TP3a6PZGkmWArWYHs+c6lCWpuvVQKXGctZk8fZnp0i\neQmsFkig3C20PuGRbKsLo3285QBBZQpvBGDAm/Fq7e6H4yxJGMjVXxCwPcyl\nA4QXVGaCyDNcFePudVtyRsjvQfzNRFIIhcWhhIHV1MwIEJtahyUmAt2eYHVD\n6KMxHbM3UVSfB2QN67kf/5RywSAG34e6maFem+PcHbpUvXGPCQTNlAwPLM4J\nvvXk\r\n=2Tdi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0Xl7POP7M76XRKhycgrxOr5nZXGmV3oVYvoPeAz0SyAiB9d1FOuyzJxJS/xFXoAf5YK+4k+uX70lrw+6v6L2OHew=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603457149-4b4c966f.0_1603457295752_0.9014680069692109"},"_hasShrinkwrap":false},"2.24.2-next-1603457879-b94eaa0e.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603457879-b94eaa0e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603457879-b94eaa0e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603457879-b94eaa0e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NLvLopZnj1HWVPyXbsU2EahXrFZUPUa1leEF0mguFst9n8lxN25sBJ5nkHWySY8/5scXQXBmedU4x7AWuzINjQ==","shasum":"87dc9583c2a03c201a84ae23542deba04a1e8844","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603457879-b94eaa0e.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfktPkCRA9TVsSAnZWagAAbe4QAJ5l2XTqOVWXxiDM7tOB\n4Nr9sFy+xILJ/j90K6AbjrcYIFgYtf0lXGMSN2b4Eu2vMGs9mt1z75Uwgte5\noVYaJz+udJYgW45a/zQ+QDjkIOeK++/19E9tiRvPvW1oCO96dTDhoaz6wueJ\nFtYsJF6hE6wfDaJeCyGFZ8VhIxdhtzucEnLgfz7CRt++8VHQo4a+bM0WF8As\ndmcw9kXTiPi9Lk8UdidFCYVHbRImgde08FHWfmgln8oYPMHXOmLSZ0ceNAWf\n4L/gjhEQYrvbuXuWMGRGeN/XeZDuhUXYYJOAD82loqZ0O5lB/Pcr2plYGqmK\nx9pOrrrup92DjzNubFwnjBk3Udw4dKGPaUohJYNVGW3pAcGxpYQHufnN9Gh+\nX2ChZa5+fYJmSdxqParVLRIu9wC86KodwfJmdSPS0UwIIrXMbAEhZl/Edr3o\nnYcNP0adowbPrccPnTkdT/WxzCpq4UcL9zRrfqMn41qi1Tnu2LmNrGtAC5On\nr8GMySsUDmhw74dvikGkDYk3qPCbIO/9rbGuONJBlkvAaDfhWoXK9qSOErKR\nxNhLQiLpGOKRtqtmVSC99lcY2F2Sn9n2gygzzQGxSYOvD1XXgOrfXf4BEIEP\nnk2EeL0sXWqi1bwaXP9IHzWhmC0LnhvlxG2pPu/G6SvgUKop3epeswOC8EXK\neCrI\r\n=e9rt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHLaHQr5/x55jPhKr+SUZCaxPp8HInwaomojBcG81+gAAiEA6k6SJ5sfVwCKS+qAcNlnnpL1iRGroijWha0T/7bdzvE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603457879-b94eaa0e.0_1603458020059_0.1410627953358905"},"_hasShrinkwrap":false},"2.24.2-next-1603457954-f5109fa6.0":{"name":"@xdn/prefetch","version":"2.24.2-next-1603457954-f5109fa6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2-next-1603457954-f5109fa6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.2-next-1603457954-f5109fa6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wL6SOIvP5T6L1oNMxl2hG8WOwJhVevpa3b5QThZ065WL89mul4g9YbzBZnXzqwA0zKxYPXMbukFdtnmFAmpDwg==","shasum":"fbba74f9c228911f7448861e0ccee37b2b7d5555","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2-next-1603457954-f5109fa6.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfktQxCRA9TVsSAnZWagAA3eAQAJQp52r1P8mLuzyx4XNC\n3SxIB/DV3CKn2anz+G5cnj3lQN0Tlh0QQVb8WZl3idrvELM3uhv7XYZYtdUi\npQVd4ZGf0aMyL3NdI+Nba/yQBHBjykm8F+1Wp4+rcuWuIl1bqCs/3py1x9Te\nlE7EwCMGnW8H5SVmPNQQtYerb6Hh4ydj/5OA1UvaEuE8jgMlZc+YMDOzdLmN\no6CJMcE1j+dOSJj6djUBDfKamOuSo7T5+FfxPJCa/3roNii1hOzbFsqiFOkH\nAxJCo7ZFEcNv4xVX1qwRfDI8kZBVj5Fh1VG1WxBkEbUbAU8EmfqoyztJHSnh\nbD/rxmLVCS9HvU8EhIzkKxycdt5qCm/dyuWB/wdvLGs5swOlOPVIevCY4flH\nD2aVU+GnMjLcFkKfbfPXOUcX+WJ2KcK8CSJy/tIMeqkl7MfhX5XJgUXVGn0N\nOs5XntJ3SmUPHCpJP3MHhpfD27h5a3NsVleLD1AcNxUO51jhqcy4huwkWbrt\nqN5MB6jrxmBCfCljcez/AgKp5p1ksEIoVDA3veCj0ESJb3LnazmzvVl+KFVc\nAyTVsJsyRjIT+3OtnRmOydSOzuOggufhGas44XYfKkO64g5o7BQWs4mXUrTT\nTI+Jqk660cDfnuvc0xF/eHua9GNeN8K8J0agKs6W7AMZktbX3BpD7Z7CojnX\ngxUn\r\n=Phg8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH0Vt15iR86rvPh6Wk3r7grbTEgbrk6KjqqaZREVMRKyAiEA8miaLCdW8BFpBt35c7QhtGFx5crA4ws1dXQM95HIDoA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2-next-1603457954-f5109fa6.0_1603458097377_0.5077827992484247"},"_hasShrinkwrap":false},"2.24.3-next-1603458209-2e145443.0":{"name":"@xdn/prefetch","version":"2.24.3-next-1603458209-2e145443.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.3-next-1603458209-2e145443.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.3-next-1603458209-2e145443.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-447F5MQZ15iYm3Q44MoBAxmOOS4N17HojdtidtCPCGmAXcDRuMgiF7Byocnts9ANfYpJ9Y1I7BycDByMtBH55w==","shasum":"65d7dd805d824cbdf46bd24c31dbc1c51744501c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.3-next-1603458209-2e145443.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfktUyCRA9TVsSAnZWagAAc2gP/1a3wKWETjKOfmBsaktX\nHusSbMbDx1YMFhJecLJrrba725l6polGkXpKw3hGLSGkub9VeM3pYg5a5vqI\nPylsQVamg7vy7ENkzuR69F4tyC0lLMHN0MZevX7QgzSQghtsq1kBysj/bko/\nGxk2VZVar3d08lCPjT6CkdsvccZs0qKQDHmDk7lyR4ctdecLUTQDrdQmPMNU\nQ5tpR3B3Nj+Unqhv7TLa+b2of+uS5XsCVLGYAJqVqOB2byKnZCqpPIPMQjiW\nzXJsiJphZ+9YLXe+a3dZL2qvf5aTdCtRtqQz1GLo+E8I/XBLO4CzSXAvhKq1\ns4b5g9V0FP9RymVzaLBWlSEOhNIMJUnDd5fAbm7ll9tbxhRg5X8l3x0O545n\nkj9ckeXOHLJq7tSHUxIq90yS77TLkpP1vjKPaROijeIrkgDmJ3+3uxzg4hvo\n2liWaL7H4ZJolg5eJfQ0I1wwEe772WfQSRoJk0DZS5yaZ4i3Q9DHaXpKvPg9\nO2y33oB6qsdC4rH4otcaevahlojJGg+qdRGrSlMZFKtzd6s4QdTus2rtQ1F0\nS9kY1WFISLmsF+oXcXFX6b7toMUr8TIXobziWPKpSkgo34Elllcy7UNts3Hb\ntPd6w1IjgRud6BJS7ZJVVNJt5r+9uZrTaKDivGAnPNYU2W95rPlkn5nZcqxK\npUTg\r\n=1WjK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDqGFgX/Jnhddl+WA+AtsDKZkGmw3vCnxk3cL0BBxX94AiEA6QhyhucY9MmWL+ARjVaCdnAhVE3H3U3A7HFtk3VhDsc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.3-next-1603458209-2e145443.0_1603458353407_0.6361292254030606"},"_hasShrinkwrap":false},"2.24.2":{"name":"@xdn/prefetch","version":"2.24.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.24.2","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nY6RD4/cNNOHAnouI7DOd8vyut6GlLZwyKLYuZeVpOryautZPu45w0NJkYSJpSshr0Bis3v8cWP/Mm5RHK9hxQ==","shasum":"8357e304c56b844ceffb57a85d5caba9b9f6b32e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.2.tgz","fileCount":58,"unpackedSize":135842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfktZqCRA9TVsSAnZWagAALiQP/2zvnSmuuWwy7RQ1598K\nIEES63uO+CJgAdc1GOJyD0ZcEfLuw71uIzT9AGdPahuo/MaCxI0SRS4v0yZX\nRKPMQgz65safVjYyVHChStY0YVxJ30GNRWPa+iIVpGqRSXnCg9XM3cDCDtKK\nTlA9wNDUwikae7tkq9y/nszRAN9uFNN6H9+m4hiaXzPFrqngS6e8iM9E9g1D\nxObDxY8pLQ4tgxPsws0rA88H6LLro9YEi8UhsejHdNTxUrivqVPWDS5ufi0l\nXIGrT4mILA7vEl4m9nwqo2pzDVTQ2xrSsqpFpFpuhPMvRf93Rf6txz5pGKSP\nA/EnZSut126Srl9HWGu1W4Nm3Tl4tWOPjaapeRNExR5v3Vqj1jiv+ZN/7o42\ngIqG404ZKjeK/4dp/4wYX0M2Sg4A6q1aBwXbRMLrUKTHtq8PRkKbFIxgAfRO\nLKhNk9XntSYkDj9cH+8SJ7Cm9G5LBpHOJPFHPuppTYr0bX4hmc9H5FIE417H\ngYBDHF+v2HQ5h/MnDxNYWT+8x/leU4UKUD5QrlevZA+tgFIO1mgkmusScCeC\nYPx2fiSuDo8K2jFJ3eOVFxpPs/dRakqHJ6FHjsMKkObMmTO8cmoyOq0HJZ9U\nkiMoFZsgeggLIfxmd/lbOoU+ezHmaPqEYPCzs7L2/dtH0E5syViUYtk45xLE\nVxK/\r\n=6rTq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEp5vOti0a+7S8m2hn/NVQNAJ8+MmqjT2WaLlLRlRz1hAiEA4zKE6dXXb1eoPXu6AvKzQZhTrAVBuDf5eC6bhYX0l+Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.2_1603458666054_0.4206597017599307"},"_hasShrinkwrap":false},"2.24.3-next-1603459068-1e927a3b.0":{"name":"@xdn/prefetch","version":"2.24.3-next-1603459068-1e927a3b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.3-next-1603459068-1e927a3b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.3-next-1603459068-1e927a3b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JObmoalXYfvmGLfLL9yTezvSwLjkwUxXcBSqF6WBUoFwY6bu+xs6oeadrvOULe906RUbt/0WJq/SEWLxzZp/eA==","shasum":"461707d5486bbd014d1934ea7e66161c03d6cda1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.3-next-1603459068-1e927a3b.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfktiMCRA9TVsSAnZWagAAb/UP/jGmR6F+3U8RX6iimoQI\nMGCvP2kWPjMFxl3EnF8cKtcT6SFVRW86MV0oFoSNDbMPQ10ZkQxRNyUTpfrf\nzWAg9pMAGgh3a+7G+qTv9YxK/nIQMmzTNC4b/8fIX6jiG2UKO2LqDPJb0vt4\nbspgdfADeS9pZuJXEsynev/RWgmysVQRSIFXN6YeG7IgsclNnOKeGvW1Ja5H\nq0dn2OLCAHi2RhnAx5qpbaENoa31Mim6J6VviCbj8Fdsxp3A8Dqr6+I+e2sZ\nrTROXoYYmBxR3iXX5M0rSGQr9/Sos8Ggzy/H1RF5FLXj1ZrE0w7ednrZdr++\n2eDH0HmcRRZq/f0yHknZupAtsOmFuzkEy1LhpDagdJaGQhOEC4V6YQgYcDVB\nuTjaQoTwO4N/CtxpLsaB59svofPXwSgKN2WvdN+fT4Qe0RbrsC7kC8Yt+AfH\nRwHXpQyw909swUuQu3eeVvHrcEPXfEEm0D3U+/YkkCmtuGJvVLIygJzOGLZr\nI3q4aq+FXTJ0OY5pJvbowniIL9wLUyNL6QL0KcT7dUahTYy7ZqCLQQBBPV3F\n42yWkVgbCwZlSFoal4EFBrUbpgPJhJQ2132AbBQdcFSwUSSpFOeZ3OvBoxwr\n45MXxPeDmDRawFCqaMSUnjUugZtX43bU1eyVeJg/DerJpFAHPZQzj9KFrCJO\nPXhU\r\n=1bfh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfpznzFCWf26HlSN1DosdahvP75PmJKfhcJXK9hVKbywIhAMqSLDIKz7S3hp8jBCo+xbVIHQrKE6CkPOZ2gADkJYav"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.3-next-1603459068-1e927a3b.0_1603459211995_0.3299306417040573"},"_hasShrinkwrap":false},"2.24.3-next-1603460752-e18c47a4.0":{"name":"@xdn/prefetch","version":"2.24.3-next-1603460752-e18c47a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.3-next-1603460752-e18c47a4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.3-next-1603460752-e18c47a4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YQ/OvLbgmCe8xHcENwUkUM8zQJa9M+3AE7NSLnrppAao7J/5EMoOycL6MqOKZqEpSF9KE6yoQJPuLANtNoTlKw==","shasum":"2191a13e6a85f563238ec9985c275b29511a7c4a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.3-next-1603460752-e18c47a4.0.tgz","fileCount":58,"unpackedSize":135896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkt8fCRA9TVsSAnZWagAAdHgP/iYGjBgQLHJFa9XDm+rh\n4yDCPuM8HOC1yvoMZjNFXWMQ1iMVX+ELcD2GJLYblh7z6ch0twX5PJEbXRaG\nvBEdEer2FILDezlKBMOs/okzqZld5z2dlw+LQrFsVRbXD4/EId8gztRRu8Gd\n8zX1IyPhcnQCxSl1VlG4Hzo7cjNDwLqD+zxXdkGeThE/u2kPLVPx/drcz/V5\n1+c5enyA5+zfkrFFtIwdVGJD/A2oiVyVCp3Cb3Er8RYrn7AB0tV3PZLPh8fh\nrG/f7QEkKdy9LNzVNlp6z7kCe7WuMgNSabriH+CVNcjP5pb7ovpVP1Vykyj0\nwau8/cid/JztNdcPXH1ytC31NjMhfokWvPDq4e2L6aVeqQAdUWnT4Xtoa79R\ne8nQ2WRjOWqPtqb+jtwXXZ49UZ63C5oy/2Kf75mKytVHpkPBPENfMnkOu1uc\nMZcnIrGMnHYDFIWgNCQ3SIJ02lD8+bHspRmMk7o34OrS0duwKolfo/iKJ8/N\ndYADPSSVzVg5RxJft5l/i0NFIjcMGota/ef8uaOS2oyl7UtHc4BpP40NH/9p\nKRMkSIs/wLNlSSUMMLaPvXD1P66jEziv5SZ+zzKsmEiTQLgfYpwEIAQ36cht\npxVdWBTLIyC4uI82NUJM6JO7xa1UkgRbE3xM8uo/TcnZP6AkupZOWH7oqh6f\nhnNO\r\n=NvvT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDFtFj5GfqcBuGLitWnqLNFUo/9pRt37lEqemwk5jkkoAiEA0Dye6yPaUktMLX4dNhU0qLbXCcPjItcfHGeYk+Jbn1E="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.3-next-1603460752-e18c47a4.0_1603460894597_0.3852634806951809"},"_hasShrinkwrap":false},"2.24.3-next-1603461838-cbdab423.0":{"name":"@xdn/prefetch","version":"2.24.3-next-1603461838-cbdab423.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.3-next-1603461838-cbdab423.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.3-next-1603461838-cbdab423.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Zbi6rfY+kGxsOnEZE+XL1OL+rYWb5FLRDWHy6wVGnxTr7tQSlMLgOmIWWllOTuVlXqr3EuqCGZaCkAynNXGXHg==","shasum":"c9b0531971531f6e8502a9709520ddeb07805d26","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.3-next-1603461838-cbdab423.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkuNdCRA9TVsSAnZWagAANDwQAJo4rIF/RWU18cmw05Ko\nPT/Rmly+sFBgxAd7ck19iO8WyKemweciEITjOn5nqkGP7S2afCepEoK7I07a\nG5XlH4PiL0klIlksYresI595+TP4kgPbiEFfQb+Thhpl6qyuPWU8AKwrik/d\nt3kgpwm1GZP+TdSM6LyGWlm6ktLEl4xn4GPpcutatikV3Z9N9LH/wIT5hEHq\nhBhNRZOO4lwFjvYp7tYyxTwjc3F+6jFB/1f4qOU+bb5TYP5R3fx+3K9MeN2z\nw0Whkzvlm3zSX1KRHyZKRJuoEM6niNaJm9/pENdVRx63rZYKLcQstjkO02uP\nGaXLnn6Fq3EenhMgPKxaSfFR3UUjOZ89JX28XLXpATg2Z/alp5Wsyly5M263\nnOYZuCcvBUgaw11Vw4PwrvRA6+uUq2MHFq0CRzLnb2G1EKGA37VKCodQXo7K\nvgkXQN9My2ccnYUB9R0KG4l3Mc8BgM8x/AG9BUffMTkuE+nrVRyDgYeCHAAM\nX8lUAbIUK1I60nD//QEDmmvsanu7ruItN45WeowT5h1jJaZAoHvLV8A5peo9\nHjEREaF4Zjt1VRJVaRBnx5URZcX6nBeKmmUw3glRTnx3AN5IBZqct1on5n2x\n5lxFO4iJpEixxi9TOMbynfoLbB4+Y8nof93B9ESeG1Q8PO0UA6gH/9yEaVsH\nvozt\r\n=BIWA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAYZWJQkXfuO0wriESIYPfZD0I/x+oIhL/Ypn59pk0f4AiBWbqCuLL/fRQdl6Gv1ZmCG9Z3tbMOV51MnVQ+16Ejx0Q=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.3-next-1603461838-cbdab423.0_1603461981046_0.8257542539715361"},"_hasShrinkwrap":false},"2.24.3-next-1603462683-8a8dd4f4.0":{"name":"@xdn/prefetch","version":"2.24.3-next-1603462683-8a8dd4f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.3-next-1603462683-8a8dd4f4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.3-next-1603462683-8a8dd4f4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+PADsc86EIBBEWx2fMYsCHqG1nae50y/x3QWLNvt8lTOwEPs7PDIk8poG5uT/2wycuFvFprCKzjuxJ2MG7orzQ==","shasum":"c5cf3d865c6439b3d895ecc56f1a2f8395a34f73","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.3-next-1603462683-8a8dd4f4.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkua8CRA9TVsSAnZWagAAoOsQAIZbfFIK816daitN7A1A\nvQGWIuaqK1sVOYIhPFwXGx9qg3XyGolPWrgPzIki+ZaSJxiK/aI2SEX0en1G\nrAdE8adVuD48JwdVweJ8mH2tD9AxIJb/x43dDMkUdExV5h0BxT8VfhYAMh1y\nF/9M2l91qmjBjjUrPSAW6MZQq6dCa6hE1CjU1lCYTXfrQPZkOvvuNVdvVR0U\ncjr7uRbquO0AD8CgcKRRuBNVJdr7umv38tcFhURvWmBqMllyzuRgu8z5JcJT\n6W859EcyxquO67u/R1LYYbz5dFVV6LRq2W+TVujc+jYzVPD3GTLIoHZ4EAcX\n8xjqW+dcOaymY7Tm86Nwss45B9+56aTmoew07J3cKphfjEwRqaLdKJ/PdcU2\nbN5f9GYpXo83fGTFc/Sb12Oc5ENeIzjuhLmOB+UzvbxAMTcXhuU+2liRvorm\n/8lFHiF+/eiHHdxTtb+rvOpAGyaIU/UDfQWiPrvT8fRWL74O2REXU5P+Ztmg\nQz15Zn/W0mx9Q1oiyAxaDm7spc7bMucCnopWqwchoitUt9lzCtEPjlAWYVcC\npdnD4aDC0YGC4Wz5qibTiTnC9ZFr/3CFcQ1X0zAlp6FyDYvwquefDfL1jelT\nIWE2xKuhustquhiRCQBko0G1bEWgGnnLlAJcfBy6huX5f/LWPCWeIf40mFJV\n/fgV\r\n=0EXB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnOc0Uqr4mGZpYhdPbPW3JMlf5XigN+1p5bcZpUIEs7QIgOHShOKb0p6nuS2lali7P/8hz3TRlrBsaj1n1uEo/P3Q="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.3-next-1603462683-8a8dd4f4.0_1603462844254_0.6153508520138766"},"_hasShrinkwrap":false},"2.24.3-next-1603465195-34727386.0":{"name":"@xdn/prefetch","version":"2.24.3-next-1603465195-34727386.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.24.3-next-1603465195-34727386.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.24.3-next-1603465195-34727386.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zk+gV3PQu6hI6DP/GNcDBxPCiupkjZj8AdWh+6d9v5IipYtFhBIM0nxeZG4WYKDzvZ3mrXXiDOBxSGKBAiJJqg==","shasum":"a5892c52148f0c65938dabebc39bd209bc4e201b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.24.3-next-1603465195-34727386.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkvCCCRA9TVsSAnZWagAAFa8P/0n7W8HH2ZV/THA+zZ0B\nVN6DLoBdGKqXCzUBtlGWUDqd4to83tMjLn4g1eyKtcHCN4iyU2tnKGajjwva\nMIagMjikFltSyGd0DfW/jJmbBxD3ibuUj578J5nU646e8dT7gi4sPCh9njQK\nS88cQAN2bfoIGb/jr4iWpjjzDt13F56fApDEQmcOdifedh2t7ZraK+utu8OY\nPZ5wnKBu2VymA6c2nzS+XEvpIppkmlis70K/gDOJIN73GAygff9mN9I4mB/f\nrLvW39UVpT8Z4FTBQjXi3HEyJjtzoJTDZD0sI1v6gsZgyV0Ez88vlWzUTh/s\nWwyELRQuNIW09M+WJEJDTRLoxgXiLTcQwf+OLvNFbhx6CkKELQ8C9od7bA6o\nDhDec0mQ/gQUHnfU+g13bnSh09etdtbAXcV34xbthtwEAMx6qXmw1p7XaaN/\n8U7Wg1Wqj8jtQRdXDbTU+1ZhIZWGeLzpn92A6gicXpa5NqMv40eVpaWiTsWs\n+wUZfm+Lci3NL8/Ju+RvWP3NYpHakK+MTv0CLp385LJyBxeIQyPDIUo+QpQo\nNZv6/H05xswUyrIxyD+J+myMk52iqZcn+jKg/zJQ7MTwKqP7oxWV+O2F1H3Q\n4TcJ0WfTzmf6mqfkGk2ptT+2Dc6bJeiHNQNalDbCXbHLxv6X+mZuR3/JICJH\nZoa/\r\n=ExFS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC/3U+8wzm+1VgsLAmhkzY83SCJidxWPzclPE+JPL53+AiAXplrCB/eU56T1ValU6ILlq8z87XsRaqHuMPODpzVRyw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.24.3-next-1603465195-34727386.0_1603465345532_0.8536963419874493"},"_hasShrinkwrap":false},"2.25.1-next-1603465313-c539ad40.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603465313-c539ad40.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603465313-c539ad40.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603465313-c539ad40.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HibGfAjTi4GykQEBJMuFADeH5YtAMz7NJUDrG/exn9a732kNVcPVWbCzLZ/0wkGruywcytejFygBQu3sv9E4oA==","shasum":"2de936faff1f2a37b6c4b1c4c11e28824e5c5601","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603465313-c539ad40.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkvDpCRA9TVsSAnZWagAAuAEQAJotJlNRFtedqRjRzFMk\nMizO7+0OZTRP1Ag0c6AeVF7sp1iKZR1qW3/ssjc46CamLzC9FD81wsBAlXS2\nFXQgJIfdd2U2d3e2yuq44nxzr3KmJXoY7+PA+N0V9QED7ntFsXzUX4mlD+aT\nxkx6Qx74v3hmsev2zbzQT3c5tMPZdQZacgl/sWxJUst/3Uqp1GNgDM9Z3NHD\nOMnhaW4Hv4MDTSnTmdPAQakJPaYaeAEFchaPC5uS+7qtSjIeaPwaOl2VKlq2\n6nFgIYvxlynmLRFH4nYZDSHfpqrfgVMb90XZx4PLHezBNi+weeE8WLcx/iz2\nytnv0IGiGFoooiz9fd3m00ty+lwxwhR+hHitViHhNVwwLMANwg9Cs0NUgjjN\nCTK2ve8VqaYYzKpe96EbaSVOmBKdFdTOvK84vf9Elc6TDNPoHJUSWyavgxv5\n4XBv4g/sWiNql64TLxxM7fSdTlzThtXTxRFbvPzGkqE5IYuyYsrYOmpSYBB9\n6RQlWX9kxMoqve3aHBELqUKTZ5ZFjontogJh0aE6Fudlq45rmzstGou9BF+A\nbiXxIxJD60ebdn9058DpbHZvy+JfNRvbHD1hsVLg6jdRZd+4Z7lEUaY3Mqjj\nbRqiz/r16fRNRdEKTMi4Ssquwz0Z/gN5FQCTbzlgvQrTLAKzVRhdvoBYevqh\nk9yR\r\n=9eMW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSaMKYV8DoHDTI2d5Q1lZ2s4kKutpTC18VJZyfyIbcGAiBe7sqmvXhwx+CLR8pRaxrlA4mgOSoOwskUOFXL/r6nHA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603465313-c539ad40.0_1603465449323_0.9210483053701708"},"_hasShrinkwrap":false},"2.25.0":{"name":"@xdn/prefetch","version":"2.25.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.25.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AQNf8vU+49xruGkOcCP7L4RakTdRAK2o8NJxp/JLWIFNHjtLqD4Zn6MSs598lis+FpBgzDHnAhuVE0PZ5RwwCw==","shasum":"78b33304bad12fdd2d4e61c9680105e5022444ad","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.0.tgz","fileCount":58,"unpackedSize":134890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkvhNCRA9TVsSAnZWagAA7jgP/iBajtgS/i2AZIBEghPu\nR9vATD2bw8DaAUH2d2Riu72qf8vIaEgB8qGH6ldR5uaELVj7E8l3Db73ibw8\nBTpugOccKBryZrifu7E5Dycy5vf74ojTG5DI59ijrZSnpB1nW7oqgpu7iAKa\nsn3Ckw2kBc700nwSZ8jEmiWo8UCzUx8v02xNrrMzyRLqIMsdOhwJV+Zk7ysO\n9wwiMjwnczmgEAI0EADULLoS7oXZC00Cpou5auAo/elzh/qXZKo1vmT3CWNR\nqoc3UAFDmF7F0BjnKkUcLEbBSRSojcHSUqtyGxcqumCa3wzcAiNUJDLz9UI/\nAMlC/+x+oXHzEieKSkYr45ABEX8Rlcs+Iih0gP4wj8qROixCHLW0TN4r9Nck\nB9Zm88RckmGkuLrrUjoLEaNScTqAmys60VoAUT5roe4yII9u3mrrBepdjPrb\nMd68Q2ijGMO8Pk5eowzPFU8746SHx6d4sshXL/c5JgNX27yFJuSH36jChVMP\nybL+FJy27uSZd7Pf4JV4NiiVf2VY6ckLowgLdmyX+4dr/fzmgMPEWhP46R9A\nde3dpiPsIvEQkTIkJ8pgf5w+cTFR1biUQWfvgH7rNxAjSOBoDEAHj7DV4WCC\nJhDezThlhjKYNr9eRGbVt5pucolcTr6v6SCfPbl7MMiGiPhTKx25PxPqsA+M\n9XVc\r\n=Xw4V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAijIeJTdHfpgC/Xz+08lcR1xMSQ6P6Qw9uff7hPgzA8AiAMKkm6PPs0/S+T/WyroQz/dp+w7tUTyK2JV4DD5WftMg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.0_1603467341332_0.24550566563093112"},"_hasShrinkwrap":false},"2.25.1-next-1603467477-9b01f0d1.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603467477-9b01f0d1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603467477-9b01f0d1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603467477-9b01f0d1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3/nVgSsadtirWIdU1AQaYx+RxKGaaRkIRiXecUzKYl2HxGRj2a5nmtO8XdGoeUxkuKo1uDF4bQvMdsWk+d795A==","shasum":"2adcf5054f07107d59ab85dcf1096c16c4651837","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603467477-9b01f0d1.0.tgz","fileCount":58,"unpackedSize":135806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkvliCRA9TVsSAnZWagAAPQAP/0vZkjWzwYogPz9Hn5+P\ny2K7BKP2DylOCZs6pCrVmptcU7FhimqqiUiQXfwydFqnvqch6Ji6cu4yLreW\ng5HWIMj2kPZsKmhFpEKZ3OPxqTm5k+siKiEu2f0os7KLoomlAd5Pmy4NICCC\n71KFvJmhPcnmOlOvrTgz2WV+rwwnpeR//IY50MpdDaVIQGbrc1LRTRxj/CQO\nOysYOXbqrQDFh1V6SVNIG8spaj5ufLsIeZObLpWks+n5Ha/PSoLPu9r9LFJ8\nyrBa/3KXV4Hfq1pLBYNw9F+pcjx/PXpMhwoEnefUDD7x/2sMIzXXHJT5ygEq\nVsESU+mBlXujMxgU9XpBAWe4moSw9xv2Lui52k503fk7PisvcpurtWXjxtBJ\nFryfHk5w2J+GoXKVtKMoSzpMkFdoEMQ7eJx/FWMx8GYpi5A9PTPNPETej1tp\n2px29vEcj6DxKEGN4yhUkcYiF+H5ARmcKbNLrMLMOyiEijfz9xUm1bhZGd/6\nSSGjFWSD8XBKkBJxcWTM1xb9sbgj4cd2u2IZkR27w6b+QTJlsbo+jBuPTDvz\n0iJ+1ePL9T/Xa3ij5mma8xZB+mo6VizIXN73pVMLaT+aUfL300g0AoZD2MGP\nkckfkQuCWzoPzsJ3UE5cHpvYq6AhC0WFJ2yhEB1rK7efUcMdheIOv24MY3Ng\nFmVC\r\n=4rBg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDK4ygcYHNn4tMQobfK3qWva1Mx1ZcYgQxGgPwqre2CIQIgKF9IJCiDEcp/WuVg6FXwWnFvQLjr2xGTHQ5CTwqPpaw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603467477-9b01f0d1.0_1603467618118_0.20365718003936806"},"_hasShrinkwrap":false},"2.25.1-next-1603468527-084728fb.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603468527-084728fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603468527-084728fb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603468527-084728fb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ey5eRJrNODFs9yvcX9Ef/WNysWnL6u+NVbX2GuKH2d+29wFUIKE/h75ApF44jPuZTk919f1qFfQmdCq9oxejVQ==","shasum":"571f49112408d76f0d3535e82909afdfc96ff4cd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603468527-084728fb.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkv2KCRA9TVsSAnZWagAA8foP/3eU6eHjaydxWCITwEVO\ncB7Zz/CTYym9iSjlIreHQ5/JlSVR65IcONaH19jGjI3eSAnd+M/B1GhevD4K\nmD2/NnYAjAeUHf/DMcjedtNLITEbMQbzMq3cwk4//+50n26PdPv9ZPJ70+QK\ngP1+uA6gQq0LrEp18hUnvH0vMRFuFMK2BC6X/KxDEhsZ1+9Ot75n+dbiogUH\nJp+Q0hkp7pjhaFZD5jInxOUPKxf8qfVx/IZAZ58Jhg1+0QtaNL4hgzhheocH\nTTbEK0bm1WqsLcPLJVg7ApDF5dQiq+FAg4jJMAOjS8QFk5TZLXkjONyqjOoo\nGe4N45DLSKTkEJXvAQTbjhTi3LuAJtPFJKqoxWdvGP/p2VzHBC5kL12KQOl0\n2M1fgRUgqWWaLpZNfLkf3r+4v89/dqZmCnI92D28XU62mmfm2x2H27eOkTyP\nT4bL7JArIqnsQ57CFcOISKZHUpdYgz5C37MprY0kaMH8rNjM7phdsPhFXYg3\nrvFjM9YqTxo590kYt37IszJkUq4cISXd85C6FUpnEbY0qhkgf31T+F0duklT\nNJ9e+H3m21RLsUXgqC1Oh7QMX5b4VWOPFK0hygv6vjYp2QYdXGwIP+acDVf/\noauqj5h37/9J9NCoMhjCvNqgeTQ+IGVrwc3pdIp8f6FjsNX5b5DjrTi7ridU\nPnLx\r\n=bzGC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChudvaxlnrmle7LIwj92Hk4cHaOzPdQyBAXbmUu2k+3gIgcDhT6ha+jN/46iCEtWefLGFuHVkZo9l9x43Xm5QQL4Y="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603468527-084728fb.0_1603468681480_0.5029675750142943"},"_hasShrinkwrap":false},"2.25.1-next-1603469448-ee7e0177.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603469448-ee7e0177.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603469448-ee7e0177.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603469448-ee7e0177.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aACMFf1X1GYdZvca/DKph071IZJEof5CQxbxJrD0/vGjfx6GRJtpCsgqG0/VG2tyAEsISbmwrRTTZWlnFckvKQ==","shasum":"4017be6106f4614373738212770d18ca75e43d78","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603469448-ee7e0177.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkwEPCRA9TVsSAnZWagAA/nEP/iU6FmxDdBU2bnHxtQ4V\nsk2uG1O/N1aktoQo8IMFAx5+J0+Kcs7L4gy7LpPYGgvICpZp6R68thB4R8Bw\nypb002ulqyztWK33CqFfU3Rf7jR/mTCFf/t3tySVyhJ4QJ+j8XFaQBnEsaTi\ng2anaXHh1anxevwo2KWK7s1EacnDzxAWpEsd9S0nw1kTjdIaPfzrUR6Podo8\n/4qcjxP9NplguX6LyUNMSI1dC3FWwtKynEnT1GkvZt5+1VgNfRaexBOURVf5\n2CHdzG7K5dhI0Q9T5R81mCMv3jL6Cl+JiA/XS7g2IY2uGH3x6vT2IOaCJOD7\nQ6AwnSBoC6QfihPkSvj4AGZnzKWhn3eyBFSCkBTDqnnY7FJd7SD7JZCqRRpF\nWp06maTpjMewXV0qiZ361V0rWOHlEwfwh/avQLR0OHpt8knLKoG8fwd/MUbE\n67+iNMFQ8O6JNv5mKHSHNBKFORjVLmB8oiZAeM3PspK7jFgX9NaGQDbJltig\nMV9qzxULIobOC7HDfzbpljqPSzbBvyxdzyuzGCviQvfh+bbHb39Ciu8lO3Zk\nDf2lmvDto3r2jsjFrdHzEs1u8yuuujqiWXQRJnv+mqS7+HnP9r18Thx58zDj\ncfH7sOb4OKeFAseB8NyUIquc31u1icK5vQZ3bDU4EY4105uBG8vQp3hPrZtV\n2Q5v\r\n=szqo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEdUvoQpzaUDfjU2osL/BqEXRRy6sz+4YOXYv9pifCdRAiEAq3CBTkJsuQFamVjUk2HfUwRFm8Ip49h456khZuF1Y08="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603469448-ee7e0177.0_1603469583366_0.31971600988588533"},"_hasShrinkwrap":false},"2.25.1-next-1603471075-509d2d87.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603471075-509d2d87.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603471075-509d2d87.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603471075-509d2d87.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YcPJ2C+uDYa7iog1HiOVa7PznBxeFDnKJj+akhkxYPkk/T4WQjvcl3qDgyS8io9elplcDk8AGwh9WuTKTGhWKA==","shasum":"53ca41339e145e06ade148b0d4cf0bc901f9ba65","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603471075-509d2d87.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkwdsCRA9TVsSAnZWagAAidIP+wbtvEYKGpOIgtS1lA5V\ngICdiY9JqvRWEjVWNYeNcs/zGJJRLb/esIudG/YEebWYNb6P9R2imrv/Qxfi\nwbp2XgXX/tpMnSLGHUv8egggWtjaV1ay3rwuN9knXnWroqqPEoO/0Jk5lAXf\nfd+seSdptBvOau9FiRlcD7S3a+mUS8Re293FrjQFKYwpmTGs9w07//uU68pb\n/k+NGrD4/UlLQSuEvkDVjiqGyeFo333kzGIyFW8Miy0s6QEsQYXreVYiHw4S\no1Bm7VCNutNF8MgPr2A3SuIaAGq8j32WzapqZ3XkBXQ8b9qXBDbcmT/QkgUq\nFpz87BRJtzSjB1xKFODU3Jb5PgAmyynK+MIistw5LiHz66vICsn02U46S6TS\negkRDoWPpA9/tA5ho2mE7+4o9lhOHbiZNv/CaURzLP5OdXGGRc1O/oCiDzTZ\nSpS+S2DkSZa/cYK5oko+rjI/UQUYYY2NSAtcB4kQOOuV55up31dqjaTA9h+G\ns48Gp2B1xXCwltW2S4TsfSJTvpNQo0i9cWV45X1MaX3iUIDsMsdSwbcK8vmT\n8aLwyBAcDfhvbGsplqns0kyDcCcVay6P/eee+/UZWd0m6uufGrqshO1IRj8W\nYD/EZ6N8TqTlh3eefpQGZUeCc0MhDnA1QnawCJUBJoKlnknaGHP9VLUxUw7E\nsgxb\r\n=auLs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA+ILR8+Z8noXMtuubnj/GhQcE0Hb5XCXF0S6fDN/mt4AiAF5yylv5D+6jA2Z75C4hhfM2qMqt/+s81VGafI461FRA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603471075-509d2d87.0_1603471211470_0.8598570504488401"},"_hasShrinkwrap":false},"2.25.1-next-1603472478-400993e1.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603472478-400993e1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603472478-400993e1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603472478-400993e1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vQ43fGFmq6Q7nF7srWmwZfs/DAWFEVdFZ6zW8qFXaqSrkYif6oavcouGRjkCf+0VfRX5SzIHClyYJ0wTtFmjLA==","shasum":"cd3adbe01385e5a331a334d5f2a8a6a71402429d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603472478-400993e1.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkwzqCRA9TVsSAnZWagAAsKAP/j2CioCmnFKBooJ/soK4\n5dTMEwlWnj+CWPkYl05XhU2Psa+3XckK1naEOkEfVsYnwovvhHVA0ViKpIxa\n89+ZbS8RozULgRm0JgUXm4MUdgotnqKRU+GtIWcr3a59oc8ZYsseZFjZxwmt\npZAZNjKhUaKWu6PXEzKyhYwepeXAu9tn9N9Q3JeRB85m1Ths9/kucGJDsduu\nBZwQTOLxyRGnn4r6mf7i7xq5EColh7V2WGD+ox4YeT6ctYjDYTlbFnHQLB6e\nE+2BW+th5WYAaU7O4nQ7OvnINi3aTLI7xPJdqhumjhcj3ORTEIRS4rtOGl0K\ndpouj9qAhFDmPyf/5js2hGWEDbZVQNHLE0T7vsRn7ysT5XyalHPc7rPAxdL/\nnfBsceoyD8h4UwcFN30l3s3QwFmT4R2qjWKZ5+8a8lYE+TgNQUXBLkXn0zAZ\ndM6jeYYSN+8yXuZU7TUQwvLowWH4/I2rpjuJQ8HeAEU5OCjf0+z5uW6PMYJ8\nQisvm9cmi657g0GYn8YC5RwyJObohay+cy4FFNsqbaoamJCwjYNHqTj5FHgD\n31ouHMDqDj1M2zaJ+1lUq1o9yIWWP7fePyqV4R5ASn65YuzYZnaEoInjZGr7\nfmiJgrWubhYZT5ATT80apjarCUf+FuqIO7kquN6kaEFms6YQJPsVqB5Xg/W6\nYWkk\r\n=t6fk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpR0xoviEWquXntlcXtKUA2wiUMJp6X98jAhKzMhrR0wIgKMlmx4XxfGjiOeYKbpN9xWd56k/OfYBYahUlIp+ZyOQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603472478-400993e1.0_1603472618059_0.4715036561300354"},"_hasShrinkwrap":false},"2.25.1-next-1603473470-400993e1.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603473470-400993e1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603473470-400993e1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603473470-400993e1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Wsm1KIHG1wNdH64+f+2Hoa1GOJ64FafS64obZwbCaeO5CGynVcyejOI5pEPM0JTU3p7fxPNPHSqkt/LYoSc+7Q==","shasum":"a8c9c47ff061b62821c5ce8b1190292e258d887d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603473470-400993e1.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkxDNCRA9TVsSAnZWagAAOv0QAJIUFeP1CJ2NxuXS5RBy\nUnlJX5euB0LSBqNyLc00AtUhdq8B9Q8xmFudbQGtUI6t604V8airodOjjNDv\nQya50C6mSQVQVA3TBBQQTHjDLKxrGDLAYvU1mN+SJPkFUvUdyR5MpIJ6qzoq\nx9wF+kIW+q+p/N4yIM3r4pD2raSQU3GhPlPXyoDgLwf6DmthchdwK+7duxFl\n/UiLq6biYcY+s0tgJuJ/HXBIopEZQOF7hpU3gsszaPmwDxqyK3LhemDFqlBH\nTugF+iA4GoMpHxzifjRjSgGwCCKAe5LnT//wZU8+wx9jWrhOFQJjTJZiaglo\neCdekHHnLEa2CMRUwpukfdFCGQqtd3LasRQ/D72yJWGTB3AmH2gp8JvP7HyE\n/m99aIAeUDGe0zfAH2CDraHpngdY0ejlDCU3kse0HmTHiOdlB6YXb2BRLXrR\ne0eu31kbSzv2TsrPq8uQNSHyKC+l6MZMHS/Ps70Nkikzz1xurbCdiptST3qq\nKOiwBTQHADlP6/ZIs5N+24HH119eP3YF4TbeVOgoSvkSp4szEOm9YMwjntMU\n8M1SyKW/2Lfxj6T13bgn2nUU02yIdlQM0C3fCLnqjdRl24SKSSZjAomAp3wz\njX7rLLd7pEw7IiSKNZ9TZxflcM5GyyiNDoMPiQwT+QaOEsXY8FEspKgEb1ps\nWq/r\r\n=s6Pl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHVuFzbv4tFCecO12qP+uMoDhq6vlDzjiNmOElcN5XzpAiEAsJEAvmCiXU1Zq0sv8XiMoZPoG3XO4xhTlGImZ20qbx4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603473470-400993e1.0_1603473612629_0.2528631399206669"},"_hasShrinkwrap":false},"2.25.1-next-1603475709-7fba193f.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603475709-7fba193f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603475709-7fba193f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603475709-7fba193f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iucILZckAk8rJjwl/XFnVusBCbgllbmxgC6cu0r9N+9V3Rk8Nblgx5hwhL3AI+QpLyt27EfdDXppnrR9w/W+9w==","shasum":"19a6e094dc0da25572ec3f3321a8ef56c1bf0c90","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603475709-7fba193f.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkxl5CRA9TVsSAnZWagAA+jIP/2mg+dz33wDYI96DFyCs\nA8VgTzX+oNZJfje3aLJpxd5lGIIftJJ1V93cogGH1Nmlh23scuyXCMaZnvs9\ntFN3X+wkLyuhGdJuR0kkQ8MvICo0xDFRUCRW5AHQ4RAlswp6uO0actOR8zjD\nEVuqFPUx4txjGBcWlut44pPdDDW2nsXcH7FNZbRNWc9dNS6xz+l7Lvqk9EJw\n7kIYcTHE8Tdp6q+UGB3vet4kPQaTCKUaJChRKVHKbrVZHKxVNObfgwvAAs3V\nurEOvhqDV0fX5NxQcmhw0UiyUIo5Fq1hPXxfGxTegmrlWT9sS19NMYQcZG+3\n1Pec5vEoi7puUz55aM3u3HDBNCDOTDDV17yEOXbzfK3gMcAK3y9P1sSS4YQp\nqO6TYgW5CfGXjyW7U8r6M3Xt4QLpkUpOuniMC5n0a7u1gAUSfOnQ4sQQnr+f\n+mRgqG2QnpWviMYKgcIIn6MhuMWlOUYZxfjg/I+eeWzp4HHyhBGYENOBnMmr\n84lcKwHY0TWRD/X1rCl7753PvygCKA4YeJDv0RvIWRalXGzJ1FyBx7tutRjI\nygiptd4QUN8+JatgzzMIFc9sHgPdOZlHCqqqleAhLOWasfRkPFsiEWaShuRU\nFdPlf/XhgVwm3c+Ka7GJMDqS1ZeiayR2OzcJTkRrQtiYEjRAjuK9NNCKIJ+0\nX909\r\n=sMgq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC5qwciTqDZlEMepnSx4VN57X2qW8QShrca9YXmpbHMRAiEAn6z9+BhPsfbYw4LD22kYr+KeBwwRXmPYiZdx2LxPCcI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603475709-7fba193f.0_1603475832013_0.06600821829083592"},"_hasShrinkwrap":false},"2.25.1-next-1603476486-6df528de.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603476486-6df528de.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603476486-6df528de.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603476486-6df528de.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2QV4WfMyT1Tokq9qW41CtDaoXWq1oVtQLyqkFZpfgYUtzkr5MUFJ2xnlHDz9K//TJ1NZVWGrVMl96KJB39MtqQ==","shasum":"7b6b77f09ab36c6fee103736becc7ac6d2423e5a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603476486-6df528de.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkxyXCRA9TVsSAnZWagAAwQQP/1jtNb3ndJ7zSsuPzR5V\nJgKrqVxAD2+OMAtzBXWvJE7sGxXqY/HTTsz9jOPhFMpj85dHkrnLVNoASq4G\nYJoA7Htqr7kNf7mmMTdz8ZBQQG2E34yQb8khI0QZtvTvEtPJ2Wx3ciQR2Jq5\naFwTP1gXebhxamaU7ozuR4tKzxJv/p8N0JLH2GO4PZ80D5qjAyFRh3uZvmp1\nugQoaput5neoMAPm7UYvSvYxGGT6iEdBAMragYqi9fjkwjbMryjDQjE3cDsS\nT09n5dinLSb9tISVaL8ksD1VwMU5Jg5JflsuIY18/S6nKgXTZ8fltYd8wRcR\nQKEt5GLZwiQcjy+mhLSX7duJ1Laml3ypQCRlqxCV4wp2MFXC+DvMcq/fZLO1\nRrxBgCh6t6ir9nlAzzStVkSVJcu6/dKsqsnghCJ8rumIfvoZnMJ2ge8/lO6+\nOZEcGxatWC+eHAn/P5oVmXfwaAwyzmhHV7rdrqjLkZG0B18ZfnTMeOT/tX9e\nJfSC/EwTEFeYmQZN/ANEYLiruZBFHL4xFJ9ussHXhrxx++JTxog9XLw5zpKQ\nItb3j95edfnZlIPSdwG18E1YVv7sF9aG75Ohw3SXemNsXndMDU6UoUxGH1pz\nkeljkgaPh02BOiHJJy76Jz+YuXTdajtLXcwGi6lPxXmeoKZ5xjXyJqCR05H8\n41RK\r\n=MFiD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYkeEI8qgvyovfw9GoRO+dpTSVo51DcqLUo8NcMYqeDQIhAOg+1hQQuIEqNUZRYXPrRqx7Q+HN8HqNk5rEcpmkJBC+"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603476486-6df528de.0_1603476630633_0.10720468809265182"},"_hasShrinkwrap":false},"1.48.2-next-1603584777-a5c272fd.0":{"name":"@xdn/prefetch","version":"1.48.2-next-1603584777-a5c272fd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.48.2-next-1603584777-a5c272fd.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FtrABlXouxparHmywZTnnfomrnSVxQzvIdl3BXYme46NLLzBnhr32CjvMiHO8N18bCbPZuT7VbSkAqzn/1gpMw==","shasum":"960a7e8462a0d172bfa9501d2e8dc563ce0e5ccb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.48.2-next-1603584777-a5c272fd.0.tgz","fileCount":52,"unpackedSize":83566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflMWiCRA9TVsSAnZWagAAlJEP/35dJgK/lGBCtwLhuS3e\ntjy4X3GXkACaGP6dAtbX3+N76xbHLILXTlBAWl1Q2gbIN/djms8LfGNAyLRx\n7EtctUwCMjRWFxgsguz19mrXJ4sJNdcSQT/7j9drrLioMNnL1H3FAdJgP58t\nQz9XSfNSJ+ANpIvJeH9jpg2uhv/jLXUT6oVJFJCvjrVhZbCnk1u5YEUeaJJ8\nE25TlW2y1cIi5RGspbtNkd/Ha+4p80qzi5PIlNZiPW8nU2oktCkLg0rMhZwl\nMZQDiLgXPnqHRLYBVDwtdmoWx79qN7q8Sn4tJseoGmGYk5R+No+BBQbThbnl\nIr9n91dl6vpcsORGdcEC9EdnPVDmMCorqSlLZxt9jMIFwO7E/1xs1WXF0ri4\n+WMiwnMzU6V6o4dWsjP3/Hk8iBRR8ZAURnkbXS/+8niKr5X/X/OAxFMiEUc3\n+E0hbZexESKcS7iBmBPAfho4uosEikthyP1OtZ4VIQbh8Bwd8DGs9Y6zAwsN\n4Gc+ykGFPpjcDxkXSBIwfZsPiaEQEOYOmaVFMSTz+g0KhKnSSnAj/qIXcNx9\nDrDvYLQzZ2mAOl3SU4LSFb0zJg9XjQfLG8FxvhXU8xmwOlU12jq1Tdk/WS5E\n6NpA2aKDBjnCxiY0AyxRwqBO7UCe8N62hTVqTljONW9fF6CfO5xmiv4Mf2mA\nnsG9\r\n=jZ4T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/F+pIjVcGzC/XnHXInURcyQNko3HrueTy/DY5gefJXgIgdorImwLkex0xoVLjW7k2nDmrvDu6eQwwFrAMNxSSvKk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.48.2-next-1603584777-a5c272fd.0_1603585441373_0.9026076914223138"},"_hasShrinkwrap":false},"2.25.1-next-1603701274-c5241f2c.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603701274-c5241f2c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603701274-c5241f2c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603701274-c5241f2c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-10beFig4Q2yH2vdNNNaLXdQMQ5i41DmAgAw2VVA7pWPMHSgfsEnkg+RCivl+30mSpzP4Wofc4WLukiHZjzLTlw==","shasum":"441204e1efb3b67027b57155051ad06c15d43834","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603701274-c5241f2c.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfloqtCRA9TVsSAnZWagAABUkP/j/3DTH8YfOysm599sCR\nRMszssnblrjDL8TisjCW/LkmtuGPs1flXd7qYJzdUIwbL/gw+L45ySk7NpVx\n6s9NThKclRqm17IOGAJHgGf905C4wp5fU0K2iDXPjEdDfa1TLxITnjwVyG01\nrKSAowUqeewFWSTe+9+x2/cNnBFVsiKRWTX442VFfZd9d2ApyqmsfAUtgkMj\nVdI/tD6UGmzrR0XPKTvNGqLNZAc2UgBglamP+swC6C3GNlO18pwoNMWqC85q\n0i8jVkwBDNKB84DCHm6NTHb0O5yP2qWjCUKFfe9xRJlDTNnCgiSBvzt/SI9i\nZbHT25rIJw/k4egk3Kd3EO3mBxo4Hl0E+vUSuJwhOX38V8ffKXjAOOmBGSfv\nqUueUAKRhn7GDfla0yoaCr+TJJl9nBvFMOC+ckujp1D4j7xWVliTw4u19K9X\nnG1HqJpCusyK2kWzO0gYxgyT4qpAsEpqTLV28iCmTbNgv7ss8v69YUmdqnzp\npa7fGVzen5CsmF4yX7wcebJlhkdF69PlmUqJ4QwZ6ekYVRNbZAUBud3G1ADu\nA+79hPEPjAO7BITJKBrhGh3XAzSQSv+jIgLxJsn3PVfRhawiE8jQPG3KB7MQ\n10CsIO7rnp0QqWFYgrzLCUsux/8GFFg4iUTUqRGERuPEciQathubbR+xTN20\nnWjC\r\n=v8Ky\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHdr0YMjqZkF26T5viU8gyiqnqRvS1HnuNPuhWDV7NNmAiB04p817JCo2kQhjMxkYEw/1zEYaMTYL7Mf1U1E8M07ug=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603701274-c5241f2c.0_1603701421051_0.43471389099923363"},"_hasShrinkwrap":false},"2.25.1-next-1603711941-fc9576d8.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603711941-fc9576d8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603711941-fc9576d8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603711941-fc9576d8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MaHChgyELmfPfqR5eB4szKItDE2UOG1YsIgYKGrDrWkQz8509HL9kT8DYygA9XmSitR65myHtNJUuTdoQIAZ4w==","shasum":"f87045929fe17620e227cb3795237b2907213cb6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603711941-fc9576d8.0.tgz","fileCount":58,"unpackedSize":134944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflrRKCRA9TVsSAnZWagAAQfEP/jUZtsdyUNjjG6Nh+p6M\nlP65qdyuSGwgliyzWfXbJcBCZFeMAjnv8ua2bB3C0jGsqyonnVGe55dPi1Do\nWzOgu6gn5GzzxT6gX0YXAq/sCr5H5Pltl91bvo+4bfEwRcYP40YkY2J/feN5\n7XlcVgWsqE8STn4czycvh34T2FV+uBO8qYcuIgUsY7wa11HARla3ndqflD3U\nV/TyVZNd0GR5Vw15iyFilDA+k5JZFHe1EJJeScPEV5CEdwb6BgxWSA8C0ezR\nl2o8lQvibuQDtax68Pj96ucXVsIdZjfrFg3vuuIwxd2Emu+EpGfYs8btCpJy\nojisft24lB8KqIZp7NVd+esqCOMyxHiMfuQS1ZvleFQ1JsZgrXR4S9HiDZoy\n8UVJwjrt+81qoVDAd+F0toJu9w7/xfLON9f+I+GkCeSsDbvk1//FzPn5uk7p\nZkvOfJRUv5fFehksxkUehFXjJQ45FXxFXDgRuDuObbDzwkna5obSLe4PvftA\nd66PC40MMc6FdZoHLFhWZ0YRV/AFljhw/rPrgN+eVNTf+6dQPbYjHDH8M/+4\nUfqFnvSMftBCEJUMVzwhffCoEtu7D7X6bpo8P5BdTgNWAsAyLKD5sthBNj/w\nonZM+535GSUG+GH32YblVqIZ460sS2i9DoEbHzGtEGm9OKpO6HMJcdBFq1+s\n9nDK\r\n=QFvT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqe9p5njVcSm7qlGD8iEvgCKO8OrXhdCFcYFUdI2O1qQIhANW/VxPiuIrf/+q6CYq2J1lHNs1lCZ6+DZWAoBW6FKME"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603711941-fc9576d8.0_1603712073546_0.14875115773247338"},"_hasShrinkwrap":false},"2.25.1-next-1603712548-08bd3151.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603712548-08bd3151.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603712548-08bd3151.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603712548-08bd3151.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-sCHXRKQPuZOn2EiTjF9evPFpsQeZrBjkMEgw1kF+1LbUNcpuWGr8N4SAMHLSAA/S/f2txpraOQnkR5Lgt5Zimg==","shasum":"90733cb2e63fecffd2c7cb2d9312115da5679dde","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603712548-08bd3151.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflranCRA9TVsSAnZWagAAdWsP/RHBhxafGMdvXAB3U3O/\nH50deTC4+zeBUXAeZ2B4ceaFL1Xjp6GmUnzDAl6n2/XtG7jBEqhse/BGaazy\nREKq6vhJxLyYySOVlzU7aGS2YgpP1hWGOlqoKL6FLOAw3T9GlV/9ot2wtpD0\n87BIWYRYFCrHuErnWSSdVPFjmtb6J91//o0tPpWVA7NxnEk+PiqfltakP7O+\naG8Dbcs7W6UCWzNIOwMu1gWNQlTyMDiLFXnbw16VFihOGfxx5X5apbsf58Td\nLy3VFWqpVqUwFgdPNW05iDTx82VMpbK7K3/J5lfEnBI6NyxkCqtx22zpPXIj\nthIlENfww8lXe8y5fGotE1VbjBftdN8le6gsydQWXdvKE6cTP0z2wo2rTUfy\nlVM7WiZHy/xM1pHuMGmIbHuI5uS1K9hmwabqwNrslbHd1q/dcNPjMEtJvkPs\nJkWy9nAesGaZWDSvMJBYK0Oaos9TcyT/XhnPBEZRUy2RCMJuulJpAVT19PAx\n2yA1pO0qAGGXICtAbLZjAcqOzMHsEoTyJ8toPm2nJKlZFsLIsFbUttqeJCiw\nYyJh3Y1ZahOAg62b4LiK/UFJGkwemAepRw2zwgBJGGgqD0V6PqYnCAac4zZ0\ncT9Ez9AeQGhoyOslS4KZoq7zu/e2jKxCBd/mBfivrHhWR/bsMlVtxYj8iv+g\nhwKv\r\n=AONm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7zvBfFL1y9NhpU25FFc4llX0vLFPs8JcpQG4QWWc7mAiEA3zBETSyP1vF7/07OSWcSnsCKxA9hpeb9dDSL28nIfuw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603712548-08bd3151.0_1603712679345_0.8636634326448884"},"_hasShrinkwrap":false},"2.25.1-next-1603713415-8dfbf25c.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603713415-8dfbf25c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603713415-8dfbf25c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603713415-8dfbf25c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gk5xO34AojGMUkl94D2oai+ijp0/CaN/9+wEu72N6kLTGp0y6V7stFh/R4RSwgik6SlfzkKN5hcNdgvNoIAXZw==","shasum":"39b2a86ec954958f61402e68586ef024afe3b6db","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603713415-8dfbf25c.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflroVCRA9TVsSAnZWagAA0/wP/RY5VeKWiVMDbhOm+nzt\ndDAdn5bEPdCE5NkOdZ7bmRuKFMYnuv6FcBa2MsAmAvsDmrhj+2di4EyrLaqF\neRfpYrQavub9KbDuVbLcnDInA3S2atfAsAREJ+/1R7E7Bj2kh0KMlq6kGKi7\nS8h0dQPunZbc3EK5M+D5FpyDnTmZPcsUxkuWgET2dj/CGBaKwwtQEJKeOcUP\nAwa0j1k9gBpgBVDlJqwKsqFmdB5zE/yxxgg5aQ5FGQDFXbRQXuMWbm7HPS7b\nLV0m0dhTIr+Dy1xTAraviykOIuAlLjgqlWWGu8dFrxyT4CTrwzIysgznY+4U\n85v4rom7AR2+MGiKHZJWagi84dsv3J7nFJdtjcPT5Wy7kH2rip+/pgthy1AM\nWEqvjKxTHgQeuZ2z09rKYn/qNYlC4LCgVGPAIYBOm1KZvKUFqDJP416ihPa6\nVPs6I3M1VTBPa7c+7vHVOrtN72bcXrOy6w+ONReKq502zeLd/gfkHSzpfM/+\nFlHRx+y26bEW03JIQeS/mRaeHFhsVIFZojZWTl28MKhjWRtPibRxeOzqWcvg\nUECW75vwysAewX69/Oz4/jCkXC0l8uxtB0xiEDrSlTDvYljAzroQnz0607th\n27KYcHNJtip6jNGy+OnIBs8NBDc7cI1DZje/IG1Fe+rfoqh005PYQjD5Q5mU\n2ggX\r\n=zo3J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7p8VInd4QLlv2vpldWOi4VW8jE4QyHVqc6hgGJhY5FAIgBSFZokw4bFT2hny9qQJMGUKPaWLlJHW0CIPmfioz2yM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603713415-8dfbf25c.0_1603713557298_0.08380379383595593"},"_hasShrinkwrap":false},"2.25.1-next-1603713823-33143942.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603713823-33143942.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603713823-33143942.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603713823-33143942.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-15xtjYaHqw5Zz3X2/Ac7pXjtUn/L2ZTORx77UEg5urb1vkj5jAbY/k93BqOuNHCRYon0l31KviEudi2UIA81OA==","shasum":"b760bd2913a1f8cb169fb41cb4517905a37ecb37","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603713823-33143942.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflrutCRA9TVsSAnZWagAA4NAP/j8jMbfCL4lsuycGkVMk\nwfhIgBFJ/6/2m6JP23iGmSa3u4GKPiIudVPOQrBcXbYTVtoDLSsptut1cXh9\ngYDZzcON6VRg+yWyeeoCstxlSt5bDMcHARsuz+/5ah/oN03BnVNTGTNLTfgv\njCdinhU86y4BYs2Y0m9OlWki3NnwdrvUmyjJmosh7cpwbrjWGacdEDdNSbgv\nVmKhIi611hvwx2fTHcc6L029IHDrTvtoospneCTNNDP8s8YRp9R0esdMmknR\nRx2XlphbCZBuYJRHOlB9fm/txdmGeMvh80jWC24mqIUKjo781z+/nLQQyeSt\nhbpJf97+FA9a7jcMkjC8v7paTQovIT4iW2wHcCA/Y9aWSMYXNvAvBPgMcC00\n4etgCh+nSgOQFqBKuiP/9umkqaKvdOnM7A5vbtWLFv9AaM5bRgHceDO01LiX\ntieT2OYOK77QHEINdjHPMBepV09k+RdSrD0zAQRp0CggObFwRodblez8orra\nqlQF92uSNGQwiAVLnWPsNNrd7N3MRHhiaS2V0GzP2j/C0YXEqeaGe5syZd7V\nzIJ2ul9W+BQVF7L1W9BKmfKwy58BIc31bzsgCq0oJqDpaTI6yKd9S4+Dt5eB\nuWGXAGqFmG0cHDIq/vw3ZI4wFswrJZTqxKY0T6eWb7cAfyL2SmU7+m0tNXjT\nWgG/\r\n=uUCQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFcyieAY/CWCNxOZJb/ekFw8NTas0U55lDIg419syb+QIhANQSY9mRo9XXrhu6kosLpEpCQDDKzBA1+9FHbgCAJJHE"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603713823-33143942.0_1603713964672_0.3568200533123107"},"_hasShrinkwrap":false},"2.25.1-next-1603715429-fbe7bd1a.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603715429-fbe7bd1a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603715429-fbe7bd1a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603715429-fbe7bd1a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-x75gEjNCNxt2aCHOc6mUpDw6wbBh7Et/MPYzxxE1lnHJorDdZrhEMcbe3ngbflhBjNVfjuo2RmhsJwT1uZwJAw==","shasum":"721d61b822131333186c757c47e9ad1b1bfd73f0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603715429-fbe7bd1a.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflsHvCRA9TVsSAnZWagAANdoP/3BumWwv7IzcJS/HBmAw\naZg1chfKlJE2pfHhQKE12qy5RJ2qZ66VZfiMckEOOnPf3/qOfXOsFBxaQXjX\nSpNRMHEt+4DmjFbWARieediOlgYLdxZMJBp6YRUd5aYHyc9g0zdb6VKKK9hI\nfLYKhS/SSjd+osL8QaDusDks4ccmiH65Jwpyb+NbbC6C7EjvZLkFh+9t3mWY\n1ir+H67jdsXla5HGC+IqXRK2i10cH2jn5h2zqEWWmxlTlMmoIncKI5BuNEhW\nBpj91C68xs/bpVJSohKWXIaB47FKqomPbxV5DntK/Tu0TsZdxpx8tqcuYhbB\nlGk20CnI81qK9gexvXQtyb5uy6bmMMlnEoqq6LNhGeJgRl6hFBHZkcSD07q0\nDkoNIgT6oHrXMQxN4TbzDXMOVOXW7XXtC+QLMC9/F5/ZzDfwQ+LI1o8pon4j\nTBJAJXn/IOuQ2EkphfrL0heBIUysgP2Z8H0CTwzL76QF//oKSiiNK9Uhha/j\nLYcT7QNnUHEERcub2YzrOc8hxngSJ/hBTj15Y/Ul+Myv3dPRBn+C1lhpVhF6\nqfJGGEJE7uHRYDUh1YE5c7sqM6PXGc/Arm/ZVVopCNvnh0NjeeEudrZyhgy+\no2zG1s8sCBTjXtD6c10Zscr9TCPJiD1VDnguzcpa5gQkE12nNk321e45gKfw\nqMQY\r\n=jX31\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE7+xy1QySIbtrQkl8KiAoiIT5N/7LqG9l+gkMVNNUI7AiEA8Gdp4cDimWQufoSQZQMm7SZsAtDuN0e0HrMwtvkXOI8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603715429-fbe7bd1a.0_1603715566833_0.608705311940078"},"_hasShrinkwrap":false},"2.25.1-next-1603715484-cab97fe3.0":{"name":"@xdn/prefetch","version":"2.25.1-next-1603715484-cab97fe3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.25.1-next-1603715484-cab97fe3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.25.1-next-1603715484-cab97fe3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xesowX8CvDryz6bVeFHa2hjYe5RJfi2NwdEeu2YdRRt/70FJXOLBJcqmHETyDAZJ6Op1MCCbBphzUQt4VdKb2w==","shasum":"dbf4bd09e1b50860bc98b0755c563a42af08abc0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.25.1-next-1603715484-cab97fe3.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflsIrCRA9TVsSAnZWagAAbsAQAJS2sq2/DAVsIF2vQKZV\nk2o05T/bv23UqtSndm3atfdcGv5d0c8eS8gVT6y1dBJLVSe0Kt0owNauydCX\nb5Z2R19FKH/szmpfrbTJr345RQWFPRkUyHG/8TX01oRY6YjQvSLQ+9wPvXJ7\nY6A7Sto+lVAyVswvaQy6tYRiUm6MrWyDEIt1ypAjXLKs7NxOBqvailTt5yyc\n9/ACnr2E7UhfMi/W9wI9Ip07ozATvqGbLTdJ67TLLv3GSiZCdzevsFhd0/gZ\n0tDtbqzRBjXBBpb5BRadeRlL2oVlhEX1qGG8jXUZBYjRZ80yIdyperTJTian\ndeD85ffRyvyZZasmwqm9QLugT15DoR3+xe9hBhpEt94Hv23ZGQZTLqgQR3Xl\nyjgejiD0kqmDUgrhsX8p0t4JDiU5eznawtb6Osv3DnFsS5riuL2S6nw72jRi\nw8TdFl3NBxv58kWvMJR0c7yc401UbCzV7RHZGzT5FWC3DF5xcqU7zl78Wz1k\nS6HJkYONZ3SwKpLfLa5XwNAB2TnE/5ypZaBArTr+o4mZhwzXC41f3oX1SlQr\n9iSX25yIDBDJzuaPaRSRgvBNsmzQDkXm8BgeTxiiKA6GhL34GY9dQ6h+qdDM\nlaRSup+GZN+ASJJAWa6jtMs6jxVR9kZzdEdm8Yxy1V+FDssbcRYuNaLgPV9O\nDWI5\r\n=e+lF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGfrXzIrnyBQbzPYNbzTykFtuywF5QX48V5x3w59GIB3AiBNTU/cx75ULUzxN93LncHn5A1xT34SAXg8yGTVarBZYw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.25.1-next-1603715484-cab97fe3.0_1603715627194_0.7724563154932149"},"_hasShrinkwrap":false},"2.26.1-next-1603715568-ed7a2830.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603715568-ed7a2830.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603715568-ed7a2830.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603715568-ed7a2830.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3VVR+4kG80j3m0gcWI2bl7EdeTJ7vp95zVTpm6eyADkZx08F5x1gd8DxJS0nzZwmdxbubR63Wjm9liIckj1WAA==","shasum":"3313020a4efe3b2e90b15867b3f635ec788a9845","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603715568-ed7a2830.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflsJ4CRA9TVsSAnZWagAAt2sP/R6Lo27kVZOc2mHnp7E0\nyTyMURLL0PbCVOv3uM9AW4y/1ChvJeBVnE0Zrxs0JXa83FWIWtMDAI4PG4hw\njF/jKEyL9Kc5RiWrk6CDVmgnJzUPLc1vugR2BBbMr3svfnec2ss7zQcjQA0K\nOweqrrZmo2AY7Cg/AXvufXFEWKHh13GR1GFzPYi8JRjU7z0Ku2tPN36wwDFw\nGpcEyyL4LzQNGGfi9PrXmtpg8lMrLtt7gG9b8kW3lhMJYb8SDZJQ2u0wczKa\n/ka4u+PPB7g3VXgVgxLWUjrg+cou5u5yJNPsYAXaQDdsCBEkomKNJ2fFMrSW\npGIIOmaKh1hdDxigpMvO2wkm5PgZ4s9jE/kgInJ4i5boGTfF2+fEZf2R2LPs\nxT4muMMN+M5XiIWYJlfWEfdn9Zd1JpYvUNbe4g3RbLp4Zon01OjIls5+Nrgl\nIUYAJQ/DNyIzI/v+i2RQ+8yUGdbWJKN9zwjYQgtUAhzHfGtKyyCU5vVto1ta\nmWehUAdn0c9mz6WxHeTXw+5a7dI7ag2LCVoRXrSCSiiqQGffsRG6qoxdGvIV\nnwEai/N7QupihoenmoyWT24zyrPPc7VStiTIwkdflZKr8HOJUWr4Z3URuGdg\nftEglocV6H5vmMWVwfLfcmizUNngFmOfwGATXpmf+8skp5OjdFmK0YrxQmk2\nlne0\r\n=zngV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGEqAr6UTf451EfKBLupE9STh15piMRLl4e63ZG+jBw9AiB9w4Bpux7ZsxSJznI2yDphyR4C0gojTXCFMDupCqWV4w=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603715568-ed7a2830.0_1603715703647_0.4158378257642241"},"_hasShrinkwrap":false},"2.26.0":{"name":"@xdn/prefetch","version":"2.26.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.26.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qz/JHxqJ38XK1jmdScQt/POU2UpQAlvqK/szK/YzYtgUcRjpVCioZyW2TWI/4Ah7hpfHjR4aQ+Mu7mnn/zKH9g==","shasum":"25adf0c41f633ff2402eea8414158bc33bbe6bf4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.0.tgz","fileCount":58,"unpackedSize":134956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflsgeCRA9TVsSAnZWagAAzxAP/RJ+s+vMB7ICSmEHC3bD\nyVMUDF2KoRRNuTlnnYmGFGzgY8KqtkxZ1L+gqx137Ji1q8ojU42MNE98FKri\nASWIWTykrD0HwOL/vLQ2DIGetDIkorPcTWj0QYs9MHn21G0ZvhxErbexIBnO\nx0igIHgzSWy3KoA6gN3GBfZJTNJe0Dvbli/s0yWuA3P6CWtnfkjVdVPgVKgK\nk2ghWh6C91169uM8xctzD+QB/7CjxTRUhhYDIUkah8xUdTWHxm/60wF+V3c/\nr8hAmECTVu1WlYZNsqPfB5mbjJ4u24fLQW+LC+Ecg26ibW42mhgIAIc7isFV\nuBybCwqXxkOcM/EDVDv/t5XxCdBF8uyM/J34HQlZaKlfn85IkdJjcBfedYqX\nTSUQmVZ0iSXrjIoewJl0V18dxqzUChN/eo/iXDYWsjGCO2XecdH1nRX8yAEo\nYSrxt9cGkEG5pL3mxizmAzrp3CIBpCjp2HNGwCaPq1Kc2+mKx44D6TT+EgyI\nCeZrXopZVzZERvEem1ijFwR1CNbXME9y0amN/Y+vosiOzBQv/9GjlZuPPI5F\nCEKWLAxcSPVmJMA1YwBWa5muOoJjKQlt2GR4agRsLhdKtBBafzIhypSigYPI\n2dziQ+nBUY7r4QRlVZS3YfccsDQeBCIPrfcCNaKvhZlKF6XlllJDHTcH2Dxe\n0AsO\r\n=wxBS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB40wRzrgwG0NDhme3aSMKCXaaU7nTBcnRNxpkmYLs/rAiABaD+MdOXdN3Z+hVksUWhO0rR8oPcHiXDdjK6DzquLgg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.0_1603717149581_0.6810048356923322"},"_hasShrinkwrap":false},"2.26.1-next-1603726492-95f3a5c4.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603726492-95f3a5c4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603726492-95f3a5c4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603726492-95f3a5c4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rGXzzAhJsBIZaAnKf6E06pm2tafv9pvOmtUwlxLfr0IIY19NrCYe/chjJjMIsIgy3k7cYTYHsQEG82I0Fb8VxA==","shasum":"64ce2882cb3580095ce4c6d4e715bef14f4b9f38","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603726492-95f3a5c4.0.tgz","fileCount":58,"unpackedSize":135252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflu0pCRA9TVsSAnZWagAAa0UP/0Fumxl1APpmqQOtWYN8\nvZGkkfOyvTpldQqi9Djbvf8Bt++/Hs3QlWsIuq9PQNohuTs00cFoUttbR0co\nVCTmILc8a50fHhb78/9/DLiyjUtzdemoxNRSMuEEzr/zlDxpOItVY6In6Wi7\n5Ew5l+wa+0jLmhSKJCLWrGF5LThPXJ3RoJ9XyMZiaooZtEzMbEcv46BD1pma\n9KZpect+0QXYzuy7/PiU8K9gyCoznLiliGBpAimwfnilkpwNOb+p8vJvyozR\n/NND1tBQjRRK3z8z0GWKGqVx27OzTVnizqe4lZ4B3/oAYYNnAjWNo75Wr7OE\n6/Mcchhl+WVHXx3Q50krVAi6IQgTwAT+fDaDX+S04DOuE6fURdFVV5iM5El2\n6XSblaMot33E+XzEYv6+htGdilKWqRZigsGjsmhKwPCwIBjpliNkys1QJtqn\nQm0r/ItpckUnC0ebN9KEfzR00vcp+cPwQ8KHb1Up1eXoar4rcxiQ/mxxtGGg\nTwXkHgzTKk/oBKLawn2bNwiIE0CTv3Ol+piBWP3DkJk/CDBiJ5IoXEdcTFu3\nV/w0d1odXv4XTzqF5aMNn/SB3LwyOBl0g834DLOCmXAnK6NvqLBbG2XdZ7Ok\nbgEIoi8BJgq6bYS+zMekFToyoMMBvjcjg1S/LirZcc4nlyR7P1lphE1c9sAV\n2sXR\r\n=sQw3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV7iIAO9zpdrf1OJQhHsBkuWQdlrzICWplwS3KokAVUgIhANV2kee7udFvAdBx21FTFqhkcVNgeJFIur4MMFYnITWq"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603726492-95f3a5c4.0_1603726633022_0.07588394691345424"},"_hasShrinkwrap":false},"2.26.1-next-1603741405-95f3a5c4.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603741405-95f3a5c4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603741405-95f3a5c4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603741405-95f3a5c4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9Q02ao/+kxGLl1hYHYHWDb/USNtM8++MPUagwW2yC98EUe9Ug8OJ2of3JeNBQWEG7aOMjAqsArB5OEMebGW/Uw==","shasum":"67e550b05bc8f33fb419b177d254d6ef24855603","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603741405-95f3a5c4.0.tgz","fileCount":58,"unpackedSize":135252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflydzCRA9TVsSAnZWagAASXsP/R+8mpdZt3j4L4ojz1X7\naFN8QDhb3rO5cOAJ8laWsi14tmm2Ab9lO7Qj1QBKx8rz8OJ7rL2tNPrMicqA\nKuWSDDyBLNOqHnczzEULeTOt/SjepRwyDoGr70NCKJAkdVqjKPTG4Ci9x+21\nbzn494MbzlyqDMWKjyZfeRThv3H+a6kfG3o0knCManmxJnCKW2HbaAL3x4p6\nOyKgP3J5mntndaSJnOrwELUjWraeaIWRHjIK+jzHy6R+6fgxJo75r0g1HVT0\n4dgG6kQpsq++ze1bpRvlKotGlVGZKlJpcdAFZPCkuzblxJo312vpI7TBEHs0\np3SjGRgyeqzlW741q+2p/+c+EpUige2dvy28P7x1yKDoTFlI1SyVwZ6oFTcL\nQZC+mqcgP9Q/V85LfSWcE++V1BQhmLuJBLiqKyiC8r0rPI0x9XpxkeI4pN2N\nTQ3QN7P02Em0uT86bMORE5y0UhgMWYq4bXad/e41iFLLChOHPi+zvAXu+MYG\nRvYYewl1hs5By3A5C6adKqDAGUMJPeP4jBnR89awD1FOcZGKzCyQEhaTzPpn\nP+exiu1MAb4pJMVJGOqCPK3YKlIFbG9DNX1KmCdkuIFu4IIkcf2agOuLw+WG\nRJvnb25SFWD/mN2ngxVpsvu3BUGn7heqXnDdYCC+loyOcQEhF2BuMy1Fhez0\nlfpH\r\n=MMTW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYCCJpXfM9QvQLbzrFs3QOSlvTsPDO9wBs4vTxl/3d3wIgeOfYxHBur2wPOahXF4yYuT4dakrnKu9JsIwXlRE7Pww="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603741405-95f3a5c4.0_1603741555125_0.6270898534222591"},"_hasShrinkwrap":false},"2.26.1-next-1603790871-95f3a5c4.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603790871-95f3a5c4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603790871-95f3a5c4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603790871-95f3a5c4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-P41nkgiAnwUGkAhvRGvys/m/5skZVaHVIlydmhNFM9q5+lyWgH6UgCaF5LeuwTj1QWygpbeRuJXCMKvPS9a+EA==","shasum":"967d9297105a3a59064ce1a13dc24ed61ea1c039","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603790871-95f3a5c4.0.tgz","fileCount":58,"unpackedSize":135252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfl+itCRA9TVsSAnZWagAADAEQAJJpszWE5d5ezgQFgCTw\nUy4LfUpncBqNBJgQk2yK4VFDTwXCxna2QYG/Ufo2LksAk5qCgyadOaEnf+RK\n3OTmNOz/b89tjeaOFLM1m2EjWYcRyzxsuwxADwxPyrkfAGktmGWB46+TXdWa\nikAPgsBcpRegsqgqzB2b+gOm7lbTEPfSmMZ6rTXMNmR0GWCxJUEPzVNikIuc\nDuGD045lMuEg+Kt07pCuQorfxP/brySwBjrgSj8+4+QBbjuikfgqi/zWrsKh\n98/bnu6YsOngyYN1lT75hwRbiV0kMO0zO3nvo6Y+T67iNzfo114Wy1ONLgjU\nP0QuUUuDB8VEhcavIBDZ12vJmlfwsFYoWvYEqufo1Yy1fdklehuT1p5RgJjS\n8PJJXG9eqO3vEsaN/2/Bdqqv01jE5UPid4DiX2/JGdcvX/eDeavmrarT5t0X\npTny1qxw7bDSfwHbaviAZZ88urzHGQplImUVhWLk2w0wlSCb3KLrIL3GZtye\nkfkhh/+cZ9UAlcM8hkRdcaEKrXDQSOJ1rrCfkubh/4ypIuG2mLaDlL1heeux\nEgr6OWGfshlUgCZTi0Mb7lvzwYqrHrgihmuI7JJON3Y9gslpe/bdeXc/mTom\nj4KpY4QuYHd0izIsSg3elvj25IqOxrRltE93rl5cUhvhpRC8cWffHbMJ38lI\n6rIJ\r\n=6t1c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDK/kzWZzfQjQbV7nnU6DpEBINvpZWPjchGR48qmvqRJgIgWlPJRxomxYJoA5CUBgxrgUQ/3SizsqqgiQ/z6VeQSUA="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603790871-95f3a5c4.0_1603791021183_0.5875816495764379"},"_hasShrinkwrap":false},"2.26.1-next-1603800530-f7c598d8.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603800530-f7c598d8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603800530-f7c598d8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603800530-f7c598d8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bpKtcMKoHCEGuW+9ebzBwbHyhePuX0OzOC950UDSMpC8Tc1fBN41pDZ2DfWmS00QSTQE28YZPo5YrvcZeAZ5vA==","shasum":"9d9c19823066a38dbd6f8a92636c391734d55f5f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603800530-f7c598d8.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmA5iCRA9TVsSAnZWagAAlKAQAKJAh3/iEgX4sMc9s99A\nSwxHpJ0V5YEPPz5qujoUJwbMlOP6GKfH5yI4pWuozyzSN1YE0xqcVp5dg1bA\nVvRatfv19YT+IzV/YB6Q+PPDnlEyOF3giNJS7eMJAo7KpctcwJTesiTiIliO\nIQYc7DawSh2RMRkKCtPzRui1SanQRkWIRvo4qN3HvxDq9GEklS/xPIq1su7F\nmtPNUpOogUteghfyEkZvBROkwcpqDhN+tckco/1I3lNGPS1bYQjJpjcHZAPY\niyRLlMJcn5VfZT4JTX0R+C+M8lSukCAUk58A/mzt4IKzRvLyuQfn+OrDEt0U\n0+S7KlJSqw26yJgz0m+j8Xw1xwsCKranm/LZySDILqo15FNXiA6q5DTqQZJI\ne3n7NxjxcCkNMFXxBmQbzk8/dLGJlZUoGUMYUzsn+sUG/0q3lvd06U1qGNlh\nEcov8Jwckr0kdW/wfAFSxUWoZpTOeHAOEHqTo2dpmMUDedDY6l5WbFE9La1S\n4iwZoDTtfkqNeqhjySZh66q2DdUxXcI6D3RFvE4qKQqSQSD9M7iIhlJxrfxY\nLxJO3icGrzAg6v7v5keCIB2kIfbkdPz9OsmbRL+PGuqUlJCnOHTGzDqfs+in\n7v3EtnTQudbFhd8c/e8mUHdyjCHJrbWN+mF8rIoQfCTerWSw7sZpG6owLz7w\nXaTX\r\n=7X80\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCfkSes42K4BtlEoX2LWZfvEqZ4ReccFIivnktAMkNCgIhAIv9OdIdwGT28IdUZ9Ow7RK/qSBheEuGsrV//yvxYez4"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603800530-f7c598d8.0_1603800674466_0.5874111531176449"},"_hasShrinkwrap":false},"2.26.1-next-1603800708-7f87ba04.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603800708-7f87ba04.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603800708-7f87ba04.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603800708-7f87ba04.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-edLEvUhmo/Mc648z1/MRGc9xpYHrrZG8tzJ32rG2v/t2968ormRveb3oSyDeBvL7b1iV7/yHCtEHFhOCVHVfvw==","shasum":"79177566c975a05154b917abce34982f169691f4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603800708-7f87ba04.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmA8LCRA9TVsSAnZWagAA8skP/RUoEcC1g7AWKpmCsnxf\nABwnzW2WKCoknFjvRVUdM5BoD7MyECzCw/uWqqWorvsraArxDIpXxlKXBNU8\nRtmQhrl0d1o2l+MpuVCaoPywSTmzr4yihwpcCm+LTtnxF2Gr3n4s2LlXn7R0\nPNSq4VePa3RPUOYLrehuG/+kBLPX0x1i2RgrlGsY9dL2ODzPGbaXkMMzi5LU\nGkTphn9D23XpeAqaMgj8AJEO7TE9M2IsCSxENaARet0pIa0Z4h8Ke9oPnhaf\nbXGs9PFQP8lNSb1mSQ4jZlI0giQRgydnBEa46KMQgKogbCxLCDZu3stba+PD\nKkHN61E7esTTPZNxgMhD7e4ShIG6BOQ4my0BCugbTsuU+5SvAkX27TM9WinJ\nC/1Eid0y8nufAfhqy1Y52eHNHwosk58PWThy5800blXSMnr76rveSRTyxf2N\nl2KpvJ59bVtO8H/+NDjiRkD9I0VwV5Lb5M8Qo64EPventiWOBVAfyNfVUwfQ\nCP8NvXCd6jHadKwdqEvxBMFIm/sOdny5hZ9rEZkgNWqzAhBihe6FmSvmdR8x\n1abCUTh/1znue4RBdvpP8rKRUZs6+VOzh0dVULFyUe4vpAbBq1ptE5MtScLg\n3TK/0C358aTlQ4Zo3u6bwJ1ShlWtw7qd9r6dNOtmk+btnXfKv9otO2u3lo7B\nxo3k\r\n=apot\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyKQLYXT84fDfYQjqdMYpYXCNleP3BvOE4zcxuqadJIgIgZ9KvlfCFetYDNcU954Vt6N3RYJE2RKqTccyluC9xHHw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603800708-7f87ba04.0_1603800842840_0.6433395457025655"},"_hasShrinkwrap":false},"1.48.2-next-1603803932-4526ebb2.0":{"name":"@xdn/prefetch","version":"1.48.2-next-1603803932-4526ebb2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.48.2-next-1603803932-4526ebb2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XYFby48B8Tp485Ro28XC9KnwNFk+50+6+DsqIOMUvFXYRTErPHz8E1qn73i+5mLAnm9UVuST5GL0HC+btc63TQ==","shasum":"257827972e1cf1630b3dfabbbbf12a78698ed6f0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.48.2-next-1603803932-4526ebb2.0.tgz","fileCount":52,"unpackedSize":83566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmB2QCRA9TVsSAnZWagAA05MQAJ6DnKXedB7YC4i9Sc7W\nyY07Y2eii7r/3GWn34fU3ZzZGUVlOChAlCDXHyurXiW9XWSDG/mBQcfEsnke\nSqYOy02RKkrcqnPv7LzzevztZ8ROiuVM3JacIBzu+CmSpOKRK+jVV6o0x3iy\nQ96KDir1p6ORYeErJPf1NmY4O6KyWdRi68QA7Bj7HEgbbYuKXl7FeXLsONzs\n67ftYe3rm6ocRLB2jGJXjvayLcUMEOfeMIwQezhZseRI+CCDMCWOyoVFd06a\nq+97j0GDZFr9Hjf5/JwInJN+7sUIWGF3MlYvENgo7aCAOKh47UM7XbLMT9fc\n/Vl3FSx/qvTmah0TMkig/iaSvLAGysiXisTQDr6zzqZ5fGx9r+pFb4x8wGKr\nNT/qImZbmnR/urkq2wtl8Jw+VhNDc/U5Kjrl4GYKYxTgK7ymtsmLp39pbfFj\n26a8rw4FTfvjhc2xjTNyK+UqdShdZtDvpFtiWDLPA6owtQCwA43zr9HS3h4p\nlxI3H65ReTVw4YNOIa+yCcTbKGuBriAWNqlv9teVKOqH3c+MACVun2gaAaTG\nxT/4DuORLenDXR7Lty73M+TunSs0N7SDGJ/WMvSREZoZD9lyfmhbv2dUl7A+\nItIGvXSzqayC2YVY6aUPEY9Lj/WI5QHoRNWK+Wk4p0BnwlE+FWQBju4ZBZHJ\nhwit\r\n=KtK2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVJcf+rCpAaWzU4hIo/kfP8JLPyOYiMsGdPfQiaR93UQIgX+iZZVVDgtMoG+sBpvC03vCiv0AdTDVC5kjEDCiWtXM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.48.2-next-1603803932-4526ebb2.0_1603804559572_0.26785517039865314"},"_hasShrinkwrap":false},"2.26.1-next-1603804549-d7c0bc22.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603804549-d7c0bc22.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603804549-d7c0bc22.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603804549-d7c0bc22.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Pwv5/EyWMH5YzwoWC6j6x8qwCbxWBKDf54pU61T50fHxgaaDUlIY8HGI+gq8sFpgAyH663uUkwPaYPeKxlgK9A==","shasum":"56a4edfacd5ddb1243007085d64e4aa266edfe1b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603804549-d7c0bc22.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmB4UCRA9TVsSAnZWagAA6/gP/0UAm81Ibe5gU+wEFNkd\nm3Fh/5fe283j5yWeN0wqEnT0X2uQS8KFipHYDDcW7UfszzCY4OvP9TVUjXrI\n02EimG22MyVMgkGjMnpeguutEYTTb5MJHxx7aFgI15iX09vQB6LK+kEHQx6J\nVKSiWlEDrWIMxq1CIXlxv7MAY97k4BJ6E79dUIeppzlLVqOzbTP55aVBBfdv\n7DkeTEe7MzHlMrX9Ifsl4y7J4YdbghHvmA4fOyl1lHReTefojBYUEwZaUASS\nH2XRz0simEiEAXtvzmJw2E4zHZZt3r+A+fPoGIDjS6Qf2BR7WzXPCrrTjZtV\nE9sSPu/4LIm6yWOekvC8vZav5NamLwS5N3f7mUgG400VBBiDdOKvqMcsZAoA\nUCwQuvBZIRpQByrB7yfCUFfgSErBH5q9OphdNYgHrMGOmxTxXqI8oCYo7oJ3\nOelyJ2EWnndBA9xSx37tInSDtTTsRaVdJTAJ63DLTTbrf5QCwOJ4tpZM3cfS\nPNJY5h0ri/3rRGa91p4ne4KHolbPN0EzybZDUgwA3ELGPksVZhjQ4vTeJT70\nn6q05pQwN1Gr/nJxI1dHqbzufzy3AUuznB+SmDubvR06L6L+L2q5mbbyToZ6\n5jeA4S41mxh3qywzKhAPAeXHWBB6foalkmIcu6/x51SxjG36ehuiOQiECyD7\n+RZe\r\n=DFbI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBkEh3gdDC95RpbkvYH8MGGEO+FG+wH51wJ2qvFsl1sAIgWRjTdPZ3G/QO/HXL8rY6dz4HYLC/V9vSiBhBbMAZHPc="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603804549-d7c0bc22.0_1603804691925_0.5374875506672394"},"_hasShrinkwrap":false},"2.26.1-next-1603806604-a0b4eb5b.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603806604-a0b4eb5b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603806604-a0b4eb5b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603806604-a0b4eb5b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-axFROKeTDcLQpxhhd+3PO4G9Nq8cNNWWGETknsjxJUHUic9TtlO1T29Tt6xif3xVfs76ZhBda58Fr5Qszdp7Tw==","shasum":"55beefabc3dd5c9dc3ab9f218f278888544147bb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603806604-a0b4eb5b.0.tgz","fileCount":58,"unpackedSize":135358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmCYXCRA9TVsSAnZWagAAlz8P/3ytmloj8ESHM4vUXTqo\n/H4lZFcRal4bJxLTkVrGOEVg94UapJHx1kWBoMWcLlCHNXrEd2h73Lxnwss3\nmOB5BU20IAWXqrIe03ENhg4FTDBN4GElML+Z5crneare69gpBiO4drF5+T4y\nTTlF1lpumEBNFy3hl8Ab58cNaDvRu2Xeg6+mIsRIPJzgOccrXPO1L2Q6Y/ZH\nhbzqqBF5NH6rRjiex/mZUQRraUUYvEyl/EG78DPdaRXwp/4XFvG9Ofimxte7\n9RtcfY89OdRWPEnl6BnKrQAc5FN/qBQBIl0MWDrczyEMoDs6bHfnlS7f0KhL\n8pqqEjiNnPW5GCi7LCaNpXDI8mjNEsI9icxJV+vRiu2ryD572da7AmKOrWmY\nTyChNgOGoAmvZ+Smf3CDSFJU0lkWKHFAXvdvJ1wKzVF18AsoMugRFj2W/hJ1\nCfoZEiorJfTCpXf5sC+JptSdVX8VRsHYFxDZRUgAg45ZNQRjlNHqW8akD4fN\n9WfIqFRQpUdRynR5yQe1zCWsBQB3f8dOS+01JJYkb5C7PZi6D37yP6Ge3EhN\nvOk97CVOXKspq+Q3lADCWCi8DviXo0eZL6b3lq0fUcHUE0Cz/yCl8ePzxwdl\naNM3rR6GuiK/quKcEuReQ05zjokfsg/YZwix7auw633rnTaGTVioQP3ZG0q7\nWCUT\r\n=iGH2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGpfQGDv55uzOE1H+84IwUUKPUMRjF461M+P/G1DwK1kAiEAvbKd6Jkq/zJ7b2De+MACQgi1qOuSpmmtp9nz6RIV9qQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603806604-a0b4eb5b.0_1603806742744_0.902308042389278"},"_hasShrinkwrap":false},"2.26.1-next-1603807670-742397dc.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603807670-742397dc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603807670-742397dc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603807670-742397dc.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HqiqBpYjjay1t97rUZjz2Pv3a0A42o978C2B0ET3v/aBhPoc7cB2aSlxGE6HDhlknGrOLShcu3s0M7wdqaabpw==","shasum":"729f3bc90a7c08c3aa5e70834e02447afab4ff60","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603807670-742397dc.0.tgz","fileCount":58,"unpackedSize":135314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmCo/CRA9TVsSAnZWagAAVsEQAIx/ehjzt6RWV3UCELvB\nMJ1lJI2QZ+u3OdnkQfQlx7jpAky1NDJtKMMqdGwL17TEvshCtCxMEPt66VMk\nrbAHBFmS4YhrkA+t4UyJw1Nejrh/CPrmcd2zclhjBtzvDpcwLSRoLKse3UWe\nIwMZkbrGJ9kw6UiEbvV96eUFIzoofRexpz7f4dGun4N2/ya7X5yBw/uOwjY9\ns2N1/2X7vQmO6AYsTj2s2C1XpLnNVHmW3ceB1CD82sOhfx7Lv/bYese4wb3M\n6UCGDGTc9TMF56+W8i5NgL/iDfd9v3/vnObz1LlTXhs4dR/5SPr6aoJ0TFOY\nYnOkTx+0OVsF80dZ2RdZoS6GHAPPxTWF2zO12CtsYwI7O4Pl76FyVixrFKf+\nldy8iwSpYz8X+uPQPl04MZhmRGPyBmKUDViuzZUvSd6CkBpYoCEvHElYTrH8\n3+/y+jKSfwXDlycTRfZQEtxpbbXxZCBtG7p+M9iylZnmwAyzVipTf/cNIKoF\nlAgVQhYOZ8M0cFtc8Y91bPoRozfqdE7Su/e7W8hUHpMsDumfUCIBeyc+5CV+\nhmPHkOT4s0X4KR8coPoS0o2ANkbQW4Gp7YWqno+Vt9qk30aTZPkVahZ/CqqY\nuR/sLcHiKeJ4sTmWraOjL3L3ljXmjF4QueCGzG7IsHvRXHXqy3AST+jBTrW+\n3H/q\r\n=JCwW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdCP9PrF62pA0hTHu72dCgNg6jWsVv1ZI3XROeyd1XWAIhAMUVBmoNLZNDxn7XXn/dtUYXgtUdMfNDojiGSzplkNFo"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603807670-742397dc.0_1603807806727_0.4924919631612463"},"_hasShrinkwrap":false},"1.48.3-next-1603807879-44a5e9dd.0":{"name":"@xdn/prefetch","version":"1.48.3-next-1603807879-44a5e9dd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.48.3-next-1603807879-44a5e9dd.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WO/cq1yxJD8Rc1UmvtiAueRfEp+nW2g0TMCxHV9uL827U176dee5wp4sU+Zt8ijXPPRK6E22eKdpjyoslVdaDg==","shasum":"a227c6c35ad72d3fc8178c6c86357f98d0a35690","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.48.3-next-1603807879-44a5e9dd.0.tgz","fileCount":52,"unpackedSize":83566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmCz9CRA9TVsSAnZWagAA59wP/3kMJR+jgW7I9lMaBwri\nHd7KeYShZc2KzxmmlA8BCA1YGsBu3lDK+pEG+Di8iycbF18Ja+psb0OnfRf4\nbUX1lRXqDa921rAgHypCjYfzdbesdnV/b7DUPyQWbbQ3puO/RE10o0C22mq/\n5Rotd4HD2feJmkIwY4uU1uVMC//zfCUQRQM7q5umxTh9+M+QU3q2WAuTGgoY\nV0etSgoNzjlicJ2BkC8md5sKDh3hoHXlvA1kwA4q/++ugBgpHneTve0p17BD\nsIfIix/BaN28FRs4dK2bVonzKj4xqVD/q/4P2JRL89rk3wvBBNyhfvq+v5iI\nXXgP41CT4F+h/W9th007JbTWo6PhrZ70LIVp7Raq1EhpSxQAypxkNa1HSc+z\n+s23n9cDtTku0LFKbC9JQn7KL0J88CTTCh19AFcdVrbclJ4mSPpJ3wn/LVtK\nj4DVnVXWdyODPgy6f/5gRi2w1GojdT+LAoFc9SN3hQp5CNOm+2OwXDuxLEft\nueeWOxqacCpTbaVfgpk2NYVVK7kxQ3/kep6OAl0ETOvpL5An0JDO0HDwmrPg\n1Q3lJnSYjHHpgwWZDhJAmUeVEyT922HNqzaoPq3sJd6aWIkHfd1zR+/ngFgQ\n/eSFQcwcxDXsTKg7qDfNNp0SCWCyWP9s1Vi4IFH2Iy/fyEAH1C9YMuFm1tBr\njfCu\r\n=cQ34\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAru8MyEP7BWCwt3VV23PujNpLy0NY/cKymXprPu4vV3AiEA2yCPdv5367U1DsyaIX+jPsHrXBUzJawTazy2BjBtDbw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.48.3-next-1603807879-44a5e9dd.0_1603808508598_0.8091912848909846"},"_hasShrinkwrap":false},"1.48.2":{"name":"@xdn/prefetch","version":"1.48.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/node":"^13.11.1","node-fetch":"^2.6.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; cp -r package.json README.md ./dist; tsc","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public --tag latest-v1","release:next":"npm run release -- --tag next","test":"jest --watchAll=false","precommit":"lint-staged"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"lint-staged":{"*.js":["prettier --write test/**/*.js"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@1.48.2","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gvGzB7s9532XEMM4R2p4Wker3Xg7q3Dx7nYrhGTDT3eae+uTbup50Nqgr3sPb9bcQWXnE6jWFRBhqNuVmLsCsQ==","shasum":"1e574592075d85623799303d87f28729435af406","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-1.48.2.tgz","fileCount":52,"unpackedSize":83539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmC6HCRA9TVsSAnZWagAA4vQP/Ax976zUre8WbwBR805R\nxEWkPs26gSNKY8q9kREMvy22SaJVtl4xRWFLhXOvH5O2/iaX24IxWO7JWfBz\nc7ZYG3X3CM5TNVb5y5DP0juYAsLSnIDMber03ZIpLYBwPcWekotyncUxHbJ4\nPjJvIeOLmDlWX0mXSkLCpbm9MOz1qbpYytbI9ntG/V1+R6Ze/6RyO+6r0qFI\nxFemzAok6X32rdFXllrwIY+RpLDRCAumn7+s1oJbbrit84TZgKilQzKvy65L\ny7btuhj5SXSTTRLOo1UZRX7+JZFBcVvKXTc+paI0d/NIUFzTnsbxmV3rqUZE\nBlhfWlTieS7zjRnu3/LBK6qle8JF34+JUQNf43JX1yLtOCXM6dMpmYhmFQcq\nel2rPmjfEoBdNgLpd6XdYP3DDE9fMqDCmaftatjQ/5OEP9zQRtwpV8cHbj7Q\n9VpUBTvh+pLHp5A5DXIEmWxWfgVo+/tjMmegzExd5yZNJtB8qja5wngQvvlV\nSTsxVihFGJHZrel85lbQ+qGRPWgC/JExqblVRxQams2burWSlMwMPrNfgSKE\nGydn6jXvgUhDWjqh2wwslxBcNfHU2keNoD+b6XGyF8fL8iZPg9PYXSd9c0g1\n2J3czhGGnk+GntK/L3iusDav98nI7CdkXj/nrg6I8i/00cux95k3g2zFlMO1\ntj7I\r\n=z+HC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7sNn5ofP9Z77h8p3EyaPLl4FZG5XJkVqMWrwzqTfyfAIgTctm2jafF03Nw31GmStsLn5/J7WiBEf/iJPwwlOKp/s="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_1.48.2_1603808902268_0.8865025055305984"},"_hasShrinkwrap":false},"2.26.1-next-1603809474-6b2d18e4.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603809474-6b2d18e4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603809474-6b2d18e4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603809474-6b2d18e4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-z0lqgc97n9lSfOSXGzLZYi5xfhKIvh30Xn+TckBghbxdUPenRZylFsWxQr/oOnhyo21g952oDbzQWohZAhwB4g==","shasum":"7c5e84b14b10c4f81f2deec9001f80ec798bc9de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603809474-6b2d18e4.0.tgz","fileCount":58,"unpackedSize":135010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmDFgCRA9TVsSAnZWagAAvaEP/1kRxMyauGhNZXCwmSoL\nlxP4Z0dg3SUjNL6EiMEzNFpLsF45GTUKJT7R8Jgl9c0b1n4vChKnd+cro9D1\ngZloQfSzNrGJZ4U/c8+a1Y9DFZIre/nnuqaWkBy/8aqGZjXXZO4afqwH8hSq\nrK7d8xE+PqCpAIMHEwc1Ueutv20eVZLOguniYiq+E6twYWl18SSmjR1untDj\nEtNmmonDwD44rufPvvKE+0kzRNW5AcUsge1lhbERQ2J0liEb39QDXh/gsrCS\nn5B9Luns9XdfKuNj6aSkaU0NHqCrg06tcgOFMOOJZ94SpTbcrND5+cNVrSRo\nx/o1ii1yJ3sHSFSTknjsSgAd8f48J5AYrh3S+w7wZFG6ybsDpKjZM9zhQG+R\nGw0UYeyZMWpehrTRmjgubiH5sgMLpJZIlAvAtrNrNqnTfuo1BkeVFTF9x0gt\nh4j4XANauz5o0/SCxmfOSB3t+5dj7ba/lg2ZktvCn/teUqrn3BdAYmqw/RXj\nZrP/2FlVmrw9FF57/rSntxj/DVZJ/CNS7+nFygHdjAiNgoZ4Nk93201CbiG3\nsUbi+/3/uW5tMrkIhfKCOLMWxbYLd5W63wneh5bo1uDlf6/h3Bxy3b43x4ME\nBLJNu5cVCeJEyYwWWwkdEhluzZA/m+NR7Y3o2tSFk6goI71Oya+DktmOhHnY\n0L/F\r\n=Jq9m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFbn4RKEXr/JI0tk4fTOkx7aJjr5sSEl6a7OQY2MJodOAiEA150lRA9T2kIC+lkxSrQH0rIVaSpcuu230VTWTgHMZig="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603809474-6b2d18e4.0_1603809632064_0.8129420409325199"},"_hasShrinkwrap":false},"2.26.1-next-1603810682-99696a29.0":{"name":"@xdn/prefetch","version":"2.26.1-next-1603810682-99696a29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1-next-1603810682-99696a29.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.1-next-1603810682-99696a29.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Idgane5sh9Rn0FqjyXo9Y/sSS3RJvJspR0+PZc8d/XQjxMuW8fgEKVnLTqXxRyZZtyoLd9U3JjvkSIE/tdQoOg==","shasum":"49740986a82b8094552267957e0961a6c70bb4a8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1-next-1603810682-99696a29.0.tgz","fileCount":58,"unpackedSize":135314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmDYKCRA9TVsSAnZWagAAXCoP/jw2T+uXqiMw6N9ca3R7\nPotBYeAu41C1lE2/uf9sn5jqF8jwtXsqVFbglsHriScHSg+akjdV7AMn+yxo\ndK8xlTxeufLzMdgeg68JwCqQty7H3ZH/FBwhK190Eg+45DyujZ8ZUwCIqZEZ\nO/NtKqAdSvVHsO/ChL02zz8dc1w5Lv1QxZ1zegsyHPFru4l0Kno60ykmXhPm\n5RwvfdTnzG7ZzE+EivtCxQvt4ceUrRxlxZwI8vqdSVEuUkvltwkmNwP20o16\ncrMFU/1K1UNh0SbCWipTwgvc9iujOw3fUk+7Tfpj+CObn20tNm83WqY6Qeki\nbaSNDIhizYxeTorV9nXRSsux36PcR/UA89ebZnAHy/t4LZIaxdO80QkLrjsw\noVxhST2BEEWOjYU+i4a1AS78fdORb8GMDs8nsn92dUoXbDYfZRwCV66XznlV\nRihfhqLsMeqUiTb6IjlGL+GGA606bpBMY16jjDB8phiGib3a93QaogiRnR16\nbaKWNr1bSxmvGA6alvmwTXTaSKQfWL2HMXfIfpGf7esi+JN1LWQ+KxB+WMoZ\n5Immvqax2C0zJgabH/euf8HZfLkpWVfyDA/sXkOkXefNvJ4V3qbtYvfoTxb+\nnaHCGwroKGoPvhQhSr3oIiF866/PxGLvgzfHmHDAaeEgx1HpPw4dg+6X3oLE\nEXuw\r\n=wuFi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCldD4e2L9anGYJxHuiPLkAzzQqz3itVzwNryD2z8fKtgIgTS114dcNVCd6aGDzzHpP1ppyDAUJYWtdyvoVwR5BiOQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1-next-1603810682-99696a29.0_1603810825797_0.4092361420661743"},"_hasShrinkwrap":false},"2.26.2-next-1603810836-02e6366d.0":{"name":"@xdn/prefetch","version":"2.26.2-next-1603810836-02e6366d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.2-next-1603810836-02e6366d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.2-next-1603810836-02e6366d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-foU8zHc5f0arMjOqxelQdr1zmnC8rIMHvLyFxkdLC8/sEaRyiwwoCdxb7RqNCOI/WhwsCSnX1evC/AqoZx+33g==","shasum":"bfa6286bcdaf29381bda750ec064469649b70f0f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.2-next-1603810836-02e6366d.0.tgz","fileCount":58,"unpackedSize":135314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmDawCRA9TVsSAnZWagAAHbcP/RllDXDbXESmU7zhtQyB\n2QjiurHzIjuprdgHukYfOkfsXdkERfVlxRBWfNZ0KQJOtj0G8aMMA3Q1ARYa\ndl0c8MVuaY3QfcFpBukbIB63BkKnSGHwX+BFlqitGkcawKgjuH/W27I0nUyO\nzo3ltw0JfYMiMHP+jR9TZ9cytyOqUf2EZxeczd2ISVcG3yk870RTe+gduNrf\n+lH15fX+YKT539QZXKRvNdXx9YpgJgx7I2k5vUrP9p8QOCuu//wcO5/+frp2\n0JIkEUaRFIvVL2gCQYDprNFcB3WTipB9NtlkZ23f1THf4871r7+t8HLWM3Wy\nB5ABO56dB9/7nM3t+/mOEvGUe5bx/VRBXgPcvmGxHnm1DrSEe/WDSATxOIKF\n48W0PwiP5a/7S9Yt9FFF2QwFns6mqAEwtdz/2llSOG5yT+zCtUzR8Vu6AH7D\n+O1eCc+wU+R/lno0vy9G8bdLiOFSOskRh49MUrazYrGTiOWCo7j/PxdXPzDW\ng9l+m6uT7JGoMra9mkal8ITjCtBMTe+KTSRxyEfsVvWDK7x0WrLP8htU+iu5\nszkeBJrjpmlutuqbJni/JC5NWqL39NDF31ItoMTdGPXhZN+iEQKszyZFzxpy\nFD6INUi3xjz9+G95nfxcyyHlzXWQDgarUqni1RJMdi/zCR4mA3viqGkreGMG\nQBIl\r\n=bCl0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlLJd8y7SEvONjMsKHVyN7xHthDXhlnwcfwz7hnGGhcAIhAOCVBmUvxgYWh3fQwFDANLE+NgkWFtEKtAqvccBSw3fU"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.2-next-1603810836-02e6366d.0_1603810992295_0.31859671196248507"},"_hasShrinkwrap":false},"2.26.1":{"name":"@xdn/prefetch","version":"2.26.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.26.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zHLsOekQ7uIC4tXWcCRJe9oBwUjGJ2Qxto48Z+cvNgLhsUd8JGaHcFhKTX8PLGyfkcRhVAY0nWiDhzlKqM/sMQ==","shasum":"f75c8c6cdd42130b485543096c94d9a04d32fe19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.1.tgz","fileCount":58,"unpackedSize":135260,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmDcOCRA9TVsSAnZWagAAGvwP/2qE7xWM4OJzxt2W8tRe\nqZO4XL7dwXP9d0De/lfrUD+OgmMiiWFi7YX+fEK5saD/eaZA6a33R4UTcemk\nkknXg8xLhBl6/vSlWlIfc2b9f4uMCERywdHFqPQpQAYUZyjfjG1Cjwk7RvuA\nCOTbaexd2CH0U2IDWCTpBmg2td5UpdjosVrVVyKJyyF6/IBbQF11KbminaVv\nymyM3omkoVRQ8Yoygf3dcTUEuSrjnmA3smwvczczt4G/4QbC8FBfHymJzAbk\n7NogFhoF7hhL2kqSNwVL6Ts8qemmd9BRJ3Go6Rg+VAbFIfVQLqNGUYwdd0FU\nb94vlWir+2zcu+SB9vEqLMdTOOCOjO1lOSygqy8fswrGsOOBnI91MzKKPCJ1\nJQTRLlWDgRmsk10Rv4k0uoUNFkuOtgzfrMxcT7J4omBEx6K7wmb5LAFfzZgJ\nQVFe8fI1+jW3cUtpTUSETMzhXNvUMaND40U8HsZ8FzjNIfYIZrDp47OnX67V\nq4zB+AygY8jqwi0gMJoOLpO+H0enovFyXT+H/OSX9pwyNcQeCG5S750MPEF/\nEChzF0U+sXALLP8T6/Do6euEKoaNyxi0UpvOj8n+bb95+jagOkB/3BmB/3iC\nuRqRu5Cbr+5GjbFm/TLBwOR3TgxR0f6Td91X1TURULUEonBJ6e2JschDAWdI\nwQEs\r\n=uiRQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3vn3IIxURxR/Ox1kfDwreq8Rr9ZIdVfHEBSHntChRwAiEA5fW/ZZdqFa7+7sf4g7D/4MgXx2UGeisesme0/ztmgZg="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.1_1603811085658_0.6306444888873854"},"_hasShrinkwrap":false},"2.26.2-next-1603815010-02e6366d.0":{"name":"@xdn/prefetch","version":"2.26.2-next-1603815010-02e6366d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.2-next-1603815010-02e6366d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.2-next-1603815010-02e6366d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8JgthtV4QbqL6JuDuOtXoBCJW11CHx2kNGYahnDhSwcaJfOPMWmBk6OZVzCAUhnkm7zzJg0ZwBnkli++ldbE0w==","shasum":"eb99e0f4ebffe73abad83cf7dfb9bdc05e5ec86a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.2-next-1603815010-02e6366d.0.tgz","fileCount":58,"unpackedSize":135314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmEbzCRA9TVsSAnZWagAASYsP/jcdIK9o03ZcKuw7YEKB\nvBO2JuOnPQAn2BiP6fs0d9JIfJ8DFEn17eSMVqcRRGWKRbtad6EKLzzEfGI1\nv+/3L6/zNCQNG6RvSwp2SdZxzQ3U8m6qcycL3Kj+PV756/uFU4Ie+l86UTQe\nOi7zaB2Jf3O491bEel1BtEPTQEh7US9rl2F5owP6axmq3gJRQVSQNUelqtxK\nZLddnL0VoA+VyL7RrXYMlQW7L1xx1cxHGp7UNIkqSWua0sFQIbKXChksMvzw\nnG6rUCJh1FsoIKqjR54p1aAF+U8VUwhxcuyLhgyhoMc7EDIu7bg0S4tPDt+8\n7DMh4ZjlJb/U4Vyw7Yscj70FGYoEaCzAcvINZ70rrYDKVKix51RJwLA2lWzz\nBTdsaB1HHJ4z6zakENx7sTsHWXjXdj3NRMmp4m7bXwHSlwNFAm2pihWj3lcj\n8y0fsHgPpbFYO92Y/lx514hXBRaXDVHvY0qe5GQpxUAaYdsTuvGgCNatOCFD\nj7jJ25Jg0urhNWQmYC3Cs1bss8JXPSHAKGozJo5KSu5uGRE3uqGSqJ9s49/7\nr9CWY/YjJgqXtr4Rvi3AvmXAW8myCepU085q/4Q7/XhI7jZokfAecF+z+lIC\n7FXQ/uf3Xi7caAw5ElucoL/jRcJj02cc3UI+eC1KNHs30BobpreCa39Ul7ZD\nysVI\r\n=rS8o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEH15cwm5Ck1NI4MGQp8OBt3MPBWVeu4s+DDaLu0mxDgAiBVmk+hnwxTu0c1uQtuLxz1J12HKgqRe2G1kgHNO0YlBg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.2-next-1603815010-02e6366d.0_1603815155110_0.446971336606133"},"_hasShrinkwrap":false},"2.26.2-next-1603816325-02e6366d.0":{"name":"@xdn/prefetch","version":"2.26.2-next-1603816325-02e6366d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.2-next-1603816325-02e6366d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.2-next-1603816325-02e6366d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-G47Bbb3NNUZ0B6S9DEUdYm/PVKYWl7IfYePrnhGZEHiwQhBZgqpTqDrSwPm7gYZJe/16LF1OE/NLUhXHGqvOWg==","shasum":"1a0bad62c91f0dba8e7e5ade1432d5d076ff755d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.2-next-1603816325-02e6366d.0.tgz","fileCount":58,"unpackedSize":135314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmEweCRA9TVsSAnZWagAA/ncQAJddI9eeuDmOM/UV7wcf\nfwOLGrPJsMWLIButHTWZ66r8Sx69nLJ4fgq6YyxLv3m7NeJ0kwKV/pvNGK+X\nuQrWJJz1QxbIUfE4VwlrfvShL0imiqpZ9duViGhaV+w5aQobIuHh0WWbhpik\nIstYcwoGebyPbms539k1jeqQrSgca+wth1YWFUgOjLZn+xooWdRdADJ1gwYl\nVtuf7uFp4l2zy2CRsojzosWbmeTW2Ox+WhJosrgAT0qCts9Vx/M1YTNkfait\n/G+zxWgWABgZk4VIAmzawmA85VL8snKSr47DZz+Bv0l5rhmPZnoUpA4YPxT9\nteJsNJezr5Aszn6TWqZvmrmqtz/KEYv+kWsCniUkXbEcxoWyJGuu182Yil2c\nnWKg3QCKL8DaG9Hm3P5jGS3PjYZrB2/R/xd0BbrlNcRInyBKZaOXEr7UQjxY\nrGnlyRDd74Vz0qngEsJVk9SR7MA/0QbSOVlRMFlwFM0xNoZHSU6c51t5RgCe\ngjgmbP/MIVlyyIknFeZS5Y0wQp7hL+bPmLb7SuR1ERdVFaGq7y/FFzfB9SaK\n6YLHtUZLM96KWSe8meOze8Pv8x2Vw49lg5SAmdG8Iq5FViAxooXxPcSLnlXK\npoY33fzNLcSfMQ9HUElEscV/tXrlyC314E5F3DxXPXBXwQsS3Yd0W4k9nmYq\nQiOn\r\n=nZrt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDG9WoJdchTHzJT6SQc1OThFW3qQ2yfbJdar3pHUqo7IQIhAPCn7z/OA071GIraYp/PaTjEzsyD7qT//6bpvAwnlLfR"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.2-next-1603816325-02e6366d.0_1603816478178_0.352117931562683"},"_hasShrinkwrap":false},"2.26.2-next-1603829901-01bf666c.0":{"name":"@xdn/prefetch","version":"2.26.2-next-1603829901-01bf666c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.2-next-1603829901-01bf666c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.2-next-1603829901-01bf666c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OGQHL/7YxJLzLftVhMqE08ToNDWcgMxFydX1PiZ5bHpkyjCM7MmovqMvvgPE1l9aM6MGuoTXX/vNNRKm5CrrxA==","shasum":"9fd9ee70c7d9cb72be2ffe22c37d48ec16f371a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.2-next-1603829901-01bf666c.0.tgz","fileCount":58,"unpackedSize":135314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmIEkCRA9TVsSAnZWagAAm8IP/2YjzZ7fyypDhgk/jyPJ\n7ZUh/AmdNEswVmNpOX44z9SAzP96fg5LyByF8WM8qyrytQ/ajzPKkLci5T49\nk/YMoykdulOC0gsRsEv5rPOxZM30iWseh+EJnShvJweO8yAaNDGu8SdmFfje\n9b8zZePq7MNpwltIvfvgQg/PNwa05rCbsUHTBytU1TMun7R3TUJ8dKXMdQo/\nHgOHiiNSpF4OwPpK7rYrwne3GJX+d/QqkhBokJXanKbxCJsNPNZ/emY/mGdG\n/1lRLUfAJP7E0xXZfID9O6kJOy/PV8xvyqJxPkc11vSfbZuzBUlarCtGKRvJ\nVWlNJ0BCTIVe2pD1jgbBfptcVba/xypHZtNw7njoK8s/tuBU1YB5fLP7jLu7\n0eZcxOGXWPnROZFl1DlBUnIRFenCW7T/g0E+HC/PNWkd1j8TsxOv23X+AhRp\n7g3NpBz7Fr1CbVMz6YUBeBWdoZ/5MiJ8Y+jZPw90eDWXGyQcgWnDcB5OCzU3\nOjAZC7NvqxKs3neQQ5m6Y+r8Z1NSweebpHMKM/ploqZOIKmlPV5qnOgUGRZD\njc/zwmqouL+do3OmDSDA6ytSKWubSBoL4vG/oT4WRWf1Tps/V6aQLKGdnlmq\nrVkBXOz4PYvIgvvjQHIjTLxIMGBOi5UMAKQe24gYnyaZW24dIU+jlGVxe4N4\ngSwT\r\n=dp9d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCj4gUdCynco8V5d2No3YiLEKBOOgj0aiyTZGFOXIfKFAIhAKBjElxZW2a/EgyICW6gI85S1iA55XnUGaZvcRrsoysG"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.2-next-1603829901-01bf666c.0_1603830051546_0.9683589607282721"},"_hasShrinkwrap":false},"2.26.2-next-1603833319-ce9d1498.0":{"name":"@xdn/prefetch","version":"2.26.2-next-1603833319-ce9d1498.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.2-next-1603833319-ce9d1498.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.2-next-1603833319-ce9d1498.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NpZqPTDPOtrCcdXgP6i9M3wO+7k2abHqTNZqemd7ksjXbVyIsBO27RVxw92uDXHbvGD+jQDqPIdLXKNtfhvS9g==","shasum":"f33ea6df76ba1055ad419b3267f77ae208681370","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.2-next-1603833319-ce9d1498.0.tgz","fileCount":58,"unpackedSize":135314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmI5pCRA9TVsSAnZWagAAazQP/iha1s396MAn0hcJvlLP\nH597QtJv+mPiUYYlOtk61OHafncjusmI4r95ssXf9Tk5/vPJrZSgHbfNi8jP\n+oyhsmXkzN8muaFhZcBqNw//0KDYrAZjnA0LOV8FUhIw6klHfx+WrZjf8UD/\n69j4OOso9FdaUNksZIeGFrLwBlN3oi3ziHWXWa272WmwhsD1ZZbrvTqiLPT3\nl7VhQljP3xN6DYcDTGfz2ap1PAdKXCH9PrPw+Vzkago6HEVsnfCHe7aKDwS5\nQAB15zO+AwdBGPYz4oBLxQ16t0Rz3GRzJqtbXeDh6DWe6zf8EAhNpHp2WAbd\nikcovg83rUo+J6qafLQ1BPYYg+BgRrq2aLjUW/+0Qh24BxpJREFkSXTFjGU5\nsSiVxlIrq6DmW+/LbiBnAqhNsHJkg6zFFIxe86RKDL2tvwd6g+dHzR/85zEW\nFeM3a+zsEtD4cPdBPIaLhMrHcV2ANdAZCAx8YibNy6LX/ZTrEKhjsTd64wh8\nK7LUIKkkdA4sR1+iiRfZKyfa2H5KeyYxfo1SwGoYr+aFB0GVeT7xvxEKW1Sd\n65tM7yzI3SAfb5cDQ2WqUQQkOIWAXuoHJEr8nZDevC5uphrk+TWXb4a9fn8e\nITf0WPN1F6pscSg7qYUttGWatiRvaCYzPMgsuoc1kJVmpU5WorO3micye+yM\nMStv\r\n=9Lpc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC26QE3OCOX7Btm1bpGafMUpkAVmmj9DSXxc2ES9E4HiQIgUFJ/+7/qQ4izk7IPCiaDWIWJ4272O+iRBQtPGfejVy0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.2-next-1603833319-ce9d1498.0_1603833448577_0.550099184160733"},"_hasShrinkwrap":false},"2.26.2-next-1603890257-b068ddc8.0":{"name":"@xdn/prefetch","version":"2.26.2-next-1603890257-b068ddc8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.2-next-1603890257-b068ddc8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.2-next-1603890257-b068ddc8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PmmarNDrssreW50nd2Ut1FFEJXL7mIuWZf3bR3pdgt17gybwG5hD1Blo24Pslnlyo3w2XiYWrCi8D0V9aJeLxQ==","shasum":"cf68d846d6efae7d313726cd3a82b754db2419b1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.2-next-1603890257-b068ddc8.0.tgz","fileCount":58,"unpackedSize":135314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmWz1CRA9TVsSAnZWagAArHEP/0f8CKHIwcdaZ0yXXR+v\nSNwKYo9ILEUr3Xi/SzsfEc8Nv9rs3Fnv65DiGdc7iRAUE/r6hsXllQ2Q0rhU\nuTCxownMczpH6tMZltUVKhABHkjtPyEoLqW/JA4P5HpZMougRPwHOiZga8Bf\ngCBp2gbSRT2bEZpMXi1/022qJ4cQQ0N904TXmLITuItRZcclruF3qj5OFfL1\nvSzSQGpBiD33R07Ryq0Cm9gzrfXtbdTzIarkhB/3ccyUuPMAGK4jlEgP4XgV\nYMh2RaoGgV4qLuQCg6Y3pe9zWPDPgH04ycF5IMvsbJGjM+D6+R3xfZGk69fN\nBH2hbeiAvMzJjPv6Y04XbDxxyFL2/VCasSKnyJKpFZGxuTCo/McqxVoxZNCy\nfKTPMS03cEpOxASOgUo/3wKtQPPLADeeOobEXcfU/h1iFjoUTlgQBkWBrN2x\n7ncsPl4yk3JjfUj4bdIrA2BcYOhpjYX4Ap/9h4zw4NBSeKSWhK5wxud39Hz3\nT6X37OECTKZ+WCNfo+Legcqggpr9wcSRdbpUxsfPmn9yiGFiXT9K5Q8UmgWo\nepLXO8Qxy4ds6iYjs90AhtTyiFBEXNfvOuA+9OIblTLCy2YgWzbg/Y4tyL3a\nHxIjiRQAsrwTZSmW/91ccgioO5rxZz/hpqOunomFkvzryFkQ5V2Xkix68L7q\nTxfv\r\n=iI0q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu63CU0j8zxtczgRYy9vclDumfJu70sAaLoksiv59PpwIhAIAFtPd68WB3k1bXaWxRfXWRqkbhD6bZbf9NsCrFX/bJ"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.2-next-1603890257-b068ddc8.0_1603890420603_0.5893576944976415"},"_hasShrinkwrap":false},"2.26.2-next-1603895970-aaf802be.0":{"name":"@xdn/prefetch","version":"2.26.2-next-1603895970-aaf802be.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.2-next-1603895970-aaf802be.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.2-next-1603895970-aaf802be.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cWV3BuztFBdqnwQKR+DWeIFB+97TE41dcZSI8vua8qAXdNx9DWvqhLzdE2Vnb4smD+rRM7Gv1rQYycgYTV5m9Q==","shasum":"936c08fc969e5956dd1554678e7529b59d71bcf6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.2-next-1603895970-aaf802be.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmYMyCRA9TVsSAnZWagAAo48P/3GYJoXAHbmQD8G+M4KZ\n00vw9zfydqpRJeYXTR8ME4sSZQD6hkgJA/z/9iyTmSYjleiehC68j+jjqI3l\nif8JI6LHWBvRw+ESJLxNItfYfi85MzZgnd4XWW068yBkJg4ZijP74cksA9p8\nRm04k96mqTrAm+fdn1/6Pkhl+5wIAA69ayoMsMV9QJSN718JBbV8ZFck2J7R\nKzCJvwiWnJFjBCvQw4v8mPajqZulJyIy/DBuCkrLnxS11GNt2Mikv2yuz99B\nf5Kh8u7j73nBKQQvAjkafBXofn5L9DnuP0sqmhgnAN7Sq3AX2nsSLcNG6DPD\n4hD5yGJTa3LXgOzvJPlBKn8wgiiKijvlNN9mVN7g+T3OmmqYUY+rmMNQ6tQJ\nHVXyPRtiutW/ZIT4MAkf3E4r5zQXWA1+thnHXfIIe+GjmHiWNwjkiuHbjzzE\nbNTC2oU2xDQiD/3KPCU5Qx85s+0m5ZUPl6a/gJK19NoJifm+K+8ClYE4M75x\n9aasVrgq0Bi9UcQ3HQc9kn5NiAcR4NWv1u6FLPeFcI6oxuKz6Z5oKhJqfDuc\nRcTxLIAzFok9gxMha9lU4dlEfuVajP1MIMrf1JwDcD5JYqaW462K25iFCDjF\n3YuDHT4+IrHvDj+62eTd4n9LHR4UM9ULZKlJb6tbgoqj2hqOgbqCnutfWYib\nOPza\r\n=U1U1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2BXXZt+oo+z2QrqjM4saYeISfmGbyXBqETQiA7gU4jQIhAIYSTqouBGg6y5n6zTOdmX11M/lYDPoDMdDwS4o0tpnj"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.2-next-1603895970-aaf802be.0_1603896113539_0.6969452831483651"},"_hasShrinkwrap":false},"2.26.2-next-1603897208-58b02ffe.0":{"name":"@xdn/prefetch","version":"2.26.2-next-1603897208-58b02ffe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.2-next-1603897208-58b02ffe.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.2-next-1603897208-58b02ffe.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-K0EZdchJo/sdHgPSPGwq8brEib/biX1vdIkfoyFgNbgYr4bgrFZ2ZOxkfBUdUq2kwCIdYpVjHhzA0BUe8PYKpA==","shasum":"e413e0addc332725c9abdc90befc4fdd9c251599","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.2-next-1603897208-58b02ffe.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmYf5CRA9TVsSAnZWagAAKgUP/04OHwnsqzEuqcLav10O\nOrrtFFgb+IBsjMCXa5uDZrPZEMv3nRRIavG+ESXG9GcGzdPIKC4b3hy5dmtz\n0AU/CslbsHutYJZSU0RDwBUtick4h6OnzHBp/j3YQ1U0w2wV5RhY+LOOTInG\nPSm/tVkYK0pqKAI8VpqTUoEpOPDmyeYaxxZk6hFkvZ+ZnyLZaGbuFH/r2otV\nkUj9eLfm+TsBZg8y+Uazp4B1gGrZNToVEtZJrcA5FuH3rU5991LHfQpA9pU5\n7BPXiHzyQ3KWHNc4I8Ax/MzG5y4AJyWlaTXq57OVxxfjPodDuc12AvG/uevU\nHcHw25k0qHc98oYXQECTz9l+iwkJyw8vjEOTRIRcC0ZaOOhuNrffRQK1MwN7\n1VuHDyKo0xlGNnRrcw66zTe7FgeLj8Z9/nYrL883Wurqw9M30Oh2ZmNcENlt\nfdcoPxjeL5EzxEgo4Jv67PMAh1L6/akuQGn5/8P4fwdneHWe+zZlU7RNVxFI\nOqt2yACsmP7Y679AXhlD4CLJ62Uen/qny/6Kf+U+aVa/TWEZDBRHotRqFqsR\nVSFP+aS8zKZWePANWAXz2EyqeUg90xi48YPJK3DjNev5X+nzI1Uin5GkAUwr\nxLEeCLnwxze7WKGsxqCMP53oNY3+Gpi7s20wVAcGtve5JA306xDs9hdJMl8F\nfUCa\r\n=pkp1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1jdEH349r0lUg2/MM10y1924MkNaadEonwxKMr9RJ1QIhAPSAl1V5AbZE9FfBOPsKCOb3aFuxrhD0ekEDxR4BJPg9"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.2-next-1603897208-58b02ffe.0_1603897337173_0.23728600818336032"},"_hasShrinkwrap":false},"2.26.3-next-1603897870-f24a5990.0":{"name":"@xdn/prefetch","version":"2.26.3-next-1603897870-f24a5990.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.3-next-1603897870-f24a5990.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.3-next-1603897870-f24a5990.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WMTB4BXlGP3FqMTa+wte1+h/hO4/y8XtoRzgijw10SLM5R+d/RfPnR7djVZBSUiTFY8+mt1XSIuFwYcZKr4z5w==","shasum":"52b39288954742b5c4475fbb2f0c1021b9428278","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.3-next-1603897870-f24a5990.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmYqqCRA9TVsSAnZWagAAN9EQAJOjbqhmHIygyFYed0kR\nhn4ITbxnl7tEXp/vpueLpHM4J5qgprkUlVckbVwNFdjiA3oncvwDq6R1vh+g\nPU6WSlitOFgeB0Hmdwx+CRGQW0dPNzBauki9EfWqljcOR+vC0LWbnCttqokp\ncCt/QkoGGe1yjGFSboj9OX5qzXgKusT9uFo0T4y3mvGwRDure20bC3RhgTlP\niWG7X8DtyKFGDzGTHruEvW1LHG9en6Y6UQnokJOTcDr088+jU2rIJUh06LiQ\nM8PX8WGodJ3nDtT8jgEenGpp7mm0DoSa/oH/LPIXN5yIewxHUyu5YPARpxKq\nzB7qKSpTEB7JJ6dC2G6udwm0IZWsA46Rbf7jlCkDYNs28AjGB/YCanGKKXVb\nSK2E9v+GUGB7zl++boRbjYomW1at4H9A0bqK4HWOCqjK4+zVK0QXK9/LVPSn\nkwGV/2ShqptmUv/VR/WRFfwDc0qTgurPEwHZ6G4F7RD7pgN0y40NH/BQgzJA\njCK6VscToxGh5XC5/tiGnqQeh4WtpeZGpIDlHAyPhd2uYQJ9biPPg5IrSvg/\ngOP6kQZShG7GlrrcIlP+pZNmEztNEUrUQ9+fwhZzRbG8xSUgfd+ukDRjTPTi\nghJ7A0JdNcgenWqUQiN850zpffgxqFaA8lDPQhrsdFaAH9iJtk4WGxXC1VY4\n3BnX\r\n=iD6n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHf0AJaI2HX2K3kYVOcEa15JX73J5zvvm2TkM/KciQNfAiAN2W45CXgceD5kAuow4kybpbVLlAS1chM5RjrLUUn2DA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.3-next-1603897870-f24a5990.0_1603898025842_0.7386517813726339"},"_hasShrinkwrap":false},"2.26.2":{"name":"@xdn/prefetch","version":"2.26.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.26.2","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-V8nzPpjPTPaZSj7Ijdjfay+XvYtEjHcauHkXv5jsNsoYWK7NYPLffIRvnfJYB9UYKRV/7Dd9uIlF0CCCB3P+ww==","shasum":"101379a8a0e8614eb44049ae5847e91beccc2f72","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.2.tgz","fileCount":58,"unpackedSize":135258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmYunCRA9TVsSAnZWagAAQLIP/iR4Lt/kgryWSAcny8W4\nifY9DiyZ79N51S/kXhKN2gGCTRyh0Rim/htrHnKR9r9jaaVWe240Y4K3Izsz\nsfJ3Ldnqcesjg26DfgsnWZbiqVDHOTRXJ9tLHDZrgk7njCjVA3NYPkyU1O6D\nW9e7D0tqJ5RL8kMJh8yuXg4WxDIcfd8ECPQlgNPHTzWdLnHkoTRYRiCmz3aA\npjSfby816ZjbwpI9Ow+s+w0JivYdHswlFN5hJ7a++cyOJIH8c0Lx/jJqdi/N\nPTXNaWmgIcDSR8kQHvNFhBk3B+28FCetRYTNMMrBjzMVC3tpmYSIuqLTUEYu\n8lUF75XenE/kjNGxi6ww154s7S2dfHbhuvbxr3PlUZTUiry88zMSWGgSvZt5\nl9bfJ5IYGHDjuuF3PGyLuhfyKviBPmemnZFEMNHghAdsUK7xDTl5/+SmvxZC\nTQxyNFrZnqxYGT+NLDFas2CbzqME70xuD54l3AUDVaAuI9V3uYMh61gh/4/Y\n1OIXRAxXHDclac4NM6qtvjKd6LV5XEKbAf9y9Jzo6WmOVmPDsb7ubS0c3PCY\n7mI1ZfCaZY/uqmNymsuLkUa+B6F+qcZxQf0o8lwcCnP9uJn/cTWsv04D4wyx\n3/jNFucAjOco056/6CdDaaEtUXxRyGcMWSxPIezeuDpr3bWjw8iKcUdvh5Lb\nhFYC\r\n=5MzA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3gNqmnMuNnzgIpBtKohXfSGHXa1d5OWrA12fjXZz7gAIhAOjkqaGgoaH116ozBMJXgYnXHP+0O+1bteK3CPGy0E4D"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.2_1603898279020_0.19651153948568667"},"_hasShrinkwrap":false},"2.26.3-next-1603898958-660bed6d.0":{"name":"@xdn/prefetch","version":"2.26.3-next-1603898958-660bed6d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.3-next-1603898958-660bed6d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.3-next-1603898958-660bed6d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VG57uz25moaXdd7ARmi0yOhiQzKMr7VDSqOoWjYMzdC8BtbmfyJe8KNjIuCbBoSMvq1e6mPvGfd8WnVK/+uZNA==","shasum":"06813636e109cd8ec3f66b35bb22612ee87d702b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.3-next-1603898958-660bed6d.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmY7TCRA9TVsSAnZWagAAvJgP/RRgdSbk3JpjxJDWI9+o\ngq9W8sZhnZCk37hw/M7QiyvzG94SA9k4rhhZan53K+J+apSnGHLt13BSaaXc\n6qZ7jM8UYbPW0mhmTO38RoXpZNnQ4YZHN8AAQKc/BiwI6p0CCWNOMLlfOg2V\nVKXfAwN4zi8YlNJneGVhL0pvZxU4F1if6E3oZ5Gw+QQzVh/fi2cNTlO+MJsA\nppujDNv8jQufBKHL+wOY1RV7E8L1NuKI1MhsaIglgZQXDo23H1zsdjAXmkrg\ngv5CyO6foEecQS2yll2RxdDpr4CCkgVcMXdG+js720TQ7mXyx/heoRtSqEvE\ns4h4Cb3Nq/F547e40Pl33+VAAVsHi1anwKS8XtqApPd1J32rzqJuzDJIf1ps\nQw42BZscULAfK/G6ACYET4nBW/p/EB1rwEA901+z2OlxmokcaVHIUAGdEcHC\nS3byFufJUGpqPehwLiQL8A158c8+/NkAcNZGRVzb35t6dK8+6Iw4dXxCfHT6\nEKhxH2k4vVCbzbCreBJn2FA/1NYAmcb3jo/kPlsNRQafZiBGAz/g5Et60q23\nDYWT96z+S1jOoTBYzf0xnfvE7ohRaTBn1fie8J5S1+DBycv2mxAwOhEHumMi\nsRuAQlS7J60itgFZrU4AvZeBSWdRDo+HFwZ18c70qA7lFroYUj+NSdgwRBBY\nj5zc\r\n=bjcj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC/+mrEAWeCSwgKqsPVFAnH0ZKnNbkoaWc1aFK8zbdYXAiAG2bUMrWagAb6tVpYy9J3ZkiAr5pR61LsDzUj392d8lQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.3-next-1603898958-660bed6d.0_1603899090564_0.3153789037194865"},"_hasShrinkwrap":false},"2.26.4-next-1603899243-78634374.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603899243-78634374.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603899243-78634374.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603899243-78634374.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-RQHOHKknvYpx8q+HEqRg4t6sjdlh+wwTiCTVBtsyJX/2SyI+sPP/7vh7WfmiNU3kIRcL30tDP/ntrB5cwlbFlg==","shasum":"92973e5f45a23de5ca17bd112210753c0d6328d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603899243-78634374.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmY/6CRA9TVsSAnZWagAAfkEQAJnUqAV0Ok3XTmg5Av9X\neqlIaxKc92G0c3xoLuYJNoRWFMR9k4c6zBAN5j+QdjE+paGdgmYeluqNlvmx\nKgdjl8jT9n8N7qqENGm5yosUFRiKHwdN45zshJBjELcITwLH4ioOcSbtGGEH\nL9QDKx0gCXbMZ+Wee1viYEW5y7m0gL8itLXb7/eT0voQr/HTmqokcnSL8NYD\nfRZTyVvVjWW8DzRvRMEuhCIGfX6rAdu5vWePwal0rN84TnVG4L+fD7AbF2dG\nLYtloByTWjrQp5D3yCJ8947ynS4KYaa25F0CVN+sVcl3ZOw40vve4kOkcUMu\n0TYKvM31W/f69AQLxetuQpUo5ryHVK0DOFUqyxt57F9E2MwR5bK4tRZU++ag\nfYMQWAjx63jmXv3icYzqL9kUOk3orYHtlyEeznN2jKNMkywOjDVwzn9t4gDm\nZnUh/EiPdi++vLTGx3TfeGwP7m5NQNQyfG/NZ6HxA39QCeiY+HARYOEfmrkb\nLSHGuGHjluipO7X8t+mwwKTsaBX6gmbuyFtWDCMoWOTXGWE/ZFrISfmv+K0u\nepuv31XXZOYbAuo9vC57uEd7/Vv4FHRuazBF+w74+8f/LAr1ZlUqlSUujQi/\nyRAqKOgFQCxbdwkNyIK7gT1tehBzYsuBNUrUkFoR0mtesx7PHWJzixHlnqch\n4K9y\r\n=1HS+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH4xJC93QUfhos37tWDxdQ7C0DHF0DtYv4iUZqrC99hJAiEAtbL8HZYEKmyThK20AKkMyybRVYl8wLlMFFexLsY72Sk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603899243-78634374.0_1603899385777_0.7325484734175483"},"_hasShrinkwrap":false},"2.26.4-next-1603907303-78634374.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603907303-78634374.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603907303-78634374.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603907303-78634374.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-e69IP5dQKFfiM3i9L0ElR2MWZTtSWJmYRrMt2thNVJy24pmLMYnYD+ZghVt7QxgdPU/doCTlX6zQRCJlxEmPhw==","shasum":"26748e67ceed9257261571a6f41706d05f780a55","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603907303-78634374.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfma90CRA9TVsSAnZWagAA+nUP+gM2CJSwBPyz14xHXblx\nBM1+nexwzD2jjl/UWqdQtmuB8TrRlpylM7TQ7SS+Dl9BJngqY/GSEiIKKrUZ\nH/r5B4gf2WGn+R4DDe4HyxJbuHjndrIRrmOEDaJieZ3k0c5Q7MWRTLh79q4G\najKM37jdIbfoNOlEOzpmJj3vYgZkjIUUXUzRNELy2yz5qIfCYCuqTOjqInei\n9iUJX9qo/U08fg3BDG4t9AFitxXu0xmEP9lW00gtWzFVE/fbyu+K3f7wdrmp\n3pL7zT6b7EIlxMc2v/AsFq60/ntw2lVx752lpZ6bNhyEdVkJdI+0Teua0xHb\neNO6KJJmvdOrYG21pkOBAksvsYvrBZ8NSKVF4DhplwdHrHBCW0Hf3OH4xLKJ\n0eaSGCd3jAbJ9CEo/b7639O10BWQrYvuuQTduSTqWGivJmCQyfPYw7awI/Qw\ndYmVoclZWBHvu1Hv/OiaV4TOWr6sMiXiUq+k02fmTObSm9IZY1DvSBEw+zDr\n0MG3qe2Gr4n/kPPtCXf/l4yCR76Xulh7KXwCCR/RUPt1o1o2zyPl4BAKxfMe\nNijd77sW5UdW6RsErhq27OjduH2T0XZZCRcv54/pc80l9kht7WY9HNx8pER0\n5e/AswWyvkp5XhGStiCihn/1Sqr0cjrgdnyV8ZNjfcLRPwT0OwRsiaTWYfAD\nyzBJ\r\n=UXl6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAKbEPqwDrKRUDGHRKkOZkhSOReco6B1YOCWllitdyheAiEAiRE3ep/qiWyC1JDJ6wFSyHIhkNz8FxS7hFvxlDHm+JE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603907303-78634374.0_1603907443670_0.07197212847777945"},"_hasShrinkwrap":false},"2.26.3":{"name":"@xdn/prefetch","version":"2.26.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.3","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.26.3","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tWSrwzqhC8K7az8DtwuXZ8TIWlaZ9basYMOTJnlWIkMND+CNlPL4qgV+5YXiUgvwnPRGSTX8811OAnh62/GQkw==","shasum":"f7cb788446251529bd387cf73652fbac9dee7dca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.3.tgz","fileCount":58,"unpackedSize":135258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmbqPCRA9TVsSAnZWagAAp0sP/jnI1xfuIQK9ou3hGNXC\n0+XS22BVtT9xRfITO05KH6bZwYm18m9mUwH8eMjTbeGynwqFyXNRTgSwEqwR\n2mWUXQev8+vpDn9z5kEi1w88FrFz6c1ldtPBE2bP4897QsTpuBsYMggHutSr\nLTXmRTA/q9Nxw5x+DyysWVe5wGTvHt52q07XfRAE75dgCmdLg0EePuA5a/49\nVEiSWOqHcxeMiDNbggcm3GmXU+/dX9IB2RGPQ3QTr2Cytzpn1RihfiA5yKqm\nwp4hvYUTqK+n1gZf5OPg7LCWCAHlr118hPhs5oAd6joN5uU2GTGMpJs3whYD\ntWCkqfnbBo7g4AxvD3aaY+7506zzqG1k5QkZALKK6GfOssuZkfvJsVja12ty\no931rleCqO8A9GHGLVdbfNUMszGX1T0LtGqvm8jBYLYj+6pVbp2ILFixTagz\njTjRcvKaYU+2a4fRXCpTnwF6OAQ+ESciAVbiRxzRLYPmQ6nLTCM1JSeYfUxw\nwzcUXO4WYHHehtf3pV0Xbz6c/tzkTGd885ciLGKo3SY11spY3K0l7Ef7lwYn\nRtA3/ZslWXnEjCXQEWKlcApAOTMNyMwjRPVUPnbmWqjG7/1S4Aq6MkJAoOrG\nOapjIsKAWImXVuB6HcdaqT5LTqOJLX3bR2X/Da8Q1Flb67n6Sn6cA8DgCrmZ\nZYme\r\n=3bbY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFHvspHjDyfqa4WxePIKEwy7lMOK2FwUZiLkaqgvYHhlAiAlvCGU1g/6LxTo4HJ+4scqRYl1kf4Ky2mCYRabM4gGPw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.3_1603910287051_0.6621194916400934"},"_hasShrinkwrap":false},"2.26.4-next-1603944429-a071b41c.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603944429-a071b41c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603944429-a071b41c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603944429-a071b41c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+55GNzr5GDv9KJYOFurFtTai8fdtyQ8OwHkwJl3loYZ6+HaIQoxix8t9ZkxYmAXeY0KMpiIM2BAFd0rV2egVMw==","shasum":"0b7bb41fff692f44dd3fabb78e61dd407f273b03","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603944429-a071b41c.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmkB0CRA9TVsSAnZWagAAl9IQAJ8SD1k+Qfv+bYLilrOZ\nThqWZ7Yj3i/Dr5dqkiESUOr9EdRtcTiRxOLfk3exWm/kOtIlaxJ+7oMfxkL+\negy3on5JvZbVL18j/4Di3rc5sbam6HdlVp5BfdVPYKTFd6IqvXnP5fXiZEEC\nrQv2ItnMB/99wo8j2rKDsA/h+gPvGGRle++JOd5BZqcitEzW8SzaP7yCyWfn\nyE3RqeTYK3QGmOhknZ/KdYPNRsGPGjjLG7U74A3M+JPT6gSszQ2r9HP0sHdB\n2t7I6oqy2+4/Q9FwXP3eVvdmiQ2hqaUy81Nk8sEsu1cBOKYav9DN/irStpkr\nNpdzsvRZSPcihgJ9R1EVwW6tdJ7eo8uw6umWQEyVdw41cmgKz6ppKJHwurdJ\nhfTrVltF9xHVLhhbP9YyKdqXIFcMi+nkzLpaRsYL1SddoMlAVPKx8zVPe103\nxvtc32RZLVy3nhT4mJkE8u2bChmx2V+pw4BjbfeCtyaCsw1bMjmfvMa828aU\nd6xGW5U8Kc5G7TyIXTDDjXPj5YzVWHOzRUKkOwi4E7vJzIEONKRmjyZBNg3j\nlw0Mz4IMO1sCB1KiMG2lRmZ6ulrCkXUOchi9elqU5VKN2DWh63DY1HNCY5T9\n0I2BHZrJqJHwr3dLphKON9/Q/ubgCl2QVz3pd8elrAn5LSjDfZdwgaGgpums\n3clD\r\n=bOrS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAOVx5b5nHeqme+/q62zuNi2YTFj0VaZF8q4PD9gT10xAiAaEs6NNczYp6UNkUx4qRp7N9NsPV9AQfTXU1Cm20Jqmg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603944429-a071b41c.0_1603944563520_0.765039203287132"},"_hasShrinkwrap":false},"2.26.4-next-1603971763-ce47b194.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603971763-ce47b194.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603971763-ce47b194.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603971763-ce47b194.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tOYXnV1O+ZIllF8oe3vksbV/PXcRATav875hPAiFEV8yMeAH9Zt0BeBJMkxLRBJfRMgiuw1Q0/iw1g9T1L2Pag==","shasum":"27b65bff399ec610897c7541150b5e87705a6bf8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603971763-ce47b194.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmqtKCRA9TVsSAnZWagAAvNgP/R8qKtLgvBSj+zIx857Q\n2Z/Wr6dSBzRzAr0G+NvsvBsjYO915ne0MeZC5g+okmfOWiz2FKmbxy/3Ly5i\n/tWD5v8oaJQ16XAXGNHZp1j4vf1jHramHscEu37YXPdaI9zaSsQfU7dA60Ud\nqdX/A1HldQLG7HGFaw6wHaIaxQ5wJ4BMcKRMkoHmaepP2FQ6LTcbZTV92Uf1\nzIoxdvj4jESB24SUJDRfR/cvs25A/+LoaqSczEi312YsJPiI0Lm2Gxr2vt3r\nvLg9RbEqNdaB+ggq77ZGcbaMMwAokgF5NiwvHJmje1kAafjaiS5HFBmR7/iR\nJg2OFmpuKEpEdAJTOPhvOGicOC55zwrpwlS98eDtqNyry+kUb58G57sFq7BK\nz3GsiDci+rYVyB2JHOb0DLTVyjRvCWmH8S66LiH/LCj//y/fcl4H/aanGsB2\n8iaoEnXzb2hGvLAV9zsNSJXZL5h+9pGOkDrnjSZ09dMINGXdrsaMfYQvDUy1\nAH6i9uP8lVtFEDHIBQ1YH6dwxSC4UeFN9z4FYoAgdkltGCw/+UAtXR3hNbJi\nvUb1eEVf1nUai3ohnzbR4DDzZ49GYxskwmVYUdeYThQ7W7klzLTVtXHAoOVy\nPWW7guj/ZvxhwaZaAUHs0kuMabwoANqX4DasHucxcTGiI3PsuhBHEuDv4xKl\nkJ+X\r\n=L4pC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEwHWnZ8UKDj+Ts2/wXxegGcgjaJEeKCVonFUOmy80dAIgRZSTnlCFadCzGz+KplgcUF/LuR8FEWseRYQ48EBDXr4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603971763-ce47b194.0_1603971913661_0.7325396696099726"},"_hasShrinkwrap":false},"2.26.4-next-1603979624-a62581e1.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603979624-a62581e1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603979624-a62581e1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603979624-a62581e1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uX0C0H55QZwRcSzcG00QWSHvFRXMzB0caP0hyDlQx5Cctk66LtMiVY8NtigQEX8aJcvu/CB9GRxgtBobGt8sIA==","shasum":"2dde62858b5f09de070a606c57914a6041badd1e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603979624-a62581e1.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmsnkCRA9TVsSAnZWagAAKoYP/31f4yi37w+aeD3j9HE7\nlIe8JN047WkM+0tRK9XYCC/nUfCIjoMLH/TsvtO/NOBumz+BlT86FWdIuRKr\nt4mQ2ZxN0O43DfrLh9Cyl31pTf3n6OTWUHj6HRKRKP6/zqSxoW99fypN3Nj0\nnpznAwvoRsdnSVjZ7AxNe5NNOEhkUIiBitJTxEz1Pu+I7RL+G3ZccqQALeOa\nK/r5JjMkaB0Ln9eoXCMej13VWque+sBCJzRafVlxmALEtY3ywzxYSu1GTJjA\nUyOcR92TH3VRVnMwi6XFahSKBj75oI2q2DFcp1fE5doz78wOoz25TR9pm+mo\nxv6TzhQ2gCENk1uXkr+Cb6/vFZfxh7Bq+PMcEUwDtDhh+VFWttKkFBiya20P\nSfVdojEAffRSJcIZ/kUSiu0Hq6ae/p4JqXbwApq0bHdGyIeXK+h414WCDimU\nf208VPzeott2c24EoOHJVpBoykTf8O2mdOQab+B/hEQZk4NqzH2qtBYuLhko\n9wBKr+BwjQc8ybmEFChM2KgUv/7WB4UePCprccdoFig1SZ13JXiAVw4rH2wb\nhBgetGp/r2osZVvTs1ExCki+y56r3U9GhZUr625W72jif5FikShF1B6z6GE4\nmYODaAMV6k6vNs0ec8J6Kdbg5brKrpt+MX6+5OyQJ2nWx0SWCdiYvXMDRde1\nOqwr\r\n=iZZ6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFEjxTnYDlmieLfnrLK1hc5NaCk9Ir8sd7yroNMi6fvAiEA3BrZosyJgrBKnNDz0px9ArH1WDZNG/Wp+wnV9R4qPSo="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603979624-a62581e1.0_1603979748063_0.13155464281313356"},"_hasShrinkwrap":false},"2.26.4-next-1603980399-1ae329b4.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603980399-1ae329b4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603980399-1ae329b4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603980399-1ae329b4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HX5ZmK7Ygk5YhDRZ9Tp21L+B8uwC7+7iCOjJhZFKEuVlbDZapQ751apBYgglDVuEvWaTnKA5M1QY48MSliA9HQ==","shasum":"c164800135350d0a2bead20fcb41f129717c84eb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603980399-1ae329b4.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfms0ECRA9TVsSAnZWagAA3NYP/jSLgLHpC8xFm9r8i+CW\nDzl1a0q4LotfzoZJDtI7cSqIlbs3++FU2omrRcPGzQo5MV0jb9c3/5wXoZ+4\nBbeYZy4Gky0xGV46NT/sIY2yAlj7UAmkwf6/diSQFMzRlF8gHIe3GBB+ItiZ\ncpvZnOq0tbJ15WIDAcUrekompuFhpffIejuiMvmMhlNZbQCi7A0jsfWIiv4x\npqYcI4CiGElkI3ymBvb8+nKzfSN+f8la+7b3zNYwTXs75+eqRyeSnJfYqJ+c\nn9p3jkVTr1/7fmMbDNbivyThxiKRzPd7jjoWvv9SkE54PLd3b7inBoXHYOFG\nssPGmcYzlboladV0JSvj0ni/5AQ+aZAKl8+Lm3fLl/RdQoFMzZoclcI3gE9/\nRpEMPs4OX8NejXiHbQjqCYKYDcXyZBCF0CW2V62ypS0hDjqAzD1CHXTcVAYL\n+wOp//09wXW9AOEYvqlCcTgd0Vr3t40J5uCC7yzz2mXLjC6k+FjT6KQFQzJS\nBIoAU8DKyQhSo30ivMErysP/MqG+kCJvxVt8QTAyK/aVICXD4FXVQireBP35\nNXOb1/pysbpHUIj8ZZ9IRaR+3dqpv1zTzw6KocMNSS98D4SPsIBSHmTnYZ81\niq3H/Mu683aNg73NS2uEMgDugoXAwTIZpXJO8dg6HX6ac0nU5Fuy+smT4IL+\noarO\r\n=+2kP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0Ynysa/872ttEBMtGcbsE0oNU8mOW6EPvC18E5WgE2AIgQP68sYqqu4of66YXCJfey3PV5Zu/am8thyxuOAVUTAE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603980399-1ae329b4.0_1603980548412_0.14618144822886148"},"_hasShrinkwrap":false},"2.26.4-next-1603980601-133e2906.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603980601-133e2906.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603980601-133e2906.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603980601-133e2906.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OImF5jb8vDGK/LDmgnR4J/0umv+CtF66j1XCtBzroGsMwgGBqULzatXQlDoDysEh+xBwHrthmATF76nQUWqBrA==","shasum":"f1b9d102b0f2506bbc628f727345d62ef1f2c54c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603980601-133e2906.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfms3LCRA9TVsSAnZWagAARvoP/jbNfrzhxfOjJ8DUWQZ3\nHjVBzupS4FY/vKXnlIdZ/DUzq8idtVpUWP8zgE/3D0nJdJEWk3YWoi6OYOt2\nOVXRDN3K0q8S5jO5NSw3w6HTbdwGOp3VGJ2WzGeTkpyKYCMSj1b6jGsepyRI\nClTVKc2ruPFe0ITNe2L1OTTyPvZ0icoTAcaH7V5Ag2s1Wpw2Q1zwpbge3Syz\nEzAyB1NoSpqYDDBey7jGtX9WthQQBnCYj4N41++HqJwEpYMTXmP5YuZCb7jc\n9vQFID+sUlJBNRebe4UYG+M0u5U/BbSlfRir+yL1iqmPcH+A/V2z/qeNiksf\nwVg3W0vN4huDqKIw+ygW3T8XRYTxNMm/3DK9YWhTXSwIPpZ+ZILqHCkl/AcE\ni4hiIRY5GPYjKQbJHd38lVEKDUZhE06hdhNxboVAOyFdRUJ9An9p52h3bm74\nG77JV3+BFmPrTKTHCJSPh175alm1IjObiX6w2oR+VeUVNGcTpcnIMq3VAUZo\nL5WpB8xY4G3FJvIQSWwNiAfQY1bXImmwLokYhTUL6OynCqJewjEjxPZ4xlzF\nWBRz6l3JOboJii63SoGflgitNByYrz4GSihRwbFD8CByKF94IVzUOLh8CPWh\nZ/TpmfAKGIynLH1T1zPYb5U7rZUDiaYfg2B7aMC9FVKRtxCCPd42rzHnpQP1\noE0u\r\n=sF8E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9OcfLZRcLF4fRBVInxw6iZHEYFlr1RUnX2Pp7XOvEyAiEA0RzIIRwQk8M5NfuObeR3z1waar5SV5uOBulYvSH3d00="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603980601-133e2906.0_1603980746643_0.1583020672554476"},"_hasShrinkwrap":false},"2.26.4-next-1603981179-36aa76eb.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603981179-36aa76eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603981179-36aa76eb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603981179-36aa76eb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-n4yNNLzA2ydgum1/INDVqMmU8pExt4x3ReqeRzTloUlAGP3JrfJbHkhdd77LXy2TG/ZhVbnOQbCiOokY/Tmr9g==","shasum":"f24f55f64248db081ddbbb11e92caf95a813e753","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603981179-36aa76eb.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmtAGCRA9TVsSAnZWagAAzAUP/0uMnfavCWDTVlCVL2TL\nALo1fFSLScjfG8IdX8q1r67uZ92WYyn7faK6tR1QAwO+Quc/YfFzknIMV+HB\nJL/SDaX1eu017cD0dN6gFm/7V3vGvutooYWN/BE5THAK4NMYXbbLTTVo4m9Z\n+azqvX7sPE0cXjnSJaTukxqVXhFyi7mneL0YBSiNRrBWcOcZz6PSfJ/4fNwa\noulrrFTUrHbTVM+mL2kCUm8Vy7q2QkPBl71EMybLCdH+DaH0k+4O4JvoGo3h\nzgLLinHqHPH6MhlrSxD7xZAK/ymv59C4aMymR5hJEV/hpDWnaK3MMUgzujLc\nuqGo8F8f8eNHpO75Lt8acocuCpNg6Queo8//kTBBqrwaU3RMzJajlrpw0lxF\nGnHImk55keBc0RKuNxth93mbnNXd/qpV/48oVE0Boy6zFWUyhzJaWSfzoYfq\nQfmrxFv3Tp2sceDPgpXCGtK5WGZcZk6I5YYjgawO26W68ZvDYfKsGGADUJxT\nMhYBy9TxUxi2NXj6yWpuaDsTc+Hk4UwyJM3npHuaRrEHft+FEx6kySy/faKh\n8t2xKpxyArD8+xNmhVhmN4/IanjG7BsKi7r7cUIqgvlwIbH2LvBl+nvHKdV8\nzEzOSBjyrj0F5nyraJbv1PFeDQ1T0tGOedWmP/XJbu0O8RVgqbCCzfYdd7M+\ndhyc\r\n=yHwa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDT9EKyIQ4GFS1ixJzAAnpEvDxOuLK9Fbuu4lxtT+3ntwIhAN2vlO+zEem6fwc+pGDueo8ssEHN+CCbkISieIImbcPP"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603981179-36aa76eb.0_1603981317867_0.26132306634422076"},"_hasShrinkwrap":false},"2.26.4-next-1603982372-8a2d5a78.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603982372-8a2d5a78.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603982372-8a2d5a78.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603982372-8a2d5a78.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r9XSTDomsrX5h5XrziSoyqKIaPpTJ/qewwC30lh4DKrElKY8L4RQUL3a/Oayb7xX9a4DG51FzJnLOJdJfOPYxQ==","shasum":"dc640abdc3602f506a164b609c57e9d04af6829e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603982372-8a2d5a78.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmtSkCRA9TVsSAnZWagAA1CAQAJ1+mqPTkXItIdmW3/We\nnx8mLwsMuHZw6Oy7qu5JPEGBveiNOVKgrTj5/cPywr1bmiac1dwFnrJlg9QB\nKnCU4kuXZBGs/660gN6zxn9V+H2+JTWDxdEC0Zw3etSo3h31YUBFBkEW9e8b\nyOYct3mY2ugm5sajoCVKjE7cfIQFBxMSuhKbMzuVkLXOmBtUVcmUAn0LqLjf\n+r9cHrx2eLqlxL8Ac2Vf8PgV4pBFsfwLmxhb3Nm3w0w6k15bLXzeAVXX6FIx\nuqjuiray+UOy5U0kjYnd+gUC21c2z2vJboSWcrerVmI+6whsobp2WAbnRY3U\n2B1SWID+EJmB+pkyinDpkVsPOSXfxPETqd2hqjb+mT/XF0RY5iHAK8G2PF8o\nD6gZ0JVJ8rCVo2xpos6vjH/9gW5b3zlwACSeub9SL+cuw3YmtcZY7EHirxw9\nNN6yVXfRnHR0yAmIKK4KBDyWcmB4KOFp0lMubFsioAA/oLpZ8x9OrwUb0hSU\nyz48v1/f3EwFL9CBh1gIPJiRl5kJgiMnghGQ2a1cQsVcZWDDuEpkdqhZ9h8I\nkKUUtBKCATTDAtbXZG0rls9Is1cgKIOr4r52BCKokU1HkO9FZRaXBoybk7tL\n20ObXhsL48ubVvbXI0WPtY4+jT2ZVb2qUScmWp/3w3LOWF4+PvlU7Pxeewg9\ncEr7\r\n=N7qm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFbXldzY2V6cemF0PkvL4I1D23N8bPaTefinhz9WhccSAiABb6HV87y3DhOijyil7IcYpgoTmLCwPSc9PSeFWGnbEw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603982372-8a2d5a78.0_1603982500094_0.34103119687734584"},"_hasShrinkwrap":false},"2.26.4-next-1603982541-36aa76eb.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603982541-36aa76eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603982541-36aa76eb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603982541-36aa76eb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dCaAFZe2u81qliCCzvc9PGdjWM7vL4SylM7Ukbbm2h0d5T2LqFFhJu2GI2agHiWuo+kVVx19yIO0FBvjFFpzoA==","shasum":"e4fedb544ef6b64d8196c13d24e75b0bfd524f71","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603982541-36aa76eb.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmtVtCRA9TVsSAnZWagAAi3IP/0JY1YMrJMhh3WZ5Vhqy\nCj7tGABMsPYFxaKIvWwtYHc+i9Y+/KoWZuFGxhmRfTs9/84m7DbtT4ziEyEk\naHzRaRAxn5sNJtgvBLpO8mhQmlgpzZuu4UtacPVG7Zm6piUBJS+LPkq801xl\nBKutdoraTDK8sNan2C8brj7l+rBY2nauxHUIf/FSOJN4tBpTXGh5FwUAfDab\ndN60YOWsvKVT+CmbIbiXp/ZwBXQ//s/9as6tl5F5mqhm4OiuUK3twk7lljvD\nAl2w48i7nAmRPaiXOIBrr/B7u6ulQfyQYZaROL9T8qcC8Qd3WW+7W2+In287\nXv80PKLMro9PlN48xhf5ZKzxqclGge7ssX6Nvwfqrj06PPgsZZ2g3KGwGlNr\nsN356SYjkGOBLSRON7a/4+wBq2U+UYzOW2VcKdv+5g6ZAq3M6mWbugHPuM8A\n7u5chVkcZihJAorU9O7B6AdmAltBMqThn1NzdMlssVXSdor5w7amfNUXbwkZ\nuQ0GFsy4N1f/799JC4A7FJ8R/Epuvo0gCH15bteXRRg083Zqgs37qsmFVPXd\nTNMufPiPhyvNIFr8ZgfBP46E5VnLW5bXgR0R501jO72vEVRQ2MgUcVzh+jQX\n2gw4C9N/cS9aAiZ45stvQyDgTCToLhqtvtTQYoHLHPmX/1TMVibsypkqe1tg\nOyKa\r\n=OkhM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBj5szUhpdi7VPz06fPOUl8TOn43sg4vXEQUp6ZO1LnVAiAGSeadK3zrXd+op+qRzg1aCflM3OFJ4VUrYeIrB3u8ag=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603982541-36aa76eb.0_1603982700490_0.3270117458037187"},"_hasShrinkwrap":false},"2.26.4-next-1603984411-c2aad9d4.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603984411-c2aad9d4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603984411-c2aad9d4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603984411-c2aad9d4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MyjUhRkzFtBlgKAYpS/EiQbSWskwX69jZ0V1gYK5poigv765fQVbP747ZVWm4FAtRyCaU+N6zmuIMdtL3v4NAg==","shasum":"bc8ac7e79e5066c129e92f34ede507e0f3dfb4e6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603984411-c2aad9d4.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmtyvCRA9TVsSAnZWagAAxO8P/Al8PQWbo8iFUGJG3siS\n6cd4VzMqlwGJyiQ/PV4FJuPAc9JmOBHhpQZiFi/NUMTe5kBpd+zKZNjNBXhe\nOv/kiHlLYOYqYAJ0aP4aVB3QiakJbAD/oJjfuB5qUPZ0pvNCHl5U02HIGJCR\noDouwabKw91YgXk2ZbajduZDz4LTVT0LN48BO0KQNMEOiFVRFAOoTDfb2Cdp\nfrJh9jOVXwsOG29FORAXNRLlG0n5czkx0YZrXsUSBGDumhdWNdSgV7q8+/5U\n9tR39BfvUKMandriHeZ8kblCDWNeT3jRj5QSFjVn2L465HXREeULWCC4p0e2\npqzcOBt+XD+W0tN5ruYiyHGLqYOS+S1K9K0BmhI6Q91RGRJkk45ysioNwP15\nT/sebNnUlryFHEjaBgT29450lgjkbe/EesnOTQrijycSLPNcs2PbdEPKCrxo\nFQz2dfxS0rVXl9gk6pKgCOQiGMsTaLCdgaOI2z6piEwKT86R3wlfjJhLxdtP\nh1ZDcyO5ehh2x5Uz97mA8w6WNofP0zoM064CAI3bXzEGW+hQ6OcL0hAfbo2F\nkhhoxLjHLdi9LX3Pv6GPv1UcWiWNpZFl/kGlrJdw0rSF8snM6JItJr/Zfu6X\nVVTGJ/AVo4mUhxCrmCHD3W4L1Zv5IbTH3ChgKDrJNdcu7uOV2ipmtBkAbgHW\nDjtN\r\n=YYA1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLNV4xk1TEShbCJkIoFVAi0Fx4w65GhfBN8HfT6fW2hAiBxWkt4EQNGjeoRns9xv6ro5rmeEvbkymfQpooz4EJ9aw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603984411-c2aad9d4.0_1603984558743_0.7550511144876462"},"_hasShrinkwrap":false},"2.26.4-next-1603986779-56071728.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603986779-56071728.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603986779-56071728.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603986779-56071728.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Cc4MFNkYQviqEDD5aAVfZr9AEEfv4z+Tj1i5Dt4CC1mxPPjvH75wCt2+ClL8MFHTG77wmK95rtMn62ev9w/16g==","shasum":"b539cade41a81e8c4e65695b67c317d1cf0f06d4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603986779-56071728.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmuXtCRA9TVsSAnZWagAAGOcP/0I5VmXvylInPasmVtGg\nUhJYNmpZnf3Mo7cK4RiVmGDTk4tu9DFmZzXNuSzlQ+dA+rVpkM/7G89g07vA\nc92bYBlO0QSEckfihC0P9NGbrqtGrQ4eDDR4AKSQqOQWHj9y1ouZ9LgFf252\nb15fzxOtsm4t16UPDNfb+Af/I3GnAhgSRMjpvB1LN3HconOxAYKq5nDiQQW+\nGmlAg8f8M0LimGPTq4+PfFhuL4KEpDosAiKvkqXJT7kxEZSuou01TRdkKbwB\nkxaGwePGgKrLhJAPciL7XLwpSoED/G+avgtR+1fp5VFvn0EGQJ9O1mTvgZfb\nnXK+aTA8afIHbbaCkS5SJXLeby3yWGpGF/BhtKpzHb4M+9eAt/rq5t6Q+mt3\nunfuGUKr9MOR1HCxfBneYgItt12HzO/vIzNNHFAIXlDqp/MGh4foksJ6Hzc7\n6f1vOVkcz7rGG3SAnrqLsIhB9JhV/UgXu1H9aDjwv6VZa0/wc9y4wWRd7ia1\nc8HV2gJSWSbiFbob2n84ewpS3ZoXUm0tUlZxKL3dNHgBAzSQtL6/2iO+8uyS\n7t2TMj9FbkeDpkNKlLFMjg/lO09iFfGKwUAoR0lkFjWxwECH3zGpy6mNjN09\nrenI9ecEJX23+FZN1HOxmQP1VQhzvKh7mnVuDcjtdJFSWya1ExlXuICJdgO0\nTt/U\r\n=zcnl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkEni+I6TfFeqioyRkOOm2ChX5bjsJCpB8EymI3jXHsAIhANMv/59lXseqYH/yCy8x/6UFKhRDCSHVSWXiCngtk9e1"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603986779-56071728.0_1603986924888_0.012849549984020658"},"_hasShrinkwrap":false},"2.26.4-next-1603987997-acf1fa16.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603987997-acf1fa16.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603987997-acf1fa16.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603987997-acf1fa16.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7RYBbF8KjazkfWFn0RIevabkujnp1ilyk7CMBBJv0YYyQR+9bKoHwQq5CNSXi9OEqc8ocMYQtqqUhsovc8PChQ==","shasum":"5e8af24e88701a565d00c38be3c50d25a31821ac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603987997-acf1fa16.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmuqpCRA9TVsSAnZWagAA0qQP/2xOvjEGsIgqaVbO8qQk\nFp2/0zEc0AoCemy0iHW4Bc5IgyaitwsbXfBnHAkVCt2BhSoR1nBeeD0PXUQV\nLthZYOkTe7/AWGKywVbt2wyDVWXQXPUwusbalXj3fzMWblyDC1XUiH+JhhLv\noiSNGixfLga290Hiiw3qfZ4k8VRdNnByv39kMMi2U/h5jwOJdv++RAhrX8EK\nGB1UVQSw0DG9gFoejDFZhFR+FjX6j0wSB8yvF6OHzOs7mj7nmwDfoIYJZZVI\n/Y6hqOjr4uE8niARmmGvgAaRO43Dqp3hOgC0KsQRytJYlzxi2Bcsr+hJtVOx\nSVbGTc0fTQcWO5QPnw/jXhPjB+zOD+b3n7sTMTo64UStBZSJtO6DlQOLNxrz\n2vseEfeo1kY+Flp1kL/A0Cnw8P86EMvWC8QNI7n34D32nOAqAkknmpvHFThX\nuQSBndwr4wrRjpLXnfMNlizooP1O1ncNQS0D4lYRwUno559kNUCW3g2RtIR2\n1YKVAsnTej1uEnNZfxdWZzm/Quyvn1clsPKiBEaecE+rUn2OTnLMxXyaHSYL\n1Zl72rI8xdpHW6DerUPfBzVKwmencqVlvbwmf7ax6cy6iqxxjTVqxuJkSj1L\nfi0Pac8ucxdAgdju6c0AmQHuRaEwJl+XsC+paFxpkCYWUyuRRJ7JsM2GalQl\nwUem\r\n=GGMb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGlDuk55DnZtz/pc67m+oOaylkjM+1fUj1cFovc99vZKAiEAq3/t991neshd2JK2WAQHgOzgxqiSf25pae64d+JJxuI="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603987997-acf1fa16.0_1603988136839_0.22454292011120724"},"_hasShrinkwrap":false},"2.26.4-next-1603996074-ce47b194.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603996074-ce47b194.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603996074-ce47b194.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603996074-ce47b194.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qn4OlL4JQ/Bo42QuKDyCS0nqm/va4GUPJnhxqDKbNb0ZihwFZ/gXMJ4iliCv1sYM8tA9oL2XP2gSMxTz+ACwTg==","shasum":"c6425b49868e8762f05d19f735a0c4e9ada1bdb8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603996074-ce47b194.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmwpMCRA9TVsSAnZWagAACm8QAJZJaYn7vaxVZvXBzoV4\nC0wH1bSu7BJjaUrzyk9yHqTObxNbGjY0s5Y3zB9LIUb360dwwvGsS+hoN+xr\nLX416wRKyFrTd1zfaZPTm+AfIQzkjptjHDNQu7qYMuDu6nj9vTzUQ8r9e7yq\nQYGSR8EpphiG1cx4luR0s/wWpYgd8RiB2jVw+OdO1Mig2jFG3z02tD6sq5Yr\neWUZHgG/nRrZz+kHXzluncK5ERezqKblfaQzzdksqNZQWqpRm4+s1T3EtPMV\nSXrD5Cfmox+J0m7PINjzHUaLcZxeupAETz98w2oWwHAAs1jTOBC1pi3arI7i\nLJqSeG2ND6pUVs4RmMytreE2dLRbwQ6oOOGPq4NQZ10H9Gyxiop/tLF4f8Mk\nNlx/zy41FE5yyn/7FhFZZ1nSjgPUPoLlpGWk31A5VVouoFCxIeJ5mHB+mk5p\nVHuTs/jNc/hsxxyApQYjcMbW8/f/5r+JlgSGJSxxYrwn4AC+2Oi8snwn/rT+\nvpDnHiU4ZczLcMzolgAMsxkj0uYYwmwVv18F9npwSAQYMudCSHkuQ89lzmRq\n+2IeDsjR3TEfPJGPYRyJ/4zM3FGWl/2L7nJaj9ENJA8po8s30pgETu6eljah\nsQOtFf1xAkvvtscp3/VmeXjRw+fYctyA/mJFY+F0AiaGsYPgocq7USaJ4epr\nWkEm\r\n=zlDD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgewKromer6MMTQILkAxWrmdRfUJktXHsc0Gq3gVbzMgIgMhdhEsPnQVy0lgRg95hg4xLXkR9hZejKxEZDKfoQYLk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603996074-ce47b194.0_1603996236061_0.3053170220515975"},"_hasShrinkwrap":false},"2.26.4-next-1603997705-c6495cff.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603997705-c6495cff.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603997705-c6495cff.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603997705-c6495cff.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KT/A9Y5oqMA50vcrAFw/H2dpd+AOnjf8gQOxVOpqsv9mdl7oAx1BfBwJrvWxu/tj7U8PYR0c960rKOEtf7KNSA==","shasum":"ac9da08cc50cb9ce4cadcd29710788786cb6c821","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603997705-c6495cff.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmxCSCRA9TVsSAnZWagAAx9YQAJeBbMXW0hYtIxo44ICd\nO+up6j/BkCvrmXwyOH8K32smROZmWkMSrO4ib2EvJnOKbxGbZ73LJpkPftWz\nDs96kuD0aLN+VSyno/w2XxjMdc76wKY5zQmL19pwcdIwREn/91SHKcIqMT4f\nDJ3RkLYWVqeWGA9scUmPx7Kx0Pza6Gi5AZlc5D2OFk8CNqrlvUtBjHviACmK\nM6sfbF1sFCoGDc7iV0Jl6His8PUmweVD0h/+10fjh6Pqh5zupvw5LYbVwXYJ\nEJu8oyIHq2Zm/0BlmDjy4NAyoJQUMsPRS7KYrXJX0l2oHLiJyTmzgg7hjoFf\nURUThrSQWq4Z2ZQ6xalhSpuqywg5zJbgOQQNsnminfiZQEPZKwN2UixvzLmi\nqL/V87eTMmqiBkpNUz7p3wAzvxmbTdtLnqI0kMi2mk4KvhDnsldZFwQBmPnP\nd6oYVRzZsKGihejRZZBK6zEBVOzFbyVh+F+/ZYXA/zoHsPOsih76wof1CeIc\nZ+rYr8T6ExJn9D4m2+MhWpWzvKm566TwTy4XTbtQxajPwRpcyCZ2S5a4MCMQ\n9v6fZq3M8t5Xt+1lPODINtIS1kzuB6fP2ugOLd/axpmFXtMKyud2/kDxCkPZ\nVigP1BcS7PgHkDNouAccQnUlcjQuFhKtna4ZUjcHaX+MGrmP3viyhGbpuVYR\nWhso\r\n=oMxd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDznbb+Q4fMvV6pxxbtMBckSgxGtGFZDtpcrU03bjLKfgIgLOrUNig/l2ZgGiHTCM2pC2PL/GknkxBsCtJ5LkliNHQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603997705-c6495cff.0_1603997841712_0.9633795268790772"},"_hasShrinkwrap":false},"2.26.4-next-1603998701-3c75928d.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603998701-3c75928d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603998701-3c75928d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603998701-3c75928d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Kk+aWEJYemXNOFZCudbsfAPSqSJY6yd0EjuhjNzqIJauv7yQhLNngJ2NvplfW0hItOnPAMTR7MW8Q778W7CKRQ==","shasum":"af34e16ad2afaf191adb9247c82879e2fe9a641c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603998701-3c75928d.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmxR1CRA9TVsSAnZWagAACNkQAJNflW+0SYjNt3d3tH19\nEZVTi4Pm1EM6E+m4YoDw57qD+EHXLb0QCDcHoE/UwYiI24V2AemlE9bxt62t\nlwNSap0FwJJTGTWSyXy+oe2JyZHs2Shk5roK/UsmkELYvCQv25lSoxvzQth5\nvpuMDAOiiIsnxOwMjc2AWwzCbFpifIQBMkK4xwmFPT3+EDAnHnTzSQqBB6sC\nlKEjzAjxrxwqpPzJfjWjNPSQzClwW1/LJ+K/zTQRHvW/t3zRplnTSrsdMuXP\nD1UlgdtMaD4gE+pDL7Lf/LIJcuw6t2nu+ySEo6l8aQFiqlypyHvzMJjSoXsv\nkxIQXHM4EXUGAwxM6811Qa9uNlcxf+SOBqQUcCQbYk+eB4BNNc/ChL5xam0C\nbpnRLPByAGZdPp3z32GP/vVYBXLOblWWGyeJOmG6Dtcc4CgTDjphLsnlnMh0\na223G86pDOsQ0R2RHZPRAgsoZ+KhMc5mdIK7MpQeExvVrjMDjrkHGiKZe87r\npZeT592c3n/N8CFOiUItXCdzT38R26O/fy19/c73MbLVTTpxIN6YtJc3zXn6\nZvI6MAvWIm53aiQtR1AweFY2u0rBlH0ZTn8zyC/30xKrrt5fgYjTN8BlA5yY\nLEXFE8nDYiWnIRfaO8laDiA11R7EomcNe3nuFiTcG3ysKPqTRgpJB9SKwErt\n9VlJ\r\n=0uXI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIACl/j/UdT/oegOo69bTNEeTL/ki6KLxAULMl/VfZUUnAiBkokjcOUg7uSDC4IdtkJY7gZm/sU14kuLcdcUMMqKzBA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603998701-3c75928d.0_1603998836646_0.6060657850554423"},"_hasShrinkwrap":false},"2.26.4-next-1603999183-27d35075.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1603999183-27d35075.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1603999183-27d35075.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1603999183-27d35075.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-L9nlOI5bv9E46fWIcnRjZ/ZV8zudSMteFsMc+oosahEfBCBSEwsF8EsD858eeQASOBSrv/WZvtond2qp62LsWQ==","shasum":"f61c8bd26b72235a1af12cc277eef951707b01c9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1603999183-27d35075.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmxZdCRA9TVsSAnZWagAAMHUP/3Dn+6Wu6Zdf/a2f74xG\nOaCLZu0BZanS/iMbrLcu9+7Aur17VmDPC2reZYhmry2x7RqMpedx85jhJJU/\nAbejNZ2wLoq8AhaLYd9eS/3fs7qJwz7gqB0nB2Aqrmv50eN3hXtTszNFgr0L\n0pvB3N8wdFqizaeMuxqbnIfkEiHnx04bdARBDGpLvlYb85/2Oza2hRG9UwjI\ngJHWdhE2FGpTjAsoKN9GoMoTPUAWXVGfebhIzlfthOPt4agCKFZNnHG/ZfRk\nDTZlK3rVRjIhjAxMjDM9qhWYr4Pa5BSxV2WQr9fYcCN4O0ziiqG6amLMsEVO\nhFADtHg9xMZUl9UkvrB+JR0S/t/67K8XAS3zO3twWg4ZL+lqd15q/FHTVql5\n2udcPKagnAYiljdxHtfRXw7UKe4cY7QS5wFqZhZ8BzSxXuJ2Q8bKOCOSg22Y\nKvQPlBcyE9FJ6mORi/Kwtg8eGsIBpLujXfAAskgP3wX7kt7jdHN00+r7dYHM\nM3RNHbO8H+y3rbfaLsltupq/vAT2q1XngoiuWZM/Pqfzthx95ZEKhhoFeLsk\niPbp8o4I9W/jN0v9Ne8O9j50yHuxgT1G500sooKeDuKw60VigVqh7nj/DdzY\nza42NKf+r2j0mBgQ6TKYvTDpLmWICJo1KeKE9uLv7j4/PPfCzKoByMWYnOU1\nthWR\r\n=2Uzl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKMZs9C3khEvFCqFQwGc7u5Q6Yv8SnROgjdR+J8c54IQIgLwqCWohQN8O1/i1hl1t+Mboc4yiR3JFKRLkcrdnFyO8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1603999183-27d35075.0_1603999324462_0.9950883086924627"},"_hasShrinkwrap":false},"2.26.4-next-1604000158-27d35075.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604000158-27d35075.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604000158-27d35075.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604000158-27d35075.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-RlMlxnP0FVqTrbM3wqgUh1Hf3zCAoSau8fX94CaGNOVdpdmOAEZN2nTjod4bUMJZf6TrmBPj2lnReNl8YqDfTw==","shasum":"46733e5eda0e10595f5e8732135d75a3f5c7cd83","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604000158-27d35075.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmxo8CRA9TVsSAnZWagAAnjcQAJLhEapVbIiF6bj+7+iE\nmfBWhckx0ygPZOmLU0MnvYkwgVolC0PSNK+RZfpqe744pEl0SAGGT/mU2GPF\nVir9SiatsWFTru/sTCQ2M2avYib27kOAS/XfnUVeVxJkfBK1i2jvD0XmLZ7w\n4Q8toXW2mfpmCsaNZfkjN3mMLxgY9HGCj9za8SMKf2D+E7eRUEYshivlUGXz\nk1hvBG9+j1FeFJfQlfD52dDU8qMLJQctOHrtMs5c6o7totWDVBZnSuP7SdW9\ndyvRoKundXiVYAczOqu7qSgQ4cQ3sLJr9uHBYNzyrs/fdu5OAgtISDaJSgJF\ngxFoksIJrTCAK7fqXQqx76IyhcNoIG75EWGhIE0drQIqsDUVItWskwgoJh+o\nYrjTKdCmq1ancwIzGOcKUU5nGbJm8V7wlQ2wrx+zKJbRnKhPM8rTyzVMHc+y\ncplzKwwtvNARko+KNjSb5Zg5Vhdt0GOoSNFGeDB1nObMNTITNm7sfLXj4XF9\ndJw6Ev6jxiOAZ1A9ksga9Y5OredXSAXP3BbxHZXehJkB+g+zgbC4Rc2/CiHY\n2ntJsxJab5qgwP6ls+56aq4eDoc/dVwZ7+o9IldET5BUxNarFzVgxoB4BUrx\nQRRo2IRI/vCW/Z79rNlSy6DHSeV6wDUd8pB9JbalFTTDPeJQtry5w756mbZF\ndmq/\r\n=1SZ7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHDcZ7NNskZA0caAewj0Z8RjHGmmf3Dx9tZhvFPsVnbAiA3dWfhE+3waDzW2BYe+dEbkK96dVug3ceiFsZgYzYPVA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604000158-27d35075.0_1604000309240_0.05141273044845196"},"_hasShrinkwrap":false},"2.26.4-next-1604002649-14ea883b.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604002649-14ea883b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604002649-14ea883b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604002649-14ea883b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-e1PY5fd/oj7lPctUdH54aSh6vgx8R7GVegkd0DJ6I4M8Tr2y/EKIN8wbnnYjUYfPT1mc5eaudNEiuVjr9mRICg==","shasum":"11b85a35662def8419a028077ec2ec8c9d9fe5d4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604002649-14ea883b.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmyPeCRA9TVsSAnZWagAARZIP/imIgQ+cpaSLLkT0Sjjx\nTjDxxtjN0tw1EDAlNbCWxVo5yzsZapmxRR5RW+3bGcqAh7/YHwi9+znf9zMf\nJVxr0k7qzz7cbA8akDOcSx4diiP60eqG/EzR8wP/Ii7ui0YP2flVagYkDmkz\niFf4NBFnMc5cfAOgpc1RvHW5Wv18TGbX1bvEtx8yAJuk67mBquFodZJ5/TrM\ndZxRlVu6nWjPtV08gSOHU6gFKix7kOHv6qJhRreypvIawR54EGuSgvWvtgNK\nOPY0CGIErfu3zRBZ0RjRNQNIHdmEB4YyWFjeU8ftuhflOwW69n17eumiIh+j\nb7NTSzG7bXrArq/fXtQEpUQDOovhvfbsHxHRA+bgO1G8uXYLGN0xuAe5yw3h\nEqGUwfFpji1qOkTCMbvELFOL+cSAzAgVGxuCv0Lvwh0oRMUYAH253dsvvy/y\n8uguQQfAOd+JsVEmp1cghWHvhDERqt/Jx4JvQBlMnEqCDCjWelnOKvG4/3AD\ngcAtGmbv37VpHq7S+sk85A67RH+tt3+Xpi8hw7jRgAnCFjMH8kAehvoDsjRE\nZ0lBk8BYJhA9DvFzbT+OJIYpoAJhnd5kX/Y1nVBeWv6HnUXThL+5ve1Q2PBw\ndLNJaI+PvML/t9jlq89BsdzRubQtPWnC0AeYxvlWrPu4unwnwJbm2vPoYHWs\nuo8d\r\n=mlc6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEzshkM2qUuASlg+ibDorlTfw243Dj8SHo7KTihQuBPAAiAgzi7TC0Qf8bMs3m5DJOL0epyJLAGq5a9fyR+zzFljSA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604002649-14ea883b.0_1604002782264_0.2504063067820699"},"_hasShrinkwrap":false},"2.26.4-next-1604004239-9cdc3775.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604004239-9cdc3775.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604004239-9cdc3775.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604004239-9cdc3775.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ne7uRk7fhU5j6rQr4MLb11M8TRsWVBGYX3Y7n8OrjdOS7Pwj3xt55y1Wyb8s7na5z8Fgio/5OlVBlmJDg1RA6g==","shasum":"d814e616bf9390a23b864f61eb4c40e30646ad87","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604004239-9cdc3775.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmyofCRA9TVsSAnZWagAAUwIP/jXNItKmhwoJ9MpIeWMM\nOH6qV5Ql4TwjHNGY2X9YH789cQRPAUaPNbWIVvq7vGTMPbX5P5I8pfWpeHlh\nmDcJThabsbjhuWnZmcL9rIQwdUKoEEVoVX1RowkFSYG4gXkPWT8n/3kYhOBC\nYrcbum1r63Hba2XaIUrdTsSfh4rOKsW3TOuGHAgybQUcGvD3AHv4erIXM5RI\nenAU2b7OPM7DHFXvpqOEUU05K3mULFzNROn4l3jMawmnXtb6uDEkx29aRMjg\nXFBjkD9qaPIZWcnflhoqdhjIVJNprgBnXG5qM2Jl/gXe+EYmJN+CcU1MctLw\nuG7gPt17KGHgK8pJrXfc8tVNCS94ZV4jfVg+FXGbm76uwA+i1VEAo12DTA0h\nuLy0BWbtRZ50OCjgWCd+RlAyHaYQanDSKKYKLMTHUCoefG2+ep5yjm/jKUGm\n85+hv3xyYZsWo0+3wqxR5X1cRktY6fMcAcvthqdvGNksvZ8acjhJ/daaIsys\nyWprNuhtMdkwBgS6gNZqyvTQnaxKLOYSFn8sz0i+JCpc7gJKThTfIuykCtHf\nsQU3/nJ6zf1amIE+xrTippPD4GvLybO/h2BZzuJ5IsQWmHDSfXoOPinqvrYf\nVCWsl0VXjdB9W356AOppWYrZ09U/IH00jrG4mbxntGNmgy1pfkbzgNGEti6N\n1sD2\r\n=o+Ei\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEWFF2nNramO/+W0HDkptbEmJzKCdkC5oSDJ8DKuAJ1BAiB2FfLxhBSexgNt2jM9fkIefr5F1C63z68d3VHX6VsSCw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604004239-9cdc3775.0_1604004383048_0.7128977948504698"},"_hasShrinkwrap":false},"2.26.4-next-1604004945-b6d0afd3.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604004945-b6d0afd3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604004945-b6d0afd3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604004945-b6d0afd3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CBExAw9bIuDMR8sN5K2BaHm3eOyWbpbavHBJN+VhMhKhoKWApgCPsko3iW0Rqqpw6WaAYZjls9EzQG22kuK0HA==","shasum":"926d544947253a74d075c3e68ec78090152929e1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604004945-b6d0afd3.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmyziCRA9TVsSAnZWagAACLcP/ixphr5qhhzeY26P8Fyv\nUfjjmhYWRYrSkCRpuBxXp5zaAVzxG0MGRWTiU7GwPFyE+NcuQIEd5kV12h7c\nBkvxanI23kIQMxP3j1WgSl9P6vCmjud0mwly+gZqFSsJKwF3kvoMa8VyzKlm\nhImQr4pWLVnSYVmBySFHna/nchwnWJpHSPd/sD+wQ6+ZkJuHykn0Ka3b2bTa\nzfu1k+R2aRwqpJyvkpRyWHqPEWeY5XOZn92Oqn7ptzyuxuzYzlzU1v4MeeJz\nqvmO7SMiQNnkhPKWzDpKzqH+AGmVhh59Bg252TUxZl1xzkMvQWAn8FFiHm03\nt35r1viHBx01jXfuKFjDgnQWN8bRrXYkbkawDsh6bZ9AwNgOVZgt1ZRy6Bw1\nxplGV04l93L0iFW02YdxpXfhEmyBODMqYapNUAr9UWRb0nDyeAcTkihfYSoe\nZJl2KKyflFyhVA3qvQ9syTboCUSosN4r9LnBNF4shvbqmyGZcF9gT7qJo6Nd\nhX/uscuNLmlhgMY5REBjKHOzCDkFPv+c7tp6UXOH0Q5noqiTu5G7BaOajT0b\nDsg/RXlDX7A53ynaUqfNbKyjAl7URIy/xFfrc2Xhpy8bB19fTsKIHfkXSgDw\nZ4jlNctHiED/Fi4I5YmZg2y9mk1e9otN69/rcJjqenkQzWz4D9itecYn/nxG\nzrKg\r\n=BBAZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICKJcBtwzoUT+Ibrn9UI208ezC/Xm7e6blLl7wK9NzU+AiBBGz4IBF7vxiVwLsNiuyStxNSY13cP5e0EY24WEHrqaQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604004945-b6d0afd3.0_1604005090479_0.8987424712553491"},"_hasShrinkwrap":false},"2.26.4-next-1604006886-44d32181.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604006886-44d32181.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604006886-44d32181.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604006886-44d32181.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YvDFWsvj/s57pKrAf/XsnDYg1lNuN1PjcTuJgBK4eW7/EGT2MkKXCqWQpH470TdctDndUUU0QpHDQlFGlbWVcg==","shasum":"518ebad1cbb23f24550cac699f62b2a334fe235f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604006886-44d32181.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmzR1CRA9TVsSAnZWagAAYpMQAKC7pJDr4uabOLCfk1Xi\nwlYwcjtazQk+h7gqX8nn5ahfl6R5dN4q6w/wFhhuTgx1FlVh89HNAcWoskqf\nKoFXDJVeO4YGYQK815zxUfc0PunJPRke5Cg9nUl+M1tM8UjcI0NdwS6dg2P4\nYEmyT7mTAs95swsYdBNQBR90/Qg9r2SckFiXSJ0MRL7IH0brdhMWjLwrO+7v\n59S/snwnghRvFXoOIOqfSaKBp61RrTPatHBoTy8IviDS+Lges05mXrzvh3iC\n7RwymGD/ft6Np7edwmCV4FvWZYKBQ5xv2M0zxuv9iNTBI866521DkKk/cN2G\nzC5VHshF9jKm/7J2beAcTapBGdQFrr2TChXS7EwPenO2u8fMAVwYiyCF1W/J\n/P2ukuBQE72At3LATVUQEkKTZD74NuIBOkcEe1c90dqUt46WJEt3pc6IQXNg\nECjGQ5zchF1fUdrp5pTAKHW0U1dShStleVacBWJk1Cq44d81bxddM+Vyv6jr\nFfxsKRdZVJ6ZWxPCKR7mPZ+JbNNFE04XOkTKNzecT7N75pwp7adx4wboxrP+\nul3QgmrLV2wDKpoBk+uHPkhDCOS3Rc/JX8X6saprDVyPt68NTF4Xdtd1xyMU\n7pRvjSq5WMnSbO7GRxQi0tzSShH/jL+8LyFKS4xEGKH66wnvBf6X/UxW5oaP\nL3kM\r\n=iqmi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDD++UQdB+hBi8oCtcTR7HZMrc06durqEdPmMhtyTPuhAIgazEAu5APHFgdJLQp33XuE6CQTnMVYLXYgyCrStFd4kM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604006886-44d32181.0_1604007029210_0.059399726377756146"},"_hasShrinkwrap":false},"2.26.4-next-1604056954-879fd75f.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604056954-879fd75f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604056954-879fd75f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604056954-879fd75f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ve/ythxJauBu8hXFFZFoqk8ltvDa4M+K9qkDzZfgwmP7iH5D4mJcicVyzj+l+D9yFUYD4BoduGOi4S0xGw76dw==","shasum":"3a5fc96b323f3fe9140854c8f87be754fda4eb9e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604056954-879fd75f.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm/gACRA9TVsSAnZWagAA8hEP/1Rb0p4+P3rdJNthv5dm\ntChHIsGfKa3fUS7NCBUL6Qd9wYeHxQkuNgbmBBrYxZgImZ3i7lT9tBQGiK69\nGBQ9ZA6Vphd73KJgcfRLzzS2kE61Nz4NtTrF21oj1SUQQAY5Wee9B9hQfsSc\nVPqoOQU1b0+bl1aaBdzV8OWIIcA+qd/ZDwG1wNuZmoUXvWmeC0DPyFdHpyl/\n1tXtynM1l+0B63OP4lGpf9HQ36sKUt48A+eZVKW6LgeMWun/cn9djBclfFBf\nK1ZcVX/RWPAPBJ2hbTq/xF1KA8pXXnfuyxVDZDafzlCM9wLn/U9VrmURmfv+\ne6AiOmS3rhVJ/OwX9khGwysNQDLyi87vV2+d8W9B8W27gumhjzJBDVYUuJvs\nC60MXMnkKXX4qF7jMopcCKvDpxuYT7Fit3wmlvxmEm5pHmIY7S/6o+MOs/05\nJ9OAZaOjRUDIeK9S3ZbNPSBLuIHEmimwOT1vIvzGEZSU68gMhr6OjYqHewqV\nPyHGAdaeNpKZMtYLR4BZ37InIdwAIV/FNSw58JmPEUnvVT8yXgmAhXNOouwa\n7c3/EJ9m2KpV1lZ8ucn5f44V/+ZTvmuJd/Lw1BfnMt9A1b1ZhyJw6nynoNrm\nCS/edmPAWPC3DTKyYgGsVh/Zh7H4Hzsi9GxJQe3ABY2CEOAxUyVv3plfKy+C\nn19T\r\n=TkY0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDQSi1SzIM0LXAS/CRtxSYyh2iO+1ASCJxRqs+0UMm+VAiEAyTz75I46rStA2AZ8leatx9Pigv74OF1KCn4AtjI9lpU="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604056954-879fd75f.0_1604057087636_0.648103702895596"},"_hasShrinkwrap":false},"2.26.4-next-1604056996-33a03a6a.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604056996-33a03a6a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604056996-33a03a6a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604056996-33a03a6a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cPndziD2V7tTHk/l9d0ZVPLarKgoHjWpkpwXZz3RVOwMT66CcCr8FC7oZ8/OVIMPjyjuIoYnLGsMbsnbjX1Huw==","shasum":"56fd81ed56cdad8a0bec5af6b2ae564bb589dc35","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604056996-33a03a6a.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm/gxCRA9TVsSAnZWagAApcsP/3do5iaOXyDS4seslRua\nUfBlSGfCb+kC756hGSv8fX3x602Yg0Cpzr6h+WbteO4UBsSuTLAi2F+E92sO\nZQFg7ofEASPNNCHQHacDOMfKAzywwehZIKK+irxwadiy8O92QzbKHMNKBIue\nTYvJ71FjRA2fPCamN99rhrwXr7Wor54DW4pJMFQugLLGS9D4U+OmRPkZ5XLN\nUlJhPZ7oWvD8EbT3WxxkjxYPZ8XqdatYo4ZNRRFULtWp8Hg3T5hl8ccy5pk2\nzCAPEvqidgilHkyxTe0I7oDyr1U1mEKtoJeYMzd7U6Fh1KhwrCWTzj8jsYOL\nFG9XDFk/Se+bnJHgf46sebyjrKGXawJvaiy/CDQ6OrEiMPgEKt79hZbBZZcA\nkrYusfr+qqx+P0wYrKmzHKMMtVc1siQkqqXiq1oj36L3fJ7hbsDX7w2PQhPv\n+0sOdMo9tzh8SJEB7X8xKsZsBhjTyMLI922tLGYcXvDFgXekkiUK+NkvC6pn\nlcIhxfZNxS5zbxGwi3S7ndxxqpf2rAa9phWdpv4m2jq5zMUp4bZFYFRq7yKT\ncZdrJFMVe/RRec1HJLLPNaQMjGz0v+KqmxMaxiyF3GAyJ8CTC+p5HXNd9PEK\nwp65PdVG2tY7EA4x2CMyTmb122bjoW9xDpBZ4BUn61SUyagpT7LvwKSY5LGx\n6o/W\r\n=gmko\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH36HLHGt2Bo+RY20Q0zumBAadcUsGhUC88xciFmhqBkAiB8y+UPhxS+GOfOMoosRN5Xfh1xFRKFZRi43r/FtSg/Zg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604056996-33a03a6a.0_1604057136505_0.7837509034839489"},"_hasShrinkwrap":false},"2.26.4-next-1604060477-9c8a6052.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604060477-9c8a6052.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604060477-9c8a6052.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604060477-9c8a6052.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aHEJsWbrEpCCjUFqqe3FcOH9KuqSZkAXhLuju/p25ncBuUOhDbv5H8Ly9dTonT+uIOJXqQ+9nULBXENFiVAnlw==","shasum":"0be42ea216ebf56e1ccb79c51ebf19dff3dea23a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604060477-9c8a6052.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnAXCCRA9TVsSAnZWagAA/XAP/Ay+v0w/PCfOIsUJkvVT\nsaIyfk7xTIroGzecIU+QnzXRfHmdq0xGV2ZDXXvpQAtxCsIdQ1Rj3WAV5pBD\n1WSWudKXq4B0U+d9eKdQiAAaGyMmEbl4KOwVQt+kg13ZMRTCQwgaCzmnslAK\nx2Ic3tIoN7LBg2oCY18dfyNGeioP7xTpI8VeLvzcmdHtJXAwjwDFxeHQfEZk\nuhba0CNu+6owEiqhj1vfmFUCrUH2Qyq0Kh0hc2Uj+P1vDtB2AaTgP7yuODhy\n49h595bSBbFt+H06S8EQcN1ruRLIN4MtuVinZroHRAKoSSTksKvX8iskeQAz\ntLcdxtQioH4i0g7mWGm7k9IAPg7ceO/UMnnu1vMl1f0CmWO04eXLeeL0f9TE\nKmVY8zQZEc1GZM1oEjKRS0aVSapHMjwaCrlyy57sWjWwAwefRNlhT+PFkSs4\nwNeb4N8IA+e2Y3eQM9EeqXMwIbLiZlUIKK402KStVcTH9MLDB6pL3Gof6OES\nI2/i2MxHzWSOT788NTogAxfASJB3f090Gg6o+Ok58zzuuah9gu5aTOv5gnTl\nd5bqPCUfZ5hrcfZs9AVCmrsJ4QlCuz3MOblJxfvHk1VjY7Ww/xTNAE6I4QIY\nNzEUV7TvVaOxE9SUOCZQNmnDUreB/ONcDtsMnbcz86Tbh6Lj2lABYzW+gPZ/\nZUid\r\n=+rRU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDGlHdkrQbcdZo58Hb7hybRGr4b/CA+gEFf6RonP4E7UAiAMWvvoGD9DcZlsFde6u9ebygVpXJ1sjTJYkgsuhHcWfg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604060477-9c8a6052.0_1604060609674_0.9821824133139008"},"_hasShrinkwrap":false},"2.26.4-next-1604060503-0608a3f6.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604060503-0608a3f6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604060503-0608a3f6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604060503-0608a3f6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EXkl1/Py7QtY4iAGfVdv7YpuVhKFbYMCL/xUVMgIa8JQIUIhdkqLGw+eAAqYae/UanuW3AMy6rbNuSs8QxgvYQ==","shasum":"53a999468dda1e6ee715e0de6cfe9f014a038ff6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604060503-0608a3f6.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnAXrCRA9TVsSAnZWagAAOlwP/17+6SRP0dE9Pp65jg69\neScIs2wTzFVmbwGZ3KCpeIvHH/8MBOjiaDsOPfziI8eQVqT1UAwCm2VV7eiA\n8y4ssX17btSQghEPR5wd6iu2A/Od1DGv6BJsfh8Lkrs6wIU52enzMHpWH3p7\nBoofXkCLeYykh2vQgivzfo4bIhSXmq5cXTUR8CwLFQbH/0Wh536gjq0ke4uS\n6y4MTeS0nlrf+d7Yi2bGYyvlvK4s1zxRo1HMrDrywiwWGPbjH77TSgk0Et6Q\n+DK9PevBtUw6d7ZVsJni8E24Fh7wKFF1SdNEUhVQnuSY8esIQ5ZL1L+V9dpY\nZaSXSr0jAEm+n9t8Nnb524iAfXGaltVX1ZEFdkjHA5vlWD+n8JzJQFbFBKYw\ntfgGl8LOZhDLxgWXx/8IIChTkRA/RpLHqCl866TnG8jT1mzDo0vGH6eloPuS\nZuhYgaYPIhyRva/1v1DGMn1ZhWUBiexy7ALR3ICIwZ1tNXQUycVP6SRvY/dX\n+gAdSE2a42NIJNbZwVvX/ez/yE9RxC+UcEPy5rb6gCBOubi+rxNwYPT/zwFN\nJbMM4dnVIVddz16KON+uRH/5lvCR1npkKgv/G1SpLm68rOr1YzvXshOpY+pL\nZOU//okNLUsY5N4Xdt2p0JjDIBxUe4olu2+sbCdgdYWdyCKpkt1eVzXWof/Q\nkrWk\r\n=aK8K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBH+ubqLkJQpg/j1+uGR0exGEz7UHN8PyD7quw6A1FmDAiBGfPpZU5/Te30TFmkzD5Cb+E9qDQfOOY6A3Fv2auRr5g=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604060503-0608a3f6.0_1604060650788_0.17965042508885198"},"_hasShrinkwrap":false},"2.26.4-next-1604064531-0aa4787e.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604064531-0aa4787e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604064531-0aa4787e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604064531-0aa4787e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vFvbbJ2fkyX9iDOWiFhaszwSioHgQPI4Umo20J6hqDHzlP0LCPh6iN1OPaabEnkEbvMn0zeF3AEWWdlN9LVfMw==","shasum":"938f933f6119ef105c9db250c34764be8bf2b97d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604064531-0aa4787e.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnBWYCRA9TVsSAnZWagAAUukQAIjrJcVbw9OW3QEvD4MQ\nSnti7OSHcNWW0HHxlyRsv5S9uxejhxDRSk09ZGHLgrywiLSUHvcm4zSfe4sR\nF8hadA2CDpvSgiDmYXbjW9gLvcw8Zx16eefy7UMMmhJHR53bZbUEEBHKQf3M\nFH9+B2fhLtPTjaA1dVVgIBpW5LIkiu3CRIfWv2hiI/CXDTyPIxhWuxxUxuQg\nz8cIV5sIBYPKRI/6QTwvLK3C6q3piRXFmgHfyHPaZuRHeHB3qBUD24LqFXbN\noL0UJFTQ/b4sbwz1JbEeblhdleS+18cb5J/UGN6FrSAFIXzg1O8fUZ9Eg/Nh\ns2YEK+rCGMGxJsgb25VUzinnT1gBzQdtwKA3KhxbMY90bBahNcrf3J+pOLaE\n7Wthc839GqY2840y/J3E8ZPMm0DamDGw4/0107zTra3OPJs9FuM9bI/9Z0z1\nxfiM3XuaP+8sMjVt4CMCu8zzu54916z028yv2K4IQTPuAGiSd31EXMlq9krQ\nZ60qxbKYPmHN6ojDq7k9xstIwirxAhtlehJ06U4Qql65keNqHHwCNk7UD4B5\nSRA3OoJY8nhu7h63X3gx3x2AS3N2SBDMeMmAH1y0C2RtkdE3Pu2yKOOfkiYu\njpCOL6oLMU/NaLsIsPaxQq9xcpLVXllb9PGHgwEohjYOtDsdgOx6cH6WpQV+\n+Mt7\r\n=Q27C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIHdbLLVvAlA9Sq5C2uyBDtDrAaiTsZ1JPUwyoV6QtKAIgBPJY9pkrD/B+Ec0kep/88URLBaSdVtYzoCX0w3+uBnQ="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604064531-0aa4787e.0_1604064664227_0.7843663901584026"},"_hasShrinkwrap":false},"2.26.4-next-1604065372-0aa4787e.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604065372-0aa4787e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604065372-0aa4787e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604065372-0aa4787e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rlVkaw58tOfm0xnuSfg+RY+ANbYoZNAnNMgtR718EIsrMkGY5MKMZx6hWtbDwr94g57JtenbKXAgi92dcurXpw==","shasum":"25ec3a3a0f8cbe4e3f1da8b38958a1393c2a9457","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604065372-0aa4787e.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnBjuCRA9TVsSAnZWagAAUB8QAJ1j9QlBnDozelWn3ufo\n+8VWPmyHTmKrPrW8tDkPAEHE3V8XStYibKKXR/CqXFs+6+U5V05X7zVPkScl\nUolRWZ81pl9MEiOdSev1CfQ/7KPMDeGKA7LiqgUSx0WjiTHM3KLYtplV5Zwq\njJPKJbp867yE80FTE0f5O1IaLtIoIiVTrQKru6FdPEOtYUJ/I6KduLgn0Pr+\nmNFt8Iy9DA9qFgvLXf2D1wtQV+zqZkvZQ4jxIP/8n9NrA26d1robj/SFB4mx\n1TIQDbBOIPYl8pUrWXHN07Rj9BMqt2uyFNsIxjE6MmX2yrVpfwm8Eb0t+LJ8\nvypBYiNYhLGOVb/fLLNTCXTFEq+CsexsZxnZhXLqW1muQKTBluQWIrrZ6gxh\nDK3F8I+1RSXWPSQT3HWjwPMfPhPNUKHmzJckP4xUub0M1qB8C86vS4yFCldO\nTvNyhnbhp9zPFrV8bZtW70E0//uF8Q2w0L4nNZE++gsWwbyX3wg5/yoPANZ7\n3ciZMAmiCAoLmkxz8U7uzsrl/DiUEBCf4q9a1l9+ixYUUn/MhLsLvdZYpPl7\nuY3j7TJCnkTUuNSnFg5cALIfS9+M2ZUIEhFH3eyFsaZguVmVjDpIWz/oEnLS\nI7yb4xEB+BkwUw5vNCrXAwabgzZ5UkxBbIGS4KMkPIPqypnBrttPvheUn1JY\nBlZi\r\n=+0p6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFqRTxbShnlxfvJUsHVgc9B3Za18rzdw8XdcWHXBPqPZAiEAjIEW/yNUzC13wADC/6R2yTOv/nlxbxa/98mtG6/F/aM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604065372-0aa4787e.0_1604065517823_0.27987825058820004"},"_hasShrinkwrap":false},"2.26.4-next-1604066134-f6f5ffd0.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604066134-f6f5ffd0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604066134-f6f5ffd0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604066134-f6f5ffd0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-L+NBcmdn3pfUjr90mPTr1TiT77O+AdYhPRrhR6M8iszepSFYtRupLkQ8aeRzvRUuHBrJVlSXhDvANP7ciH33OA==","shasum":"8c05670d3cf5b64c70611908a1d56e724f23427a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604066134-f6f5ffd0.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnBvvCRA9TVsSAnZWagAAf0YP/AzIPhvS5apAHu8F3ZK/\nH9ar6P7IWSPvzdfyDIb62+Yf4XLizRzigZvJHqiKy7/8nF0/51vAS8HgVWqs\n4/hd74BPbp3RhdtYWZJrGQqagmqNtZrdHXgWLtq52lJ8evk87bKcXgHP1Xko\nwvUQUEGpXu5Z4MwVVxzLJkKcxZNpSBB64LVjATa7HVh5YGHc84Z525a9pt5p\nV5ckRucESLnY9uDJ7H16dquo0NIQnZAQlSd4PsBwjZ/yJ+SC7bFuL9gu34Nx\nJK+amhQ8K6x213w6HcinFT9m1+DCm0VvYz9jPl0J6zphhdmJem5uUAlmQau3\nhz41oVuQoaS3Nr5vTruplaqD1QYxwNO3AcerYkuEsCTl8eH3pfpDRWxY/Oky\nZp7axepmiyd+UalHmuVh1Y6yGZrX3opWpv83XXw4bMrH/tlSAexvqVoy8nu7\nhwqRssRMg7Z9w8sBw/XIt/FYHbptqq7yjNsH8QAfrO6MV49PT0l2Kv0K0ni8\nokhr1ZwL/5HfJzfyKSDXh3ANCfUN/Sw7Pmgli74T1GUZie9BArOhLHaBaROF\ntvNAYYogj64t/fIDBB5l6vyIhUKqgY4edSaL7EI+FteMfnjzTpbByBR7NHLw\nwS1IWBXMGDUndmWAckkTDa9J23zOXmrN5sFHQhz47WihAltgIZU0UJUVXPJD\nah0o\r\n=OmRp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbAhDcgcrZEXCD+LIlE9ZHfiedhf5gtjLXgRZ2p+nZ2gIgIinq44zMOXZjeMZO8pyQogIvZIEfTphUdu1JUArt2Bk="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604066134-f6f5ffd0.0_1604066286872_0.8209916464406959"},"_hasShrinkwrap":false},"2.26.4-next-1604066992-951501e3.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604066992-951501e3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604066992-951501e3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604066992-951501e3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1v8a2BZBooS1weG/dMwtf/scMsZKDCXHCs7F7z4rc+rpGSmNvwPJs0VWoOFI3VQh7Vq2qGgylHaqjybFw+Ik+g==","shasum":"cd154a1fb4b37c1c8e2bdd3c511578ccc8f023af","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604066992-951501e3.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnB9ECRA9TVsSAnZWagAA4GIP/i2wBeLQvhf7js7jKpom\n/7HEfTmizlE+f04uCj1oQIycvx2SBDoHiDMW1oCNnLfZmCt1ZYaMPT/GgaPq\n5G6s9ZcLY5QnHcvcSQI311Kb12ZorlMqjNfHY1ac1DFcVTTQdDNhE0KXcjuq\no2eO5fG6D8JkWH5i/DWWqvF40Fg6MTQoJ8vBqtDuSw4JYf5vWyC/KSpkNscX\nKI8P9gkZKiNxGpZcoJN8TvIUGdYYV4Haqvi5PI4SFhp1v5HYm3slEEuXX7+q\n0ZA4GGw7WLCfvtxeCf2QEXqIn4UkR7mxcavrZuqL2TxWfQlfQ5hoX4yma4MJ\n56h1KdIuvaMAM0DXrw9uRz2XZLULBTb7W7TED0ZKtOsUaugYaw9bD38MH/ch\nqs6Cg13pL4EQQJYmvA+fRHerboYi+KzbyAheCyLTCWkDabgtfokVruf7Qs5D\nNyrl6pLn9dxQExqqLj0KH7U/b+lgk9W9pcGMyrYjFrCGH4lminXVBe1aFxRA\nVxDPpRJ5Vv3A6F/26xnNq5ckri/e2Yq0e+N9cqvL9HrhEBVPm7mJgJuLrZOT\nqU5PtH1ZRtWyuvFyunc1S97uIXv47RNqqWf2W2/E69PLn8KX+JraIiiUlYvV\nmZCjLbBLuZvVwZWwSjgGpzZuAdVUFgTNLtzvPdQTB79Cg6iEyh+xzu4SvjzN\nvx95\r\n=Zguo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFDSge5eBniWl4VFewG2Uu6UxiV0ukn/eMa4TID+0a0dAiEAu6mVOnvUfsQfwxFmYxLryfQUe0Y9o/zDcWqTNEjlEhM="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604066992-951501e3.0_1604067139758_0.04269218477716441"},"_hasShrinkwrap":false},"2.26.4-next-1604072759-984cf357.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604072759-984cf357.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604072759-984cf357.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604072759-984cf357.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TsLvIunNPKiqe4eNuH2NpYKoy39H7Ma4/FwemtBSj8ULDNTXPBTnoveG/Tzq+fwn9fecQkYpjZZr9j3Xxluazw==","shasum":"b82fc12082a5757da797726fb2306c31414eedca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604072759-984cf357.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnDXLCRA9TVsSAnZWagAA+ZMP/36LXgLzQVzyYcpSr9G+\nydxeL6mTGGP64yOn4dCBkT7l2dZE4SqpvAGpDY57pMilsmObn/m8emDxGP3u\nCYCRdQT7LD5NQ38rimlcdzTELzFrtioN4QG+dH4K+8mKoTfTtJdhgYBOT9vw\n1DwqDe3mTnS+xgrX10Ga4WDBmX0OzgFMuyzpknbBAGm5oROMX6EzxNmhu9Dl\nlTc88zA2hGAyFJb0HC+vjcT3ekqbotM8dyGqVAHQCZYBBN+QI8p2vhYR2fwe\nJT+ZCS5qls4GbceS9Nqi2KBnyFvWRNuG0xOrZpJI8S25dGp08iD8N+aF8ZEq\n2BaDtdGDgbruCraITNuXVUK3BnpCkhP8VU4JXPfvi4teCdKQ8WVsUCXJRZPc\nSAbRqFMmTwKjhKA+jtseixsxA1o/lWdjjnKfk2HxSO6GHL8EKCqWokkgsTwv\nZd7q6b7ZySizEB769fHIvMkb1T1rVoiTW/v7Z7pv42JqirTsUQk5ZrgM3NlX\nutqho4i4u2eTJtF7Vvf1jRyvSxrf5gPcCShErntri7Q2TRoDLTXi0jq/66Aj\nygDnPVWWS09g6OaV6wg5D6sOVJQe6PYB7VHMw1XrMixoil4nCKUvZclbaQgr\nkEzXXrcrSsUPDMP1K0hOCPf4jMkoK0Fe1ti4ruqylr/kfF65bfGwK7YhaXjy\nvJLI\r\n=Eel5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcW7T5KcDnXVDFxl7btBR+eDFdjeOjca53w94yleI4mAIge4thC5AVc+YDBPH8r+pjBNpq0pU/Jo3uldkkHrHk5GY="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604072759-984cf357.0_1604072907361_0.9964732122431095"},"_hasShrinkwrap":false},"2.26.4-next-1604096243-bcd1b3bb.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604096243-bcd1b3bb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604096243-bcd1b3bb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604096243-bcd1b3bb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GFMwjmWAbK+0QhrXl2NMRrSrrBnoeKgVkFSOtVsS7DYbOYFIjOIL4VQLzmMRmvuHuZBYd0POCXWB2sHFfkah2g==","shasum":"44b611d537e6cf36ed31f6fa4e4ad559a1e3ca4c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604096243-bcd1b3bb.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnJGPCRA9TVsSAnZWagAA9j4QAKRbl9jc/A4Z+1h3xYDl\nmjSrF1d5OSNk3doPTD1BUdeFWj7FB1Zw+3caEApeLsNd5MbOYyPM1OA7b8Z4\nnNq3lPRqxUcO64nEi6eDg2jwUK8ixFY94zRvgZ9dgNkfVcZgsS7ccAoB3gzw\nWZISuDq7aIIo0v7/96Y9etIYgoqLh+tIb9qwgw2QMHkypk2gp2WMOweYUPNy\ntdGnQqmCDXoW4W4Cw2ghr4Bo/mQlTcvPNTVbPuANexbi2ok/W2grcNX1AN0m\n/T97u+HLVtCAp+FvvfGGxIoH1DkecbomgzqMpl01AWIE4QWroRAGrwCprWbO\nxomcTqI8oG2iZNiDHURLu/qVkyNfg6U/9YsQciOo1SiGehJLab0Y0M34qL8M\neG0j6ZcRKZzI6TJLXH/Hp/mg9GyLGR4VFsmEKIVWLvG1keE/OwWSWQJxhG4R\nogP7NQLP9QwPz6kYuDAcao8FideN72pbgTkZLte0WjrzlWbZPrVh+nV4A4e8\n/nZucVZnlyTqga9FzZETrdtwNHs8gAtmLXi9sPScvLLKjrKxt3reW9sKucl7\nMD0vbdMz5BGpOca8gAnGJ+wtRDc8z3Veh0fbYMfw2M1LtiPr8VTrff3vTsZH\nivj3ftonPU8q/J6AVYYsYIypDJqdAcLo6aFQnJDxfO3OGgRZjVXat//8+8Uk\nrhpf\r\n=Z+rG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIASN8iJcSDAFCNKJvZTwAENUKBSiTF5YOC7dD+ZKmqIZAiBl7t7M3bMkKoMLlvuL+4Ro6Hnw/IP8K0xPIWQtBQeYbw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604096243-bcd1b3bb.0_1604096398955_0.813551657092503"},"_hasShrinkwrap":false},"2.26.4-next-1604315905-03db59c9.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604315905-03db59c9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604315905-03db59c9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604315905-03db59c9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JIAOFy7Lz/ksMXfWuO2WUkaVjHCj4AX+xtwOtRNgime40lXaM1bfqStFxoEJGc3rb1OpLi02wq6OERpTlPbmfA==","shasum":"7ac012e695cb5c09bea3230cbffabd1bea71f6e5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604315905-03db59c9.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn+uYCRA9TVsSAnZWagAAp/wQAJIxCTGoFkr2j4G3j9u8\nkj+1JyK28hP7TRzMOZpjX4oGFdo/1Y4IG4N7s/NRoMZytkA+VphOE+ob2qWH\ncOuiH6DtPk8pMw2r1s+liL9JUygmoe8kAS64w5s39bbatY4oSLnFMZcT3K4d\nB5trxRZm04GyLkF652F3J974KCe6dTEPBdiouqmHACOwtv0OxMvyWcjPPmw3\nREfpEYjPS+e7F4U6lGLGUinrWiBqNRavA3hq1haDXSWWa6yeiFHsL0nrarBy\nD1Eji9qGHfnqc1eX8mBkgLcGMtbl7vN2AiO2zobQ7d4wQvmZPtPrhNa06q5q\nKYRp4LWAOb2iYz4jyJqMGwPODFMXwtyaDd/d/fGRwImLwm8zvL5Y/3AQVYHl\nv3vMtWrR6BZw92+78qsoN9lo+xvVDq1NGOJet53RDPTSgI1zvb5P2gyQLXeP\nL68eF2/ykLYrNSjq8TUImOTWGhYBGPUxDd/GFCBeDzc5bRPBy1klaIc3sb1Q\nEG4haNbWVwqJNUJ7hAizd9SCmYNKqACWCFUvAa5WPsJUis2xm4/bF0R4sDRy\nsuxtiNqY2grni47dVE+uc59g4HN1xcv+0PNvqQVkBkU1cJgNmsujLaXujkZw\ndyNZPyHx4UjATYEoR0JQvjhRQ2bHPQT2e0kwBnbR8v7j+t9FCSrSqb4tSej7\nOprs\r\n=D1qH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWUo8q/Dv5R1Veaq3c0gNw8qGDg0Rufubs/+Ti1JN/MQIhAOpmDnEr2XQPxBb679wROjj2/cLY8xOAlbV3ltoiwYd8"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604315905-03db59c9.0_1604316055621_0.8963502894272286"},"_hasShrinkwrap":false},"2.26.4-next-1604315997-d25d55a0.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604315997-d25d55a0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604315997-d25d55a0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604315997-d25d55a0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-htEPzq/3bQhPl/7QE6qYse1mSBtLC53NZKYSLYdkFEl7aVwGNcHOUUWDU/C8eKYQFcRrRuXKSAM4lts7p+G2BA==","shasum":"54229809ff117d984157870d47744517eab339e6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604315997-d25d55a0.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn+vwCRA9TVsSAnZWagAATzMP/jsC3GSB6JNHzvm/ppc/\n6cDA9QEVXW+62GV0Kr79ycfcK9mFcnrmRwOCwgqqSZERoDIQZv3wABpkuJUq\nd1KdEQVu5ZkKImPbyHxoRKdmKX28zsGGhK3qT+5LYry2aSKpi4EArpNQAt4G\n5Kt96zCYEIjv39WCvj+hmHY+jpeXizy0MBPYxNvMEFOiC52bi3Ml/9c3itP6\ngrW3juYsn+EnJ0dwdD3yYDu1Kk49IpWQSRxfHlbUqUoHT6s4WHhpVzT7sDsF\nNGaOg/oFZlehn0Rlo9nbkoxf9HXklFIq350RGWXcte/7lud62+AqhxEa0tXb\nf9dl4ydaUVW9JtF0mSAITZuOCDCUxtRJEO68ADTlVfHcq2wEuacg4X072Ded\n60sikDul73/hQ3RUrxi8SnpANH9TqHScg+ZN0Kzp5obOPR2QwVzAwSeixg6I\n0sHR14+1N6R9UILutXzAe2pZ8hp+OPeHlr7trL+ZZHPsYoZwHmuSRiDVaXyH\n8LRVK2NBMxGlw9dfWuxCq0einUhUQDGBMLeM1/labIpAcQO+vgQJtSV85sO4\nFIlLKtUqmAKxVOb50o6J3Ae30ueGdDcnQaU/ptUTEWpoUEgKgDZsMSSCcbll\nfPYfaz/24nAvwkg3uxAS+oJmXXphl8YAJUJvm014mkv5OLhLv2LYYMEQ/vsP\nDjp2\r\n=5jcI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCx6dGX9gKEMY/U6PdX8tmN6P1HvCXBkyWI4yW4ob9LIgIhAPS9stoSrZ8TfF1vG0jYRjhzhsO9dT/k2cgP5r0IKKdu"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604315997-d25d55a0.0_1604316144265_0.5809960324317411"},"_hasShrinkwrap":false},"2.26.4-next-1604316277-14f51239.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604316277-14f51239.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604316277-14f51239.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604316277-14f51239.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lg/4CQpI4jkc218rGJKfSn1VY3GH8T//inehhVuZWhRLByJf0VrCkDZEEmwrW25fYyZrV1eJkY0at3k0N0/5Bw==","shasum":"510846fd974c69bda9e6cbb2b942b03aab672478","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604316277-14f51239.0.tgz","fileCount":58,"unpackedSize":135312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn+znCRA9TVsSAnZWagAA/WsP/ReL3Z/LSMfk5eIkViCd\n3GxCpvByRF1PhN7AJ3qzv2lw0Ek03e5uimBJNo9zAcUqIk4pygJmU7rAd/N8\n6Ld6By0+iUJWYSqjFdu40Q3azrmXwAPo5QuZc+pSnJnbKCCW88jM+aFI9yQ/\ndjeRCSREkwyq18KcuLDPOMvAXbT2Zykrx46a3x3ebbe717FXo4lx1xPV6TVm\nN+02bqYyMdDSHdxFOHaUBmYyJXfs63YCJ62G8qPNgcnbHPI9oYjMrNJhFi/2\nKTuKT3fhBS9wLa9vwCRMtp7fK+8tVAFKlCCiIVpU9YWIeppwX+JAkK94rRyp\nPCOw5ZHe9pjRx/F47/0Vq8kUmzSgaJxPLsFSE1eFZDgdQxFfuKEU/ljlErq3\n2L+NmVNKla2anpl+As+dUKCVJ4vEzQJHdWSSlQV1O5Q/XHLYs0DjWshKvR0I\nawcOIVHIORMSMrmG+KrwW9lniQ5THQTGQZpO/IC9BXXFn3aRfZG7DNaLlmDc\nQ2lBoAKM7ZxghE9SYWDyYxIbg+0ZbCtj9UsFy7tK1aVhGn41/Y9HIQGWzI1x\n5o8gWjID8Xwr79gFxzDttvV4xcaLqJ0BRNs60rDBmFrz7dNTUW5zo4TIbyCW\nDo0sziRtYTzN1Wni4moInjcgxcgyteZY0xcuDxUNG/cDOftODI8qV2dCZXdg\nwF4m\r\n=XVVV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzQMWr151JhU0HHZW45TQl0Ug/ine2UkJPgEAMJR4u5wIhAPsO4LLmxWRKfv5nww8xbGE1jPx6pq4kiHO+VvWBPRCg"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604316277-14f51239.0_1604316390661_0.009038998742134208"},"_hasShrinkwrap":false},"2.26.4-next-1604320876-188c1848.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604320876-188c1848.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604320876-188c1848.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604320876-188c1848.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rTNWQU5owvQtlYGGbDJg1mSDTi60Uy9H2xq2CI5dy2WcLkymlT48mguyHczCmu+ifbc4vsX1klK51Z/xuZpTyw==","shasum":"5468e5189f518321748844fa6b3e76480e3f9093","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604320876-188c1848.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn/76CRA9TVsSAnZWagAAyJIQAJZxoSMiVnMsRPpyJryF\np28Yh4Sa+bcV5bodGZ3G7L7G+jgRDCMx0LU4QOnS9qfFIvg0Lyda9onvHmAM\nbzbeP1HVj4qBmmWqb/ad6PBpIBnVB0YwIvfLPGhcRE8h5zr1Jlj6L9mW0aNz\nKaHijLMIG/AEq8JBLWHuHZ2rI/Js2wB233WIx2MDCHuDp8uCAGb872+PB5L5\nCbEgtzdqWBO3qyp9bXp5SiQ6B6NEFvjFIoMFy/u9ztXwAXXObAmhV2fnV1A3\np9T9FQsq1calZDbaAcPrqGRg/m5BEquwxsL3ZNw1Pu0jaE7fQKUtWaNO/qWh\n7CHC1eLxj/Ffs/mEeY1Zx7YF3Pz9X3JHIVZIVhGlKG14EAjJc9cXllOOO01n\n8uTgtq8nHmAsTdJEKaKNWya4OUynoKt7G2kocbI3B49A3dPojCr+TDVVOG6o\njxisCwSZqtitHC40cEzVnKZmWIvDGo++31X2U7X/nNcCnarRrPbw/azlXL9d\nTPXC/D3fZqeL7Grp3nam+8RqAEiz+ZkPPnk4qFOmnfQQAFQpTygwaz3eajX5\nveBH9bRVCfZI4dGoGc+uUvb06ToNcv98MGlWk9BKDVKkhaHyAeHQXzxXxvVT\nPUDNcGhXueq0zC14vsGejLb+8eTNF3Fps9XVuywspADUDB4igdbJJIzMRSCr\nrpYX\r\n=nc6B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXDxxtrieUFr62B7Q92tmJ3YqjL1rqHcEecPDoN7BUvAIge1iziGwK8VA3bgkbWjDZzwv96m/283bVY7S39g8nsJ0="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604320876-188c1848.0_1604321018299_0.9618392733720074"},"_hasShrinkwrap":false},"2.26.4-next-1604323244-382b3fdf.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604323244-382b3fdf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604323244-382b3fdf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604323244-382b3fdf.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vB9CHpEpaE9+M3e9K6RpHyRWGSACm8K1MffWUuh/lem1d4TYwnYioAScUMgfuoWH6uB9KhXFk3ByynsDelgLYA==","shasum":"3e55caa0181fd2b151759e16d73a3ee486300c3e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604323244-382b3fdf.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoAg/CRA9TVsSAnZWagAA1YoP/A2lHRsv/CTu8BtyCDN4\nJi31lo6ebVNpBQ1nfBKBFWlP8q4WhnE2h3EPmnPv4qvJEjhPZANu9MVdUeaF\n5O0jSc0PCcsIjLbARQMWDko6PQtUynPBVd1c2yvE0Axlg3t44QbVnn6rYx9+\nOhbufT8mvU/69ODcwA0cIfBnwx3Vr+zfVWjUoAqi8uzV7b4NScU54M8H08fl\n9K1qvlLMyc0LHlmm8Im6MDrGsJqrjkY4xFP14qP9LXff5HtmBwD02Ocvua2p\nkDwUbH0xTeNHLMn0jI7uDFVS9vuPkQsxZHVpp8x/+Ea6/S1zejFvnHy86TJH\nzGgx2yNffSpC7GGLPR+xSvzGVzYiWzgBgGvERHXHyoLwTY3VhfX4jDsC014i\nqsf9lfRqJmES4GnkhUAd2KD02r8ugm5Ykx5fJ3yWNeefx4NRYkl+b7+6Uj2T\n5zrS3CZn/S++m+K4grvK23Vx5chxveBvEWLvlI/JFg66DKz7iolStK5IK2Bm\nPMd6if4Bg8nfOEEjlNZgoZ9JD+Nvi42gsGTdR5SJVxMJtRqKsOm4+JLNFAjZ\nmdsfRnsGIqqZZNp9nSWVZ85W/owVduVCjgXHYy/5YDmCjDOViALAlGFTMM4D\nnF04KJXkcx2DsO9ariWrngAus3fSZqdug1QpqNGmT+qSf9pN1qE99MNepFk1\njVey\r\n=GKG+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtifSxXdDvkdxGXz2irORVygWEWeLprCsSDRi4UF3eHAiAhWNqQWKlRYq+jkrXQLtlSXb1QZ1OwDQUlssOPeAl+Lg=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604323244-382b3fdf.0_1604323391165_0.35856750754245414"},"_hasShrinkwrap":false},"2.26.4-next-1604323405-53ce8ed9.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604323405-53ce8ed9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604323405-53ce8ed9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604323405-53ce8ed9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Olta74tuWtUQ5CzdJb9gs/5XJ3cgDy/dqBdvLog3gt+RtcaiVfWzgfBSYhYy7SakClWuDNjRKlxrrEotK7rGgQ==","shasum":"369eb02409112f64ecafced8867c154bdd0c5cd6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604323405-53ce8ed9.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoAjXCRA9TVsSAnZWagAAUo8QAICCO26VcvmehsgCxrZc\nYAV+jMz2HGkR3YCjkPm12QsXRbRyIEcTiv5ydp6X0CFxNT/19p9exhoW1IgR\nWNcmUrRMxWTzzjAPvS4sRafRlHnU2wrOXsOSEfVdgGcf6l4Qw7EL7iZQqE6N\ngU5ml72Tm0C5mV9k65wawENC1vROha1cAakWm3q2vxOpws24i5DkNUuW7In8\nn9N3TcBHoWz275KiujU1BFFoBtHc2G//6B1w257DLxGUDyknekhJ68TM2WyH\n3TD2IBVGnhDfIu27cEY1DsZjKKRmw/Va8RAdiTjh4kjghXiqqIVCK1DRBv2A\nx/WRSfxAxzY5OT0TO2KDOgMVP1oWQyj9Ip73nF2PBMY39kQUK1G/bnukM/EX\nlTANOaic50TPKol0PU1Dfq/82UL0B2UoVKwrghBAc3Pj64LZ/MMEX8/SstjF\nxvKB/7yQzl/u+Qfh+hm1Wm5Q8k6deJys+rkLZ5sYSK7RYnii/GivfDBuzSpE\nKDQI8hAagcBsLgRHaLZ9S/X+OCIeuqssT3YX7QEVKkzIYDheSC5UBzWdtYYN\nwOPVss/GnS8moVnwl0Imluz8v5F9ZOl3DZ4z+GTs58G3m99oNZtxWsUMfdhp\neOWrBsW00PfW+z1khIH7NHuwXIdVVrjNBkIa+84qcBxcbtZ9f6Opa3TInnmi\ns1Ub\r\n=Jffp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCY3jEOjuMo5tP62N/TXJt3dcjNMQsFHHcGo4uR1OWulAIgRWzNe6TtwFAjuV9gn1KACDqdRjmrntD5kcAJXGha1H8="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604323405-53ce8ed9.0_1604323542650_0.521254905123121"},"_hasShrinkwrap":false},"2.26.4-next-1604326514-29836483.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604326514-29836483.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604326514-29836483.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604326514-29836483.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-T/4oyI6fhWJ3rwdKjWKUCtNIyyOZJXkDnvTw61CfgSXgwbkqMUL/azmjfNDuF8rR3VjanWYQke2VXR9QlEV29Q==","shasum":"02ab92233cbcd2054c17c85e4b40dd39499c1025","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604326514-29836483.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoBUOCRA9TVsSAnZWagAAKb0P/0JBBgZmep1wi9pXF5jC\n4cMa2IoOYJhEwmxrqW7o1CDPiGw5Ine0S9kZ+0qnKq9rWAERP5X6qX0njr2E\nrQgs+Cnk0Sedb/lybA+VWRf1GVBLaoz+zaeg3auymUiNdr2v8oNwpMJyi8O7\nu5SbIw9BvYCgzHIg8kTOtt2YRYON7s3Gh7kZbF5wmFYv1aRixtKdp1nNMdnL\n83DQgh3w/ZRcVoqereZtaaD6MHLduXhLRoyfgLtbEcLdtt1njRrEiaTI6ClB\nSDpRqrvotvjjCRU5eWA140KRRPY7RYp/gp/2o1Kfl2GS3EfHHLc22tHlAZJP\nJRkA9rRKHqQQX5nC7SzgylgIuoRhckXS03qVdo0nxTdPfuE6tvbMZuC3en8Z\n8IfqXw2ZSY+vWN+4JRzroDrxfT2vOmiECAqlxHuw5KGs2RxqLHuGsztWSZCQ\ngjK1kM/VjgotNbjsK0fW017wx/9KZAQMQ0w9SDI4sYzu53wzKqiqU5jA4ojs\nw3mFMFFuPITItFWsA+9LZcmHL91oHOq1k3CZEuLCaXfp+8KBH8HoikjMhE6W\nlAiXsA94uj3pEPk0eoWHLZFfmw6AzCgpWzmFtJ9GZJ3j32aPIZZriRy0Mu3g\nFDcZUf2SwSA6rZimQwFRxqf/Wv7Ilz7tuMcQSVr7UrmQc2Hp+tfsPfvsSrUK\n2uee\r\n=HbqV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9mmXizPYNOzTKtF1TBr0MojEcHQ2RrjF6dqVuVjpFNAIhAMdVFtVxBoqxGXqXYe222qXWoa3TrUU4Pa4vWcnqbjcX"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604326514-29836483.0_1604326669706_0.11011369684376171"},"_hasShrinkwrap":false},"2.26.4-next-1604327444-5c840f15.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604327444-5c840f15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604327444-5c840f15.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604327444-5c840f15.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PSiEPZ+xkfyUCTCa+dp08wFmtaAm56hL+EkuTMhV3L5AqqIiubmcusaDX6J26vaABtxGVe7jU+dEVLRoy0tn7g==","shasum":"4f2dc36c05dd5772f736423c06f497c03ce079e1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604327444-5c840f15.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoBimCRA9TVsSAnZWagAAXz8P/j87qtn7nbS75IuStEfF\nhg8yDXA0400Z0MG26Rf4xooh5giqrxbmEMJhVWFC4bm/gY/wdkE/LdDpP1jJ\ndD5tSA3VRh/C6EBWv1asJG9draOUonytpPzD9eAPof7q/IbRTu55Sn9lOpqg\n/7KbdsyO5W3dF9+1blq4bYwqGMkykJWQe2YqbZZmRdURAclqsZJQd+3Re+8x\nfIxUdnfvjv3adUut9WRETy5NweERK6MYF6BimrjzIBXSpnzD1aI0EXmGqsjs\n9imxt3r8Bdfpg4+JOaasB+LBQg0wDhdMqJp2l+yAI+UMIwe+0kVjNAhE9yZJ\nITciTlEs+5oRvJZD5sz0mhjONBTziL99HCAStqClz/d7s82d3IEkncsxq9Mc\nrK2+UoCpmysXXpwU4WzjfeKXP4sd/xf4EJqwMtJ+M2hiBAt9hlbbPaDhlL52\nOteIwQWCfdJI1iMbLvD+Zmh3BXHjdFjQ8a8Wunp/vqlhDVUZuVBjsqN5TVP1\nPMa/coKdsYXkHgeuXDcrukR6Fvv3YJ73ITNHF+Wjt05nbsmGO7VurRr5iNBm\nUiAlovhehsyywdPtiNhBmYEaOqopb/UjItgcxrBCMw/iMqhl5IkTmXTfybiQ\nvNMEu2q3RVr+Vrg8W7B9ze5zXuSN1Hcux1guSz2XEjkwtPxB/zcXZfLiqA3i\nKN2A\r\n=R3eI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF7tq7bYSjtrNjvxktdqi+sXuGArocsIInwQAr8ouzERAiBdoHGQe0Qid/ZxwFMzVZBMKLBbPQ4K+QSzKQKOiQSKRw=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604327444-5c840f15.0_1604327590388_0.7619306394191945"},"_hasShrinkwrap":false},"2.26.4-next-1604329623-192bbccf.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604329623-192bbccf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604329623-192bbccf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604329623-192bbccf.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iui+8I55hg1fV7CKD2EIDFe9oQ8NF7GMd8cwGwFgOPrLcUFAllOkzEO40AWa5/ZQQFlqeGX8oSnLFBx+ZJ3PGg==","shasum":"5c9fb4dec15ecd4483029d2107c84566379a5f6a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604329623-192bbccf.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoCEoCRA9TVsSAnZWagAABrgP/27mze/XLe1MuUHA4cCp\nRJaLshx42/Dczg9H2xqtBmGZFtT77qXHolRdcHut9DIrDMsmRpwIl8oP4qfp\nOiUmePRaSfInB+FGNUE2wBolTuXkH++B9cJhmuJj5GBfzZsFs7noGbxgiHfp\nFjzcDm1Yb/jB9t34cm5zT7IqpgIXOiwrbWnyD0/Ei63M5N3amutVtC5vm7kF\n/50MM6q5xnyLXeL6EJw7gypoufB63yVML2poptqoKpdFSHXOP1FVg1voZ4Ai\nZBJ61sXI+WH6xkSaS8sz7zuXq1F9FfqSks1GKLpqt+KnxFhOzEJWEYv0a44S\nqEo4DRTzoKf9NWhuBdKN1f21yPwV2OlCiJb9OPg6RfdI1ockWwhQWPzLUxBj\niKHKO5KxxZEeWd9+bjn19eXYIsBk55qMcYcJUNvwBB/Rri+epkyrf49kNGiq\nb+hXMJf4mVkUvkzj7P0wVH2+lEu6zNPjuOKEkZMH3CZrb1kv7kNm0o4EfQym\nkWxnZKuMyTTV8adkxYIVUL9aGgHIFlUbc27/kh+6b9EQ8txTZyxNxkGhdRFM\nSHOyLa7TGfvBgDgZ/zm2A4AC/nGQAQ0qs+/xW5afjlOS2LQFgRD+EfznaRH3\naGJUSRAPseMzm1DOPb9jJWJaGst1iI+e+fiM3sn00hadyyYkR5otizoCd9W/\nD18O\r\n=1iuk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6pxdv3NegBP34Zh2hldFC/bzWZRpHGyzH7+Mg+sMRDgIgFrB/S919P7mOnvQOjJyu7jlDT89DVYfQDM3dyJuSw5M="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604329623-192bbccf.0_1604329768336_0.7283894296463502"},"_hasShrinkwrap":false},"2.26.4-next-1604332523-a8bac763.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604332523-a8bac763.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604332523-a8bac763.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604332523-a8bac763.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BvAuCW9ABuv5nu6CXHTyVPDvnE9CqRy9Mj+bR8q03MCYUKRFOH0hogTDnu1wJ8ZnEysr7BR7WNaprHzkbqhN3w==","shasum":"df80e8530e76d655d998df37f062e2ac2c9849eb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604332523-a8bac763.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoCx6CRA9TVsSAnZWagAAgc4QAIF8+5LjNAx0JN0vtyN/\n5UO8m7gIeiWrw1hQS16/HO+DhCp2jvcTEbG6QecXFgzVbWzrCxmvloYUxWV4\nEB45muLhP9bsZD6MTOtIVloDXXlt9dxLakEsRJnupXXwT1yjHb1DXFREnjUc\niPk80X7wqXGVhLXwdeny65c0ILEc1xnSs00jBYnuH91aZIc9gywswOKApj4z\ns6Rw7qV10HH4dJMvQK2gmq1FW1oi4EE4/3zsHK5Vr6Zw1UJEog/9njtHualj\nJJ5lXSTzQm5FDoPiQar3/W3XrzBlYxXP5h4vLfLhu88L8VHigsjLh3cqyhpd\nxtP2LT9VY1XFQs/zT1YZRCla6DixkC5ROjL9oA9bs2gVrZ/6L0zIBZbWbVAU\nmovqg7ezkXKyaih6rL+wP49zNs/a8e8KsjgfndvtX6MFa9TeOezGfeyCZ7ZY\nLHfaj5etc+M7OLfifQD/hnLj6aG4DzRDU3SpYUjttqqXzv67z2MR42keYQxh\nJremNPG5aifaqGuFlQP7WebkPbLYIr4PwgLG1Ed7wt95hYRSqxIkoj6l/gQ8\nmOwPTnv/0eM6xdK9Ka3JhvrOtoOWqY2xhxjDKZTeLQJdP/XswCf3ITKCQznm\nNdbs27KuxVeb6/U1rTHisSPU2uEVZ79uZi7mwpQPzpZSvI/GwG4Yilmq1ISc\n4KYK\r\n=8tsa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWCaFADDg+f17JnMNwIZv5A9z2yBgaktCiU1m41/w8VgIhAL6752idaKNz09KRistcGBLrwcdeceHYH9QYXUrYQGfP"}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604332523-a8bac763.0_1604332665827_0.05055077492274562"},"_hasShrinkwrap":false},"2.26.4-next-1604338068-bc6c8ef0.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604338068-bc6c8ef0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604338068-bc6c8ef0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604338068-bc6c8ef0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MDPm13Cun2laoCNYqk/U76SCirxbFUDQ1F8B+H5t+3dIdfrtxpfJXbQfh5V1F37wMF1ELH37wOGvxR2FTscFTA==","shasum":"4ed96cfc3859196ca65fff9b890e9a771d492b21","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604338068-bc6c8ef0.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoEImCRA9TVsSAnZWagAA5T8P/3NbDOebUcnhcK5YZmca\n791LpyZ6LR95dw5Lb4maZhEm2pwhKw8xzANQvMZCusQXhzsK//ZDkWuQHsYs\nnY7IN2TXggl8b5Nm9t0eet6MsvWwVFXNFvH8cNVkfiP59RFYh4eKGkcU7aZg\n+RrmSmkvbEb6/cEiWX3B/qaEYhgbwddP0thgFcnijtR8zmVMQMbuPnTB1HQ3\ns04CPp1s3Ra2zzvbMqgJnpTG7UEgbWIQkij1qmfTGOWrsk+ONYGIzRXEX5Zm\nDEe7QjviUJCj7ynl5GGQDu3X5NY2Cuqc6j2OHj7nqaQw75SfmfSMrRcqgQPG\nY/ifmq2iVQhrRPxCdaXGTYhlaGI0nViG1bFuB8M6sBwE6ruKFwWVtW1KSJ+r\nYRKGKKyRYGIbgbvdjClTrqw8Ohp1lJd2Ec9xq0COieZCDpujJn8w9t7pKNsZ\n/+r8+k9nwLQ0shd+OhWPZmV3swYy72NQxvLHZWj9mcrVB5Gb2RG/v7XU+4lI\ndCRPN0XnmLgAiqCSXQeroKtuVp05kp4gHajfmd6kOhptBOdYS1yKHSMLujcd\njVWp0eIx5mxfXWlGVHEDnyRjaS2jc3irr0Rd5CGhGj4q8n5Ckc3SjDThLTJT\ni2toZcNmVwDr8hDoYmTxXpUEybG3aQ3p8JdJDM4Gzk42aoekwBZOsGiCvz+p\nG0cQ\r\n=/+4G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFz213rwKCOQ/gASPepevLjhUr9/EtVeaDHLRtxmCHEQIgIZORFHFSBKwS0xPVc9ycSozxiLlLwBTmLtFYeZm2jV4="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604338068-bc6c8ef0.0_1604338213932_0.43738392921592606"},"_hasShrinkwrap":false},"2.26.4-next-1604339843-0222f29f.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604339843-0222f29f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604339843-0222f29f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604339843-0222f29f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WhtbOorp++pBY7cApzNvtd9lq1Y7haKCwXTLWF5+qA67BYEivL0BiMxiHH1xOhuheRjtRNSm0Hmt7T89fPugBg==","shasum":"1f65e397d2fdbd79a264002168be75862f756436","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604339843-0222f29f.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoEkWCRA9TVsSAnZWagAAkcsP/2m1foraEkMwjKhqBZoI\nKbt/N6kRbO6bslw2q8Tra53I5QgqujPzquZuvMx5Bjd6bSPgrBgRnGiE8IQe\nepu1qTbg9z8cktqKbXm7HJmR99d70++6KQHpNSI1ZWAplHmzalMeznqeblq0\nrUJ1gCgMwytOI3kf9rqNEkzq1KAqGzEDkJtJxErqaekDKjRsF83h09j8MdLs\n4Xk3yfSPz9Y+/wA5rUT/UzggPEnsmWDrnmTA+SW3hhJuQE9d3FtXaZfshr/2\nxeqkHBR5yKAngKG0c88w4EYUCg97WI1ofGS9ZP/Rbq55OFf8KtiHq50uAyBS\nXkspT4VDQyC5F5UY7VLGsIzPDP5Igc8BzA25pb2VB1ieF1Jmo4iwj7jVPHrG\nCi5jNjErC+UpcNp4SdBMHFaQXasPpYGwAKSpbJrxEdptWzBvIf0hKuSluJHN\nJ07LFNmib4++P4h/rBAhjv2++QPFV6ijKCZiDLVOoQtiWFC56F4JwCftBg8k\nDoSCmCFjAVFt0CU96p0iJ0XuLzxS4d9xzrzzQ+BQL7jP3U2nJfIO9t9jhxYa\n2sR0ANhmER7VTrFESahSpB0whtATlDL0pdtoje0sg+5JBXvi+RxBXAR/v4Q8\nAX0LL8Ca+E3IOHBUXIgDxnjuYZ6X76Zh+ZmYP2yim831jqo6mefqrFexlqQ3\n7YvL\r\n=568c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2HqjbC01GddkWpnOU2pD6oDEXaWxq8NWtVE3cVBFzxQIgX6qPpAjGcvVLOtDQ4op1a2TFVA4kDprodoyBkIIY4zs="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604339843-0222f29f.0_1604339990481_0.061144030147837425"},"_hasShrinkwrap":false},"2.26.4-next-1604343360-d9e622d5.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604343360-d9e622d5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604343360-d9e622d5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604343360-d9e622d5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gB9G6TRPp1qhnSgmTCKRiP2e0oPAMhR9/sLDt5t16sqszSsT3dKpMXVwnXybVxPfVJfYKZs9sYiYcIR277/Nkw==","shasum":"346cf13bba4142a4bc3cb9543b537bcdd044db21","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604343360-d9e622d5.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoFbDCRA9TVsSAnZWagAAZ5oQAJfW+Xq3f04Hf86DZL9h\nOemXGL5G8Xoppy/7uf19xMJg1ZwuerlWqhee9o2cWfOGlaL5OUCkE1IpZA9c\nKmuc4xBoxXuXe+WMVlj3g6nyT2HKo1MgunHpKWMJJYBGbESTmgbKTa8lPM6R\n3F1HDxWMUIWBaxrluuQpP/j/32Qv3K5VguvkjadVFopONYyJDo5KI0l7IsA2\nhrb7sXwjfNivC+ScBIx0eSfidpsfcir7u/Lat3ugqR8BqP+Sxztj0QxpZIO0\ncMuZbiomh/b5e3PWIXwngp5cM6jWcaxupSHv65aynqs/pmSU8D73rBwwtOuc\nNsDVkTUN+98ipBOehIgh9uYdZCzm/0IDay3wfXbiv5myYAjXTWFG+xSNthg4\nPhvIcb3FkgC8pyDgPvhnrFiduKpqwyDaskvh0qGQV1AYaLMm585WhAFHrCHI\neJQ53ZCXx1n9tKevd8m5qPq6nrfECnKvYdY1eQt2iXWDZ9QmPGuVMVimsE6x\njDWjfvfB2wd0Rl9O/J6v4QslCn4tmJFGIs1Xu+6cVy6rmHwr9d7TaO3oLWth\nonzp3G/WHP6/Et/DBkO6MOfX1JCF58sHU1r1ntMzOKRae+lvkvYHgyKmtVPe\n49pQ/RqtzGKUD7srHMvZwS+O9h/KHLEJbu6lVL3NZuAilyriofWdUGlzqhOh\n4Io8\r\n=Vf9X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEpEg24anWCXsYUfkCudRGXmgDfHFEAw/Eq1HtEcdcX9AiEAgGZoWlz96WVt3ZZFKnyW1xoRImD41MJv9Szw/xGq1ug="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604343360-d9e622d5.0_1604343490915_0.6606089171032083"},"_hasShrinkwrap":false},"2.26.4-next-1604344862-d9e622d5.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604344862-d9e622d5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604344862-d9e622d5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604344862-d9e622d5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MWZ9ouYQ9WwzFaB3AFHBU+nTSVOnEZDdt4jHZ2YB9k0jnaMV/JIytIx2XayLdZZiDc50QHW1hNQRj/4rzMEmbg==","shasum":"906ed595a55df4e0dc324e0cfd821628b0238c80","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604344862-d9e622d5.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoFyeCRA9TVsSAnZWagAAk6sP/0pNLM0i/HRSRMKoeQyC\nud8KpKpTzGF9Y5uIT0dRf0Yqmmq+gIcYCdxLPKEPGEIRAmBz/j86NQUJdlbn\nkY1PfUgd0pzupd/1yL5E+Vsz6FXkAunP3XkVLMvfxIi7YcxytyL3u1U8+F1A\nwNpXShkWRcWXUroRvwY+EV7Vrowmm9aton3PNCXzV9wo7coOe2Cybf9/N8gb\n24O48SDUB/1bYf34548FddYL67bloHUX1z/zacDLxm62XMbBKMqG3r8vH2If\nZUIxQvm2nCAQpY+R3cQkhWEh2eju0uAfRg1jVYPRIdHMo3B4/pf075QowYsA\nEH/ObxREKycooeyPYU0+MZoKWU97eEBRU799EjejCv/ZoUlUi6RYaoFl21YB\ntp/OXaek6VXxq49VkWq7maWOJD+bXtFDn0uavbGQZzU7U14EJ7O4j07DULUQ\nD8lmVjqdYGQStKH347bSRPWZ5ZzKbYJTUku8UJOYmaEYHjbBFplEpTlCXF2A\nNqRmtOuLCG3jBPNQNzzyG8RJbCtfJuroAC5P5pgt0ZsUOzM+AUdIn79aiWxC\ng+hE8Dz5QcggjdioiT+j8GqWVysuIS6g8/cglHFCzsiwOer9E21/8e5KzftE\nbcMs8TxjkakPpJaWnHyfg0YBdYRhbpLEoezeQIkGoPYu9RBQyyza9QgwzjKS\nA5Ch\r\n=idg4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDVquRII5+jsdj1X9JGOHApn6PNkJbpm2erG9SnC1646AiEArKpGPkFjQe1054Yg9pXoV0PwZULffS1zbsuwDXcC52g="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604344862-d9e622d5.0_1604344989898_0.17141425379356412"},"_hasShrinkwrap":false},"2.26.4-next-1604350721-971177e1.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604350721-971177e1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604350721-971177e1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604350721-971177e1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-f8+cBLk5yG31FlMAD42SYujJpiqa7qeG7fdNdevUbV42VAYVI+tWVpWc/c3pa9VAcQNkqh4QqpOX6NdtZ0VPig==","shasum":"e5241b345d463a57a27d74b1c8153fd0bfb61237","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604350721-971177e1.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoHOPCRA9TVsSAnZWagAAwJoP/2XHsvb5RBSJJZ1lIigC\npV8WrrH6BW3YOqFQy9F3E3vrlW+jCaHZb2z0PnRUQSmOPAjWkWmeGGE32+Y4\nKD6orlTeIr4IAPoF6ipCw1n7ESfHTDtAh0XeyAfym0zy01lEXpRoTRWydtu6\n/NVCdJyZp26QVV7Kjp6XhliQHNBPcSGG/V4hbTngsxv5/hhPcKofVgZQwls1\nC8VnAZL+wj7LKzqSkXNw4KhwnFAPvB+boziuGxC4T0KcFDSf4YxMv/H4u4GK\nUp3gROZDAvZ9mLU37JHA8SWtG6BDhdsARvey1T8AC+SsLzKtU/xSZB21iu4A\nNSjjdKjbx1JsUMjv114EYAZHnmtSj9s0qyMUQ8xxo9IhAJ3cu43WjwK8Wxfl\n8z+NViq918kYgD0e72DzcseWf8kw1FI+N3LadTxgXnNqWHMm8xa0ERreVYzA\n335FJToS/5hkKouZf2EjGb7q+caakbNuApFtNsytaVKhuqqhIZYzFz41g0j6\nR4spnPz4+tKr+0TZmZ+MKI03aWdefs3X8UMllU+/nr6q2B1s5NI+RQ/uD8rX\na5UIGsWnzKN7x7tfmO9TxvMtCCtLdlD0k8Cq8AzbGI/5xvpGnOWqTDIkftTN\nv0bXTytnVhKDnaVrYwQsnRkCyVlpBmOYLbLyJ5NiQTUTs5sbEb7KPF8bVrec\n6Nqi\r\n=O/jP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCC3ipyOtGvTbOFAGDaWG6CCHnp6eOXU6Hcuv+THFAyBgIge8Eawb3UmURPP31UqrloyFmD9QghHn4pju6F1dTCZEw="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604350721-971177e1.0_1604350862806_0.5161915662380265"},"_hasShrinkwrap":false},"2.26.4-next-1604354425-c05324ba.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604354425-c05324ba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604354425-c05324ba.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604354425-c05324ba.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-590AlxgC/MXBscAFMiyVO/cEwk4iUDakmtBgG6dFA5JIltPsdgiDfMjBGB2A5sDClmPjhxT2o09hdKK+X/cB2w==","shasum":"54958332d2f96be78029e627e05dd00828a7cb2d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604354425-c05324ba.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoIIACRA9TVsSAnZWagAAMQsQAInN5d+fLg6rnAXhr7rG\nFYctPDnrQd+XiSfOAA5nPDmBs3rQAhj+W1jTtXGvcpGGZHxWL8V+UyZ3wOzl\ndpW4ZTDmKGHcfszEENxxRA4Pb9aNVmnLsmU3foA/hlmYvYVbBvdPCPXlmL8A\nGPFIqhrMbqDpID8AQ1NrbQAMIQAKzf4g0jmX8E/m/oO29U09+S/Gox6okjSM\nSqhuEId4ZSF4Y7KGpZmyBp/N1WLJPgFoFv4KX5Fz0nvVoKT0c6tsnDXbwjxb\nOFxIQ9ylmOnDNWH06zYAgsQrLpK2nvOYPTMkB/6B4l4laDrkHvX3HxFQwnaT\ni3m7kSSSua3xhrHKw68aI+jsJsydfuEXML0bBhBMd2JGVHgZJX4gpBht1+gm\niD1DnP+WuiK6JgTXag+KNNaJhLlEZ5lwNAoH4X4/8Mn1zNLkHt1wxR8y8siO\nzdTxr7NtS9n2TERnc1etfkWEGDy3OJXku1qeu7SdUOyKScmvo0XrhcU4rSMA\nXmiVhuVgdkvKOPbRGp7Rt+MoPkmVQGsxu+s2C/HDNfQM1AkXCgWzwXkQv6CB\n8N80oriba9G03MyMJqaZK/qwwR94MgA09ybaMr9TLupkmrwUIgPzdlp+nTo9\nUQUrndo6f4dF1Su9nkeGtbcDKMG9eg1wEDnAbBnizGKfTF3raviinn3ABytV\nDM3/\r\n=W3P/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID0oyWEO0+dOURxvZer3jgss1UYgMy3VoS6ME3ISRxStAiA8he9hiiWyBxcJtlN+oaVIRU5jCrXA33B3XNGUp6RJRA=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604354425-c05324ba.0_1604354560074_0.23811535674637008"},"_hasShrinkwrap":false},"2.26.4-next-1604354719-b55344b1.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604354719-b55344b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604354719-b55344b1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604354719-b55344b1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KqCukEdyvYwZf2UXFx6ZLPcggDtFKinISbZchCxwv+7v/kNqkCX+Wkyr/WEamG5RKBscY8L+pSa7VErv5GhCvw==","shasum":"8df5edde75aa83a924be299371c14b7b2d752643","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604354719-b55344b1.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoIMyCRA9TVsSAnZWagAAR70P/2KdUNCobmUPpnC8yEA/\nah4QmuEnFd7Sva89wmL8SKpzJZMEIP+JIY8bmyiU9jBt0/1GcFIT5RsVAxjZ\nZkJoDMtzh8W4h4iywBDlpTkBDXoNZCTNbhkjVPeIkGuAwl+s98XV2SSazATe\nbqTxMN9PidgINU34WDgNDtVZYjvegokQY9UX00kygXhUYESDVJejh+IytrCw\nwh1+0ikXcBceAEXwCkTAV0FJx/0J1WcngNqXN05D+1/hLH5rJigXiDByNZyi\n1GnNIAbWo199FwkxlF7PeE2+v8tKxdFGXALQglefqQpmZ74XRwBasBAoPY33\n0Gs4Ja+ozloHSg+tU3W6+Ky3wp8kQgEWrFs7nkXX+tLpoMV7c1SXnwVHcxYR\nnaiwuTa5UHIbZymsjstMh7Yl8TW31fX11jPfipxviMagOcwiT9k75AbEiLzs\nvmrh/pYWolzSPh16BZzeqzErG6ufJXNg8JBtYQAdc7e3R5q/q/WWnNwj2iRq\nC77t/9CAskkdTrmgVh8ZQiZ33df7qwEeDvHoFo/1/YbHAdpy8BHssjTeLV+l\nKxU0H/G7mgPbeWFrIO4DGPbPMGCiHWJfo9aWyx9f6/FFUG749K7cAGavoNCz\n09hJUzxYPYGusvqnYFW59dDg9PL6/yySgX5LQngDyAvm8EnI35S4yvDByUX4\nrGTw\r\n=ml5n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATsSpG7HdmUfkz1zCpk6FQF8IKUoPuO2qzcozVsNKQuAiAgZfUDSa4NUithuQgOBBnAjVATBWEiukIeL5+xx6f/uQ=="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604354719-b55344b1.0_1604354866355_0.815631844020084"},"_hasShrinkwrap":false},"2.26.4-next-1604399637-9e2d8ac4.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604399637-9e2d8ac4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604399637-9e2d8ac4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604399637-9e2d8ac4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ep2CPcQVxnAGmCIBGdMlsjZqL/rQajVa3kKOydfZKd7wkz8SnBYy12vVeES0BFs1lyNZI2cEIYQvgtGzPzv6aA==","shasum":"515185ac69eadeaeb423d3d451045fbaf02e9b97","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604399637-9e2d8ac4.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoTKyCRA9TVsSAnZWagAA35UP/1gQldlXpxfVLGq/HioD\nogEt6Nch2MyK8nEXN5tnChfhb8x4AUrWi87cSqx4mJtCY9OEG2XEYK2F14JA\nDBZqHa1unYRDWHkgExpoo3Tq8TgSqnCLULIo8TJXB595s/kgZJsnWasu7dG4\neF5zjbXiwS4Qs6hXeKo+rCofL+dM7T1w7TUso7Zb1CqR7fkBtsLNCo5oOeWV\nOHEtT43qUtF9mJLIU+WrUD2p8AMkk6vf45Eos/eUeRY0H4ViKMZlt4rLen+9\nwZxBW6nJh8q37OifXoxJERsmPB+jUpsvfrCmcWXvIa36I9Ki2K/wyX/OjtEO\nhrSruyv1/AsvBN4Bh3wxPfxniVYpnBbdN+Rl7Ie9Q4DUCTTihqh1lIAIxeAi\nvDn+k4zNzXIube+TAnr7DoZPbEzsS3lz5vt+/CTcgQCkHwWOVwY5osjZKqki\nX5WPJu9l1f9MK6DWf9bAeL/ZEQMMBVEhyUOfHzAoVXZJd/OCBmkg5PXb8NI2\ni3+EOjqM0SMNu5FZOFeyoUhqU9bVbj+OtgOsmUTyz9vDHzcG3cA7RNa3khwh\nmmhFvMdVZAF2J44Jb2IvxpTuI976zsyTZNbrKK5el3a17KutO8WC5SeN2naU\nT75hg7HgE2kt6k5jB43G562jbWo93EzhmIRCz+GeBF/A7x8hVuaPeAQGJ9tq\n+GT1\r\n=+N5r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtYEKli5V57DQkqBpNhxawqEqrXVqkoFn00qfDdGYVkgIgLyVoacjKiyUAzhnf446gsYUbZt/GyyXP8IOtrBSx6mE="}]},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604399637-9e2d8ac4.0_1604399793657_0.41527315471827064"},"_hasShrinkwrap":false},"2.26.4-next-1604408298-dd1d3e16.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604408298-dd1d3e16.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604408298-dd1d3e16.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604408298-dd1d3e16.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AzKKu4he45UPR+6Gymg/F6IsiJcZaPi3DBcwTV4kWG9nngrr22bUXQpHSiSvAVBRJsfpH/9goU6/WANiYclDcg==","shasum":"0535ee05eed8a7d21db6c09099c985d3fdb0dcda","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604408298-dd1d3e16.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoVSFCRA9TVsSAnZWagAA8YEP/1PVXSeNBuFd2NU/681P\nmTqBBh9yhivs1pAgr0dWIVqMba64ofsNRvZmsZokwLJfR+L3kVLP+SxbtyjY\nbkVtZo19UwpEiTgpdpEpB+iJgxSv+rz3ak3KKVYNbRlAoBpXnHcmfuF9E9z1\nTFsvacv9pzu1/THfUMjrk1QW0zJzDerHEw4Y/CEk19wQ93XOo9l9se65JKyR\nX4Ysvyp9unk6oiG24nDldrpQhsds/6lwjACgQ8AohLfTLE9FoDJBbituxCgO\nrW2OqM7DKB7l7vJXJcTrpF3oYxGk23sgOPYEBptHf/B4/7w0Sm+KZf0h9EFY\nWYaSfpZ5r7CuZ7FCTeduf3TMiokFbiN82qTH6gWPaytuOXPsZihxXKWBMw+n\n0LqnJ96eMyRYWmE4YlGJ+3/T7Z/yqbLd3I+345Y2b9CW3r57JW5dgCSaZBBa\n0Oqd0sOjKev3wiv7HCTd0SP1URl3zltubj4EUl43lGLxHXopAG24RblX8rzs\nG5HvFgJbo5Yw9dCZ0YSd940nKcnA2OLA0wkxbciHXj6BtUvTuXTfzEgHWq3L\nisXSRgIHvbqqskV0qwpUac0TU5Qh5pJztekxnVu6CA0ZtPpArOoMhr5Wi4w5\nxCQLNkZasQNQUWbXDtbAarS221OVICtpJXKNjeNIwqXyZUa/hSZ6pCbbFBnp\nj974\r\n=10Je\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0kSq38OHQOncNe65a3ffFuOqdH5q2JCgmjqSV/XhrSQIgZCW0jR2VoTbCSTtBpSQl+7HdUCrjcEDdH497dB7QOtw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604408298-dd1d3e16.0_1604408452991_0.5748826313400044"},"_hasShrinkwrap":false},"2.26.4-next-1604408797-97ab878b.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604408797-97ab878b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604408797-97ab878b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604408797-97ab878b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HyI5OG3wR33Wvitz7d7cs2vKFFy2SQyJwGHduicQcyndW7U/NUEAbrEwDSQfJDY1ZtqHFfCOvpx8wonpri3R2w==","shasum":"33a3a0f4adfc9b8afab717f2eae301fed415d26f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604408797-97ab878b.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoVZmCRA9TVsSAnZWagAA0B4P/Ayu1/YFnf5xi+A96nTS\nYnqmQC1U7WuogUzJ4Io00RhoUvc+lQnDUPA7fHQjNSMRH+/koxdeJpmxLhEj\n/E/1qZkjNgVQMXGKZjPBnyHoS7nSZ24kQQKmOToOCzW2aa9/DWGzFUWDZLDY\nyvYPbs6+z+hxSu5kPpHqa1at0wyDyK1ryI+YJKIpuljLsjM+AXRkphEs+WNN\nUAfp/uPK0Y28vAQVtledzzBxql9HJpg74Ga1ny5kiNaPYiHgqP3teozZp34L\nAciak/EU+JUrRhyB3Kfb/FBkgaKyQXBU71BWwjQNeU29jvNyTIE+NfE/mwzm\nlOH6lvu7pjev+eKD/g2qUV2BwPuXh24labR83QEEKH1eknQbD/8LE4zQLv3n\nKv6BU91wWrV4YWxOgzgWtqNq1nGK5sBkUy6x1P87Nwociys5PMpQCKqVlzL3\nx+VyD7M0lmtnA8bJu6Li/kCC6izfRNdtw+b308sBSx7i8T42ilkiJZgwjfSz\n6b6SbqtsPlbFfgshk58tclxuU388sj2/PHelfCP7coPVhKO+qrzh5abEQXgW\nLtBcutzSe4qS+EMnZwkSnsnkGgc5FCf3+zyUVG8zH0/HXBdq/AJ3yqR2XMZJ\n6kE8JWseLjtIlWGg51zms0AbT1dGKRtmB12ss5OAyIV0AggSaV+SvfoQyaQ1\n2f6f\r\n=KTkp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICaHwZ1neRKE6R61XEDy0HuAcnxSoD4w+f0JV3m8oDJPAiEA5Vb1alwF/oCg2ReBacukJfKaRnxbP8hjDps+Wom3Fd0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604408797-97ab878b.0_1604408934091_0.02217820962820105"},"_hasShrinkwrap":false},"2.26.4-next-1604412070-34441dbf.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604412070-34441dbf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604412070-34441dbf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604412070-34441dbf.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MTZBjbiFdHd5Oz5hpXcQzz6ZTe/iHVUsm9tsaegWRukWFnDW/ILSFGbK2yLI54MbKXNWf1qDrUMzsGLTWwNABg==","shasum":"b817841f6f010e434bf8d9c846d981808eec4ec6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604412070-34441dbf.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoWM6CRA9TVsSAnZWagAA1XkP/AwoOgMVmK5j5rSATWfg\nWdclj+y9TqNgk9p2Mbxxk6RSGv0tLKSuaao27zlqoGAahdau3Nsmrt65WJSQ\nA8dnpsswDfOKvcd/qWTcR2RBtM5lLlGQT62pobdZ6ne07Fgrldn56ouq6noP\nLu1sMA3F6uUiY1mMpnHV/dMPeSR1DH8GJOpN5CgSXleb/dgUv7B1pmLp/O+T\ndrmk+v/mryS1drUn+bJagK9vH1HoWd22BnwtS1uDPjNOkXmqzoIqzO1y5tlY\nieLJMdRqeiWCvNOtEdqQdf2A3czKUuROhW9ZCQC2bpogf+Pf9dv82m7v6oaB\nb1qRkZBuTGJFCL7/TYsy4Tklc76fkz1jXwHRZq3KgCHzkHK5TNhzGltgS9Ve\n/78a22PW6g9LCVGIpoykkHDBLGWmpY17gs7mxS76zu7SnTAxVS7R9D8tWvRJ\nwmrsTM6Y2j2vbCM0Q4kSznELU9T2UXVlTxfB9CxqiK4vCUre3YanRG2uF34Q\nNHOwnm7LrNnyju1QpWXC9eo+xDIle92Ik8yDxxmRt1MvUp9gn9DkzCcGonhk\niMKQl9BWyYxSkFWqTHTk1hz2Lu8WB3a64Xb3HAqabzPK9bdbB2GxAXFgEO53\nUTEVlQo05UkbHndV4OfGkaBdd/DAh4sfPZkJLCkj7OnKHv11yul9SjI85xow\nO6sa\r\n=Pmrm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIELtKOCXRpyVQuGwnhjdF1l7EBU4cbM3DUOLzKU8ZG9yAiBZj7Kcoxw8LUNS/yfnZdZqK3zZI79oAR/DXM4ieCJ4Ng=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604412070-34441dbf.0_1604412217581_0.7821537190200534"},"_hasShrinkwrap":false},"2.26.4-next-1604413177-5d6d1e8b.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604413177-5d6d1e8b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604413177-5d6d1e8b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604413177-5d6d1e8b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WSFf28AGMU9YxAc/RFztRH9a84n8t1OuB4GHklJl3/Qfsuds+nU6HvJtcwA8m2H+bXnmVTP8+RmIFfBf+c8YBw==","shasum":"53d6b1ec5b49addfd95615acf7b1327c64060615","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604413177-5d6d1e8b.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoWeECRA9TVsSAnZWagAAH2QP/jGx4iXMppsRJMvGxZ5E\nYRAjg0+cTPUhiuzHP1B/v8BtHeyJ82GNyFLa3ByWPEv6swXFelhP+/aP6c7o\nX44fY/7nyf4tWLJrMlsM53c7RVmi4LcK7/HOWHXnlSyE5PVnuYNHRLsUlaAl\nKYtJNlJivJfCqUoT5H/o9cERbP39YFfgFE2oB2Jfd+x957zYWnn30+DjmuAP\nGAjaU3uVL1LCRMss+02UrijkoNDpW83Vq24rYAYJ4NtXCzp9n/LgqBRvLJX/\namz9Oz+SuH7sSuupD/u4Cki/dmFusnmUV16eDw0W/V4BH2uSz2xYjHCE8ACp\nreKjduG5g0ONtxaRhYjFGi+9VJNFiF6BT1dgqzLhyZL0qNzV5NIyejHRCBC0\nSUwVJDrnJ5SLdBQThDr7rGAty15AoxvpLUz5y4UThaB1RMAcutYbaUr6cg+z\ne/8RW0VALIpsupKx/e4Sp6SsErSKrIJWNDhKqea8WfU8f5MuXjQ5f5qF33EN\njIu5lVnKKtSeYGq1IwZlWxnszf39+0KYQdJ3PGyN9ITmAm4hnTjfsS1dvTiw\nbA1oIN2lov6JGk36SNCz7OtT59S6WLNYycSV5y9JOJVvBIl2+DInwcs0wx0s\neSIko2MWBd5fKE7vPXHO/ydxgt6BtwGIL2tHvGHEFTtWmhJoBIRRevnB1miP\nmYHW\r\n=5uAJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlBuJlRPMaJBgjNWk82aszsAAYIMKI8bITWCKmT6QN4wIgPK7NpQL3QfSpIHMgLWTWdvfohXrG3Btmxjidsqi4iCE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604413177-5d6d1e8b.0_1604413315838_0.36807391956438207"},"_hasShrinkwrap":false},"2.26.4-next-1604413178-5d6d1e8b.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604413178-5d6d1e8b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604413178-5d6d1e8b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604413178-5d6d1e8b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0bUHir3i8wdSUqCe2nf8eUIyWxb8C62INV9RMJZK+hxJOtQEqQ/BazMQSVYCOayPKBPNRsIF89v+DID6mamzhA==","shasum":"a7fe5d110710b92efc516865fdb765cc41fb55e3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604413178-5d6d1e8b.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoWecCRA9TVsSAnZWagAAVMYQAIVbAiRlF04dwGbP7ZR1\nrRnSH7Z2/mYsILzvIEorTQIF555jFZVxl6BkZIUHQjr+q2Fk4uWcTQYwb8D4\nW3FiqiF61VRr79pjfAi1OstCxLPYxV6XqATrCHp3Yzqcqd4GNuLeikednd3o\n7pfaRQNslZKMKOiDkrfNQtLGftSLaKAERASsOL95VS7euKB9ExTLPy0+v+u1\nkIsaww2oQ9G0gIJrQeKQaHIaQ4bVRT25TRW042LOxdPLSvjo32JLHn4PeJHn\nRhTsi4d58nPmoTTchpOKf1GXFZznc4u0zqx9+aV3cXxvHgohzvGy09j30qas\ng+Zt/fudlmaPvO+7tw41UoiS/J3f6vUdKugFbLCjbKWw2HsV5kF9MAN8VLix\nKZ+J1SNy4UMPAwwMdtm2SeW/Y2qp01Gsu5yLjgkBg9KSMhaObGOiiyYpjmHj\ny9K+UXZIaZ98K0EKrtPH6NZ8td9liERU7hWXpjR/bY+SyIxkJp5usp1srgGI\niZlOebcyfjYwI6rT00YElfpPGDK1MCDxdaIXYUsreYvkjxz7DeKiSY9bWj6g\n/12vt6+m+Gd0FtIZjv7Zo1ZsvF8pee5WtG88NpCW8pIrUoLCUKez3LDiyD2L\nZ4SmISylETIUME3dDGO/BwDJ8mu0hZGurqD9P0Qcfm+p2peGiFRPYoyeddGP\n+FrZ\r\n=cUni\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2zDFMEE/U+xy5Ot5Wyjl/QumYqj9WUzk6zn+AjSqJswIgH6w7+fE4kY1ECvQiVrM0kPV8/zAbOuITEFqDcd+gIYo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604413178-5d6d1e8b.0_1604413339501_0.4498118762722283"},"_hasShrinkwrap":false},"2.26.4-next-1604413641-8ac0b15b.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604413641-8ac0b15b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604413641-8ac0b15b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604413641-8ac0b15b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EbkT+1fjUNNye/N17QnvpptIXG1wlWbwugymTC7h3n8CbqoO7YUvgfvTo+SNYgpWn4j7qFKaoxr7SLmwXmrZ5A==","shasum":"99ea6448de9353f71dc7e5aedf908dcae4c7fcdd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604413641-8ac0b15b.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoWlXCRA9TVsSAnZWagAA3s8P/iDfw+BqfJ9wQIk9TguP\nzPKQMcXx2dImIoZcA5shwqc8CxTfOKmaey26x/8Vln1Dr/779Tjcqf+Xl8U+\n3ALuCk3CqxJFfsl8U+5u17iK1iT6/d5/Sc18DdPmcyRRQOIBk8KpJC2yl/KB\nc1DXayQifHjMR0NFtyv8Idnns3vstkNeQ7V1Nz6xykbzr/pS+Q9CzRQwd5M+\n7zHhSsmHo++GcZlP6MipQL/VKJNtmuZAbC1nQem4vqGo6UhYJR0CfIlovvx4\nP3eRQKGQDjPXqD8dF81znuNtdE5xu4cblerbDKMWU+eKW7We6ILNB6j+FX+p\nLiEDE8Vtj1oQmXv97P2RSuEVKcMS50CpcPujJjXNlu3+yIXtih1KHA1W41Vg\nnxdqlfUa/oYvCgUuG2WCh+JSCONH8SeLNRAav6RUUmachSWyLyfeXuPyu6HK\n0Ii3D5L0R2dfsKD9yYAgBv4p/MJyr1zT/2nrGo+QV95+kwxbOy6nONukG4J0\naPEVoFVapWbVzRFDlxILB0KBYwM6AlD66s/5BLPJb/w550k65x2BN6kdoNgO\npNxYXyqLkNQv7rmcOJXpvAxfdWLoE0RCBF3iIOfPV95Q6CuMHeDbbvKPhEZX\nnzBYUObMigWxqWy3aOd1aZzmmWXDBQzOYosipeBnIZl4q/v5A7OBFPrf4srE\n1MA9\r\n=9zOs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE3f3ALfe2IsHQ0bqYQx68cyUMb8aXV55qwrklpwCGZcAiEA9Zw3xvPzVwSStBYSDSY7n7d4jhWeTvU0zDbonkwzz+4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604413641-8ac0b15b.0_1604413782713_0.7432209569775436"},"_hasShrinkwrap":false},"2.26.4-next-1604413700-3e4514ae.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604413700-3e4514ae.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604413700-3e4514ae.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604413700-3e4514ae.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZL5vxShaMlBzm3tH0xV7kosq9gBihosPmmrQCbTWlhplEEOBN130oKhj+vNYqMyhCnL1sv+5hGlH8Xh3WaAGxw==","shasum":"c15f3bac621fefc258ed1c2074d8f02b8ccef5fe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604413700-3e4514ae.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoWmTCRA9TVsSAnZWagAAAXMP/1qYP+TsRVcGuCm21tiK\nib99SRrzrV9ygmoimOGy9tXMo7JMH1f+y2mx+Okd7GURNrzZQCjLtkkfPepW\nCyCvbcKJIY6hq7boRd7EGcNQFz0jYS5op5ugm4FeZbIn/iTOchaQPzyaAsqv\nY77jFj2ox6tHJ3qG1lxtLrMUUC2pLZ2vW8DdLm2AVPQht9d9oIBItuW+g9a4\nB1MmLB3zoSUGRw3rRw93DO4qtyMcfFLyrUABlVBLN7oVIaLSnZQducntVSPv\nZ9j5Pk0Hs3fMbV8hfSZP6AXCEBB6X5f46Z7LAvoy6z3srfFa4Se1HtYdFCKE\nthyVim+CRW8cYpyxkAf+6534I7GZeBngRW8SKL4Sj+zXrHZv+mK2tRoUaoyW\nZbD2YY9pU8GkCrQLxHKSxoYcdZHVSD6SzpU5nLoolZH0mNcIfDtz4/nzb/fd\n+3/TsjZtUUjOwBPCJfktW/PPbxq9zrhOy4eH9/Vg7BD0ogxtSE1w2ki5kobH\nOhluEBtMqyaukNBQPxdQMoB9kTv0z9usWLrSDpY+xVAIQ9gN2nQBO2Kihzzr\nwAph5XxFAAJj+wh1QCqlC4ZqZ/5qsa2GJr+1khwTCVDPfmTZNPq5qxM7Qjtt\nrM/9BYyE27XDhFRrUrOEiG+A10TPOJiZC0wmspHzWmYD23vPJBhUXkjPgHcW\nGASl\r\n=Q+TA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqYHSxSlFKcZfyqRlDd8vphfuil3hGY4C6Va7eRk9SBAIhAI9Z8ZZFTR6LY+i9n2oFHhwlACsJTytOhR1/JZlovCjb"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604413700-3e4514ae.0_1604413842758_0.01871619675099634"},"_hasShrinkwrap":false},"2.26.4-next-1604413998-d5dc1c62.0":{"name":"@xdn/prefetch","version":"2.26.4-next-1604413998-d5dc1c62.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.26.4-next-1604413998-d5dc1c62.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.26.4-next-1604413998-d5dc1c62.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-SZ4Lf5cqyvwrUCF59FeF5a4TUkHXm6zQpP2Nu9P+ermpJaziS9iFeXiD6GuQlAuLyUbF+2Mujb0yrR5PELgTNQ==","shasum":"1e77bb52e822c8c933f369f3130be5996070f058","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.26.4-next-1604413998-d5dc1c62.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoWq1CRA9TVsSAnZWagAA0z8P/35XoOe3d15q5Ds+rFjT\n2HMUHHbhfvQ6yAziF4ndjn7Pm2OqGi3sba2lW4RrYEHUKivovwdDqgKWYgjj\nDP1Y7ip1ovZZrq1svZlcBAnLjhZLCH6ZS/VcGUq5RP5mxt5NJ/RQRk9drRaC\n0ks8vCsvPFzmQrjuhbEuw0oqZ9rzykgnDgU/pci9L8fHFk718l/MQo/z6HW8\nImTt2gxLSOW6J5hGzJVu0zdaGCaalmasN3t5Okl/FUdhB7hxltz8PmiPgO5e\nw5/v0ii38U0tpf+1kcVQkgHBijzX+qg+LJCG2ynczxUkB6TbnDNPQSE1ZVQW\nHwZs+mAhzPW5oKIMCQh81B6qNdaPAnaQXQp+WCx02cFQ70gk/3LscV7eICj9\nfAzhIdeYcn7hvn2bTS6ClJAYyJMRjOpHP4BxUYOivlDNX69H7Ne+oszFEkMa\nrO6XGWDAITpj5my9zrPC2Qj0j5+PFzw2shD6AmQ99FjqKvCiLTI5CRY7Jw9g\nuoRfBfL1oKYHbVUKFPhYXSLlnsNZESWbdtCxUR6GYqZdAsiPUQ4r5Jq4ASBm\nG14LFxAU4/82IBTnUEwNe8DNNqJyWXe7Gck5aOKTX7NTv/gaBUBhDtZDB6Ij\n40pUVWzFFxiRXOLkJGLmu6sAN2n0zO/YbhVt3cOYWz1hQcQjWjDS8d+ZLMbS\nVimt\r\n=p4Q3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNr96ioe4TLMLUxmoOmOBhf5bsWnyEpxjSdxG0j+E6BAiB/ofOsJS8uGIwjkWs42L5YRrthDA1+Wxs0+ntjUfE2RA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.26.4-next-1604413998-d5dc1c62.0_1604414132805_0.23405415016174258"},"_hasShrinkwrap":false},"2.27.1-next-1604414967-7227dd71.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604414967-7227dd71.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604414967-7227dd71.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604414967-7227dd71.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uoqCWbQUvF2hx8pGlG7U2Y64batJXABupYPTTFdqCcJkIkz0WgdWOFo2PU6zga74xv2y6XR0CzHNxHC/Kx/SkA==","shasum":"26f487c5c6b46fbee126b39054b90355a3b161cf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604414967-7227dd71.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoW5/CRA9TVsSAnZWagAAZTkP/R0vzYbLybCW3xC7bJ81\n3E/eqOcsk6eIKgcJa+4l+erpTRPMq0a/fEgOyKJxdrhmpvIurcPZxWO/b6kr\nJQsltd/bRVeKcPNO6kEfehYbKFhMKUhPopVL0lrLUM+fs1B3IBATLRpG3gks\nVQd4JneHJvOzi+Wtl/oXab1qyI1WscObWwgZSiH0n5Jzh9yetUPaVGdkwUSt\nbvxR0tXKehaWRZbJB/FhxB9XYrgGCV/f1lbiLHz+IFOSuqDJwfBx4jk8s5cS\ntBoeTdcUhao2Rj4avy98ze7CNOW8nVNodgG5Qv9XfVuPmfyNGSQzgdGYg1n7\n59Ft+jBycnLz4Mduv1tVelo2Es+k2DhhWOU+tkt/WE1WgAFQB0oXhfMU/Kpr\nvxExWO900hu+9xnbUay8L3Q6O/fh+eOFHXwVz9NaOZI0rG8ckapdN3lgEfkv\nscHQwdZezsRDEOLYHM7ql0CZoS1t2vg3MOQ2NjIcbS/3dVJWeq+04BcKRb4d\n2l43/mwGrTda9lufTOsNEHODPkcbWiO8R8F6E3WsddKA6tOcB7fXUcl5aCVr\nZqo0e2gWQEbtSkyx+lGRZtkwhN6Ui3NcRQSXQOivX8qswblF1oMl51BSHviQ\nSo3horgNbbYTsNI4uhQ5kFqYh9U7ITE7Hx7CRbUAfKDG+r7mYU4HmVLRk7eL\nk0y3\r\n=Dg6X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPCdtP8w/1O8MpZRY4nmQUjr24GdecwqFJY1/oUa5HGQIhANp24H/sNiHCRC0kbGtZ4ob7znWfgOWpHdbAYOlucl2E"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604414967-7227dd71.0_1604415102712_0.814663906859816"},"_hasShrinkwrap":false},"2.27.0":{"name":"@xdn/prefetch","version":"2.27.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.27.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vh7xudWkBjkUeEv3mO0FYCyRf4thBhseXH2KfeNaV4aN76uinO0sc8rg82WYtiVjpxGWz4AVdCNZDrxP/p0QZg==","shasum":"aa8f8a2ec8462b192f97b44620ab6af4a993c09a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.0.tgz","fileCount":58,"unpackedSize":134987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoW8ICRA9TVsSAnZWagAAmLoP/3RB2D/ElEZabR17ltF2\nC7y5K9Qq8le2pYHt0J63xei/YwoVgiBoQFJZ+Xi7RMP8y82JuQb5U08k7ypj\nCnyIWL9ceKtEAE+usckl93Q1wPAMz8rttC4R4iB1Ow6Z78Iab17/VUnepSGK\nGZFnGUOMRi+7CSsD3/TCzebRcokCxTz2jdBABDLOohU+CvGGxLOMMi9+wr9V\nb8nSv+X4djjZWPUxlhrqxOmY6nFLfn9asPYVPSWBCu2yxFf8ugPWOqpPVWmV\nqYMGDkeiT0VwnnzzDpxAaxbo94CHvUqvNc+Mh+kNLPBvX7pczADHVV8rGKMl\nkYWga1/w4s6TDSh8JfWw4FEvoLuULCu1AWmZKhaQtMVBDjVf6y+DTvA+tRw4\n/DY3aDbtLFnmtgufGYZ9pHG0bnrDyIbz+F8X9hpgXPpde556qbYUcKfxhVxN\nw1SXUZHzAhYzXxblu2tyt0rFF9q64C/9/FIxDH63SkJ0x6Dn6QYkUy4Zpptq\nyLyn1YICTQTtv5cuAt65rrcfpnb7ngmAs+6JJ8u9HhAZmV+DNoCKG7iSr/QP\nFkZMF3ONk4a8vnChxxWkgZItI+jJuI3pKNY3xrMMNZHRQT9ZPzPM/hWXsL5q\nMGaNaYlux3+IdHYaLojjPrSO/JQx1eERCl2EtMAF8DzQKCHWFvkRWSTBA2GS\nukNs\r\n=dkmJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOyBtNukwBKGZaS2hfvA9Miff+93QzhHIYB6/HzVqUNAiBu+UuygXvWPJnZ0J26vsFWZjpnvck5Za4Dqif+ncmq6g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.0_1604415239711_0.09600541000147156"},"_hasShrinkwrap":false},"2.27.1-next-1604425416-4a53aeb7.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604425416-4a53aeb7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604425416-4a53aeb7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604425416-4a53aeb7.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0hLrcXw8O/2CwIg33DFe4dOoPQ1LFjrWmFHJyAQBJeiN+HA1hyNyfRa3wIrmHM8p3haU+Mc+v9nSpmmry8Aa4Q==","shasum":"4c5bbbc4c3f2ad467c0f36cd099c65d522abd0b2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604425416-4a53aeb7.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoZdZCRA9TVsSAnZWagAAo8sP/2guzcqbSTKQEWR2MZQZ\nXRaiWqCrN71waxKKGR/FPCewWNzFpxuYAa/oZYzT/RcROK/r7QoK65RfP8rK\n6pxlZAy6JPgXn+QMo9ps7DL8lP7lmVWT3mAco9y19aVPY6y58UgapQIWdkqp\nO8CTx55yyXyr/wP/qzPCzfBSRGTWKit435l+CQZrNIlQ4lU3S2psUutUdZ9v\nlrSsAKCw08l1zFHOiPsnSvSeJiWlbMDWjn7klPp3fFa1p2WiVnUmZrK207j1\n4NiqNEoqOd2TFaDhSdk36HMEP26buBVzwG/PXfX4ExSdFvS6c4TNgmaaNSmm\nBLmRTaEyj9Dwnmyi5TuJk4qcbPmhRsXNyXlpbyEkgKN/eSnzxbf8ZoRxqpEa\nv15psKNf0uHfsdEOKbKkiYxoEw1DzC+uoGuzmtzWsjdGivXpeaiK/9A9VLpE\nMR4a0vG4DEaNTqqxZgZniStThJ4aaP/cay9j+Xc1B2OqBljQ8W22tW9OYK7I\nL3YWEdVKHMaga7U7vMyJKr/qIOZzONKP6OvEtfSfMahS3OulaaOTx1U82BxZ\nNGVNzhNkVe5o33pXcitsI1XGYY5IMl/FbnbSK6H8HdEu6A38F5SPavd10K5H\njyU7yP9x52DoWpETH/twFCYt6fgbq+Z4QAHqodiooQsgU7962pq7r7cLJbot\nccsc\r\n=sOoR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKWtR9HPgfswQj6gvOI00gt7p6nhO+YrX2UhuYFj7AmgIgGU4rmi2SYuAr+7MS7dBS62owPNxmJ+qc2LIFZ9KtOSM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604425416-4a53aeb7.0_1604425560842_0.759123381033094"},"_hasShrinkwrap":false},"2.27.1-next-1604428707-ccdfc873.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604428707-ccdfc873.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604428707-ccdfc873.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604428707-ccdfc873.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-d9ej0eDevA5CxpwXvW2bGCBWPWbTQZXw28GhdC8aq9crocDgIdnDMx/+eKKA0qvj0JspbOo1s5X1GJ+sMRPriA==","shasum":"ddc1133d5237c4710742a569b2cf80642a7e63c2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604428707-ccdfc873.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoaQ2CRA9TVsSAnZWagAAkmIP/RJniHGgILdnARBrO/ql\nSJ4/Gl0tC7TUpN9I5gojiarKhqXTSLVf82+ImZ+01V+xxDS72qNYJjNIwfWU\nXsIg01onZysWmM1j9FTCAqGFXRoq6oaKWrW2RW/3gsJ/RNO2HXAC1iqwyO3e\nm5rN3ujr857UjQ8e/OKPzUxqTGQPZKBH8ShdHxptEEYap96nWK2QQG9ynW13\ntE4g2xe7m4OHPjntcQBXJuK1vDMe6JfzoKxvT6c8MgbSHI63BoD3/4IEdl6O\n2nFTRaKP6vc5QHgE7Zv/dbvhf04WMsF8XQOt1qt1BtVrGBLrXGPn/r77m/wK\nm1VkcRHFDGJpWKT+W9bfnMgKBOQVW8d+iWVoOQnt10mAm/fi4aD+X3rtbm37\nj31BtO1Z0UfkOnnvm6vzgsZos3vmN+Rcut8EOIl7gEJJOWDepQYs9/vTlqtH\n3wdAinbEDn63kCM4OqjckN3cYzp8euhS7RuejzqQ4fa0fB+A3vmFe5JUEoC7\n5c1pxt0dPChYw7PP0vaGbEfltGoXAE5gXF9c4CZXmL5cS5hKqwnsZRgEQbf5\ndUOU/jqdeDTqP46eaCbaeVdGuj7saLfUkwlMFsKooJY2xxDm/SY0qtYRkS+V\noqkBx31syiBdALURdkxXWJMPkXrvYOgnP9WCsHU83bFi14qdJw+1DT2WthhH\nJohI\r\n=H00T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlU9iRJxBpofXanqvt/qnYXGjSen+iB08v8wNoWlK5lAIhALbZQxV764SExY7OMj2M2TOIQREInfjFocMpSYx69Cqx"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604428707-ccdfc873.0_1604428853844_0.6819319403260371"},"_hasShrinkwrap":false},"2.27.1-next-1604436700-9235d996.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604436700-9235d996.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604436700-9235d996.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604436700-9235d996.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CMU496Hmrlgj7ZEHCYS5s4qZDyonJW+gsMualTjdBcLfnsQt0SIC+HmTLDkNbXgSZtsMQuAo5OvqfWm9QzxwEQ==","shasum":"cfaad6cfaf2f7a87eff31280eec0236bd0dd8481","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604436700-9235d996.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfocN2CRA9TVsSAnZWagAATB8P/1rB1yM6B4Fk7c4H+fmR\nGsMxNQefZDh7ohnky2EGhi3SNb/Lkt948S31QJvIFAlfI3zN+70SJKEtSr/E\nvOq20FWeeKvKRayWpbRA7d+uNFG02tG3S3k+R0QnLcIl4PcITpapRkzevlAl\nO5sQ/zEwy7CQOmOJsAbwXPSC4Maq4vBNbepvqLWOHx18FabTz+IvHJTp0CP+\np3mlYnhDL/QkyT53jXrxeViQS0l+Xnu4vcyTs2EwIwvZwtUrRtTNQZaM+Vz5\n3+2dRdlJt8uExeFfV6EwD3v3RC+Yri7OXFSRTJhkSCz7WwLR1ju132w6pr92\nBYHjRwVbf1RtANxnk1ne7YVSiehf85Ps1i93o0X2PW7O2OiQPa9iiVPy1AAF\neK1qg4pHuMJWMlZcWBt/Hh0t569DIOxf0YgESsSpNGi7oXy0rso80c/Z6jFm\nPP38xsD2qp/WHZm8aYeM4gwyz2dJlPN/PDqb6s4qVOHOiPmV1TegKCx5psQN\nKmW1BEbEW+fZJ37Izp5LqoV8gJalREz7RoTCx30HaBmfyaxFYrJBRJ1d3Dyy\nhXYHIuQJTWu+f6eUEBYgFNDdDKvyw2K7FPjAXQw4kgr7I0SX2uismencMeDG\nMw8GRmqJ7xhqDkpfGwM7YoX5RgeKkaaOGQpFmRp21Ux+/e5FLtRoIzXMxK8a\nQBTr\r\n=ouiQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR+Tsd41e4SH7SmnNr8dYCSPZurPvGH/kP3zdPIMxeUQIhAJsJr+ZM/ETC1UFD+upzhPOFI0isPS/0bhvfAnikYQN/"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604436700-9235d996.0_1604436853585_0.6102208173591155"},"_hasShrinkwrap":false},"2.27.1-next-1604445922-a2613b1c.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604445922-a2613b1c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604445922-a2613b1c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604445922-a2613b1c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MWPFYh6lExjCKT80GzQankA7MfDcM9TItqRw3q3+aX1sVpu4bZqfnwHPUVHLn5FvtDM8ryDUyygP4aBl1lItPg==","shasum":"6b2d15aa68eca91fc5d61349c905488bfc8452a1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604445922-a2613b1c.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoedlCRA9TVsSAnZWagAAV+QQAI3W5K1DexKzZBEi+nBv\n6KTdf7Tx1+Z5yNZybBLK/h/Zb+7BiGqaReW+qQyFgrencVguX9oEzP38jM5h\n6KOI6bBplPSuHAtAqJhOEM7E1h3sNei8E5Ofmum38nFzCI2BTHk5+qTS2FH3\nEtMpRy6KUaYLKH5jcj1IJgxURewhveyUcwKHPJ7UaLDE9gDM1HIvvOc6Pgs2\nkhqG/lZpWUeEATwdeiBOPyg2YO3v9sbLkJB2PBKb1BwQteLxWStySW6DlZOl\niW7Cl0/+nts8PnmJnkgO8df4Q1AeutveYpkg6gvQonBncrG8KPsZhoHB4Ad9\n7aCT+dYLXzcwsifxONyqVW/q4OEo9A69KYGAR5o/I3jucEngvMxvDwWf8+cu\nYkyctZBjjS7/BiRf2dbV8plKEG/0SfWVrcVupoLsR+5Wb8x8gjwvg+WDKUOL\nqmm1NGSFJfM7jOsKX8YhNNXPVUZYcYzt7FJg2hqEkKPvtaYfUj8ZT7q1cbGP\nLtk8CeuYjbusYjQOlZlCbejo/F6EpzA7W3cmRQ3Fc40qO3VTmleQZB1DH+Nt\nZrETgL2NQaxlqvn0MdxHhTCpeGbnwKM57Ic/+Yqeextq7pBcvJhbwYg/DD4I\ndzTM0zseDOV0Nuos1a5hdN0fm1biUDpt8sjK4d5rVejbA8BshQByFYIfUbqC\nd/AG\r\n=6wfQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4h1PnAvkMf9RRZk6ItZVayp0xSDgj6CKKblAMfpsuRgIgN3wvEvRQst/sJo+TdLsWatNdvF2QT13uZ6/DqRVwkxg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604445922-a2613b1c.0_1604446053215_0.06379966953568306"},"_hasShrinkwrap":false},"2.27.1-next-1604446333-a1f7bce3.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604446333-a1f7bce3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604446333-a1f7bce3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604446333-a1f7bce3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Q6zCXq+XpqI9hs+SMPrE4boPo+qr/LSpLxm3HQy6NJcSuVX634P1DI+Ao/5xl9PVVz5DQeHNK9+uifsYcdUwow==","shasum":"fdde287aad5ba42fa12c3d1f79f1758e5395b542","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604446333-a1f7bce3.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoekUCRA9TVsSAnZWagAA9wUP/RQ0JEhmBz8XpT01Auox\n9jc8ChEpPTU1WCjJJXzGOsMoQIgCnDnMH/7Dl39VcEShCEunwvwOM2EPmR09\nBCll71Hj+oPwmza1f2COI+BNVGj3cC/d0L3oaEX49akgcKv46ORtFv3Epihy\nXb/b8BGgkBwes4UGrGOWdTWaw9wiZvuTkIlQ0Qu1pc8zlCE3XSO9AYGYDgHe\nIPLMfbf4TysasuMO62CdkBPj2C+L6uXLeQR8FtJEFcm7rYFDQ+LxmRrpmt+c\ns5YaoGvjGmREHbVBnwskSOGGVUyqJgOrg6et4M0B5ALntbZzaQGfhf0GQX7Y\nLJUhL5XwoXxXJVYwHwOJ/1f1GfZAYi12Z0MlpGxh29iFcebToljhrh9uEuKF\nDDWZIQsQW2vvgHpBSthfPQw1JS7OW6oYoBU8JmKsDeAqsmrFcrEySY7k+foY\nUNFgOtrSQ7lbQAuGKjSycL8fPiFyIsUu8jA0CzL/MigdSy2dkIfZbVUKTGqf\n8SOdcFpFy1D6TLVqOhYyeX74Ft/y9QPQmV6ndIVzaQnxTdlWla0bR2HwJt5L\nivYQl8RjkIcNeo1DuSV0Yn8hfl9II4VqtRvcsQ3NliiOrBtEtbHwJPcyx+Zo\nKxlOP0JvlV8qt7wer+vrg0UYCG4PIni/G6Mh7oBNkhBhZicEDuR6goOAA1ds\nfNWT\r\n=XDMu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDc6vbz6Wfn3l0mfGZT4ubaklDhF4eTDbWUsuRRMr1oNAiEAscUEGMKSbRZkFJh4VS+9Sa0nsBl3U1onl1ayNE5MkrI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604446333-a1f7bce3.0_1604446484312_0.42594670640061283"},"_hasShrinkwrap":false},"2.27.1-next-1604478197-95ff28f3.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604478197-95ff28f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604478197-95ff28f3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604478197-95ff28f3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ptTTKBDUWaJjE9EZTWiCMv7jgrVQfEkb3L+6Gav7Mz9y2T4ywgn0lPR8sp3CcZWKDxlDfYJ/2LakD58IwhTc9g==","shasum":"8810fe613d95cf3e3d2ee628312c4780cf557c11","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604478197-95ff28f3.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfomWFCRA9TVsSAnZWagAAiCsP/1V4T4mV7gUfEElBTVdh\nL82pK3lMKFOa8A0vUjiS8yJubNedNC3cSedwqfa3BFadY28k0C940M5Xv86r\npXhf6hgGkaCYglIXkSdrzyr6ndZ6B9Fh0Aj7CUFvOgLq886e7hp3h7Rm3ZZU\nwIW2UiT/5vo+ZNfKdUb7KrVQ6/8hnXLZfw0c0v5dVZbhcZnDNwTa4o4vS6Nk\nkSFKYiJGgdmO4aCmDKYKva6+wvuIavKd1OnLwGWE+EhzrNVB/zVUj6TeELo8\nmq6M6vY1Kwm4u8Je6oo6oOUeGAXKevvk3S1SMCoXPuMRAgpBbMxcTku6R4H1\n+pxuyGlcwO95M7LjgeSJIjVRLfoT+ZxRq5gwUnWkObMocYj7zGr9zbQVtBPW\nwEWOflXpf2x4qgwDHt/Qg9mW/mGBMAT9I+siS0e8hJXptBy1946coJAZ7B5i\nv10RJrNsBd58PQ9imrPh6Me+1p1hi8ITpI3+AxVnsxpe4vvx7NZJJWArOXhY\nbvUD2n8rbu6NIIMZDB/G1J3owgUn11y6X0mYjVGzKBNSCssdgnBq6LfnmqVY\nWaCzDEUqzPH6gC6nWz5R6ytaFrzXrxCfuZg5QSRggC6d4MPom1BuCplQKtqa\n2NG0ZixsqCW6KoDCTI4z7XXs7prqCtkenQrHf/LOgFe91VY3qB80kyxVe+7R\nxxta\r\n=Eoq3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDV9NlY+c1PskqF5ERao/xAhQbqxTHm66hHbpqO0PbGQwIgW8ixZLKRuX3DNXPDqDOpWC6YmwSRVlDunZMrmuwxqos="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604478197-95ff28f3.0_1604478340997_0.8236742332415803"},"_hasShrinkwrap":false},"2.27.1-next-1604482505-704474a9.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604482505-704474a9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604482505-704474a9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604482505-704474a9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ncFKuhz8luLYnWqNPJIvom+d55JCWiX3uWRtJiNFlz0bt9S6v2N4AH3Pp0xBEEqcG9S7DwTEBihCV8+p2xoVUg==","shasum":"6b0e2127a87df7e61833f0e0173a56646ddc2c38","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604482505-704474a9.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfonZkCRA9TVsSAnZWagAAqq8QAIBzm8rI0vxz3lVq0XmG\nVN5lzNTvw3EfKoLGaYci1W1yTvSyzqOFdV6vZXeAKPng0xohk+PMumfrTXHx\n5eiwwgTNyZoKgnsWuCXiegtybBMaOj6qDuo0svgObCJ6yISKCqTj5EWKS/Pm\n1IgZA9mOcSd0JU6fteCpkopYiBx42xWZDZNG9PJGymrkOq5H8kA+mDDpI9GR\nvVTXJXkGrMltN4ArOoukPw+eMExAmkjCXdErtx9Ey/igUvwsALhrLP4r1nBL\nEJ/gMSdtICaa3N5JFhe9JdijW337gq2FHvhFSI91+agKkTjrZHC+BqMotJJa\nabUOF0Cvi6Yafui5S4f+r83V5k2RmUTXiCGdCsSdTxREPDKoyH31EzDo3lKm\nPlXDccI35ohLOMuakNmxIzzMgQdail77fI0CgNdMOWazoyFdS3j8WtsZX+qs\n+XqbTqxVGo5PDAxZSYCVjTgHEU4cE2QTktoQ8rGql5dPM2Pu1KcJg/IS8zJ+\nFd1IU3UG7nGSOXygqAstGWJFhoU/k8kuhy62LkTUvg9fHjcDQECy9IZ2EWyK\nDMYU3QBmvnprp3TLLS9vad8ph/uXTTNEiV8LXI2/iVgfm+ppglFkrEUq9ztz\nQ7/9V22vLDFeeD+KPvBmJM4hiYFyaHfTZMj3qv1gh5dV0gzX2WM8vLwmPygQ\nEEPt\r\n=NLEg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBHoCOsf45Ck5+mrPSWvpqD5k2j6uOP4O1ECu8vR8oeYAiEA3JC6s5FPgURFuN1s0DuFk+pSKRu3PbVHe7Urn+tUp0Q="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604482505-704474a9.0_1604482659753_0.20863695143926142"},"_hasShrinkwrap":false},"2.27.1-next-1604487185-95ff28f3.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604487185-95ff28f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604487185-95ff28f3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604487185-95ff28f3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-SjMK0+q3JHg0yi02lmjSiGjQKaTqCkw7K36KSgc+P5IQSCdotPhZOsToAUiN/QyBbDEDA+ta2HED7Q6900gGRg==","shasum":"ff6a1142d2da416cbff7770b8b9ad16c5daffc2f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604487185-95ff28f3.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfooioCRA9TVsSAnZWagAAcVEQAJiPridu8ZAouIvkWDuZ\nQLlQ4hNAcfF3mkYYg8b0nOtJ4LALl/z7lpOAaa+ogUWMfTq9snQxXzqvwFwG\nWTd1uTzPrZiq/Y3oAEzlxYwfSaWuobJvea6DWkeel/BtYGulq3DZGS0Qio+q\n/MnLEtZOpa/nDsad+D9nTDQ0K61c5+pK3LwpOaLza8Ge99XiqaTrXLyM+vg6\nXhbYuhEu3unDRKpUxbH43oYY9thMkt3tVNzYyh38d/JjmrhB1skbI7BmVIJW\nxpyCKHZkoZg6dde9NUeSjY7ucccXNSK+OxYat9LxPgGoY3Vgzd4oGVqhjTL7\nkT0Jrc/jqIhkOwmNVPBOCcMewh6z2mnKPPCbSweamta96YoxDz6FRiLNOg0s\nFG1wszUzYG5b2tuzrnKxxh4X/mc0FuRERaKbnNOdqBrRJsB0R1hBQXwl26xK\nhqNSByYkda61v00/mVbUIY2jqplEmE+ma/0j+DkZau3dBRH0lm8BHbcOE53H\nQRNnlL4lxizNNAyIlRcwFHJsk7gB9AB8wtTWNjaKnE8WA7ekitPOowTz3uK7\ncepi4ubX4ATEpEzvB8XAmAoV+iiMmN0ALdlNfFFy293MwKAO87UyVZRzltmR\nXBcK+EY/8q7IUtu375nCTxwCf5ZqDdvQK0lWsQ5HIH6FakMxmruYQRBa6f2u\nxmpK\r\n=erCS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGQok2JEC09lHQx1tj36F36YdLZQE3r/yYO8NSL7waUwIgZtoUFFbfmFZpRJ1y+cc7eKNl9cB1CSenY0LmMtDOh5w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604487185-95ff28f3.0_1604487336387_0.3364188158720762"},"_hasShrinkwrap":false},"2.27.1-next-1604487287-3750cc8a.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604487287-3750cc8a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604487287-3750cc8a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604487287-3750cc8a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lK5Y9o/bIrmk67JEyV3wGnn2m3ZI4EhUPbp9/M5z9nboZ7VkgzQXO5pfUb1Sm4IL757X4RlK0SHtt6F5KhXJDA==","shasum":"9c4380bb792d336fb5a85f0cab7ae0fd561afe6e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604487287-3750cc8a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfookACRA9TVsSAnZWagAAcVoP/RdWKLbelTBXWZvldFlp\nmCSS3c5BzKfu68WXDa0w+cPbCXWISQY8dmB/PowIrQ7WV/F57A8oGA+F/1zS\nLnhyxTrUrKMcO+yEquIBzUUdexXkP0/kR240vCfCHW03dUtP/2WfeSNBkwq8\nBWbHUUOfQLarrMhwdZLnY/rRG31BIS3ReaCRUSytQfCRl8+SagTFG5UKAHcK\nb7Wg7lhccs828BGMEPgt8+X7bc/wPVcYozLinxcM4to4+Ctt7nemHQrpsWwY\ns2sRFLIt+ox6md2e0eEZubztTnpGotWs/YuXhJdOsh/aCidwxEqoPHVAHwS1\nYAQTq9mdTYyxtTOgC51jYPoFv5w6lRHe3RROOsg2qt2mviGCYWfQFV7XADZ3\nWghoNYAPm/4FLLeIoTO0QqHvHOUw8EqdGect7bK+95F2dcSKmzt0RFdpSPOK\nY7hzRkpoLtJhAXzxNWKc2UQjVkrkA0oRgSnJZ2VCnEQaA3Xb2BUR1XE05pRY\nSqMoxFGJzXrDatA96scNTfE8loGULssNXe9l07HneP8nxdFn6pfWmTBIeMfb\nLF/EmsCNOV6o3fds7yB+XTjjxsPc2Ka20UEmPITZDGg2UvueIiIOXF8jY9P0\n5jU3usuK9YZEOhuaxO3YCA+f+D9C/5NElWw45lOkBOlEdUjpPx7vX+mxZTW8\nb4ka\r\n=1iFa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEcGXGod2/pFXjidQfYA5jHVAVJdos1gDoJ9UaS27qkvAiAd+m/eSlh+VjDlSleoGhGnbPdl5czNSf0OsswJAz8JKA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604487287-3750cc8a.0_1604487424067_0.7201383335191036"},"_hasShrinkwrap":false},"2.27.1-next-1604487504-bdf447e4.0":{"name":"@xdn/prefetch","version":"2.27.1-next-1604487504-bdf447e4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1-next-1604487504-bdf447e4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.1-next-1604487504-bdf447e4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2wgh6vcrEr61lZDTaxhGSrPhUqhqsJzNbaqAyh/KnpdPo3Hh8IX4sC9qxId87uwP1dAuBa2eFTP/DpOwk+2TyA==","shasum":"a8b03e6765dec141d8c81d1eb8da830fcbf48c2a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1-next-1604487504-bdf447e4.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoongCRA9TVsSAnZWagAAM2cP/38vDN/59Jy9tRC10wPR\nZY0di15Z5BfFI2U8sG9m66sXK6JPCo82DaUTiLm/nq0UgabDTtWurLqnonEn\n1fMaipMI1tyhq9uKJJCwHdX0JhQkwbvUj8dc1NlhCW1HY0Oid4SN4DjymJzg\nAsgCsEQ49eRlw8mcrzN1A0jnODqTUMrd1AP/fOzjL1xL2eEmbHTwEVN0CSj8\nHprZg3DyVZl5S+abZPfFa5bL48Zp46AiiMn59BXnv5tMUZLMJyKtYID5FLbp\nOzg7q5jt4/t0OrnYb9ucP+iqFClQLFa/tEpWaWqyR4mvDS3y8R/q6RsclbrT\neC6UlEnVbcUAjM8z+YLHnQ/CA/Ir7tEzdxlB1q2XSY6st3Ef21iSIo5S0X6H\nJVv/sMSuwnFpjOJSdDA+jt6/OnA5x9+Ln058944TB0t/fZyoNM9ceoZU2g05\nG8CZ0Wl0RYTV68FcO43ip/FR0rurVqwYSTWEMIAoW7r0uO1CjVfs9j76hlmE\nrVU6Ky0PhQKtX3S2Qi18qrzHOuln+xKWtp5QdnGf8klQ4+D4k52vNoux2c/L\n6oZj7AB+OYWZGpptSpNRelad6jettCoxMaSn3sjxqw+Ye6MhaUFKApMsRgGk\nOWc4VTocK0nGo/cq1U99++c0IzZh1LEbGqvzZYa70LxjqlXXM3SWv6SGXNzZ\nDi2x\r\n=pL3x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBIi6nkP6Seydq/vZju8ixlleRi9KsLXFjlhfif+yJdQIgTkB07psf7TtYums1xKdLqL/xJlJl1vZ7XhDKfrw+Erc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1-next-1604487504-bdf447e4.0_1604487647983_0.7192181439309797"},"_hasShrinkwrap":false},"2.27.2-next-1604487530-baf27c1a.0":{"name":"@xdn/prefetch","version":"2.27.2-next-1604487530-baf27c1a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.2-next-1604487530-baf27c1a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.2-next-1604487530-baf27c1a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Iq0oP8jOqriX2wzf4LOR0Rezxxdv7wR4328ASbPIeAwARnW7tcaR50GmpqUDLmoCmaQwytx+8YFpMDteBUehGQ==","shasum":"253634d6b7d4a2fd8f9545d8a94dca7efa2f2634","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.2-next-1604487530-baf27c1a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoon5CRA9TVsSAnZWagAAvQsQAI25S3hFK+HJb6wWS4AF\n5vEqivZrXY77ErNHNEWdxz9272yDkmu2S8pSk1PoLGR7wqevHlGGjZBHWFll\n0ARjNGaHYqjvIc2d0p7B5M1RuHAOpo6qrxXwddmcRHFraq6TjjvUrYjtQ3aD\nEXjDBJ2As/90tNudgDFLWZoDpCxRBpJ8S/5ThkSYV220VA3fUwdrCy+zGyqp\nbmbtHZJVASVMBazErplUh5KBDHkueslZhEIKgFtyUf8oyqSkVpiFk7xZrxU0\nccEioIcOYhXzJVlsdJZNNEV6bKa8m8+pU2Fh5wuqfN3FizohJ4zoNKlFs0W/\nc3L1/u53vtPnYntpownWuBc/KZGdtCG7D+YL4NAE9MZDO0TQ2AvDpofacZef\nHsmZbFgc7He3M0/vtJjbY+tPg9LvgIpCRi0g5ppwXjLlhe2hwGlRUSte8sCS\neeDqBCVJ0+P8QcXh/vOTUJqO8W06cKzaZ+hXfWKtM9S0r0D835bnEWgBjdE4\nLmeOgXxZAa+J837JaGf52qi9NUL6KgfghtBiC34bYl7SKV2xNUFyp2royzp0\nTcGiCfd9rtftM61q+b+XsN5ycLd2e6/R6ZWxC4a3Ya2sdlvEKlfV3D00QVMv\nW+pbzqYQLM24lfuC3rYeFvL2hvnMrMMeeygA40waZiV+mkkoXSpzSSuhYLi3\n/YpU\r\n=+qtD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH7yMtOjJTwMlGiQLQqfuQpd6OhPVlD3tb/HEVrNrlTLAiAKd8/8JE+mo9w/RVF1A11RNkDP7RxxUEY1sYpjdx51mQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.2-next-1604487530-baf27c1a.0_1604487672543_0.763963942839156"},"_hasShrinkwrap":false},"2.27.2-next-1604488934-2681ebec.0":{"name":"@xdn/prefetch","version":"2.27.2-next-1604488934-2681ebec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.2-next-1604488934-2681ebec.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.2-next-1604488934-2681ebec.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-f/uXDlZUjiYLamIViK2y6XvEvEZldgi+W47WFzX6WluS1bwK+rrcS7pP1HGOTaKfUBWmKmmPNpAZxuZUbP0kjA==","shasum":"863df3ba082d705e34d4b78462f6a0cef3ec8ac9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.2-next-1604488934-2681ebec.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoo95CRA9TVsSAnZWagAAgUAP+gOs3G6DEDZdmCozdAjL\nUdazxjpFC/YKjLGveJpzSwefQwJcjMFiOfeDQ7Lnsft62//pjCRrhVV7D5QS\n5Q4cVgXUh3c13MR50jcKoe6ZMU/xCYTmt5twEyJu1uEOVYZD8DPneEFf2sBO\nDej0he+uJD0YinoIHB5sfc4jgNJzD/13/r7vHpqYpdQvvMdQz3G5LdScQWo7\nSzFFAv8EDYSO2/IS4vZ7OFKVNJTzLV4mmCfabIbXARBUkFKKDqc9lHXT4XkZ\n1v6TDzp3KMgoI+Lua4JsiFch9oFdh+fsDaoax63oUgSH80/wbBhD8EZacrtO\nmCjuWkq6ewPPCKwejujukJAqKnuvpdvVQdXcYR5TWkXHdFF6aL4yZ5V5YDlJ\nJFl+nj55y92K/TaRM8Ub//phnQGTVU23kTFAGiLd4vVYRDKIffN8RlkIqq8f\nfwC99VFhKKJd/xSR979EJaXStVIYjKDWHBxU+XEdVn3fMF1uR+c9vBBO1uW8\nicu0DwrgVPRzbmB5q66jlhjHwAk/WIOqbWDtkF51Itsi/gNm3YZOWyF3EEVa\nCSZITU7h33YAf2PwByjfLcmtLfgUXFzpyp+6mgGXJ0ja3898dwaClv2LECW6\ncB7tEL6oiFqzU2GhMpUpkHVP2QSPd5NLSYl/EUUNZuxBA68id/BWP9zpdn6/\npOx0\r\n=YAoT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGofOSX2ZIlXuSXan2gdqhxQ5eyGWsBwZkkaKM9UNFFwAiEAidu6+wzKs+lHOt4BLqiXQaNQCNW+h3ly8IF9a5iV67g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.2-next-1604488934-2681ebec.0_1604489080958_0.07889574765256158"},"_hasShrinkwrap":false},"2.27.1":{"name":"@xdn/prefetch","version":"2.27.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.27.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-W5EWaQ1MWgatFYr5xTCTACY8MSoIgkmo09OwNmgiP91yBPxJHyEWGHZIZ95W2oatmBBmQB3LkWOkLGN2L49yhA==","shasum":"694b1c389c8943bae16268f25b6b2103d5d9c0c2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.1.tgz","fileCount":58,"unpackedSize":134987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfopBcCRA9TVsSAnZWagAAf34QAImzjv5tOgcfIyHHf+bk\neZwCoOqQV4wCev1Hw9/ZRDxf8iv90SNeSxidLAlyby9XSj3hioKCyWrvsidX\nhE14CMvxi2HXeXUKkm+/ZFAaAJMipO7czvaD2vgOgrS/nyAQrd4zmmWkVZcj\nryjOrC1Js5HYwQhz4MvW4Czg0XC3IHR7ASXl5YpCcmJb2RFvnj3S2ZcWr9x7\nfJoCGixERshqzuVtl8+LqNft7Y6dnmqEKHsT0//O750ukE9IrPNMVwbi9d18\niPPkufQqQ4vIfnfgjgfJF1s0FDkhH1Xg2q/K1HdyU1rcVLZlDYDbNBQpfq1n\niq5SrOnTVzBqCEaoLTiDlY/OD5NL4VE2nWjI/TQP5UIKYcK64+M2sn4SNB+N\n7tiQWpfXmbltUkLaua2bdeznYWK2Dy9jncksa3O01A2jNearsWLQhF1ldtYq\nj+yKCWnqpV6Om9zOXyT0QUBQkmho7Vu1zIQM/ar/KXTiCvCQHXpvih6IYMHG\nfeNWcHHBrvLADKZ9FxMneEWFVFHcjeH4/lpyxSY0p2wTxVdUBB7HeujDWABj\nxBawWVZXUFxzOSU4TQiHl4maJoes5y8nRd8eS1dsOz+5hV7aPdykNr08bbXT\nhZ2VslAerlYhin+g7dxnT02bQ2/BTqDmQcTjim+vMNknb7cupmWK+t3fkpu5\n0CGN\r\n=uRqQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFfZCF3tFNu4J1Q11cO58SWj4lyqEwlneGDxBWy5eDCIAiAXSdoumF9WIJ2BjokPeyaIlNSZYafR6eKZ06iuxmso9A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.1_1604489308151_0.4507583111052502"},"_hasShrinkwrap":false},"2.27.2-next-1604489592-859547f2.0":{"name":"@xdn/prefetch","version":"2.27.2-next-1604489592-859547f2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.2-next-1604489592-859547f2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.2-next-1604489592-859547f2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-G2RYLhKG5tnCZvKWsiLlyMPd59dPx+kuaGGiVCrG5B5Vl3qiCxJ9YcOHfiSLUWqr8IfEot5WAa5QF9K58TQpRg==","shasum":"492c2c9b1c78bb63de6a7db6723a336a48954af5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.2-next-1604489592-859547f2.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfopIHCRA9TVsSAnZWagAALuwP/1LpQVto+p1iXuqo/U40\ncXsaC1jG/nvIx6yF/BeOikBqNaGXk2uf654h6bDGLJsPMxVJq8Yelg+mtAAk\ntgjEiYWrL7ptKF43AjwwBe8/Lp2dGQEq05DiAQKH/eUOwMSR9GXH9quoJ+Dw\nVE3ksSGSZevkqN9kR3Dq9DDuPKS14a2eNaHjqefpb5cenNR6e68RTTwP7Fgs\nnhljbQWYCOAAlwXwMgs21NU+c/6h2kpv4lp7PnY2zNuZG6dRCWUYmp0zAwDL\nU8JyD4S8XejjF4lNQ/In/fS0m5DxjKRLaDkvUHvEhkrKOhv6Qqwykk8zaQx8\nqDbCxBBtfiLzdmdSad+dvh85aSKmKir6LDeDVeQSqTYnMfAD2TW1WeAz/ZZG\nmav8+73kjWL6VwuRpRwyMwVaLcIWEQHjrPf9HFg2GwHFOCHZS/TFgtnCfyBJ\nPGDGKexF9srq8PjbZfEG258R/8HQUO6N1rVLfDxfAs5R/FTYQNwbbM6DIUb9\nBtk0XUo+JZAd3+N6fRJhoPltGlqoI8sjkH10kzj/e29OkEHJNcS6F3pG2Prr\nW3I72Kwy+8GouoVUewVdSqy2BYUtY0tbraBeArZFtZtlCARwI9WsO9FfNIRa\nIAHZcjcqBh4pCQJisRjIPcicaFX6I7gfdFYy41mzzm1KHkvZkxTNXTx3BnNq\n6Dp+\r\n=k1Ad\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+R3DjuxY7ZSOhDZWuQE5m11d+f0UDCH5jqf7rlLzxbAiAUHLyz9sxOyOiiAQpw+kPY2DkKQiV6Fyhz6jKucJOPKg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.2-next-1604489592-859547f2.0_1604489734878_0.5738073994698822"},"_hasShrinkwrap":false},"2.27.3-next-1604489652-399b23ed.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604489652-399b23ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604489652-399b23ed.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604489652-399b23ed.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+RtQ3DQSgm6VuOJhHyXViKuOKep+OH4/X3pJYjbIFhQqfJ7GEKC8UUGe3UDIpcql6IUrUwubpHNEU9lXdTR+VQ==","shasum":"65d2bd8b4064e0ec298cb3124d3eddbfcbebc7f5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604489652-399b23ed.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfopJBCRA9TVsSAnZWagAAlDQP/Rk0L+rqTwXUAvQLAmTF\ncd3MKsa/JflX0jF3ObWR93ctJ5/baYActsc0NTGVpMz/7Q8CvV7PRF5LrjqI\nZLfa07SRWzOT+RWMogaRO0ickmJvWF74RqhI3sVdC5wUNuQh4fWRzVVahbEs\nah6z3mrDF6mD4gUNXlNFSdL8g4R0ganr/CLjPdhWraOufcixNrX+JXPBQYk9\nS59XYSQml3x5m+Q9MBU5QhQ747gh1BrQG3zXhXxNFgJFZvmTV1wUH2a7dpzi\neUtzRW3wj2eDCwfJavuFHyEg2S9hbFHyMonhJ+siCHgwvTMiwX4OHP/sTYbD\nn8RRKrCtLT9vBR+iBIa++2i96Cu7cJbtm2/qf7T3/rMBuAa8eMMm/Qd9qP6q\nrllHYaWOoMvszjNW8AbUbKop+ZHOwvetiHbe+j5ykK7D+JJjuOP47bQiJbhX\nX9JiOqFOVV2VIHQqc4jcJtb2DRhnxN3nLS0SDxDKTT/ccbvliDwOCzYjhqwc\nvKLGvgdV9QXMFBUAN4ZeVtP0X/DORkbVmt4VUeUEHT0CkAE8q0Z10cXI9Th3\n3xj7Wu4yXh5S05feKztmdfvIeBMyPzPRka3KiONXHzsUCndBFWCwef6Gx7GO\n3O+8LTgIg54337TSHkzt8ljS2rHIUynD4NI9mBc7OdFQ7W/j4+kFhnfvvK84\nITm4\r\n=9h3m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDy97c3FzpaCT61c8M91ceu1H4V8Ua4c3phM2fsAuJXVgIgOXQqHRKKlJyg5MtOc9FrR4N0uFplQsrRujwlD7vL4Ss="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604489652-399b23ed.0_1604489792625_0.17477558683452576"},"_hasShrinkwrap":false},"2.27.3-next-1604491510-399b23ed.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604491510-399b23ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604491510-399b23ed.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604491510-399b23ed.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gF4eT2Y52araWAPnFnsbuVw/nExx1/YbSuqOZk/VdZqsXsA7x8YENrGIQSKFQSvZ8lrIGHAjNEQsi51x/82mqw==","shasum":"cef86f2ba3d9c75067c262a16136d2dfe21ae40d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604491510-399b23ed.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfopmOCRA9TVsSAnZWagAATPYQAIb5qNGOewvgucsrGdwb\n9+JR/hU/6mi929F/zou9Q7Et4JW70X5TFoeqz5auqhWNomGPWT5uqq/eWXp2\nrh+r+XmsAGetfnZjLspUOGItGGBY1JpTNRWTTWR/1ph57aWkFiUvxUNjAy7C\nVvv9Dqbd0Xg2Hycpm3+uFI9FMtMlMnTNGdlCARi7+32GF1Q5WzjPZJwoz/Zz\n6UMB8ARjpBAcD70JJ5xW6yAvzonNBtAR8bLmpylqolxEfzmKGYCVSA4CzpJr\nSCe4LEY8v14R50R4u6PBaTDLjbybLjfzE4Cj305qy+xXpt0SMMjocNG1a60K\norUFaQ5SjJdCGcGDgQgTvMs1tYqQMAQv3NHDuVYytLpxQPBTmQpk9C7XNssR\nckwIgm/URA6HIb528O03OcAnXVcS2mNdCEvQXWsKfizYxNu1zEvKzjEYXhPc\nKrP1K9J/sWeZHyCb7sTNoZNVJt1kKQWF15+kTnn/oAN6mwixwMKGn8h9po5T\nYbt3pLZa9gka41RtjQ6umhhSeJzdIAfyezIUXO7EqS9gOnHSc97X374VGp6t\nWak8iouHXiwDKm4yL06TQXch7SAaAKQ+uEy5eky+QBButeZuAlSwKhSvykzz\nKm7Gzbqi8HCWfUWnu8juXzer43j2Xjtu/KRkL0j943Rk8jEQEN8gr/cPftm0\nf3P7\r\n=Mhkg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQ5F87pzjXdQGfL2pWwfKO5Fo4vYQAjfsVVOtfb76G3AiEAgxLmcaJJYfxTnccpPjod9qh52lhq4Ud0dRyDXpoY1jM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604491510-399b23ed.0_1604491661786_0.5919172944572244"},"_hasShrinkwrap":false},"2.27.2":{"name":"@xdn/prefetch","version":"2.27.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.27.2","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cHqhLK3QfW2dbZb+jfU4bcjcq+DdslsFFo8wWPt+8KoLmbC606EwN7psmiNNm2HHa2u2Ua/6Cniji1YgWdplLw==","shasum":"7af43c9fcdb3ce24a4a116412815b2befb26775a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.2.tgz","fileCount":58,"unpackedSize":134987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfopnFCRA9TVsSAnZWagAALZUQAJ45SYAYQUMNm6WkL0+N\nb3oaoqaXNgLTStK/qH7ImBmojHIE0k3cUyC6T4aeEDBqqjeX64gZr6xriZKw\nr/k3RDaHUbnUVumAJfzGOKWMF/DFSyvNadXZveIS8grgd5FZTiI7F0L8oRVq\nGQ3Aw6g+QGdqiHG4Rae2lHX4adFH02zQE9rhJ822kNz2/2Yz7RVoVMs3tGib\nr4KWmv43Zr4FyfDb6ZResqsDH7gMb4SpPCn5l8PiNMhw87hdMZOIX1ale8+/\nYvLN4oFjO7ojR/iV9ZmKDQYg4919zdP/NbuuWM7Cymk/vnkX4C852cozvkK0\nuaSldOHPOoS6QGxhKTwsTgFZMRFDih42JGJVxpvyspMA1T3+TEz3jRNrJprn\nWqon5DgOlDEg4nE/sphaIb9gO6/KAt+seI6Vsg5QTQxlMebW9CTA1tU4pUkg\nw2s6LKyQHesqJHehT4/ZwkBjWylbCprNTCu1lQTyZyy2xe1GZN209B2eR1Lg\n7uG8D76/uG6RT0wUO79My/UnkD4ytoUhRq/2Wpcu4MnwMxusj7uV9qLydGHq\nAUcczjpakpQ1VIJA/Z8V+jPRTavCaptXzznIy6KewlEa6HGG4LZXjWSONnOK\ntx7z5/HsjboE0mqJcWSH3uEBLeknKzZGyKj/Aj0VeM9v9q/SriYBx+ElDLAu\nJB2N\r\n=qi72\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICHfeDas4II6wGbBbDK7NAXryjJmvRhG74rdMFc57RytAiAVYY+OZH65Iji7AooDTvCODuHEdbtkJ1UmcgO1HcYleQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.2_1604491717203_0.14996324026488317"},"_hasShrinkwrap":false},"2.27.3-next-1604492797-48071952.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604492797-48071952.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604492797-48071952.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604492797-48071952.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-A6elfIiyS9KITupTErX0R3GzWUWAAdDEhi4Pl3xtHRnYKd7N5eXI/BB7QCj8K+OIa6TRDzWB2EDIwDeb66vgbg==","shasum":"3091a57b588c67a61c67d61452fa9593da5866eb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604492797-48071952.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfop6PCRA9TVsSAnZWagAAMEkQAIEwyT0fslxR91nVZK6n\ndkapUh+dSE5pwi01srx4d1iHAD7JFhjATz96sHF6o6lSNlvesbGsTkdyfl3M\nTtEv7yTRJY34Dno0GvcFSzpNlUj6v40PO46zv2M177R9JTrXIJK98+Ege7b6\nUVjfZyrTS+zbsw6F5P+pdVdGyQBZ7FTZOlceQg2uq/t0+nRdQMfT3qMy3gTo\nj6Pw6zFZrGrCFXABNrBSS7w+OXh6igHuNRR18LRF5ZGKPytmOzN2q9MBS7Nd\nhW4o319e7fMI7t6wFItnJnQhqvfBrVqr8kEiuzIaMfpCo6kKmxsOTivYEKs5\nhvScxSJ92n5s0UoNsMS6uAtVMNt9K2qp/P3af2AkiJQi0o33cEqzuBJUzhhZ\neuzNCUNoMwFK7zt9y00+kj3yGUdJgnuN8K8mCptGaXDePBuSG9TrflPWo27e\nymkMLbma8s21xz7gqhh1uhG9ZYOuMtj92HrjqJM2jqiPz9Q+88a2jBmywP4V\n92bqV2w/Ibb4ouyCC7gO1vEbV+dV8eYM/98IAT0as72KPdv/6WucJvbvf/JR\nvI6054D5watNVqiyYZCDmq83EbLXQSbjkXgACz/SfWOtFBWj+jnxEeoEqcID\ndLnzHfwjATNb+urW+2n3LLdA5mdtwX2PBPZnr0g9meVKEHV/Tl2JXj0lpcw+\nv0A2\r\n=kC95\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBxQSpz0iLlnzJVsblLd4w7Z2HXLHv3uHVtbaOShl71ZAiBgCuorsaFo6NCcNXqonjkKbdp3fpttEXbPsAKf9xgYQQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604492797-48071952.0_1604492943075_0.029510455968365656"},"_hasShrinkwrap":false},"2.27.3-next-1604495174-ce8b86e6.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604495174-ce8b86e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604495174-ce8b86e6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604495174-ce8b86e6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZxhN3kGL1KvN94mIxR/ZPUxmHToriA3z7rxPKJlv/aJvbQW2rClcRLhNts4cGVL36l5qPTP/5gb7wfhoFKsB8Q==","shasum":"6678e4d10ede324e23429fcb87420ba182891360","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604495174-ce8b86e6.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoqfXCRA9TVsSAnZWagAAdw0P/iK3oaPJQIEIXYvEurZG\ne19gLtYhn6J9EcAoxquW486wlsBNdUJRnxXxrXkS0nxRmvTxt7KO/3upK6o6\npp0gLasgFyWEbVTlGV+34FZAk+vGoJqczVtvOKs2ph8jFkX9ZFua26WjsDdb\nwoMPVE0zdrdXFfuiL3h0ADXCG7FwT6iBpzbbPW+5F08VE2fC+W8KCxAaWUKt\naARxxkH7ffoGVRWXrxXdKDMhEEuSJVDwMwA835R8Jpu7CDGtfXVAKPmFvGoQ\n0DnUrM0uONWChmDp3e0NDf0ybhCJ+lSm8mMvnt0DCc9UXP2W0KOdMETeeuIG\nzKcHr35o2Wcg2hmRu/KppiowW4oq6T3VA78kEETUa2Rztn4Ar1h3ZT/J+HPT\nkp0w52BA33jymXeK3mLBw0Wow9TVMdNh3XQkoi/eSr1HJa2sW9JiJgAK7gEW\n6rM0ezHDI8RPy9ituhJBG+hbhUBdV0rWtqeBCHUgqjKbokjYdUnuoKUOJOyE\ngWYBsbjGPIYbg+4wgF5a75wZEOkMVeNBUZikctUJDiL3OZOwDjRd7+lzBxXe\n2/N2z03mvgpzX9aoWGFtjtwa6xkC8cemg/WiBszNz+pAexboND+OVj9Be3H+\nd8lJVg1+N36cqkux6Q6i+0Fc9FiBKYs9l17KNKIMcd6LIk++YqkFrrOI3t2/\nTLwT\r\n=h5da\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEPfQ1JM3S19YlI3Fsaf6/cPpQIUwQU3Hwx6UxCP4t8+AiEA/SIXpApeGix5fWRk2Y6SOaJohcBuhp0z+iNsQYNamrk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604495174-ce8b86e6.0_1604495318565_0.6629729577968455"},"_hasShrinkwrap":false},"2.27.3-next-1604495297-78a7ffd2.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604495297-78a7ffd2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604495297-78a7ffd2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604495297-78a7ffd2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aB/elry4bK1GXW/upCeKz2bvmlc/B48F+SlywYGHro6XPLfxyn9b3j1jZliyc02r1clGjDuwRW4RqTYs1BZQcg==","shasum":"13840ab0889289067ff158aeef733f605871f812","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604495297-78a7ffd2.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoqhRCRA9TVsSAnZWagAA3yAP/RqpVwTZEA+A7sENhoxa\n7hUa0Z/cQl8L+yyMs61NaIseBUm7MgCxtTT55O532Vad9fq2AEoo6vsrs0bF\nF0eNumynnUOkGjqUy1FyNoUi1ZlzlL/EJ2mKeBBPpeFgNZQfC/7syoUeIyVQ\n8Weu5rxTKFIcY/l0N73rAMdPHerTy4yxWQnEoAbQ5ZqX9j0zkVFvlOuuQV4v\nDo5xPDSRonfnp8vUOfNiJSamvnTT4YL3VMZDlv34wolkTJUzUOrvptJwGL37\npLBwxj7ePv8Z7QpXoU4gfnO/9+o/3VbUSHjYyjaUt7JCxm8cvpnqETTT26iK\nVXxnYKRI/entctEhndAsH/e6AdzutWzZtjLg+zU5AU6r5t9VGy50AH1Kj47S\nKU6B472A7mTp10DORXGadOeDQ5UZjvqzjWNnHX3LXaZlQoJq9pn97V4gbX3j\nEaObGnTpEMtcRthgKv0WX5aHW1M5ohZ9Cj9OjmPmK05JafHk58PKtu5ETev6\nlNRd7nfJG1767Od1u7lsQ/DqgvY5Z9gaVrQroKOxx4b0VIkNnpObvhukdXit\n/VgTI/R/sX5z6+W2DOaDCdaImk4zCcUhezW4udKYFCg3JcflePwghhTxHEFM\n399Z4bz7koH4NqGuDyvgGZeP74zddqOxVvcKHj0gA+zIKb8o3+33milAPzdu\nAkJ/\r\n=TG5V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDipVvEJkWAibx21FGftNV+3Tu9iK6XBjY9a8/rpcW7PAIhALC3cAp5VFGyY3dO4LXgl6vt46KBE8GYBQ3p0vDdok8y"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604495297-78a7ffd2.0_1604495440471_0.6002156932184035"},"_hasShrinkwrap":false},"2.27.3-next-1604496074-4c1b21fa.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604496074-4c1b21fa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604496074-4c1b21fa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604496074-4c1b21fa.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nYjO0LEzW3h3vUDw0zgGji2LnyuA0mB2qRSb32cSj8Ay9gcfzH/GotJmhRC4HALQOS2KlTUMAaaJWLokBRc2DQ==","shasum":"14336b7ea11a31c0784f5b0c17c57dfa8e6f1184","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604496074-4c1b21fa.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoqtVCRA9TVsSAnZWagAA7rsQAJYNQuoftatUZQNykXi7\nEIhqNXC9UOTdgi/dDCjzVRTYdGwabMowqNmoff0msajX9AigDGXBZSSgAxXg\nW0OsUVU+TSUSrvjWR+v5WwZHA9i5v/cf1xdpHMZUUCB9YYy6Suj3HF3eD654\nA8GOuRHh6iHvJT8Ad58xz+AZFRPNSrZ2zB3jWJkYvjcA8bzwZUVUfA4kGUWe\nZsystxGLmoP5/xI1XpiXQozJn4bMAVfwNPRTpZDZFzPnU8C8pw4QI7kijTCw\nCkMuIAxsM3iO0a5J0hS2zgUth1NLhATQ8cvze5AUk1+iLJ4Y/prYqLxlR1xa\nSbXC3qokDyv4ngYvhyn3eh0Rli0L1SaiFgIzEeDs4yWAMMmKBIod5JxS9RRu\nyWI7XzPHTR1nOh2Yt1Rg2bfqFP4KiJqZflY75bPpCqPysNWk1bXs4sGHWdCQ\n1Z2AYCqaCZvke/o9YyXM0rS3F8F6jPTCqd8dr6YuDnaWTl+8xYxwzYa4a241\nk9mXzZe58eHZfYfsiVxSNGr3Y4fj/rAfH7dYzoMLz3BfFIjPg90xn7veTPee\nsMSLxl+mgNsIDzVrqnFqXBupWWphpLtqIhBQPrEctNt27sNelbIG24wLP1/M\niiQo+VUClaBPFSiVEiz+DVPspC6l/kwYLkfq4Yzz27MET0BPqfjamQOUyufQ\nK57X\r\n=oxbz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHbV17d4ft6Wf4S8bKr7Xmg7XXpKoRRq0MlH3RHGPie6AiEAzTgiN4j3LmFKn7wIEilgIb4MUdmB2VN6IEQIX8fME+c="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604496074-4c1b21fa.0_1604496212566_0.7544507072877709"},"_hasShrinkwrap":false},"2.27.3-next-1604496189-27e3c069.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604496189-27e3c069.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604496189-27e3c069.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604496189-27e3c069.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-sOhN5/ouRqUPxQ1P2RGJ3893YkIHCOonI11Omr23Gy02IyYf7rfyEQy8z2q+hzEwRkmDeW6snTySE556ZI1sCQ==","shasum":"199c14f82985f9eb79363d424f0ed781507fc944","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604496189-27e3c069.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoqu+CRA9TVsSAnZWagAA704P/3PUHy8G/jmkVmsfkjB+\ne+0XzUXWGWNcs0sMeATU5KVCawRsGfq9Uv/vYi73dFiS9c6Nvq/nLDXNWJqj\nug7KFfNPiXp0uBKwY8qFOWgkKB1vLPA+aHJoemm72mGDtBMBihPT78V9EU+A\ncncU5f+LsR9mtZFQvzYLM/P/a60vcYw9erq51UQvy9sA/oGVAUFuva9+ZGZL\naT78uL9G/3HDkotlw3VOzJ4SoLzOSysnwtD8HeuShGKeLeWZwfxrcJANwige\nYzaYeqpVJdxO8NLL1hl6Pec0fLasmYpmO4drc/B8jf2djsdECfZOqloF+chB\nfhGWRYyzCOlATf48TbhaXGw5EPVmVinlcy+geOKOTQl4uBiob844WiCHfV+J\ngDATuRMX6RB9subDLuOMf6JRVY9XQfebrl1ws2quSLBw93mKms6yTAI4og3w\n96ePUTJFniiEsXBWsiEn9x9X9y5i3Ubg9d4CHmuWtrgZtn2W1DY/J86xDb2t\n8d4FsyngoEcEUTMc+qrdw4HoHjAyVJlfC45/LahX5SIaTZi8LvLMVsIn/xW4\now6PfvTIQYUwpraD/zvYQCvWjLtuVjnr3T64+ZM14bUiWnHgPc1uADhFPQfG\nVIH56/yzKuqzWTfLOb4XAEHiN8R+CxD14pKyZZuzdIRjEx4nN8nxsFQk33Xt\ngRT3\r\n=cPtu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDicYoeNNyHN3TYtDUEfwxuortllaGX5Sqt+exUHY6BQIgVA+S45w9RDmWaVqZxevib4Cc/tsrz6fPJ7vibWJgFj0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604496189-27e3c069.0_1604496317444_0.16897065680693402"},"_hasShrinkwrap":false},"2.27.3-next-1604496624-b977716a.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604496624-b977716a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604496624-b977716a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604496624-b977716a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-//d8z0jIHfy3evtEqI66wHPCLFbpwUihIlyxkYfezUzthtC7l8pM3FFOEg9/Plw/32xf9wUOm6Y8JABhtfUKKQ==","shasum":"8766c0bac80390c2db38beb75c6a866e76e2e59f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604496624-b977716a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoq1+CRA9TVsSAnZWagAAdLIP/3y0lcQ0TxT6wvIBZKMq\n18TDDrS1jE2lH/3qU0uhGcG4NAeNFsGjeT4DzMv1mz6dl/uEGwpNCGePfKdO\nI7NJB9yKrUH3zh/x0WqAK3qXrRsZGgeoQDHI4wqWxjYL9WBrvYaNriGAvJml\nPXgp1UFrHahFm61gdD3QM5uz1nD9UnOHZShtLVH+tCVtRZzJ4aLg50k5QbMo\nEWX4fTEMk/OHDq2mLjizXTf4S8oiA1C1poQ0EDEGAIymJXH8mk/upkLybAE7\nJ9/VAOXvvSwTalIReLlIZHlONQ9yO12buJK53+Bp9wvbnRVB4bMZD/pB4r0I\ntR0DlDCs00S+1sFMJmYTmZ6adltVR7Lxp7dcz4vWv1Y/BxRbDB+E0c1uCsgg\nc9UdK2+se1afjx6B5rPcs9Skhu/1cqagME+uy/p+Ezf4XjIvA5p7QKC+rMWz\nryoPCKxqDWMfsejzYfOtrxw/GuwJRbul+a3pvKwC4VNeDl8ys1c2EwM9Lqrh\nxv+lkjqYlgEwG7cXZJQF3Vw5dadnn9Au9lZ5rtfDmc2aQ2iq8FmsXPMb0Bi1\nLidlOh0aoUZvdOO/jXAyfCil5x/ZrOlEa8TV5/TKJGEGToeVENhy1f8t6N2/\nI1xsQPiZ4yuLtc/gtlGPPxhcnjlFpB1lgOs+c+sfzUpl/gkq0OXvX6wP53w0\nnlQz\r\n=xWib\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDgqPT7ZXqM8LRVRZQRQqqFxgeOtSuNI2hJhRLcqbituAiEAp4ksVuNosfyHWCZ5QpIUs/QcLsXkk2SdETKpm3Hm5Ck="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604496624-b977716a.0_1604496766344_0.004698997457776466"},"_hasShrinkwrap":false},"2.27.3-next-1604500213-42d2fd9e.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604500213-42d2fd9e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604500213-42d2fd9e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604500213-42d2fd9e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jbRljQCtwtf3Qnbx2Kg3jZ3HWUzuTLVUn4QuJGF5Aq36M4qqAw/EB7fAQBn0Go5yloYw44jeACsVDr23u3lrtQ==","shasum":"5af07df688c536a3cd21a0ebf405c25110da956a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604500213-42d2fd9e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfort/CRA9TVsSAnZWagAA86YQAIpoS8UShQPJa3Yfdavb\nYLKTTUZDqADvvY0KeT49/UWyavTuBN97NKQiji1A7/+h4NoZa7LutxrQjMsI\ny7Ze9YWUJeKT0SWLd2mqGOKuw1iY2gYlV5RWnYlgLi+/VanFTiFNcbgUoUNR\nugqINTQH5kJVRfUP8gfgENyOV0A1CcYc3j5whx/OoxToJ020H2yUMPEnAD1o\nqqBg2N6k16WI9p8AwaIRKn4NN8QPISEbHA/06K6y80KTKsBkaR0CCnl/ZAAC\n8TGnIzUWZBHMggh/cgtzrGN0YLKVK3tIa25YzJ7Mf1Ho5Qqi4idf8y6FXwfM\nIHvScC85XUAS+/Y88zd3NS2GVScXtwNzfDvDh67S0WnUXqBFiQU2lauVIxsR\nrBEBSpLduLAPToIVs1J4gRNwh31DTUepxkIv9+zXSxjepvHDrHVtXGlW0AKp\ngZTMw7Ve5FqZty/+/Bguzb2H1O2FPi25p2s7V7BS1+/rgIwdRyF9TQYzrE4j\nwV6eug+eztGxwTK1Q+3+dwwWJh7IlGcdky0B4mn5ci7TQuUbWu0oJ+uyXrDE\nUeRUhkNlQnepQqnzxF6zaSMgKch89vrWwgBDG1enzXfGjZEd7M+nQBkVx8g4\nJAMRGnR3fMsnK7F6AFrdzrIAPfAHGg5nOrHEsbBQblIi43yPx+GgsrHYyQ9U\nT4od\r\n=WTi/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHnKtCk5Jp6rXBzWoYzq8dGYOPl8t+56IjwH2B4Drwg2AiA2KLZVfE2Ls24oS3VyvCGNL4/Ku3Tmk7j1tEcnxsIR7A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604500213-42d2fd9e.0_1604500351030_0.7322196899846218"},"_hasShrinkwrap":false},"2.27.3-next-1604500946-a0411080.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604500946-a0411080.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604500946-a0411080.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604500946-a0411080.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KyeBAJvIJ8XyhFvALYVHI7fp87e0BNrDDEUyj4WeGvJ3frKWjNkHxvodm2uXT5euC2clP758kXbFp6YvJacvaA==","shasum":"e3061f7b61a5f84e6c99d73ffec40d7f1b1a173d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604500946-a0411080.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfor6WCRA9TVsSAnZWagAAvdcP/0B5bXF6Uh8NoWp5yPW9\n5Ga76Mv6kCsV7httB0BPZQa5NMsZV85Cz2f0/fWw4IuvSA2FExlLnPRw8kjt\noRrMnH0zenhlTGjSYE4n5WVX7OBkO3fzRg9zYt0nnI1k+15ZCvo5jaiMxWuz\nh8QygmxIXQYwL09RrkNplO8ygbQvd5kX0HzcbZwqdSAr50uONUmKEqMxuNlY\nkgcc6SC6uC3XQjY841PyA9RuIe0NzDNAAgndxFQKyYfUQaZ18yBKH3UL5gjc\nRL2zU7EPCsVCz/rQwZbP+FpgX3cw2ydo5JPmmsRfIhNGNxT57W1lOrNVRIkZ\nb1/ZbqdwFnfjLWt4t+/j5Dqx6zFS+c3QuEQ/BnKuj7dxAKAvOzB0uSXUJSJ9\nwEEu5me2ZO8yLU3SCmY3ENbHvsbZHbuvQrv31QY4OrsxjnZ6g5OzhuhcpSxv\nbU+ubyQ0m2HIozDTA8W/t6aEa81T389abkLhUX1g90UktqZeO4bqwqSSH2kk\n5C8Unr6ER2vtJjUJEvOzX9cQ0pnxJZRP2ncUtH8UCiAG17iq7gl8IDmPp5Cr\nnfYg9dlR82MA0DgZz61/dKHHCCqxA23S2E/MOIrx/B9tfFS4FZ422Rn5v1Mq\n4TSJwVIvcJJAw5VcmDBxmdtG5bM1AJRO/Q1syG3OKmUl/MJuAdGYoypWCc8c\nHK4k\r\n=gnoE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkRG6hHNpmlg1mkAb2U2s6ujB/KPbwqo6GSbkm7xKGXAIgFRDKOVTNrDkMxBxFTf8fXvNL+57Siwlq/NRcJ5ReLs8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604500946-a0411080.0_1604501141824_0.7557425424630912"},"_hasShrinkwrap":false},"2.27.3-next-1604500957-4ec0bfc3.0":{"name":"@xdn/prefetch","version":"2.27.3-next-1604500957-4ec0bfc3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3-next-1604500957-4ec0bfc3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.3-next-1604500957-4ec0bfc3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TF1lMkfrpEEGxdIOAGkc/cxXfVBf9RmS1ZfO4rFoOPcISj+RUf9E2WlLddRMdIplMBukWHWd8Z7gpYQACFX3Ig==","shasum":"78e8ab3e5eef7015bd4d29bacf36a035462ed68f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3-next-1604500957-4ec0bfc3.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfor60CRA9TVsSAnZWagAA0I0P/2+RwlXC9vzTR3FFW4lm\nihFWFxzAGiYJ+2617zFFF0IZzb2GbWUyhIDP27ZeFI8XL/pGda332pY/oOdi\n94WRvPGvzKKDcaBOBCVVblIEJIlPrvJZ6qq9CmdQ4ks2F4hVQQ0HP/SAQPZV\nT/+dZRp48L0h3W51idYvsdPZcPZPzY009wezWw0m6WxCv3JYIG/vOas18FcH\nojEKua2f2z+EEPuOKy3evb2mwKL3ZCQp6NpWr1EYARc3Ekhp8qD7x/f13TDJ\nqF6npGMoxflikgCNPNZR8RqcHUkQttVXk+FNeaktGWzX82UXozHahQSWAWEA\nkFEQWtD6Qt6jcFL8utYpANSQBC5AA2KoYBOFpXxB7ivoEJIyD17WM6RqC4bv\n9+QqOeFAXtbCC4dDH//r2ZTy/al0ii+cGWo9ja1oivXfIBcGQICP4wvbT97d\n224c/O5abwbQ082pKEGv/8yUYycpPlhhSWOCrQfV9UL59VkbcfMbFOAL3Xih\nj8/SIMB8BuUUsyKG2tFlmid0FNpXu9SwFnhjto/CoYrGJ1beefp+ZsfK/sVV\ndD3F7oh2rAkVHpkGNbJgAfDRqrlq9xXeyiMy1g4zecgsPEl1ehSDCsOX4p9G\nfUuJPmYoXMkhCXxGc0ahpdKQDxjcFkSeNeSbDO3GC6Veo+jcDWMRw01/8XE3\nHv7G\r\n=UTqa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKwSuUANiKXz4toSuS8n9eb4k57VNDZi3l72sP9wCFDwIhAINC5LRFR5j46GeukVsC/KPud58VYyqM/vyV5gZ2kkdJ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3-next-1604500957-4ec0bfc3.0_1604501171260_0.9888153088126443"},"_hasShrinkwrap":false},"2.27.4-next-1604501017-a1693d38.0":{"name":"@xdn/prefetch","version":"2.27.4-next-1604501017-a1693d38.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.4-next-1604501017-a1693d38.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.4-next-1604501017-a1693d38.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yPCj2ke3Dqk+K0H2SnQTy1fuzu7Hl6TJ0fkrNFVnn8wNKvS6yXb5qmviQOFD41XP98RUqvz7Ejf783zUHs7CYw==","shasum":"30f5e0d2cd72a815b0dfb06638bedff9d5ccf921","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.4-next-1604501017-a1693d38.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfor7RCRA9TVsSAnZWagAAbrUQAKOcXKY2Xskg+L/Yw9CH\nPUv4Q9uy0Gl5+XCOLtLcTTqMvPWs9NwcvDuPbDt61e+3AQXoogJmfCH8/bcg\nzY5GB0KtNpt6URziEXF1d1wfA1bbBFeagpKZ+7x7Wk/pb7wNyBPLavxD7Cap\ne2ygBRoKVxOME2YKqyixI6HPsckbPMy5T46OmOOpAGq21QpLQjKJZC7Sxhde\nJCREl5unZkQvYC5Yg3hsLnffOqcEJOF5P8GAKHk/jSxiUwUnhX1rJAFZ0GhE\n/sw2JhNsOXPIRrYRhWHc5DQYnfFLv2DohhbD0FNd+IIEcVeP+B9hol+IHrbg\nPy0y5kiMySxCAJQIdk96h1S4wBvqcxgM4OykJTUJKqeZ5ely/WDAqnp22NWZ\n5OH61Dtffdol4YtUNeiA4CmGKqhor7in5dkNTNx1pwEtzFG+Dsmj5/t4OHT3\nYYh97HdsfMtlw++OYVSorFJkeNA3omTr9F2iI5cZq5B4UP/6ol/v2qfNkXp9\namP8b7I7vYvVaQL4d6Sc68IuQqkw3NEd2UCpSSNEJYMoTQ9g7jJHtrkxPvFM\nKn7oiacw3bmIBZwPtvXnzlX7zSUIOlKsePa+ZaCEmaOG2v5lfX8D8KK1Ci04\nj6L8Oivr7MJlfG7AWC3jpkQZ2cFxZxIBIFiqNbhhwFBsOwy7e9S2BEaOVSPV\ncI36\r\n=3oJL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHXtfzj6sKL/wKiffx5U3vPR74Y91i2m7EEVH5OdkW/0AiBlUonXUmWr/RBcnRRPhzEngfpRL84FyD35bpKbB9T0BA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.4-next-1604501017-a1693d38.0_1604501200764_0.8187797863532971"},"_hasShrinkwrap":false},"2.27.4-next-1604502546-019e4372.0":{"name":"@xdn/prefetch","version":"2.27.4-next-1604502546-019e4372.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.4-next-1604502546-019e4372.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.4-next-1604502546-019e4372.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NZryk9WFPUNH/k+I8+HiXu5kcGaulb73kqL9oM8HlG3fUG4xNIlGyhcKHv4GAxZAdRk3DaaFBZF/450b9cAfkQ==","shasum":"0c1383c7b5a8a42723bcf1bd0cd44fc5aedd677a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.4-next-1604502546-019e4372.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfosSaCRA9TVsSAnZWagAAjG8P/1x+Ne4Z8j+FtBTK8oqx\nAIvwva9Kb9Lv5AfgwflXDHBrDXGupXtUYQHoASg5o+ZARZP0onKF+gn8IH0c\ndzcrLErwd6OeuaRBPmDnZo1B5kuCmjkS260V2iIfc0US83IytFg/rfZYpK5o\nex7doIxHgXXOHZVykiuYCpdFQ0C6ux5Nb+3A93izm71US/LzExEZzbY7Is8z\nwtpGpuGAFLo9wRvKAOgItKQNO8LjHKw8JjHEhTPAokUYXauua6oRdR3ggOsh\nKOILF37M19OZy5hKN7SQSDRNqDOulUQVdf4WThPRLHZbwwQf36swZlsBHBI7\n/B4yujHMFxLtUTt+6NOy0H/2ol+Xk8Mj0Hkygc9Cx9iB2VbGsJEIfTiAcvuF\n0X8Df8Olm7Sx/nXQ0MPusn3xzS2w7OrBeYZ/hrNJ5Cu6Lh5GGGSijdbEZBHB\nfmiE5oUYC0AuAJMuDlvNF8PkFRVknZzQ38Vmz8uOwPKu63U5YLOawax/6fNu\nJyucXz2LK9q2Ht8R/tW7Yx73CkB/7yWLXMkChjYl8cN2BUnfObjaFUGXuAZq\nbrXjWm/mA8AWVX8+PDzLl9pSXKcEQfQf+Mk5/Z+U2RGmkNBS4t5A7w/EY0fn\njo0dANucgnSRD4gmjCey1YcbfWx943VOU4RTBhCkCfNe/bOKWRSUfa6EflDq\nkI8E\r\n=Ioxv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBRdhIQxuwR6TQsP5DkvZrJjTepzQEboyLG8uCiV0+yNAiEAsBI/b3B/bv4lcY3EjLkKRKYSP1PVdVfl6AgQgF/4N0U="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.4-next-1604502546-019e4372.0_1604502681858_0.03633089449842064"},"_hasShrinkwrap":false},"2.27.3":{"name":"@xdn/prefetch","version":"2.27.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.3","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.27.3","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DhVOBdvycuCF5TOZOpSqnd1rSpcKusUM/8WqQ7dHszk8L7WOq4Ew+vXjdoLo+14URtDYQYRRrTRS7ggQIjKbzw==","shasum":"1a432c5ad6566beec684635f05fd215ad28ca1b9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.3.tgz","fileCount":58,"unpackedSize":134987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfosU3CRA9TVsSAnZWagAAZ+EP/0Y5FjlRzeqN+VsONH8P\nuXPaU1lmGKO6X1iznC8tANNBptYQw8Tv5XPRyikY5iDgIkJEPX1faOju4bk6\nJU9AI00YALMsgxH79UKvFFePmCDoBSf52UhnzTdj/kRPrt0l66/8NWS4He4w\nXUukCB96HEeqIXeWhIBTYDlp9iy7RNYitz9yYWkBGKKOV+Khm/DOD/SJaxkM\nHVTorQUNrLMFQHfMkjyfhyxtk5dSpLfD2/sqrK3AwlNvWH+/Egc90lXfQXdG\nW0AwVwoq2ZMf+f1RCwvLbpcrAkOhmIvWgJVj4NyCQTiYUYkizaaTd7JFvXH1\numDPZbrSDmXmoT7IOBYabguCaTu2UYiS80cSzCgcWgUJiOzDLT4DFfXDT2Ox\nRlUMsVz9wmTo6gzu2xVE7fuERPkpd7yTbZ6pRHJ1UifsntH01uoaYpr3T6sX\nby4oLW6wgG6BRSm2xf+MnEuJt5uGKBicKqx6F+oWBGdFDlvokPqeDYutHlib\n4EPU+TzChcp/zmQW4lVwHpK+w5lb7RyuN13ezFCJphiyGhCVzbdP9OZprfG2\nQVyDqGtRYIfwUgb+YcFGKwEE6u25utAd+jqhatTpVb3CAJTVxdfpCCsKPrCU\nVnNu4r1fqHOHmn4s+VkkzN0CKuLzZsCytru1oi4jUpOYB4QkftBSLv4dPcDD\nYQlM\r\n=CFJe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDO/+SyYIJUIA0mAB0EEDMwrrJxhm69wxx0QHxx2ntRAAiArqztAV/c0ONIM8yrFXOth3Y+kSOUTm0qFObWOKc0Q7g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.3_1604502838727_0.25437787244703025"},"_hasShrinkwrap":false},"2.27.4-next-1604502811-a89df8cc.0":{"name":"@xdn/prefetch","version":"2.27.4-next-1604502811-a89df8cc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.4-next-1604502811-a89df8cc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.4-next-1604502811-a89df8cc.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-etmyXow9pUTO7iH0FO7VGIc9ovx88NXi7ihU4NV21NDiUQrjo11dihWCx1ZMU4ftYQLJAu4O+s/Q2iZnznr+4g==","shasum":"5770905ca8278d1a42bb1044bc47a9d53a385dc1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.4-next-1604502811-a89df8cc.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfosWnCRA9TVsSAnZWagAA3WMP/iIM9IQjWnFmSoXE6aSQ\nTTq2U7PtX/rTzksjvYJh7PC1qGfFWmtcsS+LPTunDW4SGk8feGvRc6mpNoG8\nwC4b1h70DYIasLHTGM/104Yx3YrrFcDgo/DRCetH3U8riBjqJvM95IXs6/tB\n/PQVlf6HvDcrs028u0LgX3hycDsl3bxs1jnwSutQIVtWxZ1ThRCYdkqJvgy0\ntsSH3+rjaWGULMvngAuiJBJBDviQFmTzpQs/2uSdVu2DK6Wu9zH9e4WLN1Rk\nkbXx1MOuzPVeD6Q3R6ZHKkJKAQTb6z/7jNkzgBFbfaGsIP43KIyvEi9INAsS\n+lziZbvPbNHEFM60phUoRhcoukxa8gWGfWeS5rk6VYUJuBc+swHLEfdAk/c4\nR+tRPAWEGx/4/oSrkArBH6lTfxE3/8YMxfpPisyAhIVs/KtZWzr6ioNHxvUO\nRBlSaQEDA89N+4HeRrqCQKDurLfTIUvH7tBUJuf3zrcukYfNwv5GqvlosDTe\n3Fdz5Qu6CXA0/FOqlWQXbEt6gaaPz9GY7ybzh+sDgbLhao8vykVaDkr6JvWj\nsYlW2nGORPx4a8K72v8yfbAidaEJuqI+biV+oI567URct3oJWGNGOXenFWdU\nzwE9xR9qhXyuVUacJwQX7JnBSke4nEI/ekE31fzhlScRfdC9d6CfvymlM51h\n+xTE\r\n=v1ZI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkN2ZQ+piF2a0Bvclmiw+3/Vo6o/Dil2YxLoPV09S22AIgEjGbOnSnI8jxWP5rtwJQtZOAXMmnjrUCo4W6Ken5OY8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.4-next-1604502811-a89df8cc.0_1604502950743_0.7289816675398795"},"_hasShrinkwrap":false},"2.27.4-next-1604505184-e6e3cf20.0":{"name":"@xdn/prefetch","version":"2.27.4-next-1604505184-e6e3cf20.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.4-next-1604505184-e6e3cf20.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.4-next-1604505184-e6e3cf20.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lNNZO2+CWRMiyXn11FdO/vcSsZHGHLh2rafU6kf4rXwrcnkctMDpY1LBsJ8XTzyzkVWeY+LYN3hD1+Pwb45J5Q==","shasum":"70e661fe16229d810c109de6196ecf9816e42281","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.4-next-1604505184-e6e3cf20.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfos74CRA9TVsSAnZWagAADM8QAINaWIvkkuEtT1wy/yOZ\nVjRSpjgdEelLB3Xg2baJdCwgeLxAwO0K4MEA+tHoCU2dSEXOk+1F0CdsGJN4\nM5U4oqaIj9AmYRYiR5VpODqB2JI+40L2surAiE1JwgnHjgH5gMXGoP0It3Br\nSByXD4wqWh251JWllnDZxyf+K1HnDQ1nIcMuTVgwUJ75BpYeocDU7YaZ2GLO\nKgM7eM7bUwKTJe1RC73cCSCWksSscEP2/nsZa2CFWIKkoTc+TNbFgEZmUYDC\nxOjqGFTUZiS5aiOTRT0nW+66dHLgifH91tuh+JKh37YpWSH+gn1O3X6XQQTr\ntcSXY8imju5aJ2gGJ1I8mvrgGlNY5dhA5pcwGlVJPzX4Gda0DFdBa0zHxjwB\nRBLadOPbe2TCN1D43KpIKpuVkgcfVcW99QovM8LwiK3sOK2+y4sUOjAL9N7e\nwxboBJhm7YupJ0TW9Ftvi7YSWKnUbh1MK/Amg6OBN2LGLbKJjKODyuuMwZn9\ndhN0GTP3NnuTtRzhbqHmIVowDERXXGQbPioJrhls0OympEpscKmZLusgPH6Z\n8f6I8PrjUOYnjIhL6Jz99mqJsSt5+OYpqTwZoA4Rc20CLuCBAPFen3I503V8\n91R6zSckr89PaWzh5qK3sTnaAv3bh5roirYg+mwVaLqTz0bXE2uMpwCde7FR\nH+2S\r\n=4tg+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9CfdyvdH+wrDTl5P3lmDF0Js41xtCIkNYkRo2Ax2cDQIgUc2XnTCKjNfyLotZfbnYilVYCKlp4aJNG6aw1cu15C8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.4-next-1604505184-e6e3cf20.0_1604505336078_0.3766917883860439"},"_hasShrinkwrap":false},"2.27.5-next-1604505240-6f27eedc.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604505240-6f27eedc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604505240-6f27eedc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604505240-6f27eedc.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AYgvJRk0tU6rI1LVjGI3AO4ZEr/Uc4ModO+Cgjz9L113xmdpg4FlExtlSXQrrP273lQdWRJfB4GGfXYCvpT+DA==","shasum":"19005ea0f6b66407013024df34d67f28b972f480","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604505240-6f27eedc.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfos8zCRA9TVsSAnZWagAAXBwP/RHKUzDos/pYu+8jHwdG\nBDbll31KNOu7fGLcvSRQwKh5bklGuRV4Qm5IXdoFpVB+uFjM+gLXXccJcoh2\nXamaZAnMFsWP04WVN1RIKDPJvRGIhphxUcTyYn7QTE/EQeTwRrseipOY+4oT\npBWkvbSH2Ve89oEzthXb/11LTlCjHTzHfjqnfFE/K+XSOkZj8x3KfD22X2bS\nus7bPaTinurHUs3p66G98XfY5prtAGKnLgz+xoFro0B7T45jPfFXOPIBMAbC\nEjpOCKHw3AulnJvzHFVDBDaZFMIx2eLcKLSo+UBV8qCmNktFknBhwMxcEcLb\noDmy8VYVRGtzuqnB0uetEg/Mtb/K3pCMmjXnUkMMUHn91XfU7HRM0QstihPj\n3uxP45LvyYZg3l0bK7yH84MFCaznpbXDk1CJFwuOl2HoyFtA0qEswNuJqjnP\ngIZ4WBprz7Vgf2pARvG3m+Ts3w8/rh4ATLDfpPOdOGdsjQUOmPpCi6en31bc\n1Kc76S6u7EMnhtvSqKDjq1e+SRJ49LJRGG5hSHDCYOzhPVSK8+iMbTnvH3qr\n96YheaI+zehsRKf0Puxx0r334xDqbfVtlX5LUweCykhQRjW7qpmggp/5myLw\nWksjTCOxdWl93Yo/p4KIN31rCB9qiyarYnFODqqWvHThE/mikSjLtnX9pMr7\nHXxl\r\n=bG1E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf1uEntevFyQJx3T3KdtPsGTYcv8GqEQGHAfOq0IwDwwIgELNgbzxjmAyQ3ovoDCAG6dyglG5IaEB9RVbXua328OM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604505240-6f27eedc.0_1604505394816_0.2791336946316312"},"_hasShrinkwrap":false},"2.27.5-next-1604511416-6f27eedc.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604511416-6f27eedc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604511416-6f27eedc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604511416-6f27eedc.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9APIkiJUSyKPHsRHwALmRSrGmijhS/DJaVoSSFXylf9Pep30hydJk7zp0AAPdBMap90eXG4uT85NO7uSyOLQaw==","shasum":"0ebdfa57c0d87b363fef71d9406cffc36d3fbd96","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604511416-6f27eedc.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoudECRA9TVsSAnZWagAAPsIP/jKiczXftsrXezS3Qefx\njPDtsvWrG/53hnpeTMmNKB36P6y/Z5jp9ltwgwjX9XJgxfIURS7z2GEB7Be7\nRQX2HJL/fjxEoUZAPf651BNsb7nZ56gce5X7j5uM6X57hG+TvJWFul1DbgHU\n2Jdh7Z2/UtcR/e4S4mZwL+JbFCTQhs14t6w+Zd5DUXwT7e/xv/F8yE1M4MzD\niK3FAAtNrYMtj0iYr5HKsO/YvMuxrJTNVNJGYrWtOvBDATcL4rtYJ7yr8SYR\nZXddx3CZIhi3qO4MnU4gGovWJo3bifwHUuYGhbO6mBN+Lg8lJIR/dXlZZuiT\ndd+uzpc5a0DKwT2/ecSTe7VLBgY8ILBL+SxIj9zNycKr893v2vP17DtLA/s7\nVthuvsVrhicY7nuXtoHqnRQUFqZWR5LBB8kAAziV1hseUuKNPvRrCceAv75F\nwkrEU1aJoghx6a3g5uipYxxE3Bg7bDxg8O+uRvWwt/Yrl6g+6sgQm/I9NqoX\nsN9eI+hVeFvr5rbnCgExxJFyEX+aXngPOG/QPE/MMO4ijD6hg6IJlROF6I8u\nV04siP9Z5RgbzXRVx7Za3A+Shjb5ZRWv9HNq9ClCEPimKST0rk9U5eDkXmwV\nbw6kjilJ73ZW/+pyeX6gH66n9C8I0N2PSVc6+rpTCTkS52KusXrOok0JvpUB\nYas9\r\n=7KSw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBSCanbtOY+z42gqM+icTINF6TlWN+fQGrwXyOgFlUYAAiEAvwKKGlnopqn6B4zaw42fDu2TsPNvjwYoqJQv0sySfdg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604511416-6f27eedc.0_1604511556028_0.6367901277637826"},"_hasShrinkwrap":false},"2.27.5-next-1604512997-23dd580c.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604512997-23dd580c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604512997-23dd580c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604512997-23dd580c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/NeTL82jWnwaQ7dWjCPfakUel2BgQRkv2ADhb5JEihS5sA0uk7GZbJJ1eFmcDJ9pJrvZMeptQhO2tQNDRZIeLg==","shasum":"36de3ad7473b6300e7d59ab8c39725e84ac58ccf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604512997-23dd580c.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfou12CRA9TVsSAnZWagAA+RsQAI2zucVKRcPyJC0Eajvk\nARAOnqhBbB0gmiWBsk2oOv6hObIicYxaul9A2OjpnhpPwIwm/2wJwxPzhJsZ\nb4ntvni6QiVc5D36OQcJc/dqKrQysGc5jbxGUGV2M1Mb0v8WjlR6OCvZ3pni\nFmlUmlkpkAa1oF/rGJZvmQELf53IrfjoskiqMQGPzpgCgdtAkxklrgLUaC13\naaxNf4rk74IOXvh5ejR8LNZgYX3KMw0TmKXfCc0Zxj1B3FOcsty4en4e/J8y\n7nmfsy/vbH08eqAc2hVRCYBnZDEyb+Ri1jXcmplEIPXx/qXbVYceZYqg+vAO\nuo168Q+RbYDjela2eMMh/tz/Z9nN3FopYml0yKSz5b7EfcqlkPiLfG0l1Qk5\n5O0I7djidnfwytKYdTuzD6FLviHLg1z2c+T27NFjrTk9/U3ugRqSEvuDbdU9\nLs0srJYiCv1mh0jfJfzt+vIaeNfJWVN//pyJ5hcA4pMuFCjIxqJSo/x8iGyq\nG1LYri7WvrlPw9VJlMG63gV6IKId0Oeb9pUYxIVdmizL543dX011hwvJsiYz\nMi5rxbFuGjE87QNWrzxV0jm/CenDIxk3QmM27V+/L5qui/AlxXFxDqHRBNqV\nHsfuLX0D92Ln9z62Uym31SH+Oy+G5ac30woMOu8AxXj/N447AkhN097SA1qg\n3T+U\r\n=jg0k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkgpXmNkkh472g7W9FBbYrPpqAr+bVlxmrHd1NrG3iBgIhAP8xvRGwRGER7vUPoNIhQdZqj2lAa21+040TeDiUc9ni"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604512997-23dd580c.0_1604513141876_0.9253607590248831"},"_hasShrinkwrap":false},"2.27.5-next-1604513033-0b239f25.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604513033-0b239f25.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604513033-0b239f25.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604513033-0b239f25.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-37CNeoQSD5UNoI0BtXnQakzBRmLQOcj8Uv9aFxOeQpJrDzwPmuWOr+xUfokqueZfFppt0+EjZt9ACnELgocXpA==","shasum":"9bd63c4690d642407cf2e2eaed4de4bc7c848b80","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604513033-0b239f25.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfou2bCRA9TVsSAnZWagAANGMP/jEs3E+dbWj4aMOJDgQt\nCL6+GTeobbXUg7/bwul95/FWNKMmPLVMVkcetaga/rBwNdLfInlDrygtJMac\niTcQflO+MI3ZeUESdXceFXP2zzpu5AYsYnrQJCEIUAZ9VJ4MW0n0fBTkjw2P\nPmmQ7LG5Jof+Ck8suoavtkWyoUhQHW3SsXnMIZPZasMl/dqVAKXYXdsr3O4E\nu7UD2QMC3DlwfEdXEn6R8aA5O9ilTeyZVesaX31Za2re4ujSD+8XoiEwMv5i\nqQ6e1zDenN+sHZTxu3VqhD+HYmllyEKx/6+NffN4FpGyTTT9KvKcA24ZzyrA\n4Bhnm1uFr8CYQeYQbTsbw3FmB4L/N1FGJcRI86WgdCmzPWi+zVUhtdgK3rgb\nch5gMGMQu0Ti/vd7adJ3XxirOvERPye89dWhIPQ3bhUmXENIEzcwstMXKDFQ\nTeMWO+auG2dxSJgIT8bKZScPhDOsFV8vtC4KBfRnRXtQVPKBpLyNZDhpEOkq\nOxzASg8tFKJmXouur+fPxzl4XA23hqtt1IT1p0K0O7wvxvxmXsNNFZS6Fj6A\nwaVaElQ6zq1JzR9pwdgIgSPi0zIBzZG4rv5bKjACPMlkrkXME0G88xYfj9hd\nI4jj7HxMBHaX3JwxbfhcRXwwrs8f8f7JbNzOnJ44XyJDiuO9t764dXuFxPiv\nHLUf\r\n=HNbl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFIa8bNzKhyaxxXfqh18u3ZxEi6AkRUBpwb7NL0lgKNDAiEA/s9MxoQj296uRYmHHi+jn/I+5dMySApsKkLXZeGA7kk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604513033-0b239f25.0_1604513178470_0.7968367945490482"},"_hasShrinkwrap":false},"2.27.4":{"name":"@xdn/prefetch","version":"2.27.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.4","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.27.4","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WuSqk8XceGlyVRTsy4WbFdgRNM3Yi3Y40kmbCnJkMqcLgwQZgks8OJMoqhlbtPPmKGPiBHqopBVUhc4LUdPbYA==","shasum":"21843712ecb1cf1c3cdbe83d9db476fb4d3dff8c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.4.tgz","fileCount":58,"unpackedSize":134987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfowQ4CRA9TVsSAnZWagAAMFoP/iSqKSBfnBwNeD6MtxBH\ne1Zvnchx4TV6le0bgr+HXNdRSffevezGBd34Yn6xniEjRAaMB94O8PjRzOfJ\naS7m9EuBXp1UgnCc/Ab9jWszXFTO+qJuJOJSHzanJ7cbtr/O4qfdKNj7oBHN\nkkqT5AdKQ2Sy7PRx2rpB4GVc7vpfguGs9CuN6tjsoj9fwDKQFiQrLl5v9SSo\n4LgXccmMLk1x+6DWcHyPOrbYxiIXvXuxn8UJArwe42WpegzyZlz4BaCtyTvs\n8S697c4YF2hyw5Qh2X69eaqZC3MiGcaq5RSGBr7pxGyX2+PztJwCSQhCGjJY\nQhiDTNUPnsoQTl1LD/sWoUQ0asOd7EltrGz5HxEyGbtfZK0hu3jx3pqxuBzM\n+dnCinZBJGG+SpRfsjj+qzZdwvURkAtDmeAL2AXQGfBEebrbhvrPZDmovAla\njodu0S+SLhbKiprAqL3EfrQqWVidraLxWDHUI6lCHN/0RrZS+1TzaJ+VSO5j\n9Tk70gg0LFIMxdrpFL7Wu52QyqtjUiGsr28629Geng9axIzMq1gnGH8ltnOe\nMukA5nCRPNeYdlEdcTXl1zm2Qb4MpoTjJJDeGFQfpmMNTB3XRb/tnbDpIM+7\nyzW/ZAvCWuIctctd/oMXH5AOCw1oziZECRshs/CbXFlXBJbiytGPTTeZA65e\n+5+y\r\n=bZCL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDjUn/F6XeLOPlGOE9OUBHKUfHgcz+g3xyDPj9BPY8aNAiEAlGRYxdAb6k8ZLKV618VwXU8zQzM6YFzgsfpq8p/qvX0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.4_1604518967607_0.5673823955765533"},"_hasShrinkwrap":false},"2.27.5-next-1604532455-3a53c30d.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604532455-3a53c30d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604532455-3a53c30d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604532455-3a53c30d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-COIx2TfsJnhKtlRs2UMPak6RWvUGYS/DtI3v0ut6zs0nVNshnM1uO6n6IDdoAUdNfSQgOhE2FgrYwiKeYQX0fA==","shasum":"bde60dfcd860667548e9d79ebf7fa5fec1fa5a5e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604532455-3a53c30d.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfozl1CRA9TVsSAnZWagAAMyoP/jmSHWTotM0NZVeTa+ei\n+4/hlzAkS0ly+uXEf80aTX+PusvDcT2+nL4qDVaSLkfgtSWE43VsDpxjxn1H\nWd0QuLF3cX3GZG5YEiJjmDqjFG5KUaxnssApzWYtriyG0T6aJjvpQqf8adsw\ndrOi0zg4OzrMehdIfkLGmpxR9b7gT8lAUUITdTHh1HqSpc0IkFCITDY1CffD\nmNCuZ4u/oglDuPrQfiiC4b9LHO+m3CQATtEzUa92aJy2CMIYvEuPl6lkauu1\nsfKAq+tVrS9X0tDheXfLTNEc6TrESHdYpMvk8zhycKVi0+MxpJ8SflQz/3wm\nlPEbwOm28nE9GhJQ0rNSIPyNdx/TzSRFNFF1PxDqnTwQ28AHhVbSvjU4rvU0\nz31EUCC0n02iRkQ4eYOI+tr+zqAd1ciBa345HMRqn2kFDgMzz6zu26l+WcUg\naacvbBVtAtrdCjtBdJTaT/LMn74354DgM+lRFLYAKHrUf7upX04uFlfexB6p\nmzN+FtuXPlKLIW3VwHaSoa0g35jmCsgE+1zziKSLX7Wzg2rz/CUZaQLqjB5h\nRUrFOu+lCgznUzvaBDriTy9eCmXpSkCX0sL/GW4b2lWqJpU6e4OuOCamPcCE\na8psKdjzQbqPGV3MC/ckYzg2Ti3xnmR5Sj9S9AIQNNwfITEXSKHjSOrkPUK3\nVZ00\r\n=KfMG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxE4zTBTadbuTJ4qWYsOT4R9Yj4AnaQXBYXF/28/rHrgIgW51BztqFWUjf4biO6SEeI8oS0TqjeOM87U6i6TPQbrc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604532455-3a53c30d.0_1604532596773_0.15795821750317862"},"_hasShrinkwrap":false},"2.27.5-next-1604582059-eaf05773.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604582059-eaf05773.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604582059-eaf05773.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604582059-eaf05773.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QhqGOi1zfB77drFtKPTLHXAVe00k0nh6R+EGHCMBARplgF5etqmbj1KLQuz4EufZCkKUwxllDpxTC4e6UEj9Tg==","shasum":"5298061175ac8aeec19d9428a17175613bfba129","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604582059-eaf05773.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo/tSCRA9TVsSAnZWagAAaswP/RpXJx4D9DztFQfnouN4\nbkQt09sE+bzAv78xa2yO2hB1gebpH8QLn5C7yU/C8J2z6fOmxiQE1HL04rcK\n0IN7mXKuenKweaHKRPwWswJ/ZtgZqUl4wibkucY+0oQmDe8l1rXxh/OF7bXG\nHnHcv8c/EPT1YGNih1TKP/J8LlYvedG0baNrzybf16cUjMyIy8JOMoIgBzJw\nDhv1bkksSoM2hvWf8eoUFAhEtCL6R3KUX7NV5OgDqrUoFIoIdihuVIQypCAC\nCEbCrvH4avp6tAmpfHI+MqAso6AM3TNwHzhvQFYZhLE4v2FkRtNSHvDc/dn8\nHn48/IgqeffSOZwSUrCsRChsCgh7juSu7sKOQf3D5v++EoIKp0MAnqSX8DPu\nxe8byTgqZHgLGJ/MViACVlRASpr4SYlX4a6xfyjFCDKc0QklgWXjL2Yg0qfA\n6roalfQVof0sO/o5iqFPcEHk7MBEHmwZ5G/slqPioZtfzwjoMVpIzBLIg9ps\n91f5ymJ5EPGMKbCfUxRqJFnez27A+v6toxsSvnHJZFZyyxK4P8zyuLdeydn/\nVSg9ilhLrGtPJtKrwNw/9CZK8hWbEB1IYJI7Si4tB5XAiXiquDgntoKzc3Z0\nGxpsyau1cuQs6LGIKnrVw6JhP69DnXRl8EG7+uNqIm76S3HRVHhiTWOu03PU\n1vA+\r\n=ZtUt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFSm/PD4uwXBXA+g8fGns2Cz4/TpWjiQZMgZ03LyjbgyAiBPqx+kz1ESleDzDBIHGQNl6cW/bx1dXJTFxx+385G0jQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604582059-eaf05773.0_1604582225917_0.8808746897605686"},"_hasShrinkwrap":false},"2.27.5-next-1604583159-b381e915.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604583159-b381e915.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604583159-b381e915.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604583159-b381e915.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hDTlPOFaZQQoTNPL0z+Ap4o2T6dAD0I3/IcLZvvt2ojR+9EyLPt4RRswNanm4sTv1GvVkvIlZQUAc8MAC71VXA==","shasum":"45e37b0312b972985a8c56dbd49212cc5173d9a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604583159-b381e915.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo/+QCRA9TVsSAnZWagAA5ccP/227NVbJGeiElRPzk6AS\ns2vsMs2wo5ckatYKia9BNZG1O8enecryGzAzJL/4hINVOYNerFJVq69FP9ox\n/ww/LObqckKxHg28vxkTZO+0/7KZY7yDpjoG4LZPRoEcmTIe+SLXvBWZsbCn\nDeCJELRm9M2zQ5yUh08sFfh9onkD4LiHqv0ZxAANKcavth62J1p7pzLzSLPe\nAb9sPbeEL+FklQRPglCj2587unt4haJnQ1uVlp/cG93kyePvE/daNZ+FrMMV\nNPoqLsixKPatRdQhsgR55Q/2u43YbllsFTuAyih1cAJmX8egSo9Il8UCIGt6\nrso0icp6KBfsrEyUIJ/AGPuV5Suh+KwhRWfKilxHUs+RKom5AqgmYCr6VE2h\nJuwx/c1rI37Qui4vt/cP/urXFGKlUuYHDNqg53gXjqsQXArk1855us9RI/sR\nBCV0cbUjL1EJBGqYn4l48qlUuZcwYP5mJXj+YE1mlpfADTDK6yBgVYI3a0B9\nj3i+QYlQI1OLQ8fMfVyej4B0Aj7yohLOg7UiviDP4pFljt7KvbWW/L/kAF/Z\njWVB/7N6r50TGJfIB1Jpf6SGQ7E1wcbCnu8Yca8optJBEjRcKt3Z97p8JBGq\nIeHjQv66AMth35eK46aNWvJQZcPDHgpaDnB0N4Jv7p9GK5Mv1eb4r1ust/pM\nETd1\r\n=azM4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHR2bWDBzMlzfAKyvHlh/lS2CvLfqWGxq2J+dxHoJKsnAiB2nVt3J0mtWuwjll7ifM8KpWsLzRc94dYhceCcE+ngtA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604583159-b381e915.0_1604583311632_0.2529242112494767"},"_hasShrinkwrap":false},"2.27.5-next-1604585342-dbc100c1.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604585342-dbc100c1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604585342-dbc100c1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604585342-dbc100c1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-X7U1ALv8PShzqrnq9QT44ZOm+GVhLEbZAKfOiLITy1tXIlcBrnnag0BziKFhP4hD5peGLTeqUiUGGe7fCmMFHg==","shasum":"aadd9bdcbc62f88c7cf43d7bfc48267ba47ac804","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604585342-dbc100c1.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpAgdCRA9TVsSAnZWagAAPGQP/0MMisNqm+bN8YvY/Jhy\ngU5FRus83m0S/dcpUq/FQG+D59b6JBS8zw3S6z/oE5GBz2e/g/1sp0NUn8wZ\n84eCKW8Yp/ORQi0GdspFEESSZvfzlivlUR6CPhBhIW05PayEFZdBGIszElqw\nF+D94w3HL9n7hV0Mal5AGsNLUkYQ2WWatIxUFHiUuBDMdYTkZyYRJEPlrdVK\ne+ea4JPAV+YGj1wNdW8f54nN07+0vnmKO0u4k7JNDPXOEzjwMDsjLzgtmJO2\neEJqJpZQemvTyAzLLB1YgdHdKPnUIbdTWOVaEbgS7Aj6wzEjpcrH727HwEZN\nifaNs8RtmZ6QLLtlwieHlN+qUmnQ3LnnN8UjorErY2DcX5D0Rj/lCFU1x9bP\nVGXeaZRoliZiqnnx/KyvYoSKB4FTOHuTDUIkTFj+dr3ogitLeL+ePAHM6Rrs\nyB7P8RNN0g2GLamyUxIq4TbuleSIKVPNFCHcK2fgNYAYaX56PyUy5nmJM7dD\nAVXv0r2QsWZMYJxV1BLSneDAn/yDVd22TzF9ttReN7gl9WIoLegkBQcidnzz\nIH5Pt9HlOr9MISuTbUT0qRe8doa1XSR5XkfPtHJUeBwQlzvCYNNN1OjV9TWh\nKDYoCKomx7W3xAawCRli0pxtOMBO1IeGnhe2JKVKx1izGKxRD0j7rD3O1KLn\n7SZX\r\n=FEvq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCHwbkQydn/af5P7g8tbjYx0hSgnuk83Crdrqo6vLvzlMCIQDvO/hZWyWMlGduhWUYOjS2nkca/bOxDAbmY3kD2UWy6Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604585342-dbc100c1.0_1604585500495_0.22888090111699388"},"_hasShrinkwrap":false},"2.27.5-next-1604585398-bbab79f5.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604585398-bbab79f5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604585398-bbab79f5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604585398-bbab79f5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-j8OVzRgL4p0eC8gkek7uWA8AsH8yKnLK1cvgPzH6rUhFLoJ08JUo1E/IrkpRpJG4RgdzD4gUCftrI5zKOZwfFw==","shasum":"4a549c64ad4a3911707731b034b249568ab66222","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604585398-bbab79f5.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpAhLCRA9TVsSAnZWagAAi2IQAJC+J9G5nI4OVXhspqrM\nMueBP+4FQ4Wx3RHvafq0UAn5U7Myid66RXFw+9tv+2+tJAuFWyE7Ya0GRcFr\ne3Qgk6gBh8wFJjH50iFS26VQztfEpaifg+9M7W6DDJI/oJ6gjxaPX+zRrdau\nHuDYaXgcwe7ZRJ+SL33xC6uZWcjRuhZ8ZI7VSU8S+EinnYxxv6gSx3PF34NJ\nNMYn0KyLK+P5rsba+89Hgq4X+LBjYALTjflHdVCpuYDhtgcNROOu7zEu7RX8\nDEE/aU22Twj8cD6+fohjfqcmowje764RzfM2rF3+EGi+e7iN1bjP2OMWLoWB\nJANmEAoZ5QsHConSFvm6ke7fxJtbDgzqIHE+2I4F7H06J41zx8hP41eYsHe7\njCzklS/0ncb2NipzwWiI4X6VkKCOU82rtd8Vb9iKCGM8/UnkjH354HVM8Lsr\nQ4KhQX5HMGlcRWwic1Bv6vBiwFIgNrlgqmzfKxukARsiPggsnBcpOoPt4XTA\nuP+CsXO7cFvIq2PBizn6/AR2DZqKUtcmOuXBGcQrva9mywjbrpw9OCuHPCbE\nX8b7+ogs27oiN3d+P/U4J2uuGebxNLswaHgZbT/7S0z1hKBrOCF7Qtj91ATb\nH3YIVE8TuwR9IRvW4TMazRQMF5s9l69bNTHuhbOx/QTtscpXgVp1FWZGsFhH\n0JIo\r\n=PPMt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgLYqMFh4Ek6XcHxVpiwn+PvYsyDdHlrDqKePgWJr5hAIhAI3n4ZeYk/MzeMZK44vwp7zdo55PD/3SrAN98dNRC/KN"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604585398-bbab79f5.0_1604585547379_0.8018841421758731"},"_hasShrinkwrap":false},"2.27.5-next-1604587080-03db8caa.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604587080-03db8caa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604587080-03db8caa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604587080-03db8caa.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FOdT4i+8Vn8I33CovMSQHFKeASnGFKbgs2wx210XrEZMNIuQizdF2hanZNu5xAy1yaDr7DeKsCgrzAjC386rUQ==","shasum":"4f1dca687ede18656f7956184de7716d163b8c51","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604587080-03db8caa.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpA7RCRA9TVsSAnZWagAAcwYP/3McMJLHA9SZ7mTODsfG\nYGIerkwi0GHG3rUJhmicgV+Y3qWVTP0wimvd8tG/2GBTpjGUf4THBDkLyZRi\ncEs80TpMApmo0OAheF+A9XTqHdm07j+4Yxv47Nbe97vvnjvg55PyRA/BBuDO\nvhN4mzafD4HaiLKAgZ0ozhwkR8yMpS2uoLwayOnD0KBzPxh1RmXiygaOelS3\nycI3AMfJoSLoXEZSOujBPTL20q92W8vCyXepV4GPX44VB6b+eVMSu1SWaHUZ\nqePr2X+bNe7NfOh6izvegYQ02sWnMtep+1EZCtvnmyuFbvxirqZtqYjFWSW9\nDHXCUw/2+bAWqrQnmSE/0lP5Hwc17UcxEYV2peRkvh762Olt/EY6XYa0cIUT\nnErxUNE3eF18FXdvjaX7YurkzctC23eO6z+kcNlCevduSLGWFMecB/N3JQoH\nSHbNdy78liy98DvDTVSwH4ftydmOFejf+IR9dkar3GMw0gozxkLlFuBH7A5z\nzEkw1bQg7EmrSLFzxIrto/ZuSXrfB2cyeuSMNr0fuDqfyalFTgHMx9SsgMSb\nXuwibvTj2Bt/AOMOt27n28+pstMoxhvO7fHnqB8vfdQ3OPrbCwDj9Ks8F7T2\n4amgTqtgmHfGN2ev3k5g0Cn0NAxIHEBa5TI1hhpeglrpnAQRvvEAVMqM6KQZ\nl1nj\r\n=mYCF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB0VfQf6T7FnR+0PWsYDVojxieoTSVyYo6PG+BgCAfaJAiEA3X5LaaB2eoCAqjQhIRYlMu/ETkl765ombG91uVSj8Ls="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604587080-03db8caa.0_1604587216453_0.23089946187970956"},"_hasShrinkwrap":false},"2.27.5-next-1604607141-6f09598d.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604607141-6f09598d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604607141-6f09598d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604607141-6f09598d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WzEwVC38D92aZemeT1Pp+0FL9MCCMPqX1UyeUvOrO7HJU9gCYHu4B8Py8vZziqjOeJwCCDqz0Ge09z4FFUxu6g==","shasum":"1c04f3297ed3b8b9c97d8bc550d2f97d11e85128","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604607141-6f09598d.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpF09CRA9TVsSAnZWagAAUdAP/jqka0de2wXwsC6N0df/\nXtwKsVZTfE3lhRCkXa/fO+u83ztm+5IvuXiZU8AT9xRtO/5iC7ht/oKFpobr\nkfUc2nondWOgqBNoDtgi9tLPB//eL4Ooy6mJ8/2L6+AbX5K3mUBxORXnEHzF\nn7zhojatnRlnxiCgs5+d1x92tZmgyLi6nTE+9uP9Wcw5oTmJa4wO9QIbXnmU\nhetQbIsZMdR2TwP2BmypISyjHkdwPCP6n0a2B0p767hdEDWfgZ/FBL9KB9HU\noESrepZFxljyEkJ/l6m6UgopjcGQuZHH6ENVRN4o92m2Y55SghifTXt7vLSi\nqgfRP8OCToyv9RGx6BJAI0SeYlMStZnxZDe1isSgL7jvxXBeoiD0H446DNde\nZJNnD+e4iCClRbKmGn895deRswYUm4nMOu0eKBqhGfXqRaqG60A9QeJTEZ/D\nwBg/W38Zk0DxAmskG5rhNIH5lF5F1WnSaO3D4FKx9Dd/3rHDslF7VPlmvlUn\nYyng8y+2a/2tYflsgrAZ3/blnQKuqwcutCWYynLBzCBGpMN2GwCNTtqBa4LF\nIpu8N9etMrQwzmOdimGYY+WsAG9vCD2qosVNix1E2dMfPZ1wwqjXtwUzCnto\nip4fCfK5tK/12pwh8z88ucH13ubPEcvaRniOuSbgL0w3cnej6i7jk/6NqkMZ\nyGW2\r\n=ni0q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH/mvNv5BkU1A/A00xiC+2hDSOFSASDicRjNMpOrMXJxAiBpiy1wYYl5dntmTCqIajTRI0WpztwK0yzYowk9W3iUVg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604607141-6f09598d.0_1604607292630_0.37318443976065474"},"_hasShrinkwrap":false},"2.27.5-next-1604653440-7651dd3e.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604653440-7651dd3e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604653440-7651dd3e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604653440-7651dd3e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gnpJvmU/CQQRTi0yNy9a4m4ECXgsvHS0PyqIy2pWQLZmolPlvOzBiCSCFDHQk5Cr0Hk09cbMwo79gdep71a1oQ==","shasum":"16958fd0782e373b8a5570d028a02ef26953acba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604653440-7651dd3e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpRIpCRA9TVsSAnZWagAA3YMP/3JuCvsOotYCXT5H1FRm\nngtMOFeXY/5y7MqxCxu8gNHJPHL2GrPkL5veqkWPhAS2m/S9hu4Jv1e4/2QO\npBT7s7WL8yHSGkcbxu0JqOBTxuAPbgoG/XPybwVjSQ+LW8ypUqjlHLMLVox8\num+ScU/6OlUaIyxFQBS/pXM6bYZmOzOW7dYhRVHNP2hTMMevmgUDQTeH13qz\nmiNmF1iyi79JXNYhXXJdu9NOtC5f7GBEp4Jxmxa3Wxui5rPP5976wpl6AH37\nyjovkk568qzoCRGd188lWeWgU+MzFD8Flv8iOuNYB1cU2jXKjcyl4quN/BXD\n5Z4Xxp4/TtYw4AjRgEh/5jz51G1UevqIhANTnpIyNIqzvuHR1qMai4nYY47h\n5Oh5i7A5sHYlAam4zYJF25Gr73QWyhAlWurHULPsnK0gVtdePh/iyxXZ4cOt\nxmdNiilNDF2XSIEFGrMSXe0m/ptWfDWXrBSWEa2uPP2wFa7Y1d4SafE9CUXq\nRaAEXGdFdtlQ+TzN/78jeGMWjm/y7pWjJt1h0hMMqK+MMAjGHNDJbbaGZCXv\nOnqphjoJJsISsPW3XC4zgykHMArzeAOh1ATlATTHyvj2Mdas7NRP0SMKn/4a\ngq/CjQIdyBX4iZh6PWFjiuANTkL7b5VspETTtg0ZC+nbIN/RaXAqRI40FsKv\nQ4To\r\n=LmFD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYASYEjVtdn7PGeIOhP7+yRnL0zT5Cfr+4M44PdevmDgIgeq9q5gq30j/xW3IwlFWyXN7mofDd812q95Abv+HRrHk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604653440-7651dd3e.0_1604653609375_0.4356395172555756"},"_hasShrinkwrap":false},"2.27.5-next-1604653738-d0d506d3.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604653738-d0d506d3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604653738-d0d506d3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604653738-d0d506d3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WJpC2oSJ4A8bL7oKs/WZjHFaWZcRCwMxIUtrUL1EKLSUjVxoUUQ7mBUrU9xLD4dH/IDH+f69tEI94ahIqxC/CQ==","shasum":"8b4579ff5d12dd50f88f042aabdf9564bfa8c302","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604653738-d0d506d3.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpRM9CRA9TVsSAnZWagAAaaIP/jPOogTlevG5TOZ7lvI1\n8r9obsqlVNcexRrLlXjadlxTch6sAAGyPnq/deOZ2ZFlHfTU/+aDmC2XPYXV\nVmuLsAOn686HjfKK6LrEp1P7hJ7SmB0ItLwS5PQEWOp2Mye4Zz0QLobil5cN\noOtCSYPL9Yiume04zqBIw2HqsUOfZeg/ARlFtILdHyQ5Dg6t3fpgffbK1Y5m\nHLIgZLiNiXajIZOTGINcgqfhuA6ZEdwGVCJBrmqhvYmIxu4oBGSey8XRsjBX\noHw4WAMYFI5gfikfyUTW6jc2n1zJvzpFL67gWmuI478JeQ2CXMKzuHPi9/0b\nKMv6OthOBUbRuhtg1oDXWSupJcwLm0y94cjLLMD8qd9ZzxqunON0PjH2wJLs\nbPr++95H1pqOfDufbTOp5PNRBni2yF3em1NtXnVXr7O9XblBx9jd6yXLt40C\noI4IC39SrJc7wrS5eNwMEsnx2q9XbZb1RNcV8zU2qh59ekdkRhM7Co0GhkEd\nta7nPV+1yY/nf4xSD1bd3EgyY9dvy71SQVoh+dC14jUf79X32036MUaCh8Xp\nfHxh06WNGKVdKqyZj16sMDEcDwoZ2l0PfZIFwR8rxEyaX6kPggah5ZCBE51U\nnsver1zoHArxGWbbNSbCJluVgTKEH9GsSH/N0a2xU2u4/rXoz79AXaL0nLJO\nJKPW\r\n=jP+Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqYrdagSaiVe6w3CXVddyiHCIcFU6142ChHNWEo2IXigIhAPM4AjdXivDgnVIkPymd5/ugJOarCs6t4lh57QjsgTKc"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604653738-d0d506d3.0_1604653884776_0.8516182273297088"},"_hasShrinkwrap":false},"2.27.5-next-1604664558-bb420715.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604664558-bb420715.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604664558-bb420715.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604664558-bb420715.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oDZRnDBQCip5k8I2D0pB5rNCzuRY5bNx7hZQZyORa1TUy4QpJkIhpJfEOVLss/VsZXR4hcD0jT8SFakBrS0zzw==","shasum":"c5ba125dd19be40e8717c6b0efad485b9a849a1f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604664558-bb420715.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpT15CRA9TVsSAnZWagAAESsP/iwSag6nKJZjytYGyX95\nOiM0xua/vlURT8R7/KUenNzyL6Q8M7sQK9wP0g8ksSO5D0Xny92EXf+H5+ex\nKUV2ZTIbTF3Bl2dBZ6smpH1/8/9+DQS+vDVBTDv6cZBxlsugXrIc5zLE/Oc8\n0F7OdfKDcIYns5cl/8L7aiPGLGj15RAWWuD7+RUHAiLcFYF/SvSlXYmex5KW\n6FgOiAp5yZMkD2Of0oLEBf7opRBiywu7aJSSiYc9axLKRuCefgmbVXxBGKfZ\nBohz8qOfVM1TN8uE/nZxCXbzp2lUQ1WWNXd3If/nLXGH+vgTlVwxucj8439m\nqUTwkBgquz+7brZvNbYWhIfQaA7+zyxzIr1HPh5KDgBjLKInkCcC4lRQfnWL\nwVM3rQV5PT4O9wjnsqX9AKZK0nXR/GSvTYgoBslK6pegYBy8w2HmXmO9/Rav\nYzPqv5KW+HutjxpteefuFxW/mR5Xx9ptfQ1207RFd2Ve09nysecy4x7aCVd6\nGqFgXaLobfVBeuiY+Bvbdi52ly2DZI4eL5rdBUtWRdw2e8sw1uUB9Fo7qurY\nFGQTyCOB8wlzcUgY1xyUfVYIzikWgz6fQr3fTx8dzVMtbhLpA/HfTicmo7gg\nkyvpyqaCG7kVYOeKGj220oX53g8RwTPKxWZCe4EqMZk3+AxLKCdn419QOok8\n8iv7\r\n=HPl6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9pW19pb/bwroi2B9MTkldqgSHMK66BeGYCeh9DuV4cAIgMNmUN6eC0sgUuLlcEeF+MlvhH2xn1hrsKw0HlYTId50="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604664558-bb420715.0_1604664697171_0.08423639086004897"},"_hasShrinkwrap":false},"2.27.5-next-1604669143-008e69aa.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604669143-008e69aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604669143-008e69aa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604669143-008e69aa.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-I+UDsSZ+uJE6fUBGfHjo2xx+y8cHFmA4QDjU6h72gX0aQT85AS0j3poroNE4wk9k1ab+AyegkVDJDo+/bx2xlQ==","shasum":"c19963ef9f5852d168a417d212d22fb6c29e7f7f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604669143-008e69aa.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpU90CRA9TVsSAnZWagAANL0P/1Jb+fSNrxDcFXIf/Mtm\ngc/ZiJK6+x6PAi66JxpUZRP9msTBYu5zwMdgBSEmkGPrPYeALkbqpGNj7Zrh\nkkrbybpL8miAc2US0XtPB4oUm/JD/z1VLi65K6qW0vGUUvukIFHox+owGGP/\ntufavNOvn9qcdxaYj1Ujf9yRoPIfX5OIyYouzfz4X4bRke6H1qgPYXRcio8N\ny+10WiEKGHYbfzrfHcgbcoOx4r1CIyVqmUK5eUvqSKqWvjBjC1A7sFjJM64V\n7Vjtwa1sfc1qDD1kQSURO8di7HlQNeyWaUMFQO/pIjEg2H16odcpHS/KyZ6w\nZuEzZZqYDSueP8+OgmnPjFXOFZ8CYylFX03eZhp8OkiZ6tJelcr7uH5Nfnun\nmiFyCZj7zQwVWbKBP/7WUtJIvJbUJHbWxfS/Apb2PgSRqVljJSwjKlYB+jVO\nw/AU1yC7OuOREw9M7mEliwzw+C1AOKi78D1AFZvqUAV35puzs2sruSnTJkKA\niq5TAM6uQq8mJTP7NJiZzT3BHvzzr9rWSDhhvMT//jTYrxe1BTOUWAPYrArY\nKeldm2Ue7oAct9JqXACLGtKazs+05166qmDtS65ZSVd8pZEwH8Fy37CPXRTV\njPhqIN63HcEgE1dAXI8ocxdP7FVcTPVCrqrJVsr+E/sf/6wExQ5x9Y2eBph4\nK8IW\r\n=b9db\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICwTfDNGCc4bhZK9OtwUZADdF1cZW2Nh4z1XnqdxvOEyAiAuFIKDsW7FU/EiipEGW8R15PK6ZkCpk5r1wSGdnBIK0w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604669143-008e69aa.0_1604669300222_0.900298356628549"},"_hasShrinkwrap":false},"2.27.5-next-1604670370-26f94330.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604670370-26f94330.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604670370-26f94330.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604670370-26f94330.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kjTOp0iCIrhMIXf3J8FxXJui6XeYNUElwgJT6NUcYRqBiTb4Fb8AAWGr/gzk12qIrww1IVNfo3d0hz80ii02Iw==","shasum":"9f9392f5b13fd2d31221ff2dde8834c423c678e9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604670370-26f94330.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpVQdCRA9TVsSAnZWagAA8J8P/2PDffsz5/Eg+1RbPNiu\nltURPRWbUNcTgE899SrQCBADnQXcwmgOMs+v0gKfwP2FjRLouiaGWDcQ6/Jt\nO9nlV7NcitTwgSl3uxZ1IebutRInjzy9RzNdVkbLgnDts7tT+54AsAax+2/q\n2FanuBpiJ2v8/S6j/Uq1zkjsD4BSqS+5awSf8KwehMgbOQrzTQ+PipAkfEMN\ndJwyuP1lmtnp1zxVVxey63fH8nEtgRiXd1s2Z+r+JRSM02g5EAeM36WZpW2q\n7x8K3BoevCsjitw+YWCrxbZDqhPg3IiQO5TRWRp+wcwcpIMV36L/6iO0JpHI\nVCD9PBbkuxU+sSb4IoFqziXm96yszHIBPJ2HJnMpanaAAVcQU9QAtyx9KNwH\nJHE6qKEyw6SDWRpFk4HerQckJL30H5Herxheu/0ZeUE+gSbVZUDC53gFZQ2s\nyjECmHDPhLGnxNMhDg7dkf3aaZ3KAlS6BYu8v1MMzpRjB04bRJuTVu11VLw9\nvEinQY2wZ0ThxlyPW209zdrEhGP61f3UZ/5it/U7CroZvMyejuJuAGZP3FVD\n4Qf8auIT9p8YIClcj1zDCZVq7XV9oxdYwqnJnuVVdQ0NMGqsHEgpNBPpMjFS\n4BQqOj4jPX1ReJw0VyiyYi4Cx6WGF2S/UQ0v6dBmEeu5jzlb7Bm5WyRTFgKF\naevh\r\n=yuQK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjXLs9Wm9gY72AWp0I2CwdbCYGRgzN8oaV5NHCQbsFDgIgZZ/qq72oCfu3BMb/M6hOSv2G8rh1YUAsadAnuefxLM8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604670370-26f94330.0_1604670492785_0.22524802951310607"},"_hasShrinkwrap":false},"2.27.5-next-1604671887-5cdbda57.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604671887-5cdbda57.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604671887-5cdbda57.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604671887-5cdbda57.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PyYp7ATn9GgqYHnx2DT9p3hbddWBmmPpjaftmXm5lq31+zWpDaof/VehLHLF9lzHponBASzTx6zeGH+gZ0YZZQ==","shasum":"dcee58d05ee1d4586af61ffa9703764092e4b731","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604671887-5cdbda57.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpVoxCRA9TVsSAnZWagAAWuAP/AkPnfAgBUA3j5WWVQ8y\n9Utb38xIX8U16ZKWvNiDBVS7J1A6vJxkuxlBl50O1Sv4s6CGaGCqvJqLiFS+\nIwSq0T7LJZI+B2gJ/Zk3IJZRgHI6e7Hl25NPQTmdtzMqrLk8sXSdgCk2WZvA\nQ7i1UbGJsU0ei58hXOmpEemI5QdH2Wjnd5TLi8bSmBQqNsNb5JMG9D2orSUg\nRo4W2n/qYP07a215dauLSV5icIv/XOuXGdILIGJaKup0q3L28O0d0HdBSYEH\nTD9L8oTcVcr2fxYhbl6FSOxUGOrd2FGhNmbMX7u7ZFg/3aGA/V49D/5Q31tg\nJBXxGMI/oRvXlBwcvpkcsjquf0m+6rirS1fzlId0NmzwTjZYdc7poFDEJKHw\ndqcx3xMHsa6NhRuMo8qap5WhWnlDFrF1/OmqZiiVvxDmt64Snn7UQvgosagV\nhMaHD/LLJmfkd8rMEbaNA7G0xJQSYENABoSsrdx7OVddRML44uNjWjp0bapf\nP73kbP/kJUKDgBMlmALl4aCixvqZUKs+7tgVHwg6Eh7EfPMi6QAXbXeGQ13R\npI0iPOYqIG59vGMLurj+68a3tYQWmxuaicPnqn+yp5HjWsPEngTo7SqhaR+t\ncu0n3o5vSAGEYp581raEJNw5IIaMbCPyRKFVFPIHpO7RJKVnZ5JNfrJ/00c0\njhtP\r\n=jYcc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMlH6TUfYWdEizUqxcjgZwEkDawI6r/sNsU403S9R2DQIhALxDzzvIrTOTLbd26zGGL1GBcDznaARMnrDcfcaKzeLY"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604671887-5cdbda57.0_1604672049030_0.4645708870296166"},"_hasShrinkwrap":false},"2.28.1-next-1604679244-29fd0c32.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604679244-29fd0c32.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604679244-29fd0c32.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604679244-29fd0c32.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gxTHKu8SbZsC7+cNhtqNCjOFGmxzSshKruGftBK5PG3PX7Ozaoq82dvZELopkZMz539KNblwUfXqPr2gkzJxtQ==","shasum":"03f51fea14a6619fa819ca623c31b513dc4bf6cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604679244-29fd0c32.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpXbvCRA9TVsSAnZWagAAJF4P/isOBbBOrGdrl40x6qFl\nScU1GZMGu5ievpIDO8IhQtkz+07LRtA8tNpP4/M1WYms7pQNvTFSejPyvE8j\nXunVMdrPtPBcTCkLjIZ8Qstz0RQD3fFaa76TgAzaz/rwPpoXSaUA4PkSgKRD\nnIOyTcEto3ObTHVM7CXuThjLX0OWyD1TaTTS61MT9crbU8r8CgFsK5niIwxi\n3GFhSNSQhu0VUtfim/s0LfeSJ8sOD/v1yNi1H5KSe4r2+jq+ajk0G67IHQA5\ne3xMMd/kKetPdV8if/W+iX+aXaQD821XnkakKo0UEFbaO7Yrkv/Qpgi+0474\nLxGKdpXUB7HipaLCet15in28TYcEfWgyE3GtO+9BSpy9v1El/+nXX5kvTAEL\nL1QnEqN44ReDp1uSV9a7osfyZHjicGX9YlRytdnqHAu8vMnMkzdh2yeYtL5w\nI1wXa/G/LisPwLWXjFsVFBOThtXwY0cZUTEUYZ2WKy7xEycjyg8RU48Zn30V\nG/L3JzWZB04hTzkRvajnMOhHdCEgO5zYcN8m/3PdkHgzvn6zluPzf/v9k46q\nGWr1MaPZ7RgFRSv6m8Sr++ildJ7unbxGU0iYmDf+F8/EZdmrJspyk4Aqnbep\n1WzsYECkDemUjow3zTddklp4HJ0vTsyt8mhpQS4+1lmVFhjSuJ18rFX1NVpX\nlV0W\r\n=91ya\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB2l7u9yn8fTkSSBD9WfKSGYYw9UsvtdnRToE2Mvvf5AAiBvSfp75A195U/rIVNkkJYmphgZN8sX6VDl/0KvA8J3hg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604679244-29fd0c32.0_1604679406805_0.5753981541194026"},"_hasShrinkwrap":false},"2.28.0":{"name":"@xdn/prefetch","version":"2.28.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.28.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MeWCu4THsmjzNkTkgMOjUMGgvRzuIdQuUOLghuI7ji0WoiO4wLp7YfGVzQVIs4HWBqNUgul5sfahT4A7F5sjqg==","shasum":"14014d05dd2f936cb6776d098c9c9825422531e1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.0.tgz","fileCount":58,"unpackedSize":134987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpXtWCRA9TVsSAnZWagAAzVAP/35gGaCzagyDleL+axMX\nWFasGrY/G6hxY+KQf/O8R0lZErN/Mw1NUJLkC5YnUetveHvL2SCaSX1vXV8/\nqkd7vn+PLHqD1FI8bmzdYPyuk0bTVR1dhJ/rUiyneZnZeYlnzDRpasJpCoGv\n30cJwOnErL7CzY8WwVTS8rP4oRIKlU0Yj+fCvbHUBW2YOXREHiKJPMtc0Ehu\nJe/H++ugJugOHfNK7vQEtRTDyYpOe6Bb5QVhcjHYdRyf3lwBCTvEyqV3BqLp\nmToYTE7iHue1eW7Mo3VVaoKkhOXLU6kTQL+tlaEf7A3NKlxoOsHv0nN1DQON\nRibSoz05LaMLVg3a0VFmCxMQQDRv13VkgFhKF3AOzUfymhFU1qrM0+qydYQx\nuz6JLZirX7Q6Hy/8WGE3uSaqGPqvwxp85/lskMylsB2CZ2m6arcq1pyfOnqD\nx3Ts1B8qRaxwAypHhjKHBtC23m6GES3yGDXyUfGCNOA2oT6dwdv43wL07p8o\njopdPQoHMsEs/zxUQsKQopwVoJXKBLVsVWu8vwIxc2a+UOvpSbAVZWdU8DnJ\n8h20r0ZCo2tW/h5bUaEGl0olub5VFUVEIwj2ejTOnM62N5lbGhGqLfND1zJi\nbNtad0AfIleyr2qOqNKrhbDftT9dcRZ/J10qFBxzv0cLoZFTkywOFMZOJ1OI\niVbB\r\n=RZoF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9IGN9hfcSQt9uoNoY6+DU2U/q3fXccMbGbvU2rGAjoAiEAuHy+r/bwsjBxTSwQ9+tZRfr/DNdouKVpWNhSXpUP6qU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.0_1604680533554_0.26666757822800924"},"_hasShrinkwrap":false},"2.27.5-next-1604687061-7651dd3e.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604687061-7651dd3e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604687061-7651dd3e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604687061-7651dd3e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pnjEyNMHSwvi0hEbTFydpf4LxvGoqDM8wyXos1zu1es+uofrpReHG6fpNH+ULK5RaLvbUvDDygKdBGxh9kLKUA==","shasum":"bd1663be556f8cc58b047e0dcb2cb9c9342ff009","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604687061-7651dd3e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpZVuCRA9TVsSAnZWagAAV8cP/RKvw5BhubvwvZRnL+3W\nbsxdmjayxi5meScgWxq2BVZMEIO3g31622vdTDBfofLhgopssMhitEOqqYhj\nlO3i7g4bHcdX1vaCw4/TQ4VQMv/AIydzR/Qn/grN0y0/ROXeV9A8d7z/kOQr\nqz80qsmqxVPLd06lbCQsLxkh3SeozXo4bdviY5ky7WEzbTFWPRXEOggTVK2Q\nM0bwtUIyMXR6byWQAxJvLK1L2I9mRBjCodNsrjMErA7Rir/1bc/yo3/vg56/\nmbcsGn+ejrm9C9/AACXr0aZ7uJmb+ZfY2r5jI8V4JIskb//amLrWSY/ajF/w\nDVZb1OzrAWWXZvyZoTt6f9xXUGL5XM9u6Sl/RkqULTmmBoR5b9t2ON3NB901\n1AnRfciST33NzH84d46aqdu8QGJOW184ksMB3DYY7Zhf7vnKqm+5dICpclSn\nzE0ZxxEOx1B4LmdDknczMDOyLaOI3M5CSZY0BJTqyolDVsBW5GFYVN4XrzBE\niZG3ScNzdLbChgc3PVIoVFaGSXHXEDFW9iTa+aQa+4/gDTXoJG0t7SW4YBAV\noztloSyKgcKb07ER20frYEoysfTN7FmvqQmr4ll1stusJXxbHqXg4JtbX++K\n+Ee6ZgjXMLAE0zruDhtdmQk1ujclVYWdHrVz+Q58qwlNPqxXxNFyF6lI7btF\n/lRc\r\n=ZoD0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0r02xXtwBJ7wt+9dooa4vqVfGmqO0ZkLTqUCrj6cW/AiEAsDQjb4qxrbJt7kZwUKmYDqE1lNPR+Q/RtNIbH25HeUk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604687061-7651dd3e.0_1604687213557_0.13696840373369445"},"_hasShrinkwrap":false},"2.28.1-next-1604687141-bb46b543.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604687141-bb46b543.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604687141-bb46b543.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604687141-bb46b543.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-g5bw5cqHuzYPrDndjsszdxHJ+LtSMidrgobUiDpil/AlWQoMU+B+fyBBkBZvjvx2SqHfqqtW648AfqqGWFdU6w==","shasum":"8d18bfa3418aa8c22998b1843cce181f898d2e35","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604687141-bb46b543.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpZW1CRA9TVsSAnZWagAA4v4P/06iZRUDaX+V1ShFbUg8\nSm7zepNyCOZpate0QhqK584uKHeOmqhUxAb9JjFhC3sUdLWWRncgiad6FtUz\ndkyKyCyiftfYI9TDJgT6BTEnegMGmXGHfLPdtii12xs3JvlFcTc9MV699wN6\nU+KrU25euvFqXfrFTVKwjWAEFiCLhoOaVBbngsg1C75IayZqb5f4+wFkZduL\nPcHN8b3jW830UpMzP5auoMuBrjH5Kw2CEzrNAB7DFvPZxyCSc92MgK+XMyYV\nP9eZGJMCA/uWvOWjrPaLCqEA1lmzzJ1TTLGRzk2xnytV0hSNe6k0KOJIAKp+\n+UwGwvIbAB9vzfA8ilN0YWs8llffjtjIHqQMrXjayVN4yYAvXWJllYTaPHRQ\nLUT1Rva4/ZeQ4xMXUI3GWjeOBORPciJdBlMM3Hv120g1drrwfGRV1OiVmdEV\nuf9LVbWJaRfgxqqHyMI+aSUzEa6l/49mnXr8St4jLa796Zs4gxF9kUDy8iVM\njBK6Anz1buQWwX6tFjKJqqYmfp2dSXYMeSfSijmSuf8S9eK6sDheTFYjEx34\nZ9aYEKaIPpK+gFPQFzyFUFvKdXVrNK+p9IiETSBqvrJ48z+WEoE7dFB9hYpd\ns0V+WEpWaI7FjNATqEF+WJueiY2l0GdmQxgIPv1y1/hlr+Oya9CYpHzGBVMW\nNKR2\r\n=AE1B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBwMH7QUrNLmQNvP78QmphQ3XkNZMtHIDVy/KqRG1YJcAiEAnAn/+j3SHpMlTY7jyZVbpHh9o+ECe0IjxddhoiGIzbo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604687141-bb46b543.0_1604687285211_0.9659489586341992"},"_hasShrinkwrap":false},"2.28.1-next-1604687303-f3511557.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604687303-f3511557.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604687303-f3511557.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604687303-f3511557.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6B0rgiGgJXqvbqPpYBjfVRN8xJx4kULU5VWFGUWzY8XyowmR6sHAXU84rEluYKTpEGFpwX7kSEx4nKUV/kjhCQ==","shasum":"286e4e09c56a43e0ae92aacc439f7cb0620e2bcd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604687303-f3511557.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpZZECRA9TVsSAnZWagAAVy8P/R4khwq9MjD8AC/s2UEF\nBV+pOoma8GnNBnzQ7ZzfjCsBpunB276s5fsQ2B4jqeQjF/ke7l40OrEibRFz\nF64FFzhzNgQo2fmhfUB7BY4P3m48Bx9u8NGmeMED0l+FyGuzjP7nMcYz3k4x\nTjeTHuCp8FxCRjuuP6tgttT+oM/jcJIOklfNEOnmql/RcERkw12uZZx6GNwM\nTZCe3fGcdyCWG5LPcDov2e8GiCyej5brwuxpBWjsYPaUgwurTAw3XivZMuTJ\nHEGjnRuI890jeZgIJ9ZW4G1l2DBY6ZcjKR+qVbWsqFfRwjpNjmTr1ulxsrXw\nTwTmV+ZddWEFiIPa7KV04PBAQgOTlfJcxzkYoUu/v+qjVC0dOWPxCSLttv2h\nLBiGsH85mRKglqj4AzfNwlDYtWKEJvNZ+Rw49s4v+xahdxodgZDKo41l8g7/\nupWhTbTEdGmqrSvDhMDz9HbtrEKHBvUsyHATNVz0PRxSNd7cJ0dM9AEQMxk1\nFcDsaMTuD4X5OmxolTa0caZ8QC2iZOsu77pE/LkxUAeg7NOm7zSQMmUfZg67\nn1lO43rfXoyACo+HPgxz60o1chb82QqcBSop1fdT2h2/sKZF4/0EdjIp3rmA\naOBXI9c8qJgbMpge6OADXIQbtKrFoK9j9F0XIqvo8ygL1tm5VWto7XZV4QvA\numKq\r\n=S3k/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFEzwSqgqkRuSiIwBw9ltvfuQEcSVMEoiYCRS7QofH1PAiEAqN3BKhZ53DYZZFHZ0JHyLstzncLWepMGhnAs5f0bQJo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604687303-f3511557.0_1604687427865_0.525364029207855"},"_hasShrinkwrap":false},"2.27.5-next-1604688530-7651dd3e.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604688530-7651dd3e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604688530-7651dd3e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604688530-7651dd3e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tkANe74rGev9M20DuMz4CworHHqzjzaIU4tckcdYY1I4a6pnDUSjFd+OOXPSqlyBy6TN8r7/tOy+uxPP5dwi3g==","shasum":"130f1eedf6e9cb4950a0529526eed17a789ad2f0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604688530-7651dd3e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpZs9CRA9TVsSAnZWagAAP0oP/A4KT6da3zeInfywPFIH\nenLw+fwpeqf7lNhbRWhk+2sAp9bWlk5+HPhcJFuz16+l4fZb6+UykKIw+M2V\nBVRnrupCKmK6fTYaNWhsNUD7phMhFjQGPvGBCgYDmxlDd6xBKfBjKYnrx0Hy\n7dVYjUNAswCrFqDEaSS7sRepiC86tAjRgNrvM1/ar6zLE2wpJmgCdMtkdJdV\n+4UFfTfpCjUL+Xph24MiQ7N5k+HvTs2aSXBG+K/LJbbpEOo47uSC3/e3aAGO\nDlY5uUWTFqEiSwG1UwKXHa0HKo/OCIMGqca8A/IJFYvnHQOCW3eBRHw+kDyx\neZbEl2RHOaCbzqhugZL7Wk++j37Nt42d58aLipXiaTsSR7M81x5odSh4aTe8\nRMiFFcJxHGvYyeiMdSt4J/kkHlIodR93AZ5TLsNx5UoImy2pifKLgNiQMsOd\norrj7dw4ye5C1ZcMGCkoE4vp1d9544PyT+2Lm6FGDUqy3gK4O/Ptoa+kQ0gc\nKVxR4JFsxfnRncQxQWib5z8Ona1ntD1CsMd1CcJITiFhl2c0/nZ4pkfOIH02\n3AEOgZ5izwT1rlHw043ggglzgT7drOQGL8BrXV5WfUETGBHn7Yc0fi0NxjsH\nnLX4A9ssL0YohQAM7Ddq5u9vQVnCyitqUoVBP50jPLwqrU8KyrJlMMNcNXT0\nK7PD\r\n=P2Xi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYdS17rsL6jpVMv8anzdZYDhC/Dco8CUV8wvMIeTL9awIgISvS1UbuiYrwky0KHrcrmsHCc85L9GfSm0GpA6c9fuY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604688530-7651dd3e.0_1604688701130_0.17229329293736906"},"_hasShrinkwrap":false},"2.28.1-next-1604689469-f3511557.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604689469-f3511557.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604689469-f3511557.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604689469-f3511557.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LzJha+lY5EBRxBHyEOHpgMQPp7x5mkJjHglkAs+LvvAfKeIB2sP//SgWYpVYH5v1Bq7EJMDhuz2C8rk8Rwyfhw==","shasum":"1619df75b17d2f11e067b8a0fc4577b9a6aea0fc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604689469-f3511557.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpZ7ECRA9TVsSAnZWagAAgVAP/jQQaoaEznpffuxQAIGJ\nRQBpdxjBBY5ZEggRRLVxPOoC8M14ELKKpiHK4tvRI+rRhUg1iyQqHZScU8Zq\ntEw0x5H5Swubf0C7tOUqGQoeF29TUuc15ZO0mZ17WlqhmTPuzG0VNyyEhRsB\nBQK1lSsqke/Baw9NnN0lWjH63qGuKF/IuZtt37xvdkkZg0uwmqW5HrNi4swI\nul+Bix48TfUudnrHSk64byBC4P/8FKy4Q+WZ3hSIi/ihB++2EgG9kirFggoA\nfjQoUiFDP674EJMYuvC6mydhuIOBaPdw7+Isz40xb+LFDfbiB7SGtziM6bHh\nhKxfgx9EFQHUZFD0Fy0KnczAtZqGKFQvUeHHL1ItYMhPLgdvgL9vHTEsRqQy\nb/vu+TeI8oQQSDZzGqIEdz5k2RYe5xy3zOkqNQtdQwD95lJBUjuwks8YlEE9\nghb7zQv1EGB8uh8/F9D1gdEFaEnBmBvSfTDEci7buAa22CMRRSehm+nRlqiV\nkt8JrRsHL9UUmu+xAOqviqAqC+nQb42JhlvDdeTOTgwXtoVvt5CX799WJN8s\n0mGfYak3wZ9MUf9dmfyjSyeetDpSdRFrY6pVgrrZk5OyeguOp6HPEQscLHwj\np32/ov8DqOmRxwCCUYcXHwl2dbd9BjZ3Wi+Gl0GTXYxgelNVr3yCgDoaZOOr\nHzh8\r\n=sHlv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGY0RRg3rHED7hXJAsczkOnUZZj77JMgVGLbbl6jqRDQAiAe/BWbSDsegHLP6FVCzqWXVJbza4cLJ/F+4fyjQ3b+Bw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604689469-f3511557.0_1604689603841_0.1778707742038541"},"_hasShrinkwrap":false},"2.27.5-next-1604689659-7651dd3e.0":{"name":"@xdn/prefetch","version":"2.27.5-next-1604689659-7651dd3e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.27.5-next-1604689659-7651dd3e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.27.5-next-1604689659-7651dd3e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2daC/rPF2PeoFfAdt5/F/ga3tr8yRVj9BrIVeMRZHZu44P9742G+vYYGCD0DzPod4qdZY36zklf8sY4yIFGk1Q==","shasum":"804a9212e838f26a6214d9f8de0ec3bbc0ad3c1e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.27.5-next-1604689659-7651dd3e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpZ+cCRA9TVsSAnZWagAAyCYP+wV+DC3/buzTTtClF9yb\nDphoEnh6CRLT0wwJ8salPDgtyBKqFWhr/4l+2yfr/i7A11QsRF/nE5TOeTyR\ni6YHw2mBcjFNEqFSkZPUiJ8wMmlo4Q3xt4rjXJTxZ7hGmcZPMmNLL694zujt\n/2FgR+VWX0mU0BTelYgXWvberr+qI6rvOdNI2ZNkNMzXV24VVMkpHMPAuISC\n/+sK/e0b8xrijRP4i4CJcTlsrYPQn1E1rT6JozxV7EOzn5TCw2DS41HrE2nc\nQIsmxjB39JDL77jD5D9KEPHhpSBXi5zQaa9iVc79feqmJ/O28BNaLOFlTbSn\ndZAX+dtQjdmhPGSAtOTKivprkWG8V/gohPUDxBe9w8rtkb0wLBtv5hYPqpc0\nOsdUlW31Mc8kkb85M2kGJgbMEQkB7jvoJlAW/XoVO3GJ5zWEa9ut+r9YcMp6\nAyrkj5A+ABgNuBTxoYRRHkA8YJasFCXHvxJCSVjZk4GOO+q/58qmXAb2YUHv\nMDDML2ZgEo9e8sgVlY9P8WoLDyTBxKI0GsZXhMBkD5ieZZfq7Q24lUN1mPOO\nkY1gWE4Pn9KDBUtJZE/JPUz8mEz6DEDPIcfoBdhEZ5bnNYj9GYRIA1GxPh8n\nsYdKIBee/x25d8usMzrBDmGYCOr8X3wT3OZ1XBuP97+26kSw7deU1AeXXEum\n/wNL\r\n=+FP0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA9YzRG0HQi5oNByb7NO05XNqreNo6Oud9m92lETrBrxAiEAx9SybTEKieIGirG88NUa1vgTE20vCb16Eim15UHNZZc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.27.5-next-1604689659-7651dd3e.0_1604689819425_0.4676919153466643"},"_hasShrinkwrap":false},"2.28.1-next-1604691740-d7238ecd.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604691740-d7238ecd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604691740-d7238ecd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604691740-d7238ecd.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iSJiDS8LufY2cfFelds63s/JQLgCOtrUi4ApGSQ3PPqXwPWNa3GVQeEqyIqROsl0dea7lPn2vKW6ws+jeTjLTw==","shasum":"24edb11245500467100c05a9d9e491f8ade51a32","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604691740-d7238ecd.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpaekCRA9TVsSAnZWagAA6+MP/A/HbsC/M3fRE3RZQHjA\n0/W7ng8Zv1NdyemPuW/BeED0XFgoDYOOpyoXHpf8iUdFpazvd027fno8k1jq\ndc1nklAatnT8dilus5Sl0KQ4V0/R2MxR9xLSAY0l4Hj/BWnECbbvc52v0aeg\nWbsCEPULf2eQPZoTcV6h3eCN1/+6ACrBdzmIQYxtyqZxOe6Ehp4D4veaODsn\nekNSlXUXGA/7nekmW4280ATveYa1zmNtl0bL4NnlnPZfoxc75Eqcnz4hGqz/\no4txW9dgHqirFkkwmystHPQpvi2SJr6WfAj41KX7mtEln/+TwxE6mbSeoyJJ\nu/RWTpkl92j8nCAqMlJjUXshtkT22bvUGsQ+Rdi4VLE2AcO8PDiVFFKsfkfQ\nndYWh2L7pMMdtSOoTRkmHPD6ECsKlpaW4+T5YAp93gT8HNymLte22xp1K0FW\nU5edfx2qYEKRNXIgSIGW4X1ZszEQrx6djJkEJ4EsWxVw++4ITPvMdT115CzB\nknsBBHroeI2jm67x/QgSfItJkgQK/woyOQaAlEgbfeG+pZCGJsXtP+j+XcHe\nAPihntfs08gMGiQYT4TcFy9Xf+qVo4bDm59aU5BvTpV/iAuQeK3+jTIw47hx\n+Jgqtg9Ik2n8g1MZuvitexqk8xZZERSkbLmnBs+vAoX938VNQu1F00iUDpA3\n8aIa\r\n=5YxU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFaohNp0vg0Y4n6uuD9Y0GbIjAxXgUAJW5x6onypd8uEAiAo3qWbzv0K/y1Oz7FjLa5u563bukfEcZVlKu/9NdIFnw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604691740-d7238ecd.0_1604691876338_0.5444216793159726"},"_hasShrinkwrap":false},"2.28.1-next-1604692852-d7238ecd.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604692852-d7238ecd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604692852-d7238ecd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604692852-d7238ecd.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NiUhMFBp5j7O+WTBDdjjFHiYhsZ/TTzuwTcNTjeYnk+zmpuDv/TKJRHIj9a4ck6Lt82H1oPKZgSa38x3VUEnNA==","shasum":"402ac15b23d915178948c4a8e224ba656c4bc141","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604692852-d7238ecd.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpavlCRA9TVsSAnZWagAAzucP/A1gIX59oZjRWD2G8Rd0\nyvUvNOjgmXvSKF1XNv3WpyJRsFsSWM8Wo7kydgAe7f0MFA+JRBhXL3x6aD3I\nkNQLaFbK1r35+/TVvCcuYhDSvGiIxvkKtY97FdpNhfZLQDF9tYgp0n18DGaw\nef2FD1lqjB2pJ/rgi6zSeJnhW34hYQRpLj8twzaxddUYCzAlQUvf3/SVpJnS\nNe5Y46CrXlD6ZQzvGiCwX63wU4uQv71ib2yf6Oq06gMQQe6OmymV1depXs2S\nJHGxQanfqC9kP/35Ud14g8MHzwMkJQ+L+UVJEsH166kEMOL66IwAA5zDPfHl\nX/dJfOjLFDlW13k7ioEjoRP2glw9cqVJEvzgBG+ejgEuJWMbnaisjVRrYDMF\nNTeMpYpMzX+X6uIsevwvimQtgZXFu7f4UjsMYvN37kAjBBYHjEfSjBQh+Ct5\n2Fcy1z0QQpft+MzWdJSluRE4NXHdbnl2g43XFUM90gtIXUNUEYr5w7N9ALZ2\nMcTCAZO2Bq//TRoGEOHaS7YnGKBkCr7d329HDvr5eluBZKU8bDytMcdlPNWf\nJ2f3mcQXc6oT9FBqiyItQio/Dov5kwHxP8tg+eppkokGfzgEQjjAu/IqQkju\ndD+RvM+WO5EioncjbwNpQ0/0pVoEWmRv/eXFzWX8lOsrPh0aISL458kGpOAX\nSj0X\r\n=anep\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBBUrohDuWuZ+Ym3HUVh+hweMRSYh/Z7g1/GiXEo4ngGAiEA/IeOhwfJL2gh3iLUgY7lgq847gODDZ288/nSByeoiBc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604692852-d7238ecd.0_1604692964854_0.8617948941308793"},"_hasShrinkwrap":false},"2.28.1-next-1604693922-9faaa6b2.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604693922-9faaa6b2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604693922-9faaa6b2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604693922-9faaa6b2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-msJ6urrx4+2RhPDdMYNVUS+bXW8kQhu3NACTODNuRJ6uUy63CvVCi8iNXn4K1evTePEiutQgu5DMJbet/WQHrA==","shasum":"06c7cc92132680ce66351a2ca5678056aeb47f0f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604693922-9faaa6b2.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpbAsCRA9TVsSAnZWagAAQbIP/2Y4G+j6orPGTJBREceE\nq21mMtkrNnSxO4zK0QOz+YVAaqevT3Rrkl+jf0yhrT4gVZyY5TbUgf0qQSv0\nhQ4QFrG2eHBtSrwHyvqp9UA3kYv3khOAJxS+K0nZ9/qffm8BFi5SEd2wpLBT\nsPW2khmB4PBRO+CmzZRd/B59h3MAwaen8eVdAnXPttml3XakwSOvuI15oLZS\n2LuejKNzjz5D/ikRXhlJ5FnJkeGVtL4Hzn9CD6j6+tLsfF21Qtfap1Oy0dJx\nbMt54Pzq0EtjGDNPubMxOJ02VMn2X9Inz/MqGCSh/CPleUcrzbTFaYzQoQzr\nc13FLOAVxKRwLxqI5EvHUxXqAui5yiZXGVZmlmn66pcnDb4dHgNyZZsVeOEl\n0k5O+nApBF2CFtSQpPHw/lXzAP+v0+j92EH+0KovVn6qn2Uhh04I8dDBU1HO\nxMMp2vqZfOzf/K7OM/hWWZov9pnZIjb/ijeJK20HbeWNdc1B+CBTtrvxKGKS\nnesGCns1XH27yTAkynxVexWRAjSqoeoLraVTveam+21xV4Oq7BA0bezinQdL\nxSYRfmXIdBXry5LP2nFxOXumExlspKdkXhGSojentqiyjH07kFPYVYTkPags\ny9jPxqA/DT6JfamGVREMKd+et+1yQnbdHukbxlY5w0AVntviORnfl8+EJfZx\n1e8R\r\n=hGHa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkPiLuZ7FYhqAaqdftucO5rPWiG6YgQh7Yl8bUnnnuxQIgAVKHbK0EjuHAtMeTwx08DCi50LPVJZ/+iYReC+HS3Yc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604693922-9faaa6b2.0_1604694060228_0.996342657269266"},"_hasShrinkwrap":false},"2.28.1-next-1604695862-8fcf46b6.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604695862-8fcf46b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604695862-8fcf46b6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604695862-8fcf46b6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DYzFsWWLksg1tDv3RbXEQlXhwfkqHE/llvO0ussouMTD3cezeik9kQaB2w7gX8yUmeEdcIbtRMeGDlPo/7guGQ==","shasum":"88291cd7cd443885294145d1ac39abab130789e4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604695862-8fcf46b6.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpbezCRA9TVsSAnZWagAAKMoP/2rRXMy0fsnXrRS5NDd4\ngd8VyRokELtqBlXqyGvqblZJPcywsn+MWYEEwl8laL6xyZvd8x6Fg/K3XuUz\ngT/1lKti4a64TArYuC7qV+0i2IKcAuJ+/8bcERYwQKnHZZ9huHFUIvn7VMQI\nT3nk1/5RG4jxkDOuhVEQo502/BByKrdqgA1TdhGb2vrd0hEkGnHNwFo4JreE\nNWEpHXtklxD/Y9FZstYoU+zQffdW/5WOVjmiKha5XNu3VI822CoxceQISWRs\ntosKqhc56y7puUbZyWusu7ei/DlKfiT+gAWfjOMj24NT5uBBTEwINoAXd6Xr\nQNJvGKRMw+QxAZ1SlJb9q3btwKgc3SlyNmzRVdwZUwwdjlMiv1+l1d0/2JfK\nY1EPnKBdoKh6YbZN2igm7frUU5LZlbpQOMKh46XLnVDlBxTjjrDVNqzSiWcu\n+3okJR35K7eSAt2p2GkDqt15iqfefkbcTHp8RT5d8ZKw5Ys3TjIS27zFzmES\n7Mn4ijT2iZeaoGKpJHIbQJR27U9nVfVQwPGLsFbK3uHUHHm83MK7tNT/QN3J\nPKDRwmyhs0+KxBU3D7UEcKBCBkFoJRAFayOuAwrQOR9UmjOVvcvyWjMSsAk7\n8L7O5yTFbhT21frrDkMFcNVHv+zlEYU9cycxgkW2lOIYgm0u3/GFOdRUycPK\nUYMn\r\n=n9O+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEIOI/I5kpIkL79vG5M76HgIM3E5aNKvJDcLBvwsAG5rAiEAk5CwrOJt2syYcDcSBKTWC5G4W0/NSRO/nnZfBXFBl9k="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604695862-8fcf46b6.0_1604695986565_0.9461706249949773"},"_hasShrinkwrap":false},"2.28.1-next-1604796421-d647383b.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604796421-d647383b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604796421-d647383b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604796421-d647383b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WVGDWDgE9IBHdPzVHXpjzxOJ0akLNbkbK9QBou7xa/ADhuLg5gkLbJ/S4ou7T12Qsq0nFA7c8K/H3Bj3LUJg9A==","shasum":"755dcf6a1f7a9442bf8ca267106af34e0c7d6915","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604796421-d647383b.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp0CbCRA9TVsSAnZWagAAEoAP/RCgW1rNmf2lxlo3wqsr\nMcoP2LXvNpKjYGjRw9LltwADQWJuVw4udxII28dyidUiy8Mi3k+rFzsvEObD\nHmXHjMv6rdABkvC5HufCAsfGkapzttm+J6/hEmkktn968VADMTxx3O//uLxu\n+S6iFJhgsxmueFLz+1OYF/cD5JGcGeFkYACor8rfCYOogh8I2vqNZqJVHzSe\nQ4FJi1aVNPAbMzcikljselqOdT1iM2ePl5PRe9CyamhzH/8qImVjNQ/guj0X\n+UrtZvHfP20j6NWGvj6sHbjXAlii4XKaffmepbRQ4FOaZNrV98ffgSw5eF2x\nFmtU1wMjmVbI4+m5WBb8Ze4W3TyHwsJJOvpovNLhBsVqNS3QILpOzT8wRR8t\nXqF6u8Wvwsh1lrriGdWA1P1bikUICqFSBJe5txb91Dp95ZztyTdWnq9CyPtU\nrkCsHY6LCexPPkxRndJwPfudjjoKnJ3DpZ5D0/oLSD1U/H3zr88nLXuf/kLy\ntiHL9ybFgWC/WHkQ2P5uwwyLbzLjTmL3V4IWWZq2IlKvRPNbvasrAbomF6HW\nwgtGbxws/G13WrM1k224JanXXsgAC3yNhlOepKdVGiFJ16Kpl5FoW5g/wPHx\n5LOuqjJb98ztPpK6NZHvIKiE6TtzZUyGoRc9Tv/Kx6DnNoGlcYX35kiBBxE+\nY9Ae\r\n=FsHL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCm8pel05pF0LHx+LPoPCOE4O7saTdAnjyuo3E1fkY0QIgY0wpaOyezgFTBCsQLHE86F2TbIJ53njLjG01ioeoEsI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604796421-d647383b.0_1604796570727_0.6628652169479481"},"_hasShrinkwrap":false},"2.28.1-next-1604806140-d647383b.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604806140-d647383b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604806140-d647383b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604806140-d647383b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-69mHNfwD/8r3O44DzBYNcZ/B20hQjGR5F79vAdHSTpiLrmTndgYEskKauxebOWDMnWH725rA+9Hcdy8LrFkk3Q==","shasum":"1cef747249e04fe492972b6eb21796d39c22d557","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604806140-d647383b.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp2Z+CRA9TVsSAnZWagAADDcP/0WAWmDB70bEoaYjinL5\n6hfkGls4qsklLBcuyjJAyHZPKLB1UvREybsvhnbj+s9k4gS42zwOgoXHZAea\n+LS+MeJkF9DiMtuNbV/0+P6fZeg+3F6VqcGifVzGtU2LKcVtoVvXYEtaDTzP\ng2Izm2FLaHcYGA8tzrRowDUW2OdU0qJV+cgFKrjRcwAePFbBA8Qi0+bf8xnL\nO+/XNrPK71oEh+5/8YI3cOUUvPURWiy9NwyiyyrZYGw2qZp9HA+8rTazx8H1\nI9PTYPjD4wXaEDXYs0I6LzHIPgs8WnXCeCfysEhNnf9noIPTqaQDEqLHvHLO\nhK9JyQ7zQAzELl6Y77D5guxCWAMtxM7WUN3JOZ3fU+0aUkr+Xsyl/aoAd0s+\nW3lNx/jmw2o5Ry+y59YCx9MGv/F11/ClnlEW0+ouqwT2xPTYtaFDvMmmISee\nNZXo+3JcwqJehhIig5oFRfKzWHGgFxxdL5oHSasa6K+zDebBXRQ9w/0/j/1c\nihMI/xUg/ghB+D6+ph2viLZTAlgtmW+SRkn8eAzyX+fCb6XnklBW1YvT3Ixg\ndeXK0i42jXjGhCRXxmiloOHsot7E8avKKqkG2IeXOuGhvjGk4g3GnHmQnVM0\nFl2hXJc+oA4mjFQuDxYthfR9ReBGP6hKabxKrOM+v2px76u476yhIOURG0m5\nv52z\r\n=Vhhk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIETJKX7PQYVN1AHyHS6yQ8yoAFXzJkD9Adu59D1GCjgDAiAuEzeeC6feRfMKxTuIyFHEAdWS5R5IdKwJjNLWBp2zZA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604806140-d647383b.0_1604806270057_0.8409301354160073"},"_hasShrinkwrap":false},"2.28.1-next-1604806739-e6fa4017.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604806739-e6fa4017.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604806739-e6fa4017.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604806739-e6fa4017.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1drdQOLFkHMkdZqAa4zi0GvQVr99cXT92T+PKINtPLgMlyQqglMOAGD5CwkXolM6UAvtNV02FVsFcHcB6mEMkQ==","shasum":"f02718d911cbdf09f21829d7490bcae3232c1c92","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604806739-e6fa4017.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp2jgCRA9TVsSAnZWagAA1zsP/3i9Ok76F5HD9Rvk01rI\nOnosdtS+AeGe9FbxmfgdtOXENFacCcyAW7eZFDaiTlpjU5iCJVwt+87AZMyC\n612nJgQdQN734SfRI7nunC1W/jpphm/g3XS+SjvdQYMy+Wn6d6rpiR6JUOT9\n7K7rwZV4pt6cMBCqPt8hFPYmEgmJ+fKSIHQBTYlG66pQRC1Az3HxkI8seBFv\n/2hMuUQ31QJFEeTLJekdTzyUF6hAbHC626CLEbfjm58eYmCmxJy/VT4ACfZw\n/Jffbbwg/YxruvLhPq40gEUEk9rdRF+ozILJEBGwPniXmSwCFQPczgmukr20\n++FbbMLKgeyGqvSED6zcaNu8i7ThGkO1GSAGEE2KxJ4RS15ILq2dbOWCd7A6\nowlm6SIv3Gr4d7zu9AYWEut6FVl/Q23vMFlRy00xOfNmlks0cNC2vBhj2gl6\nx+jHGF+eRF1CGnH2NdCX2k5nHvQhuMPWT0/ZgI836/2JegzlOMf2eurqU5/E\ni/DmWbt+iTt4QtHeSn+6cbSRg9nToc6bERtsmL0Kgcvs2ExRBSzBC8Q6lySX\n6lE3I9TBhZZM2XqtSLa9iyeSyLJkczhaRgFkiPBmF7q3U2KNNklHLiFPcDWW\nJLLudzW19Bgm6i/sWDzVrfnIvZhNT4Y73SzuByJgBtgQfjzovogC8b3KBhn9\nW5u9\r\n=MHeZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEPW6rCYeKYOFPXavxa62r52NRfLrYY5+xVbnUQWFbR6AiEAhfCbu1q6oATKngL+QVF8Ve8mlT90uZqbXq2ir/ZwLTA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604806739-e6fa4017.0_1604806879571_0.25638116014472234"},"_hasShrinkwrap":false},"2.28.1-next-1604810153-ce9e66d0.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604810153-ce9e66d0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604810153-ce9e66d0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604810153-ce9e66d0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fpVBrDE8H8a97G7M5EaVdGsslg9mwRWtaj9dKKvrdeOD636HaESO3NNMyS/n39rkOME9by0eMOuYKF2O/kKWoA==","shasum":"779fbbc20a3f3a515ac69731d747a42cb7c7b5b8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604810153-ce9e66d0.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp3YiCRA9TVsSAnZWagAA9M4P/0JfTtE4dxYWghkvButI\nCAB22TqII3i++ibAHr10T/6/06Un92Qwk7Rss0F+1D9XZ8HIHmrhwd1ljzp2\nlWR6Q/HjPDT/WtZJB0lAjSZpd3zQ53O7vBF7vjrS27jWhKc+eZo7uLEuJI9Q\nw9Y0jjBoWU/g/fva8XF72p0lc7kIfhEZp7jITGNh+6dndDPNMw5E2lbvnThL\nL9BvNRaNDs4WxiQ86rOjxs+RT86nGG6AoksCdNg4tBmhWMSYV4CfAITm6Fkx\nqgSZ/wS0FzgldOaSGo+3L4qn9VUM6DYkCGvAmIYLWhSyDYXla34GZSmC+iXR\n0h7UwQlGyuY3Tg4K3L+iAW5yI2s26i2wqYAhoJD7elAPz3dIWzQ59NXY2RlU\ncjHQUe9I91uD+jd4UC8E8iUEgquz9nZ8kvV0GEX43hRV9xRsurTV/ThqwuZ9\nNgNAySGLwsI/rbShQI7cnAOcLzSnEmp/vSlYhlHUGnDAQ6Vjll7Cl1z+Z+Hl\n8cKGSjO/zflIf4BMCWWOHRUA9H61rBJ3+zKE9HkVwwe8U18FVeKWl9hfXtZd\n/ofvoMkJIUuJwiobk4AAhvVTYUdd6HDMfoFrGmvRN78uzUhVloPey460dK5v\n1eRQt9/4CsT93DNwUVhFlia2PfKDL+55DiW8xVkcszb3YCK+B5IMIMFhX9UY\nVDbp\r\n=/KRM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFHHsfaQsGAR9kQ2jXkkUd83nKZ1/6mDiAfGx6lLwtDqAiEAodTFpDyZ1uYCydO2d2YNLyGsMvl3WLpLlaY5pSgBnd0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604810153-ce9e66d0.0_1604810274039_0.7533568894003868"},"_hasShrinkwrap":false},"2.28.1-next-1604814318-af966061.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604814318-af966061.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604814318-af966061.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604814318-af966061.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WT/R4bS1oxjILWjUNT5CaSMbHKrOuwdEIkE5UBmy1E1x+VaK8I/oDv3qxHC2f0y8Fu9AhMneCJzRLzM5Kr/6tw==","shasum":"7a6b318037e9c98779cf0ebc58d739b4858f327f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604814318-af966061.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp4Z8CRA9TVsSAnZWagAAD08P/13SWIh5GdEYLGKCX6L3\nHjiJ0mvLy+E/kuZyHAQFL+BdoeRhNY5dWtTGjUTggJjM+z0pMelvAYq3FZ12\nsvhDu9XiuAwEhDVqf69VrJQn5cwnzYfPs3mRw+3FHzNAd1O0soI4PgiJsmhQ\n7ELRlgVxiCC34uvFzYdSYpnw2LCrcOq4dpc1W/HipPSYzbTgXZL0NzlfYa5D\nIjvdPVS7PhmtDmVByyOmYuKGY985p1oZNjZ8sen9CxPap6MyUfxMvP1fZACB\n+Wc/nHZaVXXvhLBklTwczJyqW5GJx2HYAZQFFjz5vJZQnD1WrOKis+vtwu9j\nTdK+Dqu337ERzoG8mscfY9DolcDgwslRDtBGTkVl9d7x2uZiv1JIRs24/TA0\n1gaDi/+lMBxX2meFEBngImdWeIiZGkxZw5GSKDrY/Q/Oh/DvCvvQ+dsEiF5N\nmviKWDTqY0oxgegAU5ff64CdlScjTqI9LxvUoGJAbR3ap4uAUw2seLMCAREH\nWBaYtmyfraKaOvv3z613R5C6wkyax43/665YWBG8NZQ3LXuyupn2RTN0uXgd\nm3EJuX/cPg2t8tibPphKTbXr96FUix7QuCoD5+0YVnruPJtAu0ZUnzYL8mF+\nLwWoLEpLC5kS7ZVsXetMvWA0H8na3N4dDfvnc/8fUYkHkd+Rc2YaEWVqGM9W\nMyJV\r\n=0ZBv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8yW0sjpXKndMHRgel2mmYbpLIhQNSAiqw4fvQen70ogIhAMJFQ2ViXXeO0NBl6YNulaqUbBj1Q/2YxuLIoRbK64Pl"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604814318-af966061.0_1604814460233_0.6034323933320462"},"_hasShrinkwrap":false},"2.28.1-next-1604845683-af966061.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604845683-af966061.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604845683-af966061.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604845683-af966061.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tQfXYUoXW/5IwBGl0db5cZasKXJvqSxiNstRB/JFVIuVgDkpumBoWjAN23pjD8g7qyOLiJq6hDnUrFoU0leB/g==","shasum":"9d8b1c0c264c0b386471c64645ae7c76744acc94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604845683-af966061.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqAD1CRA9TVsSAnZWagAAwJAP/RSEXYI6mtMRuSbuWoPw\nxVAEZHx1CZQI51x2ckR8yj4Glj4qGHCbV02QTqN9TAGvS4QCoPhGxpoQl2gD\nAcC+uNoRQ/lZxOHKeNrwDW6C6lG18DhP9qfYv8TkC+DyrywMToPGZAwoa/71\nFNfDOZorKMn3ShKmwbmrGGOepdRnhoM61N+bdRVmnsAPdo59fhFA6ZBrxJ0W\n43uoJAA73LB9OsfrI0g1Nixs4lc+ePxccfevCYK44e39yQ7JK2BnPabfKRzF\nm5Y83Gv3GCk26H5y0/8gud303e4f/hNslqh9RqxnwmHcL5KHp6Bxm0k5Aqq2\nlzzFW0FRPolpuqyBbvwHu4+pLMyYCwPogZbAiD58YKzmG4X7KN9xlSgpW9La\nv6s5SRPWPXJbpwTYtmKar1L4YnKbQ7YMYL3KgW49/7sR13TvmVpbeExHBYcb\n+92kB9LevAhjbdZmU9l4+cne2ec7p6LCXvGG5GOrnItCCuxsV/AFGuVpaXjW\nVxOyEfM/ejAftbFeKmhdqPkqK6Pe5EwNqf+fC43XYO06ceTm8g+rXj3N8Vv0\nH2HOHWhRWGcp4PnAuIm5lsWC1nMqxzDVt4ECEVD+rSDH0wZjbVYZzZB8+Dvb\nP+ieJzK/zY7bCH/q1HGQLHVYoLj6jUN4MFm4fSwEHbH+HyfFx560K/INkGW6\nxmeT\r\n=v3u6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1kyCqsGRDcFDPxrkqGXjTjwCC5fpNrYQtBuzK6kJhrAiEAh3tLkcBfP1UN3xVfsVO7EySpLgbPyVcxyvR8BNE4IMA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604845683-af966061.0_1604845812386_0.16525641825113202"},"_hasShrinkwrap":false},"2.28.1-next-1604852554-f803135c.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604852554-f803135c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604852554-f803135c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604852554-f803135c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1i6t6JgZ5MDntFjCxfI/n3AARdpZP0lpmeyVQd+WKXSqL834iLqra3ZzW+FqGPOWa3DGZjfrXmYTZb3+hFW0JQ==","shasum":"fd665c3f0a59ac917abca98a3b0488f74d75b188","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604852554-f803135c.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqBvhCRA9TVsSAnZWagAAMXoP/3hYKvtBCa6vmSH0qj6H\ntqlJL6EjMnkO25V7OrSM3nYT5sqfG/faQnpP36nKnGITzKTjDwpEyhQZsVdU\neGFoOE+V3vDPyXFTfe0VstyMuIWxywPCrEC2hYtvRsKUsKO6ck54ZP4DHfgI\nRlvgG3+wgTYFdTMFLylmFCmbwHQs8uXzGuX9SNt4Ppa/PtKNnw/RxxAaEWBf\ngObcQx2JqFm9ahmCW36oZwcb9zas0QcX/C0ZjKZpO99iAZmoUZtDEU0PqpxV\nU4dPyTETYTYA8ueAU2eHP2T1f517QBeLVqeZsxwfar1wUFfsn/+jaTIwsfDF\nRlAudtTc1U9/s8lPHMWmcnrSn6DLW6BTU4OLyLVUH1VmMNsGMPS7qyjLEJkA\nqEVSAaVhmuyZoxzq7BPcpsRu/HCtNGWYQUvQRzttD2KAnHZP4TgsnyCcFVyg\n5ffyd5ClsE5ADTMeE8Fb+O6DVykuol/RyxBvLdD/6aVZe36KDQqmE+Ub1aus\nL4GgYm+YdRLk1MWJI6kI92TmryDZmXXFp31DS9g0wIc612+qWEbG3FBsyFwv\nI+WN15snrs5bSH0/yfj0nuCNscn+dcZ/nsizwYrBLE8b1AgxC7wbqPCpLq6w\nfxDfXT6KvTJRFYmRSy9ZKgAgJ2lb2SS8QW3DuoxaWkXV98TUQ6euGC3XeT1R\ncrjl\r\n=/WZW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCckdDL7P9coN2ddoZbr+1PeKHmN5OnH5UQRMF/6tOVVgIgMYIZHdPyjbZ3728LK0cwSi+I/mJef4kWJy/Cx+Rv/lg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604852554-f803135c.0_1604852704845_0.8047352107436991"},"_hasShrinkwrap":false},"2.28.1-next-1604924391-db51e663.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604924391-db51e663.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604924391-db51e663.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604924391-db51e663.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WuxsB4/+7P4sw3gZBWZ747Lhg0vBLSeTPOXbOSXBESpmSTFS5eWXkImHKXQBmX/b1cSST8WjKTkutnoSGQRq4A==","shasum":"9652189e8da4168f34dccf07e0ed9f90d47d1933","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604924391-db51e663.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqTRoCRA9TVsSAnZWagAAyEUP/1cwlA/nVs3eU1QTLiXY\nFKpm86GI0j2OiZeuCOYhTRu7jyG4P5k8KQ3gzGyr3q+fU19Ioi1XcTx0hUqb\ndyYwhFoA0QLYpefdHwMgDEDieIF6CPNvD8VXi3Ao0bZfdrxta9lngNXw5qP7\nLqoL1s6OWD8umY8mm4eHlEzj1/BZknYBB7hRJbe8gYoFHp4yCnXqCO9pc4Fc\naRCVjqkcUSDQbqQxASMA8ZBYa+/Er/h7dSH1rVWOppmNlnzkB6fsEjssWVDI\n+0gYKE71IXYoQD5FKAx7C2jipjADnYvpyx8Jl2XbjUPDbS169oC0nnbwqvWu\nr0+NcgqLo3gdOM6hTNthiXmVFvRAwdmrIr0E/KAVjLMv3DxzmmVdkV8krjX7\nutf0DywAESJcODrauo/lL9CVhLu4Uu6muywN6BXhDSnjit4Y+uktP8j7oX9c\n2jwpKQchMxqALnSm9yXS24SQlAMcR+u/rnCyFI2Zj8hMkPa2H9oS4E0msnVC\nvEutyMFd5E0m/AOzXP4Bcihh3xl7l/22qEznsxq+XefKXDYBtX6wa5cKSMCd\nnb4AvhBBHa6HZc1umLzM1cCWNnfZjm4eCKUENpKBM7Bkd82WlltQVAPQNE1C\nWe3YKNtOberjav0AvxWWlH0gPmmdWINf7X7eQkd5WflKWB1oX/A6QmvCz9CP\nVgFf\r\n=kR8K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzZgJB7xNw78loYa8ZW4qjrCx1aKMjGkBayIjGa26OqwIhAODHqjiD87edwWtqYaSht21euWKRxH4JGVBN/N4CLHYw"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604924391-db51e663.0_1604924519568_0.23775965291721501"},"_hasShrinkwrap":false},"2.28.1-next-1604926653-94071823.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604926653-94071823.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604926653-94071823.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604926653-94071823.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+e/pELKmgKgKHQRtvFL8VMfCR2ZwP06YxLk6bPqI5I09LcJXCPw7nQS+8iB0Siyrlk8mYzDHJO94HJLE5NX/Mg==","shasum":"d0bdcc98387499c939a34153d5414936887c06ec","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604926653-94071823.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqT1VCRA9TVsSAnZWagAAWmoP/1ytCpKfcCvDlzJ/3snH\nCyQpEio31pImPHoRzm0AxFncrK4YcIIBFg0HSRT6StRAdWCeC9V1/CdMyjxx\nm7SeE5nJ0ClsVQegffaUvds3ct02LxTc49cwNuwSaTPMAC9hZwfvNS4ifd0z\njgAXSMXlqVxhJqk0l/kZ0ekuMeA3ufWhgxEK+rDvUlzJWsaIGNx958mOfcWI\nddZcC5cOUrNVAyDFlMl4NUEfu//JQc3zBd4wQucH7h9RiQDc1U5iOq5ZibLn\n+IOACPFH+1Py5mkSEjlxDP8Q1QLaY+NczcU5VHuI6WXm1Zb93RdqMmnIwNFn\nq3HbfNgMFYEJ3Sch9KEp8yY2piXW/lhWura9wfMlmmiKMBezxDMRidBfv69b\nxCXTrGX5QQqK4leUpBidmn4bMq5+kbdyZNei1robNKO/T+cmm7BtDtSbWk5f\nu9izx4mtA0EpFFbeHqzFGAZz/s298gpT1GtD2gK7rbvysApsdPu5Xg7iOmLo\nFrP5Eu0AM/XUE8SNfNWjGtCEDnEaU3UBb6eS7ATDf7ODqhCFgrkVevSLEQ/n\na5yDNXAynz9EoKxcO5k/0Axb+bmioxK74hedVbOVOi+YvIjCZWD9R3/sXp8J\nRCb8j1cvYZ6AJX2mLsEQglYcH+DR1AzZszGkEUZLr1lfhGrm+ALUTXWip1m4\n5abX\r\n=cj0K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0k5bOdLFz7XuMc3If19BRwaULJK0RocGEFOZGEpK3WAiEAgGar493/SHameZvvKnhEFPralversyASEP4UhcST+aE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604926653-94071823.0_1604926804540_0.17142371410735735"},"_hasShrinkwrap":false},"2.28.1-next-1604927316-19869793.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604927316-19869793.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604927316-19869793.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604927316-19869793.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vbdhrlo+u1JWsC/KrqYETIKs8dxHoL9g5GvvvsAL6kDOKApI42OlI7ZI+SfAK69O4w3trL7gopnIVlaEPB3xlw==","shasum":"33ae9ddfac5eca5eeeafa7295a2f7846a0dc4c7d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604927316-19869793.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqT/bCRA9TVsSAnZWagAAF5wP/1q3/O5kiOApHtDSyc3l\nNvQC880w/klJ04RBieO4HoPs2+V8OVkScsHHJhgFcAlmfBa93hQnjj7Z6vz4\nvLWiPga5f623cDg8Xi6xWEhljAXUV1Q5CMtydKtUvusuUjdtX1io2vQKSRPU\nveIzX92ZiO7tabZRCkgQ8gqQ2BKYQIzt3dV43s57zgHG1zRXsTFflrTocJIj\nFg5i/LDUASJ7FxyY3iPTwt0zJAV6U/CaTgWzSvSupumVBfcFzc8NTSXUNf86\n9YfFsFAaCpHM5smGwGeRe7MWoaspegBWEjdtvgqPp9VjVe1oshKgmkuppdP2\nhQXeJucS3feq5W1LLbV9t7fuLIVlk1svJo3KQx3BQTqfVQzeddlR0brUrPbQ\n4Tgc1XvS6ELVG/wjz878fzz8HI4iIH7V0iLbP0/wgb+3N81TR35UWe5CTLcs\nI/rU41Tio7YhZzqPg6nK9S9LNIy72IUKLipP4D6zIXRdw6o9WpdI+LRm8gfR\nQMbL9KQf10MAd1qUS3hg+EZcGpqp9E4dShKje5G3RiFE7y+cG3YzxL4jqskr\nd/QB+dSOxcyclW6fGrJKB1d29ZdkpEpHhBkI5scZ4wcabH0rlOMNzIUYc3HY\nh5xZtHG/sHBDdGBg7ZmJv6OfNoZ1lneOGRoHpsio8k3Dk/sF91JSxBL8F9D/\n1DVF\r\n=/bvN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCH6PVJN2O8Gs2SkozuGnhN7NA54NUACmOQpNzGzilr/gIhAOe0o7YY/A43zw7i/ba7LjHhfnKbGx9FNxgTw4aAUTOU"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604927316-19869793.0_1604927450765_0.8173095240131678"},"_hasShrinkwrap":false},"2.28.1-next-1604927756-45d59a53.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604927756-45d59a53.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604927756-45d59a53.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604927756-45d59a53.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-22E3ugdWy5hJ7j6dH+0zI5FJUlKl+cxwYtActT+6AM537nw6+Y5eS8EIwvc5KFCfPqokVEkDOyMFS2TRG+S6yA==","shasum":"8007d1ccf1bd8ad9ea61b11a77222930b2f3e468","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604927756-45d59a53.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqUGUCRA9TVsSAnZWagAAv5gP/1pBFvM0RJ+gIkQRwblw\n5GWpzdLpzvig5E1zQGZ5Q34QqS2VwkQxIEoMOKzxjt6SjLJwYjsf7jsLkuQE\n/iUbrBfPirsxSUPVPzl9E4EuE9TsSsSqVgjx1h9nuzhlOEOzU1+Y+I0BUS4J\nOE+AJtbJ2gHKbmtwQILbTENAHRvnTYrYFLgb4vZ8dA8le+pQaS+1vv1Ct38z\nGWbbu+rSzdx8VxOMpC2iybdCcZCCVz4RNzvIBPvpbTBJO7LbdR99apiz5J1A\nDrO+fCc4/6EZQTHK0Qrc3+Y6Nm3cL+hwMAgOdKQvnXTWrbTK/y0ZKBzX3Pky\n+BE8VM86TUZYKL6hT/50+zdGTxyD62Ppa6+W15LRPtX7cZDys/npkOQF4dDJ\nB+O5NkKjFxLpl6O/sBrE5Bl1ef2I3jP1Hglncn6TtDMS8/iF7ZYM9Rji3Jag\nvdXuoe3SQZj9qYQJZK2C6VEZ4KprybIAQ4ZZTsnuAvZFAssoImon2BrVqQRO\nsOaNv+opRMcUwZA+4JBOe2tso8mMUnwBG18sw8QIRMvH9DJlyYGqlF/pbwjY\nv8Cwpn1dSyU+2wJV/9Fhf4qNWVblmsI7ygE1c7VK0a2vkCJKUeLjEB2PP+wp\nc29QpXqkCJzBmW0dzfpfFcEC5hSc76kQYVXHCvO1BqO3MgZFjaqFOvUrbeFS\nANYU\r\n=fW6f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkvpI/0iUoad5zOpT2F/MjU1xWPwaxDIWn51eGpIZ9IQIhAI99etbHN1IFo4Ya8JM7W7l+i9vbrOYA99gU2LG/kSeF"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604927756-45d59a53.0_1604927891950_0.7614797422692701"},"_hasShrinkwrap":false},"2.28.1-next-1604927821-eb204837.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604927821-eb204837.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604927821-eb204837.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604927821-eb204837.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-B1b6xy9BiEuQ9uZsDggjHLARMuqZYofDlOS4pK4sBNwvLqTaiQbvCKMYcPhoT+IMdwuLKCTdTAUhgui0R+/Q5g==","shasum":"0bab1053fe9f6e1a36166d9b81e112afe7f439fa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604927821-eb204837.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqUHZCRA9TVsSAnZWagAAVlwP/idLkrQVaYBiCMR6ZCUu\nj1ICHLT2eSCWh0iKaC88971+6ebAy+FIVJ1Fp93ResdDwzE5nngHp82S8dnL\n7okjK2pXE8nDwNBLgYYqvTTUvX6LQp7NaoWFUbgFDNSeZKRsT2P3O0KELTRe\n49S30NBa/7Am+0a1dWw+WWUsTxGueoO0kK1MD+xRHYdjLI0p2VND0Mr+3Gkv\nsaCa7R8TpmwFnrSyuezxdk9KneGEh5/0nmMyFSuHZJaE4+jWui0b7w7wDeH1\nYgJNlkP1c5YSQDNx6IsF4W4+SX8EODdktxOi0Cfg/cBBTCQSt7jBvs5/SjDe\nfRnkEbzsVfX7DGqye4WAYWqTx8/wr6kDsP0DVEXmeVy/iI8WGfwSAF1P0Ijb\nPnU9V64PlgdoIG4DvhPkgrWQnkfiQwJsuujQRp6mX1M+b1hlFt5yD44tGsQR\nCPqmO1tD0p79isZPMZR/LH+rVJdooI0XxSG3ecmS1atmeN21ZrDIEIrOP369\nab2CZ9jp6sFQ8RXvmAtaPRgJ4lzEEedY86GCCkAN9Q0yMEm+Z9KWeksn1ABT\n1Bk5hoHYYSbI7ci7zSJ547+ILU0rrPUWx37aC3wZ44wN0bvJO5ZLtfzcbBf7\nLl5rtwmDwFtBQhWxKOSMwxyG66HQzsaeXas460+QzFjFGAYyGWjfm6Bi+GCJ\nK3Wv\r\n=Oj0n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEt363sto8ywgK1QwxEJwRHNmerz7bObSv1C2/9aPxYkAiEAy66kpl3YifCpnYbkUI0JhHtOvvrWX7UtqYde69n0Rb8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604927821-eb204837.0_1604927960603_0.34908952712014174"},"_hasShrinkwrap":false},"2.28.1-next-1604928384-45d59a53.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604928384-45d59a53.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604928384-45d59a53.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604928384-45d59a53.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-s7O5APSTQftLIt822LYDgovpUFADDLw4Nu3a9I1Js3CI5UuTImOPPeSrtnF6SOsRWcyewNYcuJg23lxMpCTw0A==","shasum":"0087e824063645c2bfd02768465beeff4cb53af0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604928384-45d59a53.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqUQKCRA9TVsSAnZWagAAKLQP/RtrfylFkMI1S56NPdG+\n997HyXXQKANILE3q80DKTNqo2rKvynecVobuvEOwqgwmmrmajVqQYO8eYwAt\nWM8PCc3ZbYktN6NfvRDzHOueOYZkaPCDtPhX+x1Hbc7GVljT1e8L5ksHAoiR\nhE6FSRhB9hnW4sU95oHqHo/R1OxVVvV7rFsIS+6c3AfahKjIdRspY31qquNu\nYp1HjMk6E6Q896GQkhmbEsr7vpN4y8M2lHRwZkoFQhGqcwFO9DSzxKDgw9Y/\nTij+AaYUNYzvVDR0oUy/yhnU7U8RMSpn5rYW/xxKkWvGTah3wE5aNw1nJs0f\nP+2D38bCe6cy4phMHEzQRaO+1QZWC9+bLB/ViSYhcPM/ldk/+U9AQPZhTBrC\nd0wMhyB3/fldr/xuOtXUx9MtjAEcbQ1NRbG9rz7w3yg1MTRYjicTFxSlb78V\nXfUI6eI1/JIho9x6cUiEpTE96My4NsWXtC1GNt4w33nkhKs647/bRsFESaYZ\nrVNpMqg5mNMWM3j+rYSYLMIe3BaDdLaYifACf3e5eMPd1ig8/g6fVYxFuBiG\nKZbYl/18DRb5/N4+bLseOUWdCtPlzrUN7FGrk/b1NWYxw4p3b/gDTlk8oTJV\nklBcY84nzCXJB5cqmgyP8dVa+DprccfvgvTxRW9+7RYHJ0qjYgp8YPsUmrH5\npHtA\r\n=r56N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4Bv4fdIm7kCKqpSsZxlLpTWfrIK+m2/CisvnSKAVQCgIgS2xZjqozu3Os4noSs1AE1rnWbBHrR09EctI3j8PlwDk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604928384-45d59a53.0_1604928522226_0.7801378084460959"},"_hasShrinkwrap":false},"2.28.1-next-1604929600-6cc9592a.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604929600-6cc9592a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604929600-6cc9592a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604929600-6cc9592a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7te3pip5GzLFUyDvYEgWbseyj5S8PTpGkdyTaS/JdrGqQL64YoKl1TCJZWB6Yz+cTdeTogKLIcgp44Lrlxky3g==","shasum":"4b356425d9ab18e3e06ea2c4afa169e58a07d74f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604929600-6cc9592a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqUjaCRA9TVsSAnZWagAARdcP/j5DdT4U1QDqdAada/RK\nf+QosHNAGgiEPpSMbS2cv2ia0cWSU/uYvvtfwreOBrRTgLsojCo4EriEm+iz\nTwp+qYSJPutn2Q3TM/BmaLhrzEdDPN4+C0D6cdb4yCkTFICjr9MJtASa7uKZ\nHp+ETmiOpG/z7zFM1zfRSRvZjHUuSn600J5Muw4/KzfOqiihjA4ScqhTseCA\ne7l4nvKYqcRdu1MWKYw0Rw/Nf41aEG7eA6gQbIKs1VwQFihA3uOsHx3M1jpS\n2NBgGXTckj8Egk9YfzaGXSBzIcEEn2Ff/or5gegqasq+31PuQgWRKYyjOuJi\ndCO4ks6IYbpeRjVKe8LbObPycowGG4p4uVZMfbn1UrReTtW3tsuYCwVwrWcv\nkwhMt7ocHNqmuVHVH0qp/wenviEdGsICvaW00ZcR2NloB6ZSKMp0xLB74sj1\niulp739/gbTQ3VxpUM+jdoRrCz+Rx6OBtaY+lH0KU7M0CjSlNAs4Fj/2TOPR\ndUNGHvHhii8TJ++co/qhrolwGYw0vbfPtl3vLGsQOSlUXpaX7v6WGVQmNDQx\nEdK0Y31sEe2vyy9LHHCFawyBnAXNU2+o0ZFsV5SNZgIpBlIMlCosuDOTYZrd\noeOPNnK6hzvEhqb28HUTtO70tFEu+yN7Hfp5pwvvDWSAqoaSZFg8XrNOoUF3\n1zxx\r\n=8a6S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoWg2cJn2yX5oaujIzT9+NnrWh4tji7lh1mKfW2qALkgIgRRr9UldDnrvh6IOXjKIjbeyZwqY9o99rs/K2P3exDsk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604929600-6cc9592a.0_1604929753859_0.29476566271115745"},"_hasShrinkwrap":false},"2.28.1-next-1604930281-f70c5165.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604930281-f70c5165.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604930281-f70c5165.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604930281-f70c5165.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4tlLh2RI4GUT7nWzQ+uyvTxKGhcDbYvyzpLTmUmp8AahKC4L7Ddyo34MUVdg2M92Amn/7FjhNg03KbX1tuJqdA==","shasum":"288d3cb6869425da3c02616b4a555059b34293c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604930281-f70c5165.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqUt5CRA9TVsSAnZWagAAKs8QAIPHthqyNU+woDzdAI6z\nf5UzP5l0Bl+yt145Eombi4QkuOIPLMktFOpgc0ywSZRR4DzMsHJ2oMUvuulK\nEAIc+Zm1Ne4MVbH8WPFEZb6emJOpy2mius00OT5jDVx3YJCdjTlofRg30evw\nq9lRpL1nfmezM352FyCNquqS77jzFE9RV1rozUjXiZYOPS13OALmDQKqh2fj\nmgrCyy5p7qyWUU/uOiQVDvTrb2HNzvKXZHnXK0oa8yaOFa8MVcybbGwLNcBH\nfDmP6Dw0f0KaYslxiz0qWypEpL2XDzsqJEOTw1BcEWxh9Etug93P7VoQbx6D\n0ndaWE4dNs9THHXVG6b4j55erkFAaKHm5FUjR33an7b3JtEucsn24US5fKtz\n6CkXhpk0XyR07+fDj/Ly4mMgyJcqwoXBgWfN2xbiXiqLs19So7/3nhp0GLqH\nA8yVmfrzvtfjuGUpXCifSLS6cTgXBi5poVQ2Pk5OqzlZJNx0kmtfWYrDl1xE\nugMFv2OLe89TPKX9vHm65Ej3ePWSTS8Hd5zrSJx+M96GIJk6Emb41dZBhf0T\nYO+t5Ko651GKI+TvyorM0v8npCOQ+orEVQQPQOg6hCcHIkMeAwXr9k2LZAmp\n4oQb9Q7dQ8aDjSFleeOqdxvwISeqleypdShi9krkynH/aDyvsuJtGqS4qFnS\n+0yh\r\n=4JLd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcqXzN4pAEDZkR5aP0X2IxlxjOF03U38/TzbowWcCwwAIgQHRQdxFBZfMTlxy7VC/DCNH65/1u6HH2VITHR3GoAe4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604930281-f70c5165.0_1604930424525_0.8696757143042846"},"_hasShrinkwrap":false},"2.28.1-next-1604930388-d57a0973.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604930388-d57a0973.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604930388-d57a0973.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604930388-d57a0973.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-A9RoUuXg0LijiEbghZdd6l/q5E8oueLyH9IKQMJdh8vGgDxQPYjiEzxeAm7SnvHf5rc+2M1tibUoU4Xn1i8WrQ==","shasum":"e34744702a9d634e6f595f3d6f69e7d9d61bebc9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604930388-d57a0973.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqUvgCRA9TVsSAnZWagAAl+QQAJjtmn42y6JTYUfyj0C0\n9kz6GccEoczanR1DUd36dN/Uypwrr30mMdMIbibp/voFk0xGWLsTeRPhjjFL\n/NU5Ju6qq8E/xmF9XoNjEUxCxvk6FhHzS2yNs1POpPiY+v3HEwuOr2eCyzX6\n13IdbrwH2LBJxNlo3EE590Hali+vFJexZFwtzJZfH3ni98oM3vE9kpV8utr7\nHYtBR6VHa7dc+tYFBPnLhaMYk2l+wlciPDZUE/+WDlApo5JVv43On293V8dB\nQjd2Qt1Wm/x57ZXpvotfvIwm1cqk7mh6DJ9kHvx/sWc8uR4XHeXGQyuKQKqP\npYHHfkvzd+kl/44FeYApQVxkf2BjyVHwZKwaxhWMdVd468XswXThG3PcYWmx\nebCKFczrmL18bRCRSTE2OBkKsiWNfvgAcDmbQzoRDgQ5P4Zob9xckUz3J0YX\njTax+pUqwEH7iZ6KywxpamRbe6kAA4HdFiTtAILqTP+v0TCN4eQH1LDGQ7Gz\ncRcjivxTBrPvsZmPsIeOs+QdETQoUFdKsHEWZefBmz1ny+vm6bZVkJ3Y0VFj\ni6StGmlGsT76ixQKce1oitZYbqZ110IBNw9ZlmXw7DQ4ipDhbL9DImCFqdkf\nEB39Q2ryERphHMK1R3pm6b+syl50Fr1vSebbKDVBzh7/g3jQZi/g6hYq6J22\npFs5\r\n=b3sc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCp46izD7CGJLXHHty1rIrhpail/+ysKLoChprBo3Fr9gIgUCcu0BvzD7dxFmUCRei8NRP03+MfJ/YcVBWVAIjflmo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604930388-d57a0973.0_1604930527490_0.4149819747989576"},"_hasShrinkwrap":false},"2.28.1-next-1604932831-0769ffbe.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604932831-0769ffbe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604932831-0769ffbe.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604932831-0769ffbe.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qinxDW1lkrbCHYO4xdx4hepYLpKn0KtOR6WvUJ+NVy3V3+yAkoxRZ25Ko0o/CNfiIGvdCLnUkOqH201bVE/Qbw==","shasum":"75ae646870590c599e665cd9c8635f52f73f3c19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604932831-0769ffbe.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqVVyCRA9TVsSAnZWagAAQvAP/1wregHnatMNdiYD6rQS\nAJFi4YZDs4GTdRZfRsdnMrpleC7cnSK+X1JMaqMSM+ovRqe2gSmkt5Vnr0fv\nteGUhpG8BfqSeAf0AzcdFqt1Y5hCdDvBHnq16jJ4I3XM5m4nnLKDSHn/BABt\nhfDfCUczOmFuiRDtA2s/TVtOI/QLoh5MOlk5Yet3RoqxK99nNJC5SOFCV/DD\n7K4YrUaywYUT45Bjos89Vwpc7ahLmdm4cd0ihr9e+/u2eguYVwF7tXoWY8AR\nMM7hQ9/XRgVmbBkWkJ6crDRcDr27l9KlL+WSl/kxs5N9syXzWdoqRhxUOYvk\nxqDRs8lwzo5wE8o54IK4zRlO1LTGf+OygEuENJW8Qtu4aXg6y4qXsIYYypg0\nft5hUBbwrY+10EQdcoCdfTZjz6YxiCgJjMMdM3fktZFCoVlOzhon25x4N9Yz\ntPORZXcsOWmQrEENxSB3aq7z9TqqIw++0BvO8eWUAMqpexu7NU8npQqaE/mb\nIKq4jBsE4DDyPqKWJqcrs9ZlTZyPZRi74zkH3zAbTEwbnvTKE4Hi9/0GJ5OQ\nUKrrgQ8CBtcg5BiesAbSaTxSsSBFZSyrlHZy8yHge83J/YikLhsqaOnbmLl3\noWNoaL8eVglnL1/Lq3OXCARIx4I4lSBH52kDJRwhDyr7m2PA3746K9zU+nk0\nzSlG\r\n=km0H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEb47p+1r7VrnvURYnj4vrgAm3hSgIrt4VfN3by85i2wAiAnEwOqw7otr4ll7zksFZvD4BK7W8XoCzUWETVLw9y3qg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604932831-0769ffbe.0_1604932977699_0.6898021259642171"},"_hasShrinkwrap":false},"2.28.1-next-1604934988-9a50f1ed.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604934988-9a50f1ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604934988-9a50f1ed.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604934988-9a50f1ed.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LMr2hinMFijExq7OZjYkKij+R5SrOdJdiTnV62WvcvnF9Va06ciljJfR/rAL1T/8WPKAyan5uN5kuR56raX0xg==","shasum":"825795ede78cac2a78f40de2edd64d0957c457ce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604934988-9a50f1ed.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqV3pCRA9TVsSAnZWagAA5j8P+wRhxuIl8joYqJFEqLs6\n+UHyNJ8asbqtFWHfUvQq1ltGWb+aZYwUTwGs9gYysXpmxLhSO5clZKgZVXnk\nlxxHfpVp9SRDIpT9sz0CKBlPAEmPrdwCQyrc6QKlKr5lbdpN1sPLOhbNX+UM\nm8crUk+Rbmwb43w2NHtl6lFx12KymjrhP4w2oKCsTFCixx/URu048v7nWy7w\nuyL7HBXIPnud8tz1M1B51i9rhCQRaO+dNOnFSIGYiRk1Llmt8ank/XLhv3Qq\nV010A8xbHMWQzxa9DPSgJwOVd+KI6mnyAoNTF0RyirWJQQFVfQuUpQGohJzV\nTVHtwbGPeoxhBvyX9HsdeRNMPXXcRizOMnlCohSdoIe+w+evU6JNrLvezuAb\nk9WJNFn88+d9lrHO8uaN5rSDfHQH8R7ZM8nS+XtIhIce3Qs+u1IewKpNf+me\nibZOBx7ZQbinfBNOq6LZe5GJNW0B7KnWCYgZ2F6gf6YzKSszu6OX0pZD7WMx\nBLcIHcwSlugK78vikosPw0UvvW0rvCHhFED3oRIO70pd5qD6gFeoyojUyTF6\n9GzBg8ICzEgHNuEXckBaXfEhHKgs2k1Mm1Zzm2YhplNmQYXIy6Fz0MI0mC2i\nMTNmHGX6O82cg6J1iHtYx/AoKY5rkcy7703fnzHBJeiDprwuMlyQ5cur6Rv5\nhms3\r\n=ocUd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6AxV+SOEDjNAKV/MsFVVWQeCBhT2WOMM6qNotOSzlCQIhAOxSj5AVmgBrBA7lvbLSgVTpMzFXiaCrM2tqF3FFiAnS"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604934988-9a50f1ed.0_1604935145018_0.1629036224531737"},"_hasShrinkwrap":false},"2.28.1-next-1604937150-08106f6a.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604937150-08106f6a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604937150-08106f6a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604937150-08106f6a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Nhff/Jhc6Vyw28+kn6kvbzIQeIdDRzrvWjCKkZTnip8YrvQ5rdOHyuDYgEKqJyBuRQm6IAFygM1VI9IB+uxd7w==","shasum":"afcf6961c442f4dc61fe996c417cf56d64d57c9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604937150-08106f6a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqWZcCRA9TVsSAnZWagAALOAP+wUeLo5HNKehnqcjclaf\nnGmiZXpsQQo8sUXOeRGQ/nGuDTJ3LiUwTS6HqsJhEEJ34UfTwDbpf+Yuusgc\nhqHSqybKK8k4FsK2sXgLstRzk1TMJjUDcidAUYC3wTZK/hqFcRiq6Hq342hI\nWXpaWdlnlZEVrJB6tHWFRHzpbjxsZIZFCZqvUtqhclnATrMLTaWhwUSUw9Ip\n/0r4146eZA6JGWuX0DLMPtinepK0b0ma56ciOA/SCMZ0QhiqLPWlHq/QT0LX\nj+xaiKTr9F69Ky36VEJkrwHRE3Vd5kHEJlZyADtMAA39S2s2o03kGvnS9JSe\nt02gwKU41c8xoxfLzR9mWM976qFVCR7gTAKurmRu2o2+5b4IqfKNJY6VzEWs\nDIYVEvL2vcpNAamWG1A8eliGCbgguRAkxCS+6YE8jO0g5nGYR2+G7QhYKuna\nQEFRElBmMLl5RKlH7DdEnXCt2zpfN2sg5UppEF6oUDTPs23DyLw7QeTHxQT2\n/VOK6mI/gJdC/s6N+Z7+eYWriNPm52AnSVaRN9Lu29d5lgFMz69RKj2S5K7C\ndyueRucCo4h/QQQSvir8igIBOCQFlq76darjDW4gyLkpxhAZsfOBy9FOdKSq\n9UN6BwcGQWbNspJhbWuuoLiXI1STWe7Lif+iTJ4QQZzw9hLGHwnJKfvSnPei\ns2C6\r\n=D+3X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHliiy03/ZXlS28JdXeLO8EjGg9RgD8Ar85hRgRPhw3AIgBgzERbcyLZYKEwbKt2OjcMaEMC3QkkQSKIh5GqmhcRs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604937150-08106f6a.0_1604937307602_0.12044132397354157"},"_hasShrinkwrap":false},"2.28.1-next-1604937724-4b8cd78b.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604937724-4b8cd78b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604937724-4b8cd78b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604937724-4b8cd78b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xsPv2ZhHS9nG6Y1AEQoHkfhDEDikFYEE/xRwL3X0HPFIthBZJw+MlTegRzAIhV/YAg6PnWUsRjAgb5hXN6dD9A==","shasum":"3c465f3d97f172055dc8ffb7644654fda098d4c7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604937724-4b8cd78b.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqWiRCRA9TVsSAnZWagAASNAP/0AO75ioVIXdjjE4svtd\nZJfCUSxK2E5/L7A7g707rGQt/aqBODI6F8E4HGBNclQf2HwjWnqyj/U+ysCD\nv/eHpkFr3jzkwvIILakdpqU2vri9mKA6PlzBqtiFoVI5Y1sWoEjCReZ/6iJf\nPQxHQxYsERhWYEVmxzvVjEZIZ4xQhfzEXJjF6I31omNhoZ+I+cvcm4KD5PEs\n/eUrm8w5dZHPFjOmOBmtOIXM5ml+zYuQu095G4YQuDKXtLNiLLOTKA/CxUqT\nM/cM1KXvz7uaZoq69Hhobgm7nfwD0Q/tqymb4qd0lJWA53JJ79cgLAG8mp9c\n0PcxYIgNsxJiUvCKkzecW33kWXreENMP01xC85uOjyxmTGdWos3aT0mcmPF3\nPOHVIfb8zQcfxbcNS+AqhXbdv9O70qEKnq/0HYKVDUBCaVOKXyfsO8cUzXhI\ngFraEM2z3b9l5NTyYehNr6hIhOxHgxk/+3g3k+1BXB6gq4PN5FPpHhL9Vdm+\ncoybVaxaxVuQqHSKwomagXx7psl+RXSmPZkGUwrPZZbuGEVpFmlBB7SEsCWH\ndAKaVeMxcRTNJgQuUKe0kiq+clt4V1gYpIM3OfLjx0nuahTkUKZG3FvZjY4o\ncd9q6p2Z/ishtmUzDq+OTcJNJw+cgANrJWU6oT9SXV2RPrQkwFwNvS/vjlEI\nloUp\r\n=Q96z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDw3TT4jHL72TN5Vg0e4zWTHfuJSl9B+DnjwtpVWCTROgIhANb33J4D8kZRy0z01ZRrS3vK16SpVYoLsJXrXOM1n/4A"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604937724-4b8cd78b.0_1604937872928_0.849701294415909"},"_hasShrinkwrap":false},"2.28.1-next-1604938866-bcb4b149.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604938866-bcb4b149.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604938866-bcb4b149.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604938866-bcb4b149.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1Sba6sHX6Z8mYjZRh7XB+tqXKzmhid8wzlkUeCyDdOE+a1NsaYR8Is4m5cVTlUDJKmDwL8pe/f65U7T06dcKzA==","shasum":"f8e4e7494de4b50fa65621625526f65c812ab724","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604938866-bcb4b149.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqWz/CRA9TVsSAnZWagAAj7EP/02vFqcXwliEbD4N97ig\nl6R+A75EpM6RBouCl+QVmZRbE4ujRKxRDms/ErKdOpe2VSHdtzQeO6r8dXrz\nf3N+UaVHxCjS6c7azSznkBDwSqUzRYCNuUp4JuF7fJhmnaI5DI4tZtbtArZs\nNTvgk37QD1pp1+JQN061IDyrBvaQY1vxuDkWZ8HCzbKlx03hrpQuEDG5ueNz\nCxRKwjuNj8FrWT2odwl6WWM0Aw7M+yFB52JdiZlAyT8xwNw2Hbf9asdAihlA\nFdFBH+NGppqd6DTVHrYEoR3u9A5Spn9/AUplGhAeME7OrSz+9gDudqyWhheZ\ny75vOyepR1XebBVdmM1TIjR/kqRU3NMevZGJWnp9D2Ozq8ZnwreHkA5QPAdy\nf7zHfATwskNIAcYVjXVvyIJOU37sAl+OfK/IsF9DFnaPdsaxbgDg5+wooVXC\nOgIjvL15WqQEc37ck+610+1ErcYVs8GUPne2OSPGBdKwijDyN+nOIgndUFrE\nJnujP+O3fS2LE2PYWu69h8CWSw2KXZAmXSNG/VdfUH6Mg5EU+WcoXsSCc12M\nBPCrMrnb5PS9fyGMwWEqQOHcT/HMc3ocUmOdRXvBqbr/nUY3r4YPwoP8guyg\nectr/a+Vl8g/PqqhwVKns6AzNKEXo+1J6skuLbd5Fg4p6t5Ukx6vBJDZuZy2\nSVSU\r\n=ihtr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgfCEUcr4/pGW0bMOLcEMFzFBprrOXEitcI0rAijQz2AIhAN6uWtxhdgERGad7dBKufzUIgNlC70Xd/skleCuljpd2"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604938866-bcb4b149.0_1604939006323_0.29554782602178475"},"_hasShrinkwrap":false},"2.28.1-next-1604940284-f9f37fe5.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604940284-f9f37fe5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604940284-f9f37fe5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604940284-f9f37fe5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NtN4dEjHxHVA4u0a1R8Dy9EQzSNd7rhhWZQhUqUWnbSd9wuQRM4XuePncZXPqJLUtyelAFtLorqETttKni4wRg==","shasum":"6ec64e2ff2048a265bdccb7ac605fcbccc82bcbf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604940284-f9f37fe5.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqXKLCRA9TVsSAnZWagAAo0IP/1yxkHKL/124a46UieFB\nayn0XB9+09alqS3QQb9BEzEmNOOLOSa7uqC0Ibs7o99OJ8gA4T45kRCxUwQ9\nzlF9YGBKopsoq8u5fterfGfmdHUgT9+HByik4+ltbeY3M1GkgoKnrZ5pyJbo\nMr9coWn35rnqh96gmpVowzVQq+hxmxLvE+dWKM0aKt0tLDE3hsAUYf+/JCDa\nXMaFh8QiXEh3yZiGf/UWsFZibzecY2s4CMm42mwcjPi3HEKzbhUsiLoXyFD3\nTKqEwLwo3W647tuCBJa7O2fvy/Fb1nMyDDZv1zryMTIjd8E+5w5KU96dNcON\nD1F2VsUY7UI5wtt2Z6dFm+plkt88OZ0Tkqckth5q6ZpkKSBAwhJLhINjb18U\ngH1Ys8pQbvCvQhKZc8CiA3gNso1VeLmpM9owvWLrnWtZUZtLVONN2i1XdtNr\npJtzyvkpqy7ebdZALCMmhaSIK0RZFiJvQJIVbNPGwhLDetH+GZwmgY6ej0x/\niciD+LGP51dCJxRz+Zwl+sc93ZanAAbBi4ImqjOBWktQAnHfMV3ZE8hE8aGu\n/qINpG+km4IZ+PKw5Rv3CK8B98cKdi2y3xXfBCeUqVTwdp3cyiByuR+vNwCt\nkc4rBLGW7ixAj/NlZrSMQdr2weajvi79C7PwrZaieo78B5k3dc4Sc9Ugvw9P\nKFwk\r\n=XCcV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFMuPcZvfd2hsCD/tV0ZLsUC8M3ZJy0qWohVUYHHwwbeAiAHyLuAH+dt2bcNYpKXgrhhyjlARaFqYvHduycx4GfvZg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604940284-f9f37fe5.0_1604940426635_0.3930475790114345"},"_hasShrinkwrap":false},"2.28.1-next-1604946758-ce089a98.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604946758-ce089a98.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604946758-ce089a98.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604946758-ce089a98.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-K6sy7jPIxOupTR/mNXnzH25qPiN4WTiH/I3dwZKyNgLlMkU0ohYKvlwHvd9f1ms7hVAWGJOm8NvdnsfkJQl0fA==","shasum":"c8639d07e1afefd852681896850d918285b7ac7d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604946758-ce089a98.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqYvQCRA9TVsSAnZWagAAWAsP/24KU3J+yTe9E0s09EIq\nY0O7UjdjblsMg+ejOl0gR9vFXnwUBBoYu//+xYW89H+Sr7PBHr4ssRZji7rC\nSnWieE2IUUfn4qjxrBVk1yanbf+sFO/Y5AcqBmtk5cwhwgyOvazY9cqdN4wy\nN11qGBD/GcL51uBaVDMZk/8NdIYV+jUsOLkaCxHgl7ZdyvfDDdI5xDtjEgS7\nVnumkqoU8vgZkWW51gy6EvzSjRj44kQUut9ZGKj1KYRuwXL8Nu/2mR9N+Waq\n9ACv9h0pKiWSiMUiw2Hgq5I9qTsI8L6RII2NkKq4wC6qhV5J/B3FEM/zgks+\nub0HWNML25ZVsoSmwwkmZkhaHbHwmpvA/I45zB4PR8iWg+ulRrerr36vFpu7\nvkJvBVuuDLxTQ+vopOxrueDLf2OwXcNsNIUe70MtrmZX2IB45igmtlLY2SL8\nZB/iFc48vWfS6mtdZ6CMMaR12VrzVEy1hJl2FDTRwFKqEg5CSungG4o/ejSV\ntoH7TpzDFrhb9mUaPEefIro7YBTg/U7L7fTtLbOslFAbFr9NFRgIvOo44ojn\nc7jO/7kHNEqv1VZWzGjj5wfI9PjN8dYgsctl7w5XKrFW6OteA5ainR2YB/Wy\nuRaKggKWpXu7ZJIPXUPtEzF4RTX+A0i8hoPpXBw+T8ouQ3Q0HwNO/KrSTQmv\nhOVR\r\n=gjCm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdF7hU4/GtxcMpmmKfF3eNqutGlpDsIJ6GJKx8+tDB7wIhAOTGJZdc3MYK5YsnFyyz5Ctt8fmEiTXi4yQxNCWosM61"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604946758-ce089a98.0_1604946895790_0.18001310657398917"},"_hasShrinkwrap":false},"2.28.1-next-1604949351-c9aae640.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604949351-c9aae640.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604949351-c9aae640.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604949351-c9aae640.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WBhx1NVjRHjmpkbNOLE+Ao/qGpNt75zykjZ6+5psFfjp+H1dj5km6DaGkx0sHPovW5dlgC93A4M9xYxpmBTjJA==","shasum":"815ce3e800451d77bce4757f623a5a12f4ab1812","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604949351-c9aae640.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqZYmCRA9TVsSAnZWagAA6isP/iWmq7I9dfW9UZ8QtnO3\nVjJsdSqasFPgyu8pMPEBg9GXELNc2C645F8bNUyxH5CtuGXvwE/nWM3ux2n3\nXDG18StIwOnoTs4BouXcDTCUAoo5pTW6oY8w3Lu7RPQe7eH/sEjUUJKr4RR3\n+Sh4flEjs7ptEDSk6dA/0LNknc8n5iaZ/D2Xm6woQ6CVoFQgXkABNzNtPPlj\nDYnOtxN3tmUd6XHklfDhLVNFS+cvb42idRTcgzF/JNq8IWuXlRBdCbep9dVj\nqdrh5NZbqNLDbO997loUezdgvbfJ7tyl8BudqcAYVitsPv7JzawTz3Ig45wv\ncMlCM239ZxMT6ncjsE3RU5hnuUugrCPB/Z2qC7+F+BZsXsReDfBSh727Gs0A\nVQ0Om5GSk69xXPjUilGsexRD3iQNXJiMbBpSbX0TVFFMLec1mSucBnfBBOA4\n/q4ds4CiX1uvOwVz+SYNMCayAJI7XnKyDtgHasl3esbFAn3bgi69WlJgEyTr\nlU1H9tsok47tddECqNAOQf+kXF+cqzjN6ghd8y8jlYkkEDAjErD/1WDSaT8O\n7DiGxFJBnZVJ/LCmk8TA/Js9xFV0hTL3aAwboWZp5FFYuphMg+P5wZmTs2pu\ny5pteABgVqJ0T9THVts+xMv+Pz9viaGjYWPHZZ6jQkZLcF3prBbSWnBhG9Ob\nNWTp\r\n=FWWL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDj27Meti5tmkSv0qxhQYJi795dXP5boFBlWEGqJirJVwIhAIyfgSCaE+tjhmPN2epCzTcWQq8hF80Evb0wbf/t3zcD"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604949351-c9aae640.0_1604949542172_0.920455902560366"},"_hasShrinkwrap":false},"2.28.1-next-1604953397-b65d053c.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604953397-b65d053c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604953397-b65d053c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604953397-b65d053c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UfT+VTpJMbYJKc8jqk1q396hUKdms2ktkG8fT7vqwY8EsRvoJuUFL93AyqvVBkIjTaKKmY6LS77YQx4Ojoy2Vw==","shasum":"8e3ee24d0e880df3bcc7093de1ba447d024c9a1f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604953397-b65d053c.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqaXJCRA9TVsSAnZWagAAxu8P/2jXmLFUTgl9BgLaF42D\nSKtFyv8RT9Ld+nQOQtyxF3daH5FXyctaeRbFP0Id5IXa8SiEd9ISq8wHH9DU\nZkVk3mA1BAgmM593PqJvPRAZNMOfUKbUV5cpniHv5v49ErZ1O40CZAUEVyA/\nIsq1X+sX6P45TtASf7nariwzIYF4lXNjx4sb3/urXRqQ8TdqHvp8V4HWTIqV\nx1S+ARuGJzHmLMByqTtZ0Ai2qzlIGkDfGBcKmpktuNV32WB7AAe//uISeKFz\nodJ7dTDPZBAdNEhTYIv9Jbzc9VuRU/ia+YAoyNm0Wk2k7LP57vAzzFiNDLUo\nVbDLV0+FL+nFTmssj/7L2uT3ee1NW3IkYYnKmIFVorGbA+R8mFI6FQ6ah+UM\nVqAb3TaP3OTq8o+h6VRPysDfQ3xWIgcnBaZHR4UlSWyxQxnhedZBQw4rNXDd\nh/QY4rNkas1s29AbzrcpJ4l4aqZEM16O9qbvVr2QG+XUXKJJ+rLtRpwhuU3T\nvTZxOcZb/NoIDQN9d9g3C/n4jUiAw4V4W4dEP5ToHeNb64Jl5AelQMlGcgQQ\nmKw1qgm6FpPXvgtziaj6jKYLBoVPFSvTZ77NMt2Yd/s1dq1aCboAjoLIVsNC\nzzLHF2a/FRfLStJuSrUUPyGPUBbe1A1Kt6gPzZE35H8Nca7ECpRd9UxzGmla\n4STc\r\n=Y0aX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMHKM3+Ast6gmWOK34jU7Rlfys8mmQf3eQwhVzTWfK/gIgLUQx8sopxJ2KxEBmiZsyQT/2EVjOniwdWmVFqsyZKmI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604953397-b65d053c.0_1604953544792_0.1336814989889683"},"_hasShrinkwrap":false},"2.28.1-next-1604962055-7b95cb27.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604962055-7b95cb27.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604962055-7b95cb27.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604962055-7b95cb27.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MorP0uJPimgzrtHVUKwe8vUROfjEaTuI+hwMpwRlb2CSxsp/Cy4H93Gs5zTdksmGxs5Z19uO57ZPo4F/4i4G8g==","shasum":"d3b3c26a34f2adeb38c246ebbfbcd2ce23aac98f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604962055-7b95cb27.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqceHCRA9TVsSAnZWagAATicP/1NgOsOHiwKYEpnlLnix\ndXnjl4rcBex+N4BTMrp7W+ettYPr5sNkNJ6FF2bksNmmUBZbAKr3efSk35Ek\nJn2AZiWqPCVALAcMpYuWaFxe8P7wDsBRuHNlDKO20BcAJ3SIAd+jRAhbAUfc\nFe4NAM2630NReVJYYpOM+4vIB22Otdxy6RZyfVsXyl3MSiysZvQQBanTKxy8\npk4eFYgFzSbrCf1hHw7FNjhM6jUTrVxn1V9EI50pRLKMJ5oAfScr/CBzndjL\nnQn50kVDT1WMzVDvTDEmzTr3P56wSr710EcLJeS9OFn1kjb/YYTUwpnJS/L/\nHuIxTeDJDAZM1UcIyhrR9rKzHlpX4TJ8B4zyuTxnBWhfWY14cmgX3UVarSSL\nFd6U7mJnqG1Mu4jW63nK5/Ltl4wwzxADazrtIWFaKtFLF0/rv3zLrhynxjsC\nh246O9iphwqXNeKsh1pf0WIt+Nu75vTSRyP4D1J6l/uVPelWcwZII8s3zf0x\n00OANc4L+1RdUFXdUQHyG2ll32P77+8iQPyXUQqZfVDHJA93Jv388z9962wX\n37JiLsHQTnz7xssVwzEp6L71W8R1LEKiFI4Uk9vH6AQBhHNfj3vgaypW4TVw\nwb8c3ixtreJbkHpPRC+e8rJQR4z5ipX4cEaJlUeFzDXvjnc8FIM1oaDKwOWl\nFo+T\r\n=Agmz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBpkOpbGmkeNz1l7nzxF4YpQo9vmaPz7P8CnkMiGYoz7AiAChzpfUxytgaOcJrMJPslUatmOCKxUjQz4zwJEb3wp9w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604962055-7b95cb27.0_1604962182513_0.46669388474670503"},"_hasShrinkwrap":false},"2.28.1-next-1604971648-7b95cb27.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604971648-7b95cb27.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604971648-7b95cb27.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604971648-7b95cb27.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PaKKaABX6pvdVpeBuQhYttV79o62/QSr7pz5RHC+Kw3CbJdsBnDbhtoJBlZV4hUeXXJsAvYUq5BrpT/MBHhCUQ==","shasum":"f65020d88dde64a479135279a25bf32204bda215","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604971648-7b95cb27.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqe0UCRA9TVsSAnZWagAA6+wQAJ1IrxEwMgZV+fkeP+Pe\nEQbNsePnK+t4yWs/xmZ+HB9viygqCN64A/6eGLMCWzdyZ1y6AqWSQpenOcL7\n8JXiGBFayJi0a06tlkskF20lu7TfQQl0xs8OUbmVhx3thykra1tipM9YC43R\ngrkbdVrZz2pruMtq+3D5uc7lsCupU+A0mckondsGEygjNE5NkN3bDGN3vnYy\n/QYfnGgiZ60LrNhf12qvMoZjgHekwBy0GlxfL7jN3oDZVzXdMXnsrjLYjIJL\nkLkdlDA4xTFGtD+9gKz755r90/k/M3U4lFXNguYTT/CNkeScuuoGPHdWG3Ex\nenaFs3TEl2H9RQ6ewQIchAU6JmUxDnr9ur0inn9/atmRf8Jp796CnHxbEj1h\nrFjqFZ0N1p8vSc8NOFx2y1yIXsQopjXfV6Rn4vs7xLZDd6xHhLCrvhY8d9Uv\nnhapo8fJJO+lUMMMywl/XZjcbekQ0wYRGbcgpgDvaF/C/IQ9lZkb+JhgJi2g\nB04JB0ChmtzvnrGHmEWtztrQm2VNrXiPZrgQxzCUdq8XDUemCMH7pThJcbcO\nqpfGDVDeo9qN2pZsz0ZH4OBH5l0eZxQB78UTTcmV+MXE/Qnm1NnsTBeXnnof\nhiYTkzAxqMYr8xm+gMjd2oVRJ8kMZB052R02o19SANv+dXNNjyfiJnpf+43t\nr2Tk\r\n=85Z6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYCS7MJkROnhYTInGyn1JYm6mXIeW3dQdBUQ8l97mboQIhAKpedrKQGxsfnkGYHWG8pkrbYlZ7WJczQN+O5CihY/yZ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604971648-7b95cb27.0_1604971795707_0.151443148858722"},"_hasShrinkwrap":false},"2.28.1-next-1604972587-7b95cb27.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1604972587-7b95cb27.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1604972587-7b95cb27.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1604972587-7b95cb27.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-k/zNeV87xO3ZmPxyl3bJChvwVci31mu6eKDe1OdqLijzUBF7l1sQKuh+62r1KlucY9nNQ5rg4gQOiun1avsrpw==","shasum":"abbc4606d7e9dffb519843dc08cfaa10838ec83a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1604972587-7b95cb27.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqfC+CRA9TVsSAnZWagAAG9wP/2/i7JtEgdzUHobn80IX\nyPk4uAHhJgZcboTLuQ4sDSIaHG1Ppk7vnRdpRtda28mtgG5s2GR+HIxClfyk\n6YAA+hzV58+JWXp5xpfnlrIEQK0M5zaq7KR82fABNB2sdygK0tk/b5U5xm3/\nDRTCEDk97iLZwhzOkrlAhntaevrLQxXGEvWp+9dn6u23hB4vQErVwnJqrZon\nZIwIY/Qzh3RkFiQ9aSQyx3PTv/cWbFjusN+jXwPabLEjNDxPNpWnDM5aQhA9\njr78RLSFFLaDUM1DvaQzSCGP2T8Nt9EbbGJqFqUxAJ6M8QSAzIthNv/f3gLk\nGx9kZZkcP9lPV1ErFP4YAKF2TddJlmbLXu1GNh9KQLn/oDPj68DiRCDzREYS\nPaiBRFZmny1Fq35bCsGZ879f0Ua+e1OG7tg4Wt+GGErRYSJzRU4Q+4kxzMut\ns3kNKqasg6sMMjZVKtS3isnkLTnqJVRC5H7KMh5dcvhd825SR3BGGuUgSxc+\nTf0th2/TI9aF/7vXu44lpZ1m7Juv787RpYklKok57aBIU3DE1BIJF4my3EyT\nr8ks1U82jptEMtuc2pKmLwIxucEnAnOmNMbcIY+f8nNQwGBiLMhovkAuJyJl\nT7iDapXVN97P71F884SPVcNtZVFEHto9iIi0zJyG51BatTB65V5rgUAMeZgs\nXe1g\r\n=CXSr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEorS1doxkfWTuzRDozULYLw/N7MOzj+sDfXNB7g9ZOiAiEAqleDM4TB54qMeVMgbHJxM/7a5R52YCNDkdMvLGArsmM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1604972587-7b95cb27.0_1604972733527_0.9239628294789848"},"_hasShrinkwrap":false},"2.28.1-next-1605000150-48b52a3a.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605000150-48b52a3a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605000150-48b52a3a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605000150-48b52a3a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-sFlGmpNDPbgxdazo4JvzJSI5IoO2L9t6+psORF0CsRwovQ6UiDzOj50wv+Knh22dyruj1lGoegx65MMKndgtLA==","shasum":"f943ffd19631d074172b3077caee383dae006698","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605000150-48b52a3a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqlxeCRA9TVsSAnZWagAAqtMP/1iLwO/LeoEAg1eH4rSG\nU2eRB/9icgCiwCDjjcRoLG0FKlR4IJwjY227z74xafWBkGM2HTTnm8N1knCe\nTRrQvsPvs0ug+WHBHe8zEZrlZUy8pFOPkJWoJgMW1UYZrvJ/saIT9v5VOAxJ\nT3A1+nt+oVvQozhuxj/ULYysmxJNFvnTjkbv1qmYbZBBoNfOXJgAlu+LpYYy\nriVyaPep0aZgLYdiaeqP3H5HjI2CDdISIjRcB8Mv1nJlXwg9/uC1P8d44zMT\nE+pf5xGl3X+U/KJx6+N+5pErJP0xAxcm2+pXE7gx5ayvsXi9ADWAICl0CUR5\nCfeJ+2eSMTBLVEZT9e7SokKOKYpUaFnDBPqZR/iA9b4jZgoUorEgygiN598U\nQy9/OuQYNiPK3kwBkR609uxKVHLaIc9H5ZtZuXCMgnkHSO9YnJmRUsq2M5Al\nruxYCABu/U+wqbXeEJTEQZFuKKnDVc/p4qKwHdEWYgULDSH6ylOX7sGgI8Mr\ndHNhK63d/AYyes2yRrnHuMacL99sD8sLAa9q1Ey+qmyc0y8ZrmbwLAvOkcxO\nbJiuuW96xZMSa4OVOJsXR7CALOr/FYR0m86G95rPZXFcx/6boplvp35JohXa\nLKZTCatOgy0C76Ynakshi2W5Ud8D6fG2QVz0w4wyoCxlso3+iUU9id7J4Jtu\nOCKf\r\n=rNuy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDxhLo5uf+1VERQdWVQ9PygKhWtrhg9ksm332MyS46CAiAOKadNuUDHD/F48fQQfdCStTBwO7sZuSKam93c0H6JnA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605000150-48b52a3a.0_1605000285966_0.27548396766933214"},"_hasShrinkwrap":false},"2.28.1-next-1605001485-ae20af71.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605001485-ae20af71.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605001485-ae20af71.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605001485-ae20af71.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-26CxUOaE8+vFJpqrirgmQNrilCw+9JQVPRNs2adW4TWpsyiN5HfSSO5lDqsxMfu3PoVM6p/cbrJ5L+dAY5/U3Q==","shasum":"4185abd1280f82b57e111e203c070683180222bb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605001485-ae20af71.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqmGmCRA9TVsSAnZWagAAO20P/RkYVgqKwSlTGI9GOELc\nsW+kPMKHdD7AiIlZo0ExikLeS0sgByKvJa5yU9QjkrH6Pzs622C4N38ht8Gl\nKYGoCwMnuFgnIx2gfRYXIo0I5nubpCI3Hzq7bkqre/s6F/s77WJ8MKUFqoHV\nOsaiPeEeVEM/FtC5KaANtoUgUWKa+FQVnRttGAX7QVcU66CoI6yQomhXcDMY\nnpqIN6A0W8axxqi3lhyaLmQNtE62vcLtE14b/1+CMTWA4R+sI2FvVLH8pcm3\nfJXn9zboCJrBDOhK8JqaN5sRKD8XBGOJkWoBKD6sXNAydBBmuJI1szr19Hf7\nTI6KT7E/f5BkFtqQDYCDGzUXP/oMzTa5DEZV5Yhd1BHpzUP6mFglKQqNioym\nHJtFHd0m9afDAw2OYhAR/pM2yElX4mD8fZJpqNFvFWAY5RMp6U4Njl5Bno4+\nlWCJQ3gtgfn96vQKNCQn+tR8/4flyLURF93OVShp36liDn6xuCgBNPp4BAwJ\nheZJt6R9rYI30L+BlnxRkUhKKlV9xQnr+Nwkm/2gMhQfOJwMAmt7kf5sz9Kc\nj8xuxdOR2/2Uyf7D3TT0sRejzRgnwQUfs0Z5jksXI80fDqjibvTlbRwkLwfr\nbqSKPtzZRv8xK2K1XiTE1YIZsxqHWLN8NlhlyO2W2ATc3HvpJb4lws3hEXRC\negWD\r\n=vyk8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVUO2ed7s9X2EmqAJSse0pQwQmWrh/r1tB/3Zjz+4u/gIhAM2XBmWP/QX2SzetLKYHasj77/eouCRXAT2rI7BAS116"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605001485-ae20af71.0_1605001637536_0.15574311557811926"},"_hasShrinkwrap":false},"2.28.1-next-1605001726-73129584.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605001726-73129584.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605001726-73129584.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605001726-73129584.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-muA9SNt/gSZ1IKpJSEHlhQDrSXXtBFFFsVS29VSdGVSUOzGuy209Qz56leVrEk99XYMb6ti/2BaBvHEtTZvZ8g==","shasum":"681247321c2592eafd5cb606f6388fa6fe8ec6f6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605001726-73129584.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqmKSCRA9TVsSAnZWagAAFtsQAI2q32PJBQgnMuBA25wH\n177znB3nvv72Vg8Q/3Gc1znHbdFAXO28aOsGjkMYF+PKwOv2aHQgqjC2j7Rf\n0apMFOeU9UtpVksf8gRTPicHTIJSUOCzhV8HLRXKSTlThCqYUjOYDTnqzwbb\nvsOLIbfgMxI5N9XofQIn9IorrFzxV4drms9b1bMr6jFjnC5sRR2mR9eX19vd\n8nSRsho2RHmIaMY5V10mDONL1dK5hn+N7maSp5dI+6jv75Ywqcr41LW23vZb\nIMu26emxkm7BWEFTVJo6xqpjXvqk6+FH6JnZheTyLurfZy7I3si+Vvyz5Eqg\n2EIvjgo+hCCfdGLUH83wVZhfm/RN6EqwfvuNnQ+AGcuuEYE+iixkf7mcVFu0\ngjhGdoJ3qB2cLi+VlakHpyDUP4FSSQlZC7YPEufNjMGkIg0UxFUikktvoQaF\nEg0zrGPNFhn9CL7bJpKM9WYaYnQDF/jW+Uu9ZUhMchznwXtUvYPPKucHcz8m\nd3VcTAUSaeVb9t78IWRZvBd3Rsc13D3x8VFeSDj0tfotpuyDbW7DEvC48Xlw\nflVsJhYKc6epR5eIQZGmJlCqHuxPzO58du7GBudZ0M0i36YjsOoZ2YPpBVl2\nNvcpZq2t8eyHC70yksdYQW6ZpeOU663wG0e/AqUnNdDnbN5ui1udtIiCUxV4\n46x5\r\n=F97l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2i6SOIj0ada830aUUAkr0LyqW9e/L8ReYELeCW/vnsAiEAqriBCsqh/5cGzHilBRkx+fIDeT7Tw/OmzaZt/SI4NIQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605001726-73129584.0_1605001873732_0.06347576839816793"},"_hasShrinkwrap":false},"2.28.1-next-1605006749-55a9abbb.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605006749-55a9abbb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605006749-55a9abbb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605006749-55a9abbb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-l7NsUZe7GL9/MKEJWSyNB+Xm4f7p2ETqdM39wDH3DqTKmOe5Rz8yXo5Uwb15DK40BLn85z3ryTRF9ZBkPqaNHg==","shasum":"bf800a9b946db11751fb074e1217ad1512dc7b3b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605006749-55a9abbb.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqnY8CRA9TVsSAnZWagAATkoQAJevim2smHwvB0BLBBnT\nCzsb4RuciAppknsoNsFGPNgKhOruNS34RoUM8o5VXuXMfHkdVDCAKlZmeykd\n1rYTFjlFBAYyjjo4MB5quxcL7AYatTH1b2uL41GPqk2/1ZPvXQvN66MNbqYH\nYakFiOeJ47WuRJhgBPs4G52Lq0+92PZja/geE7JJErkPh9mKB6uJidmPP2r7\nHv7reytr7AhAM/gLE8WLPVDZ/vbJsYI6WdKeqAXYFZoehA67uF6e0oKtC11U\ny/DUOBYWqM8elXhY0vlvV5lBAU2eT8+7WuUzjdBHbFGyznjgH60JNmY3LC9P\nIzvtRG7Jmdd6Kch1N8tOZc9gJtBIFeuIlDvCWyquJ9BhJ4nCmEpsCaTA4EEp\npP9bnfCAd0R7PJJUA3y+WFlQ8Vg6bn4K7nUnsIjq079BLOPhLs5D1gdrm4n+\nhSfXkXJs2Ehzo73Uq0FlTqtmz+C/DjF5qYSDDNWBDDAmtE4V+B9zV69QY4y+\n9ZkjQyAIyKzqGW7bNNuec4oozVjdXwBS+Kr9Nv2EuhPLvjzYfRejXzYXvmjI\n1jZCZTRkD8GBhLZN3tiekTagluGJRpz/VNGX64QP+ykMD4FzfD/HqsenNdRz\nS/RXSa1wTnz2y6B56vUL03Ez6ZDy1tk6KqPezqdtAoPHEPpeqSUxtz62RNHP\nTTkG\r\n=/y4I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsp+FXgvM98p2jP8FeD3WJl74tTqb6sH/DBSVuYfcN7wIgWRdkzpvn4jzQ+wA2AYZ56o24qH/tHFz81BM2U7r4B5Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605006749-55a9abbb.0_1605006907630_0.10343114109212292"},"_hasShrinkwrap":false},"2.28.1-next-1605006864-9d21c28e.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605006864-9d21c28e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605006864-9d21c28e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605006864-9d21c28e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GEgE/lvDwNeEslOnDedwacgpuaRQLF7vY9W/JDmmwzzIkSrwbuPle1Fib19Nd6ufYFR0pKdzKiyQY209avK9ng==","shasum":"4af2da0062a00d23f6836f9bff20e2dc75d4b87e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605006864-9d21c28e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqnaMCRA9TVsSAnZWagAA4gYQAJ922n2B8Aeqt/Msl4LO\nkAqFxn7lu9T6PZCEzbZf0VQUKcsIjI4+OAawHwjrfcfC6f9CNFgNGfwn9vVP\n4Hi/EGIihlXxdPc2JwOeAiaKQ02d11URibQX+j63sgz7ESz8sUhuSPlFn87Q\n2/hQWHydlVHC0T9Fa/4DQokGJm9UW2qcYiRMXzBnFcS1OHZgfucYPI2CwqVB\nHr1TR7KLk39FbfqqCVz8SH1D8kxFqrv7aQ8bwav29xK00F1i+fYFcpZM0qwn\nBTYUY7hQBlmUcdOfC/fKKjhvId0YVql1PypyECdd0hgdh58fcRWmjEoBn+Ru\n5WLOBaPkyJJmn6ctgBRrMHxIgrscsDyZ43XKiQ0oZ1jFWV7UCPUuZnGdOcdh\neRh8yo6eVKAqh+M+/1HqPx43goF31IWECQV1meed5rd86m9520SuARfDj833\nSDF7bKIwiOSumWdvI1mGOKH55/PZdkMNfVsezj0v4hT+hTXHgsabtK/XU4Z1\naFoKjCO5bhs+kbeRNJSugMEP7TMbOe7GyZksTYUaWK1ndf02/WE8eBRzwQDM\ngISYlyScitPzNa8dOPPtoIxsXeUk8m+qlvhjEaE/4G2iYbkISFlTfM7ZVgin\nBuoYc2CEiTQIgnef3UHgj49iAY3iS8jkbeHZtPCwfWgUOua820zW0OwtFtZ/\nmuEa\r\n=yS/Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICUatV1UujAlxGNkCLvmF8e9VlWPt5GXJmNYMhEEPg7jAiEApIOx+JecbbjymikHaXy4RqnaJbjxvk6WQ2o4Vawhxcs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605006864-9d21c28e.0_1605006988161_0.8628920683933605"},"_hasShrinkwrap":false},"2.28.1-next-1605010898-f5f9af84.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605010898-f5f9af84.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605010898-f5f9af84.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605010898-f5f9af84.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2W/4Zb3FKMejJzvlBymnzZpsNgDT3Kd2ndshfgoOthh/wUMBHwlpR9C0vmPLxG2nFY8uQfycdLnIb0XIv9ehjQ==","shasum":"20d286cfcc85f3f81b58944a128f936ff01aba90","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605010898-f5f9af84.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqoZ8CRA9TVsSAnZWagAA3JYQAJpDFMCveN+OR2YksTSM\nP4uVkf+x1UQeggvxDvSqbyKHbah21oL8LsdX8G4Wai3b0TBIzy6wcf+u0YWU\nP9RIDJH3cQwc03whuY8AcJaKI6+dJsUa7337E2hjdSDMX9tBTxZaAheULmTF\nOD0Eaf+Hj9esY3FcjXEy/wQsQMA2QS4CoRTRrQTTsLI0z7vVvMQG24Bxenwv\nAfGkaz1ZbmQq50nAl2j7eIKG3dqPcfaVkEIoH1hmNlBVcsB8MNV8F35EgqVR\nKSptZ9JKYJwWGmoBqPjjOLQxUJTgHsRBTRbzpPgF6ikZdykGujfYrXFYK24R\nJYFdLgz9uF7DA3dGvm6CtFdaC26pFBu3PwlYMMDBFYbbqrjz05wO84X46TTm\nQ/G3MlMkPXCYnrLI8t5+LFgW+IvaKmU5B4tS7JHEP5X8huzCP0vSteSKgMqW\nncJzD04BdFmxf5ZycrMUcY1FRvax7k3yw8sjvkxhXnGGK9pnBtDdzB3JX8Jj\nUwX1EPL7k0i6J/uzrdENQYwAF0x3+9AVx73nLkkuo+sfPPUVsFIG0iqhfBwf\nYSlyJiYIFlgvtJycUsN+WQQSMyapTQMePj67CztAvHq+wtQj4tdsT/g4cSiV\nVF9LaiYk7IoGHyc0dHwD05G2c8GpJMEtMFpAGxGp6i9GeilTbxKJva4FRmhf\n9dtn\r\n=dCIo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICBfswgUJGQjh3BLOQyPLQJUJsr7SqPTd95igRH6rT7rAiBB6SI1+bKRoicEc700oX3KT8pdD8r1FTrXg0/To8sTDQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605010898-f5f9af84.0_1605011067974_0.4235720647144785"},"_hasShrinkwrap":false},"2.28.1-next-1605011253-b79f16e2.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605011253-b79f16e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605011253-b79f16e2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605011253-b79f16e2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6VLbk7XAWHhFP9/jH82vECmE6tpyaTvyoToktd7ENYu4N3Omzt1ImRxvPI+Puykk5VC+blD9vAUB7b0QGI/tlw==","shasum":"db0c84e0350a7095d7aa788389cea40a6a838793","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605011253-b79f16e2.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqoe/CRA9TVsSAnZWagAArowP/0jvLFXLHV4U9TaVGjEA\n7U7wGbU3312QRBWTWIzzmbX7meyFtNpvPe4mGZhigLa82b02xvLkmZTfbFN7\nn7t5pjbnrYcUUQNWMsF7mU16/V6HGmc05Okltsw9czDxmwUZE9BpQdpk50W4\nnYT1IVBeA8YvXg0eeKcjLNuNKGH3AkNb3lSFx974LGzyecyMmusvslpnCLUG\nzYdZ/mV99ZTC+jVFgf2ygU9zQmFtRAWhT+MxxFWXD29CIoyb4StcAvBAcaZy\nOJNzi3lw+fstEWhvLw/z2iF1SFBCdOec2C2BFkrBloWQ5QpC/s7fvmy4j8ZG\nNMt18Sbxie7opwMjFn2+3cFbHCpEBqKWvveaSK3KcZ2JNo+Hv2PPmZKtRyMO\nHtuzdsKLIMDzQ8eT3YQa71uHCNotoo3k1rR4C5mOecCL88v8nMfGOQiFux0W\nrMzY5uW9vPzGYNzXV5OlkJGZsYGaJOXmnwjjLYPx1AujSGH1LapMHSzrCt0k\nyx6wIA2cFtDOgXeHR2kGmebOrybHT7GX1YMzUzQEL774Sw5iRfTWkoBAabRy\nNtTyi6JlaVQ7pVlul4fLPgkT6B9fADiveCbd4Hh0vrLJXi6Sd9D1Va8xgmNr\ngjWnzheDgnRY7TyxKLWMWjW2kdTx2XCghGed9zlw5URI4mGRgd90plD6mQu9\ncw06\r\n=PljB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHcZMHJPYgW85L9DfFq+joAWFUiyT8AHcflOKYyV8ua0AiEAx7Ov1ZkABJbaBScvV2lbAEt1RzcJJWv7gcG4ENJ1WQM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605011253-b79f16e2.0_1605011390819_0.2066432726299019"},"_hasShrinkwrap":false},"2.28.1-next-1605011277-86e32daf.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605011277-86e32daf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605011277-86e32daf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605011277-86e32daf.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r33xOIP8hBJCpsiv5kSS8Tj0DzTsbFP0/xRqTC83idgQWs2onLuPzJlHE3CFkxjYllmBk0YPpaIMP7DrJjRKpg==","shasum":"9a1ae6e3b17d04518d9898f294ce045d4cf868a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605011277-86e32daf.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqofbCRA9TVsSAnZWagAAY6EP/1xFQ6a9h5ZSaj0YSIYB\nYurwyQ6VbliHJbEwruVrYtWtg5+tXEZJBG1Mo7z+Ufb55LkZeB/AI6JckWS9\nwPLhPN1Lrh1rg7zb846DTJt7BST4IYuixZQHXzlriK+xB1j8J3X/wnaBOk0h\nWyRq1bUZ6kKkqYhGtpCYCYMLcuvm5fLDdgmywmdb5JIpM52+JAVLNKz71Ym4\nt3w6cvFR82oC9EIiKqdloSMRFgMRaSmmgkaMtRv9WpU+1A+MLxs5/5zr/U9Z\nTyJ88Lxy5C8eeN/2OtCOYRoit+mxO4mwYFGWUAaWpvGAqfI5bYg2hp/FuHz3\nDY1eiigiUAyvBA36Qk6VoT/gTb1eGH1u3yzg/Axxda8n0xyiKSMFPUv3SJb3\nLKVMjK4QZTvaQb5iM6YT9J8oJalm4dUtCBYmkGsfuzm5iuVENlxZ7wesW/tm\nKwBMtjAHL3dsTfdXxFf6BWPWf2C16jWKSVcjwfqRW3D7P1KBoBnnlmje58bx\njESxvm519W5cdLCTikQnXWNsruhlzz1OqvO6NNEOyQex7ugh9LfIUZUyFkCl\nIUVccqiPytfd8YOVvgJLtxy2CsYkasG2C/42sbm+/HeOemxk4lJUtPgvFKQ1\nbNI3gDI2G92mP6j8yG9MrFwxzMv+/rngXwb7+6lOjS6TKowo9H9M484rcUvl\n+DD8\r\n=LTYz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmYfnZPo+onN3vzKFub+IjriYNI7f6EGfWWY8dB3+rPAIgAeJR8vTpu3HqYfS/6y4hRPznrBPftn4MBSNBX4oULbQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605011277-86e32daf.0_1605011418829_0.9301731184373938"},"_hasShrinkwrap":false},"2.28.1-next-1605013419-f5f9af84.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605013419-f5f9af84.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605013419-f5f9af84.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605013419-f5f9af84.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bLbPfziU/08g64QrS3bXVFvXGA2JbHGS6YYreHAn619TWyqZrqZ5BNImhUibuD7uF9tLzTffaJY3Ty9q6SnedQ==","shasum":"83403c54ec573f1e2b0277224640c5ee9e622db9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605013419-f5f9af84.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqpBCCRA9TVsSAnZWagAAeZAP/RQE3q43TFJYK2YWoNLt\nnve5CWmTY92slt1WwcD+Y4EhypCu643tPid9rAN55osUmeIGgzNnfy2bfGQk\nE2b2MTJwvVLxs6jXjHplvpcYxdMHDtgJ0gkEHI/3TNFkQTuJZkqwTIbfjkEy\nd6k9tTnVAJXo4D67wnvQjvlNBfgJnWVsF/9OVhzFutyvivOtbYH7cnUzA0xJ\nXXORoEO+p1p+D3w5xs9W03ffQDyw9isvmEjcs1fy2Y1TDiywsgijz0giKURN\nEBE3RzhvAwCx/aZUw9LgU784DmXkgXC+SUmvHoE5E0NgFB8+htNEs5X63Qec\nGe0cMwSJsz/F3oQ8W/8FMxReMwY30oo4pqs8xYnzl3O6J0ehZqApTL0CWWoI\n6pIu/cfFwD3mB5CRbXQmZwD1MtVpbiF+x+w1Rbjg36xxuBbxuHKJtGZozBGY\nQgGokJ9GVobroAZ4nEtkLY9UDOii8G+YdbWlzmE22JLQBFVgVEUpA/tpFlk9\n5lP9OaVFuvh7BaIxeYwTcpDD5UZpeXiWklBvS6QdHs3Oev7ssOFCz++6NGbh\nXVHxNrPC2Unbne93eOGlD8hCssxu2H1ET7CJFKWdxLB19O7kBJuG35b8GHjm\nXbtHcGnfM5o5KTb1nkCAqPZoLCcNoODNvPEgJm2TH/v4hUcZ3tVFlHs4Q1bf\nYt5e\r\n=ZFdM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFJBSIOkZqXTZbkvVXGfV13wbJtKEliI7vRhNVEb866LAiEApi6OHjdVcSi8bDhIoEIYrGG1mhfuXoqktcNb3NNoWco="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605013419-f5f9af84.0_1605013570329_0.9530243545072528"},"_hasShrinkwrap":false},"2.28.1-next-1605016658-a7263dd1.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605016658-a7263dd1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605016658-a7263dd1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605016658-a7263dd1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JNstlVBnwuy9ZDhiws8Cshm49eLlM8m/QjI+bM0i7Qf2Iy4t0nS69FKP1t8h66fBn7vTjYn0Z9Pvv81b69lnCQ==","shasum":"b5dc2512c84217b881b947e35e35b4814bbf160b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605016658-a7263dd1.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqpzvCRA9TVsSAnZWagAAy1YP/iFCL0SGF7NK9KM/lYRZ\nN2/OgDdbqXs54hqx+kZiXzUEuyzYxH9DLZgaompdTPC+BCyLvet3pfx41z2i\nsrng1yuAr3GInqJw61+w2Yqus4WLxd779iINjLP+ePHLkD0qSTNpRIDFDKeP\nSpB8TZeqLf7TvNTOidffuQiyQpHkQ+7D+UCOHF2GWMREnBZBNfqAci51XcK7\nIGI6BdwwqVC3WIstCfq49w72yMgYrq2BmUY7G7Mf5n19GCn0JOdjKLVigHB+\nWW4aZjtn+/QbBXPCDwfqit+diBeOgE5Gi4nmdKL+GAvfVLHmBeT7C89ioLC1\ncz9EeDAPuJ4FudfvWVvfvZVpgR0SyMXwUVIFlWbZQ85VVu+0xCqE/+mZ+Bx8\npBZC9a9jQKrqtlhrh//3T191TSob9tNoYQU0t1rgCOfGoqAANqEe1fNXvPhZ\nYbx1FQXh6O2xGS5WENJfrfJTiL8OLU9xVK7PuTZe7IoT6fsXNxfTovN/fME5\nML6Qzlv0QZHKJ8wEHLNgyc8/ER8QPkka3iIyEKY05GiUs2xLmt40jRdNf6ho\nJ7wG3FI/jO8ECPHr3mDO78Mr0T2jBmwzPHFlXNl3qxSyLNuI+kRjiqffYv1a\n4Ya28ZrHFG8eWuPyh0Nr/5jVYt8Pu1QBIJS6MwLLJ3DQHINp/D/i/ft94MY1\nGd6V\r\n=MvHm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOZ3lxYaaDw40LX1CCH6vYOc8PQDkWNNAPgctuaLp8dAIhAKQK0Kc3fAzy2FK/tSfFgepyI91v37X5sYyBFUPKkL/i"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605016658-a7263dd1.0_1605016814894_0.7071263200868225"},"_hasShrinkwrap":false},"2.28.1-next-1605016878-1d17d256.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605016878-1d17d256.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605016878-1d17d256.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605016878-1d17d256.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WK7F3IfHIMfF//w9ctpA1pB1/0Hfco8Lw7BSHDFrE3NW4pwshM0J3iJAZMrRRbN7W1SJg3DAQRmGg5pWll6Awg==","shasum":"85fc509e570c56bc73126267f9b51bbbde7703b9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605016878-1d17d256.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqp3UCRA9TVsSAnZWagAASUgP/jn5QghPxA2uzJU2AD72\nYSdyl6gEr8k6xCfes73KlGGBMwR7stCofePKc68Dy0Qz/L80rXYuzaT4BYN3\no64XCmqcqwby83gzvCRFR154XeFlyRfF9RyQYActw6H0nFj6Yo/PaQt7NJ0t\n0yuNFvmpBEH7mayPpeG++P+wXS8oKdmgaGlejUGAZp3oTMo+F+itoINWu2VV\nkdZfFUfIdqrYqLnBkICqNykbgFR1TBEdB50kTjPLwlLfoVI6pIKTNnQ2uALR\nUFqpJG/YA0XytaLpUOsh9Q02BkS57QYICxY1HxmyAIQQWgoWJThHj55UGR6B\nz5OzmwFiSVodjjlHzfbscz9itggjK4RH2KPoE3JQUeOAp/FsQbYTrzayy1YG\n4Z8XvCr8fsUEAQo/gky3L5ZyBHwX+/OfFTgJJwfy31gsif/iXDr58O7f5zcw\nbOYsPh7GmjQE3xpiKC3hz+B5Z7KlaARE255Cv1etMZscnqngWCWH1mRaEq04\ne3Q8deJmkSsxcz9l+ZexGFyvSClfwMs1QM0QSSQvuEYJluqeKKK0hIg9NR5Y\nKj9JFL0ZmUtlM0NnUU2i22U50GA+TiDFbWPPucwV59wV9dFgeHoIaOmlWUPR\nsjN3ddRUfY1jCmVkn/iZirzxVtLsRhuS4SMllZmzJtImzaeZKHrMJyLn0yCC\nlU8n\r\n=FsD+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRUGkE+wCYttqlL/ErEs1Ca/2PTE1KCZEHh1olVtlT3AiEAwPik8VYn5RQxcuMn3iA0h7ZmtGC75w4E8dCdh3KK4/o="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605016878-1d17d256.0_1605017043665_0.1344949259284336"},"_hasShrinkwrap":false},"2.28.1-next-1605016886-53055129.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605016886-53055129.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605016886-53055129.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605016886-53055129.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-J+mRgilJ2PYonXrCApu4nCLCjhhOoiGuMtaEJbXolbnOenp9K640ZTdC4yT8T1IpH8TpgyR+mSY72jvXe/3z3g==","shasum":"a2d7763b41bf7bc5802e04738152e0ca5ec33359","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605016886-53055129.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqp37CRA9TVsSAnZWagAANygQAJhVGgGpSiT0MHbEYhrq\nnDJ+LtY4q0Cpj6u6zcam7qsz9JgF/VqKW+iCclsdPsKq25VSwFvLXhEDhWCS\nz6BmT01xhqk4Dj9zubMrQtmtnYnScrApTLCymXJPvVy5gQINvuLGMZmC4YB2\nvs5vemyAN/BpQQTixgtasCfLANV6jNo7JQ7HxwYm/BNzcyJaJ1Bseo3CRAsq\nqf5pPyAPUN7kbiTkacNZ8BaWmvv66yNgiP9NxLr+H1RIJvJ/tQ7z7q1H3jdY\nS4t7l44PEtM7a0PnotvnDIjz93jxjqqxGA9jm2xTu/tEiOpmodGsEKfoPkh5\n2o4zfZxsPpg5qP75t8LjdV8aBkCh/6kBtVUzMW83ixT4neGb0PEkYQlefw9W\nVs1BQFAPl2vq6DTMSZH/Xf8RBuRFaaoYgNZiWBmqhuXfztAc/teEJIKiJHGM\nfD4FD4nQArzE2fU/QXADc/tag0y144Fyxry6kKncC2qm2a+tB2Hh7aI8r8Zn\nt55VxqvEruFlPn0H3UbTvCJu8rzYsGmtpSmgK/tcP+CTJ9+TtGioiQpn96Za\n3ux5Th1i+QsHOBuuWlXsa7QEQOXdP8Lufq0KlVhArE02l7bXVlO01rP1SZaN\nRDVKT08+TmcPpjG0nDfNJ0CmXlwvqVgTE29W9K0Nvjx/2BqwsmlgK5V7wd9i\nN+r0\r\n=gFNl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBnfOhllhOYRlEYt54DqoaAq4p22OZReENxs7yq9CF01AiAsPWZ6Wk7tQKIWe3FVxMKoF8BIpFMq5AG9oyhLzcMcAg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605016886-53055129.0_1605017083157_0.03263097261704684"},"_hasShrinkwrap":false},"2.28.1-next-1605017531-33fadf9d.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605017531-33fadf9d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605017531-33fadf9d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605017531-33fadf9d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Nm4eryQRWUQ/1qWAKKpjl4FJbYlDknJ9G5hYk6WmSwWUXsUXA3T2GMGDdX81HDV+lnxEHJbZ+NIW07e42W5wmA==","shasum":"c3fbf17dd62544a94e8a383b1fa90b233b6fd916","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605017531-33fadf9d.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqqBPCRA9TVsSAnZWagAAmYgP/0m2ZaSIFXqaEyDRVeth\nXNXM+IKkXwN6FR3mut7ub28kluy+aFQEBMcCDTx4VrESpSOmX02egJIZtd6H\nVQ4NCB9OqwR32u867e7lxSr9vNLL+TWFv39+jmAB0HdjL+mJNf+JGtyHmQRL\nEZUdS4je6WaO0iPFB77e7GACFI+NpXCL8Can9lOvuaQ4PvCsxNzspiR62K8o\nWnGkknHub8DdJLioh86PvzTC5nxtgDzmol80mIkeEnwIJneqb45jy7P1nBpM\nagLA7/IH+ToTCReIDEsjj0iyCARjgoFDCp/5cAlfJSLnhiDlAISMcswb7tTx\njtfJ7/P8Ueuvda6J6moo7TkjAQ2bwQr7HXMs8jlQObbpq4+e79+MZIpFjga6\nmH91r6h9xDfojtUCdOdH14I+3TytnVpS8k3SRLZZhoQ1JGG8/VA2uZa5gKNq\n57bnDVcEgFH+cMq1+X3+HOD9Ov/a5OVNbsZ87DVAIVAE+rqHbKAnb2bsiG36\nRBPaFV0nmbHCi0CpRiyp2bhIAKS+3nC3W6xmSyqf++wVcbj0sSUDbYELOynW\nkaqRHCt/HsMYlk8/p0YntHdMSzt3lfYmrtV1m37RKkzWFxAIW/5KRaywFYl1\neWi0Ut/UYHh8KKWYRpapuYQG2PqRdJhgRBmGC+gfFYjORZM8m7Q4j6TgoAtV\nay+F\r\n=m3Xc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVSCi2PNdUsfQ9dV+8PqYn1Dcee3vjeTKbFpRrIgLNgwIhAIkiA56RWxr64A8fEGlUtkgZ20vKd1lHGOOAxa0SnGpI"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605017531-33fadf9d.0_1605017679092_0.20701133713991693"},"_hasShrinkwrap":false},"2.28.1-next-1605017637-8fb5f06c.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605017637-8fb5f06c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605017637-8fb5f06c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605017637-8fb5f06c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-W+/ZfIpSi61cSXmLPOg0+4wxTxUPbdATJV4KMZsCq106Gv2zC7sbIoKNfjjKRzy2KRxTv+bwTP5VBXTzq9QnQQ==","shasum":"a29ad5ec16b9f495ac6b3ab6b86dbe1db255c3a8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605017637-8fb5f06c.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqqC5CRA9TVsSAnZWagAAvV0QAJ0DNNCKEcXjQxdHhYu6\nMFkWi0UeOHBXDkVQkPQkfwrVgD5i/AlaYpn+1cVWR2HL49l99iUBbNduz7wr\nVdogGqbZKv3lXb8CFQwIjBVGjVoDTKExbIbTuiXFchgClt1daG9gxNcjxZbA\ny2NGw1ia3yyPQCMHCzycO1Yy/5A/nm1qqvoA/bwjJHOPwrzFd3kpqj9V/41A\nRM0noTgNMim0UW7PUjyliSE4iz2JOiA3FRyoWdoxIBrPwRcOfm58+heLtHjO\nnqCaRYmoFTOqognQCjD33rFJiUqeIqjkfUTDDnUpD60PU9s1dUQhW5ausQct\nQ9ac5BBaX0WhY8eGV5OWKb9GayRuS5FeQhvYjbb0PNqdcj023BjTcphECVp3\nJqR+u4uYYpt9CLLH2UlvFtnqysDm3FroM8RztoP21tRy/WFFpSsZuGNFmmtN\nM9r9EypNppVDVOaAxaYc22KDZsh9I+DxEPGqAw2F/2wBZW8nypAgHxxLQeju\nMoublz8qd4D1JhLYM8cFK9+eVsupX4B0RrwcbBRiRVSSVMh1jOQcQFz+2MsY\nElor+skJO1Hn1rJDoooQOJN7SQr1bFyxJzvGWlmSlJYidRQDcEAu0niVQk4O\nA7WBybnqcIPXTkUlMOTjoqwOLIUo4DMVRjdqz+h/l6/4TkojQlMIj4aC+s43\nlYnp\r\n=/+4K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDbG9FVs252p86s6x8inIY+iiJe5sOxP6DOV6hQ7C0m6AiEA+ZxfAoK3UWqBumG5RtCnCeF6iNAbVaUUT2NNyBvuMaM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605017637-8fb5f06c.0_1605017785424_0.43474904313052876"},"_hasShrinkwrap":false},"2.28.1-next-1605017821-a23c5c5a.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605017821-a23c5c5a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605017821-a23c5c5a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605017821-a23c5c5a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M1/9dXCfd9jNC6CE8uOsUsOzJSQAO8i1JhGZh9gIqIPUEerRROcBg6/XF4lJUkDvz3a435kAQgupcLsA3mPWkA==","shasum":"0abc62975921d491d41845bade983547ce274006","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605017821-a23c5c5a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqqGNCRA9TVsSAnZWagAA5VMP/1GWTBJr6GKurUE5Qb0K\noemwN6ITwnlXD0Y0dcHtQPjybgPgkKKK9WnfRM0gTamwOs1jAgXHw0k3jjk2\nkQU08bvJRiWMweBdL9+hgEDgKMyQLKyiZYgEnbg8OEcC4oG4x3YB0LOsEkVx\n/UIJcCDex0WRAwvnPRjDT/z+y8qy8rDeGHiwqCt2fYxyXOduyBNHLGzSMQyy\n/f/BzlBg7/RwkX3xYMQJZ5U2WlDHMPSsde33KhJWWAUt36nih4nQnWjHO/BE\n8zhgKqaiQSRE5fBIat+tE9uv2+h90TYA29KrRfgWcXySAnYeNyQtX044RqjR\nCkJ2J9xAiRJxNtnebNZMd7jcQhT5LTflgd4+CZ9nm5dyKuptBRZNVDAMo/j0\nTiH+L1niHIg4qIq/jWpHOA/nfovoG6G008MnvoNiVDlooxB15GcmNZfcgFWh\nqLZB8Oz3xfQbWFhOYor1sh/8DtgQ9x3FAjcLtN5BNSAfxuPYFI39u1Y9KsHb\nAtU7RCuj+ewgxsNM1Trrm0Qxi/0cyDre1eh9WJsgX7BlIQYG2vpaZF+j0hWZ\nCRjHh8y6HdtYm1Msg0AabxOqMLqOOvkQYtIFbliM6+6T/W8DsF9ByCzpCjAq\nf5vjpRsQ59P3pEQx7x+DEsahq99wVfaLHo+qWzJcELB8bd0uYBPqiR0rE00D\ntYJP\r\n=yj/S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGY8pWmgZBJLDniWbwirvXi4l6zpUlun76+sFoplLU8BAiBEWRsF2DQbGn0vZY4vv2tKxllrGyVLg8z1cSxecEjuYw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605017821-a23c5c5a.0_1605017996756_0.46794774302971764"},"_hasShrinkwrap":false},"2.28.1-next-1605018224-4da28a64.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605018224-4da28a64.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605018224-4da28a64.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605018224-4da28a64.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KtiwgVM9cJVUIcr63QfF7VL6kIZBJf30J/mwGXQct9id+lHpOnKFmGRLV3JOX4uU+pq2jecX66Bw3CZj9qkzqA==","shasum":"b82ce9fa8883d20cb60271101eb9baa79b68fb53","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605018224-4da28a64.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqqMACRA9TVsSAnZWagAA8GQQAI5p5jbEGvhGOWtBFwyV\n+PUzON4/mLT5Ay/CMGx7zH9/ysHDP5yVwHexdL5dYwtW3+AmngkEIIDSWCrI\nHIrFMsZsIOmP2pUuP2zlJBgv7TT7lTBwMpfwgP5vIUgiyzwR2H5dKIijBIdw\nLn6yjVCuBMKncBcbkO7j8FkjbplVrMUfxepaAkQBii1bukzftV4JLt9PsKox\nC717f76Z2Ke+UIZbHGKEVxlyMJ1JlOrqdIj2ppoNtDcVaqQlt+do3nlZUtsY\nlS/vwzqcZwFhj90byIGIHCUEm4qUH1rz3Q6u10BdxoG6K+n3ZabSdtqz5TyP\nxpeLcOuTlBtFUMXrOKaYVVLa5dwEdXGq1ar64yZTPdabeI+N9xVJ507a/sqS\n4HL+ffdsPgHdDasHPGVtwodxSCmSJryxSrROiN1sFAcDw2YoYyrwkcY3bKE0\nneje2fOv+xhvS/0yk/FBOT6qAfgyhfDc7zUrisJNrmNCY+pVqU9xgL0ylLZf\nkg5NyWxb0hhEglh2QZss97ND3F2lFHNZlr7MXivOFoC+WDggFwii5LoG3OoN\nFPhfAES/hpd7b57DLWArxHla8SsPoq2M03m++7r5FgxVfeowfZkvIuUrnbe0\nRuS6yR8F3vcUDyim3BMx7hFFPRBNGXQZNjwWzuAGIu25sPNPtUbHwSbRufiU\nzeqr\r\n=9/eb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJaKduipx1Q29cvuS77oAlbIui7OFVgqoirdeS+QuXiQIhAJj4JfyDCtQyFtePtL3vCLx7KNcBaZNwd//KtdDtg1Ru"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605018224-4da28a64.0_1605018367820_0.2601187477845879"},"_hasShrinkwrap":false},"2.28.1-next-1605018398-b629b82b.0":{"name":"@xdn/prefetch","version":"2.28.1-next-1605018398-b629b82b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.28.1-next-1605018398-b629b82b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.28.1-next-1605018398-b629b82b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KpzL1AuSGzxJLkiGkbeIPWoJ9mAMem8GX8AbmRq8dZpxV63Gk27CxBDoJyg4WHd8xls/+AvjVQ4DJw4U0V7OvQ==","shasum":"f5e3666e39d2bf4e443f1bfbce44bab98e754c68","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.28.1-next-1605018398-b629b82b.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqqOwCRA9TVsSAnZWagAAWgQP/Rlyrb4lh6fH0lCxWxsf\n22FUZ0DFa1YLMrV1bdYZwawyOkxE7hTF3AMXAvi2Rarz+na8UTFArNHiLsR3\nyklr83zROQrBcCkohwbWIyR7ILwvths7REelNdM35QoGlGD1Bqy8WAGfCLTC\nSr57jpNETzr6QlQkAH3kzbfF0AoRc6H/eL5y1omPm5iWvDbumOPaWqX/hp0g\nCwlR65W6FsmBX97UusoIsAkKBLLhV0NNoJjHhRiaPn+TvNgHk605cZ8m0kHL\n3Xc22+sEwm6pcceA7E1fy7xzihagwrHEjNLm9FKKB/WcNcIFAc0W4cEb0Bzl\n+XisuZ0nU+TWV6kO/xFJnM0jJ3eBVUIw9aRXt399P5RH7SqYUch5U12bXX74\nIAXVnxBhV4Uk0knvI2P3OeaPpif4oHuMfLMQXhU4rDRcNeCIckepPP0aAbQZ\nUuOMsB2r/AMkvE9cvHVI4hm0nTeQ0JJDZszOiMPlQZxnyRMDzTk362vK+k/W\nGAxhz53KZ63FenrKTEJHJ42hJvjYwpmT8bvtiFKtK/RGSPq8PkF6gbDlq0u+\nTEzPDfGF4DuOBoRVjyk1A3y6XwBsK26cbP7LWRlQcf8A0oSdL/Rsy4YaPln3\nPwvMtTqu9+Dc0BDdvPqsandjw+IbAyXzOy8DJ4mTtZVLYmjZpT4r6rQWjmYe\nji7/\r\n=57qQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEVKjFVGblxIKNWCbrAJVPu7d4hQPA0B9KlSw4Z5xrsiAiBNO6F8/uzQPEUDxVGpw0pXniPE7lhHKmpUzxIUllGmew=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.28.1-next-1605018398-b629b82b.0_1605018544138_0.7556636813286237"},"_hasShrinkwrap":false},"2.29.0":{"name":"@xdn/prefetch","version":"2.29.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.29.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lSD82i29YDxhZnhSOqMSBCp8EQuwTo8xe0bvc5sOtZxfJaXCJjhKoOPK3UUpwdLyR9DmIUDpud0yfQeko1r0+Q==","shasum":"dd13553b4077f41c97839f499d1f913529d3d4ef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.0.tgz","fileCount":58,"unpackedSize":134987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqqSBCRA9TVsSAnZWagAAlnYQAJ7Y0+WJQd+EMqTw4dFH\nBnXIjUfwH0//UCiS1xTSq4O7vbApKVbRfwxKNMx1ZWnXBLDE+nR/nCIUJlmx\nlFsRAmjNpWCtjx717g4P6SGtKJR+5MSMgDtsuaXzCwTDa2/cq7/5xc4E2ZDk\n2DhQrI1v1UWZYPBZPYd9NwQsVZMa3gfUnjnX7xd6p10her5iQE/8rc7BM0TV\nZH+pQasEKwst/yUP7sY/t9KAO+9bdtR45I/0s/VEU6CoiC0fMEylW5DC7dxE\nxlBJWjp0sO3HpmWMSsyLwsG6VBbhYs5EcPrdoBaAvp5BGKjzFSL3zcWc/Hnv\nyQsaOvYSzqbi06ViU93HKv9J6kkdjT3k19C5dH/7wZ89MLeNDbeyDSuKpjEI\nvunOyX96oncxuEDyHuGzSPHJGJ86IKpXTMXiRiyT6/ye1E2CMcQ+UZOIoaUQ\n70aVlqrVD0eHwKL6WA9JN9LFfvS60prb584Xndo+/34588543ZKoCXPRWRJ9\nL2Nfi6XCzC+itRAIQNKYWBthelXn33doL3A2u77tq4iZN8I1aGZPw4ZTYAUO\nXqi09CQWnThRkF6utvvLZjBe+GPLoSDSTOuBgdS3hcI6+bUplysiDJinH4cE\nCgA9yfLvZcStmP8gnNGxL/x+S+4bMZfzwQW18ffefRuRE/RmSiUBn3qa7d4M\nExL7\r\n=cpI2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICuYws7Gg0bFiiOsRVYQEc+iYUT5Sq/RPIjFgdDnIZomAiEA23AWqJLf7yviRWcRBzSS0eXfN0r2gyYleVqF6w/ngxA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.0_1605018752402_0.47488925986999386"},"_hasShrinkwrap":false},"2.29.1-next-1605018774-351cce5d.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605018774-351cce5d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605018774-351cce5d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605018774-351cce5d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8ThTzJIPjc6aEX0xMu4JQAEPCZopstjvDDO+EnGlktEwi6VRnMVr922vq4jW4VG4IMGEr4c0ablrKHsrvpvE0A==","shasum":"616c29327afb98e5c3bcf89c4f2df553091d6fca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605018774-351cce5d.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqqUiCRA9TVsSAnZWagAApGUQAIxVvfmHTI3t/TyqgfV5\nli87DopU45wqc1SF8NK0VWr1rk6cvnnHNSX20zcdvSu946/d26y9t8DnT3Wg\nloG9ErwAk5k1DY9bSHabT/YDn+V+Rdy9mxwBA/l6MV9AnYJEnbS+N9aW5rnD\n+dqm6bNvSOEKg0Ife8uPOMfJgFd0QowLWQ6m5VCnPz2gmhVR6qCyyjVx1OUh\nu5mTnXYZk2NWqbyhhPKLq/m2WgyZAd7HOpL22Ndd4wHn+FogFDYjjRdExQS7\nPb9sm73lK2p+fUMZ1E+RkG4l+GplE/WX3TB5gvxapSw5lCh9BkGc3yVhHLc/\nNG7O5lQF3KwkSVSOl2vQT16bpf3/k0cBXYmUfzDDlIrK1+N0hvZV2m2ot7/d\n0AHh95Ht98MWM3Y6fLAG9gOdF2s6aR8Bgf4Do0fZhQpl1+DCK3uPWpgMBJGz\nQYvHGShW0GAb/ur7zH4HjtZGdAmeARkt6ZUkMzxAwdmnCeOtvnZ5uBa26N2e\nVVHIjF8P94AVBBBNb1MHJykwsB+gZOjyPjJhzvBf37wIZxGsR4G1fbyqK4a+\niXwuixsUHrEoG+1a54T4o9PWMw4/qhFnw623wiGA5+HrZ44sG8m0ozidHG8E\nMeJZl7bJz6DGInFKENiKDnEwEVayYVWHzeMOXsiNPBtZwtE3ZLQ1jRrA19dp\ndc4c\r\n=v/28\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDprp8aOkG++zTzo7XpTNlKf81NhwUzkGJK0Me2IXu+XAiEAn/g+55yS/25oF9SNLcoEZOrcOsbp/XrS9/6lJTQibCo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605018774-351cce5d.0_1605018914312_0.25800828048046753"},"_hasShrinkwrap":false},"2.29.1-next-1605033137-41b6b15f.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605033137-41b6b15f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605033137-41b6b15f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605033137-41b6b15f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HF2onMxDpMGYsDksbOCCqWwli6BnDZFfp2cAZpkX5JaXBAfIWUHwYgKVcBwKxgK07IiMwxikRhs6RJplR6VaJg==","shasum":"f273e1aba975011d5c6a9fd372883fa95ac67702","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605033137-41b6b15f.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqt1aCRA9TVsSAnZWagAANZAP/iDsX22udN6PmX8q7AF1\nSD3htLLAd6M5NTVrdMOdQCF7P7iLOQe+5x0pN7FFRdiPiDL333Y15A90usTM\nV2LwxneBeir+l7Sz1P5XlZGKzPSUwVtox0k6p1ZJik0caDW6ba4vKyr/cmW8\ncQW8sZD1+bsUWB9QUcTyA1xmYUHLbf/vULYLm4GbhtlpDbLNFc81unRrtCdj\nO01U+kPcP/aBj9T3/GyQWhvWyfBdXXZ0hToYltQCtQOQAQ2/BqPg0wz8si/I\nHppX2t4muM4ts0IK2np5jGAkrrVbWb7iYyCr7W4Dv0C7yyKb4pk5uz2Hnz2B\nigcsFTih3+AIqZbwr709XgeBq2GP9cSo1J7832GtRtdxr57PgOJJkjAA54wn\nbenI2l/QmlC1OS+quFRx/6RWQ06weC83AI8HFmzmdllFQPMjjEP9s14+01v3\neA5ir4T+QextvmamwNhkR9FKjx9lZ0nG31Yq1UEo7lc2XzoHKcjtO5Zca+P4\nDjTLSofDzGdkYIKMD8al++JVX7vyW5S6M3sZVj5ZtEplwyBjcgR8m+uVo1e8\n+NvK+lcGZis46iKypmNoKcTyUUhvSLnledxFL1j5TirA8luGTM2/67LPaNuU\n/EMAt9XhQgW/NYDF2j2zJOpM72rOxYeCxrXAyCXxqk8l/b7/mVN1zaIYAY/l\ncrPF\r\n=miQq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDM9ncL+O/Mi8TsEZ7hO2nM+UJbWUOHiBuhf1x6HKB1/AIgEFSa8XH69ak44pCL31y2H5kCzR2g6e/29pzOrl6zAGY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605033137-41b6b15f.0_1605033305390_0.8300243940345455"},"_hasShrinkwrap":false},"2.29.1-next-1605033164-9855f233.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605033164-9855f233.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605033164-9855f233.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605033164-9855f233.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Idn+SVAdwKvIje6H61ahoEnLsBYdHbSNvL9APZjLi7URFU9uZurgZRhC7UIB5I9KyXNTdCeec3H5NTgnSKCVVg==","shasum":"41f14999b38fda41e161ce9023fac4252c945f95","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605033164-9855f233.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqt1tCRA9TVsSAnZWagAADH8P/0b5Yl6B5H3mDCUtr7NQ\ncJMaxyznVQmJl6jthZUMtC7t1EsYdEAUqqbXO87Q2Q3x+zBthedF+v/DKTBC\n/zOZSW/OLr5dDlgTeZnEb9U4n3PWy6O8kcXNjG4K/wPpEPPNhh+e7leQsf7B\n1mVh+ohPGmoCriuH5B6LUkC3u3YgQlWUo6msse8McmzWC44N/ckpwKx3HNK8\nbUbS1hNlGsnqJgeykHA2lRL7v6yxDfwgWlwHDGyaoN1RnxDED1VaM8DY64tn\n8IIEO74i2A0mKNsJoAkqNLNjh9C2zC1n3Kt5PAHfXEn7PqIFZKtHzvhAatgY\nGYAKQLErNkTfgg0DTX4frYxpnXBaHG6xMy0ZLMVKhvVoMG1523cEDJuHdCy8\nfpyTNUdDKkuYqZPGuTUn4UzlymnRYo/7lgxqcsweexPtehVSZJb5JabHfXf/\n7CUs2nEx0khgPev28GXDPAuA/4ul4fT7nnehBO02pirAqBhCzFhut1utxKO5\nlrRHihg8slSE0OnB4aNfW9wYDhl4P67gHXn3tn2uyWZkpcb7oHzIjUfxF2MB\nAITpRC5k1kQajXWBTtsS9SIgaRaP8Tc4OyQr0PoepHBSvq9pZwZJ6gf6gpS7\nkTjDL7J7kY4s2u+1AnCWE9ebEBu68MZKfZ2FA041JEl45uzHOMsSR0RwlvG8\nO1k7\r\n=3s9z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfm1rPjDtkWXUFFrHpYTwO4jFCuLHY5tP/PGxD+OEb+AIhAPK105Xqzah1ih/T24uXB0vMh6pIytZA5Y/gSv/eUOqt"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605033164-9855f233.0_1605033325304_0.7113354939980026"},"_hasShrinkwrap":false},"2.29.1-next-1605034874-303cb02c.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605034874-303cb02c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605034874-303cb02c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605034874-303cb02c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MjjhItjNEfQJ2qxxhxaN+CCAGYx6zfbWWahkn5DdXbHYMrbL4vW14FpDzoze86rZ764jOO/UMoZMaWgVrQXzwA==","shasum":"6c52f5640abb537a8f25b7f9825e88c55be8c12a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605034874-303cb02c.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfquQRCRA9TVsSAnZWagAAiPoP/1iyguNxjLGNjO9+8LXc\nPGxpZ5fUl4a3YaR/mM7rzSouxURBbnOf9IhCyL8uzcpcMHakngHLV7/0w783\nlt0OFF1xe0UYtxVDSOUjDadEvWgQoO1DH37iM/kgyxpq+oJXgNLhy+hAlNtz\n7kOyR4NmCVERZMPlToGgJHSRJtq7+vSv8Hg35BkQ73K57nC55uER+396cu10\ncmTH+Eg4aF41vYU0nOQiZrXju0GwchXrRFXK0SwP66RjgXqBgtVgWB/+tphl\njgH+iRBSU2BERmdKUSnXXzf5l38clsIUftif4WutmXs94X6sVb8AdfvKiYDW\nH2W0PbSw1NzWgCuwbFDTkUtNePUuopwT20lGlqz68KZauSpKT9sT3eIplahj\ntUCExvxbpEGOCvltcdWWdEexHPH7RruhT5XO7ugNXANU4rFf4o2xo3WVJyJ1\nS1S4TbkYznX3fNvJ0WxBmYPUY8CcmMvkJ0Zsp6aSMdBlNMDRcel2dsHQ7R3B\nOzQaZio4GU6hu/ZhY0ImMpUAxvnzjptnOAcHSdzaihvUVyNiLbkbg1ytrOLw\nNz0Gr2swkAbuRDhcV+m5632VJltqmwpoTE1BZ41HlPABvJyJNviyTzjAH00b\nQduAmSpgSPpfzwUDdw/RaOB2dWinOvin50FhlPvI0QJRo/OS2xWacaxpSEdL\nqnqG\r\n=bnN+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEZyaHC1oeYLSaov9a8vxabJj68JqAURLVZNt/kI3LXAAiAqdkZRKHenE3rRMVcCD9N8FrIu5AuJ5MPFktjP0uCUaw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605034874-303cb02c.0_1605035024422_0.896560472208286"},"_hasShrinkwrap":false},"2.29.1-next-1605035022-41b6b15f.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605035022-41b6b15f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605035022-41b6b15f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605035022-41b6b15f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-n9ZlmEX/0JRyRSahFuPbeELNOvNkSJ92OuTUS0EVo9pDheSEFdMG1VpcVsP6b7IQtjthKv3heAsuoHTweXt4qA==","shasum":"3037777f3ae27f280c20cd1d5afdd68d0ac633b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605035022-41b6b15f.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfquSdCRA9TVsSAnZWagAA820P/0JwF6axUf219HDWCjku\nDpGcGuX7rcMFc/8kS7FhuGNqbID2D8u/JaUS06sBeuO/eFNdmqEA/nIW476k\nbIEqUAqIFHLmCFi0rD20dGD2KFt4ZNcEa/5am5iGuPSrLgPUJQ0biQmbN5DY\nqbAyVrJeIf8+G/JDvdZOjGOjiXzdpC22560T1+egqY9fr97lRNdGbLb5eOCP\n1IJaYHGB65jvToBmpS3pyzPE+6C3P10O5uZDYrBc/G7WR60g2IS8QA76QGMR\njuZ4BdV5DG6AT0qjTcUc8lfM2qo/ipWG7y+Oy8wbsO+35xt+V3DfYjNDBBAd\n0RWgGRI3MJknaDwTQoWuFEuDZGi3NRoZGpg9jCwBuo16yr+XBP2FPttfZ4w8\npESux8sMQpfmOXzYCzsirHsxVgSjMQW5OdV4jmmqvNk2MPW21UACY28C5bmG\nC1v6r2/wwW8uQPNf/q4m4njkEDnItaUW+fjxQhI+VxmJWb7KPsFHyh+1VKcw\nJ/kU5f2VbMO4+yMcE5SEH8llctY7XTOdSoNsZJ9gKXvqSdTqom721S31+fL1\nzV455HaK+AiaFCz9CScF3rw+dsICWUc5H+4WPT4HeIDIyVe0mJ8/GAuf+tpW\nYFtlYNK+GZk1drnP3ajDlylfj0Uufhdu4gIZKYKqjz5bSfkFzykGakG+VPdp\ny0JH\r\n=1LeN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxPSVxxzTQe4nwfku8sE81p5//6vGeghab9qMPqXyl5AiBFxWQ5suYxIFguwZSRJVchghTVsdpSXaxKe5cJbm3khg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605035022-41b6b15f.0_1605035164711_0.46406152332898887"},"_hasShrinkwrap":false},"2.29.1-next-1605036955-33751c2d.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605036955-33751c2d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605036955-33751c2d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605036955-33751c2d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0KcK3YvtRL4/IlIZhz59zb6VopLtlGXF5tC1mqvs3ggOZ1vi4ldzcQ/X+DwpY0mllhMo9aVed0kwcgVI68XuRA==","shasum":"c62ff0e1ce7a5f022ee9780064f67e917ded12dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605036955-33751c2d.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfquwRCRA9TVsSAnZWagAAKVQP/jQAYeCeQHSvZLovXa32\nWc0wFYemys53UnBFJjMzQYFhPfKuUA6/dU40pRKb9BLiNdrZ0/UZrOQyj7Yw\nkAUuInTYMw1hr/ldzJoEpWzer0icVe7fuyUk/RYhRwL3KzNS/sgJ+d0hAreu\nqRShKHD2ttHYZSKaAVctArzdoQLqK86kqBUc9Ajoq8LdDI36mUetp60Yeqlb\n+1NvdZfRA0C3N47Sgw4PTz+A0l0jkor84jH+Hwdm51EGflL43qy+FnP9Sr+y\nDgK0GDgMTkmWAy8NalIAs3wIdaxFnnNKGQH/hKVqu4xJ0O3Sj9FJ03it7BFq\nxT2jD2w72iiGTDyYeIaxeQRtbJBNBiy6MEQQjH55kRzzXbHtF6rXOKNEelbe\nvcb4ztXB/tH1Z2vCDKF7wcZSD5BiF1Hpxp49d/JXnMLqZpRcqFSBX1LxB4LI\n7AAyWocL5gdvHkbw31voUObZSkn+zR8JR1uljn/gYzknNkjpF6UXpqc//KjX\n5fKGZwx/7s/nKrl2KUCKoDilYgNgziSkXj0b6CRfUQtF4nNC5qiNTvLWoIJy\necYxwxsjivrjR5mFowedgHfPcAEh7GCCE04bLT/gkex7cPqFisgaXzcHoJU+\nFN4V4W7na3xmBDi9hzIs4WVx4hNXfrb4LaMC5/BcG+WW4pRm3wvIxpvHZ+6l\nNDVr\r\n=4jVN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAmn2aIbL4lC44pd3MV8LeA+Rk5Ciqo3b3HFbjvl8KSuAiEAkohmKz35sBO0AzsZ7Urk/fh9y4wfHATiEwC5eEZu5yo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605036955-33751c2d.0_1605037073124_0.19859332232488036"},"_hasShrinkwrap":false},"2.29.1-next-1605045509-ff97b182.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605045509-ff97b182.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605045509-ff97b182.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605045509-ff97b182.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yKMrEW0YgS6zbd1x8pAtIAcLC45GiHXmbA5zkBmSUKfKfqpUL2FfW4zEoanxHI5WntR9vRbnNRdsAiHJdgs6Ew==","shasum":"57dbcbba6247904c424a9b9c304cd51d4763fcdc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605045509-ff97b182.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqw2MCRA9TVsSAnZWagAAO3gP/360iyFVbuoDQxgMtDv7\n3sI2PdOmaYRl7NJAVLROzMo7Q0DXWJdKqUpL/5UtPHDTJezp5wPTnYz16E9U\n4JMnqafPnFwPHv1A7oNbxE3fW4WzJaxvbDoSktg4gEbOBDKYDSfZQ9QXj3v4\nsu5/WwPl+81l7okE2zIONqrdIETzcDH7xKwZ7yB6uN3w/aTsA55xc8YTb4RP\npa8riNZ5LfCOraCX1ifBQmNEEIIlFNaXp90cKcnlA4SWtlIrD9VJ36ZTCWxM\n+vcSjOS8X7m1Yp/DU4ZZVeZGJBhQJa/mghMIwoLO70/KvvUA5MmX7rMtEWlF\n6aTdryOFCt2aUYlfXnMbM113sVJMJvUEZ+RGPwab53N29GC8FNlz8D55+ehC\nGRe+CFiR3iOPvUbWrqNIdzz2iqYGXRi1kX5O/7YbBD22T1ZLoMM8+5Ww3QHr\n7VSr41fqNbSiDAGud/7pf05X5+dNgHNRokpkiyupdTEq0s7YDFXJGz3ibvAr\nGZOOcAomyJq6jjIMzus/vSyf73HWMx6ksXuNZqM7PUDNQMEcuhTOHdF/QUdA\ntm+XT2XuVubo7BwRjBQVlsUz9ClgAxVudYUiuTXWj5a+wm1RcbuFht5cH6Ac\nktL1Gn+DixABx2/y6Dj82KHcDwSHzBxSZcKhy7JyFBAftAdopJPKev88P1SE\nEvjh\r\n=NPvB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbqs8ZNduZb3cG0dNKUEh1e+lXCQ48NiqAqAAX9IKG0QIgPyFbu/+6z5rhkN+HpR+hqQGqSVp9Jic0zeW3CjQwdro="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605045509-ff97b182.0_1605045644131_0.39290538018498733"},"_hasShrinkwrap":false},"2.29.1-next-1605048693-3728717e.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605048693-3728717e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605048693-3728717e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605048693-3728717e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gIyXyR3rOjURpK8bxAPzk32miFvbFzpPJ8zWZ4axDqGO/RZv26b8P1L44Iep2v1xt8HMdWfkDwjMjPbgfWjFuQ==","shasum":"75c442d2c46b0bc81fe029768f9a513c35c79d78","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605048693-3728717e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqxoUCRA9TVsSAnZWagAAaPwP/12LGtQTDcVL57EiJb9z\nw4J8bAT3f+lrZbvKYiNv4aLp6UoO+HOMIUXLaYbfrc9eh56YpTEe0CxIkKta\nFXGsbQCnHZwFjHbs0cZwx0x0+WYDri++1aU4Zfuc+2zW3gtxADMjd5l5TLoS\n3qEtqbdPt6BUBwaM6P0iLrgTIRkAXQikj9FT3YSyr2K5QiBsJTUzOVCGGBcX\ngOMS1Tyd3ovRCAOjuA1kVtCfh1646CKfplPBzwX84oRyC0Nu596pTblmkCzo\nwBbSLe5PFttPPdYSUsXU+GS4q2cFnbItgbmb9IF64rWp8/8sTt52OZ1S8ht+\njCAxFfKdTmdVQmnBKPLNtAzT9HSyp/M/UeTXx95OztU6h/3aKZP4UULEitmN\npoIoov/3PkwRdO2QwQ2LaRORXOk1rHc5kwRwDELtaDRJS8WnHtmeei5n5KIM\nvFKbdZHZJnKu4whVnnFrxAFh+nf6hgk0aGC1ilB3QBSZ09CFZz7EEPO3sh0f\nIn+qezUarNYqU/Mh6qga9T8Z0dR6suew0G7vJHWO5rwSMcN/YD/nUUxs5PID\nTnqEBES/KPZoVvX/gVjgl1QeN6BF0Vt0PpaZ1OMCVxtPxI6f0WgodWbgoaQT\ntCIOpwXwmKiqivlVrmvM9h4VbtRxPN/8Szs1blQKwZaF+WVhR2eKI+3Wm0eF\nfZol\r\n=Mclj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHn3Pl2PrAQN/cUu4HspAtf0gB6d4ozFYRNgANE7NobzAiBsp6KGstRvuWwuAk2Y6lsK66J6L3crG8wkccIooa1CFQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605048693-3728717e.0_1605048851711_0.1274008185163673"},"_hasShrinkwrap":false},"2.29.1-next-1605052397-a809a73e.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605052397-a809a73e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605052397-a809a73e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605052397-a809a73e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BxLlJ+NBu6jB3PFSP71DFbspUAiE2YbR3piedHYWyDeSnza6Jvlcp9SOBc0TsTA3blpYRMN4pZYw3H8Uo0eCUQ==","shasum":"ec7a73256e6e68b1da74196d9cbe25a8ec3e5c34","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605052397-a809a73e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqyiMCRA9TVsSAnZWagAAr+cP/jEcAE6JyhVPBwQousBr\nJpFgDZN15UrBmulFvq/IRgBWd7YRcV8mSo8SXW5Fh4bkG33Y/f/SDaDtgqN0\naFZOe5TmzgkbSSTmofJlHqtAxeTCUQguxf9T6YI+xovn3vJrZzWunLVIsr5M\nd0bGMhvE2zoEqgJPcnWC3Aa650CGSaa7xOmR8RKGxs1acTzBqpl+ynWZzv3f\nuuCkErbntzZ9PzvUrD9ZBlodyul98eW16rJ4RN1VakzHbW6d8FeaBxMP8aD3\nT0EmBYJS00SypASqbQDrZYxU/lwKlD0DQHWjVOcBmy/dFQCnUYK60Y9VZ9Re\nAObc+3WuxQVKpyPXfTTpY8JMXNp7oT1e+M2OA3cSGMrvC1f7fPSkMgWLTAdr\ncMlTTkc8dwe00FY3CQyWa7G28oKWubDNtTE8jphltBYp34sbDiSQ3gxkB4xd\nYakDomlvOTOuedRF7PNyT+mExPa1dHf0zojYrTDn85Dkm/agDvMxvzvdZ66N\nghXEdyvxnBIlrUYBPxl36Y2ZNh4hTL5fM5Bed/GMh6NLRgQu3ZsZEkjqb5dp\n1DCsmBpNikXCUl7Y21qCZY63ENuB/sdrvyNrvGbJv+p4dELSYaqu2R4oDnVd\nFaqR0AIj+iD5Bqr+fHordRdBzyzSLi+dhrVMEGBHCIgWCq4oQqWL1Zk3Ox3N\nn9OO\r\n=n53p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCu2vcAs97hUBCHoNS7g0p/aLX+Yx5dx+LebgoghVRcZgIhANKIGXTO3AkvaLrQk9/r1eQsKdwm1Gk1isTnJe+ydSxd"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605052397-a809a73e.0_1605052555831_0.8483170127806183"},"_hasShrinkwrap":false},"2.29.1-next-1605081972-7000f34f.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605081972-7000f34f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605081972-7000f34f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605081972-7000f34f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ur4XrfEsErrbdLqyKjuopzWR7+bZvgmWj+RL9J3zB+OYfWoR/d3fh804t+m5w7zt195Wa1srbcgyQ9BIshAHJQ==","shasum":"3b2edb4afac72a1229f1499f1b95956ec6575fcd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605081972-7000f34f.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq5wRCRA9TVsSAnZWagAA01IP/RrEEUpqkgk80Be8qnNe\nC11xXbcuWHPp56Bi0r0zvyAKm92DzBpeids7ddbFj2FIpCGaWYTmFYVvVF+1\ncVAx706segJVIv0ozQiyEcwJWW7fsNmIJFYRYfj8HxiqWBmddtMVU6hEMkic\n3raktgYwOuHREWaB1bqRBowllX4nVGSdQOrem1pHk7mxu8nucDi40Ehk2ojC\nAfL7YAiM08enTyzrFFQJU+HW9+kescb5e/EJUj0Zwd2Yo+GYjLYUaKGjYWWR\n5TUoHKHWXsnI3nZWMzLsp4Dp0hsNusMpDwgU2V8Li17tlswNkdxF97US17rP\nQnBulm3Xc0+mvDYar52noMVdySNLvNhtgcy7Oujk9+JOYWCAwvZrE1/z4PXN\nzYNSCyy7BI65JU5Xkj/ZwoZ2GuVmt/zoXS1G4mBCou1HP3GmBZCaYsOD+R9b\n0buAVoKpiHgiWBu0HSjhGxdoRfLpDZEInVojzTM2XqRwEkfVM6MtLnsUcQ7I\nxIuaEga70NOLNkzalJxQGAswCq7H/iWb++C+25IwO6zg39XBiUjhMeH8rREu\nBitCg5ovJBS85zrd7nEZcPzjHoxTziTSnKZW+Ju7s6ObuEMC7qARVUeSQJyi\nGd7MpwFAw5gLIjfJX7yG0TQzi/0gfvEnP9/lyzAkHT4ifqziR6fIsNBqKRxr\nA+7W\r\n=+UIL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHOH3sjZBf2Y1Tu/7j1V0e3XaxqQcSMEmUO0HYF7Qwb5AiAfr83QjTZ+1jJJvOEkQDq2+qR5OTr0Cx8MGHeKuaFeqg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605081972-7000f34f.0_1605082129203_0.2969405426023066"},"_hasShrinkwrap":false},"2.29.1-next-1605106241-a080185a.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605106241-a080185a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605106241-a080185a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605106241-a080185a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Bk6Hncb5RhjC7lxPE/HUdoz/PMUqvS8Fpjpiogj9uTjoenJr5QsemS/o5ZzOwBqyVALH21qmiHoZ8R9R689Ucg==","shasum":"d4d30181769ddad7258f54387c542efbb8f0702e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605106241-a080185a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq/rpCRA9TVsSAnZWagAAQ58P+gNSnI/naeDsp8J/3B35\n19ULIaJdooKm4CmKIO8XKrge/hdjVNO/mkTEM9grDNBHzrymojad8BIdLSxD\ntOkxjlOmeQsThgPUwfKdm6/v0e9hal+OzFeaQfYmPU/sjpxfC3mWE/KhldSj\nhUD+KGIm6yhmKgcx8FPRqAifn6UK9oRpjXVNQ17cTRsrnGXvnzcKt49lN6ly\nRG6je9IsJ3KUgNTngsz4Tum3zKUk6gmQ7mcEt0LhzvAiBo2gRLG7TuaGDqFV\n0NdSdVxLxJbbXY3VRJU+vOOthTkIgTT6NuUmIg1dAN0eQ2fbTrk03Iwon+QW\n+/hZMsKKCMBgF954ZzJOZGXaq28PSuxxYp1RXpjSKx9hwI+t0idbPp5h8s+Y\nxvJ8DLYmCQfp+PyLG76/1wR/TT4355VorIKCBm/RgisedFtRdLkbMutkZG5T\nFq0VBt4vAJ2vXcJfGR2bBep562ZhOoCAadfcD9HzIXEThHDLYdflsjwTP/na\nrp6buORakgV7IE3uLg9GhmRl3SK5S3hR3CqfBzeLqwfuRM4VaJmPhHUQv/mp\nNlQymMqiXdX4FJp/rNswG6+g2kRimWRMPl2o/X8w4pGdxviQSqShn4OyUjiv\n6DTvwdKzkTcKXMIajcleK5VR70XYVhUzHE9hKIWe/loupO7ixrklo7kJhLqV\nPE6A\r\n=qqOc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC41PgryJ+VGmDS0fpS4rrncd1ZR/6IY/OYsaUzM+MmFwIgJk3uuAr1Nw3y1HzqIwHO8D08MuGcFLx47UdvvJ2Qo44="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605106241-a080185a.0_1605106409108_0.4653545860095911"},"_hasShrinkwrap":false},"2.29.1-next-1605107367-2dd91c42.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605107367-2dd91c42.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605107367-2dd91c42.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605107367-2dd91c42.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XXcXBVYQf4mf8ybzKxFZ1BrPRMEdVFOy7ouK7wWUv7U3mlOHXs3EfUm6bUx7MTzC2dRKhM7VflX3fkPGn5uFZg==","shasum":"e59a2f2bf5845e535a6f6b1a0ca13ebd7c3548fe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605107367-2dd91c42.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq/9ICRA9TVsSAnZWagAA7kYP/0b1RLUbdFsdqge7mDif\nyoily6CtKCeJ9p2qnRavPdO91IqJJ4vbbydKm1yn46bT1kMwpTactTAWNbet\nEDle5DY65AnTTRTrLhLtnhlAYJ6BojM3wZ26IeYmDWLDj4E3ZFo61eWshydK\nmEwUOCEI3MSkYk9H9iup2YfoYZSYOrcJHudiBJkAFcotjSrzCNjdFNnegUCA\nokfdeHmb/fMkfsQByIZsEJM19B//224NdIoNGJaeY7STPebsvFZZkhglyZBu\nvV6XnTPU9RF+mGWphAX8F2hB8wplA/9t+LN4SzkAFqdQ8HELb2NNJ/eQKEJA\nLY2kOkG3acR/d0i5JOYK0jWeslTYpxerMvlyN29qqtdv6Rcj/y0hr8OsN+82\nbJhmVTzUHeDYwh+LgfdXghfufFiXQm04/94mnP/4yKWDW/HqGH6Fc0ecriiB\n/xBB2UfarM7iFySs4X9a+AIsWpmzPv+GHeKN9YOQRbc7UM6pfmUm+kzDgJ+C\nVyEOF0v4i+jPdFrilVeMIgJBaoLRFA8tzXyGG1u3fo4ZHvLuJAqvj9L/xWt4\niKgn4wpSIIsj8DlECCLx+L2CGjyForVA4UK+CPM6EEkAQ+PTV3bps8QoEOPC\n2qXtmq6lpN3Ca3727VbZIoPGec+jOGLsz+K+552HBaWsWs0xyzHEW1uk8Z2M\nEB/1\r\n=NILT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHHh6jldHtAS0ZTTAFEpO5KGVmpKlEK+2HUNCbOtCJtwIhAN10YX20aB6ioZXt1AGTuV5tzE7sam/rOVi1WX3130lZ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605107367-2dd91c42.0_1605107527300_0.6657425314403576"},"_hasShrinkwrap":false},"2.29.1-next-1605108291-9f478187.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605108291-9f478187.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605108291-9f478187.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605108291-9f478187.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Dgzx6mJpqYshZ+yqzeFj9PGAqcq82+z8uS4GiQgjwv2WJpgt/bghVyfh1WPdPXQ7ScGRcFzwmW3Ud9hodObhzA==","shasum":"9875ef280e31b942443a6134e0c2af4f92b9c649","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605108291-9f478187.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrALzCRA9TVsSAnZWagAAvR4P/j4NWK0JDIF5UIneOXQj\n+Vjav5HC1OIuva5aBWriqBi+uNTO4uEH3E6SRktaRLhaw0XgVH/m/BSABcNk\n8UJYW4ARoAYqp1lFTmKChGvlmRaVn54TPZvk3TtZWUjFWOuqF05w4DhkZiCv\nPUJR6w1CLtBqIZCDyvCEal2tITeI7itJ5yXMRTH+Xsy7KNVVGJr29HZ+kbN/\n/agzrCUEN2P1so8gBIiCEcikC+OaIgIIkcDFO2TAr45xTmWSEnchdhKzNXaB\nz3WYg/qBJZXsbcqDlwJEA6GFa6ZrQkMINLY5S0wluJZ5YtTeCrBHTGuhnWTh\n7jwVaJRfPtfN5ejXjMn/F25Eo2KyNZfEPEhdVdaVn0R6qkWlfFFBe2tlLYvh\nUDJiEXljNDMkwQijRkGpzqzEKJRmgEC8/vPVaDdaZOiGsIzWqlxQPv2xTPvH\nGscG30RXFUwVyBIxSmep6eouQav1airH6u4Pcc/4sN8uvRyWYqTuA1zR8rtX\n4DxIwMVkFf6G5gmAYK7oqcc2yfeYrVnGj4uPeFBQiAaO2kHKGVpwiFeZN1t9\nz7eG50YcOH9osi6zCz94+SXFVPjOEj4n2NlDI+DHbBYWFUD7Eafn9w3xNVkS\nCnZS20B9nUFBdid9aNKPHqVXzOqFsc4LIFXWZ8pIYv3jZwTzA7NRq6UU+k3j\n8AyC\r\n=v03Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAP0/eJmV1AI75DBSzdp01QRF5dIUqXmqZEieVDZ70RUAiEA70nQ4juWpkJ7MCh0ddqYwkT2mgvMBTkZY7gl+ZFXY/s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605108291-9f478187.0_1605108466899_0.8009082913625669"},"_hasShrinkwrap":false},"2.29.1-next-1605108462-d7290acb.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605108462-d7290acb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605108462-d7290acb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605108462-d7290acb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JGl3bXCpixvnD90U5f2KCzwP5YwqJG074mICzsDX+UzahDAnbSJA/5zGB76QZ7sZVfuWO7uYw+eQ0YDizUFN7A==","shasum":"95bf8c040ef9929dcb8dcac2a80c5f40ff932338","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605108462-d7290acb.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrAOUCRA9TVsSAnZWagAAi1cQAIzl03GMguloHM9i1rcd\n+ohTAxRGivy9271XP6Q03Nc61D2gDbHPMekBeHzxPx1Pn0XbhPAaweK5fs7I\nJlQ1dHkbzY1yIlZh4TeQQdtR+TkHWwNxgU+AUYT7/HE2zVnYNp9npT0LumRY\nD5pmV1PulQWUElgCxfEIFQ1TcTkpQQ5VZ9pewKTvXwRBYEApE6fbkMeyPmko\n0vUu/sTCF+nX+jv9cVhWwFDqXWImmNvQnEZO02gO3svj4lgzl4Ci6VKIWYfN\nJbzfuKWukp2++/NbqWAuelcaTNIgaGksZP6MMYQD8IJPatHJ7MyvmP620Tdk\n4wgLvsf9q9cjnjbQVgrgo9mpf//jd1duCA3Og3JhsLR+kYFujRqEm/MhIL+F\nZp+ktAKs4ykJefaE4v/XsYngAKIE406Fa/CfwI4KvIvqBUhU+8Ij+zQWLDxV\nL8fM+e9+9axv7o78wjIdMj9Di+S3H9HrbShkb2yM2OAb49Z070QqpJD7vqd5\nKXfigNQVZc5i4C43cK9AAKepHmm6MrsxUBut04L5G97Wi0jCXesJh79WgX9u\naixZS6rlCO6YGwj1I+mz5ozgOAlv10+OKWtSCrHR1945QA0nhCoS/3EWgade\n21389icqG/bIl7XODd6xCLssNg3P1PkMH5uWahgPOJmwn3ls8gksfHD1jM7S\nqdTM\r\n=hscI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxWlObiD13N7N2wdl9vaYf6XOlxTxkDJxb6G2wawWkDwIhALdzXT0bAMq98dq8+OcEgNsIJePi5LLMbTRxCIrdmPs+"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605108462-d7290acb.0_1605108628196_0.18046329550031914"},"_hasShrinkwrap":false},"2.29.1-next-1605140739-4c9006f5.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605140739-4c9006f5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605140739-4c9006f5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605140739-4c9006f5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ywa4WQIU7KXl8rmAeN26/k9R+A2S5EQL/UMeCADwBYzv1PHIMoNB/fai8JbzX97wD9Cqv9d+Mu07DlDDMUbCDA==","shasum":"75ff8009bd620aff0f0f32f06d2185f9e6400793","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605140739-4c9006f5.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrIGbCRA9TVsSAnZWagAAG0UP/jfQpgWkce3cKhjnpq2l\n8FwblsAdFqE/2t+hoH8RWGp9q/e3xkztu2dZ+wXmJAHbn0aainrjyBUtGcem\n/XITaUuQjwLEZAG3KsKxaH/B9QSM3gQzTpg8TUKiM/zQgvzGS/VgyQnD15sc\nQWg8qYtN9Xajhbg0ya6xOKRQAVn+KK+CgwMvkF1gG1OpdFTaXYOcSpB8l5Ck\nuCSaovFRwR2psETcfMQjQedq2rLOfsKNz2eEmH1kjTKt5eOdTIrW0nfECcyd\nCS81ycCImFsEidCfnNGDpq/5xAXsEuoTcimC2XTN5TwCPPg8l5fXoxEd8gbu\naZ7SwyIgWET7dfqsUgAc4Q/MXV5P/DUG4y6Nr80HiXpWXWtIXwgL8JYsuYPs\nV5mQFUmFGwIEVFCPyf1GqUE2aBSQXs0iPDplRJDu5CjZi1S48GmJxkwKX6AL\nj17nODtKuSBRyM/Wd16gDZUDrIwloZ/VZDDkuLiZnacgokes92BbtR6kwdZB\nGi84bViP71Cf7EdjTWlaJEvr/tNI/MVJYAYXtytR9J2Y1zG+5UBZ+dWPfcM3\nnFnMjXxIQhc9gKInKWftxZhw55zc3NBrrR1p6uPhBAqVh8Z3xZsm4vxEaUd/\nxu4JRPpTMZ804IDEFu8ZOv7OJYpUK2s1BLgQFbj5/9KUUW7nhlGJ8143IkTO\nQlzP\r\n=/JPT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC46Gl5qHAI6BFyK77GIkVnkf5SnPiNXegIP9L9iyLZXAiEA5XoKMjGwrmMw9mm4VfiXpm8hV71i0ArECYmxzkh2c4c="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605140739-4c9006f5.0_1605140891395_0.8642138050200268"},"_hasShrinkwrap":false},"2.29.1-next-1605164537-544c7aba.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605164537-544c7aba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605164537-544c7aba.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605164537-544c7aba.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5Ju7wD8ryLehjuNxYlfjPN721829Os9ffSL/ECRW7t9QpFCMHa08WL575OwGA6wmIsm9DF36MLXkLU0baz+kAg==","shasum":"6710e97a7f5d4d2ba186e596a04ce11a987d8702","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605164537-544c7aba.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrN6ACRA9TVsSAnZWagAA94cP/1seTWuui1AeQ2yP+/HI\nkWYrMk6BLO+fDpsBLBE7CBIbxqHEcngrAaWdhWQNw7Yy3yLwJ1Mms+YyOE+C\noO9A1h43U2HBQH3zrFZEjuh7oeSPWSv2S9DLvGozM8IMMnKkew3Xzr7Ox1YU\nPg7IAKgqkOePwufKPoWZ0YC0wK0evK31xO+U4GQIY9PeIXWReuUNB3qUPWsQ\nRd2yYjxqJWA6WBEb0+x9BKrn/kvgyTSflRY4sgObZKs+ZPu2HX36XStfRYZD\n1JdzF6yneAI9hG0+kgfgZttU6zsBmcAXS1DIOWI4EXbNisZWQBy6O+tW/ljf\nRlFkbjPrm6MOv73JesrqeQePYKr2pZvZQEO3yzWxZtdQ7IBar6gT/nvjw2Z4\nJUYUUwTdlWNh9AnPMoXA29jr7JPhj1jS9HMoAaEZMYy1spuGMXeOaxwgT0QG\n4eDxUyeQ10BFdCxNoZMbP9XSyovurZti+Ef2n6ELX5jmIPiI35szmi1vTSle\nEXT4iBDa5GDXxEivS3daLGvNni2Vt3+93WJz+Y0SMzqjkjGWVV0FEXX6C8Ep\nJA+s0dY8hoRDD5FE/pqFLY6OWQbmrU+8VtLhph9+7ALW+JGrg0F7r+neds8x\nfw7KYVrSRwqz4tmpCiIge8QoUvTElG2S8YqUWnjurW8ZE8K+Hmn8060rWWFH\n3Gw1\r\n=oWsP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/8pWHrgjHH4hD21K+ycTvQ/h2uQd0QAaBZAsT2nlLMgIhAMW3MIMZNmaaDZOwnUPx3YCinEyOq5hp7iW6iAKRyChp"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605164537-544c7aba.0_1605164672421_0.47675216136777787"},"_hasShrinkwrap":false},"2.29.1-next-1605169328-f71334ce.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605169328-f71334ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605169328-f71334ce.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605169328-f71334ce.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ITGCFKxtMV+8+1gEpGRuD+qBFHkKgnVjk5jiDR5mkhmgHCduyj6lp/ocy2727tO2By2bUBY1L01mpDrQ8n8VHQ==","shasum":"77718848c2b90f1585cbb4b8cb862282ef47426d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605169328-f71334ce.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrPFCCRA9TVsSAnZWagAAT1kP/jj16Q4PXemTXCGh956S\nNYlVBz6fJ8fBERsjeAcHy5DEGF8U1BPZQsFSqgCC6IrQaHdj0FEwbuuChVWs\nLqxYDLNZ9joYtgTxPHI+LD0pFQsrn5nko/0Rq78TB/X4fVaxPUOFHHoSP7EE\nLqtW6z/GBPjqCmD+Jo+xQEbdn3FClHPqM3KhhHtfulgW4F9ZXaYxXwNqsxlb\n7Byi+TPrTy25LdD0/UwzfKt1RQNMKRMXILZx8OdegLaHdKKxF28Sznk0BtkT\nDYY6ywvdWW2x/ldaBO1xUu5Plks1i4JoS/4XKupN9OBKbIwZE/tVOdMUyPs5\nlkHuJG1bCwNkavLR66MSQQyDiH9KE85x8brvGVG4e0fGzxy8PCyXN/Z2OkfP\nXeunwaw1ZaXa/rcJxrpD1dNuf8w0q2kZsuo7iyoPox0PaDJt6pco1S+XLfDB\nbrMLrIgV4002bQNei5id3LE9pA/Krvfsy4uXP/VUO16l0q2ucGkD28xoo0Gz\niUXVfyC9Wfr4LKQ436JxAs6TmSw2NvCwW65tryy6Yd74EeFH4u9B2sDZCI5E\nV43E1Ts+P3ADgXPb1wSu2X4frwY/Gurelc15bb9RYqQZyzzIhEfOJlGn0FmW\nDFYjFmNd7U1m7YKpUSQbEDtKCDi5CcNV8N6N+8vwlDbkHTd9LpsGiBQwwu2c\nVISh\r\n=OaVa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC03IM/r6B1TRJsj04hjOFywJ6RKZlykoO1gdymosxsrAiAawZUfX0nL/bVyPRXwETvVuteZ48Qqna40eN8nJTMVfw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605169328-f71334ce.0_1605169473659_0.7296100181188592"},"_hasShrinkwrap":false},"2.29.1-next-1605176928-f71334ce.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605176928-f71334ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605176928-f71334ce.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605176928-f71334ce.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mmDZJ+aG527lPrNCOL88iAaP7s4H/JVL5I4x1WsRuc+OtmpkVUeZWt9de27UfZz/K18OtemZR1k+64EcuNo5fA==","shasum":"4c80f4f7be4b0b385f50cba87baef5cd020d5837","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605176928-f71334ce.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrQ7sCRA9TVsSAnZWagAAtiwP/2bvDf8vaUS5CrEG92Dy\n9ukzzvQLBOp+WdIfDOWnyghSh3bfIHSBvLajA4yFHw2O+xqqXyPmRNv/bqCs\nHqfaElajZdZMWs0f11xanPDr2DUKrNR6ZHRUF8q/wZdIOivGOtDa+fghyFkz\nknjuC0z6fnLNd66oVBN52/LQdNIcTPHQZbD4ksSUrKWYNscoXn8xQNZJDJEF\nWKMV8rLBPgVRePwT/KQJ8PEgGUB/rECr7cr/qdc/+7qwxtSKqxAu90tvnnZX\n5g60KWrVWybJ8SzC1gFbhvv/c1SmllNAUElYMdApbiM1y8+eFQ18rv4fK5jm\nX0Enkp64KIK1qO0QEKqFFDnU5zMRqnhoKWH9sKkj08c9PnygWsVRo+l0KTx8\nM7+4YsvtCYMJsLORYAHsOULiwgtJATVgIEIgipt5MQ0sW6Y0NlKYxZ74hpWU\nGWqO17xqDIrvLrvBGDWOebjJzdoljbAj5e36pb7Iyw1iJUYlBf99+HVWeMN2\nr7UDZjSdOVgXpsNtDkTebRw5YLQwys3gUR3kq35+8xsJMu/tOZ/k5ZNutJE2\nzN3kaNaIaZst4TyQijZkJ4i6xfx1mUX8CcYD28d/1PBVL5VJj3N1r2Cb9vKU\n9uy/zg56o1ai6VZSU0BRPjOWCKBBLJBYUJLHjj8Wqe2R+ZenYLPEr8dUptzg\nI+0Q\r\n=UD9/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAEMQFxfkJVHFoLFdxkiiCw3LvP1+E86TsBQClzeU7RgIhAI2yhAh0jRs17pYS9SHVWjXZfpDTpZ/6DfWCrZm96V35"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605176928-f71334ce.0_1605177067794_0.5212786968469931"},"_hasShrinkwrap":false},"2.29.1-next-1605179025-2b120fa8.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605179025-2b120fa8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605179025-2b120fa8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605179025-2b120fa8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wgmzLRbNgmu9ycoppTaq/1gi9YKQzBXm3ncUzlLwUaDJx0Vwihq8R0DrYIRvZDq91svevZ+LW7Tbmhz2eoBM/A==","shasum":"f29d992d85454c1dd468625ea93cea4ecc693abc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605179025-2b120fa8.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrRc3CRA9TVsSAnZWagAAyj4P/R8mKJQL+/xIuYHfruk9\nUKWMHytrum4hiFyr4I4s4WKW4db4wkCfffnKSIcN3da7HzYrTrM3C+MWqx7U\nAPJoyIJ9EqS4ZmVtJjloGfg+w6nn9HArMg3m1E9a5KwX/mQc6IrT1Gfnp4gm\n6oKpps0NJ/kb61jV72ROllwzKwf0Xh0nbX/zZNoqrUboDXtQ7vo+JY6qOIW3\nQ74hlXcoWkcX/LgKOrBs41d1cXOE1iVbrJFJgrVRbN3CIaQMvLhi9C+uZW6T\ntWBikMhJsz1sWHHlcm20TMVMWnbzVGi6/ltdCig0vuY7F2I1xxerHlCsbPS4\nqy1MGU4F4u2WVrId0R7nzeOzJ/lQU4MTj3o2QayimYs63uf1UbOJk1w4r0CO\n6Fm+sUaGG2ijdo0FMwl9zkTVVDYPOO9nHFkgEcFiCfQAoSuHL7uPXBwGkiTi\nxaWw/9z93Mbek6V+rqSGfi0vjJf6IjIQvnsr2ZYyOxTUMmAkV9WsRxVTBoqT\nthFZtPsyGelIkJ7rHb5+MRj9aa2F1kgZqLiliba4yIrgWysHZ6UglG8K9SA0\n4tycIe+MvzrZgfBIb8+SiLHQCbDKExwHodynsIes2rvthYO2wPk/v3naAwpX\nIr+3nboCY+x4zOvEdSa38GgYJ1LTCdrb3ip+VL/RDqCjP7Or9aqOI9lhYS4P\nGJxJ\r\n=EzNS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICX4CEmmUufY+eDEoyZ3HaQg0ZoJKUnFEol62Vxc+N7DAiAvPcdp+8BRxh6XVGm7I5akqC0V1OSYh2f4aRPk8eMWHA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605179025-2b120fa8.0_1605179191158_0.07692835247660201"},"_hasShrinkwrap":false},"2.29.1-next-1605182499-ab088f59.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605182499-ab088f59.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605182499-ab088f59.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605182499-ab088f59.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-L1CJmMp+bBSE+RiCJfLutDoft61UEpk/T8bz9tKbq5eL/EOJB8PZ1Wo5uuMdhlYKLai0Tlo9UL1w1OaT6rt8Ww==","shasum":"93dc03ebc7c5da8a6ef798b8bae6b13caf941e3c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605182499-ab088f59.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrSSzCRA9TVsSAnZWagAASrEP/1Psw6y/9R7PxQwbDmUw\nwmcLyxKsErqSMRBmViy+0fkNIQoMTKTciqMxtlZ8wXsF0d1aKXUhvS5OVEo0\naFYgkIB//tNV8YEA8yvWDw3h0Yqy2GkVVquSQ/IVamX2J2HJaAK1RQbPmuI+\n8NOnNagABXpL4/XGX9See8yEpTjIxNXDPWDqCYfkG8AyPFigMHI3AV1dqDVs\n7IsoKhznaq0R69GeCw3Vt6mA8KbjXkasx9MOFPENPKHVPm+fhtxTAFS4T7nG\ngWBAyPFn/gzoEWALnb0uMy4EFNjU2EDgI5swzrsMJICa9M4r1Q2S9sDfUosr\nzio5el5I2WWcGXtVq09mFkMeq3b19rMXcxKU6AGbuEuJzsbwOVOULuyHhgCx\nUxPiy1oN46F+j3d6BfLy2BtTNo+nyvA26CEYRH70D4Ca9XcYaGmmmQ/5r5lA\nKBe3OrBJ2ZPKmbbE1UZYIFbd0bt1CJPQSCgPMTLw9tmMSq2yuRjtFmgjgUoT\n3+P3HEl9LzsLYDfYGXT6guEwWrVGe/s8dybRsVuM5LC8fB1X6iT5rNVJkGBc\n8JsriPpZsJjjRo1t6HfR7w+PMspIl0f6a5lE1f7OYXp7uBLGbUPwIWb+9ipm\n5czwmVMJBX77aaO0OT+zrDiKnTa8WAyhq23yihzpZBImGYcVNl5DQftWKmzK\n0H+S\r\n=sv6c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH82AGilNyLP5ykWU3iIwgvAIlUZQBTd+J8ZrAB9m+xoAiBlbeXVn+rCMGDNfogsho4ONlqMNl2rlNY1YP5P2w25GA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605182499-ab088f59.0_1605182642658_0.17209042711999478"},"_hasShrinkwrap":false},"2.29.1-next-1605187801-a3c601f4.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605187801-a3c601f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605187801-a3c601f4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605187801-a3c601f4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WyoR3U7lTXWOFlugqp6gINWRfFlnarnaT1rBeZDrGQW0h3ZN9o89Owv7NlyiS+KX1if/HzQFqDAfVgnu4P7K4g==","shasum":"e06298cf749838b9c211685d9821a1dbe77329d2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605187801-a3c601f4.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrTmBCRA9TVsSAnZWagAA/aEP/jKEwle3jl4CXaL/XmND\nQVYDJ/KKDb6DHNBlz2mls3pazKk4QkNg4o8bpiEXO7MbY6nGbpl1YkpDZcLN\nDp/ViXYVZs9GN7YF5LxK2OW00aOaOUyoN4e4dkRK3iL6BKeZEydFynYvILp0\nG08SycZIE6YQKAhjHX+4nYqnO7jnvaS9pVkeVI2yS16cM1xJBK18hw8MRQ2t\nbeH0+cDz9nJhLGVTuqTuQ1u6sD5KiE3XDIUvWhCrT0LC8ZuM3TWVbIGJqEGF\ngFiObeaRG/UiG39ccBmlY7FsK7sCUDMf3K6WepG5iOTwV2jwEwh5pROv5038\nTawUm6+kd2FBANm2c2xPerVx+HPEa+tWDbn/zXu97Y0ndlY2P5iyK+f8gUH9\n4xk9FapLboS1vUQpBZEr4FkyDU3qJZ3HokEUwC1wLE9zXFHWgTRg1kGfJWIK\nr4UWWo7rTc4DhoElGzXlIsdZebHqCjCDjM9gHRakeyzZAi//5rVs+sPOb5Gc\nk3Pk+hwyiG/LxvaLRFyUjQdvecmnsPo8CcHv0sfcL8XBN2aVMYOI8mcX/C7S\ne64M2wf0WPP4hO5B3AMH22SPinZS0ZdTuJDOcgGoh9haeykiusvVNYHL2uMQ\nWKgqJdQOpUNBb3bbNItzysPQkkqMkJMxZGoPl0/8ot0UgNZZA4oDagvFc9Op\n0KT5\r\n=HWRi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCY7pAz8nqkE/eS1bs7S+KOwjCOcvnBdCWVmHDUXGEoUQIhANe3Le+MK5ZX5NWzxp8DzNchQ27dLRr/aT5d4AuJw52l"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605187801-a3c601f4.0_1605187968821_0.7600687950757605"},"_hasShrinkwrap":false},"2.29.1-next-1605195130-e170cb3e.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605195130-e170cb3e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605195130-e170cb3e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605195130-e170cb3e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kCPgR+WsDKfbcyi6+qkeUnZXBsP/Dt66GL0+UsTs4nBJ6wGC2NVLEcjeLt4Wk1OtcYDju0smoRpXPN3vIcqpSw==","shasum":"cd5a4e93bb9a49279df2782651b913d8d07e1b87","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605195130-e170cb3e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrVYQCRA9TVsSAnZWagAA/ScP/2a0Hnopkz9ntAq1MDZK\n6ZdWgxpxX1pF7Ba67JPm6gJ7LTt+lS+xD29dwHHKBg+ysttz8e6HO3n/Q7WL\n7u24T8mywo1HAhtZTAsedz8IDw64b4Y1M/pFErZja+7ZgXTxsyzUz7kFrAiG\ntN682vjKXEohcw/QpFekWoA115k3xsy47NAm9+HH4i47qH7ogFxh2BKSmxJL\n4Z7Z80qRCKxe7iytiY5NvotJr+vdiIN6Ji4LsGT9dijNX/+5kHUyaYhbkM3P\nPFLEnNBETZHrBtQ6tNnZ7uzsenDsUuCrwXlm47BuQjC4fuuBS1SE/Stz3QCj\nNdQSqLVylY13A90wkt8rZhYvF6P0xeXTYgHbn6Fskukx1RNyzHdSFowhr3BL\nKqkh5SdvxlLRMT1com6E3uFeXmxdv2qDuiNVRexAMZypwdO4uoOu4PSXR4KT\nBD1dGOeJnTlKTqznb8o+nxi0MBPhc4caN3YjPTS9KtOzpEKqJ5qwZK9yuV83\nrLHclcMG0cNqQdchFAkCCM2wIidAsRfDXkjrz50VL0WxAbcZdL3dnjZ3e8VU\ngJgQJl6EkKIryRUk0hjLgyW+n9f/Lm/d1UEYrwLAg5OHw09qF/53D2wWmN35\nwANeVTvLS/x42x4Ps7RaPMxK0PBeSMK7NVt0ocHrsQylJpbEVOokJ0jANmGG\nkny8\r\n=ZyKb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT7Wof6HhDv4LTklNSUmLgwW/Bqx2jFgIIbbqQsFSNJgIgfwmuLuXQSslr65f7gQarBRBc+HI/lS3B6uFkrRvWt8c="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605195130-e170cb3e.0_1605195279837_0.7935906797847498"},"_hasShrinkwrap":false},"2.29.1-next-1605198090-431dfc79.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605198090-431dfc79.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605198090-431dfc79.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605198090-431dfc79.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hiAAFWa+ofYpMGzstqMsEwFLYY+O27h/IR5Fy6IwQbpg7DrO4cAuKgqmYXViKNrqYKhTkEktAPgSLYC9euyuPQ==","shasum":"00084f03dea2d08d63b946b51135d8fe6b46d063","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605198090-431dfc79.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrWGjCRA9TVsSAnZWagAA4rEQAIJURjcIfoVG9nFfL3rO\nGXBVonxppMqh0phZWBOJ35DfAa0I+zAJV8YoldAYUHAJ6zw7lZ+YvNjh5Eoj\n/COKJsPPce2VNehK7VVf1HteLU1hWLdrbHL8W41CUu+1XyUtTX6VBPVwE/6B\n+e5YVGqiDNcw86yhBDTWSRu6PimRNlbqk3My46XcCi9vC7eHR1bka8xQCsm8\nWr+CKZfJ0DVFl+rwwMuIO0S9FuFP9NBmUFAZMbICg4jYNjHMW/z+c8+Cu3vJ\nnMr9ZgbCpHXalGJKnAub07T22BXet7D6+D1MtZAbkQgtManL7qpWRZXDmKIQ\nC3odLBZv7UCnL2idKAjTOwhMcBKa7OeIg64e5vNYF2C7OuelHpEaLyPoFCCl\nmjOKL1F0ZXNEgGU4I4dWbBQKRqEAAVm84k92wAJHFL2zkShm5o+KU3doB/YJ\nDEGRQXWTqCStmVHolvWOuIzfJ4mKBP3ly5+Ue6vRoQKEydySizJVC7DdqHgS\nDjWfTG8rCPwp5UhxzItDkJeCNUyrCnwHrSSWlSo3UQACWbmcGdrivn+X33ex\n4J4l7vTYFD+9B7Y6acjSe3834opyCXhsda6eYnjuSfHwT7q9sS8BtPAZuQE2\n3QVPW8kcI8hCoLnIiuSR00mqc2c9xIHYBjKOdyI1LIZnN9GzY/t81P6Lx1hl\npfWF\r\n=ugcK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaTiPzjLKcbLBMeZnPH5/4nRYktlMG3wx7fB0R4NxowwIhAL5jys+34LwxIqUboFqQ8tM2trOj0eaWmkpy5WbR2Rjc"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605198090-431dfc79.0_1605198243099_0.633387898492614"},"_hasShrinkwrap":false},"2.29.1-next-1605204536-6aeb6380.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605204536-6aeb6380.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605204536-6aeb6380.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605204536-6aeb6380.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kAyVAlqg7pWw4h9/HUIhJC6r3m4vcqxJAk/SKrnoDt0EEbSZ/tO5RVzEEFUToJE+w6ZZkVIn6lKQlYf8PiaMvQ==","shasum":"6e42bb8a241f27d2474c0e8f78aef686abf6f188","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605204536-6aeb6380.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrXq5CRA9TVsSAnZWagAAf9kP/RoutaBaN5GSSWSCbrOB\nJoXy7NcYesUzsCRRNdm0xwmUR4aTHXqJ9ujI1L4vbCqS8RASUzilhZcF/0fb\nQSYtk3zAOo8POCanvtbXwwM5vyQoRlQKKR9cW2KiT4GVZy/3NoycIvaDQ0RW\n43r1tBzVGgh4GfMWq4LkHKvoKNYH0cln/wYKxnRgVjDD0cOYYVQmoTlI0PLY\nJICZ9p2lIVQK711VkUc7qgbhTIQHGRKLKdvYtGar2DKBKfC8jN7aG4nqrKM4\nXXZacCXemS+HL//Wxy73XZ30xLYBeFdiE+c3sysTHm3ax0m0jPeK+itkGiHW\nx/Yi0taSjyEHtC7KvpU0KGZT2IeDEM5flFMra6LmM4HNYi3mTA/iIybFmwt4\n6nW58UfVWHhxoJtqkmS1Nur/LLU26TMPcbcJizc+75CPVdPHie1ynw6AwJ+x\n4gKxc46KA3KXqxfeblHLz3ZfLP3v/RiC4/02BvTlxVoXI1V5HpJy0GbDZzAe\nMIS1b/VovCYZZOxWtHlA7+IrtN8JiboX1LZcc1JweS5M6EjbDQJAdDF1Ut43\nMK91DLeEW22Se17qEiB5NLyByIpxRnozFwLAEfxtqf2os4xWq2Rjqzee7okp\neYXIDVQvn2xKbcpgSCrXoYv+yAE25JhNciwU23ppiMyopQC8KnBBEZSkjHRR\nupRI\r\n=1ZRe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFGXFHMh/65f+bagfZgc9D/emDLttmSIYmfKnEXo92OIAiEAxTa7otcD27J9oU1HdK6f1RYTAy+jLTEf/vJ0CbrvMhU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605204536-6aeb6380.0_1605204665111_0.922526198381644"},"_hasShrinkwrap":false},"2.29.1-next-1605207991-0bdb2a36.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605207991-0bdb2a36.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605207991-0bdb2a36.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605207991-0bdb2a36.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JmYMqoh/3IP7hOiTmBzFUU1+6zcLPTlGmiEfTzrRtSfVa/OlWOw/zOVUYnIkXZ4auNQkOJl/WJnoRNjg6oOPrw==","shasum":"f46d3fdddbc8c902388b351b510f0cdcc6ef25ed","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605207991-0bdb2a36.0.tgz","fileCount":58,"unpackedSize":135008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrYhzCRA9TVsSAnZWagAAXvMP/11tZvQIpkuolueiWbOv\n6fTp3xts1wzNY+dCl/KjECo5nUwzUCEwO/J1mUuUsbFsBtZ5VjNEX5ABkXZp\n43csNMyBWUwN9rzPPuP5CammhLiVTxTJI1E2tkQcWSgaI9k4KmMsD/8FLmyB\neiovC20u+ilND50m50ljA6Cptn96lMiuUziZDZhXu5nZ8s4xK/CaiXy0lzHy\n7nitHYDLYiFWggE6JP841WGMbeb6xOZ08+nHmhsYsaPwN45EP+zOwUwApJ5H\n4dRdEfBd8bJdLUDSLwxURrLxGSKdkCQppqpeXYv84tP1LtZydkFwNeTF3Qu/\n6LFXNAMCe08OSYdGztr6ytMsQTHbgw6Dn1q1dXyEWaLjnBXhv4CExif25O7R\n1DvwEYe2dMEkRmJu/AJDYa0Awt+pzu0O9NFScZ5a6H6l02dNMu2bLY1/WoZU\nXIOsGuH5Jdv712jyPAwhiuR+7OvT9ltfDfyh8A0yMMtYfGEhOakKo/zVuJHd\nDh5o0IfQJ8sNHKjqSyKE1HENUJIOjZs4lgz5eSuoDiFvYZ667FZvLxvfaVTu\n5EkLbqU/5QUuFKbNvTD7bp0gjoTpyudv6P3f/+VTrHMHuHGP2V/MiJSKEaxp\nQTRJ3MMrPvgdKOMuR+dZeQXOOczBjEv1e5lqFj/4t5FEOI7lPNC5f4/hSydr\nMjCA\r\n=Q3xI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3ziBp+RP1+w9jq+UFOCXYq0EXX3PvdK6ewsQ2vnz3qAiAMV5Y4hIjCtPvHe3rYLw5hRI9r1CHwJDtNw+jyOWML/Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605207991-0bdb2a36.0_1605208178576_0.11890732481102373"},"_hasShrinkwrap":false},"2.29.1-next-1605210842-6aeb6380.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605210842-6aeb6380.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605210842-6aeb6380.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605210842-6aeb6380.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8V/5LZEb1eJ5g6wo217uJhHiyQ9Bf3SMrQfGlo5Z8O5AGTGv0PtPYK88Fpsy/4j8ckwVYDaJi3IcBv+mUU3r1w==","shasum":"ffbfb46d85a7637ed1f1b06f5d41786c344eebac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605210842-6aeb6380.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrZN3CRA9TVsSAnZWagAAMEUP/AtDUzUs+nAwLUk5/DYh\nHODXBEIefVGC9w5asrFqBK0FF1cIloC4M1EiOtz6+WWGyzUVzRb6dRZ2Hi5Y\n7gXLxg/F9YYCu2Ea/xq5Fek+62GcIw706xY1PSE1DpOAFcALzPgKu+aIhI8W\npdbgtNCN2B0BxoEpB3WbY4fZA2C56tWEOZ3nHSj+AjxVqM597M4/gjF5w6R/\nm0aWkYpoyULdh8q2rhqZQcBerZ3015NA0kzwW3coixrxrJK8sRjClfCxTa91\n0gWS0oaZEuCY4W8j1/4Hg/GefPcZQXOuNzUCUqzEINwwX5JR6vUwdiV5kWji\noRVIdt+e7B8SYvm1Z1NR+zBCn5KsNTxoNJK56bWESqftKsT48vKhDfbyOcPG\n0+wZRfrea1VN9xKP4keY8KOcfuNTMv0OKeUX2ck6QEq6swNkhz9xgLaKCxPd\nPHiWpGdLZrh1UUxam3OlhnID38CoqV/5KloAk3QnHcLtIMLis/jr9rIKDDXf\nfr0K6O9SpX3qbzCxu76L7mSryUVpJLwrWHLblzCEa3L1+W7sy8CQgLapXlVd\nhY6E2RASDkjLstKBmfjZnO8ULhuPgJX00RskmlUWjB8Bd9zj0tWrrrqR4aw0\nS22FjbCEXj8JXRa21NGGAZMynJosBqa+BT2vVIhM/Gw3cDI8q3jeumQmFAA9\nSjxY\r\n=x+lf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG7ay7rqpypoGpUqLNJdmNB2wxhusrJDFoOESidQl1eUAiBiG4f0NlagLiKJoJsVzSY0F1OVYjdpjddIzMh2nEDd+Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605210842-6aeb6380.0_1605210998767_0.34117488372370897"},"_hasShrinkwrap":false},"2.29.1-next-1605211089-c44ee8a2.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605211089-c44ee8a2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605211089-c44ee8a2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605211089-c44ee8a2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-b4ceuSHUBzplTLyiUeXgV+GV1JVJGmPMAfRWhgv13IJNO2kZjhYXN/6QekxLz5o3NZk6NpXPrFnpP94ILW6s4g==","shasum":"3a51580a1e26c480a2cb7b2e9b3e290fd633eafa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605211089-c44ee8a2.0.tgz","fileCount":58,"unpackedSize":135008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrZR4CRA9TVsSAnZWagAACDYQAJJWhketDWqY58qlO0nc\nYXTXCsmvc7S8xp4lifxPxED2W0fo9BvH4yPCXx2xG693C6/ac8R+E0yy9YGz\nxdTuuCfbR/vAXOkakawTWIE4UJ6ZOef5zUHEVHRum1sR3GFAYdvRNObZqKzc\nyi/ObSwEQoviF9RZ1mVV60R/b/7YEW+tJ6BZZAmw0t2PXucXzPUKABfv5HqP\nh6geQw2LZDNqFLWctXe5fzMFZGplAkg6Lg46rcXfGEq/RPZBCIj+KPPSgmTB\n0UO2tWBkbGOnaMLqKaFYATQACailS2zwwMcvpfVaUEhjoAsPKNUQHSwHTA6D\nq5sYxGd2F59SWEHeA6DUe4rI9B56oNP4ho++dTlC5Dq4TOlCF2q8cOneMHb9\nn+b3Dh2OInvNiQ6LuaznzjpE1YFlachpNUUI/eJOiYlL/9BI48c51pWLuvnU\nElL/GAoDjxv6sIXPLRK9Y84YNknCcCoJ1CGF91GRMzECOnY5XOqZ/yDIDI9P\nHTS0ruLFvC/4B2rUyIvDssMJ6Q598YtNZnHUops/FfRPlxx85ojlRRS2RMQu\nwOdEmKNlkc4+2czETDffyr/exloB48CXzZMywTYfqiO2joGe6OGqge1SLnd6\nbujETBOA8br6JmPwqlPav+AtAUGX8a3SXGuhMW9WK7z/mte59yjjO8trEPEJ\nIqwu\r\n=zm4y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHwHUJoIKOAuVk4TLFnfa6NPtYFQYaiPU48ZwhjuZ4UCAiAXBBLpMBc0AE4x5y6FRNKE6roJqApna1GGYfvw7EG67Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605211089-c44ee8a2.0_1605211255984_0.21617603543483455"},"_hasShrinkwrap":false},"2.29.1-next-1605213064-d0f5ce4a.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605213064-d0f5ce4a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605213064-d0f5ce4a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605213064-d0f5ce4a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VuOW3gZoF5h4iVRdTbhCyS8Z1QFlthwrAsfGJShqv42CGwQDYkz3rAqtGQ7/FvdZj9k/WN8n1boragtKr+KN9w==","shasum":"4cdf49bc2e5a242bf593e10ba5497b37b55e8aef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605213064-d0f5ce4a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrZwXCRA9TVsSAnZWagAAs2oQAJA1bXPETlBXuTyHriok\na6XNQr84TmQslftmVjv3UNZR1XAaEHVx/DsVqLpTCkLk7rM1B0pwG3SAYrDG\nMIO5K0Of7BC025ZX3A5xWWlWUAfT1qlmBssheS2dpwv/EaWnneQ1CJfOlLRN\nRxCeG+uam3sRd+yJJaitiB0dNgVdAjbsx0e1rexK9PK8oV+IWgKlVIjlmAAC\nYtMbMy7nJ66zy/U1jl68p36/kiBsLvOgM/b8zw59y+62tfydCTatXJF2L7mr\n+bXG78JnsJfG+OxL7h6U/FXQQIF9S8qL676APTpMq2hmmnBJNEVPeCXznqtB\n8N47wpWggTb5H9tISjb0CJXvwI/v1Hbq4Ou+mcyEy/Kir6nDmO0L4FHrkSRe\nBRTix0xsEhRbYp355Xn458b9HVBd4bFectOOKPM5HbRRWm25WsFKi8ityBKW\nDyx3uaYo3IKOT74WgyXoleh/DsQmxBRplh8GOTLHQXE9b6NLjR6WCH2hXdVm\nSOfXzsxYkNcdRdzVA8C+OZj+ntKqf/mAfaCDIyYLInHxot10lH+CnSGnctuY\nmFok7PKG1g1ocX5HNvN1Om6YywNNCLpYMN735QWWqSnvvveuGqoWWT0qdYVs\neXvEqaGQ5C1PhO57ANRB1H9bHWjOKTBHSAlPW9E2EhAvNxzjB8KUuZWVDBS4\nDP6T\r\n=z1Bg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbJCqEEBpNelXROCmyhj8JzlLtKepvxZoU+J96kQh8KAIhAKe+MY6Q6NHQ/DmfzsD28AViuWafxlr2q1wV9a16LIIn"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605213064-d0f5ce4a.0_1605213206963_0.20362617706714548"},"_hasShrinkwrap":false},"2.29.1-next-1605213089-7182131e.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605213089-7182131e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605213089-7182131e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605213089-7182131e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yoGj7e6sjQ4SjRXN9Amf5tmC8s4U8MZqc+qI8unwkkPshQMb/c4xol/JtururDW58bGJfQ4HGg1/yRVAoPPOpg==","shasum":"5b6bbd33179ba808a43d30f4cb3c72d2183d9107","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605213089-7182131e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrZwyCRA9TVsSAnZWagAAv4kP+QAIDeBvdcgxDo6H5aXZ\nWiWnh49QytAS+6Bfz+3WvxOsgdz9jxqVvuUlREnSny6UmJPCf42xiR+c15vE\nK8mnt/ge4YOkKec4mKfwRvlSf1EzLUi57QbS2+Hu4FLLZB3M/alV0vz0WZrd\nfM2lt6zEKx8TdhU9FXuh0xuL8uCrqSnhaloIaD4v3HRgnkAswqHv5aNAJ2WY\nPX3q4hBxqgykOfUU+14GXq+OgkQBO2h5lLz/WpjtOsswCFKnzWqRLcQz9+ul\ndASLw48sZki3E0U3kMA9Iv2gQxem4vJYyyg8LuENDKpTz5UDsL/XUrexc4iJ\nBHzsHuTLfOUd0N950BD9RrR/QWU9wMtMxfWTNIEW4ORyGToOhqFqNAFoc/jF\nt2nJ/vY2KYEuMWaNYt8dgdzTZl7Jijvb+7OUOdL4UPW/kcFwH4wmTXHKxmMn\nK+dHNGd6IjvIxVDSrKDvGzVhgq7tZlrz04cb/zy8g4bMsQewXYamPPAsFTjT\n3BBY9jEh05EQ4zT0ePVRC488eLnV7wGjOQd1eVAPIOPQUvfgl/wYjT3fKmp2\nvjmzjm1U7mHU+hU6svAbX6wsKh9we3c1BmKW7XKkJ/Yu5QcAAaqpNhrSAgJ4\nwSI3FRJ1sKW1Rn92tB7qZfzwIqIgU1rkZoqTKuyICnmW8364Z52Mg/oiLKNe\nGMZK\r\n=HnZK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH9aLG806TGCgIshvlKueOTkTH8M84YY1vaP/RizwplEAiEA+l8BvOiJZ2TOj46upvKsBSNo6OPw4qZMDR9rxHe4jis="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605213089-7182131e.0_1605213233599_0.9561511166443164"},"_hasShrinkwrap":false},"2.29.1-next-1605219941-fca701b6.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605219941-fca701b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605219941-fca701b6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605219941-fca701b6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ezvcpcutncLKLz8M69YhufRVoZKLF09zzJdhxtaV5amw6Vzm4hh+WO3MAZIvhie43dRdSXFk+tWW+JhyAbjHNA==","shasum":"398c925ee8ea3484c8ff79f13373ad6b7aa60a98","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605219941-fca701b6.0.tgz","fileCount":58,"unpackedSize":135008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrbcACRA9TVsSAnZWagAAAgAP/2wUeAlHbc/4uCYkcvah\ntCGv/D47iq83/MceOY+x2UbVC58zc2y+OO/2elm9Y4XkE8VB1OWbFgR5n4Qy\nTQ4VMoiM6FHKpbL/RQDD5LgtYunLC+nUBSM+zn1SZdFfRZe4vmn/IW12Jtje\nGevaib2yG3s2OrKAfM0evjPXIG1CnHL3MRZkVsk0MroHHCVruLkJpvUB3mD/\n9oHJjhbkpoY418YUZoC7nZ9AtjBUG/4+AwNC514fY6A2ohYZl0yWk/cfkvx4\njNWnPvbFMDJdtr/mNK0Vl5EUwMyhQjunTR0KfHCZcV6HVJhugq2g72zeY8At\nxPCYUJJVfxhuUVPRwL2zi4wWoMuQSaV0M29BtVrLg/qsUgF0r258+0JBp3qo\nRj53r1kebC5SL0cEcZebXqqIfNN3ZUb7Us7HFZ5kugt/q7fJKui1AKhKzX1y\nOzBVof7cNLuGDTrwTqNcA6es6tXyin7zYLwofIHteru2KizIH4z4FRw/IJK1\njqap5WaIcEdJqmtuNMu4gVanrQz/NBcuMziyyGAHb8tVJgt6VLMnizbVftQh\nZoCLpKsV5oPZJFJLieiCX5EC56JaMd90VNNNBJPM5iQh5CbV8Q8ZrWTbXSTB\n+j307m2MUi9pC9ndCjyrnxlEYcpNTsj1pF1tqWYID5G8da72KKJrO8h71GfZ\nvXiZ\r\n=/S3J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZqrCSg1bhGGzqxga9nSSJvWwKSeo2pSGfduEl/IXt6AiEAhcSPNMYLpWpDbHcc+zp0/U64sQJoikLHgrXCl1pXzKQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605219941-fca701b6.0_1605220096215_0.12784230939221986"},"_hasShrinkwrap":false},"2.29.1-next-1605220611-2da01368.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605220611-2da01368.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605220611-2da01368.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605220611-2da01368.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ngcaXm/Sf9lvRR4L0stCmF1uXCIpp/CqjLr68cKLqodlK1tfZoq+cdyaDL1QXL/6cyu6nPi6F20VljlkKmYTfQ==","shasum":"d33003cf62d4be367fd500a4e0dac663b56fcef3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605220611-2da01368.0.tgz","fileCount":58,"unpackedSize":135008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrbmwCRA9TVsSAnZWagAA1fQP/RJGYh79pQbfdIMhowIL\nKc0qwmqqYUVUbUvR6TQXekaDYnIScIi/Sx6oTNJUsWssGnU4JK7hoaYZkMhJ\nKjPqvF+nmr4q1iA33xn3vXl6S3j8s0nfAHUEZvZ9RX+0f/rim/6g6KFuhDZa\nJq0O7+xgJ7nJz4EeNAXnChi09r6rnO0oZJJX/3Pjrdh5RpYJwPg+GphY4F98\nuOh8FoAbMvFR6jI2PlFgpEzOft4f0nQW/MiGOj2WBTUxllymBguQufOMHcd2\nB/TX9I/8J/mwHXqAW4sRQd0FU0tFmcn/dpLcXPzZiofY8ySDB2qkBwBpS6qV\n8Fm4orw8o0Y9hPCBGbnF8wq/MH1pLKoSGwjsPjJILLmvgnTqS3mjKXNDHQKG\nPkxdkGPwyP3kzvUMJO1RjDPuMgJFCGixOFLAFDgmv/OwlNnXl5Y/AkfFLDrp\nBxv9RNdwHh2zEfkXrCkCkHzh91D39sPJEaKGBACjanbumjIMYq8BAChLhepi\nz1Xfz3e6HQAXFAu93bkvHPs0A5P4n1xFR57NpeVG3X1z5gcMjrN159zx/8Wu\nA72/sGAOmdctvN7zFIqFWcNdbg5I6FG4dGkVkLB1++e/rt7nxbSUa8eD0XrH\nci5p5nq3lsRZQLprLGJDzzpIduly1l0c4F/J76il0qg1KtdUtW17qxi7uZDq\n9RD4\r\n=ASx1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQvkRUnArOc5Q5jloQLV4oXAizXmcZyy5O0FDTp4nFRwIhAP3DRWhKwJ/d4RcpA9jzKtw+Y1tRCVl+lAYgHYNtDKf8"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605220611-2da01368.0_1605220783882_0.540306855857337"},"_hasShrinkwrap":false},"2.29.1-next-1605231317-ddd37edc.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605231317-ddd37edc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605231317-ddd37edc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605231317-ddd37edc.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3My4jlXuxceP6Ci3yUyUJ8UhbYBDE6J4jgbM3nRpyT5t3/PiDhkACCsDsRccbcFBoUYuc/7RkNzTWT4dSJxW0Q==","shasum":"25ea0ab675cdd64778dff7a097204697485d9fcc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605231317-ddd37edc.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfreNmCRA9TVsSAnZWagAAG2EP/11t5tuBhcDk123YDShs\n/Jkr5EDRzr2t1vEB5Yn0oNw3wwTC4JV+68o5bUmSM3RyuIufI4eqp3HhHb7F\n09KZMhf8mBwE+spVhYa/6seo5MxNdjysFNU2psXTHFPEzXz2NVCwezmHVhGL\nzP7UtBtaTd1CNfXT6VJWB509rMI8I76mGvgivCgsDujF7rBQtV6U33AJ4t/9\n5CI9WfD9CXKZN6gL3DASynn7PpcdH/QYZtCAfmoWnjPegXmBInUgxLrv775g\nwSfVY06EUejpk1GhX9Guw/doFvyoFMn+hXc3qF4DE4sA5dE9SEQbqbDdS6tX\nZpf8R+gGPjUt5G2UjCqnGgNlcijBWnZzf1/Lnow1OdI6Ir4wlbVoMwFabRWE\ntP4d/SC68PH/rr3KHB/63cTQkXyG9KK2Gx4iFq7Mkfp9XqD/Y/C4shBbCpAS\n5nFCiuFZJuqQwjFJtJ0Mf76MR44V59CLUIEhSl7UxlPftwGwZl30PM55CW+I\n2O9AYWaMxLUtT3vxl1vAtrbZEJ+QzhFICh2aP5MFMk8jWKcbbn4gpHYxqmNj\noTjn/6NvIPFRacr9Aa0H1LOh9Z4LQWCUek5HlBCeLLPTtKqCioEfghaLOZxF\nurHgpzhM0uHlrfQR1d2pUx/qcUQUCD14SJEFLiwOzct9J/1wJo7JJRI81O+F\nkKca\r\n=MThV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICheGh99THVM+jXtEDpL2YprpmHcCIm7dg8qdT7lcdlwAiB4q//MaNsiLPuIwbXztlrR8rAi5oryxzRMj7jMHSYW5w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605231317-ddd37edc.0_1605231461734_0.571490343412546"},"_hasShrinkwrap":false},"2.29.1-next-1605232431-5422a9ba.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605232431-5422a9ba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605232431-5422a9ba.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605232431-5422a9ba.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-a9eN4FM+5E6HTBx+08qIdU76VJlpQapfxD8QhMJ1FCGDh/oL7e2erPxCRB6hcsHOaewqQi6Ca7vdgtRn+Kxe+A==","shasum":"cfe84a97bb3b581b2cf08136edaee8282d35ad30","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605232431-5422a9ba.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfree7CRA9TVsSAnZWagAAnQUQAIRRFA1HkD/ngxMC7OFE\nd4Oly8hx3af3OmLNlShuAkC5V4lHjZMLadJ8KEbyFw9+tk1F4yyHVeungGui\nImoFZ16p2EpBeUFVPw2Et3YUbnaiF8HR8nsV4wLFB51UnbVoREBE9cHEVsIR\nH27Q8KmjnQSOiKxbMseiYdWy3lyn24ogmTUiXrAH0jxRhxNimAjalKYMWVJW\nPKMPEZtRzdu/A9KUU9Od6//GENDz6yJPbQ+cbloUeY/DTgJs5vvauyqC4LN8\n62ijvd4P990wfSgIubgIM1RW9U8rRMxDtOGZjnOwON+OcRnLJCDmDyj92kTb\n95wHBT+30anDR5usbYyR/QDUjaj1i8m/OtXCY2toAKIiUXt63BxD7ASyidWd\n/luNv6VAmdM7W2oCvkbnHmqFgbNneo53LzHmSgz35mgwE9h0vk0SB602Y/7K\ncaXbfL3zduPvWcWdhMIVOS2GIsMv5dBaAvq56Vm1dNY6METsPXHMSR6eyDws\njB+G3MI2krl5/TwcgJTC6OWGKJWtGCWVRJYB7Ha4iruMg69TL7xq6Em6QpfJ\nOEdj6dzcY8AQQcqcDxyRPz7Gpxtl5h+K9OsLUVxb3+ybokKVJXuBSwuZrWI7\nGMXGig6UwPLEUyzNYtpC5+GqvcxwwODs1VRG8YcEpl0I+5GY46aekkRT0aQn\niHo5\r\n=KdFU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoC7wUXm+EKdem1TEQjzANHDNyik62uuy8g5cpRC3KkQIhAMj0FyuSV1Xirg8jtdYWqWONEON+hTFlq3HborANvtU+"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605232431-5422a9ba.0_1605232571279_0.29466254449815343"},"_hasShrinkwrap":false},"2.29.1-next-1605233226-21cc1f35.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605233226-21cc1f35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605233226-21cc1f35.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605233226-21cc1f35.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Orepg8KpD6TNvliOOs9oLI8lGpVdTI5+DFTT0euw0YY7UeniiAeDDtYTHn/rvXIotyXmOOksY/WCU9i+TpmbPA==","shasum":"90d7b254f86781dc7d61e6e16d85f15785b55ff8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605233226-21cc1f35.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrerbCRA9TVsSAnZWagAAtSMP/15UQH9Xb6BseXVkPm5Y\n5ptb9tRh2H8Liz1a0/gvi13X2t0XImJugjYB9KcMS1g41XD32CKz4tR1om1z\n4FbWKOnMuZpWoJ8/kgNRxBbJOD0QdjuAZMZOz5GtXpbqzs5q5mBKcumQ5o5W\npF+ItEV9mLU0b8LIi3+M+q8xDciy63vETV1S6DegWc18Z/yIzaClbPH2rAOg\nQ4pLvk0fO7nyfc/Q6WK39PgaTTP4wSyLcEBK0IdUJGH1X1pP6dLcI0QkohD2\n/q/n8J0qsJ4xktTv2gDD9G9pAWMX/2Htw4XlAkbLm/4ObfRm3ovhWrq6DMoz\nzX3M488OZ9Bye/f+RtABSTZbKll8okwNls8+nMhqicpfqhsC68d332SQHZSG\nnDM39nYM+4IpNgUTe+HwlQO4HDXM9kY1n5SWnms6i4ap5K6ZQn+gP6Y+GDJm\nw4hgMMvUb0cCEAYzBLl4uM+cxaV+cxf3cNE9mGfA//b8Pg4OXVuik/poZvcg\nH7J1aOYsd5T7Qn5EZ1TqvEKUf70mLH9NAND349ru+1deKAsafqXIBNtuXkY/\nXmf8dqUzh2yK+4AwIinUijaHKatTvZThPKYNRGGbJfVB0BqKa3/e3DpoxYvz\nLM49sQneLvEhcb06G3WUeo3olT3bbA7fcyXpvdhWHbkPzBvLTqWIJsHPAHDF\ng0M9\r\n=mSBh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHZb+dCx95Z7IvjVIacKS83ngU3oYtBUSELZz1xMtanbAiEA56QXXZsugYkGij0VFPn5iWjbtbOMOsg7pYXSdLKrnGU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605233226-21cc1f35.0_1605233371192_0.6260934722625338"},"_hasShrinkwrap":false},"2.29.1-next-1605267316-97bdd9ec.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605267316-97bdd9ec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605267316-97bdd9ec.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605267316-97bdd9ec.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rM8fPxqF/udpQdg39GKe6Txxibf2tvMfLfu2Ofsr9cnhBePUOz+CHbsX2T0UvEDvXl7ylUaHp9T4hV2PSIfkHw==","shasum":"14f1bf9355a033a757603f0348ea8031a1a4988a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605267316-97bdd9ec.0.tgz","fileCount":58,"unpackedSize":141254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrm//CRA9TVsSAnZWagAAyWoP/iXfSAgmFvtmbe/0NHX1\noT21qIQvbZCwjztqu3KVjPZKbc7fhH1TYY7Cf+zW5nz8CNRCdEWPVBshhzxm\nmfbbgFCo5C5kkCsp7SvqY9nd9RM5V3bhAPPocv+cakYGlXW0ZWJQS8VZvom+\nSNJe9C2Xu80mm2tJTLX5lN3PQxFr0zYyNUSne411Yqe3tA5milEVw+HcvXv0\n0s9wIZTv8E2XreZ3c9bzEOnLGIL03QdFmlHm4MeBYcg5KkmW5kCMlPbeaKQz\n6wU+21cAmlEpLxsqF29qqoyD7MFcugMyYQolESrI4u6pextsg7UbYM8bDDaY\nPyNZfuGohCWEM/b94cSHkEQHEp/SeO/gDHCbHMZ7TQLKnqdrX3OhNoqpL6uu\nzjDL33NKp/xNj8W4AWZng30tpdgkV3hB7bWP+tQOWM80ghOgOeyM7vExKLWY\nUd9HmXKD979Tw8BhrYZzEPVJxlhVri6BGbOl84nHC2s1Cn6XL/c1eTWnSFqO\nhIYsWcSLF18y1hfrUDzF04mQx3d4ot7B/H29XdgYmZ8LlfBu/hpHsW6FBqVI\nvPdAKwlVkHQ1G5FOJ3OiUgZqyLzKfJyJgXZ6H8Y8LLbg8Q3asKiGA9uCJ4CF\nPhul0vR/jF5hBF6XQ3VOu+Jnkchkf5ck0K/mjl9NxIB49xlmXpFPeQrO9x9R\nON4W\r\n=tSpR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAnxWmmRFmTupLbwtQgNHaco6wYwNui1TA+UAcXRC/yVAiBn6H6BJ2JBTOpv5sxJGO5YMTMn1ybV4N8O7AdO7BFL8g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605267316-97bdd9ec.0_1605267455162_0.3147750041024422"},"_hasShrinkwrap":false},"2.29.1-next-1605267337-97bdd9ec.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605267337-97bdd9ec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605267337-97bdd9ec.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605267337-97bdd9ec.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PxTeZY6vjnViIrpFNHxs+udh6voVPlM4bL6BbiFU5mOZdAAe7IebShOv8mLlkOxYKYF/HU9l932P7kObUgzDUg==","shasum":"1c57c93b99458938703b83484a886b3ab0ff52c6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605267337-97bdd9ec.0.tgz","fileCount":58,"unpackedSize":141254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrnATCRA9TVsSAnZWagAAygkQAIlUV10thzxWsLJ9KklN\nES/KosvkU3NMDhdSQjwHSkH4OpWshBVvzDULyQK5tKNjuwiut6u7Uz2I8cL+\nTSq1v28JD0RQ2WF7FHM0Q538wMVxpJRFPZ/sKPns1KRrHhidHTeOPm7r63n0\nJBsSWJeKiEYWax0vZA6GzkOvu8HkESJHO76h9cXryQSTVV/dfga5tip3UlJ7\nSzIJ6DdAARNkfuWRK2s9X3M/0/YKk5Q+y3/gRHLOR+ZqbUcWAYCQE8B/DSd4\nDu9eLGxAPHbjWx0lKYc32Edfw6H+CUslrUcMmAyVlgDtJF/GABviKO7WbCrq\nFv+xaIniwKJPo0bXfb+uILJIWfgVH6DM3T86/ZVzpQsQ1r4EcSrYRMah/Byl\ndMttfhUactJwLcLZdQ+f9YUhIXxdsvRlRnepPeYkNchhAXB8j1F83D6D+kON\n8YrKjQXatqyizKS+KXHTUUnqVe8OjmgdIRR/6qXqFXi8fgOQ9zLU424NliiJ\nJ8i/DduWZ/ZOt9rEeXp23+KuMfFvucZwaMkDpbZLG6g3C6QWuxuP/0rbNcts\nOAZsoA+piqtjKZju+gXYbD+Ip/LghsGcpqDF552gXF9UFLzeWzImUvooT/eJ\nmSMFlBsPJPa7HsHfYIXKIRq+aqXvd+urPYknyrPDEt1CuG90YfbSrCqs9TbJ\nLVBQ\r\n=dpj3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGktm3PoM+7TWloZZn42fCDH7JpymSZn1YCyMIZdOzcAAiEAnPpsY0ZP+seCwrn1KALNO5+FoNizwchgsI63SfT6VCo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605267337-97bdd9ec.0_1605267475105_0.389100459192953"},"_hasShrinkwrap":false},"2.29.1-next-1605270854-04ff8082.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605270854-04ff8082.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605270854-04ff8082.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605270854-04ff8082.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fdsAx9Y9u0bNidr7okxrKCsNflebZsmjkHT/rYdocyIs00jKm+FbaKaxGEAgyKK9D9pmruBipz2/xHiv3us0Mg==","shasum":"3baa7d7d5df2e76bba580d8713303b7d1ac60595","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605270854-04ff8082.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrn3cCRA9TVsSAnZWagAAgWQP/ApuE2gLMcUi+JIt0xSU\nuP9H+DZs+jjG1xyHApoFfMREn59aE6FjayDdQFS9Hu2i8RVXx4WueniTbnue\nww6nME2OrlW1CjaJRQtXeel0D5Jt5zu7WZa0XcX5w5RB9V81vq+1kIXZsgaJ\nu9G843843n+0T9AohcWDh9gQNm3OjLsyI40iZ3gkCSh/6neqLARd0yR1mANJ\nyUBZTgO57zjCX0hkaO716zc8ltZ220AajEY84SwgB+QnEP6mS1IVE9R2pJKc\nrZgIxUs1ZFK/w8SGcJHEXSbOpOTlXyDwkPQerBpfCe8e/PnIIDQlN2OGkohh\nmP2Y+0hilft+FSg0HSrCUdrrWb2Xf0Q+Q4YQU8SUaXV4kxYX+IzkTfNBKBsi\nTtnSl229+k0VIvenN7+O2DwgxX5EWS7iCRMHznJKXefH9cqMaGYsXhKXwsJk\nh9HR46fm6EH1Affe5vv7ZMJO0ATqJXzPZVzBvID2asA4M3vIkFN0/0JIOUuF\n6ue7U9pLRoS7GLwkQzWNllwEufhB0jBOINEtmW15lUdv8HvXxrfrKjux0E2f\njkcvfmt8P4pUdyXZ+OlrAJ+mWOuSWDdzeShM+M1t1K0/VSsr5qKCeHhWF7HQ\nFtGXosyGQLBuBZShEij0hMtM+GKZ/TueI7ge+bHwLy0Z3hZUFMnV24MCB+WW\nDE7x\r\n=6dKA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOzTR2hc5m7lPiIe7dN97u7/v2XaUTw5cO9IA1X+p8dAIgKda61gEx/90EyxFpT0lPWezKi+TxdCUVK8UndCzdkUU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605270854-04ff8082.0_1605271003670_0.9476821958409787"},"_hasShrinkwrap":false},"2.29.1-next-1605271306-f8207329.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605271306-f8207329.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605271306-f8207329.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605271306-f8207329.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FYjbjmnCzpPOCjPvyyIJTroGTQhsCBOCs5ADmRO+MaBtx0wvos8eSZHaIdjd51r7De0Q/RRi5fHQkgJwWf9J9w==","shasum":"24bdd880781697aefe8fc8c6e53a87ffe09b9696","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605271306-f8207329.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrn+JCRA9TVsSAnZWagAA3YUP/3gb6KZ8frwoDFjbt08N\nDPhfrKl681cPGb2/+He8UDE+UqTlAKreDO7oPM6EMzpFRMVkG93lraqcNmIa\nNciHn4u5kDeHxRJusy+ZqAWzGNWL2uUYzBfCaxArwsiwkqT/XvLmIwSaw7Vz\nI3YqHmblycNbuiE1WdJXalTsLkL1N06QEBdMXdmttrST5HpAs47Oe+9U2HQQ\nizcCHXuMFKkYjmL5Roj7cprOVWHtkGxxEiSXQ7Dxf0uZjzapo0zHLHgGjc27\nIHOPNLMBdCV5YHZkwV5TgkF51LckwOSeFPH0N4XDBezwOeH7dI02PmXr7Rvg\n6P3ykJr83QW/C42gMjVcFTuSvyLG0P6hU1ex2tpETM91nhS81rk7pfKWZ4Q1\nig2oeASlLWWaljOvst84luilURNHyZumEhyWWC8ctXPKO4liMKEmtklYb0BW\nWTugPpawSm1bCZz3EMME4COUL1sw9+WPq80JM8vOjjwo0RNCWVf/YCU9bG+k\njCc3MecCEuKRDQsoy4cU5wLzCRt95g0xmPuRGk3ub4taKRKJKrqQSwmCTCc0\ndiPqDDlAyL5daplVNVkztdcGteGeZCZy5u5fKAanQPOCNiCGgsMihgzqvJr7\nqADthLlUh1iYXPlWE+HMvPu7qYNKedQH1dN2pw/cnaT9FT2hAO9UphSVEPlC\n2LCz\r\n=+p2G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaS5ZjEuFwx02HPHK/gAAU9MWZG6WG4w6KXd9SJiCDBAIgX1lSIotj8BXmCIAxaGgXJmtAgIsxGkb4SH9yKEpvA+c="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605271306-f8207329.0_1605271432554_0.7547300950578011"},"_hasShrinkwrap":false},"2.29.1-next-1605271871-51a83a20.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605271871-51a83a20.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605271871-51a83a20.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605271871-51a83a20.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qh1Tn4eRZAAD2KMePk+KItTqd0Hlraq6LGdzHm0+ss02BIX6nqyeDjMhRk8ec/aH1l0+ik2Gr9NFq1e1JEVvGA==","shasum":"66a39e3886b67d947a921a9e9ffb5106594445fc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605271871-51a83a20.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfroHKCRA9TVsSAnZWagAAYFkQAI+jdQHSzEaO78fFIVzM\nEuWotV6hzzYl6pEo9NfKwfXubUbw0xfFc+mXrk0R5eCPcZ0+whEMRTOR2WT+\nNzCzSOGTXmI/3E+Wkz+ueLA1+15dSAvGgWl1Ie4DBEYveWDJngz/xH/yP1/I\n4IVkltPKhfEpLd3AcxvhvLptDwPQXbq6eg41XDpEtYRKeSdtSQxmy19vzOyz\nSN5He26TCrp6SqYldRK5jVHI29oZhR5dkZFD0arFgUGtq0h65QZvAhYyla02\nzQms7nmUBwBB5blyOdY23tGcRsbwpxKNuhtE8m32JtgdXj9qTlMxe+wtnRlP\n66Ip6Sr8rm+OdRUThk6XEi1/uES74trldeI01UphoDDi1OoBphE1sJrPJRS5\nhKtfGn35cOauxH+1Tv7KhUsa/xjcxxJUT+g/MZUNkqHEL9ZwdcIBjxPtMb4j\nLXCS4Y9bygElXsB6MsuU9SJgafLc2cjaY+2f1kb7I67yQGtv6TGv2Jg1dT4k\nlyhBYHe49YA18nO45SAOOYOF1jYUIWmRHK3/pRrqrkbQPONCpG+qlwhVjhkX\nsuNQzeX0jLmc1nqmO0ZyybSc6MU/quO3rAmJ5Tf1hwbrE/6L9AaGYr2jTCNs\nvckhy11BE5Qgt7H1cU9VwRtgy/AhACJ3BeYNlM52NC1MFbt09ZBxAOqCuujY\nq4CO\r\n=h1mP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBX3jquqFbEBNY6e6hsLM3CWxeX5ai8eZ3GyxPTzu/W2AiBBmGgz8wF4RVUx7+t6sqEbUz1XBWX+XvZFTv6r7BSYIQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605271871-51a83a20.0_1605272009537_0.11285310414399241"},"_hasShrinkwrap":false},"2.29.1-next-1605271896-d38f9eff.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605271896-d38f9eff.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605271896-d38f9eff.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605271896-d38f9eff.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NgUNJPFoMOoL9ngWYfH60zVpRVEuji5/OJBAY2L1JC6wZ/ZHCq6nCBI7tih7FSpzOhz0qZyREsijsYaRWwEUtQ==","shasum":"95df9df1558d5ad64d1810994cdfff313f702e54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605271896-d38f9eff.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfroHsCRA9TVsSAnZWagAAqq8P/jVrs0LgOb8H7OmbVixh\nxubxrRL4ZjGJqE4bsCmKO9QGUPDZD8BrSRcBR0DhhGprVsd5sYruAFMYZ5P2\nzjEK6hCGE4pXeza7b19hajKjg+uheiW8wJDDhgSGxI5COIMgLp1w6p2PuZJW\nF5AJW6Oq34O/hN4miL7EDPKpwL3d7Eo31CtIe9iFQcLtJenO4rt2gD5GwTRL\nEjyZmPJDNfTk9oc9o7lCtYmnsxlZJb/qAtW5XZohIGX2tEzh7qtdQfZMxY19\nadUkxCAFPQBs+QwZgU1AeOAlS+1fn3M5pDQxwSsav4IGPR2wQ70+6B4EbVPU\nRIVX5FBRAOtQxJ9Ddd6hQYwKTYATPRcPUkle9+UbzSS5jq9zxRTFfaG4E7vV\nu+XyGnNm1DES0U6vNwDEB7s8L58/nMv7i8HuN1GbUCpfwJaSBAaSZFVl2p7/\nkqxIWuygwmQa+x8QhJxGahSE8rOit56ZJfTNsT37Bwh32DeCa4pWdDmfdolU\n1awMgNJ/CqAjccAsZ2deAgNlsNYtd8uyBnGrJsmrNAHjnJnKF4IsveaBFMta\nM4Gq7ArSUKj2L/O9l80gMxpiVGjeH/pJNIDu5cgLiW8+pgtEq+k/7WvdPrid\niK5R+2+0kVNm8RfFdqBHDuem6U2S0d+ibke84rRzsVYnSiSpXj6tcyV2sJim\nFsP8\r\n=Re4e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd0kpuVg81LbzcNx/8CldrRC+LRclDceGsg2VQLGGiKwIgDlY4vvXrx4gliRN2HP9e/t1BMw/DGaGTvAe1AXgd6nw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605271896-d38f9eff.0_1605272043765_0.4189288564005811"},"_hasShrinkwrap":false},"2.29.1-next-1605277241-6b12751f.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605277241-6b12751f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605277241-6b12751f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605277241-6b12751f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HP4tP5y840nflRgwX3RiQa5WukYHS6DSf+CkW2MH8BmpxLuxWiE//Ssx3Vj/PN8HXtYeS/sZa4AuInXt6AeU2A==","shasum":"f0243ffe662d08ee408c3e96b2fffb08544417dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605277241-6b12751f.0.tgz","fileCount":58,"unpackedSize":140415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrpbLCRA9TVsSAnZWagAAKGEP/1yGunsgNicUUPKeJPNu\nvSaZWd00k+53CmMVwq6shIHMwXSHLVCQ/+zHy3ozlD6/5yAX2tfZ3W4IGHj/\n2FhJisQJt7bWDF4amn0C9zuvZGQXSWgyzLdC07OaY8qeUDA5VXqFgtTEckRJ\nLXEOomVDdB35t/Vt3TrTCO+TL/IEDwdRYaBSywAz2Dk9Kzt5RzQ9kLFRvhTP\nEE1+Lb1mU9PSG/Dmfp+yNEj3WYifyOD015SHVV0o4M211VDM8lL0pWG4RHOp\noqg/yZFxswgf+bLGOqK9G/627T9L/gA311pEG+fbKx5ZBs0kGZsL/sRqqWpj\nqc0R7PY+bA93PFmwPNN7QZ5e//bSwyV6kJFkrfxX2edQyf0FoWOPbIFGiQaE\nLv8ZirxKY1ZXzW8aVkOwZrbo0rn69Uk169mnlLECbDnyf1eAru/tZuo+8Ny2\nGA0ecvEswUbnUASekhHp0mBHWocwL/LX1tXdDQLBQ2gYS+78aiYlkS13XiIP\n1Mts66qCW8mluteJtNzFrrXujWNdXNzBerrOL/DFNjRKLTdwAaCklHqqbpcp\nJJhb8PNqAfNs/MMwjfTRzgGUj3wsYM2Xa9x2xNwsL3n31kti3GpQUEX/yo4w\nOuzlMJh7Sr4kg2nlV2YgpXyE3Cg0r8iYoSoY2OZgef8Tx6ho+1fYAv5ojTA0\nb0av\r\n=rQGD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxC3tVmK/w6n+K/1IUrPzSeiuoEKLkDYe6REvnDW2DGQIgXr85hZAGkq1wizmDpRuB1j389fYMqmVmnTpNDHdweEk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605277241-6b12751f.0_1605277387502_0.2761337292745556"},"_hasShrinkwrap":false},"2.29.1-next-1605277396-19922c4d.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605277396-19922c4d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605277396-19922c4d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605277396-19922c4d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-U4C1H6T9PdtfuBvlXR6/6eC3HATRU1wBT4Q4cbj9dgtpXQL8ahRI+hPj7kzI84b3vyWMcqZTC2lVSs41ds5CLA==","shasum":"00f436c914764d31c3718dbccc026b92199c46c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605277396-19922c4d.0.tgz","fileCount":58,"unpackedSize":140415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrpeGCRA9TVsSAnZWagAAZE4P/Ardeu6CFhUNBKSsUtVg\nxmCuWXpWAxUG/Ssh3aJ2KeWPySYiqtKvGvUV2KSL1REm/G65TX4TaWVcycIB\nIulXr441S6y5Z3buedZZVFloAJg/w/gpkkZRHzlD3/xwYogDWs4Pkd5clrYG\nyQvegWq9OXN4rR3TO0Jzp0BMsv4nHs/4EzoyBBqLuA26coojdvga5uqnv6XE\nvSk0LyOcz8Oy20rtSmjIOzy+0onoQ+aoWS4+BboqQwUbrLuU3xznp61B66IO\nWwz/dKmdOxZnhaMbNVlG4SSS3E712ECTXUGS6MUAY9WBSHMkpg0mC5+pLbYm\n7uqU4ODabuxnN93atvBYw4YSXX7s980EP0spzqyLd/YXOKLhG1vlXLN7dLif\nNsh9kFdNApKruzhF0c0nJ2+wiSZqn9AXemrKus2vDDGkgTyzajiuduk2Qh0M\nrVAZ0Q47VrxBfEfdGB36wTx6+sTHgQ6vJnHrWgPUwzB4FcHmsLekfdwFuKtm\njIqfsVw4iP/vz2SvNJ8OGzqfQmS6pyR9jwbY8OD4VV/LD4f9JP0Echi03ns6\nkjfdXq4q2Il1Oox12CHSNQycqQ4D1hpYMtwcZEVb9IQ74C/pil/TRuQJRBtd\nQotgOwhFfyEfV2L+pYFo3D5DLl1xBPHWT1yxwh+iuNLtgYxLDmPYhI+lL5Sy\nKM/d\r\n=zbJz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDwJEQ/pQKIsF6spHp0nh2eyxLV07/xi8BcDroqy9ijxAiEA28xAnwOqw87elBfMFs9gpkYNgvSGuoRoynyb6rv+kU8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605277396-19922c4d.0_1605277571409_0.9200029063261919"},"_hasShrinkwrap":false},"2.29.1-next-1605277718-8e877540.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605277718-8e877540.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605277718-8e877540.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605277718-8e877540.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GJAC7sfGFebm0v3vFxchwYBX47xLoQWqNh7DnazVljSV066HRjQHC4LfMXUZyrk8z3JgB2aJCYizCXqYoqhFog==","shasum":"3963cda02cbcf0ba78250023731585beb9cde93e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605277718-8e877540.0.tgz","fileCount":58,"unpackedSize":140415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrpipCRA9TVsSAnZWagAAKHUQAJ/tSXFmnz4c2+6tgnvR\ng+Ye/OaMIIvz/Hh5Lfat4FhSVdgo4EPtd9FUuru5F0/8raYPOZQFpRYKneNn\nswCU+hlauIJshU8H4rp4i6klI48pEKrs+tnRbMx7zZeMuQyFk3wW1jPEzgjs\n9mVfEdrnK6mOsN6+ygNQD99wUR+0v/R5HkGvcP9cd/ETT6Aq2rOt2GNrENoF\nsBm16/yL4h15a32fIoFryAmc8MoZ2YHX4ALlBQyW1s25YdZV9f7GPAKMpytX\n6PzD8M5qSNfRgH1EH1LvH+yYXsx0roM1GiNvoX9qifeV+V68vUaSX9nk6iuw\nMD9sF8UhN/B85mIp39Ql/4649FoXzAqym6bRwAQEXoYWc7KSDY6SQEKvJjTv\nrOaJUnZcLIImyKEer7N2Y01109fKz9PpCJ00ZmndUqhZn/7Hi8FX8GqkaS2+\nZzv+x8N6O5XtRw91TTltCamQuhl0rqjKdo71DuwjsUs1BggQM0KsPRhLMBlK\nGXd0aHWhqjJfYYXc9LCWA8KqAHzNtQ6eeJI7OgDoBKSVG940O4cppJZR1uZ7\n/KxcEM3Nh8OLrJISERKUT3SHdEzCtKW+Bp5LXO7wP1+Oa+3bWnrV3Z7kGQG2\n72EJgoENqjT2erPDLs9t/VKRk9bJpkSX7HLeh7j9ODaRJHjEqnocMAH+2SvE\nQhO6\r\n=WQmE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFol4rB9TX0mGTfgNAGr+nhG/1hMZsx+cdvQTKSRXujuAiEAoRSQia+8MZ/MdVAQLO/8tlO+SN/xgmiePloqsKyUGbk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605277718-8e877540.0_1605277865098_0.2355902551582023"},"_hasShrinkwrap":false},"2.29.1-next-1605279440-c2386709.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605279440-c2386709.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605279440-c2386709.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605279440-c2386709.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gSq3fYH4rgd3/fQdanZuivEOcgn3yvqaapiXFGyBNCzX3xVVXQGK0Dw0vtoVE/L2IdqFD3LMtCaIMq2j+1LjsQ==","shasum":"20eb701c6d35fac6f3b56b10d9cdb517c33161dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605279440-c2386709.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrp9iCRA9TVsSAnZWagAAoOYP/0Rp/2Gyw/5xjKwQ43PS\n8C7WI5ZI7Cm5BPtEwih4zeWF+R1KRxCuTH95VcqO4VUgS6TmuJQJbbNINM2j\n5s8bhn/lW6g5td4a/m2/KkO0bRwRu9sxMXiIAz6FVv0zwzEOQ4wAF9FOB64g\nTp9LLEvw/5zoygL4G9AFRZzzwtaTO4BY+w/Y3A6dRDn4BnhtxU2KMueK/GgW\nCI6zirpMZ2MNgqbN0ae02lPYL4Mh2gHBFC3Q9t5rh+XNZAX8ivx17AK2BtKm\nQRib2RqqK6trH7CW8e9Jo9gTI49HwJ7I5jC4pXu0GlKBtXQ01dx8nI1kHUKV\nIqPRHKeb9V7R0sJ0FX3WgQd/DUe1i66IWmIo0IRSl+iEebDWbueXiLhQW2uD\nrIzMbh+vJEvUG2r9lkVWE7Dxi11PGvKGRxgehE2DSOX1DwxuyLCjM975ky/w\nfv4md+QqAxUCa2XSwU4O+ls2vp0cthXo/M2qWb/kFOFDbNfc/moouni8HVCP\nAWgPiVAWAN7jIWgxxJd/ux7chvu/QPZYA2xkZF0jzNwV7JDB+KLWcb00TqOs\nZdU9kZR4ckCbA5qy6SvpmiYVtHMATlccrlRnc9/dD2AnEoq9Y3Uplv4h9YgH\njy1ULwimBjP9w4A7vjp+4QXxRtijP5+YMNEu39lFcLmmJOQ2KVfnY/llMGh0\n3Lsw\r\n=66UK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCasQCEt61NgyZDr8tWTFxg7Ob8335nFKFxZ9uJVWq7wIhANsDubyCEDOfuMQ8V1pYE14ygstS4O1oG1xrJU1qewdq"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605279440-c2386709.0_1605279585512_0.031232344988737948"},"_hasShrinkwrap":false},"2.29.1-next-1605284689-cba07659.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605284689-cba07659.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605284689-cba07659.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605284689-cba07659.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-I9QllO3NRdNnvXXUOd9gNjahBgQ5sfaKvQtwtYLiX+Yhk6PlSza29dt3NkJkN6ac910rcQZpXxJVyY71uKCpYQ==","shasum":"4eb38b53edae301348f004f6729670e8fa86ffab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605284689-cba07659.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrrPhCRA9TVsSAnZWagAAyr0P/27GcvAewYYpgAf5Tiqn\nLL/yxcrPTig1LOUTO8eBGZ7OJ4DW2r/XAAfF0PRGvBXI6p4W3nGF2qyjKU6u\nmv1ETJQZpK8A4OMqGTZTF778Xv8JXtJdImzoM/R1HC7PqQ79bq+AQmy9uil9\npXqjmq/L/8E/UJ/7YVzgEVpQCNG6NVgc9tP/KiqJsupHRtnNVoiT4RWBi0ps\nsgHvkse+MIsOzxZ11yWJo322XG60riYWjou0MAirsmJa586YezCW7sXjxgiN\nVIwfWUZeaHd6+troKCKepqFBsEytHTYuoxqmvDtQrowkCgvNjeDxhIkldLoz\n+o7bupqwhs974CusL7DrXiRxuvEINlrnYU8/Iyb5C8++RXEfC1b4+T7KUaEY\nYzC9Kxlfq0edfIvfrIknejVr0HAzaz+/dRaqGOHb0uQcgllkFFbH2gCgiNQj\nQ0tC9J5B58kSuihmuk7i3Hk8yYSoia7snHR7XKUzIsC7KVV9Dyu6QaLw8+Fl\n5GH5G1VkBYItx3Wa0epy67yEbc9e2ojTGCV31f+nJNviaIStGUpvSP8CWKaD\nrSM/lX5iX0FYRUWq9W0CJ/R2f2IJn96yThYJR39NmwsTDeU4ZUiuHFKkNPdU\nSSJOi+wD1JhOsvRyMMBdJ+r70hBIxX0/mEAxBJJG392iQsPo82uIsu9hnRa8\nZHGy\r\n=ATgd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDJc7uJ9w4Fm7rO2vvhxWOcRbispcRRjQhOwsRjtWtkQIhAMjYeUCE/LF4yR+zexpm6sQ45pWeUGx7D/ECcL3hpacf"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605284689-cba07659.0_1605284832818_0.13681501474138247"},"_hasShrinkwrap":false},"2.29.1-next-1605289435-6edce4c9.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605289435-6edce4c9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605289435-6edce4c9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605289435-6edce4c9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5QaLj6bYBdSbf1Dl4fEVjBLIPl/rilvOLapVJN5UH5VSIr1cCI/nR2jFPPvyvg3KbL+IJEwdGSMD/M0/urpbew==","shasum":"46e69bdb391112817c3925735b0ce49519f77a87","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605289435-6edce4c9.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrsZxCRA9TVsSAnZWagAAtIwP/ikFEZCpvLtVHNR1gGXM\n+4Q9hkUC4SNUZbBISJtvX3AbM0ViKeGVkJodpDAK1NpUyFnpbzBEhPRnmNkw\ncpFFC/rxYiaG5nfaMR83DKvdUWa+PTyRdwFTp9fU8HkkrSJWvfC1TIZERcz8\nAth1T9itMoOuR7cfDwHUT0ob8kJs52sEzTG2z/KvaAtfjj1xNV6T0Y1/bLlV\nx2GzkVhwCHrICY/CNg7TVWGxHIzguKCCVeXgjMnF8rc4WTZGZZRlh9WN6c//\nXpA9UTyjzVrUB72QvNMr0aAOi5r+UOEP1EeF15+xJzJTWZ1U8stU088HhOhD\nxjGQ55S4GJ84Hx9OLAg0h7Fcz+tUKj0SkvnMbjvv1+7o/T3A1Bt0tZXS6mcr\n3gNxzwjfNktKxJnr9LdEJ+TZAD2ncjoyinEpzp/9RgqB+RjgAZCFw4MzoU7C\nhHwVTxY64+n48/wNTkfRG0S3gVppOcMCezlPn9YPFjur6wTKx+UIbemYG7HL\nAmb8L2yRLSmVaLUN9jgM9NZjUalERmgY52Yf45mT2whhWSNXkjmFN1ZrcS9c\n7Isc6DuHWz+O74A/6f1OIIN5NPKKtqIVQxDfuY+wB449XNkzRKO04bqmG8eJ\nYe/+HayolYnxsAsCIAs5o6Sw+KEBdwzvVTeBvRegQKrHorlhuMU3g0WzP6HR\nNKWu\r\n=EKfT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAzJ17vkJuc9XGhIjul0/c2AXmB3o3Py0Q89KGJd3Mq/AiBGtFT+O183EdSXjTjNpY5GRJE11ttdFlSdWTjDI8v+Ew=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605289435-6edce4c9.0_1605289584669_0.0851865869804771"},"_hasShrinkwrap":false},"2.29.1-next-1605292246-763c6626.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605292246-763c6626.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605292246-763c6626.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605292246-763c6626.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZhRMoDtazMgUIoZAELnfopDvnU1NYDdLM2UVbOXk/UJ/Du8O1e6NLmelNGVZKKWPP/xJoRDTZd62k08JMtUxlw==","shasum":"7a2f546162e6b2ea09d29177ea114495e0152060","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605292246-763c6626.0.tgz","fileCount":58,"unpackedSize":135008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrtF2CRA9TVsSAnZWagAA9AgP/3HjLSd5n9i8aESgj9eW\nlncmGfj9QdsK19v0PcT7Xe3oWbY/pvZBBOyk1o3laMsvf3/3ZVqhYTVRkanR\nsPanfrb8rMYSh2InMAd/cjOhE4m0/CSoHku/bPPHwVrrihNTISLi75q7Py4x\neJVbvCdCbv2l9w8xvxuXD5s1vzHA+sU3qANztC4yUF6FMx4no/30Df4phH7d\nkIB44ZCz25I+Po2pFoLx3VaFVjkHTQYDZlYnBm+MFmh8fGKmPXy62YUsqpJV\nCXwhxryaE6RQPqpFT52UvCMiLNCtTUb/0HDPG99L77anQT6ODtMDrwOMoDOs\n85k51BPu8VweHUkUl3ta9PGW4V/bGiU1C+73z1mFFY3BrjWkk2mEL6baq1sT\ncOfZNHhVJ2K2PpSyXrtmy7qUtLSIqzwSAG23bwmXGds6FOzjYynHqF9mFaH7\nejkncOzrNmWm1v28pNyUn4kld0rai+x8M8W6b9XBwRDaUvGdO8KLO84H/2om\nCcb+bbP+zP0Q0x+vVXHsQ+7agW3ouckcmgVOMHMZk5EgNovDoV/NiGQCvblf\nyXtHDW8CYwQr0V9jsL7uiESwGVI9lN+nhwdj7MUskIand41AQ7YHZ2riViVu\n8CZjA92t9bFWgC4eF0q6Bi2jirfbOFSnVOYJlM754OQAEcsJ+vRPjy5Db2jx\nZrC1\r\n=e7R/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFVdY6p9BWSI4jdRDTq26ShzZo+J9DtLTFHISEVMhQw4AiEA5N59kLqlYy6TxJMoi5bGg/rd/V5TAlEHd0rgRPvpZ1s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605292246-763c6626.0_1605292405826_0.6796048301260404"},"_hasShrinkwrap":false},"2.29.1-next-1605297932-01d5bdb0.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605297932-01d5bdb0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605297932-01d5bdb0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605297932-01d5bdb0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JHKC9+OuLUtBL5xPoPPw/niRUlU42unUNST5qZFYkjEJbXC4mcyn7UeKimC4W5RWkell5AbeMm1FsFG5kcCVUQ==","shasum":"d7890ac7e4846a1961b34e990f2b1c8c57ffc421","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605297932-01d5bdb0.0.tgz","fileCount":58,"unpackedSize":135008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrue8CRA9TVsSAnZWagAAGVAP/2xF5nh5JxM4z08Ll88L\nJ7DplXdvzZsw53mRhiWjnJX1VaaH8b2ppwlm85923ozj3pBINR6rtsjJhGa7\n0Yf6Oy2AUbidCbnPbeNy/dlqHj1JzIQawX32+y/mJmJ8lcp22AuzOA12Qc+0\ng5orYFVZCjrkPt/I0rtBtxLcUttjpH2oUgaiQFb0YLc2c1fG684R+7f6DdQP\n6yUNUtgb0fY6kStFNqvJVRAvytffhS4EdEtAdxzPAuQuT3m7SxH71AQaF+aV\nXTDXRY5LDbEs1OAcSd5Y1f4OsdBi6HexIqbd7Boh4sikzL3YUfeSZqklY0JY\nEakHG5b+C7FFCuKYX3uBJx7M6M1loUJEKM2ae38ECcD8txU8G8cc7tAuseNW\nngA2mTPaUArJ9bzkKJXvdsV1Ydi1NAO1gQKqNVsGUT1jAMqExoRO4FclbZ51\n2FUoMWYx1dRjYqTQiW8rGu/lkbLC0lyaFggIaMtTaL86hMnpuF1bN0s5sYPz\n8G6u6DrMWWYZiHsZD6xWqslVQiWARbFmggxfsmg/IioKiebmN5jevNr2OVB0\nXz7cCr6TzkkV78OZjaoKUhnMkBKlQIusz8lGfuUF7HB7lIHLPeApPJzqUIMP\nwsC96ArGBVeqt6Sz4Z8WSnQHIOskoG17BZPiXOLtBDnWdWMi3r2/JaPzISIU\nUC7H\r\n=7Bpt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDq/jLh76kWtFm27Uc+QufwM9LSGt7sovnVaGg6fcaClAIhAMyJ4gmU4r1YBoarKwlhYenqXwVHuS3htzYrmHf8mtRk"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605297932-01d5bdb0.0_1605298107508_0.29676031288254023"},"_hasShrinkwrap":false},"2.29.1-next-1605394195-ae77ae1b.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605394195-ae77ae1b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605394195-ae77ae1b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605394195-ae77ae1b.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ekh/tlFIuNVkDRuVb+Ypb8dkUTWXg77Fz6SMKJbyMjvU7g3/gNrbUDsvZNkAa8kiZY7CRDGZgriYsxOT6+MmUw==","shasum":"fbd754186bf4d5347a9125a770c89d750abb243a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605394195-ae77ae1b.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsF+gCRA9TVsSAnZWagAAIGgP+gO84/orJiYvsylzUTAs\nVkz+bT7vyAdXgC5huNRWw183Nd9CSrKvfPZRUiyrjedp9tLkgmLpl0Pjk00j\nxaAjJr8Va2+I0K8eZO7/s6d4SS4/2hM78OzvkcoBSATeRmDhhy2eQkOx789C\nN16RN1vCGq90F03se/zGsCOrYfINzpzCMuamG39WWzKqGu3Ek6xFqQr/Uj3K\nSjiSnV4yv+pKsNS50kVu06PLU2C79E837i9QLfdht5gP1vuJBAjnYocJR32a\nMehIiVPvsCUSZpEfxHfFGHSj7AcY/At1xN9ug7JBJCsQ1PlRze4H1rS5/p6g\nFCF4gLTx2nZf2fVTMV98gaejGFKYcBePPSNAKSvCoR+gx9sNXoJvcv/Ge5Re\n0RXpshmY16MS5yHptmu7a31nUvhu4/R/csCzJSRtEuwBHTyzM0e3e+oLBPFK\nTBcvt/Ii+UQixCfkHFOR9HHLAZctF1puuQN/Z2wpl7GN3d9hvgXWrWVmFDbD\naeO4gPw+sa2Ohza7AWweQQXJbYzJogkQPAHFEn6nrboxy//MgZBEaC5gXQpP\nqDml6CsJWV1yTpuex+TYrdvKoZGTMxOPUsQfOrfPR0U6Nbcd+5l1Xu6Q8EUT\nzJ5cCqSzP0nIQX65sLzsy/KD8xecjp2MKTVN+ZbnNdGWpKSNi7N9PmLXgae6\nUHQy\r\n=nF/e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAsyEAdVGz5VqXAbZdt3epsLadlI1w2bq2MC2iuRoMcKAiAaww79UX6Vxl+uPDz7ZFyEYmtEYwUemYs2rgTeJk3ItA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605394195-ae77ae1b.0_1605394335822_0.7988625929227335"},"_hasShrinkwrap":false},"2.29.1-next-1605396541-248ed8ae.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605396541-248ed8ae.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605396541-248ed8ae.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605396541-248ed8ae.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JmFqpgp90aH3eSuXjBgnxxXIuPFAB9mUGz4VsSZmhR95PP3WuzZcpWb25qoSZfGdH/BHOzqBiJ3XUOsP10Lj1w==","shasum":"c520ed8c5046d33e0d2e1a6162046a22d79d0f9f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605396541-248ed8ae.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsGjLCRA9TVsSAnZWagAAGZMQAJJ0vC0U70pqIlW0Lic7\ncTunzJO8ElV05h4o12o121jULaEqsimeD3Pwa73fsY3/vTDuIbSECJfgnzBf\n0IBVoJDbKBSpFfGpi6yh+Pj72kxkhNaj0hdz+IJFNCpMRuMSW04aEYhT4U7p\nmhCXs5gTKReHK31pWzrj/aPfGehs5rIoA/n8lYP595b8WXD5jcqEpx59wR8X\noJlKNlKL0dT/LC/62DbPR+7yqSPkb6SgS0Z3jaLDpK57CnbeBmNOGGJv2Es3\nc0xeifmiOA1UCB3SzFtnUy+Joug1pFu717ZOJ/+dqCiRGtAgxKHtcN1quq6V\nyJGEnW3sLowOcwgnmBxfQmyuF8ojCX8olhBOwxPDwiASznBHeCIkRsJh2IQV\nhmCUxOmeU0pnTnhqaFpGymo1noMJcSaqWp1zgI0/EW8PSYI2B+8xsx4IH5cg\nmph/Xb2Ozj8c+lCDfDyQDCULp7AQYWMWzgxpH61dx2hPsvsTF1ET1gPeK8UW\nzd5HyVeH7mkvLr6nTG3r8xWIktyKOFs8n8Otq4PyD+M2HKNa/UZeXbzo7T2m\n0/nGqkWnWaFe0SZTtPJhEkx94mBSARkO+1DWpgm6T+ZvwXkuQZPGgib04n3g\n2/nQWJVDKEnPaysXxNRMdov1hvGiZvrH1WWB9J6K5YBaEr5kCTFAQ/Ob72PN\nLE+P\r\n=L7bZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGk+lr6NsjF0TBLGDNRzGA3XIxmgrZw5uCe6ETIeOtxAAiBVZHWMnEjnJV2aer0Rr/gV62kqcg92SO+QiHfdcmiw9Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605396541-248ed8ae.0_1605396683380_0.6376245825162916"},"_hasShrinkwrap":false},"2.29.1-next-1605413653-9b3e6665.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605413653-9b3e6665.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605413653-9b3e6665.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605413653-9b3e6665.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0wXO4/mNyggVNU49jIVND+I4uyiWYRSKQNhp9/eVZ5V1DrHYQzZ4cAqR+1EJk+CpTyios/GSlmjrH1+POgX9yQ==","shasum":"36ad6a472459f91584c6dd9094391026121d9bcc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605413653-9b3e6665.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsKuSCRA9TVsSAnZWagAA6F8P/RL7Yg6EvUkN23aVSIbq\nSGud/TC84+b8W/chjDPwxSCJT10fICOqc/V/mReOV8E7sHLjYxKu8PzQCZJa\nWLsM2JLnfwhxvyNMA3AYYENreNdNkb2QoXULxcZeE3jjnrrYBjH11hT8dOdd\ns9Vqm028AxruF70miXxiQ03fnROKA2RRaRr2PiVLShfTzChS6NcbXz4Jmq5u\ngEhBoi3jx6IkzxOKIeM8JQ3d6d0xodN9ZEeII8El3NtMziN5T+l0nMc6wu7g\nFteNU5ks8V6xXGH3Sp3ln4F3wLeC44hB9E0aC71qBgOkItzRbIDuSCnbYBr9\n8aVbs2xsHZ3PUCHHL0U4O+TFa3IFkJgc2rmlhDxWKG8yrFG7LAia3zroF0U+\n4pIfv6oFH2rmNcU/0mtGy7ETIrSnCOC6/OBv/yF1mLCnMK6V/jZAeWeb9mG2\nTyCYxhTQYFg2Td6Gxa3HZh+8Y/dbeDIJTXqocc2j59bHAfuQuctONYf44wDo\naLjCGTWOJAqSGolLfXLF8QekShVJM2NvLAF0yH2b/FrOgu6I57yz5YGzk89C\nVmU+5j+PVPMIup0qyzETn7RN3xqwEL4OVLSJjG7oXDNiRAoOY+18utc8a7ty\nastjXYUtzcgyVwk/YOwsJTjgVGGdf6CaDnXid2G8kKMKCJqDC5f8UgbKkY9M\n5Mj7\r\n=/qHG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqxkCwK4rajt/Rzpvxw9zJcE45eLsQ7zh/LqRSJCSJDwIgCLM0wj04YmsEEZxHgA3fOt/zUNqxSSHDKQDdjtOa21Q="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605413653-9b3e6665.0_1605413777926_0.4950285870448614"},"_hasShrinkwrap":false},"2.29.1-next-1605445864-be8f7381.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605445864-be8f7381.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605445864-be8f7381.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605445864-be8f7381.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Vbm7WRYmf+C0Lzlm5xf7hYYKlxso6ZpOHWtdUaYoGhHgBD9oME439OtgrqooTacViXr9vwwaRH4bmb3QO+DTMA==","shasum":"54c62ee739bca4cbb6e2991c0a502f1f5ca85d13","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605445864-be8f7381.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsSlxCRA9TVsSAnZWagAAx84P/ieDL85H4Oip/KuAjkxn\na7GNTthktpeeIUVABCH9u5owIJP1yHq1R19855YQNAnw7uwvpw11giPQrnO/\nG91q3mBPtJKhgmVPqDh47iue78c5lGwublw0gOu8xdgRJfn6Jkb4JzpGvPbh\nXUdmq3rfTt7rv8x3T5WdcPGH/eP2I110Jy8PJ6tmob5UpEgM3R7pYNtKZLLa\nmv1Jr6FBVfe495PFIwwPLl5nClQqDhlen1YTZQKbd70wVtvQZK+V/FBey4iH\nCMDklbgIyK0vG1eSSvNUxZX40uUuRQVRCAi3LPstUaP7uvG+4/EPwgTVSxyU\neIaOUr4g7y+/GJ26Mc9Hch3uESWUVZFrDgwVVWT7cBXN3J7v/OrkZpPcTUbB\nQfHfkZFyPqQeZ01pQXSgAj0iRp9CHIK5f8pwn+LByCJpDFovZjtQdPppsive\n2jFLOI0qfqGdtRTX7zeQIPNWSvQllci6cJQlbDuUUCav70hljTElIhyRQkyD\nOI9aAYGC5+Po2/eUM73xQSzuzTjpdCJWWWI2qBsFb1DhnVxrUysO4mirPUCT\nIXQhjTS2ko+E+3v2W96oFqF9UwfmzRbECWdSNTwBzfZREcy6JeybQNRsXtGt\nOBGyrqQCRRu5j/VZeKS4w/IBMVimH3B0z3aoFtqU1pnEkDT8ozwmt3mdHRTr\nS0lW\r\n=99sl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBHBq1ObNCEQVAKyMc2hurC+FAtpcP0ATHhJZ2sOHtBwIgX/MLuTq35QZ2ij3J4ry5rEl+ZvNQkJEr+SJ7BqU2epc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605445864-be8f7381.0_1605446000847_0.1546598454017052"},"_hasShrinkwrap":false},"2.29.1-next-1605458632-2af203f7.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605458632-2af203f7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605458632-2af203f7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605458632-2af203f7.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zR3E28hu/xb2vPcRVG7/7lrX8H8nx8KlsbRGd1IxaLnITCgx75lKeZwoExG8T+SETGwGpByVw3h/GrbSuqs8Uw==","shasum":"608b87c450a24419475a0d6d220c56d7f3f9a7c4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605458632-2af203f7.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsVtpCRA9TVsSAnZWagAAcFsP+gOcAqmmOZ13bLEAs+uE\niwoyZAKnCPwS/Z3CDgYaxFMSlkyxmDv1sOooENDraMmJlmtkznzsWVAeV4xo\nBVOoROAU1PwfPEbTkoqVJ/WcM/DexKhz7E4TlTr3fKsOZSwNGo8qsZ7zyu/g\noA5MK2WUT2QYH/HIH+mkKl8MOGI42731eW+GLKx3669jmFnLhboNMDn4nDB7\nRxdH7tJA+ofTf1UPon2yd16fKsAKkviQArDH6DBZ6qmnr1W+KiaqNKiVPnEs\nqlIIqp+apPUj0wv+lHYffePARynZgGVEpJI1HnIws3Fm9CFRbOPlT/ZiNOh8\n0jsGTUOF59Ne1oh0Gkwa9BPwS+PDNIUrVKUNhfKEsETazHtjduai78ivrOFU\n9U4hsWGmwMjpHPKw5TZLHlDEnHIobO9lSgv2XN7+ItLCUxzhcKXBgqrEFU6A\nYGehJsGDzhQZbC+1vvtaIg+2YkyZn7v50ZYuqGk4T9FWvqiW7PU1umKkz0ot\nXnZTozamB3x9b3ZIybmQPYpNJRfcSPJdZlq5ygvH44p9BDyCaIbVf3z0huAX\n35asyF114dpuVCzoVuy69nYakSRazOL0HpqCGx3laaWilJM5IgbdZm1gyvSw\nUvSCdLjOHVg75r2/Z428j8KXF4ka11rRDmFq7r18z2Cuvfo/I6tvcTaSGeNq\nSxwj\r\n=UqPh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDwKN4vzoyCOTju9YILAqKN2hkKGoDlmROnadp/auMA8AiEAyGO8hYMD51qFDxIkUqFqFFQU5Ctz/06mvFS4scV4nY4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605458632-2af203f7.0_1605458793151_0.8823830689972971"},"_hasShrinkwrap":false},"2.29.1-next-1605528730-70d379c8.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605528730-70d379c8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605528730-70d379c8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605528730-70d379c8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BVyrqNv34i0d+gD49Du8rCoRwf79aJoaXX/GoaGNQyJd5ljrjtAWsNIW6+3GavAgvDJs4BJ8BrBNPYsEYTmxuQ==","shasum":"e544fb84f7b8152a245a7aac62715dbb68daeeba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605528730-70d379c8.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsm0lCRA9TVsSAnZWagAAqOAP/17lFc4dkwUPWKZkEvN8\nQvBRAlXqMGCY6xoKUsIL2VbtgHUU7FIaXkZddJbA3aQZ9F2VzTNEMqgGlhZS\neSaGg+U9vq3j3EHcfS2jGxw/ZhBJ9Xy8N+YKQbWa5oAgql0z0pzmjRuUax/X\ntistBfAi4xoPPd+vABW/ci5fxtkV1tMDZLcHjsetd6WFRTipkqNGAdiOEY+K\nmIniY+BG0eW9Jeg0CHer7ngS6zvplas56al+FN14jJeLAEonajtKHOkyxn7N\nwYaZsRdLEkKyP2u7+6W/tJ63TmybJYJK5+5zEpMmlc0+psUuRpz0pMwzQELm\nOfeWzH9qzHjoVijyq5NeCAwrPWs12qhyeoQeZBl7gnwfP+llUJ1k6tfmQSQo\n76dldjs8i2mhAXBOaApH3ccEP8aM1MovH+VxxbhC3REhu8wg5fN+h1sAJ1yS\nnenHIKLo30pT8CPGMNgR30v0mAAOISY5LdiuY0ZIUS7weGAvLSDNgdVfadIP\nkiQ/nAV1Bv+QARkUviGJ2rnRLGtLIagj5DwcKwMQIeeI5tgvDp/CY7hFXutL\nG9MLIB4ybqitN+i4P47hklYIAnXqQISXIex8+zO87MA371CW/jh/5x0sehNF\nJXndytDJ2mQ5/403T6ykV35MSHMwKy7iK1uatqaZAiBj99wEK/mX2KvE2/3Q\n4XV9\r\n=nydU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSj7gPIv+UfmxggcZPYLHf/A2FvZypDr+tjz7hhEZTWAIgMnr9d59l1wvuNPkg7GdGAc9FO6FuNpagoGY11vAOabg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605528730-70d379c8.0_1605528869310_0.08706698399710766"},"_hasShrinkwrap":false},"2.29.1-next-1605529600-d2c565b6.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605529600-d2c565b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605529600-d2c565b6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605529600-d2c565b6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iZRlWgJkmQQtsUf8ffNPX3kqk0JCbe9h3MJORfs/ek00MxPACBk1TKfhFFRrdSBhqQC7utmrOyYuOtlQ+RhogA==","shasum":"9fc915398f15464698a2691293177ea4e6c0ee9d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605529600-d2c565b6.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsnCRCRA9TVsSAnZWagAAzKYP/RIth2FO6Y5jZkwE1abV\nZqpZrvM/a7eK2LgNIas8JpR5ao6FU+aIo8sPQqeQe17gzcqQcsr/Sy2B8gnB\neBeAktjL97PHhz8443wfVjPkTLPue8I9xUmxIZANrhE17nKpMCZEsIbYEAv9\nVw/SYGXgp1b7TBesHLo4XZ9GrAB0LN9SOnmyG7Yu+T3WlwfK0lYIgDrHazbQ\nF7fIKB7lRgHttFhcWAMgnDOAq3XrLyg0js2PhOaHE1mbqG8FYGk6psIfGzyt\noMykSe0RBHIxwiGRm+jWYXhkehVKzb1l3IomAW9G/2JVR3YIGsnLHlGIKabF\nZk5zd0QOrysIIByJx+G5791759tJIBoESMg7gfEi45LUoKkSx/iJJNoYLFZW\n7e50soRr1mLR/t3Jt29Sr4N6ocuTEHuKEBWxx+OPXFeAwQIPJECDKRwxW/31\nPdF7OzpRiPgc90AFy2v+4OAPFuNHPVsaB6p5naFCx1KJECWBExy7rar3OyPe\nayYiiDoYLfEzBTSiw/fUztSUAB7znVkMK1jZDRNQLHjthQ2EKjeHE60c1ODz\nsT/gF+TiOrVXXqVdK4KyUm2u6Mv6EoDZhHO7uljA3lZ7qCGNjOqplddUiZfy\n9CVNDZy0dm7tkhE8S2WtoQzOQ5MrDiBJj9oO4X7l4iem51ILbVsZKdhm02ov\nolbt\r\n=pBPF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDU+qJBLuU05pM2e8/Ee3y8qY1PHpklualFzwFCr7uHlgIhAJBo9Yutq3lmD4hi+4dBkMGXh0px6wlX1z5dpN6xzcfy"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605529600-d2c565b6.0_1605529745028_0.9170436858811066"},"_hasShrinkwrap":false},"2.29.1-next-1605530576-c1e20fc1.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605530576-c1e20fc1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605530576-c1e20fc1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605530576-c1e20fc1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-b1uMXPHOUFBwyvrifYSNyPKxWppsa+YR7C6nTfO047gAgflHjVgONbCU8Nm+ypQJLwCMGBwu4/WTiU6MlKORWg==","shasum":"ccf8163edcd0c2945f99885a76a5526c2609869f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605530576-c1e20fc1.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsnRdCRA9TVsSAnZWagAAMCIP/2Kx4ZiwzXXHa/v5RAZR\n3k6v9SPNRlooGn+d9z37OW9PFqc9xPnT4eMB9O4vUY1Z6mCe0PVRKUl+ouHN\nifq7lWbkbI0M9dMxImo6Qv6xibk1usurFpLeZTxv04YVP3l/hOjS6IikdTwx\n8QqALA6AOgsxPvI4mXma2SonH4AYGoP9HBINNHOyelBtf9a5X1QeK/0ZEVId\naBwpfanyeto6e/PvmlHujTyQZDej5y6fofJtYnerksbZ8SNcTyjvos5D538s\naYdbKTRceGaBOgOS6kulI7CIChMzQ+UrS+6kNcWNA1t9EyLiexKpo9v2uO1b\ntuTP1VFBQb1q0JU+0NRfnlS4j2pqeNCyTNLBJFtENmIR3EDW687GHb0jZBhu\n7vHy/mw9sYyG0qVbrp3y/6AdeAPGlD23D1bMpFM0PLv66mllwyKWtajxoRAv\npk2IL8Mphr4XGUmZD8OxtDc3lWk8O6wbLxQH/exJAYmvs69SoRGmPSYWXoza\nQkvpJSzz9TTBFs0e1Lpc9mFrSEe8n2blSvpo5zOMjcpE9AI0F5MIV5swsv7d\nCxvEx/t4NdmaufSlT2wbXdbxY1BVLvc1NcJ8vPi1Ti5M1yk19OU1ogksH1NV\nEFdBAlccKMD+Ja9cbLHlut1V0QjqOHq0k23LY4oWwoxyzVWNT9Cc2z9jS4+g\n5Zax\r\n=8kNb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICl+6zQVsPig19lAg4SGadW6f43NWeYHu5IVaw5Q3EH+AiEAiqD5Te9Qumgb9BK7PY5uvXsZW+z8Q2+gZP+z19dIGbg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605530576-c1e20fc1.0_1605530716814_0.9710076351840065"},"_hasShrinkwrap":false},"2.29.1-next-1605531016-e41c43a3.0":{"name":"@xdn/prefetch","version":"2.29.1-next-1605531016-e41c43a3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.29.1-next-1605531016-e41c43a3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.29.1-next-1605531016-e41c43a3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-y+MJCVc4f5swbxCVtNuRW9OCX8RabyYOjrGLcBsbVWfOTP6XzRnv+5LQBVkJpgB3WlJH7UpJMrfdT9jp9NgJ4A==","shasum":"193ca7fa3d090ec5def433c78080e5399727d34d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.29.1-next-1605531016-e41c43a3.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsnYaCRA9TVsSAnZWagAAO6UP/j7WIYmkaUzkl/tFh/p7\nTgCNGZCXGcUi5/m4Gec5zghthD1VaBHxYRSdoRuU9ZjZCTX1Zpf/hScfTNPg\nMFQFLJZ2h0Hr6qKX/2ZrHtDqCBmYDCR/x0KC1hHdOExzmyZ13LOe5oL8jQG/\nvvAlmRo2edsVBl26JsaiY/G414r/nBiJ0Atn5xdDXC+W7y4IVbEkxrChDXxt\ngTxMwo59/CMrBqKYWbKZG2z7AsF6Bl5W8ZqLR6gBMLUJAUTEKg7OJZMHzc0P\nGqxWM3rJBDdVfIHpOxnnzMuUqvZC68yxEOjwnulX2mDfo14PXz67ybnONAil\nUwKca6KwvBFwtlPEEXO8b+iWEoFUqs1G1p/ursDYU5StIpZqJZqR7+mybEMQ\n+eL1J7Z8i/UrCK9TXTGShOvOO/D2DupxnG24GjMhvnGeG8lNTYD4cETjgmxe\nJ2GDc/rlb3r7W2kHnajkSNYjpdvQF7FN17g9/cXVPiUgV64aMHpNfpbG5ojB\ntgS1GwXPYPPNM/OJfEoDlwqMH+K+VA36v5qieGNm4N0IyPT51L2fIxxEOCOq\nfB2kknDay9B7Z+nVUxN2IMMw5j3Ls/YJHu5N+7pvvDUUeufPJeRfutq8WTX/\nu/5sLgBqlXPtGGpYvSeqo5PhuxSa6L4wGhzAZl7lpTec98pP8oGd+HcFRMh/\nSW55\r\n=jQJN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoGdLRLjDITXDMwy4gLQ/QFmer2ERhjA1pvtqUXKoowgIgO47xsPZLF3n8lXfLvJ+qHwYaYShkQ8ysYcs4jY+VAeY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.29.1-next-1605531016-e41c43a3.0_1605531161913_0.7033205524845108"},"_hasShrinkwrap":false},"2.30.1-next-1605533135-98af3341.0":{"name":"@xdn/prefetch","version":"2.30.1-next-1605533135-98af3341.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.1-next-1605533135-98af3341.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.1-next-1605533135-98af3341.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zx8Zk+ALgbowVtAcG9fK4HSp0ZsFKkkbZa7mRUX1fTn8PBiOeTUH0edMMX3v9ViUKk2PFPYxhdJa3nX/wtq88w==","shasum":"9f55499856e5ef7e3ec997f3025548488fa8a512","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.1-next-1605533135-98af3341.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsn5cCRA9TVsSAnZWagAAfHkP/1iC5OXODsJ+odag0kwb\nvp+HskIqG461/XVu0J3FYznx4+cqy/Jcoo6vfRWTaaQN1HPszUhHhSisMB6E\ntbpe+JKKuhdan7wjFVIUxHol2eNFLqeWNxKiSqu2kfNGjB9UmH5XTSR66jTw\nRlpXYi60ac+XJNhO7Xvon4lX5AkB79aRyRo4nKwkvPXZf3lI7QnZf2QAGSr7\nGV4tTpJg9ikEczPlPo/9gH/BpLAzR1+uqfaFALooXXKQJtOE34l1CfIHwxER\n01hp9QgDVQ74SVwOFBFU/6RtTkDlvcvcuSf+09Z4hiYEyufpXJZcqxzPXXnq\nHf4suXdh8kAdpz8rOZUF5MBKL4++Rt9QjpD+XJf+ndhFqioHyoGPRN02tt+P\nhtPrBJQEwWoGKV1VDNw9XWORJavwOVFHubGjs1oAOpFmyKuW/9+jEufJRt/q\nUmTwHPk5P9Xg9ED0S7hjp1LPXy29Fb6K3VEIza8G5iFwxrzzLqA1y+N5Txcm\nSqTmgN0dTWhnZaBoLo3QnKdbrkuT1CdD8OTT9FO7TgZt0nRDYSdHjQPFScZL\nmpDqbes4OmGdyaifMOS2Ps8GcPE0QqvErblOWjIqjqrDsqxbMrXHh2QsKWTV\nZoHLYclvy81g1dEr4YvepuvG0trqeI1vjMK1MWYJTqhnQSDXvIRyg3t3qNv5\n12Hi\r\n=4ron\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKlQE06eysAVhXuoze2DIoE38MKSZcQvqFsPFtJtVkYAIgdO9uy68h5a1wD8W3KGlxsqWzgi7nTG6ybbu8jjTWh2Q="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.1-next-1605533135-98af3341.0_1605533275843_0.5660605935458451"},"_hasShrinkwrap":false},"2.30.0":{"name":"@xdn/prefetch","version":"2.30.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.30.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nhoL2lvAJUITLH8b6ZEz1bHFmdnZzfXWT4mGLmAAeOoSm2v4BpRXcTbcQ7r6+uaOxtSn0LiZILAzva2JMpR7Ug==","shasum":"d503238961454e0ffd50b842ed530035dbc9d987","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.0.tgz","fileCount":58,"unpackedSize":134987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsn6ECRA9TVsSAnZWagAAsPAP/RaSrcSN0Xt6tTF/PRhA\ncf0/IGgtv9NdjUjdERKQxZkeuFaf9dOCkdHgfdY/EUcQaTYPRkzuFUPCwaD9\nVADUZaFe824lkpp6l3VH9Nc3hyOGRYN1gj/FN499NCsTACLjJA22F3BlZJAR\nxfQO3bPgTcTmvfu5Jaby6l+rMALc8A/nGVAM2cHsbXM/V4JuiK+WhdSrE1WG\nfv9saGm7mdrsVXAoHs5WGYQUekPi9qz+u4RvRY4IAQXoI6IAAYItKI3PZx3M\ntcaBUnD9M9vOMUf5HY3yu++HAU95/Axq8bOcEljcLRnKWSVyT9U/yDnVJZcI\nRewrtIPZc61dalEU9iolQOZ/xgEZB0mmwqt2l43btqRRgvEV9n9ZKjAbb7Pe\negegxiff+tsWsy0MO5QrJw6oiVG1ZgYUOHz/HyL9uCL629c02OxAQ8O68ecJ\n+KPZGzfaQ34r5BLvheHylYpPOEnn0sK739r+k7JCl3QPSog7eQ6WGkZVBGI/\nX8vaQvJkuYDxnjvNDwysMWm6NPkhCkcpmM9CBai+py+n3MSLYlSCkiQMzmXI\nH8KiUbCWr++z4sV4ALveXUjqAAWF7dYiTERsb5Ml8sR62YSsNu+2lesGIG8N\n02B5s1jtCbZQYz4cE53qD1nEKN/+VI3IK97QUguKVbgoztw0uD6tY20jpKf0\ny1+C\r\n=UIAo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQFxZRAngc5/ec5jZqhwd1rQ0HcofwsUlBT9e1RLgCsAIhAOMys5pmJKAatJC5Dla5r/7XJOmhFCJAE4iy1hCEkA6/"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.0_1605533316074_0.27849291853773006"},"_hasShrinkwrap":false},"2.30.1-next-1605533608-246600be.0":{"name":"@xdn/prefetch","version":"2.30.1-next-1605533608-246600be.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.1-next-1605533608-246600be.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.1-next-1605533608-246600be.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6n0y//tz4HIR7Y7klvgD1Hh3kvl9AiLCkTou9sK9H465fO8TkU46UTGClSZkGqqtpN6MBW5bcP3TvRoh9bfqkw==","shasum":"f0bab226ce1041c94e5ba4e7da46a4a198cedb14","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.1-next-1605533608-246600be.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsoA6CRA9TVsSAnZWagAAxGwP/1ffT1NS5/b9aNPz5QMn\na3EblTsuXwZ9B08FUN0Fkg6MycTsfiy7X0M8Wbfvrg2hSlzELEMEJAMFsX+5\nCiUUKvD1/c5odgsPsQ0hztp6XsmcOJpE8iT7MDmuZ1sYFPapN05+0E35B3/q\nhdVoDlvc1v+4ssNUFcsTpok5kzPeVOCMssbtdiB0lwPAYH3jOlLam/RQ+hoM\nB2w+EL9vM+e/evaUqE1/QruNX9qPkDS5shU96qEIAvyO4545gwGXn6Wvky/Y\nmiFswCCOvxr3xJPXXQhzsWKyG4rUBhWwbyBQqAWX1SZ+MFYFoesYW4reO3WO\n6Ce7LTcZ8gLyK9e/eQcY0JNo4apddJu7tlLF1fd1UU5xqJEb7/ERdWugis05\nQq8JsgX3DC65xG4lh/ss9sL6/6v/8oVym/J5ga9ZiZlnUUg3VlBgvik8yNnt\n/jEiBSVzjd0cbIkTYgM6b7XZchh3Su9dHLGMuOt81lUyFtgckdj2X1Limbjr\n1DpIX+C1JRQV78wYUEmMXX9KnjdWfWcjcljWCUJUCXCdZyJlHJ9Yupz5/Cti\nNVJrwGneHSCj+SJCBK5nLDAU6iiMa93ZnnVa0hh4bf7g8HSRNNZUz2TODuzw\nMQ24s+7d9ZS6wzZRNrOiN0NReb2rVgk/FqTP3yaxV3LaywmNvozOpJWOaWtS\n2uzc\r\n=b/U1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNoZFDXDsIYwEs35TJC3oLFQL2onj2nUUpF09jm3mL/AiEAyB4Z8lzfZr0HDJadS6fkmq8JrWGmfx3gJ+q7t5t+Jyo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.1-next-1605533608-246600be.0_1605533754344_0.5993642722265655"},"_hasShrinkwrap":false},"2.30.1-next-1605533779-91d25b8e.0":{"name":"@xdn/prefetch","version":"2.30.1-next-1605533779-91d25b8e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.1-next-1605533779-91d25b8e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.1-next-1605533779-91d25b8e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Sxl5eQY1eozkRqgO7cqtHKaJvjV9tXHvvugP21W4SsHIiIViIaY3EoPKoRznaZy18yXvVxfmVlaj6vNLLS4+Ng==","shasum":"daca161417d8369982fb730229c4d43243f740fc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.1-next-1605533779-91d25b8e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsoDkCRA9TVsSAnZWagAADbsQAIkq7W0OiC2siHitJ0aI\nDAOu271pbJkVIEunNUMIDk6cFpxfxF0D9TDn2xMm3SrWLnONd899qzBLuGuC\nM0b7/hubxV4rlcca9khmvCr2DRkljVswlXyTe35bEllWbtRP8Q5RM//JIYEf\n7+H5SM+et18Ny81OA16SGqXV9t3bf5BLB9rB1OhRsuV9yqNY2Na+aQeWxhrd\njZy3vibim7lzkHT0sY5oJtpZEZX2PvJpol3nBN0A+sAgHV5fGOwWmEwltX4v\nNNKHfoJ1IBL7IboPa4THd40V6e1C2cTFPQpwJNiEHVMy6SoZZIz1LqAsio6c\nHfgG39Z/97/JxXMhj4UM+h4PlvqiSATmGZCVAWXnxaUZYw7H2xT7qpRTQQO/\n1iz8i975g2nGvoPsm9nrkjCdimyEU6thyykVKGgFkT5MOTe+mm4pzkk1gzkJ\n2dYaCfSR4BHpsGw5IbMG2Llvj40i1xLTQFxyF1G/I5TTmg30pFYm79fkJOBo\nyq9kgLCbX3Q8K9GbcoCN4Ht4F9NgMhlWUJ/w1QyGxQOtRrVkLblRBxVJPNM9\n1lI6t56k0aPN9DESdQIpbEMmq9sa8PTu9PZy5C3Z3zkJ9f2gzPi92Q8+h9re\n0YHYRCiZ9qLme3DR2VwxPScKt33Xz504OEVGVO4YRvuWhWmHX7FnW8vvo5hM\naDuw\r\n=L57h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5iZywFHpumojue6ZWD1wcT4zHQsowZC/VcFw/FI5yqgIgGltQAzrSfyo9m5CUB8tJ/ZmqIxJtWbYyMCtimV3R3dU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.1-next-1605533779-91d25b8e.0_1605533924134_0.08240741057185441"},"_hasShrinkwrap":false},"2.30.1-next-1605535186-52c00531.0":{"name":"@xdn/prefetch","version":"2.30.1-next-1605535186-52c00531.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.1-next-1605535186-52c00531.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.1-next-1605535186-52c00531.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GIMB3S0AQWMbYPFi558jGZxgdG0Ut9h5LpqJ3Mm3OP2+WjpP8Ls/XkPN2vHgk7qM0QTpJSgdFB1JMsilckgwCw==","shasum":"3a16c3b55c26440de489ebb68e160a8808ccbe4a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.1-next-1605535186-52c00531.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsoZqCRA9TVsSAnZWagAA1v4P/0Az3zmIxyEbw7qGKj5x\nR0YNLXZJSPjSq0/zwaYrviKvWJj3rUN6+OazK7aNSzRGKfBc1h4GMbl/40hx\nj5pqlAz5tgtOIafKJ2kdowJ7S3R1JhhWygrZ/wo8qM7cRG9Cd/XUVbCDV8NW\npf2fKxuedfPdT3j185w9RYSsy44n9rbIZJ2OXYcheUMpjjqN7jk8V1Y6nlfq\nRkWNGLXmfKiznTB6tnS2MyDieMpiX/K1vZJgJ3e4yhZaLRqtvDNGXrmCVQ3X\naleKWwbmLuikxto3a1iUpqrTsWKAeH9nsqykyshOsxBMFF/eDhvLZK7JzI5Q\ncfifX7pQcEoqEookLiSGcD2tsi/ePoESy9LJ/01+CRxmZUUKbu6DCCsSQ+/d\nRsGzxFGc5IKwqgI1lG3CePQWkBXxjsbHAygx7nAVK+LrYX37yCGMOBREaxVU\n1xK9iF0DVKMybSmPpEJhoPzSd2BUmH2E3lsHxTuyFonMxjPPN9GP6KNBvm2K\ndj3YIXIKlN9B1Y7rGFSA6eNDLIvCc48o+GpCM+l7H9mlqYvYbSWKIggYsdMT\nl36rdr3tHy4MxHZU3mhlnkouH0jLaNv8iA5g0esnCrOyVnJYF2izfp+5LNmT\n+UGwKMLOq0g7uDhWWUGGJ84j1acavGTHmDHhZILZaseZ9jCCrr1xIZ05htZn\nMrGe\r\n=QBMP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqNZEqLlq9Zoj3wb8dTRol36lq5bByOHOaMPyjotftfgIhAK1oqRWOSfMcGQv4iwBcEBw1TVpyLGZjZTjKBuiBwb0J"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.1-next-1605535186-52c00531.0_1605535338187_0.0012528171089158935"},"_hasShrinkwrap":false},"2.30.1-next-1605535853-122cbab6.0":{"name":"@xdn/prefetch","version":"2.30.1-next-1605535853-122cbab6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.1-next-1605535853-122cbab6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.1-next-1605535853-122cbab6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8ZgG2ozBbHd95SLSFzQXXkFckrBeUiQYPJFLnh56Ka6Ir9vnwQo5JbrQubeWr+pOUlFO8+XwCT9KC8welTuczw==","shasum":"a2bafe336a7fc7b4bd1c10b1b181311e0d90d0ac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.1-next-1605535853-122cbab6.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsoj3CRA9TVsSAnZWagAAaj8P/3Uf0AuLMYlwjhqSqa/y\nxsLFRHhGSUOIlulDB5wUT5pbSz3jmy44O7OnXxJd/q4BLiJ+EflQUvDr/Zbf\ncupvqoFwlnpaJkNa7SGlLjLF9x/W2Iv5VOmyEv+HhU078CRP3ouylEbHppXK\niv9YcNQ1y8jxoc/IwmW9/0zHUVVpgjA6ldXRrEcLBOcz6Im+LnphD2jDlEOH\n9wwWqPPYpYmkFLSWuxBHM9OBKmS9dDs62tg6Gk7tWTod51fzNUZ6sLnvXSHI\n8ryvZziXoyspvQCDJvN7kKF5se1GZVyOkRwhfCAiIfwadZK0XDafHLGdFCtB\nYMnoQnHVDdG3XQwNzEad3T4/fnPigTU72vv/DFevP78IWkfwA24AG0f728eI\nPw9X3kdBL6PnhgUYtIwJPfy9AxN/G156OyAH6jDE9ytfa89GpzvNoummJ5No\n/YWORdKAK6paTPjPtN/VqvHG2uCzFleY6BTHMm04P24gudJg5/0BhcqSrxJk\nWwfsCz0zyNZBokGKYQ59jJ5SK9VLEphlSMc9YtAlRiTybhZBF/d8zKW0gYFO\n7cgblkTwWah8UPzCnbOAcchRfYSDbSuA5t3M1Q8gvh6lfeyUdd9pDVV46gv4\nLBZNJvRO1aBrrF3pOr0JVLyWihfbLxGdTvaNcBdERFxIrg8bYMrlT/wJf5eQ\nObch\r\n=Mz4b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHm4BWW0mpqMjLvi1BfeoboLACXIR2JBrvTpkL2+fvGtAiEApjM9r7MUJtFFcbt2VeLQ7JQhCRcKZ7wxZMkY5qC2ThQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.1-next-1605535853-122cbab6.0_1605535991366_0.006656809518945428"},"_hasShrinkwrap":false},"2.30.1-next-1605537420-122cbab6.0":{"name":"@xdn/prefetch","version":"2.30.1-next-1605537420-122cbab6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.1-next-1605537420-122cbab6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.1-next-1605537420-122cbab6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1pqOsvWlKBzjA4pEKU5Yeg8RJK+4QrZ7WJ19zh7LuUIx9HOcE+69Cr+ZOv4CNM9nFvN+1Wwptq+gwgGfhFd82w==","shasum":"e4e1961bb380843d25a0644b886b30c2f9f294a1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.1-next-1605537420-122cbab6.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfso9RCRA9TVsSAnZWagAAIzcP/A9CP7PGW0BE9LF6Owmq\nQlVoUOvcwXMTGAIpy3bwIGd5nlImhdDu/Ela50r33yZKKf5jc0CXCEKrLrhr\ndIoDOhfc/kYkxJzlx6cl6vYDNPnlQ4mYxjLg8MuT7ft+HtuEBkypmsV5ugfV\nRULR+DjW4SYKFMffvt/pXeVHx+3LNHkQNQukx1vNnf3BxFy9NqqQyliIv4iO\ngxklZeBloF1+u4sl3xLa3M9JtOVmxa9Ety1bpyvGncBK6aej7alOOU9YIaDB\nIdpvi/VAhMf9fMssMnidKbeNA31CNF2R9sIR4dOiZbgFqz/IHb6rXGd7a6Em\nukk8sC6YuPVLYNwhuOiI6vlv9mt9ZFJw6IjGKKqtOlqS1icYloMVbWYv8+7i\n+CakAhmjLq4RRofG8exCA91eqjsQijOLmLOCmD1nGKHZlgNRyYGOYk78yi14\nwu7G5Dv5U+g8J5hMG0b71IBZ85SY9owP9/fKDpDbAtjlgf9KDMaB1Bh9MHmn\n4+T9K2OvvpX/+iIsap9H0Edd6wEuz+j58QDyeb5NBvWBOsD2SJeuCMI0JGmF\nVM1ffjp3AOLX0jIxI0cxM/oa006uj+rmhScs+GOPSMWPq/vyShi0jbS36q9q\n+3iWKxS5uT+3Ibx9pVE1YktPOhcPJk2d1nqtfvdnhZcY0+F+ljgSsrWXTBKe\nT22c\r\n=nUM8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOFXO4qYkDJMDIAVMm/kCM+lgEJCiYUEGbncokiWHHAAiEA557CwPOAyfaH9hc9KGWE1Vmq7Ymv9lVISazZuBlGxs4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.1-next-1605537420-122cbab6.0_1605537615741_0.6153867318621855"},"_hasShrinkwrap":false},"2.30.1-next-1605538549-880e0fd6.0":{"name":"@xdn/prefetch","version":"2.30.1-next-1605538549-880e0fd6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.1-next-1605538549-880e0fd6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.1-next-1605538549-880e0fd6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3OFbPRmDxVP3by0SoIxSKNtb1PnFG3oGK9ZBYKghTPtsJDespGLA8e3wan6lVRxQQb7NxUEI2tA1FLNYC7oqvg==","shasum":"e22bf4df331ecaf18028c93b1fb6597ba7fe0370","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.1-next-1605538549-880e0fd6.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfspOECRA9TVsSAnZWagAAAhEP/1hC+nHgXNRXT8cQ+pny\ncdhlFUzeJX7Z3suxKTS9KRg50vMeQavLpW6fahLOfGdvOtCCAeMzu4F/qtD7\ni5nTWCqziQHVNdj6oqsRf8PrntiD079Eaf8gXMMqzF61dbdOecX1onh1X1K9\nffGLeXXoCQCUmiBF+sTQkH/Ftziwcwd+OhUAHsdPgHl/yz7kLgYh/jWn4V7K\nmaxEe0+tztUcMMGkEgXdgAcgaZPUMnuJwxr30KRUjMKb/RB79juynoE68EGg\noO2ZLz22B1/PKDWZ6b+V9Lu/CofiV5hW2V/POAx2JxGN0cBQFAhSgtkNGtnt\nQr0QipCYxU+1AYSKQfuZAXuituQFF6s9A+u1Mp9mPntY+WFztxvonweWzQiT\n0asLJe7Hc+BosG0WUjbHhOyDYdrOHQJ4cWbuXScLzKCSW6pJuf70H/hhTlAV\nRrsemgo+aBNTfUShBuKxSgOaDkLeIKlxF7NxrBo/NDKwZLeWyp4mGNOwfuWs\n0H+1/GPcFUC2o1Ne3Ajo4Vep1Xl/gaTxxHlNO5F5oCnwrmnpImJPIibLH0yD\nHT1b74RVAlDRzOPM+dZ/hcMfNOQv8LmiMV7n0bDXMybmmM0pOs4T0zlj1Dl7\n0x2sFRG/Wtd81g+eGerF6KmKuVaIHxNuECC5JAo1bjm6D5P1F45c2bnAURA3\n7KNh\r\n=uUWj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEIoaZXzl5p3Ql6jOROBFAASqNnPGeA7fN8Sq+Ft0AEdAiEAxr9HT9zt+Xioei+5EUH8gw2TRrgUiU5Qlqk7dXuFm8w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.1-next-1605538549-880e0fd6.0_1605538691396_0.5199129884618126"},"_hasShrinkwrap":false},"2.30.1-next-1605540555-00386573.0":{"name":"@xdn/prefetch","version":"2.30.1-next-1605540555-00386573.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.1-next-1605540555-00386573.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.1-next-1605540555-00386573.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-he4St6+rSsHAxYl8VMTjfQSrSmwvgfJ1HZlrpPcm1Zi5rB/z2XyxlzJ6QmymyCzHgeBRiFya6gHBBxIh9iExXw==","shasum":"b9f5fcf7216f99e8fd28d00c934cd89d6c8cb6ed","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.1-next-1605540555-00386573.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfspupCRA9TVsSAnZWagAAEtEP/RGwBJR2oy34jY6AkYqO\nP77+OOc0i8blCgj7rO8w45w/xMNj285FhEyfMvI20dKwCZMBDtMZSXc3RMQ5\n1K2gbaRu83l72BhZcK8tOVgZoWS4A91vIDcarwCiJYUDQePNjRXaqLNTszs+\njbEuv8PtUhJ0yfb8H4l6jA+K0p+tJwFBdUFcoy8Ge+1E4LHfypkJyKnsQ1DV\nRlnhYsmGL8ZiO82UFFA8weXDbcgGd9gBY4lakv4dZgizHaBWiKfuwUcoJPIE\nsRu4rXZPwNMtc1qRyayqPxd5HlF3QoBwmN6gndenS/pELmCyZm0tAbPVu8iI\nujHSnz2RR00Y4MNpxsKt4jiHp+ff6jtnPrYbiX+eDuTTlLi8TY3WKN2enjWG\naw1mqWV6iH5Gp9xhgqAEYcU5fSHavJdkS0i8sFJvSwCkjEy95dD0tk6SsFpx\nkugjjp2M70SFQNGVmLcei5LaTgX787ql6XLH6DQ4y/I6dU6JJHs+FN0sd5rS\nrPb8z5g1lPLXq2mdprvqSma+AQS0VK+jkfR86Y1FgdlPJZUCZESm7cd36jFv\n9WTujK/77O9yIkxyQ9rdENkb5kfZmJtMOhfRquLWouGZqcp+MeJitVkYEOGT\nJJa7UzUsRtZcbTUem+/ciQaEMwmzhCGxCawkWE02Fq4LrnBubqfR8d0do0ti\nUBwO\r\n=cYgG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGvF8T6m5pFwYbkeLr6TFYHlwxRN17UrJnX1GWdB07HgIgAfxh9xHOV4Arjb7ihtuECENRFO7XXjMJ5sSxxKgkQgQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.1-next-1605540555-00386573.0_1605540776469_0.9959028543046917"},"_hasShrinkwrap":false},"2.30.2-next-1605540836-75e11a77.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605540836-75e11a77.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605540836-75e11a77.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605540836-75e11a77.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FCmOXysF8EYbYdBOeNHPJURBTTjpS21E3WYZGoZvMG8GaXKLiO021mna9vh2nTsBqtF+5mU9ccFaNojN1drDYw==","shasum":"8a49fb6ee3c91b1ec1f42a2c15d97703cc874b6e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605540836-75e11a77.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfspyLCRA9TVsSAnZWagAADQoQAITNa+0oOKqunYolzYA8\nOUgNkyaaz7WXPUi+SO/IC0DKop08EXg/hZkm4OWPMH0jWecLBoZ+pQi9liqg\n9woT14Ys8KfKzzkvMatlmLeECpekRBbYOGz4E4dF0PT0L38/1wR5Xnc6oYBK\npNel/RQT3L/GlS5YAurR4SCchinOafo4tPN5QI+ppO6GJ0aOKPdtvTqUuZVQ\ndJykSACTtnRQQGoDJfpUrNutkrjYONVy1WE9Z3KyUbzRauX0AjxX98C/93Wu\nL1R7Avv3eJ08szCK0ExYILVRnP9GHXLR68rmBrDf8uLqkBWWA7BerlHr1eEn\nU/c+vxeKYwou5Iw0omUixvA6Ce6dL/skOgA0GrwTGvpzonu3b4LGQhhM+lFc\nE+OuDPZBVXpyLKlsTfEdfYD69LVH12MN9WrAIHiDwejcOmAaq3EqbBiJht2A\n2O+38WdtPQC32/qFD3wcsYZFQUHHfFH99WH+j2mTNqGtE526IbhjtzgG6IxP\nZjMFv2s1pa4YIZXs8ZShIulWhbv5E8YXKP//ZuTzXG9MDry2sNBXU4vuJ92B\nUGGwbeBfLfJiSk88GRvQYsp6KtC50JeHgsLbDmbNr3m8UjFFRN0gD9yD8vxr\nKvwcVXmYmFOuDegJUC2ZfJcIDnvNrOBcE65BLtqVeVJZL/2yYoLz4La5+dZy\nMX8h\r\n=ORy7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7HMU9phNaeRo4F8qr83U1yUdSanoyzIFo/VdQKTKx9AiEA2LpwC7jP1gWoX7hSb8b4sxNkHJg1wkAW22cTfiAPZig="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605540836-75e11a77.0_1605541003181_0.04863040257777396"},"_hasShrinkwrap":false},"2.30.2-next-1605541039-67697d90.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605541039-67697d90.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605541039-67697d90.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605541039-67697d90.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Cy+3qd61XIbJritMBcY4aC50M0hVjiV9V6M1NytOjh2HCvcGUiD4wjUW9cCAn8wcBi5gMbY9i+kSG52xjJW74w==","shasum":"4b9891021d733dcea2b96fcf313ed41ba54c9b52","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605541039-67697d90.0.tgz","fileCount":58,"unpackedSize":140415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsp08CRA9TVsSAnZWagAAP8IP+waKwRHWoQRxW8nH9S6V\nF7OMlOC2A0jClFYjCjFM/+zVHclvz4vMWL/EzwX1i6/L0exhOiTMyrIFaBs9\nAhco+KRb0rOQ4v1BluERkywO5MDXSWKKBtPAEp3P63+M8HM8lAQ24PC3j+Jb\nhvcmtoe9U7JO4dl+EqzM2eQO2YtBihsHniouTtKspgwXNNV3AjCpKxKX6kbD\nEd2ighlEbKcuuafCAvh6qG6xNiSn06xlwveLL2pSrr+Wt0XbpE474coqFj2H\nkB4hnISopmn+HB2P0jk7qvX+BVCq3rkaH0nY4qMGJWSu6zEyD/uIyVOQChOq\n9VVjEksS/qYb9qe0psjp3LqREtALadFUD4BQAbVVCoFGKHQQfaxUwtVEzNAv\nUqZ41Rhzl+ojcF7LZ1oa/1sp3gpzJBs4iOy8G2NMEyXxIXQKC1yIV6ixsMk1\n4zwhcMCE5HHQxkz7WG+grQyevRzDvJ8csrnNsUCIu1yhKZdtExMDCz+u+WPt\ntgf6bA2yHmPtdj+1CrrFJ84U9b7GtYyaGBFGtddfj4MQQ/Ni7/A2IZ29bgC9\nCTex2qR5GqVJn0RzoOvr0WeC13DKqH92KASvpYpz4Ra+3JBtbZdgycHQYUvx\nnRfKxAvApS1xHFAquKoZOapnE2Lv52jVQ9EvH0v5kWCcF44QeYZkSrM2bYyY\n+CX8\r\n=ZTl5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICRY+0u4GgD8rec4San/BbcXjTO7mFWy1sjHFymsU3BGAiEA4SVl56/0k0cNZbbQHnS94We4+/1dcJLK/L9VcNBKa4M="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605541039-67697d90.0_1605541179630_0.4224611730278509"},"_hasShrinkwrap":false},"2.30.2-next-1605541258-a8a761be.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605541258-a8a761be.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605541258-a8a761be.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605541258-a8a761be.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-m/634OOC5PPQZtJIdkM2L1vqfXjU6Ri8QRW05V5ZUjkyr7iIiZ11SrV6E8+FRFxozjjNGHDq6VLA1m1Cbu/fwg==","shasum":"3a2625de5563745683e89526b8802f9b746ac07f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605541258-a8a761be.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsp4rCRA9TVsSAnZWagAAOTEP/3PeR/EY8xNPFY7uOrmw\n8U+MafpcQP0iUisoySCMXVKljDYQtlby4xMocxlXUfeeUIXML8VwE85IxAZI\n3cavUnybjc7UMthsF2uYC8bvJTtlzBR19e5nbYsqD1oXH+XpHnOVnR4NIRKk\na9nEcxlBZUoHbjhNDh2Yg7tr57z8pjXyqxoA8liMaB3aL8GZidSh1oTHgCAY\nnbvDpK0kf4BW6t3EAi+KEM07zMUGYWBWrt3WAMk02GQLFX3bjeT12L9ed4R1\nXCidZNq4mqPluuW3rx2Ip5n1uX0Q9I3F2BViP61dQ1ifUnNbTPcQSU6JfrLd\nY2mg9NJdAcK+yrtlIdyMLpRTn0BbxjeWQm0dCEtQqxKlDN6w9GpkZz/A+spd\nWNCA4u98kJJ16Dp6fl/x1kBAbMVx+f0JgouhxU6RCLEy8xoJIg9nqdw6etsi\nJXaDR+ZUMu7WLdNPnxA7ZyBaLmpG3Jsmxy6dssZalGYFHLnzK973CFUELyrP\nLWzj81lSXHXIU/hzSWOHlo7GwVqlTcLY5GfjzMMr957Jx2pEWrbUeRvSNCI0\nJvond3/NcTekp2IctcNiJaCzc+4BvBeE1vMj447J3+ywmCBEEl79gME0n/jN\nNZ9zeA3n2tDgC6mYsgEBM7TcglJ6PpBt2U99k/VOD1DyvTIuQHQ1Ldrgn+7B\nZ1s/\r\n=hP06\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2x8BJ2Jt8YovOFdtxI+xC1oXqujglfqjo88AU9EroFgIhALypJ0JBw0f8xZAgwYbGroqoL1rZz6GVpQAydK6T977n"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605541258-a8a761be.0_1605541419177_0.9324613214120117"},"_hasShrinkwrap":false},"2.30.2-next-1605541801-91ec3a94.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605541801-91ec3a94.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605541801-91ec3a94.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605541801-91ec3a94.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PctpF11LIp3qwQOmNXMnjYo8ZHY4hV3n1DxPp7bOwh+zWcwqiknP7l3t761VAWdDOsA75Z+nPJAJArrZXyLiKg==","shasum":"d81ad7a4f1da26fc57bcf481497392e71e5ebe43","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605541801-91ec3a94.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsqA5CRA9TVsSAnZWagAAI7cP/19XMt+JPqHueQtyiHk3\nkWz5gd+8g9Do86ZyHoVWSDdIEhdwKRB9PLj+JW1pxkW6kONhU22bl+X6/mWM\nHHPNh63aF4lafzxxHuffK0n2t7HmhYHsPakygxnuT907XEnEvKrb8BnsF+7k\nEGEAI/JOw/g+GWy5N2T7zlnu1F57B6echyXp6kKEsv3A76OsOLQtsiVN4Xj1\nJZ97tFC45brPKeLFAwYrp4Y++M7u1akoeDY9MPrxTTrEnoQwq92685NycTc0\ncw2zdRarCA1lvisPkbuh87B4zDLe1fm3ZUBmdFjHL6FPVguKBm5FtIjoIYmO\nHRqBHBn2PpUmmuiCdCrHeg7VEzmR8d3XkSUCew5pqfXGAV5UkqB1+d3w/Z/M\nh/EXQ4bUOwr1cqwg6XPKa1m6V0rcXgOXMKmOQrjQ5FhMwPdaBY277oIQvTCr\nLSltYclvGhVBs7c4NsXS3QI3DTI7k/3eFJCPgElnKao45fM0cqq2/x5BDbYk\nOv/lXibZ/zeeimoxiR8oKL1QpqXJyvISuhOLGsAciuolA2OTFpe1wO6I/0q1\nK7HKM3f0mt4zwqWSPe3z5YfCgdPHANZgINZD4TE0BftkNIKB9x3YlmP3kTQl\nxaiH0XA0zb17bxQUndx8oiWwy/sF07jjlnDRL6xMNMx1aJOOjUuL4lwuS1RP\nu6z/\r\n=jdCP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDA2/hD6/0UE8+kQGgtAsdb3dCYS91mRuoekAU03BW0jAiEAml5QCDpdLXjlLQ7xoewB36gkwSG2uGYjHF5piq7RZSg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605541801-91ec3a94.0_1605541944777_0.06350654907263409"},"_hasShrinkwrap":false},"2.30.2-next-1605541843-67697d90.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605541843-67697d90.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605541843-67697d90.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605541843-67697d90.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-I8PSPep9bD2zgiP8MB8KyCJXpqE6OTVKsx0sC5/NPAuJ9o80TTnSQOO4JuogTd/ervA+0o5OPjwDnOKT+5Gz3Q==","shasum":"2bc8e5406bc40564fc6c9e67841c9b7291410e18","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605541843-67697d90.0.tgz","fileCount":58,"unpackedSize":140415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsqBsCRA9TVsSAnZWagAAKssP/1swCs34cn0UGh1A5qsW\n1pcEyxOlMTxRsWfrx3OsSmkIyieKv20wvGu9OX8noyQdgeExm8NKFQ4vokDN\nvHet5fK6JCy38u7nFpQAtJhk6Uao13FEaVc6Fgt5pb5jcARkRC9LvUnFXSij\nrDo/OJWp5vqyEaKk1tNzuYTGmB/kMzzGKRHkfvDf+yPT6Akkqo4o9atcCu/W\n0ruSSFZYKMGyTA/A5fod+jmQZOPfDhMVhjRhxUb08fjtW4TgJKPrBEvHRUdy\nMd77/yVISIViqsQhHONcmp0vPUgZUhh8QkuLIU6XiXo6bfjDECFW2xRsq7m9\nBz0hphCz6xp0w8UmEeTCjKWl4tnBmFC4dvq9gW6cpN7NzcO2YfI/qJnNWJP+\nx/Kau/pXtyUoASdFB+Cej1I1by5N7w3GuektW2capsPHCEVLQIhRwmtaubKE\nBvVAn+x5ktUHF1iF/qu5y/jgEYKnvHpl5RbJeLGHdKoEVCvYMoCnhTPdOlmI\ndti77wMMWSn7WB+/htg1xdKCPqE/5fE6CGC8/r8eLCUtbSD82gjbrewd0tYn\nn+kO+SLITwK/9NmaObsxJbRHKknmbW9Ii13YFwMjgCWV8Q/F2fVPuSQmDxNK\nZqxCQCQawJo5SurIOAeaNtaTykQJrwUUnnBjKIcDMhdnpXCqyVOZgcMAnFyJ\nSCeV\r\n=58rC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDImiDDaE6ZWUsY1gpMOyOjckYflGpBAh7xnJtCSGciogIgdsofnW/aCgyf8f/mINbofXCWGZzTfQxpO3GaqNeD0hc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605541843-67697d90.0_1605541996106_0.9518863470056282"},"_hasShrinkwrap":false},"2.30.1":{"name":"@xdn/prefetch","version":"2.30.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.30.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VaSPVIIN/TyUBNy04IhFGRm1yTHGwRfnT3enAngaoPTkHIZhl8Gs/YnJchcZf98YNYjPkJfThaQrqDD9sH2wUA==","shasum":"78522ca65ec0002e633664cff0156eaf62e86c77","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.1.tgz","fileCount":58,"unpackedSize":134987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsqMjCRA9TVsSAnZWagAAQCUP/iiZosbptetGTMzSrZRM\nnNH1lVw1LSoFI+nr97pMgtzXk74dHIRF8ZnmqoxnPdP53oLsM7s3KIm+JX2v\n36hILzWVevA68cptIPqBgsAS0SjW8QUbAHiWj2jNHEf/yQKvxw5erJrbSInx\nBV4HE8ieI7m/QEypKr7PtmxGgV56lx0fYJSrzb84htAj4t4v3kR/RMycBQoI\n9iIioZhlK2/QbIrNVSXnNlUWYG+jwxd5mQAC5qHvx/kby/9l4N93P/Zh/+zW\nF6QRgmxoBQVuRZRZ+6bxz8KHb650Nd5Ly2LEB9DU0Cv2TUilm1i0Y8fVgtIF\n4JergVeAKYAZqSGVAmfMYEZLNgqlqjrJsRtPG9PqU0PLDoEPFprjO5qSx3XY\nqeopNCukryMrvGpFVAAiPzXZp8wOWd45VXltYACmcET8LK7AlUXI4dst3miM\nFN7YXvO6WktqOWzGYKBp+38Kz+Ne4FcnDPm018BHziKPqDU0ruyOAEFQVF4s\nhAN1DlSW33ejCdTj6WCfodLeUymyteKTOtpDNZ/4ta2w304GMCGBr9e4EKMD\n5uRS29afGtNuyqpRSCaNK7hYSVKFRLszgx+yVyiip4ANI5Lx00myjM11f49G\n2CqmMdxSkM5P0dy9xmupBQaXnKAITtHpZ5h2479ftrV7doV/e9Xj5fScES/O\nJgCV\r\n=87rL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEkSIUnGiQdJSxVsfleczgI7wMGvkDI9RAYiSf27RgTEAiEAsBikvnu2pSN+ai8aDMxKdEy7bn0FxnqVrtCRPmZRVfY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.1_1605542691157_0.7278383736513545"},"_hasShrinkwrap":false},"2.30.2-next-1605554612-1894efeb.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605554612-1894efeb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605554612-1894efeb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605554612-1894efeb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M10YWIQamu+5mxHVEeHu1NJt53l5UzbkxmdbTgZBhIiY4XTvv9uSKpCS5y9L97WxoV3pcYFJw0vRrjnkcc0uEg==","shasum":"4f4e1955bd81b41f1c46cc95609229821a8f4b24","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605554612-1894efeb.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfstJVCRA9TVsSAnZWagAAd5wP/iDNDscdBIWfMcwQKBJe\ndoAuz9M7k0+gDdujOVOFoLTGzK64hfPyLXN65W+pb7CP3MlD3ofM6e0DCkns\nlihsRHmWlG9NY7kHBq/HjIluZ6uEpFerUMNw/rsbqY/GxShxI3T07Ai3Fjmi\nDjwpSGFfbVW+jMTCK4/TuRpeR105448O+d1zn3zRBws3FfExlsRLo/9znVQY\n6/x7CaCFhbQ598MPxv3FgJCxUNR4pXdLMtF1WoSJ9zxQLHKodfmq9gnCe4tw\nsPQTyDjLackFXKSGFnOhM4R0WB5PV0cffjS6+p6SxY7elWL2nwAFLQf7JMvL\nccIGlsP8TEw0SlNtU1kwU8YpIyCvuW88uPcRMlEWRThuCdcrOziW3pYL4K4g\nHOgIjsNsiRIxVlf39oME3QzZnRn/1jzhIslhK6oZPZATaw13wPVgv+H8sZ0S\n3jOIg3OTraOfDsKoRaIe9K3Yg8WNwRRxsoQTrXLVsW0Feh7G77GfYPbfojbw\nAATgkt6Zzh4jsePLr8IkSj9AFt99XkoPoF0+elCddbQjsR+UNz5L5P+EGTkx\ntLKNLQCsbA2UfiEuurcitW3ijyocKhEyoMgUOyxKXzyr0TcXE9YyJctMl8J1\nTiaJQ97XwuWOQNr7oOx14gTlEIn6Eb8fsgHYLLHEqFJ8tUCpWnhBXQHMTaYn\nLD3r\r\n=ZGtJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5cRkDW+qXs0SHmTZ/k/+Z9zfNDsUm+iaVfZFJhWJLmgIgFVoRwQm7y+0kLtGUxg82NPiLv9OkD4DgO9t0LEI6+Sk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605554612-1894efeb.0_1605554773257_0.9736259776623519"},"_hasShrinkwrap":false},"2.30.2-next-1605570951-07f53782.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605570951-07f53782.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605570951-07f53782.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605570951-07f53782.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fvUbezKodegrdTaMeQN0clgtJIc+0StbmgIvUQ5ZM5NOpEloHdjKqiYXHAk3ZA+XwkfT1gmz8yBYg8GkCn7L2A==","shasum":"f60ec0c500c65d64812327abc4aaeb2b4975426f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605570951-07f53782.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsxIaCRA9TVsSAnZWagAAiyQP/0IxcbVfSz5MRXQKNJvH\njb0f5JnynIVHKcwgscERbCEUz4XMYWT2AfJyExpZ4eCEv6syFJVgsuNZGkom\nd7txBmrKnGULxraHD9Rh7gzcSvE+hL9MX5Jark99eM7hXtAxH+LWMMjG/vdP\nWjRr6mg50e3RfypzYRIDKY3p/ozpJdZ5ZpVPGrmZuHZwajTgZ1Rg78G/581O\nfhEHOmlw8tcd2QCcg1udPHuXrXgfSW6/l7ohsF2PUU02SM/nDkLMYbEc2i7q\nQ821ip1CQ/xdBCM53/JXfGeivv1hLkdo2hrTFnVcgKh26suejVxoqEHOLBFl\nSet/8Px2w08Ff3DVz3TyxK0eM8FqOvsk7nreFNQLKNo8gkhldIs1cFzW9oeW\nT0nT81xOWqOIopwqNAjvEL1N6gwOSSnVuwsJepoWJ3AICRVZSphRCOxHH9cg\nnxWAyHP+9Et1N1+MeaeuNCIVaW85w/KBKvAmA5L2V+8q0oRM4JFcgdskgYVK\nTImwdzfMz8pOrkm87EvyapnqH90t9A+YPobi1TFAkzpfjORfEuOYdHXNq96R\nYXgF64Vt6++4jj878dm2FUTIDGaSw/8qzvnM1MGKJEWEFSRwJ+v/YXw5Kuno\nSbV3B91RCGCLBZqYk+nhV2/yTNcO9kiJZwtlM0NlYD8FSloXB7zt/v9y3jjY\n0lwb\r\n=W/SJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/ORZfqDBwGFkCkW0EvH4b/fYNTk/yI0w1e8L+YEzSCwIgITPMtWkvtqblxiojNb7TkXBqXEqK0bxpHFh7BtRs5g0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605570951-07f53782.0_1605571097510_0.5798148575404487"},"_hasShrinkwrap":false},"2.30.2-next-1605600878-b2e914e6.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605600878-b2e914e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605600878-b2e914e6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605600878-b2e914e6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CaDNkG8xTQEB7nmpjLuEoEtbbkYATgyX3Rw8lrTXGNliA+sLXO640s+eH3mULWAueOPPOy61O952pBHSFi69BA==","shasum":"da8cefcf0fe4e77a29cf9f230d817a011c4fc41b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605600878-b2e914e6.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs4cACRA9TVsSAnZWagAAoz0P/3T0WhK75ysKpDRoXCkE\ntevEXKw1j8gVFKTIrWwF9wSzMDJivrdjgYz/iV+GTfcDiH6dPIvr5EHTye3t\nFwEw+bH5P5pPnh8o+u5Isx1p0HkuA7fLvjXVSd9CnnyaKQWVOsgAIsZBiTEg\n81QWTKv6K6deysl+nlvw3OE0B+QKL8D0aas61jnYDPHG4D2YucvKHiQ+IqYr\niqmlId4VDK1jSv9rp1ly0kheYJxaUqRPBWAKYXIfkhxiexBtNm86+LPrVs76\nvFjWy4UBg4ZpEg6MNiB4XrB7HUuGsXsniATWnqtCkgfWB3fZwFUaqyP1fv3e\nKwi8oVsHhAfZNYkp+sCj3M1xBdIXVtAbHewaUfl5eKyhvO3t8QaPeOcOYxyl\nRl26qR9tCmtLW6+Jp2ZhCazU2VrGf5QnYiLrVz4pwLf/cXA6P0G3GyegBtTt\nuG95X/TpSLMjkP6E9bBYEOmJOzb3JlM27kMA4TeI1ylenHERMs31HMkwbwyA\nZZbu7/3aqfHRXXM6+f3aeX7lPKVDnxfT7WSOmZBO8FISaRxb5j/A3dO0QZvb\nHKYVOY57YHNdDgAS8C0ccsABLqYWRJnz7OPwORPEJXjWdzVkSEhXVYdF+34X\n9nBaTuXLw7hsIhTqsEQtlnG5gbXNxzW3ZbMcqd8/NBjyhZfkPNgh8Fix71vu\nii2w\r\n=naQp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIASRD8pejz2WgOxU1JUtUeSN7sYBRlmi29ZEggKaAg5RAiEA25/2CxsRFrig9vdMYaAkl2cTtxLyZb89B6BJ427cXqI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605600878-b2e914e6.0_1605601024096_0.3888678892436386"},"_hasShrinkwrap":false},"2.30.2-next-1605602353-b2e914e6.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605602353-b2e914e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605602353-b2e914e6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605602353-b2e914e6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-z203GDRkiLRkD++wVaGApUsJqCxYywZcUCd3kilg43iIyKvUj+sVV3RstuUK78RniaFMU3M9mezlDkJFYMa+iQ==","shasum":"5109457815cf53307a56b6d06afd67c58df4d441","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605602353-b2e914e6.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs4y/CRA9TVsSAnZWagAA2mUP/RQEHE6j4DZsY8lk6Yk4\n+ryR1D1v/qx5BaSja4COE4hTLEaMeTjapkRDvJfpLjnaemnD9zadwiLD0edW\nceuWHgIynvwKVfJIWU/on21nN8t3gHfbpNOZGe/tVNwTksQgQ5t5LmMyJxMB\n/DX8kWe7qDTMHgs5tPArctt9qsNKYLc8oZNWZcqfdeVZz6EdifcLu6cxYT+k\nXbs/ulIQIqi8DndsKYm7JuEMx2ILYOI3GjnwgUOyI34hqZVXlXlmFGTvdCjV\nkD14VTdf7eTJiNsCJZ9k82YKuB2k8Kp9EqC0kP8JOYIXQb/udsTT+CyXt42c\nnJ7ck9usr+KmAZstC8kskbcXogA56UlJ80aEyw4hKkUSYEr9c+V9e/I0ApQt\nTTbkh1muJKKuCHKlewcXk3bfrxfRcwZq7mP/E/9FlP2vKxC0CsQ7Z7iX3Vpg\n/Is43HVoR2inLMIgGOKw/Z+TwGU3BsihCaN9ibzWZsZOW1qnf8b3GQ680ha+\n+7kLPXo4whPROBHiwHK+qBusmA/DTcdeaLojVPIgzw4d54K+Kofvurh7CfXr\n7pMAQOMxSrrIQQU1rNOdXU9z4LFNSY44bZ8hQRWOOVFMcfqlQfLjSCWduqfn\nH0gK9njxIoWJqx5qZG/4gwlEc8AtgJRS4+OALc2ob8EbECysg/PLITiazE+O\no0H5\r\n=QZd8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICWEWAJTDLQgNBKq/JTja3Rw30nRVI9l5UjlkP86rs5UAiB4Fj65LJ3iXuWnvbcVAd/Ps9+k+BPLMAVkZqySq15ucQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605602353-b2e914e6.0_1605602495155_0.3103514562513947"},"_hasShrinkwrap":false},"2.30.2-next-1605604141-67697d90.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605604141-67697d90.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605604141-67697d90.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605604141-67697d90.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7BLgsDgWNAUz42rfNPYhf76Ra/qgBWm0v5Lb5UrCWrvu/vKe6+uZmXw6TM8N8ed+mwETdzwn+D85ZkSyhih4Dg==","shasum":"d8682585effd66fa11624652725be2f496b1d980","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605604141-67697d90.0.tgz","fileCount":58,"unpackedSize":140415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs5PPCRA9TVsSAnZWagAA+4EP/3lYoK617EcqavuaY2+T\n3/d2isKHghaqLm4KL4rlyrdjaHMYLNaP3TdoRPspuBCdwAREjIUuVtdB32+B\nbCiObwTjAC7bnMau+WyXlyT00AsRuDcHmb0jre4RTNCR3ErioKyHEi/1n709\nN2oe3GGj/h4o/NZakuxRVPlwPf+sGLh6RrfT1wMcqf9YLe3Thm8NqtQybSpb\nS9hwYFB1S2NMliJrWagqlKoqccn66H6sPnlnf8vx6D6IZCu6RDp5trCcefeY\nclAVPMPk80EwefD63m3oLW7lje0W/w3zoCMm46o48fYdroeqNsF0Zazjmb62\niqD148oNIjL33O4ZZc8YroRpJuKIHNGv38WGURE3T2DLvFuml8MOemvCQ0zc\ntIjVdP2NaacMnCUMI05c3bnCHWjGAcmCYyiJZKFyLq+3tgKmDv+JuoC6VkzF\niNqXzq/MyZgxjfhPPmGlN/U0egbi9aYCNUCguPs46Uw/FD7Mqz2eFHd1HQEr\npGwS+ADw9NMC+Pac6N0imVpZg8c3k/8qMpePVcDOn22vgExSDG8btJa0LvIY\n/2iiCwQt6Y5q4SFmxLLeu9fadj6i6fO4KDwrL5Tmvq1DdrGGJoBpa5VpGT/v\nKIvzcIIaQS5zXDJ4nIOZGkPLxpz0HOupI38S5hsizQ1toOe8qPcbfgb4YUvk\n2ki7\r\n=i2Nl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAhabg3JDb0xTJeCjStL/BUITiKYmGs/Y78majctPKIzAiBAiKz/aNU/aCqCQLQ2Zddf4rHikBJBDTwhAHadRIba9A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605604141-67697d90.0_1605604303198_0.5539591001276001"},"_hasShrinkwrap":false},"2.30.2-next-1605607058-67697d90.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605607058-67697d90.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605607058-67697d90.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605607058-67697d90.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qol5xmPJMDRJIluTfhqGqcfQPFw1vkQairxOKdbRPTgCNSPdFHKIu3lVi64RzdWPSlf7m89FnEr/H2UuKRY27w==","shasum":"90d522b7e5f9d498021ee2e791a5c628f15ac3da","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605607058-67697d90.0.tgz","fileCount":58,"unpackedSize":140415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs58nCRA9TVsSAnZWagAAbrwP/A8kidKXOxqDYZWdua2Y\nD1DmExhcLWtfbNavrfyQwizrXQ/Vw7tBYL70fVgEgpiHGdhpCTBE9gJcyP1+\nuc86lQyBHnRe7bxrdqOuwXth48Cb0Zt7OpQiBxYt450LLDaENGQGata+Phtr\nPot4G3pj/mKsx+EGS7O/tMSTLbxwaOYtoKxK3IH1gme3ShLg5bZth3mEeMLY\nAtyQV5NVTy984CYFd7OW2Ep2aXxVV60TRBwZ6lFdEL9bBb707nITYljRVEpd\nxnE6geYbU0/N/EsGJFMkn2B4USrzDqjbcHj+y7MgTxBhNCjNwWnH0ut9JPgH\n393y5lrvmLPUHirgIVE7oVu1iORmWsKdbWeCP6ZO3UPlDo2CrsyafImBMemK\n8IxAS9nl23yxdGtmnjz+zin6qF8Tn1fKSIcagdTZnIUPUUNWRN/v22W/H6Rp\nU1IyN6ivfQoWogimwo1p7+QomSzf9ojiOMw2UbevaDImP9z6Nt8seZJ4ytxO\nT2xtvumikPnautGtp/nobZdK1T/1ddFxdi9WxL6mrhq90U3uckbQ1QZeAbdr\nBGYqi33a38mgPUJBUmZq4gno+ngj0pUr5AiORIEQb62OxvB+3WWkZ2Cv1jDI\n0wpUfqASOANKbPYMEMYP7TJUJhpvbm4/0M5bo0r+dzsEdVpKhJf2wLxVYSGm\nyTC0\r\n=WY9Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6n2vUlaTvU8J2fJumfzXY0/OR8NWFfjGZSbMTLgr2EQIhAOOAJEml+p7j0braGMoEkq3ZS+lkcLKDpfiT8JqQ+EBE"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605607058-67697d90.0_1605607207332_0.953621587452292"},"_hasShrinkwrap":false},"2.30.2-next-1605608261-2472e6c9.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605608261-2472e6c9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605608261-2472e6c9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605608261-2472e6c9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pjvmeq7tZ1LF3uQKPIJ98Ay/zcSQIEgsaB/YJn+D2bdmM5cfG5YY4aLDGXOFDSQpoBXPbOGoQlb4SUs4Eikh8w==","shasum":"f2d99c90bd6212d5fe9e05dac286a727ab1077a6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605608261-2472e6c9.0.tgz","fileCount":58,"unpackedSize":140976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs6PcCRA9TVsSAnZWagAAXwsP/2iJUH1SJ8fzv/AhNA/p\nL4S6zxY0GZRXUMtScNiMJ9ls6opMfLuhrR7CrC66TKSU68ZXr/dC+YjVDULu\nkoUH/MPfQzgint/6BF5p6ZdNlKqbj+R0M91Xv67RL5KL4VsjOPPziu/KrtDK\nciyJqVHPE38QWyibXW0Qmoz3Zu70h/BTsvUEvMicDI8Wf5FeCdIO3H4MNp5N\nsEr724ixtgKkUfcLGzdxEBPT01zFAi/BAvmnN1YqZwziucoUuKI5rDgmp2X6\nC9F+p5N5qd+0jLeFnc8nGWs+vvJkXO4aO6+XRZ3Yf/3hh6gYeqgCJi1L3/dI\njp5d2GZdJsVLrjc9Nn3b8yxc9pBPfXkcVbpGe1q4PMp1UYCc92VMxkkNOx3F\nC3uP63TNy40vpX3gIcn3DajBb35VHkUtfN/bdFyPt051zThNzgXN8/Edcw0L\nL/B4+Hl1Sb9kqcahkb4F5l9pAuebQqeRga+4uRqtBbU+w3O1ZVRhHrWsx8OB\nGFFPG09iobOxKdV2K5ztbebI7WUqyy80wLecuKvrgN5I+hpNaHNK4fJJuGe2\n4b/hX42LUcMzF9ZRM0c6pjcp3hqFAs1zI3vQJ23pKR58zPG3MrDv17O72nnY\nQ0y7D7HC77Iyd9j79HvzDG0pTarF9lKkCYTFEPvLKQRtbIUwn96JdP4SpSAW\nTJdS\r\n=K0eJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE90w+OxGN0e5nTtwgB1j/+3DKeDaOwy8aaG1YjNZmFnAiEAj57PXWkuaYQyzz7YQUn7hdsB4RhI06A1NTUeQF/qAGg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605608261-2472e6c9.0_1605608411547_0.035729455652399045"},"_hasShrinkwrap":false},"2.30.2-next-1605610237-07f53782.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605610237-07f53782.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605610237-07f53782.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605610237-07f53782.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-D8wiVMfKuSnxLg/iNNh3lIAATdK7tTpmL4I7lJg45cwhGeKEZJQsjNlnwopAGSdsFPq5KoAqMacqgrQIKVcvKQ==","shasum":"acbb3f9f6aa1c546e887241a744fb7a3cb1bed0a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605610237-07f53782.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs6uVCRA9TVsSAnZWagAAVBcP/2tSw/cbhHq5MLGY/KYg\ni0xzUHz0NvrX74Bgiz2x8WzIrtUMS8CfGhBWwBhPHCOSybdY3VMnrIU/sTMh\nstuSAbw3/YeuM/oCZNwC+gHrkmgV/tMPhHo11piqVN1UfUMEzrb0e+oFTqA/\nVPNzJKqawZpo5PqpGB1nttjFyQgHtEGKfUeAmhgy4sCY+egKvatmB/rryN5P\nFqWbOvlZBw7DVxOJCrz+iEW4YqxdWu4R56fPvf6hNHjWL64xd1EkG266p5Wl\nmSSwMdXKJoD1KvLzq+ZRoY4jjb3JqtbIZexNwfa+PHkjjf4BNZT4YSbV6cL6\njEfRun7t010K1XZBWVAvR5boBdYBCByEJCSx/ZTVFonK9D1BQqaaaO3N0zEu\nXWt1tAouFXD5a2FShGschxoYMlCx+RtwSxwCw09JPA/vPR74gz2vplrMHrzl\njzSPz/hKhNklcpXKpOCXTVIDtZ6JWsBO8BGgan6P8/47PkAteTWTo/Tugknu\ndSPydGxmy3GVxKZyk4QJibCCC7sOBBdCTC2JTGE8iyH6uCXgcSD9Q3dzWUn0\n3QV8cuW2RrO4LNaVtxdNl5dC6Rg7OPdahl0hUgW6vz+omjZRnPpnSA/jWXKH\nHiD57a20p5zA6TprviI7QhV5LwNgGOU9BFG5qrwLK3rvI1t5Xxp6J4Tc3lbV\nRA/4\r\n=1dQC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKnF//9yCoiw89punouyxan/IA2x3OJg67moot2NphTAIhAOjQQIqxt6O8pKfQCy8u2uiy+rzCSf08uwhFRNjS4Bwk"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605610237-07f53782.0_1605610389003_0.09912875442881086"},"_hasShrinkwrap":false},"2.30.2-next-1605615693-16c71828.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605615693-16c71828.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605615693-16c71828.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605615693-16c71828.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zGNAO10vI+Rfaex848m7L/LHveG9q3eIxTKENcTgLv4u3oYmDJ6xzOLx2f7JDV5FFC79vUswv10RCrzNL7QYnw==","shasum":"46c577eb0ee0c9c4822dabbfa198945459c24cce","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605615693-16c71828.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs8DBCRA9TVsSAnZWagAATuEQAJmylPDEeJL6BvP1e/a5\n3L1KmltfFOur+iA6NgcAM1W4rWslrfxDL8ZKUvh4Ov4IwX7WuCRRQI0l3QZe\nG5qjNvvN4cdY0C/lAlVl4kitXmaMW/MJctzwWGlmCt49L1XORqM7SO9n198Z\npKrDJMXmFNZbMt9d218Xzha5F1PHhSRSGxWMfH3Gpe/3Dbqlmy1v/7edO905\n1uifFZ6Wuj5Cq6nUvL1zGLlwLtyl8CQWv6KItSO+3I/8zuQPkb2Wg9JJ198A\nuakrSvy5UHKVXV4lnMwtD+mQ+7LzyBt/CTcusRynUQBT4E5mOdyF3O/H3B8R\nDeHInm+3uG65k7HlJVby0skUrHrkep5sQALw+jtdYxGsSp1yi7X0f5XoYhOL\nORybmB6FOgttXQR12N3HUI5SrAtcl34m+VtqTce93zSpLfoaw7ox6WrycJte\nSEWeo9RcP8jtC5KkU/g872DyiToxXJJaJpHeVU57kL72pWEGyvQ7Mi9N/cz+\n0IqibtLPCTpXXM9ODmHGk0gShvIWEC8TbwZPK+yQg86nQtbgTSxmpkLVD2wH\nuWYEL+8JSdiqhUehyazPRm1UcTh71LiULhgOIZAKN5jFU3LUm/csebZc/WQo\n/UXCBWUw0EZTmPM55Ba1580/ZwKCxTVFWCfNhDTNmaJaIb1Q/HqsN/FmrODN\nPyBm\r\n=4QVr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC3yMDdxvRIPKsTG9366bZ2y0CfvURO+xdY18iWUIXN3AiA+IYYGTn6cGePvhgVnKUVFmZ9FHPQ0bdMMjwIQcqR9ag=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605615693-16c71828.0_1605615808939_0.9345022951622781"},"_hasShrinkwrap":false},"2.30.2-next-1605621812-3186ddbb.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605621812-3186ddbb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605621812-3186ddbb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605621812-3186ddbb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GHtFh8UD+r8TQLyiZuNTCgrveYjqDgqG3uxwBFoPq2rgLEfbJ91vV4aZptjfHUpcCD08OlGyoU1TvOcf6TKZdQ==","shasum":"646821b0d1e9991fa2377744c4e415525ae03660","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605621812-3186ddbb.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs9kWCRA9TVsSAnZWagAAZJsQAJQJBt8yypWVsDLFly0j\nptvplkpf7oN/VZGK14R5yO2s+SewsjLsGz7eBp/abHe53c01U2+gXS4bhFbD\nSnwCrRV/i24r6bPDWlc5kSSUV0RolCzbjogxEfQsIbrRoA2dQ383Nubpw5on\naLETF/2Zwfafoy45nW+LowHSwsdQSSInOzedmAH+nhUijngAHLH8NrUtuWZQ\nFSjcZfUNj5BjPaOMh8ZU584mMZ8lFuFEUIqKQ4VLaysO4vwpyMRX4vJAEkPO\nQHc7kZV1UISygLQEipVFGv3ASvCpTotXS7esWdhJgcq5KiRuTtSyCK4QtxQe\nBAp7mj4YZrt2rD9tDDbxIKO0fhXDPRMqC++fNv0WQnC95xkWVZoVsUHDwylP\nLExiPtzgHjAaaFcEFCM7pum2oloewJIrN2Ormu62jjlHZc/f1dsXowiwwgBk\nwEQmBu6pfkS8ibynrEeRwO4C5AQWVqWrCnLQ3T7J+4s+sR9yiKZ7PwBH0dRO\nlTvMluGvuE63XscX7f/USNTXGdniZ8Bsf34c/uYOehByeRNd6a/DNIU0eeoL\nUSXdbyyvuwDTfaR1FIgUNc6VnMUrcn7DLCZkzCEoEhQbFY8vLf1zUiqZdJda\nXDL1Vp3oefi9Tt2H6s0bJtgDs7/X2fKw57Qd5pfopvrZl7XpEtlQk6sheoD6\nDGqz\r\n=tgZ1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGkUo9O9sLJLHkDfJ3g0O3PteT535HXpvjZMylr7X82pAiA6itaqKKcYYcy1L67EeJy1nwWEjGg1BCYpoUO3AaUBIg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605621812-3186ddbb.0_1605622037423_0.6445610582418595"},"_hasShrinkwrap":false},"2.30.2-next-1605624535-74a081a6.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605624535-74a081a6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605624535-74a081a6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605624535-74a081a6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fLgZVSmS2H8jjQXwE8fjjc8Z8Wrfk2UfmeqrGIHBSXdOKxkXKzBwn3o0ml075xdIlcB4KVWfAeefyCbcfxGpLA==","shasum":"c4a85c462a0b6c45e2fe7a577ddadaadc4b9fb93","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605624535-74a081a6.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs+NvCRA9TVsSAnZWagAARn8QAIgsPhNbKPRZCH5nbFYm\ncN35+65QWuidmTc7eFPmt6uDmyUQzfLB16LP5K/me1Ufx3l2jc3L2/9ku20s\nKqHRxMw79ezWXLyqc0euoZIayCdFu90MDnZO0aY6mm45MCgUlo7myV22i/cB\nReD1fm+QBceSXCdiibzr1VGw2eHNNV9fkjYnXcQFUS3MaVJ59mDkcXRr/7Zm\nXRIXc1S4uB76ixd159R6htJ1OT5BVHCKlOXdEdF04syL6rEuF22R1t2SDhnw\nVV3OL/hizvBtvOEf3+9oQiNTi7cIB1KUOPrDU0KV81SK4by+x0SnAeaqMaq4\nC15viq+8QhwAluOMF4iNQCmUsszzWHQu1GnVohiU+vIs9YrumiqJs9pOYTqC\nrIpW8uO2IKUt3BxJIE+P+YRJ+3vdpM904S9dKmGJInejVzPnWJxIxkdL6Hlb\nw6hPuL1X/NdixzWFr9P47MYqVjQjX7iW5ieHDV5TbdJmif4BXRrqVHWP2A0K\nZM9ID+cKAhTbh56iBQn3Mpq3m4s4qNfsobBxTVXuchxjK3g7Bpzk0S5fmc8m\n/cJ8YcdYpu7TWhqVr3r0fgtQRWvpE96Y8BANQtAJcuPw2FwWxcGKEMCZHc/E\nvwDiq0dIveX4M6CiE+xWaBCfwwqq7lGYQCDDTQ7qcL+nvA/e1CT6xPPSTIiK\n0fKy\r\n=MQzx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaRdr1FcGzRnYYUbX855sfsDNfP9pfLzX7Gi1Vn1hpHwIgFRuYtN2a0BF6M/lvjN5pX3OU8D9ISW9yyi+SlWyQiPc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605624535-74a081a6.0_1605624687426_0.512696269117529"},"_hasShrinkwrap":false},"2.30.2-next-1605635698-d80c3689.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605635698-d80c3689.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605635698-d80c3689.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605635698-d80c3689.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ghxr5pA2DeafWR1GtTFEg4r0AOSTB1C3UGLALzJ8Z0PpCiqks2mIIeIrDsNsYdRsMcwzqlWgWbEoAQ3myoqpfw==","shasum":"9566e1c822d4d67f72999849ecbb04864ac0d57c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605635698-d80c3689.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftA8CCRA9TVsSAnZWagAA8sAP/1wOub45II36oc8/nFme\nlhvtwvUSTPO/s0lAARx+/WsLOpXV8dCnZRqhKEstJwvCDC+jBppjqy9p1nSm\nJau0MuwbXU31fc4pz+7uKLiy0VVCG/ZB6dtvRv3uDh0hBx/ZI+r80NVKe8x5\nBgyZo5118H2Cv/8kNy3sdtcKun6EVSIsGMAn23muGEAA1Wf/rruxiQD7+YL7\nyBbqZhAbDjJ7FsVejAsvz2xd8ftWTaWqxZtVdtnRNOwT/r+9TltfBZe/GhHM\nIfZiWkV0gxsC+C9rMoZ2+CN4phucqZ0PVHjQPlcU6sww3hqL2Hv2LO25jVrM\nrfv3dvP2ipkZKQEDI0l7m1VMN3LkTJFb2xrxUdDyysZT2fMU8wYvaPH4mMXf\nye3iVT2I9I2WD0mhBLT68r94DxLzTNlCR29K9oq1XvXce8j3DiiOacl+UTJ4\nCqt6CZs/AavQhQ+SAQRrMy449CZVwxNL5N6Bq6d57d+dFFV1hMXbQvlvSQr7\nOOyEG2wVYsafY6xTU3JmmCmdDec9TrN/9aMcf8L0a00OKD7UWn4IVD2QHplu\nw8g/AiC4oD3gDCLaowErGAF7oZ5WzRdnl6GcN9KGBG09GtRtNy2r7wHIahw4\nr8t5i0xuwIWVJl/txzOif1dcoEIvC2IDFAT+JuDYEb1dnuuWngiB9CUVcTwm\nZ55p\r\n=N0Kb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID8LYx89RhwySP+iaVIdFP1Q7lu3zbk/oe/1sUxe4XGHAiEA1+l2yY3ZGfj0z8iv+KIFv33I9EqKGg5U8NEs2lJbV6Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605635698-d80c3689.0_1605635842283_0.8249826790164003"},"_hasShrinkwrap":false},"2.30.2-next-1605646890-e41d3320.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605646890-e41d3320.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605646890-e41d3320.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605646890-e41d3320.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rfLA8HUidhxerwZnmSCBv7Me2e1pORrdtGxQh11fd69Xnjn0ISEu3NF76DVXMcaWM0sQbfNT9PTCLy8YnlKBKg==","shasum":"b10bacbb7bf1ac85487eefc02c2fa208cb8ec637","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605646890-e41d3320.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftDrBCRA9TVsSAnZWagAA7YMQAILIlm06XMWfXxxMGNif\nczlR+OsB1xikblNRdUAjB2UmzUaSHI8VSiIJ0kdTBPkw0vXmpaBUxFMSgjeX\noBfBp7g+nxvhjieiRUQQDTOPIIcAMKgmmXGZgWHdziJ76PLaReRN2wQcFYc/\ndfbuzoYtyAsmNYBmW80ZqWHDDF4uVb1U7rpBncc7Y0dTdvJDW3EgKDETXPwz\nmcCUuBh5kfneQyHjmuHmaxX2cFx5qDAEKJ624GKaq/CVBIXzzXFNwYNitdfP\npn4gmM48qicIWs0DrpeGO28xyF0EoUCkoqsDyA2Uxjk4HShjjpqvwnTHS75O\nc0UjLnw9xnpwDUhdjnbEmL18rCB8rhx+55xGjS7Ex5bSbfF3e/kyYoBatYZO\no9nyDXPjdVb4NnqEncBRdN2usV5hiSV1xSfH7BCFuJlF8d/UO78k17CU3P+z\nx6QonHcVDoYzWScvPMg4n/VKyA9eEHbAF3OJf4pU7NkZEwzhlhETd5+C1nFc\nOd7njyo7N1FBUsbzbwaPIGpjc3QEH5Q6L+BegdUaRVJCtJ/BxjSsKrjRVVYd\nm+drvBk9j3gZD/1MFwSWlSW03/ZJmxnvYYxkR7iuPZWx+ALsbBmRUie2jCXf\nZcAqt+/bJ1KFFZDCXNLTelVI0GEL0Uj/gbHq7tDjqTMuaJR++OIeQPV3povL\nXUQS\r\n=fDYz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDz9s3SwKv/hwBeVjGIEwNk8nYXLJipuzBFD/zd3GbCgAiBR2lWvKqbzSzAEt4sbzKOETDI2gHO52HeJaEW4LHkMUQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605646890-e41d3320.0_1605647041091_0.926782390365962"},"_hasShrinkwrap":false},"2.30.2-next-1605649215-f69850eb.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605649215-f69850eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605649215-f69850eb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605649215-f69850eb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MyL9S0ufIis+oyvTGJD+LSvMbaI7XxmGroGa+CAyt2UsqR6rOaN84fwIyyBujvEgBcoPvxnF71Ir62bhxjRjLQ==","shasum":"0bdb3be24032b79c31bf48b29356ae63b432a090","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605649215-f69850eb.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftEPfCRA9TVsSAnZWagAA7DsP/2veCohBrAI49nlhXCud\npgEKPkmYUtYU2RfrkVkiPkjaJvkaGQiWOGMK62b0FqbN6eBUD3VG5sqgdNsd\nXFxwEyMEnyfAHLYNfzQG1YtxBR6IBlfvdZSLMWttU7wl2sGQRGqvFXn9ekVd\nVwNKtxOSlWvIWszRhk1oyzxkK+uRqJ4n/u91o6qxuIFsbTyVlNmuAHmVdxLV\nA2coGtAAWic6G+NC9TyqRFVy3ZQYWs2BvNtCD2T16Vx0XZOCYUMUxq69frVw\nxbiWFlewWdMxzsVmUqSeR1RyXvgLuP0JgCtwu70Jtit49+cRlmmhMTOtriDH\n7p74skuhSASHH5npLHU23mVUbBiuemJoQrpS1znRGTH15EDDX8lNJO87gAuG\nkinPz4BDeiwmn64sfHbgqZRzhkN80d56FQ19LTC5hwst2Yz2Fy1WBBtFVjrw\nPRlnXK5eQkEaJNvtMFDjx2uZFlA1Ug0xmVHCTYyqHOZc57vww9+pkWzkrDpV\nChYaL8iZlbCi4NJ3GURxFwZAL2uEcv6YPV19+fYnb6uPeUte6Oq1cGQsVjLV\nTTmExpWkPQIugaplCFebY3uTLr/SMttBd1pIblWJYRnyOq8VjWPsciiIQGlx\ncha356JHTEJ7U/z1XTyFIXUL53oO8CU9OAdkfum5mHvv4ichp6l/mIC3q6fK\njt2d\r\n=vqiV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD25yXAoKgZvAqpNv5kH4YCEWh6bInD3K9rrdjeCRMQxgIhAOseafqoQDrz0m4Ly+wF3mZ1RHuC6tyr+hfMX3MebgR6"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605649215-f69850eb.0_1605649374762_0.3874371987973113"},"_hasShrinkwrap":false},"2.30.2-next-1605651993-ef19da1e.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605651993-ef19da1e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605651993-ef19da1e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605651993-ef19da1e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xQrLlAieAYy+32gylJTrbfwJLscwspnuh594aXZeirB4XC+daCVNcKTUmxy1WIwE5LLaSxwdb2pmDqjfLiePUw==","shasum":"d9d737f7aef46ddb55b8503ea3d650bae0b54578","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605651993-ef19da1e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftE6hCRA9TVsSAnZWagAAKJoQAITKf2IRgUT5pCoVRPOe\nZS47P2G4E9iwL37TC6hJIGLvPFqnfxnRbqf1sAO2+nAMeR96naSil8ugQxXj\nj3OxHetJ+TCzz7/erSXnzD1eOHVBh71ieWERxNSedLkCyOo8mowtb7Q8b9Wj\nnqYClEN2hdCYPdg7u6dOPcav36PcXMwBHtX/yfP8G7Dw8xc5Kznlmp5DmwU6\n2NqYD0Jvp7QC10R2q9ST39xWP3nFd6FRl+OXqIR37aADPHHGyEPP/pY+r1jv\nmSgFej+ONqgr77UafzAFTOQpB0R2rSBENKQEWCVJHw3fRCRWgFQzYlq9GtO9\nJKjUNbWEjyQ7VGUtqbHBdE/M//sG2Ce8CtBZwvm6KLXJyY+XoVflezI0lcUy\nAIWzdS0PaqLi3mVAMfRvQ+UOE74uYInAEqT4XWY+M8z0T+biyYQPZsP/7yCX\nDvzc3Ly3sQBpgaXjfezayB3VNah1/2Om9AeHNGFCOlLPgrTXtBnkiQ+5CUIO\nkWM/YqOMT50zIFdz80YxNx/b6Qy2sgacI3hzBKzpBj6OLI08KngfTI/IRw78\nAH0ep25WdWPlAHfVv6e6jvQvK/YBe7zqEBlPCQ4dmSR7hy1udP32sCT+MLd8\nsZOVruWLbSjXgzDn9+P067ABo38NLvb68iWzyFfZvSbsTt7oGzOEF9kASjVy\nA1Ll\r\n=GKcN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMDVl7tay/Ddj1kGyWysp1aMCBp2tK5hDxc/o8xv7UdwIgMjHV3vgZJQ1asdLirHtscvNoCjsTE5pDLooGJoMgGzc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605651993-ef19da1e.0_1605652128878_0.09250758732180908"},"_hasShrinkwrap":false},"2.30.2-next-1605653534-34a486bb.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605653534-34a486bb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605653534-34a486bb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605653534-34a486bb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pXIA8asCkk2wMAapV7zXZCA8lkUm+aX8sEEqq75NCKKVUt/KAn8C1I0O6G7LnrhxTg9EwMq3EqS2evF9usGDzA==","shasum":"7684f98408dc7643f18c955242728605acc9aa93","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605653534-34a486bb.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftFS7CRA9TVsSAnZWagAAACYQAJxqnDfbGmb8vHwSRDEl\nTtoX5sv3uMsjOVCsAuhYIrXdqkvVxMJ4CR2+jAF4lMRE3Oe7vJ/o2uz+vDU2\nQATG0F2Nuf+yQ0HXb0E4ZX1+xhXAM1TZmgEGBt6J/dIHLMni4GW3LSkPXoX+\nFKMFdZ1yujyzmthDksoctDaw+2J0kdkkXNV7fFeCeX1fBSWZ6a202/Has/8E\nYsYe3enlVbIT0d7KDqrP8A4RQIHOJnva8L9k57mg2fSKjiPCN1r0wDu/lcCd\nzIIeSwFBZH8RV58yzktFWxudr9RhgXzOmhBbaKG8UDA+YxkCRCAGd3rbYPfs\ngRcuBRYxC4efZkJ6SSPnmbsol4QJMvVRBrVZJ4w9QnOLeUOpRFmbK45fQDn5\njdX9eCKtL90bDFBteuzn/m3REL2ish6SkxJv1ckwDg78tTW/PFnR+lf84Z8P\nyQsMrcastETRjjiZosp3lFeChz8VirvNJU5NjPk6obTKfPegMbZ35mt0EE/T\npn9zTBC7LYeb1QDBQF7Yuf8M7NQGokBrOZmOPx7tvxBLyAw9Kekas7SdjSIh\n74KPYXQYTmZhc0MzzdTImMQjp8zFRwOWJn1IPnPvrZ0wGp+ZhLrFiiwRBU0q\nF0WQcYXrlOr/nJEt1nLniEAb10u0hntXoK6QmWfyOcqD8QePnPPlmIyz529H\n1Nk7\r\n=KExz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGvcIigYE3cz3YSCxOnA8vdDS8NIcADOC6RcUFjyoMiWAiA5tWgHXqLerYUvx3+m/Vjh0R3yElJaf4/PHhy/c4X1ig=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605653534-34a486bb.0_1605653690911_0.4692138049925787"},"_hasShrinkwrap":false},"2.30.2-next-1605654781-e5459f72.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605654781-e5459f72.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605654781-e5459f72.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605654781-e5459f72.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KvOYfd6Uiwwo2vBjEL2BtmHa52wsZ3lsGhOODbH8t2aZfm4DINAEKHcLgqoiEfIEEAJDc2w1udE64ym1SGeYNQ==","shasum":"612856f03ab055226346f9537c135322bdc93ce6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605654781-e5459f72.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftFmMCRA9TVsSAnZWagAA6UkQAJC7J2kzMEq7zdYcI634\nJfhASaI6eQuxB2LhM7TWO4XDDFO+YophD0ERrCbSgGQESQje7Ajfy6fyW7P1\n0pL3jo9/Ve2qa/kPrtW15sLvoK3F8HlCNA6AKtM8lKIbzBaI/DLK9lSzc1sy\nA1E51JklrGy2535Owz01x4IXe3bm/yk83aDhpxu/TBPqTviYhYJaZ5K70/eD\nvKPLhRy8vbwAjjhFGXHbjK4d5UJywGzCS3WfeebEm1ALlgGlfB5SdQkoVQIY\ngXuJ09fVK/tCokwMd02zMTPfeBLokaDUKKF2WiYit3SmCON4FqDD0LdfXQMr\n9SWetgie09AzVGtCZ0xCv3aWCpmrS792+SZgc0d6RM2EySZLJYfTGYTMRyd1\nwTZX0l1jcGq+bG8/aJ+ojYdirecQXMXMegkx8+2RSuXKLAjE+6fjeZB3tvMs\nyZ+FgHSbWJj9dTh0ajIc4frPq7G6I7aTEI31ei+D0ClcoWvZg96kVUgjVPgc\nu0TXlqnHlEr7zef7FmcJwnqDsDv/XMbWaZeOu583y/9QUWfiPEjPs0LrGHlT\n2NPSv4OcWNLQqmjHnG+9I5DtCjgVnrxfhoNiHHYGSAObYDfkYvO0KNaMFpDs\nrp6n3UrQy+t43B2oGm88ewzJvaWq4vo062umShU7hyUOfnFzGXg2sHkFy/Qa\nX4tr\r\n=1Ytc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGI4Hpm631K2PdO97FHITTFTT8b7Dvk5FQ0izJYo6b02AiEA+egQazeWL+0l3EEYjJ+3c71i7Aqw3Rdim2lZeZhAzeE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605654781-e5459f72.0_1605654924217_0.043925152739285434"},"_hasShrinkwrap":false},"2.30.2-next-1605694712-e712c697.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605694712-e712c697.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605694712-e712c697.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605694712-e712c697.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-evoMkJqzDFjoF/PL/c6MQlx7gMqf6hIOQ4taJeNVs/O3sQ5mJHsYBZDjk4mYnQcIY/ZdwxzzPyQNDgStcC4JMQ==","shasum":"81c06bc0e56fc1e21131421a979ec0a9d81fab0b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605694712-e712c697.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftPWMCRA9TVsSAnZWagAAtRwP/2Ex1C29RThq3pL3bJmF\nEW4/3mF/PvXPWoR2x0ch21YTcV2Z/uVjsouUqmwIWDbchE9tf1LNb7WEN9Pr\nkiQJxqeBcHFhrWPVt7zp37Ik2/fSaW2Z+WiagovuyZgJgLYjwNI2GjLV7PEn\nXb+EIynsKXBYNP3M99nLA3hWAP30PVgEpbQ/pU3k5aEGmbUP66bV1Mx5DYsO\n5yBiPhpEMnZb1jZCVyh2P9sYDTNXZRDk/3W9AxwGHIyScLWkdtSbj78vnxJE\n4fcAbpRsUVO0lqhc8+sHao3ryQTtXEphPQ/4x5xx9z+FRRoxJ421fVsVmcmq\nGD9BrKEfwXIuFj9ba7UkHBJVPzl+PHo3cKNG2AZaceKr2X/ISLqJXmMpQsyW\nMUAbOVZeGX9Fw0VNVRGtjnEbt2c6FOz8nEPvpqNz8fjUfjsDZggePIegrbK9\nz50zWSXzCDZdPbDX3MN1oJTw1njLwW3AKfxM4XWH9WJQ2JvhQx+FOJg3hMlV\n08BpIjgqBXIKXDWZD3nnGN7Lj0dPHNV/hre0GaWprrrkXU1fzt8tavhUIjE+\nmBIetBN49IQr/n/QUy4DvuQJISfw5oNyIyois9yW7E5OAt5sJgWxV1D1kd3m\ncsN/a+R8EW5oOpC3j3whNrfeiYbGt+vTLiPPlpj8HTwfiSJbBFHkD9RmgUxE\nY2xT\r\n=LzAH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpV8/JR7641wUZ204eC6qZ215twlFj6+zwaM/pjiLbgQIgeTh/g6aDJynfl7KlFwmmifK7Kygwa9qsvlfwtE+r7Gs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605694712-e712c697.0_1605694860021_0.24600899703618984"},"_hasShrinkwrap":false},"2.30.2-next-1605697098-78bb4d3c.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605697098-78bb4d3c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605697098-78bb4d3c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605697098-78bb4d3c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3v/AllLbUaFC1vV+oEnjxMEsxGrSYDnP7Kj/oXyZnwQtdQNnTsKTZ0MGjkanMvU+pbpKAj6MFqzpvL75N40qqw==","shasum":"43e2a0f18270426b010935891150329cd38d6c13","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605697098-78bb4d3c.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftP7KCRA9TVsSAnZWagAAaUIP/3Aiqp3oBIFw2HVfVoqQ\nPNs6cXcjbNLc8ZDcZHZmtl46lxwdyTOLsbBn45NmOeJoyvChNuTxyiGZ+jaw\nkfZPncKlo5AbYMnTG8rZYZjzLkWde0gTypUasUo5v1/6WoYtoL2KKxPmUT6d\nkw8Vwp7+Xs+8IDZnPEc3faPYLyCUqs4YqQJt/RIvtJzp+E9XfnFmbQOs3ZB6\nkxhwWmuSCXtK4LZQC7GGejSpL/bSFxXD4WgKVp5B0bUMGzBYxvTtnC2Ok4cI\nNvHde3H0tQRKyo8IN9PybtsJY4GSoyfdbtZ5fByMFshgJfxiV20qrCKZHAxs\n5F+3u3tF4d0MkvUW6WtmBo0mTKf4orBooKtgI8uYgk+G0eXNVDW9UHDJzqfs\nYJ/Ab09ffHKzy2129AKIX7mszVdobQZM5VF6xeQkBAYreVwg1BxWXjWv+t4r\nPbXkESom3FGRL2mmXu8vvisgj6GEiKJwawwzTu7IGTai7c/lElUTnDKXzkn3\nLiX9tw/DZCl/YsAK/1ctAXW/41y4t/PqMZ6aakn0Y/ai5A7z0gxReJEq8VT8\nPM1DSJFcOGtuWQFHAClRPVp9/BYhhympovcwTQMC8xzVuBYYHMigMdKkiZSo\n1WEvFT40w58iZbFFhMfZNp4f4R+nwcN37+TxM2Yq3C79TjCNU8c64FWoZ9Yi\nlK22\r\n=ktV0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZIXf5juiV9JROkPkeaMwLnLr7zKFHcFadDyh9thrZAAiEAmdWwygaEV8yj0O3VvwO1afHdlUQ6PdainQI//xLvszw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605697098-78bb4d3c.0_1605697225723_0.6922755627605031"},"_hasShrinkwrap":false},"2.30.2-next-1605699483-b86e2919.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605699483-b86e2919.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605699483-b86e2919.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605699483-b86e2919.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-orSjx8zoTw6r9NuA8Qm7LSOBBOLPKj2nFErnZgu5G6mxkfxz3Nujrz2AZ9kQ5xjfl+p3It+6HQoK7IwI3KsNNA==","shasum":"cd7f869f1f8e235c6c0f2e23e443f2225d5c0538","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605699483-b86e2919.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftQgnCRA9TVsSAnZWagAAc/sP/iUpRrnbQAgaVbVY0lRk\nJXvyZDRmVbmYLWFoxUZIXgqeWCdf4mSqP6N4m0MRg5HCtrvImJ+j/YvQsGZs\nn6t5HLX2Oxg5eeyFZoQHKbomnv4t7+lMf+bUGX1CMv8fdOTAIwt3moCypnHQ\nk9LHoNJoU1bwIIHNcjejo0niDMNTfw/dMtQVtsHf5HyTRNylZRjgn5h1OUmR\nLYvaUw4F6v0Hy7lnuCTfWoLS7aUepWmX3vzfcnAv3trZwy2LHc0PMgx2XBEk\nN2xyEZQp366EcJfNE3vpHAbVofdgPdwy9z9QqyZEtjiUjL31eY+osuyK5N+g\n6BDRwizrwZdBQabjwTfoYk8gdCmF0cjuEz9s5LcIu5cUVfV5rrOYeTxux3jO\nhNxcxM/HEhX6C/QHOloZkzhJBxlBeXUMvlX5BACbx/kDy5iiRI2ONqNDuwzV\ngUdCukGVCksalfoG+uyTIqHN873QBhUeKRAuuQBVihjXKXbN84P9WErHiIGy\nCU3W1N0f29jL0HDa3HMvev3G4egiY1n+b5y1SpVrsT0QGfL9KFNXD7RsMJcT\nMm/6N7Em228Q1zmDSWTknfTv0lZx7Ka9M11Vx7jqtY8cQ5kbzAMzzZi8XwAs\n2kRDuzhfSIoxvSnuKT6iF3n9a+RVGruRZ5PUGwg5Q2vHQVtqo8uUSII5M6pe\nhQY+\r\n=p0Ef\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/badGzdJdc7SJnj4N57X9aPBSQLp1Ser3lJlhhw1hhgIhALmiRb6w9MOGOs5Uxa9Nx/mgMcjvUwZTGqnsdb4iTlbN"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605699483-b86e2919.0_1605699623378_0.7503990257116941"},"_hasShrinkwrap":false},"2.30.2-next-1605709976-2472e6c9.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605709976-2472e6c9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605709976-2472e6c9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605709976-2472e6c9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0mFftUooTihh5Fx0gk4QH3FswiZpbdbe2NnizBF6ARiX1IIxQjcxMVZFFSsGgh1P2lBEa5lFXH9n0kfaGrTX6g==","shasum":"2f4080cb66a2f09e52b7a379e77b27b9d99b754f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605709976-2472e6c9.0.tgz","fileCount":58,"unpackedSize":140976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftTErCRA9TVsSAnZWagAAUlsP/itCrzyI2uI/VfcWvaWC\n2+EIppICHsCT8bq+z4lq+GxaVzIytv0iWQDsJZ8NKpx/SGQpLvZvZPSSUz1u\nmFL65kLIS9i1kBDGqlCi/XZ4DMGVSkU9010qfQ+HCl3NNJQ7n68ulNFVQCt+\njMKn/sMCHXEMZJwhU0HHa0KO8HbLnLCiwkCXR2LcelBKhRFq7e/WCPx8hMg/\nG1DLfWSaWt8sEnKJ4kOU3sBN+KpX60RfQpZLMWqguHk5VlAn3QGB2qVN2C8a\nOi8N54p1Y4nDbW2JxzZ58lhlXJElzoryifkeYHaouRHMrv4qdrPJKdhzYT6y\n2BNNLPmbpzAW4MMWrOnpGHTRFidgi76YNt6nGNJY+UY1yAluzkiIMtJmqtwc\n7VUK8tHqR/yoxgZGo8WLZZNjqtEMENsoSYUa8UklGIbKtVKeIYbpc7TLhwa2\nrL5Cy8y3k/S1gZPgqnKQyYJiIMaomBqQLtbIjYEkKl5rsiU73v4lBzyi5NqX\nFZWQqbxVxUDTVYJXv+vGBEa1Hfd0ZXQoOIW1mN8TWyBdqPMv7/frmjT9AA20\nBMFyfBGh+rdjzPQbxnWj8XfdMSjRv1+TSgAqezn6AVqL+soPQkO1mu3nze+q\ndcYcQLf0ZidWdmh34c4+1HPKxzjlVGf2mfLrIL4vJBWEYX4Mu/1duHl5MfUa\ned3b\r\n=xTrU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHu2ejOGiNJNLR26COPw7pnnmjAZ+6qMMOJNZypmAr35AiEA8VYtenaYeBcYuLOA6NmBO5f9qb+h1GIDQNWWHBlZh6k="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605709976-2472e6c9.0_1605710122833_0.21531757025987175"},"_hasShrinkwrap":false},"2.30.2-next-1605713228-1c5ba599.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605713228-1c5ba599.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605713228-1c5ba599.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605713228-1c5ba599.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-92KKtz7uHsnS8F9hnJjzQTzakF8+l5gBubTOUc3OU1QG4zKy+uX0M3h2SOAXhvTlYGASEUfmvwUEutDii/03Jg==","shasum":"1e338c17ae3545fc5dc653400880fca68154df77","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605713228-1c5ba599.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftT3rCRA9TVsSAnZWagAAF4MP/2jK9FzYny8RPbhEFcRQ\nD26By9eyMPyBinhWetMficy+v4hnROtMi7t6m5g2N4JtIIZi3ecDgVHNgFsG\n45MC2pvTwPZvSQ7ff+BAE6B8rc+hxQ4MzbcyXWHLMgKJl9Ig/WX0ro0XJJct\nPx0E4UGxVrilP8fft9/mgQQMufkrhzzDVaBI6LdlkfAXXW0WP6pJ2oYHRiRX\noKF5jlTFZ+b29nohsERoOkZYWe3nEDlQVujUTffAwmFcdbGyXtfT1fZj15sU\nNpLTieNKgBgMKQ6ohXMiz/5B7n8QM98FOQAcHd1drwxuFHawKvP7wGGyE1He\nnxrjKFfv0xR6Xqsu+308wJFqwWXPAzrCGAFj6fdsRAWYxeJdRFhBQQNkuqax\nfkAsgW6lw73zNpZZO8Fh8auagubjoNIid7/5Mm7sedLgBTs9ufJpnmklKKND\nHOcFu5ZUIoQaB1Olfd4r2qgUZiUaf10GHC92NA2Ful0PgbFayfOCYLpSe3Rp\nU+Pl7wncHJrr9X8NwbdbINgQufEAo4MiM2GaNJkDk0oKgzlh172CCLLCEe7y\nFeKpjEOrZizH4Yu7Iy7GUoHy2y/jP71wtdUmfLNjNyIEKsT1bT+7nDZdy14C\nWiO6r5pdwCtjXDjT3KFspLCSFkfQL9Knec67XzJSc3B4MxY2XchqAYGDQFmD\nsdmB\r\n=ocQ6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCzzYJ0mtcAKpl8xlST15/K6XfjE/1YVHwdlbd0qWcNAIgLP4IXsP7vaCbkMv+juLHx7hxDJGbisEij23NVkFktM0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605713228-1c5ba599.0_1605713387014_0.8686030142838643"},"_hasShrinkwrap":false},"2.30.2-next-1605713859-2ba902fb.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605713859-2ba902fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605713859-2ba902fb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605713859-2ba902fb.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GP/YPNNZ4ahQNAhvgNP3f1BvBDDuSHono9yUZhezUHvc9IEiPhVvzIwT/oD3l7FMfQmLZQp/Owg19gYWoXkEUQ==","shasum":"8785e2240225f5633c1f8a9b19d69ba84aeed245","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605713859-2ba902fb.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftUBRCRA9TVsSAnZWagAAq9YP/1LCeBon7zadd+rzkXpf\nM7FPSPIcoPs7MV6cDHuSdV1/hYnnK/DxeDvLZld1WdlgaVtbozqwUO4K+elD\n3CGast50Sl7kIrcSdnBxzoNjIqqT5xs9gbaePL320yR8NHAzucvNF7Xp3T73\nyzch9dODY5Mn8tv00cKAI56+sjcW6ukoSqvNtjZ/a7LMsRPtElJdXV/XmpPn\nv3zCaC57JQrZ1LS3H9rxDT1uuzBPRBrfNPdq92LZ6tVKUKiLknrpVDhDzZRh\no7w15XXlXlVdFeABNNagOvUMqaKwpeRNmzqpkz2hMXomFMW1EmjB47DPKH7p\nje5esi42k2HXhc/KfhmVMtsWSyLcqEWTAVGz5L8c9YiVho9h/7yqJNkTJ4gX\nE81ZnhaMeydjuNoCvyt1gP3frtSwRIfw7n94u/ERIEpgiozVPeWeZLBjoI9U\nP180YIU4BxdEVM0rYGBVq+M/Om4Qx+ZOpyPaa7LtvW3AUZZL3R6BHJrDLbcd\nXTdMuoBrPQdXTQ5etx08AwDuqOpnxDSq1wOYTOo3UbTlIjzGPXEh6ncnx+XR\nd3EC29z8RB+MBsOw8ItjMyEUA6Mkk6BKrei1AKV+ub4+TAJCdt2dO72rTN3f\nrEOmBPeBmBfumGJzr8SSToi6RERt5dcNWQOMLGCJ/j1pT32n+T0ZI8XMc53O\n4cp3\r\n=O4CI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+zNrD9QcUC4KzbCO0u+fDAjbs/T3Zzpi9sUiz/ER2ZgIhAK7aT6YLzCtE/GkZK5vV/sfN/LbBafbwglKK8BPvo9PI"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605713859-2ba902fb.0_1605714000517_0.15411601066373226"},"_hasShrinkwrap":false},"2.30.2-next-1605717606-9f8763bf.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605717606-9f8763bf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605717606-9f8763bf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605717606-9f8763bf.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZfoyTx0THksTQQr7nO6QsWo7eJ6WzHGb/V4c7wMKZBxyd915qB+zAhkvKTGTZslOgUymmwQ83jKTHkh5AbaIRQ==","shasum":"3c35cb3b44a82231b171894a9aeb2847938b689a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605717606-9f8763bf.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftU8LCRA9TVsSAnZWagAAT+0QAJ1ZvyKqR2caGv7iwa1m\ncfZeJXQU8ZBWlogDI442FGZrm9bsNYppVEII11nAUEvSG7wB3sNbU819QWwh\nTx9W3PKHOUCznCuJFmZ/XAM9DkYkX6waTEzAWYyK2iVc4Mp+WIkqqYSM5cC0\nBlYNeWeDPSrM5ftmJPefHuP3YmiVg793e/n79bJfFsqonqFSsAyJRqcVf1vM\nMLTalIcUN8ghMN7qY5qr0XL1wHv4Ya/POcEnOCzTSz944xBecZD5tsqnwL0A\nl0nBur9jiNs+evGoYehyxsHptVPY+1C7uM+qBqJTmtEKddblIjhuOvw0t23/\nVDUhGXAQuiS+vZ63D+ZQ/zXXCgjysWP2/zfBR/I0sppGmx0+KOEMOZgS0rKt\nhKfiBrebHWu2rBmRB00puq1n1iHUjGNjh1O+aBZy5Sd9yLm8vgXVZ9FA28LW\nlbtBLW87yBs3d/3hNtC1f7tcYG6Uoy5FeFVM9uzeOIknFwgq0CjLbmLhYXbD\nkvB0IZubK8SiHjiAe9sPEJ2cIuhOEDCTNDXmsdj9UNfpT+s/3xEVybg+GRuR\nIMXgQtPuk+XdDR0jA1zRQSW9+XJZmBwsy864yeH9HmIIkS+n8j1IllUfTG+e\n0fFyu2D/AfrN7S79WasCrdvgXDi5r+9mdeXjOY7Bnbmy597wyYAoMlVtFe4b\nLaZO\r\n=EZgk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0iYOrWwHbPy8fjzRarsAN/xjZ5L141W9IsdfOSSYlvQIhAJC4gB1eNPy1bX887MXiebhcOzP5k7n0SNrrQFMO78Wt"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605717606-9f8763bf.0_1605717770846_0.5737372581555331"},"_hasShrinkwrap":false},"2.30.2-next-1605721468-1b3e103a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605721468-1b3e103a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605721468-1b3e103a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605721468-1b3e103a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Shn5X+CKTuZ3WWHQupaPb5h1oNpKz/mDPZmu+qh5HKAf/Bhk3uqzg+FQuaA9/fWjB+Csd0Q8kZD6M9Mz6l3Fzw==","shasum":"6a21e81b996e854527f96800dc02e1b7d40b68d5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605721468-1b3e103a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftV4lCRA9TVsSAnZWagAASz4QAJFvYsEmkzjVI4T33r95\nV6w0Uc/BrZsVYG5bRlhATJ0pGoJ+FqSvJUABnO1CbP28kN5HtcY62EEEuoPM\nZ31I2tzd75Qeq556HD6Sl00WyaUKUwZqc0O7p3iOj9LeS98KM/+8qBsV03ha\nbeeisJobVyk6ApKfZeth5/mK4YbFh5f7nQAXdsG9Z4ZLQXfVTgP5/oSC0UvA\nVNwbadHS0XwxnZOwZ6M8rKmEvqE8jklSgA3T5TEfpUQxM1YXnUNKcTa87ClV\nkeE/WUp0p707iFHGbG/wws9ucRvyP+Zx2V15PvRvnelVnjSVlQuHHNAzz/Fj\nCmy6T3SY13mcuD6b3OGi2wuYD+g0GkHBy110QmGqAQtoxPNkGJ21bdam52x2\nxf3Zmp9NaURyyd0tHBzTStN1rhs3XodfCjtxYHGiRmzUe6DCmqjAZeFTby+S\nUh3lC+rlXRu1O1irx+CwHjkIqTeRWq5FexPDZYpzZtbhF7zZaHL3fLAQMApB\nmSXjYf8Oxmkf6MriRlotslahWkIzku5KBT90PgKZd7ml/P1qIAwRsDJ/gC3m\nrZER/tQJFqr4WWATufrpklnrCadoEwVaVG4uuG4Mi9V6y5Lz2sK6cgI5U3aw\nuZS2SlRIIVvwZKsDoWG+TixavA5HmjVu5/g+XJ5fQAPbj4rMP0eW/rjOAOaL\njYa0\r\n=RzGe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrjPK7dKEwJjLL3Tll23dETx/E9ommR+oOCjz3kEljowIhAMtf/S9GvRKGai8KmhI/7PhD1icPxGbZhHTtQfnhOUFp"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605721468-1b3e103a.0_1605721636792_0.2537355118876383"},"_hasShrinkwrap":false},"2.30.2-next-1605723797-4fba3662.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605723797-4fba3662.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605723797-4fba3662.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605723797-4fba3662.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mu6Kk0NZx0sD6CM/mdmN0+9zmZkudLVKnxGrxkp6UiR/nYxjm8mf8O5CK6WM2AGySGqvKTBqxhut4E30kHA5eA==","shasum":"18234f1edd58cb0f79afec78a56e427dc0dee9a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605723797-4fba3662.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftWcbCRA9TVsSAnZWagAA3F4QAJQrOb3f12/GkhSAo8wv\nLi8Bm5/pJT/EbO1NBiOcNSUrFCGNV+p+A3kveiEwybK0ll5eNLhWEOLiuE+e\nuwqZliExpoD++dDMkX7JUqzHW5DnBTnzo4Qyktr9HQnmX9u2g+z+A/E+R8GV\nh9AIf+dTtMOEJiUr0+/Yv1QlkuuV6DY42sliYDlSo91aJL012vieB0pN1IoA\nqYoFCdT1QBdD9ZS0BN6++cjDaHhYzUczsuYLk50lAbJBTGguExLbGKVzYygB\nPNrNhFzvLImHDfyDmlc+NxdIp2TjIQ7DmEqVjstIAk1fzKcugmTrsGf80F/T\nh/KNk/7frgc7xVU85z2ELv36K+I35FQue2XKfsnIWSFY4UwGm4C23rGwI4u9\n7UA0jqw+iUmtN32Y42pQn9i9QpNnKUd8gScuNrgNvrmzmNRnH7JjYzbmoyfL\nIvnPa11/vIeJ1GaDonDdXhCM1GteicenUv//PiINl/5HvGGqVw+9Uf1kYMtN\nkvLYkzGyW/fkAHrhVhB+WCvLRC1lY+QBoEenUb9KdI2BdB0CnpVms1EtkYdl\nv7iKRyEErPsOONOeZi8HZqUzJpV0jFzWmIggONXLt5IntT/Dv1M+TP7Fvy7F\nWV0rtz5c3bILhDafd3RlG7ha+xwblX7nsIZhxqEmeWbxyp3tYL7XZGAwYwGS\n7Oyz\r\n=4k3+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIDMwpFqj2lXfOPLtz/kzps1Ducn4C1ZkrdToCHfrYTS6Ah8m8P2HKfMSTQewazLL5xtzaSJ+D4V7sa0CAkiFTpW0"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605723797-4fba3662.0_1605723930987_0.215364742630078"},"_hasShrinkwrap":false},"2.30.2-next-1605725386-3e9324ec.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605725386-3e9324ec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605725386-3e9324ec.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605725386-3e9324ec.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-C864TpSROss+JN/ITXjqm8mO6oYePWoaVKfLnLebkK2Lw75snYZ+pV1dVXgLWuFIJYCQ04mPY90s+iiqseTm4g==","shasum":"5faf2c07be548349ae8006371a926f6e9497f4ba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605725386-3e9324ec.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftW1kCRA9TVsSAnZWagAAG9YP/iUv8LFyK5zWTo+qjYvk\nExVaiL5f0aaT82kXmOvgwgEntDmmhOEPUfzmwcbx51zeYYgEQPMPigYsQeuV\nFiUCXxYxaGva1R3hwHAobajgqOQHQ6B2yAzNuk2ZkQpSeR48eMt36i/EBogr\nkvqErEfV5itX1feO/80j+Fagsa453aljF3pgIuvBiOcR7aBwo2gxMLFIQ4S7\nbmqiCdBNA0gZPFGPcNBTOp345o8vZ2a1cTfEkzJv/hkdYAxWVCaUwvucM7y2\npX092Vhjr8vg+2ecn27grEId7HKNTWbWcfFqxDUJ2Agbb0BTlVQBXlJ237GJ\ncpQmRBd4VZQ7GAQ2Cg/f15IqMsxHnbt4rttb7i8dEktZmdCsxdeB94ktMHEd\niJaQLGdyWZFD+FuoIFOrV+7m0PqxxbmXY9T05pzYumMSoIO9/tYCCRpyY1ad\nFCt+KC/uCubzTx+PUWSy6r7eoR57dDM/KZt0DVP6kcABF8aUWwvjiYIpvumE\nXjTfcQRFTvo0JNN9kbk2vdYUG5sO3XazKKnshodM2sMe6CcCYjQzCs/mc3t6\n9NKq76IHNkn2S7OQ66fQKXp3/dTJV1fezejrgZ+LzMc0+hFJ0MJ5xTM8EHe3\nkoVe4IXDqTG5CS+VIRLsamkO552Wvsjb9oMWNXsCJCa6ARCzY4vSjKe1M8tA\nMRIl\r\n=MlWj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGOpTNNq9FgQwtdvp+GpGPbv6XOg9M+cqHdCol7z6G6mAiB18TySgQ6N6/HuybBVkD5dDN/QQxugxsnkIYn6wSSyrg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605725386-3e9324ec.0_1605725539655_0.18811636948012533"},"_hasShrinkwrap":false},"2.30.2-next-1605727991-3e9324ec.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605727991-3e9324ec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605727991-3e9324ec.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605727991-3e9324ec.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0i+Tjykgsww2AZy9dAPB900n3PFV+MhGNK6jTlUxZddMgxu4LE5um4avVCYZgOYc/Q9y4DDMUOUjt14Rs8O0Ng==","shasum":"31fe2601f2ef5348789641fbb7970d53028eb611","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605727991-3e9324ec.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftXeXCRA9TVsSAnZWagAAC+wQAIZIkTQAht7khL2RBUlB\nwu3yiYVSN96XePPYlXe6cIkcRM/h1yGIX9nvNQThMZRbEx0cY9NAWr+LXq4L\nK3fvNxZqtqfmfpMx2HhMk9HNNuHZgg/YU/vVYMkbFYu7B/XP9jdVCzxs4Q0J\n5bRB0DCRTsgNhdxx6rj+8iXZymCueOdSTdL3NOxV5SFtnnLEuZS4MGLEj1VC\nuO73ibbqHfIzcbRY+Tx9bZxGW968dFG3/Nm/5pEexjkBOefkG0pM3EX47VqB\nEGZKlG1jFHVOP38BabzUD8YVzJGcRmVONpUh0RNazMXp3l1gKHxV66w14Q61\nF5JwG4LZzmPSGk5aCxPxzX4IcizBCucR42adw1w7F6c1QCjgmV6yl2GZKxhf\n7rU/7H9AgwaxJDAnYrJRwJZ1LKoHlTaEh+lBCFana9lfqde+X19ZZyQB5Oac\nsyVepW+Tp8pFqu8zgOqhyPV+5X4/MTW+XYPx1Ikht18gudtPaCJTSo0C1BBF\nIW+qwgxtve3D9TB7bqSnzqYCQT8wtxPF6DQIUJTexN7xIbzSMh4rFbD1bxNy\nX54N/HAbShGQZpkINjO9P/msmjbBPYIx4rI/bjV/xaEXk9wFSdzpDs/SgI+F\nft7KCLM2m9LnveULCbMIaacayYfoFm6EXBnr0bhrLnEKlfVKPYcKb7enkvwX\n0HzE\r\n=ZMqu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC1nUIbDkWXOux+aSNpZnA+wmAiFlgxMzn/zrbO4cOu2AiEArO/AuI8rwaY2MQNNVDp7d2MFeLRD9WVD2mVm9S5Zshc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605727991-3e9324ec.0_1605728151067_0.09808643871507106"},"_hasShrinkwrap":false},"2.30.2-next-1605730357-284519e2.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605730357-284519e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605730357-284519e2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605730357-284519e2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Y/FxSoqp799V6AGbeivi0ZWn1k8W9T1P96BExor1/spfe3BGbGt5Mh1/kU+k2NpkHZ7BrRwE9+wx9tRXgKic2w==","shasum":"e18b0eadcb05fcd793a8e9b0f5d399987be7604a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605730357-284519e2.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftYDJCRA9TVsSAnZWagAA1LIQAJax/l/iXRZIZNUscdRL\npdHI/b+wec3xrckP71nGdpjsKrOcjfVHNe3Jc+UvG403a3DcGJhMDYM+JRmQ\nBrGs1iBppi2QO3tMNw1VeBQaP++0Z3s75KAe2zoLHrqtfB+h0g5VDGxJc+6w\nCSukadB2jkswwX+W6QFmls3w/PKMazDomTR53zvhL7Euix6WOTACijn5sHF/\nz8IBIxRaFG4hJs42uD1PAO1Bligd2Hytdk1RTlUIjWDAPieLVsanu4ttuUQP\n4vTZOCZ1M4azIjMMg1q3jj8OAaqSCuBjTCvGBnV7eYFWRwmTM4bnDB3IAZxb\nKuDHgu0lPlLLkDkcQC30XehVNMbDGJ2lrGym2FaaZeFHDYt7ZDsvtw3pq1me\nsGhfa22mR4OiuyEwjwZ5gyOudIaqt7wH2biHPd5VEjYzpfR3hKM/j9VA96o9\nwBjU1ysq+efYy+QJwq120kfBhjAkuN4uBBKw4ABtUxWO07rki9KBOA4bQwiA\n7Q3pTDBkHLA0XJJ5q5R3CEaJu35jejqULOa0z8UtBu4Wo8X+KWHIRK09rJZk\nbb1kE0Mzk8rpX7bDdurWDUZrsWlLmKIYHvtGhr8058kviu4BMS5NoVvtk7PS\nHya+Bm+MReZ3ltNB2cd6+qXQcDU4+bI2/x46ldXxg0kJYTx4E/No9Q+Xs2ZQ\nD5N/\r\n=OxUU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdcM9tb2rOvLm+H+6MipX0f92PhQP0cqPk3fjRptT31wIhANm35LLcClLAntB2tjlNTGDGCECcV9qR+XfMWc9H1XYf"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605730357-284519e2.0_1605730505051_0.6093203465235575"},"_hasShrinkwrap":false},"2.30.2-next-1605780744-0ec75768.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605780744-0ec75768.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605780744-0ec75768.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605780744-0ec75768.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-I5cxWSnU9sbQB8dczcBvW9WkngsYytQputrqyptomCs+AnVa5YzjNUX5OyA5eE5sv9bd8YSZ9MBJnXDqA1F0ig==","shasum":"f7efa583e14fbe73989fc763569d7227feacb289","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605780744-0ec75768.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftkWhCRA9TVsSAnZWagAA0bcP/219dKcMe07SVsqmuQdp\nROL1c02h/K+PCjSqWi/660x8k6RY25FirmsCrAMa4enIkEtGisxR6+19sTdS\nVlUZdWx++aavcXayqNli82wPJV1Rq8vWEp5ZJ2Kidy/2dOL+lZn1dBPknDAI\ncWsDp0oJ0Dvv14Dk/FVWrfTPs3bEQcO0e4dq15U7DTzEn2elyijWGuPTqZTF\n7tMRK8jGDhuZ6TYlvuLV1PD7Q9CsKWAeZdsU5HBic8dK6kIhgojNE+D5Lxpv\nX9puzGle/vfM1UkNFuGcVyoWy1/xMtH4s+66nuT17YfsMvNExVBJ/JZPiiOi\na1hNF56Dj+vtrpjc9QSYnhyrPSlbqe9QLIl7y82tvM7yCLtdexXo/Y6mfuIC\njJqMMAdc1gpIi25WS1wTImEkH2M304F00Q1l9doxDqJo+0KSRbYJ/j7tGn7h\nbr8qYst1JovhPxrgqM8in6iLvEqWv3LE3MocYE71oC+74xsMeZHS2MvjNvA2\n4OsXtizTWO3W+xzjec6OHp4E2aiVSx6QzcX4ABuBgDAZweq533JeJFaLXHj2\nnFwoiVmYxFFZdVWX433AR94Xm/MCPTAPRwAB7rK1VCNCkmsIvcaX4DuH6o9G\nEsVMsO5Lolz0mUPPLFyr0trvE/wpf82jXPOzvM+Kj6/iYJPctkKX+Uj5LtWp\nKtWs\r\n=PXmS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEjd/yS7EuYLlSO04XZBbXA+SOfPBhEk/5JZmtXvuy4HAiEAw2vPcs8e3V8U/cN+Z50ISekGybAKHWmbuji2oJ6OzJ4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605780744-0ec75768.0_1605780897297_0.2966323968550588"},"_hasShrinkwrap":false},"2.30.2-next-1605785618-5c882bf8.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605785618-5c882bf8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605785618-5c882bf8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605785618-5c882bf8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wpjhAOcBeaF+2fyhrehmo+yFXNzRrKKAZRh3UtgmKQYY0SoJKSknySZli7+hSqQDGUMu5Pdxp67tkUdm1r81Qw==","shasum":"21e74d7e5ff407aedca652bf319aae35d318a417","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605785618-5c882bf8.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftli6CRA9TVsSAnZWagAA7ZMP/ihnaEiM0+avKVpOQ6D/\nbdD7SWVmNLNVou5Jz6ystMFH2W/5cKJHJ77AdlK6A7Ljh/JrQ7kczYwcC4FP\nifkYmbhgJOvgMnObWuYgKdVD5Fnf2MN+gKUvKcJuneHvg1a3d3VAgcgKJPYP\nQwRLYAa7ra3KxoBErUQPWMlAVgZd6fv5nyBjCK8a25NhgYJil6q9+SdcnZAK\nYBiY2f6sqkDQBkxAkDXcB21ySoW7Ryx4/SDVoVcK4S01qpOFqH1X6SFXT/p7\nmfopAuduuLTFvvMqwdvnt4jdjuDQZDlj2ciTSRr4gae91JCWzCUsmq7q8/vG\n8qbv+mpCkH1bMMPsotDfy1WFGC2BZkHM79H1rCYXvgf2zQGHLOV7kVSmJ0ut\ndYa177dcWLV5NgLuI7BEwwP/+gBCdlbm3IWNeG0u8zZutzs61EfZo44CXq48\nAdjnbc+6/ruqVE9smx8iLJjCw2qx72gIZnLciauV4G4UQ2RWvEoHH7ccxf8H\nsVPKL7oXbe4UJn8c4qzae11Yj4LiSen5+Upuqt7pGRhc27OVd2Ezizns4FDg\nx+lkdg0MkGF9lTV7Um/EyUUUFNCOtSGBa41dOi8XJRlSOe2/gCxd6aIIPJcX\niAsTZbnb1HT52kyj4DxUkfe2Ry1BtLSNk9g44+r+vdG5oQckASM69b+BtUEu\nE0om\r\n=Uer5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4YVUmTf3wUFVEF41DfzUDsKVh3JMQjF67kRsq85WOcQIgcJYqyQ0L/TITqvO3gDFt63YIx9Ne7F584nZ5NOEe1hs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605785618-5c882bf8.0_1605785785544_0.16336536401334212"},"_hasShrinkwrap":false},"2.30.2-next-1605791444-8cbe65e5.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605791444-8cbe65e5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605791444-8cbe65e5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605791444-8cbe65e5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-SYBjsGOlRBKwJedL+uu3+/qGV9YEepp9pDM9NIKGUw+vbbc6hrXRTUVRP++0vrmNyiYdLk733csV5yGKYBdyMg==","shasum":"9355469f100be5a97ca6ec75b8b1344986555442","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605791444-8cbe65e5.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftm9sCRA9TVsSAnZWagAAbeUP+wUqu+VJC3eeTFH7lb4c\nl3Kn2T58DGttCve3bR+b1gbbYmbrVTShlxeqVk+Hji+IhWG/y2vSjmdK15Ai\n1OZiZ2OECoJcTxB3/lYQTmntlI932NZQO1FIQ1bT6h9Pw5RYysSmsveA1coy\nkXgiIxqaj+1ddtl25uyp1weN2dEFautCXKIOeg0aiqeidt8fbf67kkIb9LvX\nbu6YH39QCvB+TK6QMeawHSnt2q+RT5M1B/0MxiSMUmPDyYnGD72Qh/BGNPWF\nalyQ95vX+NefbLTNHsnDUAnUCFgHFA0h9JKUhxYUUoPW0xA2oe4OE8sW9RNw\nnaB12tIuc35q+cvu7gPjevuydhsKPTl5Fxg+gNW6tBJhUGuDiFbgy/nxp1K+\nahnZe/JCMp+kl8bgWtU9xkCndh0/HNz9QsmaIr943l0O2+ROHoQQ5CJo4plj\nxIZCZLt50slkF9Gnwjhpxy8zzhiYW5GqLQRUPBy1ryViNg3iaZnWQP5XYwuT\nRoV3H8sG1VOZe0Yr6xvKK+kQ0fYrUkNtkHuMmnGoLg/oqg5xsHaOWYxZ/Yut\nbkwHx09oZVONtf8cSHDbTk297IawZb6EHhV1wcdzTO0TUWLUApRuT6s6lD6F\nwJI1eST08SXJ/q3nUZUaPyqpFVyqZeV3xh8xLktBMeIoLt5B8hY5oUWksoTU\nuPTg\r\n=6BoW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICy6MVhtSkiYYJxVBVBzqQka3XwkkjU3x5U2evXcv/dqAiAOtcdORJhKFZq6iNCbNdxpJHtwxhixNmEJ5s0lTmspXg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605791444-8cbe65e5.0_1605791596263_0.9325360568280952"},"_hasShrinkwrap":false},"2.30.2-next-1605791955-8170003f.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605791955-8170003f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605791955-8170003f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605791955-8170003f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nXgPVBoJorcqi8O0HLfmMBZPv+Lu1u++8jksAluqAoe2WDvRuaVe94AiVPXRZv78DK6HgrqiMYLLA2Vk/cPSOw==","shasum":"ce30fe1b4b3312410fb1645384251c9a8162a725","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605791955-8170003f.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftnFqCRA9TVsSAnZWagAAkJgQAJKHx4z0F8Br71zctuB6\nAx3nAIjLmJzOGNV/bKMADIvaxChY+CSYrQjsDcIu7DYDVV1iAkz7Qbq8pYAR\ndzgr+HYd4sxPhryVwZfloqkWzWkZZZDVe+MfqJB0PUfjT9KqgZTGTJj3gQoy\nK9OlJNCo21/7Yd461vO4IvisTsb8rCvSASGqmZcM69UZ3qj+zhdhvITIkcJ2\nf8U02xs4drNNP1S0oAnFZed8YWzNvUPP5Mv25cPMr9aCUOQT2SjVsEf5wUHN\nNCqUxIapufULMqppLnmzOEE7Glow2kexiH8YqMt635RCpIXSeBh7iX3sAmS+\n8lp5+XAx1YNAwZ2LYFv5oyBBXKbhYKYEV6PcdOYlMICq48fr7+VDoG+CV2J5\nJj8vpOr1F1F62Iedca2hdL4UEpTsRmzpRKLFjgIwpwlRP95U5KmfNS+yhrne\nGt1iR5JwLmpQBawWyz2RNzAojTZ/TBegCVadEf976rnadXj+nVBfVDsYIJDx\nbL2Ln+iDH3AuXSkRCnONujhT5KFbZ6leq1drxmCmQHMpXsgyhezf/4NxKJIq\n2OYnLSuk78nt7stDdfgRVqhIve6ihOn1Ve+0PByulHeVOwFYJmjh3scVV7Ky\n32Q7L64FF9JDQp+jpZig+W3080UtFcM/bJQ4LqV3qEqgWNY6tEPpwgzJ3mMj\nMqEA\r\n=BC74\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChh2VdpmEFLFqoS8uuF84aOuD2gVn7E+lhOtOuurlfrAIhALxxGFVrcUPdCcRLkgJj8WEBXuCF2ShGTIHuZvSFzgq0"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605791955-8170003f.0_1605792106385_0.5924162031004461"},"_hasShrinkwrap":false},"2.30.2-next-1605792036-14bc234d.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605792036-14bc234d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605792036-14bc234d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605792036-14bc234d.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9XlXvHNgQ3YmwYAZu58a3km9GutvHqhdLTxjIHqcDcu2JEdPo4VBOV4DlE6IrpRIsvQa6IPs9pKx60hMwpyuAg==","shasum":"bb3dcd33221e0cd9be7521ab07a8b50851ed2849","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605792036-14bc234d.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftnG5CRA9TVsSAnZWagAACp8QAKBchjetgPd6NL83Jg2D\ngFKvdWD8mogbdaXmGuLlRSZJL1GVLe5j6AN/XIheN9P6bG2bguxnmwwN2uZV\n+6S/wbZZSpV6O7dTJuomMtGgwhJXDpE6Y25h4LaCL26VJy6XMaTJ75ki0fMQ\nvW9JXSlRd9JuOpR12mPpQG5T33jAK9+gf4Mc2V5PK03+6cThOd7efg8wdtJJ\nTSpk6JSBgbt46KvpzF62KwaXLlWMktaJHcbOHW0s5ZYDKKr/y9DjsGgbU52G\nwKuGLo+Oa1sZyAmiVpnSFfmg7OGGizPUg5I+hJtU4Skw18hGb7ko7x11J44O\nYF9isNOvAI9VbFvyj3uYNPnKt33YZDX8UY46twDmNiwWcyjGZ1zbrP6u4UMd\nJlAm6QOiqmZa98TklQx+/CIqm6TayeLTuphhZ9dp+gc9Yks4Xtw2yMUnHgdA\n1PFUCbSsjzCPQlrweD4/KCHfJmZ7ojMLRNPJ05yC//hCtUXXc1EvoUIjFAiC\nHHr/7jeuqSYjBy4WhqhbUJIXYUxm/RC3qmSoKAvII8qskW6Y+nH44Yye5nEX\nkbRVkT+VV1r9B9y6w9fiYVEUWk/GsEh0KGa8aBOfhO8M9GfQOjvEjD3U8WdW\n4mpbpKISgB2tqHicO4lJq6sP35Xj0mFelgWBR6CoytO5TJXpKKdLFntFOni9\nsGnP\r\n=HGqU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFbNgL1ZR0vlrQ6I9dzRw2C2/IdqpAJOKkxC0p4Wj9afAiBtLXexcbWWE48N8mbRf9s5BXI+EJq56PN7hPmVB3Up+w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605792036-14bc234d.0_1605792185041_0.4331189989539299"},"_hasShrinkwrap":false},"2.30.2-next-1605792189-8bd0e477.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605792189-8bd0e477.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605792189-8bd0e477.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605792189-8bd0e477.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qBD0ZhHSO9FxrfRmSgvJcTkNgmHKFSWaAc6KOw8O5Z4PZqoE5T5upKOeHEJCuXa2Mjkk8kf0NEByc85ukePJ7g==","shasum":"4e6a788350c269f61e4d9d4153be4f3c0a6820c3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605792189-8bd0e477.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftnJOCRA9TVsSAnZWagAAJj0P/20iEb5klXJ46rwA8T3u\njYD3YrGx793AVPBc8X0zs2ugn67h0ArkV+qHSNllp8nH5np2n40BPpStRpuP\nTSJS2HG+h6q6PILJ7Oe7qpLf4jPQ9t+/wxCM0GZ4qh1PnQLIipXUF5Ze6mfK\n4dyC9VAx38lrZQ3AK5tRs1KJAI/+gYLtOxkfEM6iZftezGS255Tj/LyNVo/g\ngVy6TjOPDGf9gfAkVgZWnaKieBLitnNs3widk8QMIBba2JmnDDDeqdXzzsP+\ngjRT7C53/W3CxKNbFCgumPdfNcTRAVe5a7H39to4xM9aNR0DxOc7UljQkXqu\nUjvf4bqXqFZMmR2vkIx+U3XoVQ1KYoaJHegpLFjew4oTfN9/aYVUxIebCVUm\nJKyLs8GnGjQv40Irsi6tzo8nhRgKofGprNYnCqTIDZE8KPFVFK0Inp/UtC2l\nHz7DL+Ij5bEz/Ec8Bg+Iq0H+GRZSf+J7eDeDQSLcflo4Vcd/bbr3rwg1ruLs\nPMKCJRKLdfXE114J7IlqQUY5FCCTtkAeBntsnezhILf+1+8D/LWVCkJ0a+2s\n8y5VhkgmYEHv5p2mJwENQs5oujucR3rRZAnK6Hl+G00mkwRd45TaJg5OW/n0\n88qJKWreS9ltLkfUQ5rz4TkLAtRpSAdLRFqoewNi9w99fTPqxRnVU1HjrxFc\nkVXy\r\n=lik5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2p4lFQebqpoT2ZTxToyPsGfRNK6r9ad4D07U+oig3nAiEA3sZOdSAaK7WLhvtqNKmJGuJgPS9Q0uknQM0QNbSPOB8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605792189-8bd0e477.0_1605792334381_0.16372761315299877"},"_hasShrinkwrap":false},"2.30.2-next-1605794146-4a420e62.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605794146-4a420e62.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605794146-4a420e62.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605794146-4a420e62.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-blotlU1KpXTq9PDedWwMO2L1Qy/r7DV464QZA2RuuwROrjW1Ng5k723BFieKaluTqeuv1neAxgsbARK6pXeQSA==","shasum":"9987d1afc28449afecb951600ff56cf6cd8ddadf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605794146-4a420e62.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftnn6CRA9TVsSAnZWagAASXkQAIWQfysKi2Vq1Y8pXT36\nULnN66vRh1jH+SWhM+o3dBUPe/49NBrFtGIVc8CF+jaB2gkUfsriJCkMjBEU\nf5ykJwRdRb8lwXzRP2ETt7UVt1GGavF0Yojie0Xp6RiSsebv6ufdLb/ichsE\nDU6ENdzG+q1ztQS+l0gPd7gUXbEpP+c5vQEAnafoVj44w+2x/ZuxnJzrbBM2\n9H4s15CrPnwS4Lr3Nd2IZKWqT7oXVYdvI3KRA6npTqIZVtQAPEKGOvpznlus\n08tBGRUTSvtB5uC6s5HNCbOhl5hF9+WLtgmhtq9LuZOScr++fKIB3x3q2Npz\nJtG5sRunVxJerRnqL4SAYHgFtcnmMokd0Syrs3t3oUBxUqEdpzIoGw0SiCtw\nTbnT+Egto3cwm95v+TQgkzX/xDmB0kSl/im1piM1Wsxn2kg7AtOMTk3K11Aq\nx4LSpACNSf+nAqWX2wyorahp8nBVeeled/tez0aA4FZtNRHfuc7LcITt5CWL\nIcR8jZWouw+D5EzQkyT04x5j1pXj5X8aQtgFGucUgt//uQwoFY46830+krzt\naES2Yj6fumOXJy3lpy3Ui8nRFlI16380/1hjClOk/BUjkqJmoYIsryRIk0gs\nYYPoq7rxJuQllmLcw4NcOvKj8doFxQG8JZnkQV6H1lIP5q4nM7NUzsvhuzQa\nKGkF\r\n=ezPx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCdG/WKRYsaTHXrdUhqVfMLKPI8tpweG0f0YAuWXD2UgIgSB5UXmhqAjEKAAGtZJHGNypPeDR2e1j9PP9lh2sHq5s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605794146-4a420e62.0_1605794298464_0.2964415123434745"},"_hasShrinkwrap":false},"2.30.2-next-1605795567-3fcddaaa.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605795567-3fcddaaa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605795567-3fcddaaa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605795567-3fcddaaa.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/BhNckolSL44nBZOW5Z1q2nS1JX62XuduJhM/7DOtbAIEQVgUAIsueD6J+j5AnLkzIaJX6AP2XJztjdrwJ+7hA==","shasum":"9e716bd61cfb749943df534a463963983d0f7026","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605795567-3fcddaaa.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftn92CRA9TVsSAnZWagAAEZ8QAJI9/aW0KUJn5JsgLjff\n5Kdft7n/2Rk0Oktm/0rdGrbqjeuGOFuiZyyMowPpsVOwqB0p8mFHvVLrXiUD\nBhJSBMx8E4re/drb4tu7myRlKwVGtVwunq3E9ANYeaJhDkNZiI+SqrksHo76\nJirJ19vaLnbhXOCPye8/QbRh5xtwP5CAB6sddCQiEVJOhDbaW9Skby+859Lh\natWXhp4jXvTRzr8tBWArR6c1OALq2Es3W5T4MRITic4xu3iMVnd754sHUtyx\nAjLcxcTlS7ppxzno1ZN+9NUaNbgzvF1nrrChbC67iCsyXWYycbJxk1zRFCgH\n7ZoHdXP/mjxbccJ9ObR6r2FpJfBQYrOgbgi1VxIgAbi9Kx7ZqRi7d3n9xLHE\naxuRy584Ct1DkFdB5Nt6FkxWSFglXHzA3cA0Dmyo4Mii+s1bLrwfAEJErYyn\nrRwro6bGSVsQLNgidXEMEwJOCwDA1wn0aE3/wj5WaDRjAlsmVVC4IYarqrvi\nOmM7ggiuvw21OICGif1Ck4C+4VbEOOekD0D/crBsgTQXliMK7QiucaGwgBvn\nJ31rYKHqlLhwSW7mmzyao92xBb/honpgdXmN8T24/Qck0kK5mW3/PcrT1RUy\nE2UPbfTeb61uU/mS0IkkiL1Nrw0KpAe9fXvT3oG+oeoNeVM5m8aTAFLRwASI\n8jXi\r\n=qq4C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFrwJ4zqpRiUlT9ow9mwOhFZV+hcPzD8T+jNz5NbzTeIAiA/EJXsQ8GqD32VHR1M1d6WEfvqpP4Z+Z3oMdrQbA1Q9g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605795567-3fcddaaa.0_1605795702191_0.9450434409054789"},"_hasShrinkwrap":false},"2.30.2-next-1605795657-8bd0e477.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605795657-8bd0e477.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605795657-8bd0e477.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605795657-8bd0e477.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-SnA01ZXAStZ29gNacWCo9DjPRfxInjIdi6wU9JDdLx9/B5wOCRuGQ3BMJ+5qAuTGvm3mnVYqcl5Nnlrt4LphHg==","shasum":"42c15fa00617c00cce71fa8939279202d362d00c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605795657-8bd0e477.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftn/nCRA9TVsSAnZWagAA940P/RnMtiFNaXgPdD+5CfhO\nZtqheQdxiWnZQ4EzE+Xn27HdS2O8qZ0BDs8J1+EI1WOpBTUjpGDbNZKki4fy\nxSDNsxY20bjOHGYZc0GFxioAGHaQlx5NfvE5+gYMO3OAVcEUs28igh7YeYAC\nVBX3RkXWZeQYk95s2QPBPJzYjlshOHlzQg2YXID0ZIwP3KrP+Q5XlLTkJfTM\n8woMFPCyP1ZNOWEBEWTWnH/cMEiLWD8ePj91Wtw0lJ52+R3BGCkd5+9zavG+\nZ/i4ZlX9gWSdDh+jYQh9hqICQc5nBjl8frYJAAUdNQ50Cxol3DLlBV+H7m07\nCdJPJrw7YiP0QrVBKdGJR8tnwrfSJfVOqrZ5SJzUKHh6x6ZGMH3mJqb2lv2T\nitkBbGq+yb1MHUrF2kznxhPXuwTpVdgoKUZDYnFnNoowt6fEQB6LbBtU4iX8\nctwt2lyZahdB9BUxJaqgysHTeOKEJg6ynqLhKr3dA5VxaMs14QBgr6peB+1h\nvKnrAReFVF/pNCbSQhN6zlVBG7MwvTrgVbNZbdm4apluQ+qmkMfl7DnPbMQX\nNgXlF3LTnx1pDZEBZzvnr3+Nk8+zUjKsXmE3kYy0aqWCzU7dP/sMtn+3ZGB4\nklEpEYwHIY1J0p0SSgFzsFSRbiR3H+54nw18ofBtKr+NUhOgX5cmThjsg5+1\nVkOV\r\n=btVe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqh77T9wdQINuK7O+Fi3vt7G0pNKC4zbLDuMP2JeiLCQIgSUaR85zHbmOqEA6B1u/Lu1fGZOVT/BNb4278LKdezSM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605795657-8bd0e477.0_1605795814951_0.18957623111241473"},"_hasShrinkwrap":false},"2.30.2-next-1605795737-050798c9.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605795737-050798c9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605795737-050798c9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605795737-050798c9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tj6Og/+uVVgpwJiP4bCTEXRHAHKUXmEwi+eGSpITagzoNhmiUyIhpNvvEC67aOfUGHl9Is0iLl/BG/4NerT2KQ==","shasum":"7bba1ae20dd0cad40cd8dc21910a0e400b7b62c1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605795737-050798c9.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftoBDCRA9TVsSAnZWagAAXjwP/RzVjsFqCXre2XKn0opM\n7mVdvxri8qLFGXNCmtIuZRqBmXXq4KxTvZtn77lgCySCAZI6c4B7tZQN0ov+\nJvr6dxSka0Ggx5EJmVD7BVgAQP3KTGlyPnlOSVaoaltiw2GMW4j5A3j3vZL8\nq3CBb1svBn3Qb/Sc7FrwFdUxg34PEVX0c9CYidDC4Uq8jUKnouYsmZ9zB2Yi\niepxbvJzJa6ZI3qKrUP+LnWyq0+4Wg+nmL4tykAMDSKlnlKT303I2eeEPGu8\nfCBgqxTGCeSaSPfzXXYXqxvdRASQGztdeo4rSIGDVh0ISGDpObZUTAmE4CmO\n1FghanK4KKzMh+Lv9Y0+EoW5OVkQ2YhldlliqHagX4GjnSjdB0niGwZtK73A\njb2XUzatq6DusE53DGSXf4//PBPoFp681GniEJFHpT/N6xsSk8mg2LoyHZ+6\nNcycwPwZGJzejq2sdXl+vzeJuqZcS4wMzCkyv7EKj7jqBbq15Ayu58hZpBV+\nnoRly3lWY7yoGthkDs3dCEUjsOzJZaz/2ObFM/dd7tRVJVVYxqBbyaze7g9A\nbC6Rv0IYBAlQlM8qMF6T6fTWwXVufHvBNI3WCxjL8qyWzAlwq+Emt8M+7+4A\nUna9zQ+24j/VYsi6Tf7LoiWd/NWHZOBK1G5Ga9Kb+fQ8VJb8fBbClYfV05EZ\nCapu\r\n=9BAD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+CUS9mi0KKM/zVu+i54AULfoiLHUGfxmurwLqjcQ1EgIhAMGmINpGXmyzDQFx2Au5vy0fmxzpE9K3FMIyCtebZIwk"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605795737-050798c9.0_1605795907139_0.5320351209861496"},"_hasShrinkwrap":false},"2.30.2-next-1605796230-01562cc7.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605796230-01562cc7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605796230-01562cc7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605796230-01562cc7.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/GmiGoRcKzx4OJFpKiGyvKd1J679HFM0Ox5osWINbGQCIWrHECmw3AMacWlq3GpqjgCVonqE5pXlS+GW6RJsZw==","shasum":"56d2b5b1ebfed060c425b45934a3f34148ca4b5e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605796230-01562cc7.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftoI/CRA9TVsSAnZWagAAwJ4QAJA5bLrBpsAnGbhBMlg8\nPUkk/sd3wDJBzqwFJsTsN3KRsE3E9YUNm/JFCSlUqDdZZiCRmR+6z3ONQ0V5\nriZFqny3LgpqdiwoL/HAbMOb4xLNg2SDvt1ronM8/zoz8WSlW7tzvSH4Xkdh\nmA1H49mpbL+iu6y3/lXL5warW1nDRXQeyAH9o8tOQf6wgOhyw59c5muKQDKz\nVT16kWACfUxhB3mfNh8fZ2SBCzRMJAOR7G/YG13xrA1ZXFDIuXnneYeTz64L\ndiWu1EQtPBe4jpWvFRy2m21w1caqySha3jcoLQKx/i0sF6lM0pHtb9YJBdsO\n+TWZ+6sFoNRGrBclKoNRsnBg4UDHILIps0IsWENOnsdMDnKIakiQ1jT1leAL\nHiWGreHn06rfWsZoQfZ++IDyg1Ing6oAqzARSvIydfcLLZYvOPbL7eQtdasN\nyR06doFpWN+tW+x5SNAgVrANn5zpgvTZIqxzypKt7W4yImsMj6H6IT6wvqRo\nnnI6Po1ikXPASd/43pItzXJ6eSWxdujG/J05tRkD/eszb7JfcfiTh3B/MdfP\n2U5LtaHhrBZ+FZb+ju6YM4JIRM1zCw7vu0CxR5PVyATPZHZHJ5QNp2Y6MCrB\n45FsmNasW/ObiA7Gr274o/sqPMLa5clSkk6uf89QRg/TQRAY138jTfprruME\ngLnS\r\n=F58e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDonvsPC1+V3clHlERaYkbc6PeU3RMK3TFuOOfDIwCr4QIgArYG3qAvE6mPkUKPVrLj3NBtTZv6nWLt3HMI2o5o0xU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605796230-01562cc7.0_1605796414782_0.4504521776785375"},"_hasShrinkwrap":false},"2.30.2-next-1605796576-cf610ece.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605796576-cf610ece.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605796576-cf610ece.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605796576-cf610ece.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uy1pNnvniWIkbnOB7VmBap/4pD7d6843UrF+OPdpBp0Ng5+G4AdFldEToEWuGBjUsb9D8IprMOtFcwRdhIZoCg==","shasum":"bda4c55b0ebecbe321bb36aebaa6c52d850acebd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605796576-cf610ece.0.tgz","fileCount":58,"unpackedSize":140976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftoOHCRA9TVsSAnZWagAAOEkQAIwJIjBXIY00e5DzAoZi\n8KY3ct3tsIENZPOKSZVfbQD3SeJqRYQ9EEGkuZKZ01eUNiqSIWltd/smTXB0\nwOY/Y0DS/Q0u+Ut9ZIdLLoqvFObux9ac0qM+fAoFG/Uc7E9bBQg2+e+C8xmZ\nXD48zFI8fQpuoF1kD2FhGijywEZ8NMP9pCrRVAltckBe5ob0S9po/1Sg+RTf\n0ssw/HTjnXKPBN+O3am7alBYXa3dY/GXfjCgANg5yHf9tcY4lD9UlZ+b4pKr\nFGxwApxYKe+t8kwWrgm4iaUeuSKeo1hzYVCkOjJo2xHuGNjA4blN7QvjATYm\nZuX003SRcGgWzHU0rUpRPG0GTOP1sR3eNj6Gnb5TYRKEUtmPnf3MbjO0/jNm\nbmebsry9vX1w7FOH0A/svd5qC1y5D3wqSyupZSPL3AIO2B6JppyYXIy9pFiQ\nZ2DvqbMTH+Nbn84dh8nSCQw8nMD2YvdV4XubdnPqpC2aVEAl2DQDievRGKy3\nk+z/mYG9GwtfU0VWJJ0XCfKBS4jzLS2/Lc38TrpEatgNZPhi37x/Aiz9qSoQ\nn4ZQy4PbeFT79sNeJfvTEhIdqfFDXg3S1sq2EA7+4VaFuc+CSJEjkWemLJmx\n9feGK4H/HmdAJqo9jLxH6SBVQnG2Itr31iua8t51x8BwdBfLPH8muXI4I+V+\noubv\r\n=D4bS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOyVqvciTUf+hxVY84iuaYtdqMUjKOdvV584nSapD3vQIhANN35W8+JHxQ7QIJLtLtMM/ompoPZoLXph1JI2/HC9Ay"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605796576-cf610ece.0_1605796742870_0.6659321290663673"},"_hasShrinkwrap":false},"2.30.2-next-1605798346-8bd0e477.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605798346-8bd0e477.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605798346-8bd0e477.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605798346-8bd0e477.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MSToFpbJzSWLjLW3f18oasJ2ui0ScrZIa0l6xGf2DAwCdFeBXcAu8XhoDqEIuerz8kyeu5J0saM4kX180qss5w==","shasum":"071a71654b82bca575eb892023ebd4e8cd1007d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605798346-8bd0e477.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftopXCRA9TVsSAnZWagAAFnEP/1dVymEX8R8Z927ME15o\nbBu94IDNxArczdZz9FptSum5JAMYaHqqxQlxp71jpXANUTjVAKb4A53REaV3\nKXWofFmaEmq9wAFq4LNpmhGWMvDDKYgboi/YbqNV8u5mix48iVcGJmcSnvC+\n230AOpZEBOA7LaqyM77kM5zCmmbRYWbLDPfoVP/b5xDM6dYm6AVKvi1s13aL\noNQnNpN559XKGKI41g4nHZH04pQxWEmHba72F3JZOysnaFgOiGwFCap4S9dC\nenX78dRW+nFVOMGmJgr6GrXvtyTADrgPbRAPfz74qOZeqgZXdc12Y3ePLma1\n8vz9iQlKbokYVgP4+F0z+MjG+fJwwc47eSFoKTgy22tzMBZBXAt75a/Z3dY+\nRbszlgq0OP8pa6Mi4ybpM44rnsUFZ79aU7n3Ii26g+RVvdug1QStpCgcQcki\njxhux7N5uzxgJOChn4akXtqFjvQ5lAT6Pxxrvgm7HN4Xk2IExO6Vqu0xGoVL\nvxNRm/zIhbN+Xir1k2AvWfLrxzwfaQEXZl0SJ1uUciik0V7o+vdm/oHJYtsp\n0Nyhguv4dxUzljYL+7FuXAPqDtr4BT/0ryaoXKlME553/BsxTLJBM7pLH+DC\nnDxbnMQirrRRrecCjO2Kjkn+fU17g/GKvo/5+HKe8mOtDlraY3U8o1WSk1JV\nASCW\r\n=7SB4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqXDtrVaK/ByDMODvb6yRDBUIYoevaESDxmvddX4ewhgIhAKxtHzqrlSKSCiPB+PqmqJcHhOT0rtHIocyusIkcIUM+"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605798346-8bd0e477.0_1605798487204_0.19431123036142806"},"_hasShrinkwrap":false},"2.30.2-next-1605801235-c6e7a5a4.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605801235-c6e7a5a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605801235-c6e7a5a4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605801235-c6e7a5a4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TdDHq0OK4oun760rF8oN7p9YGiYYPfLxSC7EfDXCzLJD0Bb1j8/ojTOBgz42guan0+CqnH0bDxE53jVTQNyu5Q==","shasum":"8d77207125851a7c82fe80e0f3b1ced9a534535c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605801235-c6e7a5a4.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftpWkCRA9TVsSAnZWagAAC5YP/jOulA8lDjgX941pE9hb\n5uMbOgi6ohazAXxK/sBPa/zkESNgE7VwkcrVpB6Tzh2R1FvIk7rDfox5NLci\nzWdUKZEn1WGXdD2pOeAOsVM2F1f1tflnGV5lGzEjvh6dBqlwxwJb/iO5EFm4\nlKCugwgAJonjb7qx7J+QVOc/fXKDY3V2rMszc9lWCeGsMubBHuWVw6hdKSkv\nBmWBe/pqKSF4aiL/HoUxvgagCuCXxdsWtmwbT1aDdH0FXiH9poRP3g7iXPhO\ndh/j0o3HkewuUdMpTdszf1mJGfOwFeCJaC3QmlWwnnp0HiUhToVjosxjPR4W\nMp8XjqNidFfc+/un224jjzop0O6J+7WJ/2tXCOFY6dpNmqMFBMGgIWk6nGq4\n1uIH+/3Wm+o8SSc5TWmkcr8vzGFdx2kxKllMXF2aDkYUDwuwVOFYGy/qxDp0\nMGqYn6iXozIqV4xSk24IASHxAUkNHLb7GzG6JvxD72qMlkv1Oj8OhnqlaTma\n/Xln0YaGyQmPuRBbiMIosXIUtW0JOczSDznkWm3MCQT/CqztJHfSFB0uY1Ot\nNUR/63A93PY5UrPMXhgdvvzw0vhKfckDnFdUr8JsM4DUX4XOOC25CgfODvDa\n7jvfp8J5qPngFYTXN1ZLAsGAbmJkobuXuKYksaLVKPCY5UCjfowDcaW5UZH3\nNraR\r\n=Hiyn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDyRkt3wUPyx3d8dRzkC9A5EjaDjtijPWYBDHwdj7eC8AiBplua0or8A3NScFv4h18gXFELoCQ9OPIUqnYNgDNbZ/w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605801235-c6e7a5a4.0_1605801379676_0.6880734561430999"},"_hasShrinkwrap":false},"2.30.2-next-1605802915-603cedd4.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605802915-603cedd4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605802915-603cedd4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605802915-603cedd4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3YPuqyMTlKk6T26zQYpUcPhyTIvT1FLj19v93bZ+amEo/D7K7WAa3N2hcMziP5GwoUIq5Qza0kGcMlTFT93JoA==","shasum":"ed9e8d22366e75d702d57fa738ca257950dade89","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605802915-603cedd4.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftpxLCRA9TVsSAnZWagAA18UP/ik2TCzN5xRvWz781Knr\nowO9xD9Kprbr5M3N4FY7YPytz6bTvlAt5kFVy+SWW/ivT8hcSMishtjcEcua\nFD2ISVIfLJNoAcM5tRfJ8RWh6m7EYWjqa6lxbmw4DU/9uUQmw8GBd0JRpcep\nbaLnFL7fSY0iy0l/cQPHTTZZh53HTcjnGpyJJnNmklbzHbJZyrW1sO3j0h4B\nCaRZNkn1M5xEUtMkvqIBJ71kISnGo/dUCDUqKFp9qmtK8ynmfQ99i340XkKy\nv6r2wDGMjNsswhpwuPYNASJ03FOz7zgJfju1nJXu0nnGdJyiOZ/orQIuzy80\n4ntc2HVoVg2mIOQ7ueYF2OTCFlqYD66kjTlZaCzmsSSvFpuSP63GzSjxzIM0\n2kcXVqHVOQglqTdO8VebSuVqci/t1qt5QQetkoBF4tgyXjG7YqEckPDd07o2\nJPWHtEwKL0um6h/+iwuXvUv89wE8ifdCI3m5q/mZ1QM01KdOKahB/zLcdeoZ\n82U/A/ZQirXZ06PA8iPHtkBGi8MrvRaW+UY8a87dDMMkQxEfx4ESN5qatVHG\nhCXb1QZHU730HXT5w0IQf1WdNYRMCo6fwyu5VyxHfiU3ICOiZA6GmBp3omRL\nG9pEDUM+qLhoAQN/US+zwAqVy6zVuqCvgD2isfZoSI3Se4HX9TOOHUxgGo4H\nzb20\r\n=NIoT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPwfX50LZnYPrLnp7/G1WkkRgcfMwsj6gdFy5l0+LLqAiEApN00o8V0MGMAOtsTVTXocfykhzhDa7+Sp0rGcD5nY9w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605802915-603cedd4.0_1605803082545_0.21533727660314717"},"_hasShrinkwrap":false},"2.30.2-next-1605804099-6bb1c40e.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605804099-6bb1c40e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605804099-6bb1c40e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605804099-6bb1c40e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dR4v1eiQ1UMaUiQWcVJHSe47AyYbzcf1MoYylQlTLqIMZiStsKDIDeqpQrzY8JoHZmrAJqqQcCCxBbHyVrfCTw==","shasum":"aa72b621e522450339898fb82f65e89f2965981a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605804099-6bb1c40e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftqDXCRA9TVsSAnZWagAA+EEP/jKhOA19jvJ9PC49tzSx\nmIBv0IC4rBQe0y+hKa5ALiT+rT8H7HSA3OyqdZtzZGVx90qqqFlrCMSZShgs\nlcrxDFPLZ7hWA+Czp4klCGjQmRYJ7UcuuDXyQLEfVIId3CzZe5swKkZUVvL3\ni9ym+65f4sffNhF71Kp+knz0ceoq9/F7jU+2mDKgE3EX8ZolF/rUDVf1sBBk\n2+tVL7hSrgPq8gNk+uCNdIznnTMXF31AhJYN1EXTZpDbD21NfGHwZOpinPgU\n5EdSVeT7bmceN7h6pgPuQZRJHVofUdXILLY5iiwNutPyziV8fzX1QurLMaOB\n4a9+lYgN+VLHqw4oftmryoOnx3Kimf2SHN9wfjPgdABUn/xRGtNkSQJVqLrx\nQiRvwaiCU5lxIGzAP7aNYhJTBZClyMzaTcJfOWysC6n3eazafmsmZNodF5KB\nbtyKM1c7kXO+p7vAUjitm67QRTsF2VMtFn8MYbIES0tHAudVnpxyktX06WP2\nhMOUw0rjJeI0Y9noW2GUm0/3jRORw4elXDEZDlUG8J2mghSTqRQIkTq4WyU/\nWflke0hyBsdDawexyyfCel4aeQIwt8SPnoXDMlOtsf4hclrq0L7neMi92xJ5\nl2KsZKdBHlhtFo1Wz3VqwcsnNI5zeXTuGRrMZIPR0RnF3WEQVkGiVtE1e8Sd\n8+MO\r\n=JR5W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuNGO/PTmO/3aD5E9JANx1MI7AevSO7Pm/UdTWH8y0BQIhAP4UxjzcppFJYsZMyBs/NE3vGb93xEtyt+HIQrffdSsk"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605804099-6bb1c40e.0_1605804246689_0.47716826410529545"},"_hasShrinkwrap":false},"2.30.2-next-1605858578-8bd0e477.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605858578-8bd0e477.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605858578-8bd0e477.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605858578-8bd0e477.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-caJf23yj5DoTjBCKSIle4z0VGyolTHj5t7Pt/vWH3NXS9HrOEbZJRLHZXphSVc922M49mw+dtQDniD3KoPVL2g==","shasum":"ff93c20bb0ad52373f1e13b4b2b5c4c19c1761fb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605858578-8bd0e477.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft3WwCRA9TVsSAnZWagAAFOQP/A8hLw/1Kec1g6JkOrWX\nMx+mY0nhboefTQaY8mL3pZQZbI/fyydFxB6WAgxD5DE035JSR1htG0NYFcJW\nx0hGH2qoo6T6Cau791BTRxX8i7ubpURq5DPqD0kk43uS/EUobLc1Pjnwo7g7\ntFWS9vJj3ipj4ssWpC1Y6ndaTVPRmwAvUVGDl5AE5l48jiuPT7yRyiPMRqC6\nKKLtpybIp3w+V9nnq0Rm9J8WhgB4xCQC6xhZ0ansNxhbO8f9z3RYc+8RFstx\nlcB3O/JKUFekWXptj78aFn9NFIhGBKoSekW9YqcXUSn/47RmAqEVx6sQZe0d\nF93YKXfV7fR3cGNCd1E6EHLXi4+afVWZRnDlJ2j1HpAimS3Y5skwGwUKEV80\ncLOSoG1yI2YXwe3dHa0F4DfbkiSHonYEWh+WVp+LuslMox+yW4me55mNd/JH\n7A5ANg/5OFtfYfbfj2/YPX5RokqFjJeKaaqqWfqdDkEI1vONf7ZOXJKa21oj\ng/p3X+cPxb3KaEg5HFiEjLXzQX9+gTcYoLXDTztyaouoQ6tX5uCo7TWDnEe5\nP6asTTohM6/u4RKDhHKyYH9PvyGTmMY/6+94jQdVjFJNjTQyKRVDV09BdDiM\np7/4oEslv0LMc9RRfsLzsfk1jY9KhNJTX75VkHBXh6CybFRpBkseXQ9uXQi4\nBPKv\r\n=YUv5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHenscJzzqv4jt5dVNL4CqPBDydWma2kznsN+gG9PrFaAiEAzXOjbwMHOr+5ndryrE5zzj4NW83I67yqLBzFJ3cuAtM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605858578-8bd0e477.0_1605858735864_0.3699614197279173"},"_hasShrinkwrap":false},"2.30.2-next-1605861140-8bd0e477.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605861140-8bd0e477.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605861140-8bd0e477.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605861140-8bd0e477.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zrJvUky0l5uXjPceD9i9XH4FsruW/F1EAVXwmJpgr3ikUc6m9CVQAz09jwMM9J/Fk7/Lol5f6rRYZaxafJSElA==","shasum":"b5c81b5188fbb86a4671bd2bc3d41e009c2f724f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605861140-8bd0e477.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft3+pCRA9TVsSAnZWagAAczsP/jIZlrffOkg3M5b/52bP\nemAH96zSCOKe9ZolX+Jvwj67npfqnbE2DaHWSe05plsAawD9k2fA+986o0tp\nY4+0cr3oJJfqm5SZF5Z1hfeGs7oHWQCEk1EsftVwrE9PtdxGhKfkW0OgSYvM\n0+4DJCnvth5LGLDlO6g2MAwY9Ciw9RMV0A9844QOkrRwGSPAN7hO/uCx+ey1\n05+Byc7QJn0zp4HBiy+PguG++QPQDa9hc5szwPe7RComTQ6OuCNCiHqGPEpT\nTCCQY1sapTT6rIzWkRn+KvQT013oe5iJP8mB6cPM32xTcNpz9VEapZWYdE+E\ntUAuBUMBek7Wq/UjyTtUlKTphv1nZ112miOCVk61gM+wKwQ7tTCK/gQrjq7n\nVFNcsDLKmQ/8LO1+ymYCG1Zq00TxRGfrUgYLsyoxyfPGxeGcL9wFLxQHk2aN\nwLWfuKxKqCY+an9/asetBG+PdBjs801W9ommpaFbp6GWllabbfr5h0n+zKwB\n066lqSaZ66pbHTT22Yudw1RLhpt2nzwMMz0oR8efczy1P2LWH0xV6UPEoTMK\nl4moyAWoqQVnJ/FEnOywv/4t5G4A/LmBL2HH4lpAm6ydSVas+IPZNQsm0oEg\nrjWAbIOf5C0j5ZbN+D7jtvRFoIDi3V0a+Wi52Is+wLysiTq7bZN+8H/3dQgM\nGEXV\r\n=1GLD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBu2sGVtwY+Srj+eL28it5Ey51x6v3uqj8ey+ISSb6UeAiEA2ITF3exTgTySBoswEGCR6ikmPaf4IcJ6w5mErqCNYf4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605861140-8bd0e477.0_1605861289091_0.4533607991359192"},"_hasShrinkwrap":false},"2.30.2-next-1605863956-7310574e.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605863956-7310574e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605863956-7310574e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605863956-7310574e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kSLujkEPQuHP2Srz/K7Zs9ZPowrQDml8EfiKmiZLBKJuuvVkUSxbjrrP5xX3RUbtCoAG14rpwu8DbNjdvPf8uw==","shasum":"3cc1b711676e6627873586c734c5490a97ebc505","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605863956-7310574e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft4qmCRA9TVsSAnZWagAAaDoP/ii0mXvRbHRryaqT7djq\nnUM9CYsIS3ysq8guPksHNJDv4Sry6YZj790RwVYW3m58BG/ML5A6ENlQpLen\n9KGlw4sMp+C7Najy0Pu0ORf2VeJdKDOWcR/yyvb/jKGlAlyXtybm0CRGMPaz\ny0uGt+V/hcuhZEXsGwkKSqtpy1Pg8kxBMw8xjVbkphBKDk36OhZ9TzXOi78Z\nWVGsmP8KSaX1iIB/rb2uKCmcWnGPc5YEa4baUgswxXNfMrgx+G56NogV9eEQ\ngTW8YuOKiOkjLRhD1YS7tbmAik9k9N7QYt43I54FKU+9L3l8waJbY9JLYCmS\n0/fjgExQmEuJncFeLfCYABESS6ywJRa/JRjsDv6UvuzZOLCZPlyp5Se3CnVV\nuzXvu+hHH7dIEi8+uJ58D6Tdmw9bx0f7ZA3t20HN6pCOOYgSSkkh20bd9X2B\n7u54dbVQZP9mdC8V5fZRByA4hW/y5XM31J7szoU1/unMvFx3vQiiI+v79yp4\nin5bBnvbcgvzRZWhWhgCtfwuhbBtvTGnFpp+ojg/NMLviA0/nZdphOX4cWvC\nM8JA9e8/VFFHTvBHJ6/nOATlOPcvTK1oJ+RBsl6lULO2026TfbiC6q64phBG\nh7KLYQifD+8VVHuso/ONeJIio69g6xx3jH2NM6V4Qn3h/CFwLB3b0CO7g/Ol\neMUM\r\n=W/VO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPEH+WnduKXAllHqqnL9hXRmPGWxvog0dZ+jkCtul4zwIgYRxqpoAFHCAuhucUsdYuQqwo416jU6F8ljhrnNHbFdI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605863956-7310574e.0_1605864101885_0.9243576675562302"},"_hasShrinkwrap":false},"2.30.2-next-1605865330-2ba2251a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605865330-2ba2251a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605865330-2ba2251a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605865330-2ba2251a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JZpcDO/M33jGbj9rafcXKcEvdHdad/tw9QI017RzqtMRnMpfuOxvVGLH3swzZWN/25JDc9aJ7RL6csKwU5nD0Q==","shasum":"c8431b7d31cd7565148917a619b0f75b9d567d2b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605865330-2ba2251a.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft4/zCRA9TVsSAnZWagAASjgP/1jxEur3pbAIP9C6b1NT\nis45DLPFxo2LgISZe5BSTWeGofv3SP+ZVqKAIaPexJaTvSsBkpCeGdbx3CAP\nIk3ngknvzPtCvickG0FK+zr4o9xginqDWeef9wEDogtUT0SWxZHIo7X9ia1X\nwlDOf8scZZu6aH0BrSoIywMXkr55C48MHzd+VySngdC8//FQxEys/ITJbGL2\nZXPbfRUeGc4dWz2fprcV2PXfz1Ma/0nnOoiApGR3VrHtuUkdAecjBcO2gYM1\ncNSYr7fnKYIZO6hJo4fBmLNztMKObF5w2VruzfDSOyjtbPXX+SaXcn8nhGpX\n9MHxg6zMxTDHlbKeMo91acwnJMckb3qGfuodI1B+QYBkg6GspS4XGcMIUTU+\nNg85SN7kqFQO6kp5c5M/ZXWsR5F9eF//XzrSpVnzj/CovhPkyOWmwXuLTbMr\nMIK1OlsFcra/nXGdPI4lSA8hL6U5tauZPPxLxFd1gWd7DsQBEmP/ShGNDsra\nlChE6CKagyuBgsU3J6n6Crpkquf6nrfgeRae+dbRDny+jfsFJSj8WFhKr7jD\nRNity1Adz12x2mO5xF4m/xs2L5OzSxz2VT5ID5aN0xuQxSrnEJ+XCCg1e1n6\nhKOC8WflJaAkBRFRx/WZs8eKWBQTf+EobxkFtc+8m31d1g8beJp9mfCAfsui\ntFS+\r\n=MTdE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoKX36YIHnc2PNZBuId0M8wW89Iqo4SqZGTG6xKp3doQIgR5+oAnGBDFCPA9M/J4LYnVYhvCf/Bq4I/yWNjMcVAzE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605865330-2ba2251a.0_1605865458582_0.417432155806559"},"_hasShrinkwrap":false},"2.30.2-next-1605870406-cf610ece.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605870406-cf610ece.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605870406-cf610ece.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605870406-cf610ece.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-afkEw04xMBzovxWdT+HQhlPnf3dge6VM03EncTx7tGaWud3YdeaenLCYRtp3IH8MO4ZrCiXpvOwWZWsGXwvxgQ==","shasum":"e92ad5354c9f9b6a43a9ce2772c0bcfe1b25c408","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605870406-cf610ece.0.tgz","fileCount":58,"unpackedSize":140976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft6PxCRA9TVsSAnZWagAAs9MP/0cXVVMAC+Rzln5WiD/c\nbl1pMo8ad1+gmXPPrlE0+Y9Ov9x7pdWdSrc7JOxbGna+E+R8V9CX89I1YxKe\nvqirY7k1Z6Avow49Dt5H9AtRvy2Sp03iRi4hh/X/BfFaxXUZbSp64vlbODZS\nH5RhzZhqp/EqdYZl1Nm6ROv2lvHPEPoKAblTPeazpkoK2JcsFeO3BUQp8Kfu\ne8FuBApVN2P5uTYSmpuJuFH6VHjjlmiujMjhJtvtaE48qULRMvhQX1kFW792\n6fQXGJg7FuJ1HbzZuDFK23oHcbxA9TZ77kdgw5rGlInxOElPsCgLUDHabYGO\ns7AdtrGz0gnimne735MJWum+BJlLA3ZYZPLs8wmo0XN7a/nQB9P5lN86z9iz\nbHgtWVd0iQCsEuSNO7hFi9i6R2dW4pAAy5Urk/aoFkpxwDp2SkpO7cZpBOiA\nTuBch2C3gZFfI/6JscnNbSTkdfSccpQrk4h9AsZqDfi9vQvLMD6S1L7fpR93\nkgT9Z+mR2wZyELyccGv6EjaE/Is0ZzM8HnRwQydl2HgGEoou8/2mjj3S/4wX\nPC/Vi2ICUx2ITpUj79BoOjU8yQhgYqpSoLJ1JuirRns3qPKx3mLrmCY4hCh6\n82RbfYifTQUmqzn8WeInMaIhXOI9RuEPrW6ePpfePm/vemS0UzOSn5xSY8GM\nnZtW\r\n=hkVQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDKteRX2Uqdux3vnXd+DEXBe3V8b1mJpF7L/j0xZnDdSAiEAzQwVIZMn3LY13bDgSA4sSAb0LaQW3vW+vCMjCAQy9RQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605870406-cf610ece.0_1605870576833_0.35127910074309376"},"_hasShrinkwrap":false},"2.30.2-next-1605871510-f0e3ae03.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605871510-f0e3ae03.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605871510-f0e3ae03.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605871510-f0e3ae03.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iNlXR/mhRKvP9w+2g+DCKqnFHAmFVa7m5VHHjPojOW7x1fj914Kr1SWtGTsC4UNzOo+cUVogt/dAifIsBCbx+A==","shasum":"16cedabae0ac2ee26d6589a440a4c0bb06c969a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605871510-f0e3ae03.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft6ghCRA9TVsSAnZWagAAgDEP/3+I5FDnYN7C4Ygw1icF\nsirgMTJp7TK8xw5XVaiUyD8ayXUap3r6T3g92R+dNHSpMB18LgHvmSAh1enf\nkxgmfSnNIMgM+e2bWQmqyHkQmWvWbLOkHrILxtaf/gwGVk/+sMdmW3o/mfwB\nJ5D1V11NG70oc90mMQU3TXYjKJBROWuPv6qFRZPNOQdHI+xu4F94fkrz5ATD\nTFPqbWY0Ido+XXKLbLMSWWcqAqm5kPmO1tI39+os3O8nAKC33jbqlCprfI6I\n8ESOrmBUPQ8/G9GBxOzq3JMxX5dJ6p0y4qBWr2RgLXxtE6EYv2FFjy2Qx/k0\nCWXSFmwvd6MYyZ3y00rmpvEt5QuGu5TT9UR5ihh53DZWYMaw9+bQBt4AP9w8\neGpknnb/EE0jMTiqdJi/2qQwd6uSIMK8FgcysQEb5W/SOGR8TQVIAJRyBQYl\nICUh2+TTFGi3RIuqw7oWE7kLARC6Lyh60GEjMQ/gUZ7o+kX5hXHiW/sOCas1\n2mw2IXPaxu35wouvoAQz5VXFy1BwcsiTAtrOsrrasO6kvq5crnI8tkgVNo5m\n4BoLwi32Ln91s+BOvpxogiFwjSF7uPiY//ZB+dOAmbMHTuPPGRCsoRwG9tO1\nuoptTUy9BSXfbIs4RL9rhpLGSlBV7s4xFgDEeouaCH1MVwW7GuMgBLBLmiX1\nP4MC\r\n=lv/J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpHRAeOE4BZg2I1spmmZRAdkCLlgTfMUOYQ/upqoq6JAiEA5I8L0DNvjKvybOJ1oWOazLEoQ41uusOesGpKRzZ9B/c="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605871510-f0e3ae03.0_1605871648625_0.2775169380253655"},"_hasShrinkwrap":false},"2.30.2-next-1605872430-e9660af3.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605872430-e9660af3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605872430-e9660af3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605872430-e9660af3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-agNQxxF6gEpW5rGOmgMB8ReKAAOpOpgGIllBOHL5sqiPOQpgOO1cRwubfn2St+0H02sVXqygcEBa1tiWXj5L+g==","shasum":"5f5196a694bf6a3a43e16a61f176b3c90a365741","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605872430-e9660af3.0.tgz","fileCount":58,"unpackedSize":140976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft6vECRA9TVsSAnZWagAAI7sP/A6EbiyYWpT5oxb+LvX/\n8CXKFUHszTQT3+LPXBbqTvS4T9aa5FOb4LobwGNhZ68NtqlHvqEAHB6vcOmD\nU+bWGYRDSXPM8nCSTi8JF5qJDEMo1PcbjkOkwNg8yu+rNWL8BPTAI2K7r6GH\nzrHcFbqGjKYmvn8sxthYB58hZpZLsPZk0/vYSbaETaW0cw/82S4Xz2CrOAHt\npp9L++lpY7EorN3wXTt70GAgozgR0TNm2B7N3ADsIGJ99uimdpSZU7rL1UK7\nE9zwngUJ0KvjkJNKwNLCaYarmR+DJFUsKORn92crl6CAWdpQm7QzZzSzUWas\nhYYHRHAEB0RewfuWkQWk4rh66DOYyySRY7rQ01ZJ7A8uo+Jd2s0IBjYubBZP\ntOOWb/WaWkUOQQwbn3pqBS6ZwgXg2KmsF+UrNetfvAG2FmTokzGfG16YXSzt\nqNcneozHrJSJJ9ixBUhKGeATV0hjHIGUAFcpRrryIaSoubfEOLEeipNYJ4Zt\nrLzAA/6W6q9uVUwkR8T/gvOfyoYf0XRXR2COqXxr9hag0kiubxGpqqa8cGVc\nzdQNMtYmaOkd0ipWdbFam+ZDcqSnmutOmf+NJAf8S9YGWHoo7EP9XOy4oHo5\nPvwr7cwjsMCpox2wccZAW35bb+QNIq6OACqoZFTQvvdOpqk5dfNhCMNT2ZDo\nQWLX\r\n=ERg+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA6kKT7tNc0IYzaqViboU4IXepx6z1NY+WFXAN0pqCyjAiBQf34EeJelZ8Dpcdpo1Y3C0VCjRIhUQaor/LcwZT4KMQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605872430-e9660af3.0_1605872580065_0.051658321266577545"},"_hasShrinkwrap":false},"2.30.2-next-1605874991-8b4c9407.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605874991-8b4c9407.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605874991-8b4c9407.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605874991-8b4c9407.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PkZDOP0/+GYOFnxwCRiQ5uGpZV1irQPV/YcEG5gcUJUCtVltl6W9O+G7EAiwtqCHftw67UzdQOBs6Y8/xqgIcw==","shasum":"99629422f20e514e44e9002c8b5e9011470eef68","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605874991-8b4c9407.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft7WvCRA9TVsSAnZWagAA/fgP+QHEkGIxN24FiCQzspV4\nTaf/v52ELFExsjliDlGMKV4ueqpAaLCLdgGtAxoj79BqHolcMivX/zgTW56Y\nGl6ycvisX5W1oKAE7kiK/9hwkBlidWyMEY1q4m0xr9Q7V0eOt8Slm77dT/nP\nNkMxgDiGHoOyrSiG7xtEPnJAC2HYldP7XzRyXHT9GyaWZ11FEtPndSX3xhRo\nz5GirjUD3lvtE9ub1MpZyZX5t+ShY1dApre21OPGe4zAJZ2JKQmrgyQ2ar1l\nyQptU/w4LI9COFzh8a/EzlsLvfs6M5guImNksgiqJ/Bqc+NxNzHjvh5XLtqp\n9jrWIeiny2oHeHYqi2TH/KhlM3Tsb1utGDqImmqG2BrIhez2oupU7rOqKbeG\nh8o/u3vJZGLyY8KISIsd0O7BZtb+5NdOedsEAALY+f1SV0neOcTXwh3VU4nm\np366j8gbHkJ41zvfrf819+q+MClsihQxxImB5dpV38p4jBS1/+rkY9dQZvIy\n55qzjNCUcYfmeI5qEAC3T1AOI/ZAqx8muWbFzcnXzbpSATFAV2OkBhBv0jUU\n/MUyDZ1IhdG/noJu6SVNSBJ/Ag4U3k3vbkiOiGYR/Q0/nMaRp8bPnw9qcCpC\nSWD8ONA/MQ3PxXJdFaTIu99i9MJEEm6iDChBxfIZKs05V46HT81bWKV/ruzE\ncavL\r\n=tpW6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLv7jkqtRReCF6J7W91AxC5DCK0kLWaYtlUIzLDZkHVAIgN1qDAVwqxjFEd3nOg8ziJ1uANwvb0UFuv3qwkB01cIs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605874991-8b4c9407.0_1605875118630_0.549055310657572"},"_hasShrinkwrap":false},"2.30.2-next-1605875567-67179b44.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605875567-67179b44.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605875567-67179b44.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605875567-67179b44.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9UypeG7iPWWJEpz4BekWeUS7l906lX3XaBI0LjSrIL1GDavuefUwvbTaikSgpzT6CbN/JqdLyWFQ3YA9Lmmedg==","shasum":"00bd164d78ddb5f79d3cb16291de6590dc6eadee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605875567-67179b44.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft7gbCRA9TVsSAnZWagAA34sQAJE/w4mPd3V4F5jmjQ0Y\nY6QSkx7DUDMGDFRTZC4oWK15iM1ZYEiandH41L0igWk0hvDvBjSbPzA4/Tih\nBeP+u99zt3uenxibGLoY6KlRPZq3Zo0aSx+xPyADe6g058vAaA5/EDzbleSV\ncL85uFGckb0zX862eUHtNNACPV4uJAZhdDODzouG0jfqhdsfkfhUR8iAqmUA\nQX3gY3mYeMtMga69Ph/Uw4MAL91Mnprg5uHd2ag2nYCbKRxrwDaZN8dZkMIJ\nzmDgOYT9qKwj1fe1/6lqBCVjMHDej2V26f7tB0Mzkq8QrqPJ4wV3TPdHJ8Mz\nysyiTFFKRvka/oc1QndiqsZJOrgGznZsuUnaxHWbE8HNTrK0sjShwBXKUWr0\nJw55ZXp6jJxDOCWf5QOycJBvZbvDFVJ1kNPg8cAQJ+ICjv4VK21GYKaGkH6y\nj0WQiXCp4JbRL/IktDVx0CMzn84OC2Vt/681FMQU/8F0UyVutxS8UV/T/9Hl\nj/fPUwNKjiFQHmZcoXg1MBoBOLn0QbpSJ++0IZ27UIZZOMY5/ZEQBg9J9zmW\nhiM1wRtzwuB5q0Vg6TC40jRCfOYp+Bza+8qUax/DFDr5zSLhjVviA3WxWRyw\nepqV2AdZ7m4CP17+zBC17eOCGm9L0fBp6DzhlXreaXQtw6EBwdJH15rp7SJI\nFllr\r\n=czLS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSpWKTlW99A3BWPWCJsYZHbQ7i831PISxbLszvRn5REwIhAMpRwOffYtnevt76TSoTPLWev8vctfkydEvRPgIunvMl"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605875567-67179b44.0_1605875738736_0.00442218555867302"},"_hasShrinkwrap":false},"2.30.2-next-1605882380-9c409b6e.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605882380-9c409b6e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605882380-9c409b6e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605882380-9c409b6e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6vD3C5CHOFNRYT4VqC8yJcPuhQiLILot+tNWfuleEUpKAMhfjozXnXi3H2WKuLcxr+BnTWoZoJfWgWTUPYsCWQ==","shasum":"f941c2f4ea738537ac5dc072dd4bcd7cd85ab450","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605882380-9c409b6e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft9KHCRA9TVsSAnZWagAA2WYP/iI6nGgicvO2q/CKdC+0\n/UrOvEQgF14g+piThdg8S2S3FTrc0jjnOikWWeX8kH3K11fiPJU+QyMvOOl2\n59RTQNW3F00aIsvJkqrfP0C4l+iQkfG7CMebsfbnItH80KixeARL9dxmXEfu\nUScyG3kQcFUj3M44i8TroCQbzFJP3dWRJGhv4iwfOpJWWRzRBjLsFspT4fKn\nvKJOQYtKCxua3b3WpKrPL4CP8zQDqa3cfLAk2zDssW+HxOngUHTKD2xdLeVL\n0lFOKp/B87IEI5ODNmTF73v23U/2OAZZRei61SmpXkI0d5t93AEpC+SgsR32\nFU5m2vaOhDT4hh1vG/CyKoEXxzWq1T+pzJKoqVH5kRGSDKZP1iYHUZpwuBg5\nroLK19VNRMMXxo+dUm9ca5W6Lzo1qOafHO3t6CXa4DG9BaeifG2ODOxDr1Ii\n7a8tzpFkFgWwAiBgGibkfd5wHS/5ac5N2M1vl2b9K2HBPugrnNyqp3pDtqPU\nhfthyR9RRohEg0F2DGzms1bNDjjsDPikpu1W9DSlLmyiyyOC3ZU3Yq+k+1X0\nyMMAUHJWb77U9NOjOqNr18LA/DRgkMEyyKMKUQfqDrzpTA26wV9w8MAK91FJ\nosDx7XGMeBk7HJuo/IuCJmH4Uu4jfd+a6G5IvTAHtR6oQm+bjzRo0e5BdEMj\nXe+8\r\n=1nDR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCROWTdulur2ejBEmXNaTcAglHD43z1wWNEizK6Xhw3KQIhAL4M3jrtOBJhH4MsciC5kHRODKZrtcFORRxNyOAIL2X0"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605882380-9c409b6e.0_1605882502770_0.26790231220004834"},"_hasShrinkwrap":false},"2.30.2-next-1605884572-9c409b6e.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605884572-9c409b6e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605884572-9c409b6e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605884572-9c409b6e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bRZnqczrYMBAGj3pHLFEJbKZXV4OQiHFRB7ZnR0U547dnmrSUFm6NPtKpOsImDsncBMSLRSOMe6MTvT4EpfLgA==","shasum":"784b194c0b137f57b8b810f82e63f7f6587248ed","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605884572-9c409b6e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft9syCRA9TVsSAnZWagAAxzUP/261lMmhKcMoOMZEG7YK\nNutzPySIk2He6xX92IX5pDruDAh66Yg+guKFoXUSRlDy5bDtTPsssF5lhiKp\nEQd8DVVmI+UrR5VT8IiVtKYlHhFZPBBP/OQaLLj3Ozi9AUeCWKDxtKD5c4j9\nyOlEuRAfLaIoIB9sQTZe+dDppG54S+P8Mt5rDnurqcIb5ZEo1Tn0jdrqGN4b\na3Ql1yGeygSFVHAW2s/OO3J9Go/rI5UMiT602x0SJmZMRUqC0mBZ3gWkudE4\nOjUorLZ80dbjsTJMY0P3dKXkokd0LFNxcdLVRsdEcY0WLDZOPMqC9X5dm9qs\nBon6Y13qBSPH8NtZwDtD7JoiJrkrsa8DIIuBQ8sdiLUa/QeitT17Y3vqDH76\n03ICWxRVYm2vYXv6Yc/5cV/RFNbuoN6X/ZGZdaWaJkgNc/7z0DYojXcVulGt\nSDyJjwnEbnAlbmytg5IVjlM6a0paxJjQDmUzbwmWWGRe5sU7RJE3h9eRw2sy\nOEzIE3eQbYlovC7zBRMwvdYRN0dguDHJv/WfsURVP9dz3rIXRweJYkhbmF7U\nj3qQNtek5gC0jBz3TMca55M0CqhlncEZbOBhiX5sE2XAnH82JgxqziEVTIHn\nKIDLRuiEjqvz77kRHzPXr4sLO1K5FgNrQ4ki/BxkUrrxQMI0T89bqqCTOatZ\nIfT1\r\n=CUZ+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHBkbvFXmMltjH9IOw01N3mWg5esH4t2FMki94t/iBUaAiEAjPtZ8K20wzTceWVTtX5V8/3D5B9JD11ukNVbu09NkWM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605884572-9c409b6e.0_1605884721684_0.38605148755719765"},"_hasShrinkwrap":false},"2.30.2-next-1605889537-3fcddaaa.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605889537-3fcddaaa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605889537-3fcddaaa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605889537-3fcddaaa.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-umgPVsTMQixU0N6DWNHkgAXEHQKxlLxNskekMtjivZqIdW09eX8ZhtBUSyjJ0Tb13kAsoHY0IsfeyuDIyZz2Uw==","shasum":"1079d56e2123838ded8f10dbf127e44bac465724","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605889537-3fcddaaa.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft+6yCRA9TVsSAnZWagAAfF4P/3jVcKTFJMf62acoGJKb\nYa+QbNmNO662D+aM4KA5nk+zZNsyV1giodeIjo3XP+KV3FX/hHZaO7x1dYVW\n382At1phrEYUHaBbMAJtulluLOkGAawgflwRDbAIUwNy6YyYuFTh8Z38p8uT\nVoNuRyZDomsTusStZoCsv15aKbSfCteXmwTB1XukPzP866hz0/lWu7RHmd0M\ng0vH7g82OztvZwKhgznmcAZBqN6+V5mkUt9/CmC0wvSvyjnWjg9YV+9vtMvp\nUx51zU2opekv7nH6eo2VlrcUWDjefFt6zk+/HqQ31svrR/NVa/uT0Dk2hAGd\nIDS7IUcP64H2nTddTdARt2KUjp2PytI6QFUq4GmfdixPmNQPjGQ5OjD8wCvu\nuKtL1WFgAlG8KD8KUg0l4b8/cJRZz0h+HJSAjWDw7Tm3cCBTzpf+z2nFUV9w\nTHJMPjyCANEoQyiDWq/10G8nDE1pDx4Moet0LwwsZ67bmdF185G8kzhC9TdR\nx4Lx32RDbPj6dC+lwUC4dlmWhhBoLdCLBkviNDQ9Q2YZC+AYD7JaHH6dFY/P\n6Gx3wqLshOjVIaXjc5E97cKl62AmoNm1Ywez4+UtZucKa3DdyzpZFRlubGJu\nvNtIf6od6IaytzhvWs6/kwPXLr5qH3dqiECb3I7uNK8AqQiZ2KS/kwyp4PtH\nuU62\r\n=48Rq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGaNeIHOCvnC1NgV6+9Iq7PsK2TzoZMZ31t02oY9woObAiB+qWGFZUY2R31lElKrya3jXa0GqUkLGXX+KiCpVHJAMQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605889537-3fcddaaa.0_1605889713896_0.9177696322656022"},"_hasShrinkwrap":false},"2.30.2-next-1605902721-7625b8d2.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1605902721-7625b8d2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1605902721-7625b8d2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1605902721-7625b8d2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xidCpVYtet1ghhDrq25FRz7dB8EAXEQS6rDLeGVE6Zr2RKBpNzqPd9v+IzQf49/kp6+p0warIaZfbci2YpZAiw==","shasum":"a46a09784b98acb9f05ae9296ca0c335f858a8a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1605902721-7625b8d2.0.tgz","fileCount":58,"unpackedSize":135360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuCIVCRA9TVsSAnZWagAACroP/2wGm9VscVBBgAZyqhkF\nOduYqurHMYjVYM2HCbUoK7fa20NSwyT/tdsYgrZ8lm0xAaV7b7h5rzN9sljr\nBbPU7b3WMC9/gO0rOPLPevq0MWwuwhZgBAZEIY9NPw0K7n5rUrhhkJ21SFx/\nvQJPwhGlmEFkOjLoy2pCAQTui3ls9gRiliPYF/EM6uemPEi5J/ZCS5NbTVm1\nLRvbiGE4OWYIYnd6seG+STlm/0ul/rUhBR/sB+cU2DNIF0QWTnmtFTp+uRKK\nAsy6OV/zpyyscmlKioxM4EEKa9eV7GEXiNWrfQdYMDSizNrdAcuiRhgN7yf2\n7YKmBb2DT06sqpdxvP/gR6PnYNYgdKElcwP/hvbYWhobch/Dz7gvwwBI+zCj\n5TQVRYqMiKAF9NLxDtnUyWVbuUbyDZJAB/kEUbCvXm455ovXI0gbWX1VPc6h\nSAy7kwWSf4qzCT71g++C7QRIN8WPfymbFs6noRcqAzBQiKdeNFee36wfJ2If\n2SSMhO63F60Fzr/6I+1PcK0MFjXlPg2RZ8XaY9Gq0+L0Udvc3ULdiLF8LU1A\n1s64TjS4lXAoS79ckOd7IO7UVZj2qsrTtTJQR5vMA1YsJ7Vjydm2mxmrYr3x\nmfsI8XjLEfiIi4WFHtn6E3/mdek/EdGYFHOSvfW31N1rmt+TAKVat2D8iv+h\nQv+s\r\n=D2XV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICPI9AYhWNJXCm4ECx+OuE2NicDi8px1JbwGiFfVi3vfAiBuHLkwOna825FehWgVVL5wxOUk7x+ybNw4ZTuJv6UTWA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1605902721-7625b8d2.0_1605902868781_0.17423989198794243"},"_hasShrinkwrap":false},"2.30.2-next-1606073615-e6a86cda.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606073615-e6a86cda.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606073615-e6a86cda.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606073615-e6a86cda.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EGsjmnoRVOYRW4C7Z3cQPfmdiGgHY7AyAgUVKhx4s6uQqEF6KuIv3ImNf/kJ8rE3ZKr8SXU3Lb4MYHLPrqSYFQ==","shasum":"86789df8651e9687b33f5d3174b6fbbed28fa9eb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606073615-e6a86cda.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfur2aCRA9TVsSAnZWagAAxDIQAI87iM1bEEnOu0ee80Gc\nBYwf4DeN4HQy5+2S6CWVw42l0ZPwPZmjjziVB0eh0tYKO0ZxlTxASTREUdL0\ncEfILuwFzwhj+VfKaNmDEgjNekUdTeuqrVAKr7b47mhAhxfk82kGg029CkXm\nLn6rhny4ZRRelU59J1xOBMggv/+jTnUyYCkIOaoM7pUVEns8qHQesdGZGRfk\nBIxsP0EA4iDJTYIF6zgPTaOri9Mn5wPkx8m+Z9bca+DNSo2dldx7It8txF5Z\nCpQKtLDaLsLddnNT/IJ2dUN8qsSdlaANQ/czUJrHUeuUy0V3/9Pt4ogWe53i\nDU2FE72a8BjKX3akdeUMdxst44gPMDsbOl/b8pEIsdcJoUsDqTseE43fK22f\ndE/wts36gvIB3xjh9iWZm+Oug4ftz1wg/w5/Y8Dv7cIPuHY+nzyHyC1GcE4n\nMPNHC9ZpspcP67LpimvQ97jIJEZ2A6en047wAlF62FzLqeTNkAdkiEUkm0kF\nLy485vGVdTbsL0SMEcGmFV/qOVfVfaBC1NG6Qy6JTbWJbnQuzxwWSZ5xA3IU\n+bVxfYeBEEDOPFyGPwRRxTXCUJ7e51DHGLxWnCCSW5Q323xpRVWT0Dik5N0d\nSC7Q90KrkimivxTuKnejfa8jQkNSm01DdPgsXXLX0WbwCf2GGbKRiluPC98C\n+oBX\r\n=JPhe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDreiIJKbCFC5ox2qPBSUjcYVzZgMr1Tv8SVwbKVDpJRAIhAI6jpaskb1gmG+13MwgBwORmUYKiNwNSp5ybfRPbIfHR"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606073615-e6a86cda.0_1606073753623_0.7731442363350234"},"_hasShrinkwrap":false},"2.30.2-next-1606073657-89aff8dc.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606073657-89aff8dc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606073657-89aff8dc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606073657-89aff8dc.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ynHenKQsNt8IURq2NjIqkCKt1uCkpV0yui75QQdJdGvw5hdtrDAymQpX5oUN66anHmnIZVgJIauQ8VPNJ1aB6g==","shasum":"15358ada7d967a1ac30cf156346d6a372a044056","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606073657-89aff8dc.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfur3CCRA9TVsSAnZWagAAyGkP/3Aqyf8tiBtvGJWsMalu\neL+KzSfj7hb85iAwe79A2UInkVLEm6tuFt1dHCAFn1GR68mgRoLC1ZAY1v/a\nUmHBHENw+dCtoiIfxbVK+iX4E00D304bzU9i+qqGvFI5WEECFCpoYHs6yaYk\nDbdjQq9RCxGu4Qudq/lQp+xB3meuZy+y9t8BHdY671ulcKNhfaz/zjZU067R\nSWdxstyDsMbKwcvtzyiPxoMsr4dpBuJ9mGOIh7nzv4ZdoKV2X2RtVb3h9UVe\n/0m71L4pbfZwEl9mx3cW8/iYn/2xoZYuDIECDdjwjAHcn0jF146GBFw16jS+\nzYDKiP8v74g6QlZk8J/piICMN0RgMjOEseJn4CBTiyeVLqgoD7YK64Ll9/W4\nSYQxbrgXdmpqHkx8txt7Aa26QGzN3hi+Qiw3ERyhwQnrKfGCHsE+KPiQFnjC\nZ8h4y+lsiYQzROa7uj+K9XxJBni6wH2lwtpHgCyBBE9r2iaZATl2cDgvETjC\nxaY4YcNZdPoUCYy7SSSITddJOf5jzDw2M+F3FDGmofhVMddzvIHxe/jy4Kbw\nDEEZC6JMdcghXYjZLqcUH2yGKOREWITQnsapHJFkk1SLLVyxjOaE0iLXNQkZ\njl4xbNW4W/RCCgrrYT2RclyyEQfxwR+Lx7FVAZLk03KsMJosQX/TJV2FBR6k\nVNom\r\n=6w58\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIERW0o+FvY87z3FWavBufe1WwbmxP9jPj6C7i9UrY7N1AiBiZs/zAad6px//Bnj9md4X+rF5iAvQCcEhVKANZY/7Ag=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606073657-89aff8dc.0_1606073793546_0.6937236026417459"},"_hasShrinkwrap":false},"2.30.2-next-1606074318-6ee4b79e.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606074318-6ee4b79e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606074318-6ee4b79e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606074318-6ee4b79e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0fFL32cSE/JuEC1gI7DQpBEvgN3O3rs838U0ZWv38NXesx5/viP3ztmWnI6qHPgtwUeoq9h7Jul/T71s69aYoA==","shasum":"bbb1f3d02311bacb3ccb1b5090abafbb299582dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606074318-6ee4b79e.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfusBdCRA9TVsSAnZWagAA8K4P/0hpE+w5OlJVx6/K5y+H\n5Hhh3nCodRvHPUkfYxMteOhy2y8PpJ9p33VdskCVOCKjbhjcblhTTwE9BzoJ\nE+yapUcjXc1HkJow7hTPqgOgCOG1wsScNrhjjTmQbmakDZpV4l5Nw5FFVTux\nTWB7o6JCEPO+LnPwo1+Gz7UmMuHWitYwjWjpwASMAodSQDyi7Qkm9J7Yf83V\ny27MXRUI5+9XibsTHliVnAqLqSK4TrUjOG4rTPtyK4L0OyNEhwFV9uM2+Pwg\nePL7fGchZV91ATMm9lb0jg99Yh35Z9YtDuxsLt6k9NsgR8S9+iBv2gj6JVPx\n/wEpIa3dWKrK1jASIP8haljO4wcK7Px5cqVbD+vCaQEjeIHCAZfKZUNwL0NL\nKwxLVcePoFi3Zreo18oU+tvQFMtAEj9aTvOpdt3lWk18vknPHNPoq+pcQK3t\nTvXEpXObIwObT4kiT9okDlcrjgvPadKkHWC0VKFHZj2tu9bd8IfKbZoFUQR8\nzEFkSMf80WJyT72zruNHm13u2LsBwe79dD+lF+uA6FE8JMy2wYs3Q6ao925+\naidJRoHNE4wtM2WpckdyECHQ6FWcIshKifpAGzCpI+2viqDlTjfcEX9FoL+f\nBIRivXdvHSrOWQM1g+x5MLEEii/p4J7JxfzS+AwayUV5IzB7M65rFppzdiAP\nLhym\r\n=NlI6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICBEcYTr6dP324U8g34EIX1rZQO1wPGxwGbKn9xo7QgrAiBCM7+Xpmr+Lm0SkoR2yFq6B1Lpp1ytrdxedxtWehwiZw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606074318-6ee4b79e.0_1606074461302_0.5923520456371216"},"_hasShrinkwrap":false},"2.30.2-next-1606075571-a5558aa3.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606075571-a5558aa3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606075571-a5558aa3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606075571-a5558aa3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-V5PZ7zVXGYYHZj4QtLV9Wi82YdoCBv34anz/1OHkJDg4U8wNfssMFxsg5SVoJ9xm/CfkVYIcq5zzMjJrr9UE6Q==","shasum":"034c220f643535d6986b3e1d5c4241a9fcd1eb88","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606075571-a5558aa3.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfusVMCRA9TVsSAnZWagAAdlkQAISfp1NqYxv2fvxkRKEg\nnzK/5MORzkC4KUrYVsnWlWzHpgyw0ntqfh/5D4q2/LoxaH+/V70IXBmioX5I\nEQf11JJcETzDSjj/AXtNkWZRepbJ/Q3FEVDjWz0iqWN+qL7CXTHySBsqSQsZ\nRkYUxn17F3n2UNMN+O9m6/commBW1ikfQHhUNkxUS/h0icchBRRRkkMHEySu\nI6S4yvjHTIZhacEKq6yOTOq6fqG/4BJ6QiSICQ87z/CmYYVFoCjCb1w3LdBX\nkz8a2NqRNdnatM49yjZAesC+7Nangl0Lq+rIOpa1YpwGcFTsoWR7JedDc9yw\nSLOkSX6Q0F/fJSts5NROpOSo41aEiVn/oyBec2PGDFls8ErZZW+ICusS1jz+\nzaXVntUwz/LhXUSmkdJ9iodMcBjZ/W33dRSLz+tXVSJuCpNiqbYkkQAONXmS\n1FZeK4S2lN9fEzL6oWdi10H+G9yGblfwJWPQcbdW/9qxcpo/XXBr24/PhEQp\nXMTFXPfqPyqV3gyTuwsuxG8z4aj+wE0Jj8owLyWaWGWOw5KDXcuxhPH/REIf\npijY99oNPXjGzlwf6VkdwCDwZt1ZR9u8YrgV11Xpya33VifF+HnvVA06g7N9\nT6BOY43jRGcaGzJxiYYmdeI5biWOXP1hgP0ExfCE0ElH3lkKB8kwE/5GFO5d\nMxM4\r\n=TRJS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHRMpZPnTnVfHAsLFg8N33v0hNwzQAAe0adA64rkN7UrAiA9Rea6IrDa/YetiW8uIFp+movwlhdF5mNqN+Bo9fWJKw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606075571-a5558aa3.0_1606075724042_0.24942386492449953"},"_hasShrinkwrap":false},"2.30.2-next-1606134594-e5978488.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606134594-e5978488.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606134594-e5978488.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606134594-e5978488.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+m4tt15OqJaUonztrBUx6pZdJUieeaWsx7cLkPqAcoisXH94aHZ6qcCABb1f8lUh0hT4F6P5R2qaYnmphUz7Qw==","shasum":"693b70f0c1e6db31477d55241d1f2d2151bc3b52","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606134594-e5978488.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu6vaCRA9TVsSAnZWagAAZD0P/2FVijEogUMNArrMdv16\n9+wlRyFvSW7vJCHvvjybwEqrveT7aPbQOvWXZvggxToyLVHAibe+mXEMbYUP\nXAcJxLw1hAheeISp3AsxOYKG6VeqXGoHt1y7DOuCckuMKSSdxxcajXYyB5Jj\nedUyN5ZflO1tn64D6lI1EQz2p98+vy3mcorict7rwVVD5J88o6dCFOHQJM04\nL8AL5PZ1yBGfAfnfV6QrOT4qgZsAKXln6rtKt57glTCVW2FeSaiKdXNLTVwM\n4m/YcLqKpXMfF6FnQYY0nZXjSqXp6BVD4btbAeq1MJtQCSGjyZtEJKsdH2H6\nJJRE5ST3L7AUT+BzApgBCpqLGa/4PCWrgF9/Wr5yeRSGp93Z93J9Eb8TNsyZ\nEWlhvOwU0+eWo7MxHH+zQSRF7Hra3oC9a6s7TQi43+IVlDOJpi5t0MDi088T\n0Z5cC0ZCACV25VwUUm4yc3SYChE0NAZy0bW8/rfCAtO52wXmkwE8VFCW/wX5\nD9SEOFJVRCJlVSN+ZHu8wJF18Bs/GSYvucev7gE7j5mEvOP8XjnoVXxPEvkI\nyfdrFJTcJ81s/5b6pieNxLBLAohZUzt/smcU68sPcpuDDf1D4Rw10/p1j9M6\nte+cdSZRg2g7sLbjopxdbNtB/q5Z4Ekzp1sfmF0xm7VN0JySyZrH2yrXVAfj\nALAm\r\n=H0Ru\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/9JFchA619P6n4THJ+gWNfng9dvGX73SHiHQsbehXagIhAJUK9wY66CKUR9CI2j7AesghEvzmuSFfmv6kjsL9Ne8T"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606134594-e5978488.0_1606134746218_0.7917763254789318"},"_hasShrinkwrap":false},"2.30.2-next-1606137054-3325033f.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606137054-3325033f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606137054-3325033f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606137054-3325033f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BuWReXLiQ1mAqjvNz6GPCTAgFEr+ZaDlNkvTxW4Hp5IOwCpGnmrlUXTomBvZz9VEhEGx2b7WP8ODvP0MjoJFkA==","shasum":"8e71c62cf9bb972875d85a1f08ad56bed9b94337","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606137054-3325033f.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu7V0CRA9TVsSAnZWagAAD5QP/08SAbsOEjbAvnvMF/Bu\njiHzm0KM/xeXXzx5KPupSfBIi7hMByPrPyys8bB88LAKOVLaOI9IC2sy0m/5\nkNHFEtzjrF0n3K+pzUfI4fqDrDDIY8IxSMf/aiNkxDOzC0Kkd7zTMppmm+3D\nCgItWRySA9rlj6BGJ/EEm83s7uanSCH2DSCwf8j8Qf6U3+AJyxGN+Kb+6LIa\nzKZfj/U9RlTn3Qi2kRJpgtj5azdnoCOe3/U/iFwEDrxekp1fK07DKrA+zE3/\n6fiROh3GQsu04hXe4+dzFyP4RuFYLm6tjWspnlXgZli6MT9azuoeDpLucsLC\n+atOroljEQSA9wQfMVQWDfjBBuelxY5zLc2nP11kEv2PJXqEisCAiygxRak2\ng1wiTctECQhe+whaOJR6YVZbPn9smy0xps6f8rRcGD7QWLuhNJ4W4uDfK1rA\noVj/058InQgIrX6dDvh62E++ZEihabh7aRs7si1xv6j3YaMPJ8T1qcWi1oZq\nrmnEDhoZ90S62DfjAo+1IjQM0hmFTbe6SWaCbbDZYf/ELUr+Kp0o6c6OLcTl\nbwpgVDwfyWnqMIwxKATFMwwazJp4pEdmQBHJDOFt+556QSsHkoOHxJHW/k0I\ncoyl69tu8/QcjPIAOsnp3WrhfGdYudAZ0oh6fADRfNqFy2W0h3iQKVeE5ik6\nQnqu\r\n=UTIy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZ5vXT2+Z5/MdNVzUBLixIYb092zIDL8c8xz5ciM+zxAiBE17VL9/9mjCSSzX20T4eakcezpJNXFJN2pvphlHYA6Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606137054-3325033f.0_1606137203474_0.3970865867324396"},"_hasShrinkwrap":false},"2.30.2-next-1606139724-01635fb5.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606139724-01635fb5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606139724-01635fb5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606139724-01635fb5.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1xhWgwnKGrZUMALyJc1o/crYF6bNGFDRFWhsACKj/uulMSSqmcIIQpeYc2TWyOD4FDvKZX9g52gmqvzoQyHHyg==","shasum":"ff3d2ecc8778ebf472c7564ae1c12b09a1f170c6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606139724-01635fb5.0.tgz","fileCount":58,"unpackedSize":135360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu7/TCRA9TVsSAnZWagAAaDkQAJbYc539YWG0nzXlCXHW\nln8cBrJxcf37Fy4trQylvr4d7yxzUCnwNiYUsbtAPl9RKIniPK9I+gh6pQHK\nQFOOnR2YXps3PW66fAx99X41JhB2LlsO7hhu3vWRK3RZg/5Rg6eBGyqV/3ea\nwhfaeS4SWN/fCmW49ECAz0g2aKYMKZJJVdVJTRIFMTRd3ouNDStNzsSnClqX\n4GI2P8NJLHNthf5kVpxezTjLjpq8PCPMbOz4QDulX/QNSa42ZMFNYloSLbya\nykFtNvhbvm8wenfkss6ppOyK1V6X+IydHPMbf7Cdk7rhuS2gX3B/vHj1sFwn\npyY6S97QbGw79EX0GtZpRkK2n1jA22428hEDi68u9S3DXm+7pPMglC0AVcr7\nwLI0363P62pWaRWBhavL2I2nM4Qtzpzo2TPxLxUMXIcoiR3eoi/xiWlc+Ya2\nPd6VrIzGkYSxZTXVzI2+wjJHlWMTG4/C+0iIM3CriX9NXyDfaVTDH4bJJTgd\nrrz6sBOaxsbbv4RCHe5+vV1XavvdNYf4ApMLun0xHa2wk2KqutPISYPJZKEM\n7YpL5tS5VB5qP60dyPzXYKOgflPtBKbVnmSFg666V8j9VdS3tsdX2SDphU0r\negKnPzGvwrzpbVWfpKT3vfVa0tEGzlBcuuXewTTGq/bPNTXKKUUyII4VPr5p\ntb9K\r\n=oXkc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCu0OY1pSkXpQwCabIYoqocf7hGKM8OCcZk+NcfTxIY3QIhAKxzXXgAHMrSZ6cLf6x5T/7NjDOUt6mSAjQvSVARmgMX"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606139724-01635fb5.0_1606139858639_0.8714980817996443"},"_hasShrinkwrap":false},"2.30.2-next-1606141571-c2c6a30a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606141571-c2c6a30a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606141571-c2c6a30a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606141571-c2c6a30a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OnuhkWaSc15SKaVa4ht3lc6vua95j+ODtIe+Imsek/4ZjO/rM4eaqYjEKAAWIvZUpgGD1J5a9VGDiPH82j8u+Q==","shasum":"8ca9a1bdf60185591e33f53d684c67e0ba479e51","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606141571-c2c6a30a.0.tgz","fileCount":58,"unpackedSize":135360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu8cjCRA9TVsSAnZWagAA3tsP/RPK+aYjftB3mN6hSETi\n1MfFdCbzX89n10oNvaI+9N95lkWhZ3C76eT2SGrabpZKWDzI5ipP4qWzqJ74\n/5CTNaBvdgHirqAhfyFE3Pe0zZFLk6rvj5qfZrZCkoxTixE+/ddYy1Q+TixK\n7sjcBNYyuwqOQmxGEJ0y/dAmczcuS+bsfREYMeXJD1lKA1ptNxg0eGbaeJO1\nhiBmP8U/41wZGTw2mE/a6dNDPnIe5b1louAhWnFdjewHIokkpP12ypfBXXBz\nOnt3p7Z8YiFzjWB1EJeILKsrBZw4cg3wvZ/tqp7l7NINJb3hc+ZyagbcvL9f\nv/zvY+QzO1DMgAyQ023g1A4DNwGKrvU8+b4IdoPL9bEi/TtsqrRqdNse6Kii\n4bUOsyVeuXP2rTi/o3+DlmombOmVf2dq4mgPV2oaqKlPLmEg2IKgBY5V5I1Y\nkAuPDR3tT6IYnJmRL24xEDb/sinQCTx4JebkunaPQhmUJvQqRTgrmB93sTWc\n9T3Ww7Bz0xaBlDDZBvupV6WTyP9lUlNPaTqR2uAf8SsHnwZhLQtopKThi3QM\nI0d8PUwH20P03lcQnbKZAO566Yal4T8xgQglUZyJaWa5trc0O6mIvZ6wl/ox\nixvUMv17yfX/v3K2y1jBfOOxhypk5qtGFOhZwv5Yda60JE1ghpYNrP5DWHNi\nPWYV\r\n=g9k1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAm7K+q+c8HAkvn8POwe/v4tKtIsj5zlYLkNf/LJ1kNWAiBzkSLuLOu2Wda/QAO3llsnkTPOmoPfF5vFT7hXuVsFow=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606141571-c2c6a30a.0_1606141730611_0.14090672290267436"},"_hasShrinkwrap":false},"2.30.2-next-1606145453-8d03fcdf.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606145453-8d03fcdf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606145453-8d03fcdf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606145453-8d03fcdf.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WNjAKmqJVcZDj7+YFn9mhj1Xsz2ELBd+YU2zF+px5oUXHp/zrLCs0b+XW2U1yIzPUrDNYIHagrlZZgzH4u163A==","shasum":"08337c35448bda816ef856254019e89ae71e0936","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606145453-8d03fcdf.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu9Y8CRA9TVsSAnZWagAAi/AP/j5V+leIbiOwlcyrJMJQ\nKkE1AwhcNyECitYk2bblEGCNxyWQ3WNUHNVi4esEOCN6neFDb1cybrDJBtVg\nec5qXBSj7yovmNwj6JVOfu+C2FfisCi712SZz6Sdyjl8hqhukj+kvXqvpOSz\nWwByMU8uuNJ/riTfRPzew9Deb0AICS8jke71WuZahCWxnJtE8Y8skOf7+jDi\nlLq/yz5u3U4+8kaAQP2PAKmOqaoPIuyGOtWekx/AhGLPPF6UZ1yervfJYa84\nYfPZ4mxkTRparNI9Yv1VvszYTcdbBb9+wSp9G3DEwqGM0D86FnwFSnrzBEvX\nxLU2t29plFwo9KCdz5YXDJfIjMHtKEBhQdV/hLb9aqdTe2hjbsxAtCDy1Vqa\nQXN+LzovRJqY9ScKCkXj/lxki9snzj2YaFS+XeTi+boPcDB/OTOE+ZGRu13z\no3DgxzgV/wODn1O5T3+a3Grg6PHA9SsF2clHExWFmuaUeKjoQ3e4vBZ+knbI\ngqbxQi9a7E4DjG19zt3Y25uINy6Xs78e56HiRS4DCV0M//4J225Oq6Av/HNu\nEK39OBiPc7uqUZiN6cy4ed8BfkXRBSNn9N8MlybrRIegSklIlcT5ORWqdCLu\nsXEyzsMVVhkXV9Jj8NCLxXZyfhYQy1KjckJiHNACR46Ht2s2nkU2HXyLidmw\nXl5U\r\n=ay8/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFkAkAHU9dRHM40htq+/gamULTetaQs7OGMHxFHGfAOFAiBki+pG3bwpQMt4toxY0QEW9aeZDASEisuHnT/TI9TYUQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606145453-8d03fcdf.0_1606145595642_0.6772049227907553"},"_hasShrinkwrap":false},"2.30.2-next-1606146957-ddcd4af9.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606146957-ddcd4af9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606146957-ddcd4af9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606146957-ddcd4af9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Qi5hFBAv81BSQ4x+57Bn8uPKzvCeoAdOQ3QmMwvwchfiW3upaIwn5MDKM5bYCAckAWsZTo860ZIoKOKtrHDxLA==","shasum":"3aff4e116126cdd4241e3de30596cb03d5d4392b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606146957-ddcd4af9.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu9wWCRA9TVsSAnZWagAAL1QP/228w6ylc1Uw+VI6+O9q\nRDzTBdNjruhWsXA228AwIDYJE1U9A+/qp08p24N2ZExNxqNIulAyNfgGmc8O\nRodF28u2u5N9lKj8uqN26DomYztScgnCgKTZ7mVyV5SwnZyQ9qTqt1nDluaR\n+/AuviaN/ouclWuS+mD3D9ZHS08hw15tu17tQykAoF8pR1l8d+jURefYso0q\ntKV8V55neNnjNhmUKidthD9SmrXM0PIMie4Yy3ZU/LhCmSzusqbo6+fZIc6O\nlUzzSzSMMigB5RxlpsUVJ+0rOHs5lK62hM7RP2D2d9qnHGJFpx4itCeQ5RBR\noLfqOL97Byyv3VYJT6GVhaJ5p0I2MiMD2O6BPlhzu6ME2AnAXQldGmFxNtBd\nMEtGqgs5uaAoclAgwoSFrg+Zshc+DEsmnIq/U7/omieLN9JYd+8yjUbDTdiS\nRYK5wjpEizClcVwW43bSAkcFQrSv4rErEEuj4yKLygXcFqBQRE7iMlFSgW2K\n/Mog1EgbUiEwvkkvigI9NQIGBhwrvILuFGGPjZ+cSdS9ojnnkH/u9YeI6eUc\nc8yXvHtVqXTU0bXB6bMJ+0bVs9oXCDTbwhCVLmQTBW0xjBek/sQB+WgoIQVR\nzTZxqm1QTCtGqUtq8eAuk08O+zVTqeooi2BZE6Af8DBtkbQI3tCqHSyQwssP\ndTM6\r\n=rvgU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFgGlUwAvtxl36ibdI13c8OLSLY2U8toWgHlsLI5NdDwIgI2c7tI7i1vQ7r5+/8QqmrUJehoSm35sEdKYBVwmRJW8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606146957-ddcd4af9.0_1606147093669_0.9703744013612725"},"_hasShrinkwrap":false},"2.30.2-next-1606151267-a35c0e8c.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606151267-a35c0e8c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606151267-a35c0e8c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606151267-a35c0e8c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YQUeGT6cdpOTcIdCEGlaKrbYeOg3eG0Ku1pxRhhCqPWJlIAODG1pPvHkeEZ2vpANB1wX+zuFOIOmWDZIyVFbmg==","shasum":"d3286995bee83127c7986371f241574cf518323f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606151267-a35c0e8c.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu+zsCRA9TVsSAnZWagAAyBkQAI0Ihw1AMkeKsSnJxNMZ\nd/6H8f4BTz/oojOwQRIWzR1oOUavtqEt9dsgLhUdKZjvVxzQQUqgfOUChgXZ\nFnKmQnXhMofLYtFNd33ebYNqc8YrgY17i7lBif4F8A59Szr25ZvGhAtKRifg\nc6s4l/E6JaAwcbsgUUbLBj9vM9n41GhfEF6SufAC1xZXDwYJzEHcVPOT4+lX\njUWdj7INSIhTtK2NtzUlEY+8/n435PDFTh+Q08qgZe4DS+IcQB5SZv/BvG3X\nHXBGafPvURGV1eEOI3tghx4xlWI9CWGv3HfreuUBBf4W5H2lTMoZEiBinYto\ni0Hwlh8EdJfsfZp6DcNmKdyOpWLljR/tt+Z4ZBP2ALfvuMP0v4/vUl2+aF+x\nkL32zGizAqlf6VSzh621TsN8iaNQIUjSByUCJipjRxdjtLKstitQ53HHt7qu\noytCBWHiYmDaqahbHNqlmI+k4VYlH7f2TWQqBuNkplt0ls9gBh2s5Jr9xGww\nix8efCxHK5a0RS4d7BPp4aUGTgLaJzL4Wo1QRiv3l6RykzzqVlBm3BkANc6K\nAsVBj4W4N+WcVcGAn5M1Kudh1lw00RUHWng6lyLP7fYzURqq3IsqdB3Abnss\nKkexqssV0sxw61PWKW7YljGLBgxT2lc1rVODUo4CzLvtRTBJwE/KPDTQp/T6\n8iyb\r\n=zf3F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvbaTxQTdeQaCyWb2lf97KkXgA2NTUokgiLjWuiW+WAwIgKwW4/ynr1wi7hfrHKT39/3u3N41EgWrcFtGnkH+FbGg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606151267-a35c0e8c.0_1606151403765_0.678057715002254"},"_hasShrinkwrap":false},"2.30.2-next-1606157020-d0c4594f.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606157020-d0c4594f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606157020-d0c4594f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606157020-d0c4594f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gxGoFO9TGIOF66mYAoe0gNFaafu1PKKFUhMfho0m1u7e96HfzpAbp4/jwDzs/CHRYk/8waIeiFxMUzOCKdiS/w==","shasum":"67988886d1a053d2e9a24e1a489fca9249b84b6d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606157020-d0c4594f.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvANvCRA9TVsSAnZWagAA+VUP/1cVWkWE+A5l5JmNQAqV\nVj1jj36gKDKGDS+pmfLlEVOZWy146oh8Q8/H2V1SkaljD6ftrrTY/VzBt+1w\n2lTyxpbIxbRkazsU+0MN10UHpOFnNMk3qOL08NdjhLmmsJ/yDsc+9Q/CxmfD\nuKmLHuLwGPICHSy7xJrPnVgxfMAmDkxvzXq8XryZblU+4edLzfzJ9lXORx6W\nfkOvU3fRx2Wm728Hr6IG3lT2I/bahg67sqPNUiPJnMc1bmoaJgnG9/tGQtLb\nyk60YpEvjk9qAfy0TQv+AJs/Sl+ox9zM8zpF6Ig44VMnuFw3C4bl7u9maJur\ndjasud/8A2igaoyEv3RHMqkO2NW+8l9Ew0jf9kOW9FyW32puQX4L+C7Tzhz2\nRfumeW1+moww3fPMwXq76HTd0v8B90x502oCAmVxN9LGqO36cAMpI1xVal7y\nMaFHTcJhHFUVkX1JuZfeL1RKM64rR3C5G1jrixMwVzroTyVK7DhV0yQfvq2z\ntxFKXgQSvflw17Y/BI/Yb0nhQVcEzZBfgTerCqdh8/qAnchLY1U91Kc5bVu4\nt7kZa6y/eo8DPAfP37RFQzZKPFp8rSN/nLr62ey+/JFFcyMm5PffIlpYYwnq\nPYM3iRhJpAfEfbcwqgWvowpJGL24XHaZq+I7S4lvMACDm25TBm/utLwyOvFh\nNkg1\r\n=J8yC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQnv8iBV/Bsy+58b8esOXELNsn76GsMGwgp3vuyHNzXgIgEIIfsJFjLv7lnMXE0+TEfH1jgOZE6Tr89fYSCXSsBek="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606157020-d0c4594f.0_1606157166639_0.6969205320766108"},"_hasShrinkwrap":false},"2.30.2-next-1606157993-6b474060.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606157993-6b474060.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606157993-6b474060.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606157993-6b474060.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ty5nTOrmVE2Bl4k4VY0jpByq6pOyM62b7nKBmBHG8Xk9PNxP1joGsM++wSTOmtS1Vn53EUS+E8fPk2p016OMLw==","shasum":"b5de90e9a1f54766ee2261e3af2fd60aa96e450a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606157993-6b474060.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvAdICRA9TVsSAnZWagAAqJMQAIcTsZfCIQh+SseLFHaA\nL7qkbqA5+3EnKlgX0RGcstBP5tJNbmh2K92hzi2BVBVf4rU5h/mqa0WoObpU\nulYtAxDhfg4Jj+g/CmL3Hp2OLQ/RumjQnYf93wcb9nLG36+UdxKiaEeKJKhb\n9MDm0delFOTNDg82e95jXoklNoqJufl/eGWXArnS6jAk+eUPkBV/j4Y5NNLh\nGwLFren2G1/ivywnmdlUlp9m6zvaydAg5b2o1blUXayVRCv36dJLtGRojTwO\n93RsvGNJyRk5yUojjEZyNh2GpbQ0XM9ZU67GFIwpt6nbxBnmEKDuO/+CRf/p\nGsy8Q/G9Y2t0/4wB/DmnpIHIbvwArud+fyJ5s79WGkT8hKqMFnS0zcxkTwOY\nToT0pLlNvsDz5BpIl4l8Ccjpr9IvFrBRi09ULRqK32sPDU7FK1tsB/t2iJc/\ndO9+DQSsm4Vqy6PCXLSe/hc2SdkdU2MedAVxPs5XdLm2PX5OqqL7v6fV5kog\nf+W2e5OLgeUnAXJCab8W1nv8w4koqL7pkzdSTjnwCAEtVgtDxDyHn3oefvxk\nnSr28zpPNs9NsZFNP1S4GFS7KP6QM8ujQ55hrPB/TywyVIDhT4PGEGYuWiaV\nXNxCWKM3wtdgc2cM7Ux3ixLv0T8d9bURbE6tzbYfOXZ30/MzZU6KTLA6AWaK\nXijn\r\n=E4a/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIELA3vUaFKNxDIln1xuKQSRWM1riZ+T3YmfaJoAPWsK7AiEAzMZ0s0bjnYaXlUKTrd9UuGY+j7eUbyEglJZZq7JtLyc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606157993-6b474060.0_1606158152262_0.7063595531124969"},"_hasShrinkwrap":false},"2.30.2-next-1606161755-878cfe15.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606161755-878cfe15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606161755-878cfe15.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606161755-878cfe15.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ItYG8DTxnK8sY94X6zPXlTi1TUJj7wrN6Jn7VrJ01Jg4A3LDnNUmQfWqGBLLQoxrQ/AHy2ZLjxOFETfiEnVppA==","shasum":"21f19b4c8394508e6e7124f3818ffa4ebac8c76b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606161755-878cfe15.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvBX5CRA9TVsSAnZWagAA6vQP/R1lU4EoV0Gp/7bhPafN\n83p6iS734Ge+kkMMJc5DjHzgdeUPIMhZEgZ0TAqYTFE554vrncrsqCXH6V8N\nL0Q/Y4HCNBnL3Z7ns4P2C7omhZKuqu/CIg+mWbENgKnS12ZnP5dcQhfYrc6m\neUwqUd1wnWX5dmXfG+4R/p6t5PCCuyNh/OuJQJfwQm+4yxfogAOO/NBlbiZk\n08LwDvYysxYw8SM9vAnLDEjI/27BQIpBk+YBorxGPkgbPV+PEFY+a6T339Ow\n4lg2Xac2ZNZI0/m9fw0AmF8sLHFrPgCF8ZWLn6m6ZSwkTBUXNLqUZ0tlaOGv\nN7E0TUQx+zBPOy7xt/aefYTuNT3b01fd6KDMC8QzGUrF5loA6CFfw5UuYFNd\nyGAT+kSlJ3Y6ogaCCaFC0M/gAeOR3MKR9wicO6iRNL2CanNsbXTfGqXFIRct\ng+bdlSqwJdCaNOs61+e/PxcGUraNHp7UIMWrFqsxjBy//B6iDzk37eXcBKIM\n83os2G+mmYv1wjoQ5Xaoqb+/NHgCcsTLBDEqxny/LhnGMNeJYGJVPRTT74x2\nNGSqLq1yVTi2v3QSx/xo5s2W3xbfFU4ujPdPOyFVzde8BG6mUDPxf+ZVENUH\n3BtPoPlDPp8d2pHmgGePaiTX428HGJpB+hpvCzyzU4063tB8bRIKDKUdaP5m\nIfwp\r\n=JWhC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDH0dyuSdsRxkPltJgma+9VeIPdgURjjkHnf4m66vIpNAIgFHvp0SlDUteDFZSWFw/r1evLRX2yF3PndHmsM7qVBps="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606161755-878cfe15.0_1606161912779_0.7508578684607705"},"_hasShrinkwrap":false},"2.30.2-next-1606162829-0c72f9dc.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606162829-0c72f9dc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606162829-0c72f9dc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606162829-0c72f9dc.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Xom3ZdUNqkFvGmEKYBCXbKlwJics9n2eAP+OOF1cUK/3uvT0gSRdt7RFDrNOlprCKkzjebam7XXSjmZoKOoWDA==","shasum":"79a8e5ee27db98864bbf875537c9ea926093ab9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606162829-0c72f9dc.0.tgz","fileCount":58,"unpackedSize":140976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvBooCRA9TVsSAnZWagAAKpoP/1iTQyvn1oDwqe2imDb6\noCb14nRPB5eX8Yf0af4xAKL++9horaHWXbodUH/Y9f/YEs/+QKIfM1XZ61KM\nIvXeDx+oTijYqZaecUGEHERWdu5tFQf1+ANwj2qNNf8VQQcLze3NCtUfwBCT\nPk90BRj7WIyyxzY5Pv2mXoBMTwNIC4UFA3Zak2PT2orkGqcs2bhP0aJ6kjA/\nPOvYi+LUc95jPIhZ3AX5MhN5oLidTGce+PAdElHxigKSSXxe+ew0NdhSlqoX\n5CqlpF9Hx0hJn5IxzTAdNRrT3jJn4maBZgPkq3Y/qP+YbAPViBDE7O4rGc1p\nfPRN1EQKJ3XgkmI5+gEijCm2EMK9wXcr+NrKKD1iQ6LDVO1zVcSZzo0vm7/2\n9GeA1gK/VcifnQPBgWbZ6dP59cwUINWoCwN3Wlnf4S97T17Ek+mr9Ls4DLei\nrLJ+YRIydbLD/Wt0hR9rohjc+YN6Ln0jlmhjAhPVrGlC4PGk2s7k3eW+0VjR\n3iozf7FoV9mnKvG+tKQTPPK334YlCugMnuw8gBs3Hw10B2qdg2y+4596DKFM\nlgwojTJz8Rm8LDPXpaq/uJcPpC6CXxypvua52AytMShs9/+XsjbCFxHA6qmY\nf8UIV9bH079QqoiskgAmubDiQByTq8YPuOnRFwDbFjSFYhAdygo8Y6GpJ94X\nZs34\r\n=ccta\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDx1Zr6MK7cEtpE/co0pz3Z9k7nsKSwQkBOa2guwFhMiAiEAxZTREpLUStnfjBZ36PkonTJZiEwpMrKg2G0lOwIELtY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606162829-0c72f9dc.0_1606162984263_0.8390478043007208"},"_hasShrinkwrap":false},"2.30.2-next-1606166242-a6eab454.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606166242-a6eab454.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606166242-a6eab454.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606166242-a6eab454.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-R0abZU0d7k77DdfUp5Ojgy6hm84OHnsKfhPeVgzSxN6em09goN/rQT0F5iXQf6k94ZR1p/3vIZacVw0t3NihhA==","shasum":"19787643699765bc02a6c3b8cc5680f9e05b47fe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606166242-a6eab454.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvCd9CRA9TVsSAnZWagAAJMYP/iR43JYLKkMOWytoYzmf\nzCJM0/FF66zTUt1f/36ghJ7CGTvGm/3P6y4yKH7NWcbbOwuUj/TRs/lTv0qA\n82gI4AG4utrWCprQSTtbdDjCFax6lFpUz7Bl+tP4ziJjj5K1crZ9L+pDSI6A\nIBCFFrRKnoCo/ZZiXoK02SOlPHAz8lBSQqQDUXg3VMfNsTD5vA+1/18vZfJd\n07wYmjjZcwboFzec707AskOtK7KBnoIn449KFBINkpjO9+g24AHnUIIjj27U\nNI57CBBOXnUGiA5zhnZZPQFm9M7cbD+6AUYz3xV9jkbkwoDGwetIzAX+aVz9\n27fPEwlFiUx/xb5rCS8hDAVHY1aZES+93GptUIxr873VIVl+tj7S/Og4UXvs\n6BYOBmrV6KqMK0CxtPkyh6RokSTHM4rZXBUJs1oxZIRrsT24yZ9Aqc+eXpCL\nzhhy6zUGxTgH0ToTxdmm3KghU0hx6+W26GWMhQhISzqIXb+s1rHyn7RBTotr\n4prec8Hy2WrO7bNZVurTDyBAdHY+sql6LyPclK1OILxo7PoWaZTmr6qxl2Be\nNPRh9mTSQSxXxBDtpRe2qBq3WaHTojwJPLuXJYIwT7R8cZ/9aLhYF2L4+T13\nFRUK7q8i5hac4bmIb5ODfQuXE7q9LIZ+PF2JlhV+6TOfpRueX1P5VdXydgVx\n0DpZ\r\n=aEd7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICaK7S0MiCZ0lUpJYCatFl8fLQ19g0oZfJrTcyL0CDwEAiEAlMHDyS583MFiNhwNGUvO5FCg1SufYV0Jqm1kMA4L/as="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606166242-a6eab454.0_1606166396807_0.49417689062082437"},"_hasShrinkwrap":false},"2.30.2-next-1606207176-4b9ac393.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606207176-4b9ac393.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606207176-4b9ac393.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606207176-4b9ac393.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ocIiRn6LKU1g/rd8bQjXk1Hs50BvAr6UIJKQfAOaLf3vLCW3/tImSp6dAwzQdB7jQxS5el9b4uLz7DLgjJUK9w==","shasum":"d0092673fc594b68e302c9c539e860e399905690","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606207176-4b9ac393.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvMdsCRA9TVsSAnZWagAAgY4P/Rvbw+LxeO1FLsFi2zUc\ny9ZNkcDlzlBX1i57FmoeBTI83iMApIOoZ+9fP18ZZ2Z+d+dFUWKsldin5OXY\nR/8W9P73hTzIhRJn+DP16sWqwmdPmCathf6vrLH3bOf5gx9sWk8nSmSKwaGf\nBBOma6+xioQWj48TxGLe1+BHcV96oRN52Wc69Xa1+tixhKJRxfRqe87wO6EC\nAO3dg3IjTSxccdmMd07Nb9YrI+/54X8LgQCsgywKrBkJRngCkOBxkZaFNIY8\nIQ/V4+y8YCzp65OhyJzZsZM6BvlhLjWKBEABXRhQqHfDGtSAgEu24wxwr83L\nttOgMGy4T5+9a5Nf0fMhD/SVH7pvMYt+zRQrL/gqZh4/sCX+njfeYC41k45B\nWXyo+Hl9H1SxsFr6R65j0IlVKrOBoSMEgeBtrg1tj8ypa16U7uQg5gGqbB50\nrqsFDxUvCentLPqex4GSQSPDLSkj9QxFt/2sRkMBYfhVU4pJwDTiEij+2Ecx\nb5WlZ92KdIuk+xiC0Wib80KGViGAU+bu6fHQlSL+nBUlD5GkUa8Fzw8j4XNI\nKWW4IfWGfvuRSw1pLpuzOEQwz+1P1dv918b7nNgaVl2ICiMqL01LeSECWAA6\nY+EI6GIDAQaw+8/IiWSXGRIOAdfnXIe/KTCACMw6PSi+2xDoUGCcwk8R5edP\nvcFJ\r\n=LFvO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEvB8t0ZdXSnRjAZZXQBBmWWQIVgWFQkSUGptosxgt/zAiASwbZrchKeBJIn3OHxGT9Swe8A/YMyvbPozw6hZWoYsQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606207176-4b9ac393.0_1606207340340_0.7579699774904294"},"_hasShrinkwrap":false},"2.30.2-next-1606214059-d51524bc.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606214059-d51524bc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606214059-d51524bc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606214059-d51524bc.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9P5wWWwA0GyRH0x/EzbNeZtGY60z9bxfeIv+c+ZTFUwXDV6BtRoEmQ1Mnt+6MQz5kPEyJ5gt5HWEiB4PteNMUQ==","shasum":"fac757a4f599aea9c0bbda592932d890f941733a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606214059-d51524bc.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvOJZCRA9TVsSAnZWagAAqtsP/izkbYfb6uh33PThCL0Y\n/nrR4KqtkbbdsrtcdOWTw5DcKgBwUYEyGBTYk5x7WonemF38Hd2bAAKAy/Ng\ncgBYm5kRb6j3IdwWylijsPfwf67LpkLv47wSly/ijw7oLf2c1blRFGbEoRuV\nciT7qsdmHnQZqefPHYD3/jt33MY0PSy5qHuV+Na8QCwigqXjRI2/5JEW6AT1\nSIq/75ZfKSErnInnOdQrCifYAy85VqrUVosYmcN2fZpFz6U5oCCd1Z1Fxi/B\n6VVNZtM7AUFypxQ9fA9y3ju1ec0c3OqZ/J6MvRKKzM9SuYm0ngeH38qwZVGn\nKWFmoZJJGnkj0iq3Hry/ojO1TYnxfq/5NmdXwWQk9nAsDryUfWrIc81z67IB\njeu39g/i2XXLWeI9kDDdRFKj++U8nct7duuaeLWbp+BAnsPzndkDsJMGCDgo\n1fk5ILxJaCX/Qp5a6t3g3wP0YGbFCEVQYyfmT/FphFbCaX1nwq61TyQTRha+\nVXrm1qd68eEGGm4MFptiYwhQV+/xTdjLc5XI3TXVEQ0ljr6/87JGaZzaz5BC\nh8W8QtF4VxcIFPN44tGPHRr57wrpeeZsiSglR05/ymNOjYv8KQnOuEenQUBS\nK8ywbOF3nsTpqLm6DdaoR4GhgD2JhNZ2j/BahqIW6WpeeAblovnUOrX+n8nO\ndgBA\r\n=D65w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXrcJTlHvKAVqVWCrRAaJ0Gk707xFVHu84vrTH6SCSMAIgTVroyV1rNcQKIjbrKBdj+0XU7+OK9bt/jiop/VqkAv8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606214059-d51524bc.0_1606214233327_0.07352650997489096"},"_hasShrinkwrap":false},"2.30.2-next-1606215144-2d50feb0.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606215144-2d50feb0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606215144-2d50feb0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606215144-2d50feb0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-k+BMpPGsv905t7+0sSFb05FLyoBCtwvcWfGDdFWXulHzkfTcuf9Ksa8+nJ/vUXpV+aTt0Q4LeIPAoJ8QKV1/rQ==","shasum":"d248b2cf2bce96a8b77e94fa80c4a062b8f464f7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606215144-2d50feb0.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvOZzCRA9TVsSAnZWagAA2+EP/j/l1T0gELm/MINbZdqS\nhCtb9RARciD3WpAs3KVN638ocWB3qMyWi9n0lTbBlZiIO1JZGaso7jbfjlF6\nF+bNX34/VQDSxeMC9853wFZHHWEkhYOpq9Fo/QNDlFFfHefG4LJv8mxYE0X3\n2yT//x/J82jEc5CRMahzKJJgO6oQ/PZZbp0n1ye/ats9OJnPUE0+hJnG9t/E\nDcJiMRCNWJ2IlR2J1oV9uzbbG2fD+imhtqscWtBNz8PEoqCOYyTm2lcpqEUE\nv5NIKz3FahvhUYcrM8Oh54RgEUuJkWLwHm2KkRsBYIeo6WOnJvPWT/6+uhZv\nw2GOpEU5BN6w0RYNMdpRtK7DeRxftu2eKZvV/iJ/8rTLUO/hJTUAQb5e3ouZ\niO5bCNwMdpnPPeEZG9nhBEuh1lx+evLWyzQ5trq7wy1/fpqm5MmdB9us36nG\nBr/tms5+OnWhmzsm13oeqWCsvDzdE5BN5W9fzVEDpuDXVp7ZtXUFZZqM/FMV\nBRe7XqYY6J6UlP+l473r9E49xJ6qzjmmXxnqPJ/Ip4rHuSn3r2Kj3BdPI1GY\nmkeZltkXTDwOLOntoTsXruPBOE0NoOu9zofliLdYQux/fFDYuGW2Kw7oBXRv\nfwso3qHFyO5kM6/SxsKO3Km6lZfALgW6xIjQafw5EJP1B7qtWRnF1d1ptcII\nYqtC\r\n=epfE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHEFubm1Yb2t78U1zqk+fhrmbILWJYonPA80oLZSeFbLAiB72TwrEfbtTUf37DssQjR169eHdPwRk7Dk62upvcOetQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606215144-2d50feb0.0_1606215282760_0.662042722110719"},"_hasShrinkwrap":false},"2.30.2-next-1606215320-6d188fca.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606215320-6d188fca.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606215320-6d188fca.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606215320-6d188fca.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-doS7sCAgsW5yhHJagoYA+q7XBU2V/4i2DmfiNIjnu+XpvjwcU8FI0/T69dkGIfEgkuY69LWj8qVsgc0qMcrHFQ==","shasum":"0fcb8fce0226d0fb3c4b53b7d2a676977d6afc4b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606215320-6d188fca.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvOcqCRA9TVsSAnZWagAAkXoP/39Ev+uooBHJSB2qsyrJ\nek1T9G6hrfYC0GTtB9ual2cwJnc3+gRdPEksA1tQM1Sa5E/01Edv+fwzXJms\nnD0ywkg5XnQD9HTZoeNPVxsDyMvojKF6WtoTcjghrJfX5jvH+A3OQAiX4UDq\nu4njt+zvSBQfDjq4HEvA0Sgz/GMzbjzP9f8jLY2JJsQYvxGbuCNgKLq1MT7W\nnp7EQzFDgzWknqmqb9lf7ueszrtT8ndsK53LZEHxLGF0XMGih/u40/8b0Tt0\nwC7pQBZHVXREyZZE6iNnn5O8T0ccsczMzs3sQRTEv1i2LzsSp/FGomQrubwE\n0NEiOrmjhtRL9OSy8ckQ2zO0CDYOG+EJbdSDxxseekTXlBn7sqt3BPqp2S6D\n0vqSnUGk4+VqlyQyQmaArMGN8UcsNtnu3yaM9oeVuvDa4knZs+k0zJUY+PEl\nhIHSLwR4MEANLPuW6ewUiyMlK+kWb7xC7iYsUWixT0lfQeB1JctyL9k1HGEu\nGMD5gsfaq5OUQpmlpouYK17oAWyxmS/madFYl7OiGFUTMcCR5nL2eNRKI0CL\n3Sg6t9eJYMBmV4R8w0La+uMhFAt5rZMMAMjXaE8v0PM2kdWbEg1Sd/HvItfY\nukPmbcTvMVDsn5NfJHyQOvt8PxS7khlb3De2eLgEBroN8fsh+YNKYzpT7aJ1\nNL3D\r\n=kpYN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICSUziCsEjh4+Y+hj+hhH8RWfTQI2zG1ERjtgi0WgXv/AiEA7hkp9Vd+mQksS0WxmIofD6k3EpAMlPHGJAHNj4WARc8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606215320-6d188fca.0_1606215466003_0.19723327740507646"},"_hasShrinkwrap":false},"2.30.2-next-1606216332-219c5d18.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606216332-219c5d18.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606216332-219c5d18.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606216332-219c5d18.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QVEWv91OHWdcfk5QlJYnTpvyob6MNA79k5eZpVkjsOCUWb7lQf89pdIrQF+10VwEF6O1y4Pv7mQhldrsPuGUTQ==","shasum":"aacad13ba6c137781e610f3e16189720df85a062","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606216332-219c5d18.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvOsrCRA9TVsSAnZWagAALz8P/AtnLjv5pX3ePhcu+jvB\na1I+Hh/Xa2f+ZFsL93NpbjhqH1FiC+pu+70qQ+hXaQjFS+fRrMz7vdoalrJd\nQNCI9CO9LXol+I4nW6woaM1BQAuU7zcjzYtJ+VoMwEbEk8C5TifL7zqdHyrn\nszEDTsUzoc+LCc0IfOE6SDtHhkIzizpc64EFd7PtL8h5DSd+l/41NZqTGgwC\nuxaYX6m96z6hVlLO5xjArBvNM1hAcJxfiyFTyOYBYKbdZMv+mjJWhWsACxGo\n2e8aA0VB+VxQFZFEwlq/cLY7AbwIGxlFLvlihJpIRWCtPm41RT9yogxBlhsx\njNZ0/hdYc26BHcurHuo4niLSIWnFF/ig9iJ4adF7reCnQHg3Ujocikala/lZ\ny1qvcRu9TANFLAez4zUKeDRFlz2SzMAjtQRXW/0M3XqKw0gjKBFqkNXVReVp\nODKgFc1AdGKJDppFyTQOazo84X48clHsi6qD2bcaZ7D80lA4sy5x18ro60jm\nXzwTjf7ZhpuojC9Bk+10tH1VVZTCx9/FmSr2e0B517eNDlJ4054mFLrugRtu\nja00ltgz8FgZJiQEl9ExJrc/d9vNf9wSIZ2wi6M4PyO0h8mXUMVcpDY14zXN\nckf3LXp4BHSW1sUmGFnHrjR/0hX+xBtrZER6w66b3fAZzjvPJGej0YrCtlPn\nGXcz\r\n=ZruB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCK5Oyx04szNABRV1cGGxO3bpd81hkKsGPAj8Bt6rbbrQIgA+Dmz4Ks5Jpa6m+J8ByFAaXv9SYGJI1WnQX/oX4kNQg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606216332-219c5d18.0_1606216490744_0.6916130064215527"},"_hasShrinkwrap":false},"2.30.2-next-1606216492-d0a5c1b1.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606216492-d0a5c1b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606216492-d0a5c1b1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606216492-d0a5c1b1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BEc4lGE3nsdYFokUhe+36R1KTeZGKUlgBzY/o91rBxCQt1KujFC1/BAgAAhDisX3cdEuUtpvAIs7Lqt1CEx58A==","shasum":"3db8a7dbcaf53044dc58a2a2e9b32c74d2bbbb5f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606216492-d0a5c1b1.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvOu7CRA9TVsSAnZWagAA9bMP/0pjosK/XUldyZ2ldl/L\nnT50cC2LAWb8bKepEiSI/mD8jYVqBh2NXbmu6hXo0jG0LpPdaHPonYJZkxjt\nBE4zEq9hPNX0d7eJtjbuddOR2CrG0Xo6B/SlWVz2w99ZUB6MPDhNubnAegYA\n8b1lyrQYcyCLwmqZoz9pHvuZvgCyNwUTicJqLs8OlKSv8C88TlQ2FHiK3Nt+\nvlVRvg7iENcehRZ7drJbFIgTfE/R2WI/MkIyo1Qz0QbVM2gctyUrByow3t5p\n0t8z2lYgIgGJb5WyeldhYBQERtWwbQpovNAExHorZWfnRN935CA1qBEhnmV1\nUW9c+6gDYRNvpzp8WN62rEsv/fattTs3aXiZ9/4mPDm7vcfqJURxWnQf+Rkg\nTTXtL24dVeIgqtDnlqlMXmmBFPJwJNvWk/35wd/KQlcLz22OYf0/sQHIi8fF\nMinVm7A7TN+TzwHP7y9u4aaPP9zq0KNBUV6FAjy17mHQTi/3Lmf8kDbjgoOI\nkzootznteaMbhm7Fmvw3Vl0vAimC5aLCg6k/20dxPtIMd8S8ROa6q47h/yZw\nPiWRr/MdHI4juoNa00a1iPsM8pebFc2IKTeNBySpDakdgN4Y85owDJigVE1g\ngyI4MjzNZXe7lLpsQR/2b6OUNaiPY9dsOLAWtPlbuc3PnXhSwS5HFyE0+Bvp\nV4W/\r\n=IYOk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPMeh1FMPbRd3ljDwe2zYisjRRlsoG5MfqkLlLPo78uAIgRyEbYnOwt03xhZWslluGH48bkI7XAhOfKXWNdYHntGA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606216492-d0a5c1b1.0_1606216635069_0.4779797272382993"},"_hasShrinkwrap":false},"2.30.2-next-1606217123-8b4e0328.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606217123-8b4e0328.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606217123-8b4e0328.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606217123-8b4e0328.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-P59No/Mf8eb5kmw9Ogy3zvjK1KkzXqRdLH2ljTgfbA0WGNAlptkE9fYzn3vRpRzr3YVLHG1/dqquKsn6b24b8Q==","shasum":"7cee41c9be9042d844cf44ce8f8d3f2a3d8806b4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606217123-8b4e0328.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvO47CRA9TVsSAnZWagAA1MYQAKOeFT19FLIMZoGRcVDZ\ndrbuaUuThgbb5UGRxqYbrJ+JAFXfxNpbysjx7CvtLdJYxMIZpv0R9QRO5fk1\nUUcJf1IAp6oKJdvdgyg64xbItbEB+oZuXfGAejgYbdPSQq3C03KOlc2IYT0N\nFi6v3v6YByTTutv2bfTzdlsahk2854JGnomi44oTrQZ9xTl1Hms5kNuIHrao\n4jUXC+1IDNAFK8Ds115Tlkn6T5SmFb0UF+7/Spsod9V+Y9RvGuSjmK0OaP1s\njV6294JMewJ6WRXkaOpwE5qGH8C3qJOAJmJ/ciXdkR5JbgXcUoKTXmtfved1\n+vYRZ+HMXzjNY4+YvY4MMf/QtWdvWna1a5NF4SbL4x60aKIyNI80ZKXYyhmI\n5PZ/D986hoWr/zTINx71/CcZtT96JveEpA2VZU4V2HojdIOiYWRTCY6VpUVS\nncTq01+0W4D9Q/bobexpyMBjHwxIIDUGC9YzFeriXmffW1XJWPzufJ6idUOY\nBMSQ8COFumDE09E8v7SVOOvV/tkj4ahto68NBvZtJIBFLm4TEovE962Chzzh\nkqAJjotP/HB4+0BFWnCVQZvb6xrKyWz2qeKxWMk8TgRLFrCoVdg7Dme7p268\nW5lc38PhyspAEpu1ywHr7aW+M70RdIoDYUgqOnE7UPm4gvPVJth1txTmaa9O\n8mVJ\r\n=o002\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEAlPfZg/P9Uij08IVnrBoWG6MNKAiJ0G3UC6Hlfpz/8AiATOcseF2ff/yM/IaFn0Aoq2CSSGqMbHCNxapeA1AsH7Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606217123-8b4e0328.0_1606217275074_0.38741179636114786"},"_hasShrinkwrap":false},"2.30.2-next-1606217678-3d1d5313.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606217678-3d1d5313.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606217678-3d1d5313.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606217678-3d1d5313.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vZo/c/8sS/ZHPxtzdG3j35OvvXhflvd+vJzzolP2G6Yl/8hFKRByVxSVuC4FwzNDw/2/uctkd5EJFvqbF735uw==","shasum":"2672d41b2316779b957e500d29ff1e55a55479d4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606217678-3d1d5313.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvPBrCRA9TVsSAnZWagAAkksP/jfV8FgqCe/2bapKjPuW\nA8Xm8rFZeMKDvFnXHGJSFTkX84iUrIn5x+IkNVDQtbnw9EZC1ICBMm881Ux8\nr+cvnLN10mkD+/2y+F8h9IEHnOe5uNhM0DBa0x0FqTRg6N21JqaY6MYGfk/V\nfcrDYkNzvDUv7PrRJH1P1HznjF2sTg4sirbgADEWVWwvN+eFysbkXvgNarmr\n14k2VyKtDKhbD1bfvwSWKl7SVawq/03YQP+JCKV34/H1Xj+NtQe5SLpuz8+O\neVNqnv9CKWEU9PT99hUoIdx8xRdYZ00ydGakLl33ivgunD4jvT/u8O0lfNf6\nAHjOFHfnkjd+hhhGbF4hFCecpRTxzGmHlwpYtMymaxgfWAIBymYkRR4EWN7t\nVe1P2IYoBv0iztDV9mp5fnBcUkrlaSBPHrYhuL/n/3bIJgYcYzoFFHtEj34p\no64utfZ17t7df4ZR7XYN8io8TD9q/VNyy8mDe4v5tQ8PAEWhytc9ZcC+4Dx9\nLkqw4WPxjXUXXM7Y1DOeP3+4S+5hhKbkst0ioBZh4L4IZ5OLPpvpd0N8R4gD\nzfEdaBwx4QXkDecBPo2ZzP/gevy00LnvVv/U96qGWXP8DBlggffoKAr8tGIN\n7022jhltE/jzZHOlclprPM3bnQDfxGu1RwtHjxVY8fpRTxgLPAK2YRfBlzS3\n3APW\r\n=kkkc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwRn1yCGFbdRitHWiph3vGwuI3S0SwWYMbUnPD55V9IwIhAKpHum1GYtWtGHgvdN8PIaLhcdiRagVtXt3wpBLJATw/"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606217678-3d1d5313.0_1606217834900_0.7213326515509797"},"_hasShrinkwrap":false},"2.30.2-next-1606218183-73124394.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606218183-73124394.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606218183-73124394.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606218183-73124394.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GfEV6VAMyHgBu2XPIsji+O7NYBGUOnwrToTzG69/E+CumQI8BkjU2d2FXNib8wA30Qvg5Qif3kUFvrzoQ+SH4g==","shasum":"e6d11a548aaa709b8a2ac62e319df8ca7f29239a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606218183-73124394.0.tgz","fileCount":58,"unpackedSize":135041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvPJSCRA9TVsSAnZWagAAIT8P/i5dl+Fvz50jANIWTiQ9\nSPOK44/MZVIXCdgWAGb1kufuvi15Bl0cfNGHS8Dmc+G8yjk4L3hTRVphQfJB\nDzYVKx+OozhfLMJcLohxSSdWaCWX3hc5xZfLIRgOo+XeDjE01XSxRZdUgSbg\nRTpSEiTs/yYGurzBOPlEZBE/lFNPxswuggymLerrp2aKIQMN6yo6uiaNUpzz\nmlecDDDrnKKnNqBo8PEYEg/XAbnDO/CTFIrqrgRWa8BPJAolyjpgwYjUWHIy\nGiCzHgu7Hjr+6xM0c1kVY35p/eJyUDDFgC7GNfnP0YgT5mVulm9SUZdvj4YD\n4zubx58BffPVB+BzIOz1qhwn+nhKSHgv0L9RS1m3zKbR+HOpf9YiRiJeL1gI\n/7WKCw0X+t6VTuqR0VyHKuw2Bkbe4jfPmVjYSGZ0pDmhPU1oq7YKMQLxGMYo\n8G6hOVZvmUvy19QukXi6QO6nExV7z3l9yL/b7QvaVr5dSamL2nfJfsx9SVVj\nnePY4dq3Nc6rnydxVZbNGUWDif/NKvqzTx32bU4YteP1se1CzaTg6pd/nDvA\nymE2mh6+bIbA8T7l+1hqMVjjJHvAbtexOIqIvffqq524mzPYjUaKv1mzlLP6\nfDMtNHqgs+8aGqXUjeHfO71r4UO36BhSolWttfs0jwxflsEKVF3t2XByk7/x\n4WuJ\r\n=B10k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCh1zSip+yPnIv9uiULENdjpV3U6/81WAkWtLulgPgtbwIhAMf7nCnMc23Hm8/iG/9FAwTEInqCYTj5uv8LKq2e4PKD"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606218183-73124394.0_1606218321702_0.6329997607897875"},"_hasShrinkwrap":false},"2.30.2-next-1606223112-13466560.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606223112-13466560.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606223112-13466560.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606223112-13466560.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Azviwe4ealY4iWXDocY6jcJa6acYatWnk4bTrY4mvR0q5ueKH6Ak2+ZcwTIuZ4Pv9KIyr9HlPGliKmyKdjjxug==","shasum":"1ca83fccdf3db7e24ed4196b3b919db23b813d46","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606223112-13466560.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvQWVCRA9TVsSAnZWagAAeLMP/jFJIjZwIvjRgT+jF+8A\no13BKkA0BwXCax52LjRsgvFhxKpu0o4PFaV1gtR+li+wIjBxjIjvrKRuw3nf\nUl1XGRVGDZUo4Abw258OClbREFcgCxLNLEvAs0U6LINiRfrcqunmmi1HwOpD\nbJ6yqwxHEMHwe6So0psloeOs3aCitcBqpgbnhEzW8nqPKcFUUszozx5wszzn\ntGIHiU3e5ork7jCHCFBKTL3jUITB6mNXeY2ix8kO8CdaMQOd6GjT3Tcd34s8\nxxi+RIHrtFqSlzoYai2LNV0dPQwQdNmRK/XrzSbU37CX2xfV3vAJojzDqAUY\nLX1L1EMLeqsl5BaQrlVkSQz+GpmLlYix4G33YR9jJZYwJMSRgcnxKJOLvd6Y\n6tNhu6AIS/D6B/5n6sLTp5fY6XYsraMEvhTAyvJz/R/poMoESJ83tbnLfj1S\nywFyLhBsmog57y5eu++dS9ZLwRnPIHerAAtmjU7GfhQqfZEwKa9lEWwWHLb5\nqhSFy9LwCoC2ACBDoU7Xp9EXVu4H91Pn9RBSYibm6qFTFU+ng72JYdOQmMFI\ncmDk9Nd7ckD2UgYq+Qcs5wJBWYQKuHNLBkchPqwxHcmaqbxF6TNPCXXtGwlO\n8pHA8sTyw9vZGUAqA3bzOjZuv5cNK3pDYh4DKJoxagyFSD7Xaa4S3cKy1EJ6\nmpG6\r\n=N4m7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZcI9PPGK90Ymmi5i31OqJ+12mykaAMHc4S1+TsKuIkAiAvfgZuKKE0Tt3RAlumECVJk5cRTrTR5nCcFoEv7iFaDQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606223112-13466560.0_1606223253203_0.2014321165422035"},"_hasShrinkwrap":false},"2.30.2-next-1606223136-9b227de3.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606223136-9b227de3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606223136-9b227de3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606223136-9b227de3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tInlAh4kmS4GyhyJ7UpTvuk7o1SGQQT/ahy3FSt2zPSereMjFjqOPmaE7GcW7nfmOz4vvmWJiytk8Tbc3P8nqg==","shasum":"31263cf8147ede95096a26ecf3f12c36db3fe9f5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606223136-9b227de3.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvQXBCRA9TVsSAnZWagAA94oQAIzFVD+R4X2E++ngxnXA\n8n0U9+I99xjkf1EWUkAMRxix4T9Hr+cCxHay2FbDhK0KBkjxEZEv198WI0Jy\nlbvXzTuxHfmwCEGJc6tUUWQbQsb+1g1AetUzb/l89JHvBfTXdJdbM2ZhMJpF\nN8xgo0pzzedZi5wWfFjaz6cLbx82WYIz7oZqhMkilNZmH6jBmiZwcnfYJOqQ\nQF4xjMj7dvGtHOlt2TlVM5TkfIJT9jqxrDUo8KAcmGd9zmKwEJDybSxPn4db\nkTYMH62PM+r9jWuv0Dol5DWvLI35VV5HxwLrllGxMIt+/pI0HrHFs2p6RJWX\nltGijIY1nJ1HMrIv52IdpeZzCs8+tZxQysG8riPNnmF8uPQcGbsJfn5tbRH6\nQZHbiaDKaS4CzplyIi/lB2XfMfoNrs2JKkuHTQejdpHvV8Gb3j9FHS4sbP0M\n5EZtiQK3t/iUY7aLa2wQPBv4ed5eni1ZWklBr+K6izwahi72EhJad0Wc4Fu4\nMKMJeCoN4R+GDqZABa7u+kZuWYX7ZH0fYVhke7Af0BnrTJZAnSYvoW9lt5Yh\nccvtqX8rBw0d5ZOVtolLXrtEQrKjhUKSrrR5mPEg42c6tqLNliGkZzrwH0lQ\nLT+/q/h0XbTsZAdbklAjpMlAjibaUF1K3/WndXFiZZ525ZUWwVM69tkvDS6i\nlZx9\r\n=MSn1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJSfN6xgtWJCC3yl0xUWQ8G9tLeuXdaWSo15GaErWE5QIgTWOkp1FOT+safnqPtdx7pd9V2zScmIeSuOpyK9bzjVc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606223136-9b227de3.0_1606223296617_0.5293215572241989"},"_hasShrinkwrap":false},"2.30.2-next-1606224031-ef5356d8.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606224031-ef5356d8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606224031-ef5356d8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606224031-ef5356d8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yyzplrOri+xExzpCaMlAZ6ABZIuk+zR0Lk6PRWYIQCyIhsIE1YcdxczFx4K5Mehtm2rpwPFeND8FweNbFqv+Tw==","shasum":"e83a2193cb5772bd22a3aee2e0fa46db87dbcf0a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606224031-ef5356d8.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvQlBCRA9TVsSAnZWagAAHvgP/iN7aT9B3m/gNUzASq2g\nvWivW8WA6/myI1mWEuhVVXZispjffvxcNESYm1CDaq8SzZHIszpNBKqcOrIT\nU1ahCPQ/FoWOe6eAaR0UvDsGo1MS3c1tRXS/4rDPG3tVd6Ehq4udvE5MT1WV\n+Xu6w09ZElWnBbX/N6sIn2AKFLheYMEm1KfCcoSLLjOjtYYrCJ08znjGFlv2\n7VGESrYP07Y3KoTOoKpyvA4lnV2qU1OnF5qoJRvOyFiMBTAQx+jVOvKXHhsO\nhhzk4g3Yg+8jDm8ox0P3hJUOiBlR9u/Gz4f1mHfc1YSzG18Yc7B6/55tWppJ\nF45Q9oMIF67QC/eug4cRcQdqXojPbNwTI6s+fJ6ascFGUM24f0iQFQVX8J6n\nBZhp+38qp1LV9yzQCCjrmT7yBrZnlALsSHCxwqaGWi9ZxJasOhqUJIPOJHs7\n4QaFiNg+XQKlFG0ph4N82QE2VPkurhhnjggTHGhxFOPt0xQ2TfIdY87zKKax\nCRG4N7Pa4TsE63rPdv7dS3IHzsyQSMgT0dJsusECv7nbyJhaaGlXHrtaGDkv\nCyCf+1udIhwsWbBhsoP2EBPGrdWVup1kUk+nU0E5d3nJVVHgsopgwD2hHchr\nqfltSAYyAVqMtvwWBEd/RcCA+4uor8DHqQ/MvC2zKrg5TVZWQ/9586uGTjzy\nCC2L\r\n=cHKx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC86er9uFgjVCb7+/b4AbtdBX+mnJybnJJ/jtvf4e+y2gIhAPVqENI8hHAvH2+x9j4f2TZiXIRGDqVwfJkh4BHdmPgY"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606224031-ef5356d8.0_1606224192504_0.3888091229667905"},"_hasShrinkwrap":false},"2.30.2-next-1606224249-d521d4f3.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606224249-d521d4f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606224249-d521d4f3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606224249-d521d4f3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2mh3S2zxqeuYlve+qM17uYMTmyCSFLTFUhA+Vsb5abgzpQ9a6dKl6dmuYT74zmHUZZ7km7vDxjZPdviIaXiYyg==","shasum":"a6deaf395ca8b008e00af01e1db3ec43f588f084","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606224249-d521d4f3.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvQoWCRA9TVsSAnZWagAAm/4P+wX4c9EYUKkT+03Yblvb\naGSJpwFtxIM5fLltfq4lQM0JH/lNy13VqsDyu4LylfJLbxHNARX4ydXwSJUm\nKlIFHJtHlAK1Ty6ZDoCj/r6VvCzJ3NUxR5TxqjgwTe2eUBadKwSinwk9nrop\nnjV2n30RUKT9Cfi6ekXqMiXiKtNM7pxn36I3gyJzKAmsZ4SqM8JvhMym9uJE\ni7C7eLCCDxDJXbKkyI8xM+KFa4LjDJQ/J1xkNpAFvp4w0UzjJL+3cGCo4JrW\n4t3cWheLeq/FK0Q5aMnwUSo1vKkeYF+lvo/jmVGhhQYLzJvso3ICnCtduZtZ\n+zbcS30ckqykPCDFodHE1GebinmRLFgIqhnLbDdDy3zstfumgMKxeaCdNPGy\nG0CM0mkXDP/JcRW8g1kV0JXtN43In/O+uCLUTLcv87B8fGxEzlZ5VmMdJjtw\nwcLaoApGaL6W/H/5cyFnZ1y5kgwoa8F0EU5UHwN108a65nkyNXbSZpLoIW6i\n4kwr5ChA3WpxR+LR1ESVf0UV535gDrThUn0lA9NvnzjtsQRaPknECorXwHmU\nbADN3RbkyXGCpBcQ6P6nADndkyegwhbAPwIkzUHFfjYVLgDAMMGFlFIGkkpY\noxoLDmqsh3IwSfxEKkeOuSWwSqe8PrWq1y6zjwLzW9GCXnYI0TK9xG7GMH7l\nSMRt\r\n=X/vB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAvdD8W4Uyp2vH5QebZRBmMAa72tJyuTZZaXBzKx6fGhAiEAzob8Sg7Q5HQIP0Ar8eASI9hzLFtJBBlUZO3nRY8rdH0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606224249-d521d4f3.0_1606224406035_0.23046962466057241"},"_hasShrinkwrap":false},"2.30.2-next-1606224768-89cfdaa8.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606224768-89cfdaa8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606224768-89cfdaa8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606224768-89cfdaa8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WlLRN1wGjR1YoxKFGWzg2lXy0Eh3pv/UjS8LU+qEpu1eWJWKbfZOcuppITDqONLwh9JcNpgqTECpaiOM/j+62g==","shasum":"f28c2802c70eb9142cd597f3d1cf8bc096757460","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606224768-89cfdaa8.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvQwWCRA9TVsSAnZWagAA4lYP/3V4g75fKGNiZX/fN/jR\np6MoA5ukZfpxQTA/20JpL+L4wJ+Oj6pAonEdfvbkpVjDp+iO65M3KKA8SWLK\nulxYsx0MGx7dbXErtgWL0AT0BT+ueOML/CHqIqQFeMDqfMcoR792ub29s8Up\nvszPaIMbESJjQvVfbrtX5ayv8c068mPuHErg/kzn/psQ/OqEOw1J3CPVIkwf\nl3Am+IpkoP8z/guXh5OHdBjTJFLLSwUUPdU6ARA8+/k2ICYa1cRWflbOzyZq\nHGREXog8ZZYWq9rRGIMWjH3+ju+TNMin0tm3yN+G1RF7ThoY70kvjQf5nCKX\nTqozolniON4+TSbo8R8bEcQILfX5bsPQZUz+TOYjlCIl8kGK039EsiXUHZ0m\nUYzs5ldUjMSQmCd4tAirc5KxRVxws95iC7R7lttFGBLRcoYcy5YQ6MUEhFjE\nlw2Q+s2AvTqCkMT6Ucr0+nRJhlmdExvyReOBlOHwb7T3b7/dNqKrnCMaCf+j\nM/wWevzC9VLZWrZuYoPlRvOWaDm6qpjNGXe6RpwkQFy24VttO8p8+rUpccQY\nHT9FcMZP6GDeoUGjRTL+p1oY5ZZKm3LIOy7m0/ZPGElaLY8zjG3OB47yjxZR\nwNI5ty5SXK+W7IPYvVi3nByKm/3kloyhZdXgvLq7lg5aLOFZ1erP3at2GsZd\ndsCi\r\n=2bOA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNW11kFPawihGxU+nhDJQvhINI7TDKdpBwtM7opOrkoAiEAi2IycnCe7e5PiX4bu7h9Hq0yJ+2TjbOf9JlrFvn155o="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606224768-89cfdaa8.0_1606224917979_0.8233984410037922"},"_hasShrinkwrap":false},"2.30.2-next-1606225391-5d0a4332.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606225391-5d0a4332.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606225391-5d0a4332.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606225391-5d0a4332.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Krov39QmE4SUqE0UyoZ2LcJYl0sqV0ORGl8HNmTRdr60P+G3yAsYbsqB8P+s+M01v4kHLVpVhq7IkfNRKuLsiA==","shasum":"6d91c28d9082d485c18ecdfeb79268044873c84e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606225391-5d0a4332.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvQ6nCRA9TVsSAnZWagAAXSIP/1X9014QjgxaOpNgEfyM\nNJae66DEt90T3hx63WBjr6eJ10vJnxns7jrS5WqwwMJHXoCN54Zjs931nr3G\nfk2YcCE4mk4g2bHi5q9NdmcMcTtBQ5UmWIFy0kTpYWzcc+pvRY+cC7jzH2JX\neaK3vVl8XD4/rAlNnK1TLf1+KFutiic+q99H0ESIqSj4qTeun7a0l0yMaePJ\n300poM+RlTgdsrjZxgwOdOFq4Ow0LBIVxbLz8OurV/S0DecQ4lQ8xXjGKjOu\nXIm83YZVqw5sN/VjjjR6UtkF8cim9NWH6EPwAOb/PEarnLx5LzsaOOTYyweu\nPxmBHbXOz1SQgTyEWC9ZtK5JRXPlD4QQ9li/QDfSSJLLGBuCC7EAwM4wMnYq\nNsQ67Pps7ZNrdz3nU3dFtjfl9Dwr3ZYBUbbLEoRwV5IJPdbLJZU2AhntXimY\nE7V0SjWvkh5iHpqS1aiHkllUNB6OXfYqZAmZYLnto/SSOuiKOz2VnjiT32Bb\nn4iCe57lXDH6gMoA/O9u33VapFnzQujkraCQhodohUacF4CK/X8hdwR+W0Vy\n+kBN0XRs7Q2UgKtMrch8WOWQwZp/nGEbRvvKSbzH8yj3eEieESYSWnOcM9Sv\nUO56Q+DpCFfLzYC5cyejIsqAzUlJx9uK+7FxgoFjzo/u3xGOEUBk8NuoY4jL\nrkLy\r\n=r/q9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+mgPUlMEJjuiLvcb6Z5jlAIykIl0BMPp/XHHO4cBqqAIhAOk5Cdq30cLUiIV9akka4g8p4VLMFph8D/uKllQDLNHE"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606225391-5d0a4332.0_1606225574752_0.3069857988831928"},"_hasShrinkwrap":false},"2.30.2-next-1606225470-ba9c82f3.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606225470-ba9c82f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606225470-ba9c82f3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606225470-ba9c82f3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4frW4zXbMAu2Jcom3iTqdIrF80WsefLl3vrgR0ZywrNYPtVH74qJG5FRgl2fDwwAXk9wObgug2eqT7lUKONbmg==","shasum":"8789fd64c4932dc0039083800e300cc7f177c420","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606225470-ba9c82f3.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvQ7zCRA9TVsSAnZWagAAs9IP/Ajjl/FM4B+AiJzGD3K7\n/GGGo7At1XtwiaO4kg7Le3X67O0KqzGj3MSe14u/4uR8WsDwMFRcCt+INx3K\nPFK+BXSObbY7hnQAs1LJqjTrZm7Rzop87lozimZeUwyzfTQDkBpBjJpLJ3d1\nRpxEW9XoCPBDAspbmd7gu5R/FWIeLmdohxN5d/7uZDNYJW7WYjItcgez93Ve\n/s36Mk5AenvFPS94qT/A+loX1p4KbG/pxyagOUaErfe6hcpLET0H/Fy0aPQS\nfd3ZsbH7TBA96K8ImF0Qr5cGvlF80NsW+j0GrSHWin4T4OdeeAZ8whtA9cr8\nUZ30QnvmwCHbMbJR07ZOmRb59bmh91W2ZVD3zN6kEEWHHLejodnA+wUOaGdX\nkAtdgOpUyqT7iQ3aHF5ez2PaThOpcxOt3zKxdL+a7x7vdhRRVQ9SfMkYTBjW\nnTaC89TjBVJiFXat4wz2OT4HJsEiODnug5jCBzm2ciIwHmw6wJDS23mk3XEN\n0aY0mecikr5xQa/mwO5R9n33/IWrGni8mA1QUhCJXYFqO102PGFrX8+GnB8O\nGkrygQhdYbYo1H2myvhf/KEy3cxUXSbhAEwAnR9ikIEckHTta6qyIq5/upg/\ncbkJXqZq1xOu4+wMlMXVoQswL8uq4fsuI1PGgRAEzaCfwA0kx8S5SocEaQzb\n/wLk\r\n=zOri\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRkboEbFySX06NBn/B6RcVBjA8/zI1SwlKWJi7LLaO3AIhAO6N95s8DaJeraZywEWNQmEw97BoVhyZPwkzndd+Uffl"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606225470-ba9c82f3.0_1606225651343_0.5507018109200361"},"_hasShrinkwrap":false},"2.30.2-next-1606226191-19c7a931.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606226191-19c7a931.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606226191-19c7a931.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606226191-19c7a931.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wtLBADyEQvKi03c2pPgpXSXN+CCT27l/3BT+O5Z96zphjsPJOnYHQMkYHZ8Nau7Unmz/f2/gL7zK1j+nirWGrA==","shasum":"34ae9a61cf0e980d666f4aed4ceed4110c201e22","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606226191-19c7a931.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvRGyCRA9TVsSAnZWagAAV2AP/R4LDdd10e/RDMPNS/l3\nZCZUV5V2AKu2Yncyl/SvfToej/6qzyQjRBf8ACfBA5rjYLBor/Y/2jqRxsKk\nOVlS6s2vjh7EilGK2o4fUFcMZGXS6yHDyihOhklpMAseljbQBwHp06xtJP1q\n5Y7Jt4qM5lJpRnw6HeRmKWmzAZWCLJ3bDy3fstZ2nlioVRduVDEEXliwnDt3\nkETowlLQSKfUlpj1SfpBnNVT1Lvel4PGN3lK0p+lcYe+sriSSF2pL2zuRgOB\nANjEmQ/G1aApPRimIcbnwAKyHYD+Ps3baKFs0tjirdie65FKvsRdJRPOmq7e\n0zUwDTZWTc333zbQQbwfjgR6uW5bt3b6j/Z8h3xu48EjNFrAlQ36v14uDWMq\nr81Ad4edLFph31cVQtLbdX0yiOHEdrAw+eDeArRGr/bA7am4kKNsltMr/cNw\neL0uyk6BMfZdzmL8mImlM+7aLJoEdCNnQzWmhQ2BUz3Po2kJUk0bcQyfU/bu\nlRYrWsxLUi5ueg44m56OYXWNDI6BK+xqzcwOqCHsh5ZKRv5wD/bEd6cvyB1S\n6irbfrornm5uAAE7HTNyq0n6/a1VmB0TrUcQrfzMweu+3JBo5Dn3J69kk8Bz\nsCBI9RWPeM1ArGU6yA7vzSNLPUGZzeAoJLpA3ok4NYVgfjwFhyTm1xUQbGpD\nvcEy\r\n=dXdP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICXUP+sDS6uFp+TSmhxl0W+FDEsSv7skwdLxHwpuO/JmAiBgefV18ASTBdFU3unhn6TwRIWFUsfyWo5qawUQdh6MfA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606226191-19c7a931.0_1606226354134_0.19147748555586053"},"_hasShrinkwrap":false},"2.30.2-next-1606226688-2d86a8ee.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606226688-2d86a8ee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606226688-2d86a8ee.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606226688-2d86a8ee.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IN3KSm28xKGFWl0WdNYd91o/kb65fpfrOupF5MPYyZ9kWUhvV4+w63n4M9a1N2nS9viwQa5CYv138ED87kQtJA==","shasum":"0745df0337e3819eafa271a77a0e24e8097cb19e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606226688-2d86a8ee.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvROcCRA9TVsSAnZWagAAKqkP/1HY8nyJM6qPdFQkZTOD\nlzn3p48+o3wVJsPNZBuo5gHToxIw76tF2/NRTv0YAmPdw+5l5JOsAsVPRsxo\nmkcYc5q7s2KzYnMxJWWIEh2PlDoEegKLd8+lJZJp7qlN585JFDO+Ahs3rwYl\nXT4p2aaxQ4DZF3XWlo2M+8QK4kAl1Trn9aQwTl2etPXgtEhD4hX+8wGZ+kv0\nYbkKs8lxjIIAit7Iq1aXgDiQ5acl4aS/lGLa9mVrKinQnZoSSC4ZxeM1qSwJ\nDIXfx9rYh+DtJo2EI3Cneg0WUsGXYXhdcbDh+oRwA3fLKz5wJ+oJxACSJ2Qy\nZa04jlTu2vdC3Wh7CslrD+sDiKr9JfnZDIHb5PHxSOBziLllj407enR9yC9/\nb/yY4b/Kmj55/oOHb4HpCm2tl6GpqepNKkxzv7OTXC8COOOtP5okuXl2HgSl\ngazHCdJSKZLh8av59QjsT70bCF9vxGt38thR39+1I3ce2ouT3P21LCKFaN6F\nH0jxpYGxHVU4jMuWxTw1My5QxDmRCuBkdGtypLPsP/8h7Os612ru1oC5efeL\nZpOwhwih2Mt7tR2Ft+crz8/a23Wt+OjGt/wxsUPFRsrFsZ79fwFwPdAqn1DU\nAfCLtRUk8MzM5FDGneMXn4AGl6OiM4ebYs1WhCFU5eJtPguyDTr79wp1dWH+\nFbqw\r\n=xO1w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRMDXDatQ6zKS8h8U/GOjE5lLQp4UEUwhJx5vvoDcxrQIhALOqikMIIkEi9x+PCMRX1c25OuyqdifhTLyxWj+2qaaG"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606226688-2d86a8ee.0_1606226844196_0.39472154199484155"},"_hasShrinkwrap":false},"2.30.2-next-1606227314-88cf26c9.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606227314-88cf26c9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606227314-88cf26c9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606227314-88cf26c9.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uNXt07vE+XXsHvhFml5Ver5BfYjlylnsEBoYMk1BRAq7zvL2RT1a/Ler1vxIaYDGHqf5UR4f/tcHBXXvHv+3JQ==","shasum":"1036486db5578872840fe7b1d8f6d1c2a948c797","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606227314-88cf26c9.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvRYVCRA9TVsSAnZWagAAaMAP/REDaspCpca9DEtZxvub\n26A8TCEpgaO7XADGlzMoDVhehLNm/bnWw//WPzsWdevgwu3HFFlmsyrLNvd6\nw2sjmWDxMEme5ch5BD7jVjs3FAU44ZJ0obphzFHZwADX+rd0lkDI9fxXJmKT\nkDsyHLreRsDZHnlJXLHrN07KbE3oBt4yBz36ZnB058C5NbRvGDhjUQDrr9mj\nF5n8ghsqOnZn0vLn8lpKlYoeEOfhGQFE/CnXJaQtDJx+8+6BZyApHv58xbpp\nG/ZPSSYTZ6fJWfUgHXEes0nZm/9l4AEazjqqpkT1tPpbGrVX6E61HIYKOAD9\nTLM1d19HexjMK38G3Y17do/K9JqdftflfwyMkITW7Wt/xmiRsxw8Njn1V8l/\nQAIJDdafh87z4pTfYVYk9jFBmPKefZoGkdncam9bzQP3FHgxY1fwJsOzXOa0\nk/2peJElPXdLIS8Joa6LbrahD/JMG1OsImwnDFe5Nw7JIoFomWnGvtgorH7b\nmskxEfTxz3d2I1Mf9mIEbFpq+mliTr+3EmtQA3uzlZapjsJjaTmjvAb+J3Oq\nT+zwE/C/e0pvbbD6lqxEJIlekyJsNGD/RGMheEnaTkOIQgCPLhXXW1Yukbo5\niZN/mkl+r/vMabyA7fmRqpqUSN2Ny2QtWtuNmk5RVMuJanDbmd17CHjvgOAz\n96Xc\r\n=WxBC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGUXApOMTDjDzBDnOHjPSfR5GmIHFZWpvmBlQ3XexgdzAiAqDptshrhkuIyHYpDe7MvuudPnKc7QfnCkgcGAL39VHg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606227314-88cf26c9.0_1606227476585_0.9314556512553538"},"_hasShrinkwrap":false},"2.30.2-next-1606227549-f3c639a7.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606227549-f3c639a7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606227549-f3c639a7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606227549-f3c639a7.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GmBuZHkT2FrstShyHQWKBBy5H9cgkCZdntyCPaPRL8J0kPwm6JI83oz5igm3gEo5rfXOTS2FWUeD9F005ICJxA==","shasum":"b183e62c519432d2161c9984e09fb5d35062ae7b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606227549-f3c639a7.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvRcJCRA9TVsSAnZWagAADNUP/iezKelCnDylok99H8bj\ncEYhZ+7aodklQYaJthWY5NBYpYSpZdyyks0wd6jfU3qGRbmM6BITQzMJeQuc\nqOA6rcduaIqi1CJNBH/ilcnTLi69RBuW02lsUkGSIc5dyFO1pfDhjVIFRvvS\nTSNjwqsGEPQt6hi2rjBoFruyRMtHlO7h69ZJLzr/MAzrkPEy0PjP4Jy6PueQ\nZWIifdqBa5Mszm48y5h6ntNmkrqVaYjIQKwpaZMoY6xkkQlBBIzpXCW/9Zys\nDLz87DamrjbCjhBMOkPzmK4HmIYo26cMhNyT4jotCW8iDZhMG3Cnp/0/TiDA\nhdpkxAgOxVNZ+PoQTpunvANNaD20LwCs/vRvT+Go7tvR6kjwUZ6hMQOlQaoW\ne6YKPBRZ2n56TEsUOaVkOHmgnOaM90x3woJKGs2iqnK9H4frnC3IxXJQaEsS\nLOPOzFYQCw8uu5+T4MTj80AL9F/5nginzuzPQWahbiYVDcu2lmtdnhf//BpN\n3JcT8wrVirJgfegerl/LMKrS8hqF+4m3vAfbxPRVmFkmOrBK/IQla0qkqiMY\nUsMJGZM0R8168YbjMqv4dH7Y3rkKPMKPr8XSRTvjhn0YlNCD4FCE7lnWFzok\nZ/CrXrBeuPnOe4tfLCwD6MQT/ePtF+fQkHtqtVmOimj+Yd+HE9oftdq/CdfU\nSc1J\r\n=Q9RI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRM3mLWNpzxM+V01Xi/stjCr17zoQJAWzD7zGpB4aw5wIhALbuldzVS7TOhbdAh2GIrRznQivstcNnKYmfcTY33yqY"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606227549-f3c639a7.0_1606227721072_0.2669731846935153"},"_hasShrinkwrap":false},"2.30.2-next-1606227827-fe745ac1.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606227827-fe745ac1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606227827-fe745ac1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606227827-fe745ac1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eIeHNA23EpUyaDwY0wW0V9xzuJhXjEjE9VPBkzTRvwhO0LGZZZS6CTSiUGI5wHFpny+zl3RaQu1QLdJ3FQBE+A==","shasum":"255a6b32dc4a4ea4f880697ddb874aa66a5fce5f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606227827-fe745ac1.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvRglCRA9TVsSAnZWagAAdE8P/j6BkDqlqeX4uHHBgdae\nAyFEwEV3plwsJSedF8zOdrrm3gVIGya8MhzxJH4dnrzNCZwXMKwl+Jwx7NUK\niirrl22MrPORgrNNciiHeIiO0r904V/kwEkNAlKKbIZUhOFrJYFVFBGRvrYN\nUyrKsSGpxoxZrikvAKOKOfC1k6Lp8T4zCw9DsCZ2yvKwF/4rybczFm6TWPou\nPg18bmklt68Or9mX/hkQcP0mK40D3X/8e40VXlWlQVN7QHLINaIpa2dntXKD\nIe9Vnr+i0JgdgdVYgq8WkNTPRJZdprSixg0/wyHumsHF8i3UlzlNY5ndMd5v\nAXP6ATqJRsyDhZF0fV22DLPB0mL8xhkwWeyYXkPiwehHCmK+qGsNxSuAg9+X\ng/m8L/iwW/OeHQYQ9cli4ZVV79qTZVTeNlHB67dsPJ8XqYvIG/XyIEqA0RJV\nce0piT9cyml7GM2SrzaTQtSZkJbFUViKPdzzEuAl1Fb+uXzyBKUYUsLXoHxI\nL/nK6GCJuN2Fi9sx7xhqijNtUmaevE4Eq47EaBkKL3VeQZm7czq1XBBo5YGl\nBWf/06q/+1zPG9BDXRYMRotvASU5hf1pLYSGH0ulwgF6kYqoi8OZyI9bQmXI\ndfCg5xiWG7LdSCQVMPCk53kngvl8eh3q9QP8F8VEvPLQOM4itl+Y+YrLMUD0\nBhdL\r\n=WH2+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZKwMYfP6/02djgWULsw7NaagBWtcHGExP01uKvHUf6AiEArWeyUDE1gTHVmEj6F/u9lt0nlQe2j+3rKIDqYyKYut0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606227827-fe745ac1.0_1606228004610_0.9053968034956854"},"_hasShrinkwrap":false},"2.30.2-next-1606228974-7212c53c.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606228974-7212c53c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606228974-7212c53c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606228974-7212c53c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M4uLYuCG2wEvuvxVP99d1m457jcKEDXjcX7fAVVRNiayXWpQ2wwvWqSpkyFTsXHiZZy2CuwBx1tbTIBu2U2rkw==","shasum":"06139e9d2b7ae35515541db38087c6d836d7bd8b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606228974-7212c53c.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvRyMCRA9TVsSAnZWagAAlF8P/RBt8/PpJxqqHeuZseOI\nV7SchDRt2nMcHfPW0oQxGUoGOybzphGlAm2bvNejEhFvpaYrumHYFDE6acvV\nNEjDYS1NXgAi006rwRENswviNs7irXqnA7tUvb1XQ6BbPokJuA+VpxAeQDBM\nw8wurXNeuWg0OGTkJI7zzZP3+LlxmQDPdHGObl73yNVf/BQOjFzwNoJhZaX9\nWiIGmES3i33oLQv/m70wOrCMJq9QnCp4o3jp3Bpabn0w9EzOzarjjx/n7EfZ\n2qr4pFrEEHx57E/M3Su1doe0x02k9xueXqlVYTVmkv3T0ZtfbGy53eDHnp/Q\nUUv79ZvTVcYmPtXYN9QFbGYWqLLJxSW9TqJSpQhgTQhtzcMSdGeancg7Zn1u\n6if5yhIzaRjhZ7SY27Kp6vJLEMHAc959nR1jQ3fQqzX6e/F0nngcDEH3lxzR\n6jDPLdeEIdXCisvHdzHOnz55ofM319TJiv6vPkM85F3cZlYzXfGEQR0DXUwR\ngXQV9ukND35SGWY+zZ7r5PtybH55kHN0dIRm2GlRRJOu6u+ohs278S7UCprE\nV6iHOJbemMV4bcncmPX97UbXuTFONgPIgPO28xzBI3LFuw557qVNLFyA3j4t\nwTv6H/LCH9KVpxaGi+25YOE5AlQGhr7edfQHZn8Roe9uM+36Bmp6aek1TZeu\nx6wv\r\n=Afmj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpBO6iSy4NtxeIDQm01GlUvkEWF7FhOQZh1FHCm4HNtAIgTpgpHC2LPmQPClfj6KhmUCf3wduMhEI7SNINXQDyw/g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606228974-7212c53c.0_1606229131785_0.963989102790191"},"_hasShrinkwrap":false},"2.30.2-next-1606230404-e15b9d67.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606230404-e15b9d67.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606230404-e15b9d67.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606230404-e15b9d67.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-InffJ++Cz2ow8rVHExpbZH+uyfzbkTKweSVWsQJ18929yqAjNJ6ZJz20/jDYDbhHg6xAIiCZTVg+boT2hXmgDQ==","shasum":"788df2d8756299b97593c08e15eae1a9ff7b9527","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606230404-e15b9d67.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvSIsCRA9TVsSAnZWagAAZR4P/iknLFzwuZQQuiyo8XLX\ni9GeXtSaLbkADSnLQYX1ujhPwMl1AFrSXoXNgl3YN9jgoAo9C931ZGq7G6U9\nHI/12zBn6uhZIqd9LdPZlWgmExM4TMhIpRX0Z1JJsxfd2LZqZ8ntrj3jxdCi\njL22rd74jA7TnXNPplC8EOOS56Us7+JDcOCGKiHWUcghxu4AMrsUNrN1nzsA\nay/wMEOkthaMGnNMCJJ/7XHFwFH/75xI/qfFOaadSIn7RuZcAj/Jng7Gjeg2\nJ7swcytY0Ms05fZkRIgEx9UkEqvjE8bPQH6VLY9wlhrsrs17B3wHVaNkNgAQ\nV3XAEEZMrnGK/Yl+J+49q3fGtmm/MDY/38BuI1Cr+ffJQUeYqRjez4WnEerO\nBF8tIGm88JxUSfjQOvO5AmyByAKHPw934araGNJQF78GGXzIbgUupA/3s/pO\nQr/c2prtE/7xa7Sgd2io8uaMsJNY3URSUIcSDcjCrzEyF4Xj+Nak/j7GDbjS\nG0m1xZmW5Zw9q4i+9+7/nZDIwSsHVXPb5PBHvBK319UNfM2qYMYcR+0FN7A0\nCh0Voy0z85K2TYhBDjNOuLdg/ZyRMxlgLRpGSM+KO3E2xY1hjy0EFgRuSeA1\nfr0wsZLUU+6LeEpgw96YPrAUdaF6Qm8K2VOLP9HOMerfU9NHz5Fa0WyW/++X\nSCcc\r\n=Gc2x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNtRCyTs+uCBTv0dz+Vg/emgwqzEtMKZWEPk3wOKRfKAiEAocxxDSFNCGf5Zk5QalRB31AOYXxCekodXS2MZ28n7m8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606230404-e15b9d67.0_1606230572021_0.7688922356691528"},"_hasShrinkwrap":false},"2.30.2-next-1606231466-7709a008.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606231466-7709a008.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606231466-7709a008.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606231466-7709a008.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eOYetZsC/xnBFzhDjPJB7hMWgnKzgKa8Fg444IeKaB8QUNmWCu+S3KbK2nceJNnf7i2kcWd7RhN/rpwU3D/H/Q==","shasum":"f9261c78e721a986e19573713d0201ee8a21f14e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606231466-7709a008.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvSZACRA9TVsSAnZWagAAbroP/3QggdWnVGloHcuchvO9\nxoawQk+WrrFazLOH+GKz/DL1KDvKFeOT5SrWEm4ld3jiHAQowWtcAyaHayov\nXtB1VdTur91Cw/KoWOOoobx9e9dMq036vn0KFIsIFipf2gOQukfu163DosjF\n4n+S0f/dFckM/bvV9ax0LwrT7PIjSE8OSArAc113+CuCuLmiaq87FCvP6oxU\n8XqR7R1+LOulAZOGdH57SAG7m5/j8Qoy52K+OZxQjNKCYKZbUn2I/2/V1plG\nvCL3cjjK1LgAiI5HHIy9gk5mU52ikafl5N7yY4ZY1eq65oaoAwGOqk6aVPq9\nIiB0kdN5ahjzgiziVhJklPQeNfOdlVR+SFxp58Rq/2uRM8QBhdSyV/NpDT4V\nrLxvOLzJ4SJrJeykoUbNmLU1b7WRwsC5/3UkRQjZwAMG22mpZaEkHjbdFZB7\nE/mxoD+M4TAds5hSSzzdIdZM/FW/vyjdjcwwfLoJYU0akCXwDAeaz/A6PzhK\n/lm+dgNfUgI++5kqZqBycrMglhcHKhrZHmK5RQ6Yhcyq/sw2IF6Q/ski/6F4\n2UmzAjNCxtPnQvKyKA15tRAW2SpIwdJXv2RnvaJz8K1PA/Rv4aiO3Yva3bKT\nszWoTqC8kK7QciaDJe60QfnaApAVXRfLf0cq9JkTljnnUGAPAchVXVkuUJGF\n0D2b\r\n=qmAD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFieDa6RoOIkRzJn3gPnJtBAnrdPK/DNn9QFeuQkyF37AiEA7mSGHwSbgSZBj8gN02AxZd+OzZDhY5b54GfHMsZosKw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606231466-7709a008.0_1606231615795_0.8055880864386122"},"_hasShrinkwrap":false},"2.30.2-next-1606233309-62661675.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606233309-62661675.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606233309-62661675.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606233309-62661675.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eCAjEv/BDV+cA+973XbhglE7O2+wwaM7U1+efSHKamPuXSZMwvyonuslvLSr9ckPvDWLdUJhc+lubWgXFgD4Lw==","shasum":"735f15960e77501e288ecaee1d6eaf62192258e6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606233309-62661675.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvS19CRA9TVsSAnZWagAAAQsP+weJku2YsQ0UOg3HXKrn\nbrctP78nvaKXJiPp0DmU9BwmUNQacwzP0gBTmXRL26Xpda/0x3fiFgd3ESCq\nFe1FhcVVsVC2zYuJFlIeH4TRcDU5Z3EUtKch9MVDvgn6qBlpxOcTMiDZWkXo\ndQ16szmoLijFBvteDiva6m+M/JG3QetB2glE6wafv+ZLyNN7NWPmTCYwTjw9\njr0xBH6kGUSBWWrzhE1r0+CeUlHULiR8Gig1elHsUZYnKb+y0Fz8YUW4Lq1d\nQOipYQls1lvq7RjhbpYZbI7JV9B2nBSEWYIKRLauJzVJ6mpHWI/4+RxToJOd\nqWdtCFjagrjPPeVKkpwJprp8N0xZvCW7qfQYJ3B9Q9hcrkCjs3yoswKGiaX/\n30WDBN9K9u9PbLEzmZb0HR3M4MR/DgATaJ3uOovIVMxKcJoH7GJ4TKTG+U+W\nYeG/93CpBQ6p8y4pkupsnP8ZFZgJpss9C3v/n3d6OlnYNc6G9tPmNPgOITGS\nraZO/VlqBXmd6u3+BTFsFV++YAu0bPrcpQAOz3BpMehA+N+AZmCkJr73OIkj\nVOADLIAcq/KlSnhPhddfvcD8hBjjDY8E85P2UVUyLbVYQxXjpsdzBX7H5vld\nMk6lWkitj7AxvbSqrmYyrjRRtCnaLsE7YF/O1hKc6P1b99oo9OoRxieh0w5N\ndIvO\r\n=AlX5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGLEzkdh+xCA0Jh7MMdp4IfV1f9IF/2e75xUAnxefVi/AiEAnaTD2GSa+90tbhl9qwR13WEyf5oBm9Aao6WxMekbVQU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606233309-62661675.0_1606233468452_0.335628224454229"},"_hasShrinkwrap":false},"2.30.2-next-1606233395-45577a83.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606233395-45577a83.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606233395-45577a83.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606233395-45577a83.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8fHbPe9fm28DUe922YTdkLaaDAvXdCnExF7IYQFT3JGem28N/meZ0kPuT118jeWNKO+SFV0Ui5J7OHbhJa66tA==","shasum":"62c93f9174f7d62c9612ca2df77e4311be015c30","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606233395-45577a83.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvS3ICRA9TVsSAnZWagAAADQQAIuBynvSE7T3HmkvSFrv\ncxlrOUXAK8hyfAgbywsUKg3KnyYGtzHuqtk5CPn5KPdEAWvOQfh5F5Kd3htn\nU/yxuMf6WOuxLMc8ZfGdbTt5nnzLCHLCgNPQxEOh0iknQpQMUQhlqOkJEHWS\n3aUzRbHLL1Dha6BKaaJaVFJIFTJpf2tvP7kNnevFXfvOi9j8VfgonhwKeJup\nuIncYoRTIyi5L0KmBfYTVKt4A1KaUmGMUndQMdEvDZCUtSrqLqAyMe6e9Edd\nzbTCfUNn+isbBvz2Bi+KPswxkIMrF/SM4ztCCqGTtG351LUiWo19SRbETzcn\ntl9sDoiJQQWCvbRmP4qGiQGsZmJo60n/EIlHLMbdrEyEpNToFzQnwSAYrO2f\nzAIpDQXwNNvXhhMgldTSDIAUgyvNo8rl3NZrr1BD+8G3eHwCxJSb3TdBjr0a\nNXHZ1J6a3CCMbmI11sOXc8s/3T+czR1hhbRceQ+sNrilCQwtzt7jTfNw+mqs\n2K1Fbe1MRWHTNiXPXBVl3GBXxHCOVUghXUl+jKkCmt044yglWfuLXsmLqZpa\nq9sYMgt15GbV+BHPTKNjSaXhqMIqBjTSdkO0NZsXHcUYKJXP6TL6LIBfInTR\naawT4MV0+YL7CiZxDSQzJWmT4USPXzN+NmZPpFrSbYa+/bXsA+zZXxuQHKwg\nuCHM\r\n=0ajo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCryF0/Y4Q3dpV6WiktwueJA6MGXdeZvyOy7h2GUd93dgIhAK6h+68BeusH8B0o+Fru4NAXoMYAidRdp0NBKaFdGBTN"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606233395-45577a83.0_1606233544040_0.1173706904966656"},"_hasShrinkwrap":false},"2.30.2-next-1606234396-f30874d0.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606234396-f30874d0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606234396-f30874d0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606234396-f30874d0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EYFUDl0rY0fafWV9+AripfQYt0DMJzK4x4NbIwajbKP2uQfibINuqNIEcwAistViu7tS3XF8xjD3DFZT/TqHNA==","shasum":"4303d476c1fd705323b3ffd326fdcd449526d034","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606234396-f30874d0.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvTG7CRA9TVsSAnZWagAABAEQAJfICkKp6AABiIt1GFcf\n3IQMGYg3J8ejRpEZepbr+E1Rm1eOf7Gq81oLtdf69MTEwlLOg5MPxXXsUlIa\nWJiqjHiJkRoRyR3g0luFeT6xtecTom+Ty33F5sMMReuO+yCwLF8ed45W4NEa\nWBsFAL4zA6+beeFrRjRUP60rtoAKtWXaHPubfyMn1ztKZJlw8ADcBtHDiLXJ\nlbMGMYXwD1OD0LX3hGHXdyXpnUXQQCVnWJQIIwb6OJlYbLchk4PHcMGe9BZE\nFGYct46IoAwduquIZ0KVDLzZoCaZB6sdeStwpyvXk2upKzGByN1JV1lIWCsN\nPv7Oh6PzSk7tyhXaHaBGPNienduElr6UbTdf6LjmpJNFD5dz8aveHY9UdkFy\ndaVBzaI5f/lCCcrjW9TCvdnO5taBtmFighgM1udZ6yWgJ47OX9Iez9Kr5gAc\nqsEaWQ0H3QufQoAZFGGG6glm1NQl+RgjVUgNk9mrOcjS9pmqikmqOPEY29xG\nO5ww7K2UWZoNbszcbCsPIlPMTKVhbGK28qnJUU8TTEK6jOIXQQLPQ2RHz9Gj\nihQ6gL2Q4xDMgfxI31RjZxFkuVPaawIQbB8xwPalnW8L6qF4YBAdSBKPlBCU\nILJOUJNCmjl826gjhUay9jfyWIwP5ZoBeP2UhDEQ645JlQxbOYfmkd0ucPRJ\nCIjy\r\n=as4s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDM7+XMDDfJtCOroZbhYkDCrkR4blUJTNHWxvMYqN4PWgIgezjAAYWD7cB3MfebZrRaldgKR/MA2arU+k7VycF9ViU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606234396-f30874d0.0_1606234555229_0.49092553133627415"},"_hasShrinkwrap":false},"2.30.2-next-1606236477-f3d2d170.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606236477-f3d2d170.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606236477-f3d2d170.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606236477-f3d2d170.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-d6PWwPluOCxa8lFJbJFLLOAfkx7ui2Cf1H3ipNfmuPjmMpL8FvJKpC0s10Q6jQ3ZgG7yT3spelUt6Ws9x0sMeQ==","shasum":"b266eb4b5f389201426114415a450e799b3eba27","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606236477-f3d2d170.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvTnvCRA9TVsSAnZWagAATi4P/3ZPn3xEwhE/2p283tQ3\n298KqqltEQiMZET7csIb9AJe3s70CQUhJTlooa5a4bxHSRxF6LdB7EaUej+0\n1OzpyaNnpKLaJGXHmwysc5tn9HCznyg50jtnMBXwrPhVLXcFj1RfuZbj4NDF\nkDKNAXhR8dPz7i2IXCNOOGbjsvzpEj2TWzORgQhtipiNpCc9QllZo2NswBDu\nwCGeHL3ZxnPWSxhAELiG/iASVRQC+CsdF/ZSXbm5CNnMl4zL3eA/swaFVe4j\nLOU0SLpGGka1SEZ4ILr3FY/+3xGCpHikKMnIs9F+XPAOR8MM0nX+6/whGSxC\nogIhe015U1vlIuFeNGoi0Si3bV2+yvqsiYYs1M/JaASpytImKYnrpBF7eUWk\n8hMTxiRkHYpaEUs1IAmF8DDhlqjH/8yrrlMIUfV0cj2ui8aJY98N8ucFh5Yq\ngV+u96LIGAA0AzbfsfTR/XIjtBb16zYDCOy5pTt46mww30Neom/0UA+17AwG\n/E7+rv9Ln5s0YQu0HUYTtGXcNh2Je0p96Sv2sJKAH6lLzIElPUrgvN7rg3lV\nlodoMT5pfS00RwDpN+j5uk1tHgGmPP2L5VCBKZdDWhiJqctWBiJZ0q13xzq+\nMnOVmVDDd0b8pDa65VmSp21xGI5u3UUHeD0iCyYUjpQ9aeJ8bonkiVlBcCvw\nTl46\r\n=xhKp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHa54S1Z7Fpm+2CIhZRE7UlRwjCGhXvT6CcsNmiCvTiFAiAee+7hDM71BfaKIojSZtgPwbcG0Uiyb4g+krlWBtmJIA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606236477-f3d2d170.0_1606236655171_0.6610211654069209"},"_hasShrinkwrap":false},"2.30.2-next-1606236551-0e89d97a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606236551-0e89d97a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606236551-0e89d97a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606236551-0e89d97a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QXttNEhdphbDWO1ObBZ4gQ2I4Gi8dj4UZNze13d8S+PmMU5tKtpR6lHHUdOSplqWSGb5/DiEGATdEZ0U7FGo7w==","shasum":"b3e3d6c8187cd7a0bc76d180d27686924409a3c6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606236551-0e89d97a.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvToqCRA9TVsSAnZWagAAVTUP/2/GdwLM5Yy6ulIHhWVY\nnnb3Ow0QBw++FFSG59X79bhDEZSCppPBXE18KBr/smREfuRa/sXxP4nYnZQ5\nHZDxjAM05JSo57QmI8+VFtyhcXoGkNmbdmteIcX7G6YCFEFtN/LO2pisLyZw\n3jOMtnx1QoaNR/Erfx9Mfl59MaN2+GQ1sh3uef8OaA6g3Mx77TVQ9aFUALqr\nDfJnJn062KGN2NE1zmGWxTOjGBpk6qOisLLqTNvYiK3F/Mj1qGPNKNTWAgoF\nODKK2e6JYoTaIeOb54E57cDQXN1Rn0DMOqfKFtot8jFV5WI3KOv/hulIlX6l\nxkAHe2VUm/MQZejj4OOVh0ucw/2kxFiHSivCs8nU134o+7gAo7U/qYvKm9yJ\nripGiYitQsYq1JAQRIEYQs6Jgk4V8SXut+a3ev0IJAKc1/uZ+9brTKtjggdA\nG+wMGpbBIKaSbgU4jBkqVShsPyrLMHMciidaO7pbMueDWJrcmpnjlsOPyst5\ndXhJ0/LsAEh3CUTYfMseTWvZsv1roz//8QUMzGzn5D8XbV6Y4cDAXVuwAUca\nK6iRb3amliKZnSnlSVJTPAAreJrcJufK7LEID0aOdYsfyN1N9gw3z3xO+mT0\nPR7L+bevpJWvS+d8FutDUqp2mTAtVRZ52WVX7x4DGa/m0KK9JLucvGCjlKxx\n+odc\r\n=Cr8g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbDSmoDPzBFsc3Jc0xW9kId8SPVgBPW+5SxQs43d1adAIhAJ+d+Z9b0crQ5lnM9iFBPVYxONFfFqaLKLWbXVoDFk/z"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606236551-0e89d97a.0_1606236713863_0.5610488474443664"},"_hasShrinkwrap":false},"2.30.2-next-1606244582-7b1b52ab.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606244582-7b1b52ab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606244582-7b1b52ab.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606244582-7b1b52ab.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-RpvNvRV6etbxXpmOQ1JOuVAgAzyO9yGrUlObCNPLRXSGiiYMp5UPciSvN7adzYvH1Z2fAyjOXtegzrc5s/ApWw==","shasum":"64f5b0c19ebf4679eda276073efacf71fb2a632b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606244582-7b1b52ab.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvVluCRA9TVsSAnZWagAAeGEP+gM8+mxRp1+baNwaOgK9\n/BaSs7gjNnd3zO4dyf17DMo1FNBDcaBap1zOfNBY8QFtRe0qvmhWd6kD6W4l\nL1IUed/NS/XGJY1qz6ytMwfaLsVFCKQnSXKcqH+iqsbyW4GpYyUEXIInFcoa\niuFPYlLtnA8isadZL/KUafTbxCFuWd+krmCFhgfL6bTo7fiK80/NiZVErmnc\nFlr5HKd+GBPn2XevHJ541gtXXa8w7O2F4hYkfGhNMNAISgvEzfn8Du6cAajt\nMjFOeu3AAnT1iK835ut9n/bETH7g7q0xRceTnOazhosW+5XBdjaHezXFF6QT\nxR9tbs9fEH30sWCtNhAgXnqYDH569fJIhh5yYAEgBCSyVgn/J33LIh1ux19K\nCurOOqRAKZ5hTxEk+FZshNwKDgmfJjlQrLII8IUueAJamQ4Xp3fIGJnAqvxr\nZXODNW+DDGTQahxcHb6cNCtXBqkgf/GnslsRGP4sdbDm6GyDif9O7KdT96C9\npJB4Vcw8Qkq9W34rfBTye2PXGAAaC9AKQQzWQF58aEqoKzskj3jrdrLROvSl\nJSawZwx/ZNzv7yDyrBxTRWqzfPP5btN2q/0ND31lYHTilRWUJrHKxBK7tUDn\nKtHG31vIAByQ4jZeE0hBnXU9IMbta+fFvuu4kwukR9AO6PDbsFg8aVNDLwED\nKeTl\r\n=lJOz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOKD1V9hNKysR61wnesc/YdErdgEfcFH6P7x3BW4K0GAiEAqH+K56H1QOI0TX0xbC64doF7H4iSNd5OTWpFeq0ar0A="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606244582-7b1b52ab.0_1606244717622_0.32027219655103645"},"_hasShrinkwrap":false},"2.30.2-next-1606246534-cb480be2.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606246534-cb480be2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606246534-cb480be2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606246534-cb480be2.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IWgkitv/uJ0uktJN0fsnB1/cp5njznmOtS+dUqAvDuVAptWDsVEWdUfAEmKsjLKzc7RV9aem8gNFlZKi8V+Rsg==","shasum":"227fd3d9a36a01d6b20bcc1bdb90ba91280fa8f1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606246534-cb480be2.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvWEtCRA9TVsSAnZWagAAH0IP/RXJDTLKi/NXH2wiiBal\nVI7Ndy3u7FcRILZUuMGs36rSaqTAA/KA6YQVOr37BZaChV0ZSZTl+GkXijRx\njKlYAI0/BMshzKxLOpNGwutFTkpWm2hoxnp75ovlqHJt4s6Nf2ueQwpUDUMz\nDBB3cdecD2XZDMDI/zL0iCl0yWpAxriZZNJMhKwkNarxqD1okhzl4DUYwGZX\ny6PIGttlwzamT46IFap2a8y0sCeLB09d2f/Rvmr6wG4p1zT43HYaPX7F/6JU\nflvrQP8g7SwQV85xo1WhNQrDFH29JOIsDGH6rS0Vlo2zps5D72dB8tVJPSVB\nQ2xb3d/WWcdmam1SWK14WjobGpt85+pmJWJKV6EudpuHU9qLcEtn+5FRlEtB\ng5hAayZxBUshx1ZfV82UGdf3aRaC/8hq8ktduOeEzguqDscxC3yOEmk5cv3q\nRMkS6j4s0xVPFHrlQhjQMOUgQGJ4lEqWbamYMq0432ua1W4e48x4oD48vZiW\nANAk1N4zM8x6JbenrsgVgtGMfJXmkDMG8utsejg2cNyCaBjrvh3GaaBeuhII\nsE9qUtqJRhtHdSNB60Daffg9DnjcvKxxJgPPOV6RPYMh7GtzK339ApWCMaTc\nFHlR8lXlk8JHDMHuTdIaaH0NeGJjsdJJ12wlqp51GVVpOdwqpClK8bzY/uo7\nNghQ\r\n=E9aM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQbusvfHcvAUOn5ZYncxJD3Ac5j3QkRoFgB+T7AzceGAIhAMrPmPbQeivS2tQeMTrLn3M0k/dajiRVUmaBN2KRa169"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606246534-cb480be2.0_1606246700745_0.7378421236207211"},"_hasShrinkwrap":false},"2.30.2-next-1606247254-b82f0794.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606247254-b82f0794.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606247254-b82f0794.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606247254-b82f0794.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BjeD/1o3QdJY7YVjXD5+8s/8wIHG1/rP/ygNJymfSt38kKrTiFtNcxptV+Qg2kT6zWh1PHDhbFNj428uRHu2XQ==","shasum":"b9c8235b1b8f01db2d448ebfc3424378f7f679a4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606247254-b82f0794.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvWP+CRA9TVsSAnZWagAAOP4P/jwMspO8m1tEfi7wJ/N0\n6RxSrEpuwseEDwz+OSjlGkptiTZxOlkqyn+EIanVy4IK0RBIjVk0ddtLnqOo\nEjPjejszhEp3efyLydOv1Pb8ypMsL71cpmrRtmuGkL1G8f8OmUngQ2ekDuet\ngPUmlDqi04JwKgGtuMHFYgSFjooNCM3B456jpX0d7Rc1f382wacmX57Oxvy4\nZgqrAYpiec/O5gePaQF4PPbbK3ujpOu4Bm0u9AY6INGnkucsQy8pNTfe1TF6\nSCa+83FezCCqo+Kdh6zmSJ6jh0A4UMZxop8RmpmLpfo0kGRubPnrZhC43twa\nWFIk+L24U44ipeP/aI0iTDW3oupvHhRqAhkgoYDh55gMIY7DthVyztKfeooZ\nwci8g7bBBy6e0sZRQ6tnGCtBGQkAL66RdlI4SiliBhr+PJt8Axjf6tWqADRO\nh5fh1RfRw8TuGydHyWw6YqTuoUXcNbbNSGawRdeFGXSR5Ln1Nsvx2G1hSBEz\nbc+ElOU+mAkZFqXIB4fEELI9/Y1GSPuLUppgV+96McQrR4zhy9IlbQCcyfhc\nPRElq4WKKUlKPFFPp8oD/rVIn0xsSP13B3uFyC7mrwnS2WwBOTNJnVwWvxHO\nHnqXVBmG+qXMAemVFPqwDNvPaF3SG+2j9zUxeDG+qr+0hKFNuTen/ARVjB4d\nCh3B\r\n=iUqm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCm9SbuMBo/fbkax4l8THK+WvcYv0an3ehVKesxoQHpBQIhAKBSCZZQgotz946rhmtRvipB94k5G07caBr+8c4MpPoV"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606247254-b82f0794.0_1606247422354_0.8421232131486742"},"_hasShrinkwrap":false},"2.30.2-next-1606248610-046dbf69.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606248610-046dbf69.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606248610-046dbf69.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606248610-046dbf69.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-b6aKqF/i5OalJcv5w+xEbZkHfJ8GOK05f81bwcELR5URXH/YyGEAfUEW+F08vDpS2fkxaWRQOBbHYEmx+WgWdA==","shasum":"737c017cb389241b20efe3913d52c53ed530affa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606248610-046dbf69.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvWk8CRA9TVsSAnZWagAAQigP/ArxEZt75Y0Xf4U8X/2e\ngKQJ6gMB5TXQNgPewDftWuqQgnqF2ra07dIkTukCfyraic7C8L1yWgGim2Y6\n6yZ0fSo8G+sFw7uruCVY4vYIvLjBu94xjllH+oYBMIfW+PVNxckgB/OM0Fd4\nBSvTj3l234OJtnetbENukyWswKjRxt/yK3+AMZnF0S27y+i5/74Q01UjmlaK\nRIAvOR6UWumcUpiOVNLFpt4zBG8kV9D9lRn9l0GBLBojeRAtk5GK7YdmlD6s\nZBPV8Ws/HUogcu+5oQ25+gMJ7gLcYbsmMlx2OXJg/dkBB1N80Ad2Ovx8eLjV\nGGyHYvTdA9P1P8H/onL1yi/MOgbfGTJ3uRSkW+pT37VZ13ucDwB5/xkyPNRz\nc/NdWIA/7TO2i+dH+faqadTuScTtJhrJy4CszNXv5izO59UYhY/QoWhO83O+\nGlfn6qVD8kNPG1LvEaQJhRWhzu2LZlFMBcGskj/lePfI/M+MYYxinI35aZJF\nGEekJ1BsHgyHzu4Iuo3WLs6lbcGQuC0jJCrZpvACPHAWBb8lLprhqSUUJZT8\nHdpwDXvEivcMNaRcRxA/pDE0w0BtbyaYWmk6ERewTo5gN5euXQ2bHUbjuBNr\nEz/AonopuearV9qGPiHp/YVelKUFZ+r288ynqnMGBbRlf9aBgVInenKjkYu9\n6z4i\r\n=l6vr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCffqxRBuwdw6G8x/24E1VGRujTj0zsvpIGCu5nWcC5egIgZ/Wz11Z3ohwRzyZtfav5eIonqD9BQsXgvtfOahsAn60="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606248610-046dbf69.0_1606248763496_0.8312050838163796"},"_hasShrinkwrap":false},"2.30.2-next-1606249017-eda2bd26.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606249017-eda2bd26.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606249017-eda2bd26.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606249017-eda2bd26.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Bmpn74t8WEDv2clsQr2wAIDY9xle5gFQTzkAnuX0X4ra/vfuTSNLT7BdBn5ZAqUNl6n2hQ3J9a0pVZv5+UCL2Q==","shasum":"6bdb34a79038807b49ffc9609389e79ab58666f4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606249017-eda2bd26.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvWrYCRA9TVsSAnZWagAASOMQAIV6JjvdwGjZPnjeQplS\nr4mIKOWJQmX9XizI14wGx0ceydW06jjWA1vs12VXTtGGJh76oHvL3boBf3Cd\nVFCocGp2kTiDuGr0KBwTL9ZsIM7drNq5c1sZo4DeK7EQamf2yJIctICFgX+I\nwbX80Rb2IH0Y2CGMf9yzS4sg0tB7xaFbUShwuybIh9GpeTTK51eQG40v+QJJ\nfzJG5uLYUFfXFlmS0oJ4tELqIqkz1SRDLZseXiy8JECNue9cgvSyzGImj2z5\nbloR/37OHYyIrVERvsVpZsBw2xHY1GBuc8v54M0MFnjeG4K+oQsLeWboBCeu\nSntiqzIMI/WS1cRJuhNUgWfOScuqMrquglDM7Ft5SbYzPflX5lzGFCbNEqb+\nSR9S9B67HsW/ryUKdM35sWr/pbKdTL9lIJTW+2IUGjmccBJq5Ny+u4AO6zNo\nVCDy8RoKcnZDZOYlxcNVa1mc+yHwnG+E7niHyx65A5ELwxy3NZmSKq9zMSrT\ntkorR2jcKjYzdeQwfUq2gdb424axweyJLdO+lbFV5/2sH1+PHPDb9giFHkZ0\nLiet0HWaXrm9QbfI3+lbRTP/nZkvnjbV77cHEBUFbfBSAXHAgBUyX8hagMc/\nlDQXaM8yh8LXyt7L5+Z8jzNR19WS/vYx60Z9+Q5kq+OwgsyiRDX0FwH2XjCK\naFdf\r\n=dKMD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSQfrG1MVkBd5GJDrj7iPa2NNifMZryqf8eEiQC3v6jgIgd09j1lYif0je0dgej3joEQFStINErhEiLXs1FaCvt60="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606249017-eda2bd26.0_1606249175396_0.10501809069317058"},"_hasShrinkwrap":false},"2.30.2-next-1606249491-9c81bc09.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606249491-9c81bc09.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606249491-9c81bc09.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606249491-9c81bc09.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-of2uH1mkFUKS/hGL+++cE/u+JFUPBvh0X6GemZUesYIvjrKU472alSYk9mJcqdQ8WUo/Wk1qDkLzilfvixEOcw==","shasum":"cf799608e86fb23fda51daef6916532e1869bf60","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606249491-9c81bc09.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvWy0CRA9TVsSAnZWagAA44YP/j9u+8kezF+ueLkQEWS5\nSbfiEuqkQzYjOe3IeLGSzU8x/yutcOuX8naPRPu057tyKrPyX2PaKuxp2KCP\nIBprHxyJuN9gvELK/QPfdAAYLZqguxhFE0pxvrm9/sNjvp6ZX9ijlb23MRFD\nXxGJ5D1IZckYMixbd13U6CWYy6auzpJs90LywJRvolBE+ep6Y/RXEPNPvS5a\n6CrPUQ25gRJkh1synR8e65NQcIybJxEbtvV7yf6YITuwc/zFvT3xZiJ0TrRN\nsJmWwPeowWTOSZLoD3T9hTX7bTPGJOePtbDprABY3x4tjUMhVSxIgP4Wr9M4\ngFpF3VbHHITz1NyN4ZtmwdyGOVRKZdpEWKsxSCCMYyMF7K4FHBVS9IqPyKEd\nLoauyhDgVoMYUHsgG1VDTAdiVG4anmcXLhrLF23h5LzESrn6++oQFolYCq5g\na99Qiyb93euN5cSuU0fN4lw8p3f07xPz/hMdE/loEj58x/RRJ6oECHwen/5D\nurL7oGhcYOq9BZA0KSk3GcvDuHSz2oULbiUNWFtsPbOZ3idtuMpvY2WNBnp0\no833uF362Bd5bGVBfP+7MB9eYQGryWGbTqj1y1f/8de5eBhCBKEDCatNSjt0\njHyqOZjRjUN9fSK98FJKGgIwlYqHsdPb/6Z3RSzCcfC5SCHl0MeEtx2j3DRQ\nu+Eq\r\n=QuTS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDDCSFfXyvxtsB3G4mtzEiFXGtRYelVa2yKD1PFh184AiEA5C8OO75sJHTQZ0ytyB1FXu1UwybagRDwv1KSUhs8q0U="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606249491-9c81bc09.0_1606249651972_0.3712617185681186"},"_hasShrinkwrap":false},"2.30.2-next-1606253356-e4d6e32e.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606253356-e4d6e32e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606253356-e4d6e32e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606253356-e4d6e32e.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QxgzpTbNF3OWyNB8YDq5sVsIh9eBuo5eo9ZkxCqGmviHY8YlRMcgMSAOuDpR0ASp0irMpDlpAcim0uZfmViADg==","shasum":"bf8281d7f25692d18817a8597ecf0524a64b4b2d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606253356-e4d6e32e.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvXvCCRA9TVsSAnZWagAAzs8QAJQTGD7Mf3oe7qAM2fhM\nz2g1OMnxzMJznQWyfYfv29Blr1knrHhn+wWOZ2PftLLSTh1yCIthanvXEDHb\nxx6C2MTJGI5KNUp9HQiWVIgzAx2EzDQFuZnW2XX95IJznGlfwjk+e5TTbIi6\nqW9AwRhoR45g7EFZc7Hf/7HYphhACoE7H1Ty7FgZlHH/G8FjURKkwmfQSRIv\nu1Ee+oKhi8pv2ezT7gMICppNpzf9pdI/I7rDEn5GxLQoZP9hOZsRM/u0AMJH\n1su6JZ18z+3MrhAwgAJ5yqVEu8IjyLxu7IfMqjVbN5NMbV34CvU6Yvo8m8pq\nnjr1eU49Iy0gmoXFYmDbvK9fYBB2TaKXGjOk9/OkqEe0M0EPVs9KrIk2S6Wi\nzhB9pUrkx5bfYRLj42mUX/2R3WT5y0VniliqvxHwM1Ol61ZnepdF3qGkeqsL\nNjus7JhCOMNcgAaQcuu44kAU2aqFc+Yb85JCpKFSpXynrltITS6hDg7nXvaB\nDiP2+LxZDjRFCFtIJaTEF7j8MOnAP5sWn//2Jceu6mqOfVfAGrB22OqR7pfa\n/uR0BN54Ak6MS3Zi3AeFiNSGMXQarCroxcs/fz79qDrsGv842V6HAfrTST7Y\nK5WaAofCKDwN6gSP44t0+3SCREKahNVs6THyb8PwAXSn2nvaasyz2j9BHJkT\ngycv\r\n=8E8k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzIvvw7IiKJCX3fTPaaUf26V8kO8xc+0TJxDovDY686AIhANhNtist9ay6J1/W/0qN66dGA/o2eC3V91k8x2aF1gYq"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606253356-e4d6e32e.0_1606253505492_0.35688637826103053"},"_hasShrinkwrap":false},"2.30.2-next-1606260042-9af95bf1.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606260042-9af95bf1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606260042-9af95bf1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606260042-9af95bf1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qbmimmLM8A8IfhXIsOJ9vxRNNvvmrk9PTiN3AFJ/mcZv7rvLrtes/KiQVI/5oWkru3z02o6VXcmSvwTygrwItQ==","shasum":"f50c3843dd87188b4a35d1f37547f90201175687","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606260042-9af95bf1.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvZXlCRA9TVsSAnZWagAApuEP/igDt/iLReC0SOWUtBpf\nU4Jf/bFfisxHv4bk757VpDsjsQ5rBGmjuFuV0jv0T9pG+5fF3sad388ScdIM\nPq4glWrfwW3B7v4eeggBzcl/vN9pJVAXK/t45cpg77YBusXTD5wR9agJT0Nl\nb/8ng0O6FcsZ83TLPLiwcbxHEKAWgdihgKbw2YnloHr8NNmpescYxFl00c35\n+H5c+nkNi6JUq8WNyHfc3O0ry1frw+w5aLIT6+1A2d2SENExzZMDm7J2SqFT\nJo70LJXkkOgdrOaF8Mrsmli8Be3gS/9Y7z0lfC66OKDVqZACP33BpZUllYob\ngkMo3ert+6zu4Ps9aBiiK5rpcrfc7KHo+hWj6NaFQstTd+c7G239N4PU0/3x\nNpMgGl8DMDVI8BfQE5LlNH8v1vnfedMBPOAVpN43kLtqCRPxTxgZ4HaAYuQI\nNDts/TnsDizK/SIzlfzCmpqm6pqR0eRQoG74J9XE3KMydjPPd6vjUv0O0D3k\neOh6iJbo68cjSXAfMphxgOKikuASet8VggYyvMefvkCL9Ry3G66DxhRoETUS\nO7uZry6oalV1dYhDE2kcxxKE5xpfexJ39ifTnctLeqlv0QD2N/KJqQ8X3juS\ngNErrfrP0V3UVxGNd9EagBZwM4RTrr3PczOdCectMYLjatoHnBBEejolXLH1\nINSK\r\n=G9eq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7y4QGc1DKwNGQ0uPHizHo4Cu21HJePZKX6wHItpt6eAIhAKl3s0BS5aBh4ea2ONQ43xCUCvranglnTActZ2IjfNA4"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606260042-9af95bf1.0_1606260196699_0.007637697221920314"},"_hasShrinkwrap":false},"2.30.2-next-1606260406-b025e99a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606260406-b025e99a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606260406-b025e99a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606260406-b025e99a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xKjwlVEFjhC5+DiieKfZkZ+1lGfywOSi1fVAv0CDSGcIZRxvQA2wZ1vwFYSNmd12VrSqtj6y9Xn9o462z8pQfw==","shasum":"b8c4cb5108c76deca03c0887262f6336f1677d84","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606260406-b025e99a.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvZdPCRA9TVsSAnZWagAAmH4P+gMJShaG5bHKePZIZFjm\nCFJO+ABN7G50EQBGWL3Gac+iuVpXomWgAx4PxbIAFSpiaFUCHEk2TqKyXZWA\nbZijVWw42wd1lqLI31wz9iKtpYUj0krrf+ZA1YFfY5koBYLwCXaBUGVTfWeH\n11kLGWZgO/bgVQbV7HXWwyZiqTvvD0+dkYGRYY9gx1F0bvmYj/9tdaDqbSMQ\nvIbnfRQdMIpoHqeBOyARpJZ9bWOfWeqIjUT6C1gEZDjK85Tg/1OJ6UNawWmL\n3WqRSWP15aB+lKMgU/0c26iQaJ+ZUxh/uvCkGnhyVL3VMbDSW2zA7uWzQeQQ\nPaRE/vDsgFctrUzmZmtUo/8k4KWUpvt2Fi5ezuFhfSYO046oEIJfz5C54T1g\nDTUUqx1WmwD2NuTeHNkuYkcy6+8Qy6VrT4VSwjOm2W0U7e1Ru9nEZnlGdpJb\nSDW0gx1jWJDByVzrjs7Hq0nkN1vvc7cTtfJc86gDEe/CMckrq6siA6ZmiRod\n6/pUL7+ddaqEKafYhLzwveJ4LPMnrDEqftKOyg8PIjfkGrSOQpsOtQ66dLwU\nbTyh1EsLGlrRP7bYPRZxQn9/touECp5orRDA89Min0lgTTBHbXJTkPTu0GMP\n9rjI02bvmtFbkPlt7LHH8LocwKyKRlw+GFDz3EV8vZKLzCnxinvYiaPmKM0i\nWWWX\r\n=VTEF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdc2PcMa6ZSug9fTEhePAzXXJCoSzLSZDbi/I4bgw90QIhAJ2TK1r6BwB4AINNCOMk8U+7w72j8OTbs95JQk1tqT1u"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606260406-b025e99a.0_1606260559236_0.6012645511026469"},"_hasShrinkwrap":false},"2.30.2-next-1606265886-6d5f2f2c.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606265886-6d5f2f2c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606265886-6d5f2f2c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606265886-6d5f2f2c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Yz/ZinggUIZWwf8d5n3ye7sh2plxsTOPvfG0mMS5GbF6Fiu5XshZmCRGIgP9UIGqVFcj5TC7NkJ5jBpku/QTUg==","shasum":"27c76a5454440c5f9aca86c8075bfd493746a0d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606265886-6d5f2f2c.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvazACRA9TVsSAnZWagAAPiMP/RwDNhbLbLer2z4hVtUb\nR1V2/he8ezUo5W1hjrvQSsLJ5PnIwxhlxVYUbZwrubBS4RI3tD66IyWJ6rpL\no96oE9HbgOpR3XlcxDSnw53Hxi7dWH09Rr7vDZbTnFlYDXFO8v800NHOGWAW\nE7n8vYCKe4ZsUvo2lA5XWIUYYq+wmU9hJz6xVbOoIWKpVbvDISE22nD+3OcE\nBBoFuki+Va/TyIV99v9fN4zHhdA7Q7BTRDBTNKboi5/woPpjlrFcQLXAUe2l\naOyvfct9DtiNKwEUsLZpdS8wRMKoyO2WZgX22bHSdy2TcE6I7eHeLOT1cvLS\nN/Sgyf2rlI7/JCoTZs5YjKAxoSX2O6MgFyDopq5jRpIrXLM0WtD5I4DtX4Zi\nweLb6Vt59GxWXbQtH+Q7UCHpI3lsy0rOa9phsJ2Bze/4HkIdqUG/TRSd4ZQc\nX1VFrjWAmM9YX4rb6aOKab6ypMHleEJ39+RZOTpg4CNt+UNNtMX0tleGcLgN\ncxoIc2jqdy0CTe3i5/XW0/z+ipgXV7wE4lVlL0p973F283PM5ue32mNLtvDk\nMeBapbieW3QDcSTSGWDdftRbrnT1TvYb1tVlXNyQxYQf+U38F0qzR9X47O34\n7j9tVwoss/wp7rX4pQ3OUnGQ/U+Ew+dmvKVh7XSL637ImgclZJY4J6glV3ZW\nFm08\r\n=2x1l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHgl1P1H3aEV7y4NhC7AccWtKKKMC45mQw7kU253VQoMAiEAp4bIGrDVJJjR1rAb+5FHgCuUmlSGu5K3xmG6//nCNLY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606265886-6d5f2f2c.0_1606266047382_0.47964894167773564"},"_hasShrinkwrap":false},"2.30.2-next-1606296469-8907e3a4.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606296469-8907e3a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606296469-8907e3a4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606296469-8907e3a4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hEhgbJxLLQxec/bZQyCjUF1gbiJpN6bz6fCDobHdrpmw8+b9WV+cQTiL6Tu5dihmrBWJEMeHpSJcJyL0zCFaZQ==","shasum":"e9eff465e085a5c6e19c71b252d75809d2af50a4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606296469-8907e3a4.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfviQ4CRA9TVsSAnZWagAAGxgP/1iotikWmkv2eNR/hvLU\nrhdjBnndNaoeJiyPUXRDNE9vq9sXT61QPnZ1TOff2NNRy5R2tXPNWA0LqWVm\nsOkyxkqpPnZEEnVsYevl+n0saEbalb3/7PHTwiX9dho/4f6EsmJj6ZbtLbkt\nq9aktYTxrQqyYEPZ7IxckmGLQjLEFaBCRZfr0ulwUnCN+eKq7+F3ePq1cakT\n1xZmO2CsFO0NN76fKGUOtg9XUHOJO905Divm8m+zTKTIkQFUcHynrMvhpti7\nToqxpqHv2cnX5zCOvVWuzsUh6HELahryUS1hAilSM3IAQHufQkkcv5vkI6Rj\noJaskp7TnhL0pl78K79EzK58c6nxbZQ4RzTFlxtrm7PdxtVHVlFhi8FC1DeK\nBQ+qZjpfCXOIWrdCDmTGY14vdk2zfBTAgQmAoLX0Fp58nuFDl04i6kWT4lv7\nDshDWD9pXCzMi24HtB0P2SI8gqp3s/rGjKeyjXBOYt6fezkLsyt8/zGUco/T\n79G+8aO2UEpke2g8cS2lymtq9CWQijIS/coH3BeMpqnYLclq12VqthNICR15\nlxYOtkkFxZ8oVz9Fui9VRUJdLJeEkHXIoUzbjka497z1UyYI8iOsNO140VW3\nWjQlfbwphFtBEkLgOpElvLXPrgN/AeRwBMAAhAJVKkOy2KGZPWXc6QG5RrHN\no/Kt\r\n=1iVn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDY0vSYJHEz0Rkk7zpJawbWE83UlC4WZHLDVhw6Jhz6PAiAefYitutgpJ6BUwpuow3pyPVna50RzoiyrgwKUzXzk1w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606296469-8907e3a4.0_1606296631795_0.45301154927714116"},"_hasShrinkwrap":false},"2.30.2-next-1606301175-8907e3a4.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606301175-8907e3a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606301175-8907e3a4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606301175-8907e3a4.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-B6J1OxRpeqo+6Pj8g/FYjr5EJt9rhYb6pTJ2v7ufwffDEcJi51VcFMxKArbv8RwnmoerKPY5MDSmNH5lm5kWtA==","shasum":"4bf7316caaa3f6faf20df1cb25dcfc918320a95b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606301175-8907e3a4.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvjaiCRA9TVsSAnZWagAAUsUP/RVh4e1lg3+mtpe+39X6\nMEUO612djcRtH6FXuGKuK60msQGpvcoM1EDWQMTixmDXbdqWm4IqZx+8Cd7Z\nm9R4bbqSslszJTU9lDuXkFYMIcIkSXUgBpczV4AFLxxIEzAXh4uw14dE7DXE\nTn4mIYXD48eJ13G29noj5slxlOwa9KQ6wvHqwYReYyaW/LB+K8LpnbyN3mOd\nZseJoLb3xno+Cgk8ztuiCH4grR89dLjozr9O+KkEXcT5tWbcvgHAHSAplakf\nIPsGgyP9B+2w6lJyfOxbJudnmoCTzTXRC+Ftd3kZ2F4HIwGliMs64hoiUE7x\n6JMSLd5CiRdqGO+Pd7ueWFlndicvlHW4MrxOiiU51R4aQ1GPboIABw3O8IfG\n5Aw/BO74/Rhtx+Iir2J4iPspeUwOnsdgf+9+2Ewvo+nfur/NdKIOsnKV/fzl\ng+aEk+nDfh/CHXnd9V0rKKoP13piBFnZuXDFw0mJQoPRlYa+o3cv1XHmhdVK\nq8FJMIAnGcoYgS2p471Y2gcDarkvhK0dQ0YRfjrFQBD9C3x48dZ/+GwvTEia\nXSHLJk7eVtE+xRUkyx+Ha8djA4b1LnGowG9Qjsjj3QJnbSzTGeLP+czZtSF1\nrnJky59iqeemk3SA+vBygbiz4sz5ujexF/xF0te+RRAMioLij3DpP3S+wj5I\nLUav\r\n=gsya\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2x7UV8R2GeuyqbkjoZOtW2x+zZNo3icdNf3B4nDjAMAiEAskyW0mh3gXMtXLR2/Us3F06Mhd/rf0FQLWd+leCgV6M="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606301175-8907e3a4.0_1606301346166_0.578298442426703"},"_hasShrinkwrap":false},"2.30.2-next-1606306866-d3fddf39.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606306866-d3fddf39.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606306866-d3fddf39.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606306866-d3fddf39.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8iEs6t/54IwCMmTt1QLBOt9Avtt33MHQ07ITQqYdtH4LMc67/d30m5Vvl6FGNIqkve1UgfHJpu3egogGbApqOg==","shasum":"3773bae5bf1de3f7a7f0fc6784c7bcd17fb817e2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606306866-d3fddf39.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvkzRCRA9TVsSAnZWagAAx30P/2+myrrIlB90MEbl3Zxk\nDvBGOH2j6qxebe0fhPcR3Yqzxx4IsY6zdMxOOoktD/xqxKwkyXrvX+GsKd2p\nvm08+YSWbnJnuoP0xTffGUeA1/BEH1hJcnChfkiM2N0qnG7E21MVRgaZK7Bt\nOs+TyCiq+s6rP7+djSTKpgas9gS6qsFoAW8q/stPtZ2B/txvQFM2FMv7+cAj\nR6ZNfpV+FoScehJzAwIlGZhgDj8c2jJOxmIDdDhofoMlFr/4jvpErup/SZOl\n/0FNbedjeUW1lX02dmqPX5QRLToHDHW1wT4XTpWDSj3hOVZoMyFMQ5CFWv74\n5CiuuRst07tUy9/6f5rkcDaze1vMY1s/2LCV7lOItaS6htmz+p8vYKuCNXLf\n9QcUyVFjPYhjm5htZIgVykTlcPZwS7tl888Ep4A7O8kbh+eRTOBS7TaGNhDi\n7i+yiiZJUT53FRJeX3lF2kW3bBerIozD9PKRhMRt4OFb5KWmbLpIcs1JtXY4\nkmA1+Zj5g75nGGkiqUzIpOcyxjcwre6RGZw3rEgxk4jICTQ5kZ8n27Nq6kWn\nDs3sD9B7PIDIJjQtEY8k8gXC2tfSz9c1u17yo6/bG8kLqh+EBy7VEW5z2j5B\n8UiWSu0kZ6sM5AA0OWAhXPQeajqQzY8Sqt7DvF6nejKSr64NquBMzgjTnsnK\nchcp\r\n=2p7p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICQrNEv6ip7um7covRxn2JkOPlgNyDCHjl9pUii9ls0gAiEA0U8xLTktZYcJe6VhxSwxbAcqmiBKJEcaohLQAQ+FpMc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606306866-d3fddf39.0_1606307024453_0.6830034818382902"},"_hasShrinkwrap":false},"2.30.2-next-1606326547-10f8a5c8.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606326547-10f8a5c8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606326547-10f8a5c8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606326547-10f8a5c8.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3mCdH+lqXmuDxWKNZrVESQZsYValVKN05HcfRnZ5SAjBfy3vSCQ0UBsovOy15MoAMVIz4cTSh9NbMEceQdOgMA==","shasum":"5b57b31cf929f8069c788679369035b7590c29c1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606326547-10f8a5c8.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvpmwCRA9TVsSAnZWagAAmBAP/AkXFXAZ9NGhg36yeiH3\nE6odu7pHedwPpvIWaxljDwTzRhsUf19JqgwGRQJGYnYimbu+vPB2Mbb8/2Ia\njWfvDRmNWpTg6FvRZ5sNchRO5Y8BbbdjYQ6iSOPK0x/ODzhNpL4o1HxGa+k4\nZRKkrRvawed4pQYtZqSIQnjELsvG9A0ebjXszYg6uWIpC300svbZ7++cGi+Y\n6/NgaHIV0qCOTWELbuI/oQOZsYl1Dq5qQN/iO9kJ+4/mAxXPl7glss1IOZuQ\ntevJhe/3sTAj/59kzEEzJ3ubY0rI6ZVrr+AjBzD9SsG2HkDZU7xf/DTYp5oB\nf/txtU+/fHvpeTnLVwj2dXKU+/y5+NNIx9WlIDctXktu9gpDHmLA0jzVoMjB\nhfGpYkvuWJIOwWDu2KX31Aej3UmsVt+2+9d5x0nABrAb56sCu1je3dTW5G+U\nD/Fg6L1YkCzhzRjGsSA6aopROsdfrrG8iD333Axzqqy7YCYKSSDU3u/MdHN8\na4pHIH5VFqT97umNMWIpMQLe1FaoE4lWjFOa43zTRfKKscYh6MRrbtaiWmSZ\ncg564F/eNPVywvXDpQPEXM0XhcyXefl3g5hPqhqMwg9u9cXFMC+4/qPB2RPD\nWspGjCU7yF3VvdUMwjWrgf2vOxzTW89tX7Qj2AB24vplv68t3Gu+GevlN5Xb\n/yc8\r\n=/J77\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDt7H+ckaQBYhS0rh3Ci04lXx2CvZDN3m8tVUrLiW8+ZAiEAztrO+hqVDqgRUMP9anjDSqd3cqTzV7T8N0JYKqjfeaY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606326547-10f8a5c8.0_1606326703290_0.3235325257422754"},"_hasShrinkwrap":false},"2.30.2-next-1606339979-0474781a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606339979-0474781a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606339979-0474781a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606339979-0474781a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1HPxGhdyMi+UlwkIZ1+QJJPx5rvpq0k8q8DB8x/OKdaDltM6+k/ZrfEZ8KMWxq/OhHfZ3OmNJ7Yn8Cxsty5rwQ==","shasum":"f250246b247d00b09f08de4b5ca944e3564b1c74","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606339979-0474781a.0.tgz","fileCount":58,"unpackedSize":141489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvs4jCRA9TVsSAnZWagAAA8UP/3727ZSiC12G1OeeY9ah\nuy6oFAXJsjIuRqvdJ07rZKr6aaSTtD1wMrkBAGGxr6AnYWBLj7jVBs95WLly\nVFkm4BM8UjKo6mTv2AjeYiIfDvUMsR1oFZ7GTv6bTGBaRhnNG62BcbjuwLZ2\n5v/wwzlwgv5Fapcj9eU0hGEoxQrRV4nEPiut8AP/AidloTTMAHDM4WhclRVr\ne/QLMv8RtXSj8DhJL7ZdgPJEf0e7/C1eGf6g7LaO2rNKMmVnCtDWcw1o73dw\nH4zMj/I/+kbzXOYYYzP8ahP3Arl1MMU3CXlO5oDfwVupOkeoChGoumnJWX65\nXHz8Q/T6z5Ujcht2h/4oS9Tz9ENCdURr3waJCjw40pgO/YA8y6fQDhoBOpA0\n2pspXLfQox4YN2W37/CCnBjOYnHIPZxrGgxratBV/fTsFtsRK+0gD/5hMued\nwCo5ya9dMLEcePvtF4p+D+LlgHH+Sj3cD1IwHJHmc2yXh/DWTu3Lx48SAn0U\n02GFODfVKmR4noAn3nmhM0eBMBVc8NJ+JBl2Al8ewldVTX59hjrQaEytPw5L\nqEiuLblskGaeR0trm08bDxoQQsSdpBhbzXkTK2Xfwg/NiI/sWmJl9kZ4o0PF\nMkbDsIP1OYxu+SERAHgP0UxivgG7w+X3lb14H5Kiqn2p7MKj1n18Nla65GVx\nEJFZ\r\n=rUzO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGtO2QRy/2oRKxu31eKdesPwD3atuHdlFYswEjInpEHgAiEAxgcdMnRh2YD/N3zA5Nlil3sw43HRaawfNTZJ9W0+wL8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606339979-0474781a.0_1606340130949_0.5095158422849353"},"_hasShrinkwrap":false},"2.30.2-next-1606340374-0474781a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606340374-0474781a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606340374-0474781a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606340374-0474781a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2CVCfxSmIAUEDLUH5b9Ly+uaTQQgsA79Khv9WLwrrHMPgYG4lJNT9QvN2841yd8iETgpkLqEfirxDZkf4fdjdg==","shasum":"0fa3312d6eade414d2f414a3074a21ce13b6086b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606340374-0474781a.0.tgz","fileCount":58,"unpackedSize":141489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvs/FCRA9TVsSAnZWagAAkXUP/ifA28KwgWw1/ej1g754\noYTcqUSUvn1VwOmTrb6iqHlx9GYovRAMZfkNoKoTuREII0l9opf1oXOF1gHO\nzy0JT3URxcDFCR6VOCHc3kpclnVYQnaC6/F81XvqlUfpRNQc6ZsO+xlJvIk8\nrEbn/YCGpJ1JGnrHcECgGq/FMMpMkUv3kahC+vLBaK2JmCp2TkYPUZqSdv9Q\ncv+MFvJr9+JBRbUdmVV2XJ4OtCzC7RbvqCbqhrY5YeQGql1uBj8CxpTDX1u3\nJvLM4uXWhiYdhSFTGNxqcLA4yMAd4w7kk38ITOhoucyyBCBKb5FbsYQWYrFT\n2R8SPxiyAOZ9jox58lk2QkI8JZPBP+6C9WSsb/k2rC9FT72fTHxMBRjnxNT0\nd2v2VSpugNi463tWAkmsgdfhKO6NDsoGDUv5rJZHuXMbA52vgKqt3maO8Em2\nOpTG2IXMGnt6accW74CRBZVb6HVd4NfOaW6RicULQ55KnVOvskJ0vhqVseH9\nCFMFpktpR0MbbuhsaMbnOBmR+zWPc/mv3KbRIJ4KmydH21jSxkRmFLw+2bSA\nYjIJ52AhUKZTkIkCMI4SFiMOxiLIRQWbS3Msqs8+36lQZxOzJIzKcfUdIEBf\n4S2mQFk5QCYOX5rjAtPLsAQzfiTpPrWGXPXVyyqKLxztAxFGYol7Z03Q6/M/\nOsvu\r\n=LMPQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUOuXJdrjWpVBv2du7NqhMAGRwe6bclxn9Gl4uRl+SuAIhAI7qYptzUaLF3Onlvgu1I7bVqXuvNh26SHMIKKTrYdLD"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606340374-0474781a.0_1606340548728_0.01354895132172862"},"_hasShrinkwrap":false},"2.30.2-next-1606364487-ea656f0f.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606364487-ea656f0f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606364487-ea656f0f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606364487-ea656f0f.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jwz5f+v3o8BDI5tJAjPE1NR1OLKldWAeT5RYRdqW55ZU2+PTkt/tKskOO8Y7IBEnz+fwjKoQkQtmKNp4bn2EoQ==","shasum":"74808ef312654c99cdbbcf1f05fcb40747589162","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606364487-ea656f0f.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvy3pCRA9TVsSAnZWagAAW08QAJJrVUXe2uua57sf8POL\nyTVTxTvA4MBy3s6l9xvDlL1HFFQQkRAfBJz4p+cWOQejVlTwUG0AdDs66PbW\nUeTgmXSdLjoEM39FS02/ybNnaR4PZtnF7xisJlL2grR+sL/KtM5XCrsmFFf4\nr41SLDu2bVd5NMqBVqNel9FVVmjp6DWC/3HX95mZbwfCRkZBKWa7b9EDN7j8\nsCcQJSsj/xb7V2t5gQoYE9W7v1psCOcJA/VsY8kJZZIeii3nHccuzM7N6E41\nFVX5couTcIZkasVOHOz9KnS9hsyHJuGQ5y1agpRMdif+yioKCsks6SmLEt4m\nGTh5NdCGJeB7aK6PyejvrW6tgr19JE8RsnooUZkOqSB2TY9Cwi2F+CP19Oe0\ne2qaDA/7QswLl7HPIOVIa+cx9j695C1z8iiA/VElhxcQF88ZPuIyEDlh6H7s\nweKNbPtY2lS//XJTMAIPpXnhohAWfsKn/E58oYxQgL4PCG6VZ1aKKymXpBKN\nNbM8c2DAu/GQcTF6YjIGskOvbwe8n8qqBfTjp0jC9rUMraap6lMu9HlhAZUk\nff9X4yFaTJP3Zlftv6SVJ1cUQSXeRDQfx6FXY+xQUlZZKIjJ/LwRWHdStlqr\nwGvqK3bEkbMhg/s0LhRR7CpjnliHtKg+IpLbdnq6H1ZYWgXGAup1GWN2TY1d\nnI9B\r\n=HN+2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBK4zetAh/Ns1dNhGBWoq6QiI1dFtCLlit6Applzf4ZpAiEA5KY32GkHLVUKzob1a1hcL7o4W/r/6sQdp0gYgE9GRKc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606364487-ea656f0f.0_1606364648673_0.23369675524487854"},"_hasShrinkwrap":false},"2.30.2-next-1606387651-39487564.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606387651-39487564.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606387651-39487564.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606387651-39487564.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Qf3W9Mm3j5rjRiGvyXovOgGnRZEsBEjSqtrZqrfHzN8dcESopaLe6HAv/jrJa/pWo26l3IyEOPH5sYBA9Y9bUg==","shasum":"507b8dc6f33d8bf937c37c5bb3584fb6d093faab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606387651-39487564.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv4hhCRA9TVsSAnZWagAAEJIP/3vQqsXs4DmjuQ1zTxMk\nKxcyLYgjsl0F1Dr8aNBhcrShrMzCBKNst0a0iKKmAB5829eA12nvhUY0DKky\nO9I9UqpCG+UWl+mERee0pB+3URhpQONZIKG484SM1+L+XYsHMZdgoHZuBt5H\npjkZ0YXgbHhTqctbegGMkFJK91aFtgTJY7tGZT3nV393np/D3UTtCiTujrYb\nuxEff6qo0/t3vbMFgNwnlBm7eF36VtRlz8fiOE7xup4CfrxOT3rO/4412idy\n1rcwrIWJt4J4ppDsLq/yUkAhfgIC7cQPm//PkWcmPyA34l0StHTC9DNnzDEs\noEEZ4Rm+FO/1ototj/XrOKfoPliRLR6rPzrv1lSn3jSDG7a1Eh3b0NmJVMhn\nAxOHBq8wnXjeUTtc1OqoolCA3TOYCtXk896PiF+zSkcKTXLI6WZy39tKOsBr\n9jsfeYA5Pj7p/LCfTMPZzVMb0oZi5UK9Eb/UF8TWfsVXXR83c4h/o0EmYQcV\nrkfjowuP3V805fEU0pPn7OWQ3Wxjyufx2JIWa6prtNHpnYlLgpmdxJg6ySv/\nDq6HT1PtdRGhooFXjPBhH3F4dtJ57dI509PJD852a4tkW6dfuTAK+ZF5/nKI\nosBOCN/Rl5SvlxtwgEamTs3FzdeuExz8dONuMZSxWxMWXMH7ES21pMcDALUX\nYx99\r\n=nWAX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDh5aJ8ILgGlCZpL2+oWTKdZcil2ceornzX+bjuXCN5eAiEA0v1lKY48jkrHjcCHZXb+fcF0JHDe/prPguAO/ARxXNA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606387651-39487564.0_1606387809223_0.4636152140157501"},"_hasShrinkwrap":false},"2.30.2-next-1606388291-53a438d6.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606388291-53a438d6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606388291-53a438d6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606388291-53a438d6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aaV3G68Gjx4Du3d/R2iGy8cwkxzmblNhRmwSfdUxVoaqZAfVo83rGp8s773PYd8zLpQ8RFAWbpyZ4/uSn58ShA==","shasum":"033eabce2e0edd7a48b338166172e041610aae05","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606388291-53a438d6.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv4rmCRA9TVsSAnZWagAAm60P/ipP2aS0RKle5KIMjRaO\neQAjfJAeQQOEgy/9e8SAZZ9aIWAcvshBhDN9/uThyxh0p3f+/o7PhTMHn6Em\nj3hceagqmLSFHMBwm5e/Q4zbMjkKzb9dD3Y7M4ohqRT1ccnkL3bt3oaikk21\nXr+fRAFTh89E/3qDXdiQ6qL0AVX7YjeFWNfROjQxc6m+FOA3bP3PgITeX8jY\nukd6iJXKU4dmN51FvYhN7rSZrf7MM56hgKAEZreMmd/nXlljnmJ/qlO8Ou7F\nv0XwWRKWHehEQPp47tkp4Tq30Z/POYZZULK6EFhuTP/6GCMx51FvRVwLEn31\nBnhNxdypdcUXNfdVe2aquJh0Q4gmXa0HpadsJ8MWC74ziZI//P9hHp3UmIva\nKpF9k+cyTMXz1XMvzvR/Sxok5Jjtq2xAqgJqZ3ZbcxLB0XdoIEjwKFaYw+ig\nvRpVHXAH1QCDwh9eQHEx/5A6MDSwynSff5EaBRtGxo8Ts7CK21Ph0yloK5h9\nIHxUzWDZpX7zmDccVE+9T578Xv2CpztiVEcfm18dlv4rdeTFWt+E/ohVgStN\nLokjlr5MFXfQQLIFsF+wmNqDCAOh1dThUxuDuyIvFpAolO6VMAxpPTJjUcRk\nDgCY7gP6sxxW65w3kN+wjkZvoCD6fm8YZwg+pwophd1oP7POcbAmKlCgCbnc\ndbs1\r\n=Npx6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE9XuB4u2M+n53S35kx7GLe9MVy+h/hOj6TNasYUb0M4AiAWkezhqo6UPu+o2E2n1klTsNvr7yqzlthOg+Jtts+iWg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606388291-53a438d6.0_1606388453571_0.01592303535252526"},"_hasShrinkwrap":false},"2.30.2-next-1606395226-34bed290.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606395226-34bed290.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606395226-34bed290.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606395226-34bed290.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-L3ILyIYy7LuoqVhKHwpWAd5r3cCDFPFNt8Yd232u2HeXnmRqgfVqdfR1A+Cne/isJX0mXliLgW+kxQbK1TA6dg==","shasum":"098fae84ebb24a4704fc76c869a4dc83b0539b9e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606395226-34bed290.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv6XlCRA9TVsSAnZWagAADSMP/2vv3vGiuLUYVOZWGR0G\ncu+CpVx9kocaOljQ83M/C9hTchPj15qX8lt4yh1+NYrhtRdHgsvancqiOXyW\nfD3xP3hMVOqrz4zBClseo8gffKhQspL0wvxmyBxXj5xqlJKeLMZ/TjDpKHZk\nnKACDq0JZBf+uFxv1VdHj5WPN3+MbUvSR4AGlzOwZ3kYdO5MPeXr1aK5sGDf\n/+39t8QbdvvYadwX39+CFCMFBVyEB0pjUTHIlxFzx2uQeMTiIZa2PX2pH/7P\nyI3oUhvJ6QeZTe/5GLXyLKb7n6RQVBKEp7mCSsmrc0zJAXmJ2jzB48wHVbDj\nOCfxi21/wT5b3oEFW8fli+s+RL0VFcRzIRIBF1uOyt+x/6biEGggXVdu1EyF\nhbHP6HN8adCj8lgk4BNjTAZqH5JFCHKps+4ayyefV4vJTmjYgygkpjRd7nSm\nkSw/pOMF+/Y4XA8sz2T5i6OMx44UJ6KHPxXA6tOinJ36ecbQV7d2er4OyBVU\nCW/UUhyMgck2ZSrAzuyazQRcY09qMUH0I5zZa7T3DgAj21oirUm3NK4Q9qTk\njeQ7GPzAPydZGe3Nl/V+7pp2SPPRZ6KQzlWoAFsbcNEIMXIJaO7pyAO9jTxg\nqQ58y+eHNKvGL2tdcGkvVJohGS2mr4gVnH4lGdZF2wxRFFFD/Jd5207rThXl\n1/BP\r\n=bKBe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDiik+V36++5Gy13bcBHTc7KdYulvJ5g3+XIeiGJbic3AiB3WvCUYlNXLI0DoyXmAMSnpKVsx2b+QDCTzGYZJWQ5pQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606395226-34bed290.0_1606395365458_0.2742647622596759"},"_hasShrinkwrap":false},"2.30.2-next-1606396363-8acdc68a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606396363-8acdc68a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606396363-8acdc68a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606396363-8acdc68a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1ZLxKTkrGlVMU30PxEdryeWYQA3tJRwOhYFUbwXzFseWPzs5OkIXfaLR8r3/nA5l9I2PQTHd5k0HEfycyfXJag==","shasum":"5c047c1076c06d84ad4bd6d8240f8cb5cfb173b1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606396363-8acdc68a.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv6pfCRA9TVsSAnZWagAAx6IP/0TSuM5NaE8x9qjxHQpi\nAQFPz2DK6OR6TBwVOtXrvu+7enhfpd/z0J5RzQsjlH9A6H+QobsVFjw/TKoO\nSNeYhZXo25YHwOttKL9lRlXZavhAv/XgXu9LMPbhpRzEJwrmg0wTe8VKFQ6B\nD1vedBdiovwrgFdnesLou2kHqoiUJPQrRdCfG/VKOUCtxpN9d/68nozCxigB\nwChHYj7JKDUN9cTKxZND6UH1I0YXMvmzPf3iW2093KZuPbLnYTtTemIgP9z9\nL9qkjK9GaE+RzvZg2BtH0EBn8tw6GtqrSsCpFFcplYXUtZT/C9636BugSPBM\nBfs/1jzG668MLEbyMy1zg0WEIopL8xo9Qm2f446YaqZyKT6c9Jbbb5kj/iUy\nPnp8BS4HKXE4wf56D8BRf7dmsUyuaw+H192MHQwTpt/HTWtNm+5j2iwnUJ6D\nmEFLNO90i8I+qsbsw0Tv+o9Xn2wiMTsegInxAdRJzn66KazA2WSE4svN/fTZ\nXT8g4AMv4dDgkTBndw6buP7fOlKR/EeVLTz4sEvhIk3PTxdQ6LPEr1LbCEye\nBqERjsIH3jarYyLoh1dn2ZEGXD+kctY0oUFYsKieeP0MrOg/qNdLhm/xOgLA\nn8n0RywGlFB4DjBOtk8yPaUzCNaZ7ghnli24tsfRrfroEFZNCRLgf0l4cMMh\nvKfk\r\n=ATDy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzqVLZL9l1hnZOSV7sGJ+sBBy8YeDOJxC3Rnqt7DxaUwIgZ49ZLyvZ1QYftsTVndkLy40rZ+QeJvIyG8KLe5CdgkM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606396363-8acdc68a.0_1606396511194_0.6431047211794665"},"_hasShrinkwrap":false},"2.30.2-next-1606396924-f730bd33.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606396924-f730bd33.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606396924-f730bd33.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606396924-f730bd33.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JHE7VfovQ9/vne4iWFsX1gkqT+uuLPyh5fD6CHna1ohedifKHfFZaHhfPQR2pHGxpRpnsHKRysHmjjmUfa8SYw==","shasum":"1f1deca38bba400ab54310bee53828504c10d01a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606396924-f730bd33.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv6ydCRA9TVsSAnZWagAAT0kP/ROJs2r9mBESRkUGDyl+\nKcqlFR5DAJNBdQFgy2HGQwyPWxgEprcKRwJsFZHGORXS6qVUiEj7vFxJMUba\nYQYM4MWtAhWUbNhN6j/XFTiVQjZ8cJxyD9iUlt5dKQU+rR0a4xzcqArkeaXR\nqrN1tZshB3b8bqLYs4RfhdIGhG02p/k2uS4ZA7ArZJBNsjxuXrPuApGIGw+2\nxjnK3q6R5B4RCWMqzfl7TbJEICV3dvWroMyegA65Y/RRN2ke6uFElMFe39xK\n+Z8fHGs58r3x+KifAnVbfO1pMK/IW8GJhXodq6cORn4QhBEnhMhAF6imsFes\nnijLRtOcpae09bNCxKyHmqCwXq8VstcvJQOtAg/Xa3iCKNj+qkVn0JS9dPSd\nU++tYAEpq4XkKcdBWDwx5aX23p8qmiJ0jeotlo6WPpHhfHkYH+YNg42cwk7h\nL+nnwQWDWaC1otCbYtdqZuc1TMePuyPN3/UGPFi2nrWJRMnDm6qCAwW9tCC/\nl3yH/3HgrG8znHJ6oqys+R02UO4BOitlba/Mq8OMUFrO3lVNZBr26CCGa1l9\nBI+4rxzHCjydD0PBVJv7ArxN79M6pEo/VGS8T4k59DEZGE3pmkjgiqg1q98w\n+TOJHVwXxC0gnM3Cfy1NDehWcpKY/MoFfCorZU/zaVomkUuIaVrfFcDzaRNh\neMyE\r\n=BAwq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGrw+DPojF3e4k7JbKKXHFaa+NYoCYD8heMMx4Y8ipxFAiAfchzqykLz2jH3L4mOINKEm/nfnNuColmCcztCrjbuOA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606396924-f730bd33.0_1606397085136_0.9794238604335173"},"_hasShrinkwrap":false},"2.30.2-next-1606399729-18325b21.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606399729-18325b21.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606399729-18325b21.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606399729-18325b21.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0+54yjv3oeixXYNd7lo1R7F6n9teJF3bwCtzGMC9+jChIaGhuCe8Zs9BEb5mhM3dPSj2nnBEONmbdpjWy+Kmcg==","shasum":"c367d39461fba684fe99b5bbc969c2b84f33b986","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606399729-18325b21.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv7eXCRA9TVsSAnZWagAA+dQQAIk3Cs0mKh1x2GxC7bHn\ntS3SbzX3vtZFX/CAcYzWH6y4mW0R4rrZv9q0sSMGokR9x2Y7PvSWdbdpDxsO\n6iEB/91ZvYcaJmAPmTc2T8VmJ+GFR/6CNxypfHEopMu0WMCXqK+m8E8nw0J3\nGq70Xce24/hhazs7qIZvClg4soFZfqohodxC8PxXZvvQJCpOqM8lZhuUUz3k\nl5o5IpO3fwQxKjHR1N0Cyag+HcuaGP+ums5iT09ly6c28qQJjJLdGi0yKHgu\nqkaQ6WOi+NMMZ6Bvo58/deLvTnNC8dm7QfVbqqXjB1zLNjffxEBEDZKLWUiB\nM34wIS9IWe6Zrse1UnTK4OZvtfXZlTWVAIrvqiXrzWc6Hr49k9vx6taRJWoL\nYWfjHt2Hrn6pV7IwisdOElSHdjnIsvnhRYTb29hmB7BV81nI2ZtC9OHZG2ht\nT4ZOssf4ZDa/SrgCMkFHDSAQE1gyO3TPGVPw/svLJu4rMqmJV6ghW+8rZDDs\njuysoZwD5My9Tkt4dsg08g1EFFB149xTn+kO4eJogMB2dxvCvBpz9MtvZRtc\nQc3BL48yQtvh7OUCKTOsOarRTrh0+mkeJU15jVOaHZdfMqkNS72Env2v1HHw\nsdCm4xficmkF0Q9vssRZ9vrF51LUcs57mJ1tMz4/PEZ7c3Ly29pAMTV0z/SC\niu4v\r\n=EB51\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG0bil/Iwt+4M4hd92Dgc3OtqcJ5P4oQYqSeIf8pTGB6AiEApuLapqHPTl6OycatR3d6lSpkfuIaSPdwxl2tC/kayjg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606399729-18325b21.0_1606399895263_0.028302653409169487"},"_hasShrinkwrap":false},"2.30.2-next-1606399875-f9e02808.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606399875-f9e02808.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606399875-f9e02808.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606399875-f9e02808.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-v990sx4sqbj3pfrKIXh0joP4m59xcPNeeWASGHzdVMo0qUmb6nFSvPBz0BiWBeBkWzsAXytER2LqeGWjaJmnRQ==","shasum":"42406cacd8a457fbab8215882ce4c6d00dcacb7c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606399875-f9e02808.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv7ggCRA9TVsSAnZWagAArA8P/3ivwRr7Clsv1QF6chbq\nTSnWrHUWD0SNZDgQScWv+NSIP1pMDqsj1uEjn6wW+p9SsD7bpirCECXtSlck\nZYqwRNhfg8DSvM7/86K0MtmahHGfghdt0SQsHAJGeCpdATSzS8L0KQTqEb9z\nzxS1taFnBmt9SLw7TaTlv92c6idt5ew/USe9Grq02DVBdTkbWKaSBOeuoIs3\nrhzApuL/X/D1rf+kMD0z/s5MSATpiPceFmeK+AcQp+35LcQOogpVDPSzIF44\noTihtO9Pi5jz7z1+5akRiksWCjVPyKj+fuo6ZBAK3B6CAfVPIwn+IKgNJWtL\nX9yOWlypHbfHUXzUtFhnM0Gplhio93X4VsreQJgAxgoG3c9l1KfLyZZM5i6B\nVSaEgVpXM34UKU+u/Q4arh0zh5mtXlzkW7CObLbaHHiy7kaACTxw2O5qmPkF\nlDDdN8zOQF8l377hPz2R2WABr9mZA6tev+EF61ZmHRPm5EDsNc7PWc2QdApT\n750B9N9/coHJtglYRz+SSxO8QMGd2Qr4MJespwh1gT0Wk+spbyj2XUa2OpjR\nol/997jkWv/gzR3fR9DEeEQStyiw+0zCtx/rPfXRdlK2RDi8aM0eBWicGX5u\nBb9GVvxRh5E4I6VhCtUj7nj/943Jxg95x7c+CpZerL3i360G7dHw2TocXlOY\nwA2A\r\n=5zYq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAsrnQjoBh0lxtoE7RRzB9dVbgs3Qa30JCEigRDXEj5+AiEA8e2ROyUzEP/O5EWgvEYBID1QVWFM8nY1U27ETLkrGIM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606399875-f9e02808.0_1606400032430_0.16415581984363015"},"_hasShrinkwrap":false},"2.30.2-next-1606424091-9fd744b6.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606424091-9fd744b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606424091-9fd744b6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606424091-9fd744b6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CaYqi4VKuTP+PBuybpv/1PtYzWHIJ0Okxk/l9O/zBvbJdcyA6InKxFLRTzCRHBKhOXkdLBiYIboG7CiXaJFiiA==","shasum":"b302b58fec86d99a01431c1b3aca03010cdeacb4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606424091-9fd744b6.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwBa9CRA9TVsSAnZWagAAm3wP/ixKVJHqAAdfUGWXv6T+\ncJ/8KN0Db/bZMnf1IulNPnwiq+D+BTlRwpU2gx8rOWimiuI9OC8rRQs9tkyO\nEixqUVypRDZWgI420UpFReNPL0JCA05UrquekpBubREF3ZZwyHaRHygcK3s2\nNcxVpnuzhHa4FN/IlU0MlCT9c6NdaJpNHPRVA6AVQ1jvyVvbgo39K8XxpMgn\nYAWjsUfg+e0Czflsz+76bbVCpBDI9EJvC9PElreuyTBkMmXshWISVYNdytC1\nP+xjchZhuXpo29/HnnDIkL+nh8ozAB2vkd3G0pNPjBQ5auAfkOxqfNr2KdxC\nA1p+WWS/xY/NwDmCxxvb5cJU2L1/h+l8iWWNoedfS/Ink78XNj1j6izHUin5\n+PJEIcOJUToZGEQv2ehvBikJ1O345+oPwDiSTcAL2ZnZP/ZVeMsuxrbI0mVF\n9rZepZhOG4RSJ73YtJyOKThbnsa5tAL5ioxJPS3SEm5XsUnkNCHEpTXvhxE+\nn0WqWayaAGjgRoxytpzFTSVImem1CJCGaO0F+da8vE9wsh4wBqskUiNCKtks\nz6d1BuJIoPoMS4VAzvMgjxjovDC2XYWCIVr0OP/blRIJqYq8VwpUpojQGPUi\nfEcrNN9fO15p+GfRb0kfRaqm/ZJg8UuC3te74VPZr9mFrci59EG7qqv46U/+\na1Yr\r\n=+dBq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYf51XGKQl3O7eu8wnnzLcSUI7Q7sIc8bhcjAmxEHh1AIhALD+quDgAqNPlu3me0KHje3uOIiYIj79E86uZmdC5uWQ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606424091-9fd744b6.0_1606424252629_0.0237631011225945"},"_hasShrinkwrap":false},"2.30.2-next-1606427045-9fd744b6.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606427045-9fd744b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606427045-9fd744b6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606427045-9fd744b6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ym/LQv1XOdWs2mEkd9eEpy9VpiOyMBBt58HWVRDWwtV6rb6U7WQ8hq1zClNjO98DxLooWGe1TAUzwh1nfIBtUA==","shasum":"a01511002ec0c2ea03716eb36593bf47314bda7f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606427045-9fd744b6.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwCItCRA9TVsSAnZWagAAxCUP/ihi265Cnc/gd4G+t6xS\nlXQcGYvzM9HMWeqNCbdyfkpKRMHXMtqhy87CTct90gsEJEKVM1RSHKsk6QN/\nq5lhDFW5F1go7WeBt6n8qsQhFHIZiJPSvZh3EBPnXQaBnHh91+YTTs5W1d3M\n43LV0dzLXtxpsK6plLT7gVaxRPYaxEf9BNod/1dmQ1CImVPktGKky/9lqs3d\niN+U0aC/nAUAJTlCvNHfJi+8mb1KqQ/yRFsleced5j7ggbrDPymOu7hRZV3J\n9c02yfauSgUGNJs2eBaH9Tr1V3lt4KXtWs7DGq9uUjK664A0hTIsvZEOD2It\nVFUdyPCzleciUZ5NpBXxb264XdIso353aTS2k1hOyA5r8wyFn+e2EjmN5nze\ngxgZiK99O0qsI8WInuNpOpzAkIDgt6sinejYbdV2Og0pvobGEaqleeSmqKgh\n6+qoV69EQsN6kXyw8cqAn2AczwfSKF7DVAvhLJO1Q9ihbwmEY/t29+l7qInG\nTYIZ7G8md1kz2rMV8XDc8mm6lmQ9x+BchC43F4J/SdPuIXN9+7hlWqU8SI5F\ngUQ/WpkxZR3OCg5iD1gIT29emnPvdcR8Spj5kScLQ9a+NcWuPVYCCfXv4sq8\n5PTaEhZqCZcnTfRM5vRcbrkudVus9mqy/9M5rhXGyiA/2s9XXy1YORkvI3sD\nDMqt\r\n=PZC0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbj2/tcdJ2FuJzRzz1Ad0EtMaczS3cVdJcP6aBpDtUQQIgZkcXDla1i+KNl0JFuAlRocpW14h87e3+7LMqpQbYExE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606427045-9fd744b6.0_1606427180637_0.8132616466150868"},"_hasShrinkwrap":false},"2.30.2-next-1606454535-f70a05df.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606454535-f70a05df.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606454535-f70a05df.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606454535-f70a05df.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+PaZ5YmBkuBPce+Ws7KGeSok/CqzpiBCjBXKdugI0LfUu61bNWE5orjygt3vWTgSfV39llTgzXzj70Zc71fb5w==","shasum":"ebddd2f15e1f0690f832f88c67717c16333cb634","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606454535-f70a05df.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwI2kCRA9TVsSAnZWagAAhNwP/3ggUTt6Izcdff5vqDKC\nmQ3oEMkAjPiu5dvSgIdSO1CXpI6OVlHLOPkABfnUfRJpMywBKQUh4PN9T0ZW\nljfhvfyZngbkdHRTxWrmweJMuAATEhJEmCnvWC3WquPmTur0809ZzG7xX7Ml\nmiKd+R7g1TDmZkBsgmSo/a/kHgRzdDuLbx7rDn69O/lb5cY1aYKww7yvVAr7\n4e8r8GnfwVWR32SGwLFMNTVOmz4FFiBk9rG+iLc5eoXF0H8knTQLj3K8eQ3f\nLNzgPcMaaSKlAEKBv7vRqueIiVd3gfnstkw0C6tWy37OK0jzbKM1skOqEgeT\nNPgYfxH+6CdpDfgPbEofq55q96UZsHs+OZSWA8HlTNRE+HG63RJuauTmZp4U\nwCcvY60mFELqfdqMmGEmBh2i8+C7lG8EySA8vxvpsUs15P+P8auiy+VTV/i6\nwkEtmfe8nBPxnzjZSlqyTcm+1cK+179ua1K2cM8Ni36Gqzg6wiraVmV6J2Ir\n5JQEJsnDSvHUwsJfQ+XrK/ScHRwW/zaJuRtyUkRYy0Vqel0iQcD9TvKPDXWT\nm8AxeC3aRB5AgmwgcVpWvOM9p2gULvDimdEVgabRS/1/mDqMPu5IlPvkKy3I\nM56GDguDc37uJO8lW1Fjh56LIStAUZrsgJqWqY9LY13yuiXSr+qV9RkXZ/UZ\nRBgU\r\n=fX3y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUDHzPOCJGBKXFFRZmb5m4K9LVqLikbIomQq/ot82YdAIhAPaliMxeF+KTKK7d8wnETudOk2sOkyQA9GaPa1zjg5R7"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606454535-f70a05df.0_1606454692088_0.8029792604454193"},"_hasShrinkwrap":false},"2.30.2-next-1606478305-6ef1f197.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606478305-6ef1f197.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606478305-6ef1f197.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606478305-6ef1f197.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KEqYOSWoiNrZNaABAGH5x2L/eU8bbsfsmOFrfGMfsX9jx3gt1RG2tgRgPsLsqsielx9IAq/2h1L2uft+EdeWgA==","shasum":"858a4c104e5e292915c2aa76b1061a703fd45a6a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606478305-6ef1f197.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwOqKCRA9TVsSAnZWagAAQskP/jDdn4ibupY+iX7z4hyh\niWrqwcNEOjL/Zpe0tUuqHuCfLs9O9cfXQwdBxYlykIeMoynYGqovgf0CRzH5\ngzhNN10BrJ0OdzqWTD3YLmb4Vht4b7HXLyaYGBc3sIqUVLKo/OiwPXwzA8fM\nojH2LHR1kVtTsn6SkHe7oBXU2ayE0aT3eBmQ7qkscKa5uWZYjghmzblEwYbL\nE6QZe9I7wqP6zH63A3pCRyM/9RA68XMN0fZLlFUNVnrForwKF/WL5zai++by\ngFgq1tWf/N3VSFPn9JmLdjizy2oDBz9HKgqTy321hpklPdcS7EE6C+FHRJfo\nB2hjnjCL9+F6cr67s3IXhJwnV0Wn3bi2jk0K+HrHmSB4LyQhscHo2EjdFTc5\n49OudgKzX2w2nBCM1EwyX7kCVDyeK4sqRmUdGX3fIqngjJuTIKNqMFUXbrYH\n9mhDNQtDlcc+ufmMOneKnNHDTjOmvyTnZFfa396+ekquWKVtohjTE53Roefv\nAw+eKoKqI4SkDDkm06no25Erur1mDyT4mH/F68IUo0MARLMdS/obLYIOU0Hc\naw11TOfLWGtUkyggBiTdvYW3M3jBnduOQx5RLqISmf36FB1cGY/dZ//VUpMt\nSbsEcyAga4QFrMdzFvT60G7NXsTUdEhv0i53Ir3A2dbBOu405a4LWYf39P5v\nSMJA\r\n=KASO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCa0qtHTBKqtiJ7wD3CXqQdkpZLVFn8dXqCq/qRFmIAQgIgFjuZPPYUwR1lpaKgrVYBkTLtd6oeP7Co4I2FL4ETsSA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606478305-6ef1f197.0_1606478473647_0.9795025621628619"},"_hasShrinkwrap":false},"2.30.2-next-1606478981-809e6a7c.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606478981-809e6a7c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606478981-809e6a7c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606478981-809e6a7c.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9+kk1ZqP6vsVbS+Yw5095BRzaq6ywOpdO+GtYS3lsIzJysweHf+B+tjdeUxRsi0qCBLBoV5oMh3+lqsSsNUjXg==","shasum":"11586ac0370881deab8e0b2b14c5743f3f088856","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606478981-809e6a7c.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwO0yCRA9TVsSAnZWagAAbyUQAJbTxTOfHcGKxc1w4+QZ\niOOYkrgtvQzfe2rVLyBqrVYVNyWGm/uwRVLKDopZKYIHWS2raP3y1/nu/W8/\nqMGs9nVQoLt45hAjFqvsN6DrRgbvK3cVXQmxZ0d3h3ZTYqNKp9eqyXtMRtoI\nZuN5mNpVCb7QFZ0bPL6rEpOJEkGlpnPkqRubzQa/w45oSjJY0+pS4qywruDm\nJZkVs6b+ixm4GGuiZT2ftyOYqgJp1Dewmbs85vpl/61zJkm0LGjq/fpkGvlr\nryb1CT/4jVVV3/IhdDafvre3g1iVNPpKmb7wC+Ro2UexKXGS+jGm/QQA8W0i\nui50xUhZbWq55zgFP93UFhtnPR9+3j2d++my2yHDwYHSj+NMw6QRLAhZpM47\n6NmPFkQq6vzDT7zCO5FiEIwzfEZ2to8R3Rn8+cQjp1mOB765FjgcqxjG5edm\nOUIgzyWtGXnRo+DUNcflOJzTBrzb5POS/f6dz6vRyBkxpRKkRTtgZoE7VzlM\nnyoS0dXcYijRRqboPFP9nVAItplqVmvrxywhkzuYJcUVS4tBlOpjsOW8mlmp\nvfyYaOgRiGl72AlAfHb4NvLsgorNTaQJBGY2gBF8Q/xVirMFlkufIDLIRSgK\n50RJqKxoxouMJWIaG9LoeJmoaDO2z0wSQf/tWm6auF+lM9LQkzBpKq9geTmz\nYYNP\r\n=nYDw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBIvvY8IOcU06W+yoI44GfS0iwDyZTZR5Bd/B9d5b4kPAiAkrYdciz95TXjpBxtYkoCTxzLQC6wumUB6P8MyZjJe7w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606478981-809e6a7c.0_1606479153346_0.0984808577273224"},"_hasShrinkwrap":false},"2.30.2-next-1606483902-d38a4241.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606483902-d38a4241.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606483902-d38a4241.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606483902-d38a4241.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eU3kdiMlrNLgQ8KYYgNDQDrclLePNg8fE5HhLh9FXZrGArSsuEzNlH4zsNv137fEDb+ECh7uMahQXTRxzYYytg==","shasum":"fce64294062ffbbff721beffd299986de4f9dc39","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606483902-d38a4241.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwQBZCRA9TVsSAnZWagAALuoP+QHs9UOvmhMy4cO01E0d\nPzjN9SXvKX+wtIPsTcK3sTX/7SM5MTlgJuvWHByHXoG/OlzUc28ObTFrtyc3\nGMbu+Un+osKgbVdMBdW2vfyRkNyAboE5nJfFAwpJWjAAyZHrPS/lpE26HgsG\nRB1lLSh+Vy734qVSj5vn3wKff56qPgVKvOQsqyNZd2KF9qB/HwO3cIfO1m+d\nPniaHRQo5IM/VTtMD2/0cQCtaym+axR0aSY57jjcl8WTXvoux0po8s1Qd/Ak\n8u21eUeqoWgbbAjq/gwfse3zzHaCFLf0Lc8tk+Mi1bYIFdMkCtdplr3HfhWI\ngCG5bA0McLkjJjVCpPj64z6Xa3cfCKoolMIoe3ZLoToyuwthjdkJIuBsN6ru\n4zf0JnGJov2y63As0Cn3dxs9ImndEh2Nzj18Or1SpJfjRqtM/a9L/v1wWZ7e\n1+3KsZEOiLA67iSAZADI8RbcmyY2IxUAOXRYIJd2jRaQhzcTYOOy9LKa7QDE\njrhR2JTWZTVCFjbso6PFHU/4o9daSq+RRaD3hJ/2d9nsBRoCtW8HMs9yM3G0\nPDzTdI5oN0qm/++DL+/tAgh27rkhyzMIJwRUDlHJJHb0uDzIV4DNMwCBICku\nr3Tqtb65xts3eCPm02cqCw0f410753j9Oy9fQoGPy3/dgcC1P5SdA3CcDzP7\n1zWg\r\n=tfYn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF2ao3S9sGGty9XKlfOKQznROjR7rAUd24nQkLlyCwr8AiEAjcvkHfsGAqWgcqmI1t5veSylb7K6KV7/3I8Pp6EH34Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606483902-d38a4241.0_1606484057298_0.31246110672309824"},"_hasShrinkwrap":false},"2.30.2-next-1606734800-1abe4fd6.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606734800-1abe4fd6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606734800-1abe4fd6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606734800-1abe4fd6.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/cTfv0eWiM6QJXQELrMoOK4y1VM9eD2HOg2PGJ0mHLStTDVLC6vtaTOWFfsI0DQ+f1ugyXPxrnE0hlLJE9h7Fg==","shasum":"776e2f04dcf62ca2e2a7c1f7243f968c5b38444b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606734800-1abe4fd6.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxNRoCRA9TVsSAnZWagAAfysP/2lrtrN26uZ2jDVPEwWC\nMcWWMbl8+NYNMm2VGB92UpsFnpBVdPeHDrwBYZVcWCZphIsjh955+yUp4USu\npw7RWN0Sv+yZbUr/hRu8ZEHOCOiR+nLKbA/cPXETVkM/Xodac8ZATi8sofjF\n95Aq9TAc5FKEZidmhWl2irsCRSZJrWKp9U+1eZMHMFhQJ1Cpx02cxFH1DLtl\n2nzWq2G840tiKHlaeg9OFogXnbe51Sg5up28pS+Bc1jGE1BFr4GTk9m87RyP\nq1Hbt3x19Cd17rK08urw6hd1ohWzehG9BvFfgkuvzxY0c92e3CcGNcKygP/N\n8X9bm0lkwLhtcjb4ttUVir3s1hEsecztb8N7GA9dpf+oCVD6ytjEbRRet2ZX\narEdcudCX7bMCtPhHNKDKewdXa1wTevGT9tV2IMTTPlD5qtbmi1WMQ6WDfWc\nevJ01uPWKW8qZ8+IE2uL4vwPDK8v5rRY6ebjP7+1kPIz+ZemdgGaFXnwoSTD\nJt7Tss+l0BaeMsiOpCZyKpY3M3F9z9waflrztLTZ79Y/3wGVe5j/Z9GZ20V6\nRYfKn/85Rcz6QG7l0Y9CnH9WcgBV/OwzjgdrWHLAL4UoSUGhcqJVp6mBIn+4\nNhl9P3zqLk7KobB151DcSZh+469XcgrWPFvLHSnthciXhr6FpFXHWxIPLVRo\nje21\r\n=qy2b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF7BJ6KwHwyIkoXiI2N9SckoPq2pIVT1gC3k21YzYMafAiEAoVQhOMwZugd5gMcvfSS/MZiI99JZeHHbOhjdCiR0I+c="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606734800-1abe4fd6.0_1606734951636_0.09591998709675331"},"_hasShrinkwrap":false},"2.30.2-next-1606742433-9ca77ac3.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606742433-9ca77ac3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606742433-9ca77ac3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606742433-9ca77ac3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eGaRXCQ9Rw/ijCWxm4YhdjI5zNiw69DFDaTKMopmmss81KgMHjgcfu4KhA2lgSNitRU1l70Ic8d5Ei4RcPUUJg==","shasum":"bc3f6a289a6eafe68b3ebb5a22e94d16de548bda","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606742433-9ca77ac3.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxPJRCRA9TVsSAnZWagAABC0QAJXk5gvuLbBV9K3dOvCi\n/lhfH+XW8MSyYWbx/OotMaDfQXbj4paPFrgIhmcipxLipri3tB+bcsmh4Szr\nF5MafK/ysA8v9JD657QF9Ik0Uhj3piHj9QHjDYoylw2yDIDck7T3b1EBnUri\nO5hSiaOQMTdIuIysz8pggbrZKqCwaOOmEz4VCDC2JWmNTtjmfAT0iGgp/THs\nofDj3iPSk7Wawxqjdp5I2nyUs+HeIT4q5YcCA4AWFbt2Jcb5seHwPQU2fYPq\nlZQj4L0NWIxyXXMA81Jxx3e28eFpMW4Aejj1CCuq0HZcqycO168D3HBpZeB1\nCsNelO0OVPFh0Dt4VcTD075w7oyhT5WdBrPZnmAkuysHub23WkGQYt4Vynv9\nGZ0HV6o0WMHikigfKCbip5dFeSjFSybB3OTEJpOVeqxbdhNWU0d1ShzLYsW/\nHKkPxa0Cn58NUFTmv8Dfpx5KE5wu+zCvHRV36FGdOclrAuNYZJQr5mjMfGaI\n+0GjqtE262Gndhw9999fMfqN1BcXEXMkimw2s2tgC5PwCL9rrGvsWVU6qowQ\nPFCvIFGbTWeoRWVA73nvSFUkixiZQZ3v+hqhOnjxt8sE1A9CZCUu0vnGTY/r\ncWyZ7J2x/RM5I5NkkCu1bjb+aprBdIdv/ilG+hntBPQM1Rgazz6eCEEB6osk\nOLUa\r\n=2VJv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGdCAnflBXhi6Qru2DkGKcetpqMyRUw4xpeBuusqM14vAiEA/vHbJJik5EdbbaTM7QJndkjLld1PWV290tHC9/et1qg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606742433-9ca77ac3.0_1606742609228_0.037952880468856254"},"_hasShrinkwrap":false},"2.30.2-next-1606743633-330fd6bc.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606743633-330fd6bc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606743633-330fd6bc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606743633-330fd6bc.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Z7hqS6HKpQ9Tm8tDK64phnryRubj4FeTWFPrbtL2J1DKeh6h16HCUhvSL/Snhl+zjxafBOG76qEnjUcgrWQtSg==","shasum":"3ee1a0cb5ded074c3b9e37661bc89db77da35eca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606743633-330fd6bc.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxPb7CRA9TVsSAnZWagAA+dAP+wcnsfu1FdlEpNM2GSS/\nW1tFwiioSCZ1igiVbCoZz+Slrw6V3NiybifVfWicFFEczStQmZEsQYkkoEvX\nQ4Dc0/jUuqIlALhabOGwywX4Yz0uGRKHZvo4zNiCpF3jMPMEoAEZNdmrmbpg\nhBN9Y+ZC2/RtSTrnEXLhk4ByJGOLKoXCxSLjeoUnKjLaFp89F3L3YeW5bng9\nLSmfxfp8WiODzX496oojJqgFpGBO4uKlXb7n/Kozgp/1lN5+zfYTaejJ8JPt\n8eGZ4v3cIWIY1VqnVYAI30Nq/+b3O1yRnt+4UcJm9FT/XT7RImZ4+kRAEgIl\nDAHjX1e5/IBtLoJ7mNPu43Bi5brwL2LIhYABDpEaEH9qU/+olrr7sjGbAQl1\nVH+vXDKOM964/q+4Gb/2K0pZbbwxom8PhhrIuK6o/dpyVP7kRDCe3bT3gACH\nCv55pytjw+bVBgcrmhr1WyoqG4zNFQZ4mgR0XIr3nv45wdyAvfXZO7XuT8IP\nYwGzudDb30nZoJcmB0GWlvIzK0gBgOfcAtBKE2XorzetybnIUXch9rHWK+tC\nOpHo9So0f4E8W4zvEuw9ghG+uhHNCosxWd1B74+/3nFELMS5wTFhO7J04yey\nnPlD2jWeyb17IPWPpNv9Ch3cqpKTDwXTHB3sSshkFYWlsDuLrl6sjyGOT42x\n6qCz\r\n=RzJf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeoSsjA0n1O3ZJ2hnj61ruioR1OIarCXilLI5eJo6XpQIgL+EHHXY30q+vIxHeen0jtzDcYTrhqX5GQ/RQU/+TpMQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606743633-330fd6bc.0_1606743803177_0.9301832027368457"},"_hasShrinkwrap":false},"2.30.2-next-1606743954-0dcc7c52.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606743954-0dcc7c52.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606743954-0dcc7c52.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606743954-0dcc7c52.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9kROoSoDupdbv5hAPyKmJzpdv3TZ+4bASAuPd2adRVcWdE5l8+ErKYXYkE4AVTMUQm4x7xzlJ+A3YzIm8+rtKg==","shasum":"92ce30a163e211be0ad0ad03242e9344d8fd711a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606743954-0dcc7c52.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxPg9CRA9TVsSAnZWagAARr4P/0Fo+m5IZ1t6kcFtfrdr\n8nmT1iD+oGaQ4DD+eBzEpZFQhDLLPh1YB54HNT629Cv9uf0/6I4TJGC5NIzv\nZNQCoLbiU9HgEtE3PGFGJLtIGcdD/kzIS4A1nsAIqbOjiLyJZtCHqIjRFOhK\nr0VoOisSH23Y+3A4OAt5nCTNqao0pV/pIUol+uwGPHXDl8lDl4W2KQHfsFcI\nnz+r6NaArjh0idFNI9j4y32MzRmHP9jAyxupKSBIQSR0s4dqdDqpKQXLqi5H\noAfbrRvkE+5iRPBNbmYG9cnq3AZ7LUvetIj5QcZNgoSo//33KLmwbgYYvArG\ne53g9ac9M1ELJgfXDwGGjVa2jCMQEG+/VKkCQFDEpsxAPvc0e946i/IoN9Y4\n0/wDk/ciL0CLR/1wPd3yUpGBxZ8Wuq3Ld6d+rXVYcv/XwWKymMnwV7gf/DeF\nwrCApPDoloGkeyPVPF8KrYABTJTpVyy/B26e7QQsjyK2yl/PW9bqLoFwucFq\njqMtHTtPAHmiuzb3FU8KVNvC3Sfw21dzWzhShGnoahWeRHRpu9RFd3y3n8a4\nttjgkzRqKumzB+vBaBDuhI2gLYiJP7xwhMyYU+JGx2c8PGCJgAtTJVoyRbK8\n32RJ/nfYQK6qZ3SceqyyJDTjhuFllQQvyQ4QAm6oNL74ptnuzY7pigJ5QNfi\n+GUH\r\n=SOVB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGO/q5JYxnTCIeL0kqaTv88Tr3exXtPOEuyri/5uWVJyAiEAxINMhcfKaWIwEBbWPoqlidVklI2juLJwiCb+mJOtp7Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606743954-0dcc7c52.0_1606744124702_0.55262625239121"},"_hasShrinkwrap":false},"2.30.2-next-1606745667-3f1ead38.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606745667-3f1ead38.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606745667-3f1ead38.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606745667-3f1ead38.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Vr7YuQe474XcqNuvH+ohehgtNr1RKPUqZAVWasckqUfG6rjPXH3xJkt5bFYJ+qkES65Olfg7nTs28zFd+JiXDg==","shasum":"6ed0b9dbc3aae1a169dd9a1f643e91ce002ea10d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606745667-3f1ead38.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxP7uCRA9TVsSAnZWagAAAIUP/jksZe8asKORBxJhRo1K\nen0uBrgJ4zNSa9Za8wUKioQy8hzigNRShUYlglLS/mRQ3bHywhDMpH7OdY79\nOJVjDeo0pcvYCYUpbDbrNaaya7J6UwZzXrW47ecx6Fcd0YfHywbFHtVM7ARZ\nrWow+izd4mw0PFgfpKIQE8FcuwOfxaBxxyZrEqjH61j9t8sat1H4/LCiScO1\n4L4nqD2Ts3JKW/17/F/eD00KrxZ5LFFSd/zGJt3TaAKznC2mJf4nlG3gtXpO\nmptEuw4aklV8gasbAXKx9wgLj+wkkJBa7QwjLYyizTHN9HLvbzqdc4fDhbPH\n4mTs9yYo34xjmdVMRZZoz0U81vvAag80XymaHds2aLLX2mwF6r93mXsSZVVu\n69fKJsnSzVk8PRZiyz/fog1vMRp4W4uLedxCa8Nr6Oft2Q1p8kbhWiWVdBjt\nlsCcr80Fz3X75K3v5Vqso3UOq/oZyQEVw2dHV3JXgkaVyzJTjhXYOBHE5xsw\nyhlnZTZe7tFYaKSPmjWTMh4aHXw+0w0j8J21D+AEDtd9ukuRICmUEgFp60tl\n6h4OK03U4hltVvqWJfqEblA4okEkxZ27Qr3tbnRleWi3x56OKlpSIVp3L5Ld\nIJseAASfxizy+eMge0EyEcm1XN0phzP0EXkaLI2czFhYidwHAC6uutK87nhp\nEM81\r\n=tZt7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNWcXBCpeeUElowXHt7Q843l9Q9+w2vW6CLynjXkcBBAiEAy+bagFiUsqh/nQthxW02N1K8qFaiXEEojpXEdltPzts="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606745667-3f1ead38.0_1606745838354_0.5650270813775347"},"_hasShrinkwrap":false},"2.30.2-next-1606745888-33383319.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606745888-33383319.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606745888-33383319.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606745888-33383319.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gekcnPeJvGOAmCJdYGzl+PWtGFGaKrgLLYsCgMBrBq9vEGzMrcgsw2MqJSulG6Ag8bBWdBCEslJCb/2QPgzYzg==","shasum":"ef1719304ae45bdae23af921cf1051d2d0df1514","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606745888-33383319.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxP/KCRA9TVsSAnZWagAAKkcP/ix0hrhJ/XZe8oGEQRp7\n7iE8Lg0I0sIiz/SKf24te/7AxnEsXC6SeGR09Jxv6yzy0vXV/xyFW6MQEuwN\nYqBYhyHwYjrcrHyVKWQ+hU+n9viT+wjeZpHNpSh4Y2Zc9PsCNCYEeK32Xw0e\n7huVKDZ9lQUfdg1EbYHudy3BmQysE8DH+tvFKiir4h7lbEhgycs5ommVYQLF\nsq4w2a15t5z+U0D/Vy7DdGxrRoJ3iWirr9lKzH6gP1FvD2BaOztOIcBkWFDH\nDkYh8nRt1s7sOAOQciBTm7wlAzoWjGGBtJrmAmbZFE8KBRPPn8A2iY4CIzr8\nSqxH/Wv73DUhLmx826dtfS6Wr6KhnDKmH9T3Lz/JCdu/3b3yv2At7lCKo3+S\nZ4R07FotGgCwo2zXMsKtpIODD3lrdvgiCB20NCiPqHbYz9UmKOVuY9mBi9v2\nGgeeJDfK82bZTQQEZUPmTEmGcr5Z+3ISgVGi1lLWBDyUOkqybCH4EJ3xHX+J\npdaLDfIsuAPK/DQctPbbdwUv/VbvvZIj9VEg3Jc27VnbwMPg4kr1HVPcLKM0\ntofjehaPr8lcEv3j8rkFLVQxLE03aeGIGExpoqiOZSzEzpQ/xGYm2xEC0KLh\nKMMzp9IQkoP1VKB4P00HLSQ6aFoPr+zpLdG/m7vxVIFVrzF3zTxyVcKdp3ef\nesMT\r\n=JnfZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICkmpVC2EXUsd8DC+gkeKsqpoEDJXDFmIb1Cu1q+XNeVAiEA67GwNBaZu8S4C6/wxKwTDmumLU2usZ/uTioaQmiLfXg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606745888-33383319.0_1606746057528_0.6412721671747692"},"_hasShrinkwrap":false},"2.30.2-next-1606746127-e4bf5cf1.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606746127-e4bf5cf1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606746127-e4bf5cf1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606746127-e4bf5cf1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-q5NfFAKPFKHpSMeH2R9jNv4Cjee/Cunij3CSNg22H1ys3nD1Rlm6HR7ZBHgjPYQbGwiYY654DXsGgI0VEf/ziw==","shasum":"e2f339b8b41e2180f6cb73456f1744686d64fb1f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606746127-e4bf5cf1.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxQDRCRA9TVsSAnZWagAASOwQAJNeyATcpTp1o86SqJAL\nNFYZrgZ/AUXzmJOFQo1U1lmK0nvuaa4OK+HnbkoDyXT0vCAm+s4VfQHcwqkI\n/CgHa+cCJXE5IyIwZcaiVFhm8KV5uogsPYCDOcxP/4YvUeKQNsP+K60q4TJX\n3x/P6aOYYjsx78DgwmmOjcwtOPyE1GeGVlDq3RfQJ8pZ22eJ/WkEUG+0Iduw\nRyamcCTrNn7ehsCXvkgvkAgrF5F2kL/jAiFvhaanAPIp/1om7sHzyNOXoW3y\n1KipHgIYKGA26gCU0c8WWm0XPEo8xLCOEK/Et/E3umeO/KVbhQUJ4kIkuX36\nnVt/HKC5SolnPM61hn4qxRm+aGmCQSNI0wpZ8TzBZN9nZ9gOW3cfjfgB129s\nIcKG5G+3/PYm4jziEpnRSVgsgBTHSAO2zUv/nBQ7YbcYM7r4KnO1ZTg50xob\nLOH/W0IQcU8+jVE3Zbs8oANFM9GfWaeFHUSsPBpld80U6RXkE/uZlpmwJ9Dv\n1eJySvvqW7BburdvrtecnKvwJwRPRGUEDqpqUPAeINy+/ggsF+arudo2ZXkA\nuCL970hRJJjUY0Gx3mRXkdWhqJd68x6dzjo96hieTAwDGmvrZuvfD6/qvcgz\njqRoX60VJhAsYy5bKgLmwnnXts/Uk0SWFfYlJTWrSc81+Iaj5asZn9TcEuSx\n24VE\r\n=PfJ4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYYsn7y4T4WW3WeGTxeh1lMT21l+F4UN34GPvF4h1I1QIgLiBsXm11gzGg9/0L8inyfFNAZq34HwtKOc0cLiy1yMw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606746127-e4bf5cf1.0_1606746320904_0.18832900600641"},"_hasShrinkwrap":false},"2.30.2-next-1606751273-1ecf83e3.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606751273-1ecf83e3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606751273-1ecf83e3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606751273-1ecf83e3.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8v1N3hXd1710w5Sg0f+iOsm7Kw/PusNlQVpGUkY1Vf5dfTpP8Io8jIHSbl4Vr+TClEU2wAQiuCa+Lek93Aw21g==","shasum":"8572941044a9bb08d0624f70d133eec086b2d7d1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606751273-1ecf83e3.0.tgz","fileCount":58,"unpackedSize":140974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxRS9CRA9TVsSAnZWagAAlIwQAKUfQ3UBdPPeWBziQuT3\nBF+FH+gkov+zyEl5nLal9mjR1gcH+u5tjtmcsdwNU4vqClj4Ou9noxzZLCXV\nQlOL0lLL+tKn0z/97horN7uutGMuWNy1dKynsmaK5Vj7et1MpWRHbUObirFs\nJNwXpkZHgraQCpUbFDUzG+xh+qDtje8OQwW4pcf9Zk02RH5WoYpwHIa9cNkh\nw9t493/mUt8jTemq1rilzUxq5/OwpFJoXNIuautS2aw46YnheLHOdKXEdM5P\nvvKIXV4g2DFY/yc45kdF17KZ8VyfgF1LOsHMDQcueNDHAHg5SCCMnztUQ/9P\nDWVTdLlcz5UtpF7nHJaBWdDKlnQaJHIpU+x9+wmgUH6iib/+jQXeC1TNdMW6\nbWRFBybW+IRZzIwvE9ozG5nUCxfDNIEccASxQL+EiJn06pkC8Crv1MQALcj8\n2vuyrsRICyyaqXzly9vos9wKL5mi1IUtLxrNjbDWp5gO34OPLSItVLEf6ty+\nmxdyXTU0L5sMK4j+pT7TGjgZ1KqI1+w9I54tKK0r4dP7QtInMUshSx4Owy5U\nlVZW2HV4pUEUANh2zaYZy84CFWmLUXx4vpdNNDM4s5AH6547VN7dYD/40iZ6\nm+GiNyswPsGSejodogG0vVSiORquz3g4o+jafX5O8N6Z5iaUIAzFzGpOQk27\nya3U\r\n=iFAU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLpGbGphyIKLmvY5FGmJmHT/KzJFKeAAOL7/hi9KLnEQIgEGbyR1eyHmLpJZK8FFcsT6YrAk2KAS4/BaEFaHpwNPg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606751273-1ecf83e3.0_1606751420495_0.06982216011397036"},"_hasShrinkwrap":false},"2.30.2-next-1606753936-e4bf5cf1.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606753936-e4bf5cf1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606753936-e4bf5cf1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606753936-e4bf5cf1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UupjHUzJwYnM5q0Be9UcavNIni0cr587ifiPMJT+pY6gz4l4ek1kd/HhbOwyPO154G2vBLOpkndI8Tdq0QiDag==","shasum":"85133df674f5be8a63b06953cc48dfb0e89f3599","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606753936-e4bf5cf1.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxR9QCRA9TVsSAnZWagAAlzQP/1dqTRKc+IB6irF79ANi\nftnChewmafdMhKu88eUkvk/eznumuZ+epVb2TJHZk/zPs3Gv0Hpo3dbq3WdL\n+RM05+5IdgZ7ddxKXs2OpdHMYax9d9+b3JO/n2RO7p+UYArTCbw1TToEWz28\nzvcKMG2zulBkxmblRwrSiEMlR59Xq3Q449YZLJgOmp6BcLe4H/3Zg9p4qe3k\n5otcKLX9BfNEWWJ08Gy7PgbBvRdVqpRsS8hZxdgffJd498hUuY8j9cXiykmT\nAYSXUY/bPq2SVY0wQDm8IesHCIhu3AHPRKbvkoybgbDPw+XMCWDloDnHgLqh\nS7Ry03DDqTtwePbmnIXU4dFQ90pimhxFw5mUxeCCVrIu3dO3h/5sS+pde36M\nE0g4/8LIlOc7ch0LAjPWdv1w+I7LbYgfbsxRm6hUqm2zU/SHTLXSwyPmKLeU\nIpTlmRCKuSpGez0efGggDJbyrKtekGMe+Bygh6H793HHHf/RfpdYOT5A87N2\n4XEwTCH9B81jhKXw+wgiUWpTqn0AEB3qWsHpLicdffxGNO+yBCsM/kduqS4H\niwKaRGeyga4u5PXgXE2+ofqAeW6qT4JvhvgyGCp2W+6R6rlXpGcFt0vU+CjB\nhX/D7Z3LNnsfsFwvOnhGT6aPNdWBjzto/I4pHqLgc2bHxKdLC3fUaG2e0ir1\ntc9I\r\n=iI+/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICc4fc6JbSfq9DyjYeidG0WtD/ZyNDOEAY443FOxhIgBAiEArzcmYDRlk7RzrO8ZHjYZ1sK9kRoMYb45OqEAGT8jl24="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606753936-e4bf5cf1.0_1606754127708_0.023267432145798628"},"_hasShrinkwrap":false},"2.30.2-next-1606765206-e4bf5cf1.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606765206-e4bf5cf1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606765206-e4bf5cf1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606765206-e4bf5cf1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EKDYc/ZTc3e1Le7xJBODjuB46a7hWlXSSncro9v9yv95+pXeYRzG/89TIUIfA+/IYUoOjTPzB6gwkv7Z/4QhbQ==","shasum":"10bab3e33e90bf41c6ed9c1edb53e3830bd7e837","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606765206-e4bf5cf1.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxUtBCRA9TVsSAnZWagAAA9EQAIM4VAvfxOVsjsD7kyJh\n97Zs7OCQCrGue6Xj6n/V3oyM6mpRCaHBjZ8YvGUVWmsxnyFD2KQMQ/00mbfq\n3WapCPDlr4IziPYb2xXwIfrQPkT+6yfMZGKNIKNawbE3XVJ6/aZq6lCM2G16\nksQ94A6Yh4FQ7zg8vt33yfs7GWFoW+3QkfTnXdPkx+qJsywS5i/E3TCe0g6m\nndsaB6tacwjsLBWl762gHcN/frfZ4wX5X4ywmuEWpee62p7NevrHZYGPuDW6\nDIApSCTDDW/oItWYIvQwnH8f2jb3+9v6gEYPK2ep+BSqKpw/DywgtHhbfMD4\nkcOtgSw7bRuzK54iVQK70r38zfdytU3huyT8VqjnqMz311zVvGLgI/UxYlmA\nBt7r39GmqoqVtLRLp104B3Bv1ugIZ4sS06jiuiSJKO67zRM4s34T17JwUbIb\nCUAhJsNUg8jiZxQ0H1EUjE9cxUsp7SXpeB9f7l4bz3UbHlkAkxPayWYhEtA5\nuEU+YiFoAR+u4ABoXVpAxwtqaUNaWPlsT4z3sL7PTQgJpYaS4BJR1UvhEv6o\nwfNA0YXCQkSaIW6v37rBdLgct+IAFSyU1ydbKDYOVTxnkmk+1gmwQ1lE2wZz\nl94qTCl3KQAYD9Xm+q9S3wcHUrhZAu3KaEYUagAnwzWqYNxqqK/jBRucG6Db\nHPhg\r\n=0ewv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGaOHTFDqxHahH+lf2VLD4rMheoauuiCBFib4jR0OsYAiEA8IJHrIAwAJgHsUAd5S7vfiUu/kWCvbPr0TlEnhdcyoM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606765206-e4bf5cf1.0_1606765376786_0.6837402570779672"},"_hasShrinkwrap":false},"2.30.2-next-1606766473-74222e95.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606766473-74222e95.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606766473-74222e95.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606766473-74222e95.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-k8Mg6NAC//POI2SWtC4DFqz7ykdCTje4JbaEB5HGhJpvO4QN5DzcwROc4mbt59GAMAF4sD9STgnV9emzH5VF0A==","shasum":"775fa6e3d903c8efab85851451f4d09a8b7d3280","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606766473-74222e95.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxVAuCRA9TVsSAnZWagAARK8P/3hTxXFMa9emNNR/rawM\nMW9nGna9y1SHM0Cu6+HFGWQvve1A0uCCYh6nWUkD0sx5KRBVymwUa3QcNCnl\nEumr1+7i7IkQvYY/7g0bgl5jiqRXuO+ofaWsytudMuMcrsxJ5c2eh09zuF5R\nj4CqE88kUWONCTWwR1dBGJnbkK9L+Yac3nygAXvJzJ5NtxTrwzxgDm7BNEUJ\nGKlNaR9ejKBhehJYeEjizF1LH5O3GBCuWcrGTUAzc4Wlgjj8FTpO2gPeCeMf\nyQwHmZ3cfagGutwLV4idTZgo1+j5MKgi6MzAxtwBl0CX2MtAEbsFLqFMDg45\nRiRKOF2kjFwQgycdLqbj1UzlPCNXlt1ZlWwTj9d2UyL85DRcsmWjfd7cubXq\nKvrnT3ngc63PDusLGDoXLJSZ0T+kjpfSRwObUY610g7onofT7el/VjzaBX3g\nl6u9yE2weEvg5iqs/7pmpZqTE4KqUaEDflB2crKZaIlZNY1GAW8QftW8aRqy\nR8RNc9EMefpIvohl3/323DXOCzoR3vPiPmiSIWNq4X9ZI6VGv64KjxIS4O3w\nQgiSJJNAdfKXy3PbbcioEZGQe2s/fCBnYLkUIgxcMAnnZNysN/5t9AXQAh3G\nwb4cuspEfk0uOKC7UtgfkBrdgbLxCVyWVWrfjURK7LRIguUqsNQfkZucMeCF\nZ7Ni\r\n=tkXv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDg3mlHcbwYJI+qatO0IkRFO9VGkUPx8+lfm4fgw5L+sAiEAsltmNwp1TEuAF8BGKfdYw4e+UhFBKaklPpDQfvIbdkc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606766473-74222e95.0_1606766637990_0.6976931333346821"},"_hasShrinkwrap":false},"2.30.2-next-1606774038-43304624.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606774038-43304624.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606774038-43304624.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606774038-43304624.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5EDiPGmw+UjJFV4d74CMHHQXExLvsgGw5fK0SkOaToe+Coe0KgIB5Fa8TSxBJBjO5/wS21Mq5Bp/GCvvlWGMtQ==","shasum":"6fae3c9d542d948625288b1fc02a1f63073b8659","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606774038-43304624.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxW2mCRA9TVsSAnZWagAAxMgQAJI4pc8Z2AhkitRjgpYx\nXTnkuI9FYsuoK9EubEv0FcWxeymipByla4q6PvbQ8rt/+SXdoESgypCsAp8e\nc9SYc9CdyzpWsm3ilRQu2K/wxRc3sxfXIvY78w+0enNcrRk+6Tpu779gBoiN\nIUdSEm2GZbykWphHFnXGHzYI3G/duwD9EKtRfdVjAPm31QIMisIPO4NFvNH5\n8YSTQMQcGI0YJM69nkzwTSZvM+sPt5Pz4YI5e78WIeFzM6GDZUkbXE0myqTI\ntxqII8taOafUmAjKj+8uF7sCXwMCl/EWx8NtYltqIdriZAs2e3uudW+M6tm5\n2vMeYL5qH4Sxfv3sQg0kX7CmmMt02LiPdtHXTOYUmuMho4JgLbeA5xK9fPI9\nApIJY4aWjz5fF2qWQ/xamyyJQEp3286egj4xZa7+mIGS13dlyFyw2FZY9ZtU\n54BjrmvbICd31PQIbJEGkLDFAIUQtrAak3O4eeQ0Q9bK6B5dEHwg7lgz0qUK\nFXggYEqHFJRRDYLz5ApD4B7+pXZLYF1eZsOqJiF+kIa+ZydqQzNr0MOsrhfh\nInR+FTKKXK4BKCbiNNN3B8fLgJQIdjyLKG3h7ew3ktKacX+J/2VFnLmt6//1\nbMwvixaumFkHn4DnankZE+mV6FUVs+6bOZRmlcnY2JItWaA86eJ/7fEABKTx\ni9uE\r\n=h+xH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhSZqHaBE5PYxpG4GsXfRNRQafvPsV5/NyDABhpEg6JAIgNuAOP6IzSV9NC42RsXbNYt2mO6pscaYLsbO2D36Z0dU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606774038-43304624.0_1606774181481_0.850872805912894"},"_hasShrinkwrap":false},"2.30.2-next-1606784626-8786b7ed.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606784626-8786b7ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606784626-8786b7ed.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606784626-8786b7ed.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-54chOq/efoy3tPJj2fOAImB7xN5oFVw4YuA+jaCjs/zvRvSFc/2ekyqvKfmFgFVhIgKp827bTg6QNf0viSTwHA==","shasum":"7eb253efb4ce3ffe16e195893076969209601795","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606784626-8786b7ed.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxZcMCRA9TVsSAnZWagAA4GkQAKG8aIeUmARElPv1UKzU\nwfk1uQy6wGIIUGT9S/jUHGX0Y5VwbcGlzawIbSg0e2J4mV374Sl7JBLWNz4G\nBYv5FTBiF3+IvgZKsJDDQLjb/65POOmdHTpVW30afWiRyHhfMC7sYhy7ft6w\ntufOHx8yplXlEFWB8t56etiC9EJS6iTWQ6WGTwg8dYKxDN9VhpH5t6riKqi+\nb3cqHTILzypcpAlF1XfT1QDsaWaEz9B8rVHnW5TM8POcklpG3P5eB/iw2+t3\nT/kF8dGqLUhJ0tQTFHWPxUAl3kMWztl6syEqUaraEIx5XWfgYq5blFxHNFcX\nuuGmXpoPTMjrW7Hu7uOUa1SgDDHxb86JvX1bbNhszxSMi/29jUl5vw6duFuL\nKhPrES+2xyYoMeXZwFkLCa1FxgfG2tUbjEP/uq0zY7i9R5PjVWqwVJBxGwp2\nmpKDbTjKZd4Rf7fB/e3RvShuJDBiPYgzN9Ho1mXw3a8ZVps58yuzdoZsuk5V\nODMXSgVcpis8Z6m1QTKPkBX7IJkDMdXdJ4gtuCzvN+AaXSzvHSufV76CmcHr\nABGWHTBZIZbt/TBaBExUmKhnOv2RkBy9WXI8EI4vmfhd6O9jIp2jaObDzoC9\njD8obyE2DmsmMDeW0st3SR9BFTu0nH9XA3PDdx0Dd4vw3DBTUsoUd1vijSPv\npupl\r\n=Xm0D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEGiEQ5TD4IyCu1JI9H466A/999VTyirXvN7iCYV5xXBAiEAp2kX8oWQH6C0R+H/AyQY80fctqrxkxquEnFg/s4sQy8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606784626-8786b7ed.0_1606784780247_0.7569502528091283"},"_hasShrinkwrap":false},"2.30.2-next-1606785666-0e59d9b1.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606785666-0e59d9b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606785666-0e59d9b1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606785666-0e59d9b1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hULIc00WEfdGhDggQovuciJq/9+cC+ncQzlR/nA/qUdpTbVkkyK24WIlMgoXhOEDalY59FRpCKbWwq95b1cyBQ==","shasum":"212acc496dce34c0f334c3e8ce56d656235c59f9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606785666-0e59d9b1.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxZshCRA9TVsSAnZWagAADSEP/34i7iQnLdmPAmNc150+\n4CTzOcw19uZz+tPUV6LcOg/MHrZ75gy4YN2GHr8SWfybquCwf9HNf0tQhyc+\ni7mzEThclpulKbq+vZN/GFr4D8i8JKrnQ3yWR2C/n2ewBpmbFGeeCvP32u5k\nqronxI5FO8mftcXANM24oHMIIKkh4baALfOSSRVFb3LP3/yOyhwforRcThWL\no8AJ3GS4hkxGntvfs+3Kb3JPUTSx4pA2on5m8HDVB3emOKZmcagRw4pBIuHY\n7jBnNcMkSrhm9xgAAZe9XQC1KsoI64fgTkFRU8Q8csMnmawjGjRLDfNFdcUw\noiSB3nlHT5Spjc24gWjF92ilUZQ/YmDPEdZSq1qkQC32FDw1+nMpf0/lCmYg\nrSfMcJgUn6j9pNBZrxNdHxg+3L8Tj9ngY6WfsGJOulCueHVYIxVVQ9Fkcdt0\nPR/yEBVHOxtpWNgwPtZNS6mrjDHlYr6WYtPA1HLHM9Ry0TxCD89/v1SEn/lg\nITgeW0/qFTJUvq589w/JUNwX6I1L7XOaWOK0hRqISd2x8r1RoKI5cXv4eE8G\nvJb2gMQUTBYQr0mrMSXHpNN9uHa+rozPSBXYs25Nw3Ex2NA/jlKrQncPnvh+\nbNZI7JGd0GioUjyEdW6Uw7c2lMJ/wsg7z1eYS1cRXFfUvMqoSEMGbe1ZU0Ls\n8Apa\r\n=YPrO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrT5LYEJbAgMqMoZGSKod804vCUNHgsSZ9wxc7rFzm3AiEA8UICehhSCGqikmoIaRILhRIoL8QWDknJqODg9qiwPis="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606785666-0e59d9b1.0_1606785825368_0.9104219533080435"},"_hasShrinkwrap":false},"2.30.2-next-1606808801-21a5b275.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606808801-21a5b275.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606808801-21a5b275.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606808801-21a5b275.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-L7hN5G3KczG1IOiTUCk3WnyJyoBmgK2RqaFUg7oiwkWsy2Qv74gjGz8d8u4+up5bq+JI1G97ndr5SZ4M91M+Ow==","shasum":"8f600a06eebd97b6d24ee5d78e88903936e7f3f6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606808801-21a5b275.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxfWPCRA9TVsSAnZWagAABxgP/24CuNTZSyZK2i0Ag0QD\nfL0Jtt1LXxNw5TdK30oNTErUbLyrMSRMwZvbWVc5E5kXttM0ueimN/t4FtHn\njfYLOTP9lcHH1WPMnogdf1AWgVJuXvQsgBqSafff5pyVaORqOYuUBbNma0ti\nSW6sQhS95hyrW3Glco/kY70weouhf+z0DV/QW0Fe3+RusVDVFWtE0fWsLWO7\nVtvqHhWsvZli8772wfJzJD4se2nvJ4n1KisbsPEyPXdm8XTgqAsXjc0Q6Cej\n7UFIm+kayVy3x02mDuJzTzlUeb9DjVf8IQ7KX3h6/cy/qoa+uyENRjGI4Pkv\nL3fXO9dT6frNCtkaal8WVl1dI1EhlHfFZd0uoJwkM4w1/Od7XNDmOZkmohtM\nvxTStv3xiNxfWXP/tte3Qw8kbOE8c1dwCHIgT/4dUqWNraBo1hfc16eS4wEm\nJk6J9hU/hAs9d/FR/0yhqqzK/jWLli+mxDC2qbs7KNEqRHCXxH+pkUTupH81\navhNC7jXxpJ6F3LHwJxT9V7bsuwc4EBpYYvvogWUhCT8K1XN72zTrjOwOnuZ\nNj6dFvDW+0cg70RIgtx6P7o9F/9Epa1JbCCfWg6YpG/SoLeTV3HR/coVk5V6\ndEJxMFGOkBVnwfAj/HlOp5KykM8Me1ZsFPIDWEaIEPjIPIKU0KTWLTbEC2Yd\nAgDT\r\n=DBKE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmVX9Pz9pXegUtAWHGu5C3JyERFd62sG9EqBiUw5ljZwIgEOJJR58kwH+YZ8IZWd06iFJfmtqcbFlpdm7/FfMwBNM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606808801-21a5b275.0_1606808975422_0.7200617909108236"},"_hasShrinkwrap":false},"2.30.2-next-1606809318-2b001a73.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606809318-2b001a73.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606809318-2b001a73.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606809318-2b001a73.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jIjvZ/5JrqWOZfTdZ2RdlJQ8gjNylpRlkDjqqOfqVk9Eho8y6Biiy21KFSOw8v6HXSPZnFutAomSwCm7J2RLqQ==","shasum":"6d1d7fa56227152f06f9ef757fc79ad9d575ab90","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606809318-2b001a73.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxfeHCRA9TVsSAnZWagAAcPUQAKPZelSKxHClxbCuvGzg\nHf/40Dk+whUyDtdNbBYK3+DhzG8BcLGNuINiJs7O71JzTD6hNTzpnNB2Ughb\n+R2BuPTPe1/rqWBngRg12RSHAntVRibbGY2JMq8FCmICH5ZHx7+DY2SWcJ+q\nGZusQswsH2vOFeb2iCGO1v0MYGMcQ+yRDO75j08JrnXnQywkSfdgREHZKnVZ\n0X8gMpRrtp9M2IsscV8ZlrmHUuGa2u+aeT6Zx3dNrr+ycwyCNqEUu+al8u0D\ngUlEPWNFjx4FIjH95UdCYfD9R2c0JA6ZB7PDO2TuHFdGWMyAIpqvy3t8T/bq\nDL/qMj6jcLfIgGXkfQ4W7LrUem8hV5FtpYpJsPmhAaRC7GXRhlUSNXLxOd0v\nxB54MNQ/3pi1k+nT2QSiqVlBgNZkAL0U9tbQJITOmBiw8Ou0tGHDb5WAMwF9\nEOt0r9w/nL4GrOWi6fA+3qLcssy2uWRlSIOcEUc8BPl18CwVi4ERfABCvQ5+\nIO7xPwWsDhdYMcEB3iTwJ0lVFkj1dIOYgX7N4OIYlUhIJ9kaMYXFbUEW1m3a\ngJJb1zo8kjZWLA5ZJxKawCRuPqMs7T5UljAvcrMhA9IyuB9rhKUbYIf1O8wS\nKw/VRMVM1KBnIZ0Y3NN8FLDNEAi1hY6FwixFo1VmXQ/9M9Trdx+kkg496nKv\ngRT4\r\n=Xx1e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC78iB5Mv0UK6nbPypL+A4vylrjzZXoCPwh1Uuyf2z2awIhAOONrwAWvYr3S/uvCwhWyuGE1PhYHyKSQMVqx5tgsS31"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606809318-2b001a73.0_1606809478844_0.9245285033387736"},"_hasShrinkwrap":false},"2.30.2-next-1606829607-e018547a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606829607-e018547a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606829607-e018547a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606829607-e018547a.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-q7LIlIaS+/OzcImV6+W/0tzV/HSfbIkXZTWW40Ot/Zd4v8aUsitKJ2JmhvBB3sVu9OSoo4IEM+LZjfA3zamDRw==","shasum":"59628d52822dc7a78473f2bdde5e122bd3cdef08","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606829607-e018547a.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxkbCCRA9TVsSAnZWagAArtgP/jOit3qpPga+6m9QPKM9\n/T+ZZVhsCBNTLKpeIIQZ7cGcNAIldItcGk+PROUwFhAI882WcVpgfplv2dTl\nsDQaQawS2eZ8kqNqMsTTz0d0xt3FZlt9tMRKb3NboOVCyIwvNMak60DZ1GN9\nHXNvYs6JupsjIUxSrMuvJ6Naibxm4Fd967CNrkS8rTcMYK3czujBtQB3IIDe\n3H+IkLrssjrLKZJPCJF9VFcuIuo4CU3UizwyQkbIr6sCGTWJUq1tzoeG0K0U\n8RPDuQqa92fKhrcWyiOdRqqhLGS1D6n8kBnfqh0XOKbUvsUGQph84xXup8U6\n/a4JZWdxecNtIDHddQvbkjl8sO7ABxcnC7qkdAoHVKBVVH0lPP7/7bxb3jqW\nX3ZmBcfgIsN8m/DBuq5pqQuXrKz3nVHSM7pcJkUbsucqOedvK4fUmR2OMOns\n6gE1V6sM+uupEqAOtiXTd4MOFnXmgwzuekLEzNKHz3nVDP+DcovkQxxTeWkl\n180eBUg7ySZY6aK3FwEv+pVPvPNjr9Sal3aobTdd8qNwINfQPTOYkEBJYEhT\nlqzrKFLuE1lytHTM/aCu8mVPJWUBdbDyAUwFrhx79QUBSCj8Xu8Epr6T08oN\nGB99ejeloctjgscIc/Tdc8ug5x+2mqHugUf8tLhZ8bJbjJSNFMbhoeQF9teu\n6tv8\r\n=nVt7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFeBsktdfqk8mSA/LnifyD2FJpKaJvHbgrQfzvAG1CqdAiBQ6bcaIjU4V/SgX/cvw/XvmZP1ebXcSHmrSXQxE0nf1Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606829607-e018547a.0_1606829761720_0.7785512348668826"},"_hasShrinkwrap":false},"2.30.2-next-1606856307-6fdb1559.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606856307-6fdb1559.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606856307-6fdb1559.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606856307-6fdb1559.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XZ1zcAuaJr4E3bap+ifxSpjOL3k/mtZxoijL1hENbpIGfW5hwkskeAjoP49w7n/ZdmMOABLunKEu6FpM9msAUg==","shasum":"9741a1c64f76079b4579edf2fdbe21fa2a8bf521","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606856307-6fdb1559.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxq77CRA9TVsSAnZWagAAN5UP/RuMsvs7YV/oyp3a9Ucf\ntvtB5kGrL8iQkli4RxbkJlXpVMEKGkKwyGuf6NGmUV0uliiFJsJ9wn2Y3oxH\nqTXolxexPSWiBoomjBWtOt7HkpDn1Qlr9+mTZOew5tAve4cSuSVI3TxlfmWL\n14VzbDnsl76hg8iTNIVBMuCnmICjYsJjjExXBWaGMcmGIu9as6l2dM/K+ags\nKTTgPgT0cwV/zRBSPkGc1A2GrxfWVNUT69jumKHz+R/cpdGTRbKLUT3oMn06\nW0oXzl/m1c7EFSf3/cW4t/PCG+XD32ZL3YHmYsYybsXB/7VcPrKfF3MT1yr6\nWwyyNl0pm+pN3zjgYg2rXmVDWh7R2LH5haEVKlpA0dJvEMbodNexyp4XKQ6G\nXn2RAIV121xdB3TP5R8H1/VQJpKJs2KUC3I1/IPEcoxXd9RpQgXXxf3VcMlp\nstaHCUAmmCpp8hSao5mlSdQPN+EbsIWYtvHJpeWtM8+rlHBnJiMu8M7Jn3/T\nyCVRmoexaueRF0/oOORqqaSewOw2rNaag1YbMQyFepyP8uOPX9gqnAmxLQWE\nqphnc1Km5QzffXnuPhxkXEQs4YRX32on7t58o37r++DrpeQSAQY343OyuvWq\nkxb4LMNua9LyUE/eZ8eGdjtlZDJtdGeYTBlu1vlzjeWuWdSEssVG1OvYV+0L\nUPd2\r\n=ziqx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFEkZKTxPNwl+eINdpc22yT56N6yXZj3qwfB3XATX3PxAiEA5Niyutl33C04/WY9vdJsbO/30DVLMbCeKmhdIorm4nc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606856307-6fdb1559.0_1606856442373_0.36109265566627924"},"_hasShrinkwrap":false},"2.30.2-next-1606856317-6fdb1559.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606856317-6fdb1559.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606856317-6fdb1559.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606856317-6fdb1559.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6lcs9Cu4gUqFSOta9PSox3Di7IWE+cBSFYH2oXUo4C1A5fskUF21ArcOrjsIPT83rFoyyWvp8x9wk+loywOheA==","shasum":"d65b675099b28f119448f395c7974a46b7cc1120","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606856317-6fdb1559.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxq8oCRA9TVsSAnZWagAAGcMP/0y/2eJnRqlrJkbrfa0E\nP+4Xm+K26tsqs/MQREDiWa4bQO5Ohp3PrwGHxqh+3HNWU1N0I1gkikv728uV\nDIgK9IWjipth23hqfuZ0O6hrUfa5ZqDBOcYvZSqZFxfB5ilT5hMoT/m+8bsE\nCAv8chNRXLKbgRt8AWgph9B9amtzWCoUhw8ChRpIsMOZtjLextjCTiKKg2cn\nVnD4eyQrUZFK/+sY92GUNDw5S6uzT+Pg4q1jSng4XxDfT2jxiCQiBotPy61j\nTBOly3rMLNbNzc3QsUHfvlPHDPCny0+9/noyRAETb+Z8FJU3cEosspRn+gop\neXujqSLJ1d0LiX6bbacil4wTgXuP6ByeozRjl7delswuzFKjR97UifTrMljd\ndDksJf3cQMqfEUHwn2Xvzjx0RYuHXQtPAXWJAne6o8I5kTgJvJufJRi4x1D1\nIqwB5qq+p790fLjbMMfEAIb1gHi3d11d63WlVTeFUkwcNKGoKSJ6wUBC3pa1\nbFhcFAyOVK9Ch4OqFRKWSSN0YX5urSykFsH5t3z1sCt0bWvgesVnyJavb5r2\nhlQ/9AGVhlY0UJLaJAFxK34Vt5v6yVjfd/J2nJxEZNYDwhqMw+R5F7NE5DW9\nFFo1buKGlZnti2jidnQSNNkhuz5rKasAkzL0MV5WeQ1p05cx+edJ4UeFbv9i\n8NKG\r\n=T1xn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEoLzg62BxoCn121gjDDh2+k7/B+zbCTBUMvfsXYHUxmAiEAlbRf9O4Ga2IS0xHGwwhXZ+/75ZER4HMv2Yem2HCcnxw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606856317-6fdb1559.0_1606856487710_0.923441750105032"},"_hasShrinkwrap":false},"2.30.2-next-1606862059-fcc04a63.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606862059-fcc04a63.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606862059-fcc04a63.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606862059-fcc04a63.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Bgr8HHiC2qEFx4VUFNZJE3sKNyeekNBRm4jHCin/Da5YicelLBs72q/M/dsI/jm7Z1fvYZCe3TDDReuPZnupfg==","shasum":"62a86ad26963df66ce0e266d9fcc488ed44b718c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606862059-fcc04a63.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxsWOCRA9TVsSAnZWagAA5K0P/061m++h1NI94JuSdbDV\nGdV2v6K2eT8beD44AW6WPOHdHcMx2qhBcAiLav5jX6lKJ14an9xpkICx/NtP\n4YbJo4STWzpBuU9o32Oo1HV1abKlRhHKEqyskafK1DevPBOlQdr8yuimreMJ\nlZoRDj1M8nnNSjPdMPmMOdCY1QrnSVqWqaLafUbWSzveX5sfqU9CKd1gDc2t\n/PiTMOI1DuP2mk5ApEUgDYETx8IHGGPHDQ+8OlDIF03JAgG0qUBjlwPf+2ex\namkjP6DSSkNYLArP+6vtNnWwQvJo6MG8GdpoMj+S4otbwwzwyqAZ0sjj4DKA\nIAGEDn51MMhosV717VlQR3NnlPdB4Yd/MsR1Gq7Wl/wiiA7GIU4G+K3NzrPe\nkvXuhj3vbjhE82eGtRmhyeVK0cHRNJtmFXaXT5LqcL0pAsl3n4WEP31ad6Kv\nNRBWL1GfAYIM7bJqC+N/sZ0lXQViYvk/v6SPo3JAk7T4UEwRD86ihygqAsXg\nuEiFMm4xRMhff6eItVYeQ1TyRjw+BNi+ZtOtA4v4zqpBp2dFl7vPZiRPJ4ea\nD707pvDumsnii9duKEmHVpn4Pfy6B+kmwQfAuEDjCrgXxtTn52dqp8fR9hMv\n/ujTfzx3MdzLZiHj9jfwBEUO/yFhoBZo561s/zjagHUs08FnbJuk6/U0hsV4\nEwve\r\n=pnWr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQTbcbkSfOCrpwzdCzNrQebG0pp5J9JYeLXRjlhGv16gIhAK4erwvEAwzexv9rbne8nkvD7Lhi27+1iZuVf0g8GCRE"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606862059-fcc04a63.0_1606862221469_0.5477691873876671"},"_hasShrinkwrap":false},"2.30.2-next-1606904248-57018b3a.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606904248-57018b3a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606904248-57018b3a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606904248-57018b3a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9IxkYik9cu+ihMiV5bSyQr4e2CqYVjN4q0vDXk7hAZCFooNqjTpPySptvl8MRt91kYw3Mv5+HPRsrk2mpYvGkA==","shasum":"f1cbba96ca2fc3dd0a32a241b4061786980dbbbd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606904248-57018b3a.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx2peCRA9TVsSAnZWagAASZgP/jQq33XTlTZzl9YVjA7l\nfCxb7rZWfs/Sw8uUoJ94FkotlRj/cDt2vW8zPsec5NMPyXy2hiq5UeAwDGPS\n4D1Y4IhJsxUp+If6z5zvQzqK6IOJBBZSL1E0GvqDBkzhkOWMWU0BqleAo2VL\n7XM+ngGojAT2Bu5nYNQJTC9E2MTtesaUa5JxsUmRVfGuRztAnRIwmzTBya1T\n/IryphxNUTl3wFKg7ZV7Cds+NoFReqiKIGDNK46ekP0S52TVL/ckMbAMWd2J\nvllwGwBE+sybAzb8rNy3MGNvPIkeXnkKMc6VFINp6+OdztwyjW1GTivf8U16\n6hKUuaUIDyySTfaz0YEGHeeK1bF1ju+5hkJkNIfOuyktNYD3Ts3jnWf2jwXS\nFuOnZkyLB+N5mOKKtSpU5cvfb+H21a/26ns00FGS18u7jM/FoQYHuiNndLn6\nTuHJHXbDgxo5j6bZs/ShPo92/iukFKzKZb7PP5TEDwdWQF1nO1sn3EVQh3Ui\nlJYCZzoVfCG6B7qY5dTTeheebY0HMbN1R/DPhQjjj0G5T1Xu32/SboboykQi\nM2N/M+juo/I8M7hVrJgV/et2uJ0aEPGpUO15HX4GgSEJ3f6bP8iGApc0cYRO\nwT/yXzkyIw+p/yms0qE5vEsoqzH3IJ3+ETqVcC2cODBJ7fOaPdV49Gah0bWj\nTnbM\r\n=6Q+y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEt7ISsoobyfa7rNCnEEcDlBQYQomUx6lAASjjptUNwRAiB3yaUnIc/52ZthzXDkZinF9bF2+r+wP+eQyA5NBhL49A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606904248-57018b3a.0_1606904414057_0.2039374161671217"},"_hasShrinkwrap":false},"2.30.2-next-1606907426-523b0643.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606907426-523b0643.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606907426-523b0643.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606907426-523b0643.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GjhDhzCFn+4OADLdswhqzjOFCNXfjE/Oi+ZUtkTFlTrbHqtHw/+6oK30CVAYH3oNkOGKyR28mX/W8nHVqd4MYg==","shasum":"fd667fee0d697e1a08707453a32057ff3cb79f72","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606907426-523b0643.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx3bECRA9TVsSAnZWagAA1AwQAJybGjddJbL/JQXs1SNH\nEZQ7RgcF704YSJZ+tsfhBFda0dNrARMzys9N8+Gq2/UUv3CegR+m9HQ/GYgQ\nOjkdymppP4vdZ9PfqITrbeG/RVILKtTIOrOiqr/0VNFoetFoAtD9Xavo68CM\nlTQNfqKJDLZCJgjcaEoJd6i9MITrdt1gDKMxDGgTRGhopzDSMEpzorP896On\nVxjMCZ4VMVfdIH8h2+fh13J2ZMXmkxYChlmzWleORKvWFGbmOLDFUQlTdc24\n2JfIqBo1bcf+S/xXLcJKMK70z9Nj+aKnQ2Ncm+nqqLfu+9+IajjoZm7Ad52r\nWLhYZoVndxvUzrErUkSr5eykP+S8+C+CsyriGqOXYHu7GIcOrEGeB/I8UJ+S\nau+5ULnz6An3+GNvaKPrlu0zA+BAPKpgG8H0AvRZnquNJIgG2+g/oNRdeM8y\nyaum+vKxjPseLagUHpeKvC5FTzFZRE4bKH/DpuAfmM+n550lDUzeD8i+Dppo\nqQqeKF4RvSgs4sEA9rDQfGPCpMtbOeDJtZAiRNcXdwUHzHcOML7IWomux7Xp\ng29JU+T9ROji0wU18+u//I1O4l6hdgZayRF5XJSdZPlPD/XliDPd/S527O33\n2MYVWnFHBxzTUs0LNLzauEb1qQ99FMbZSWj+rYP9cXJMTmHsgPzrdw2zmrg/\nJpl2\r\n=kRnG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKWJAxxhmeCleTfY7mm0T5HIxWVMd9wZAeRL56epb/NQIgaAMnBcwnDBOqoO3A5VfBAR6aAfzfI2M59JX3JA+WVRE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606907426-523b0643.0_1606907587662_0.852010828290098"},"_hasShrinkwrap":false},"2.30.2-next-1606908709-9f09a702.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606908709-9f09a702.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606908709-9f09a702.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606908709-9f09a702.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Wf1hMr4b0lgWb3ZRWU+LrQjnCPzSQvFBI2PLax1u340iUGmxsRCOFNBGT8mmemTGbX5tZ8d0HfL0Hlv/8+5k+g==","shasum":"48c6b21da9c47f78c406da0875fc372a69b47eb3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606908709-9f09a702.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx3vECRA9TVsSAnZWagAAEssP/0iyyz94eIOcBoUf4LD8\nEKK8yrbEa8ldG7LOzPmU0V4xnIUXtdu4bkt92Dzr1frv5Y92MKP6ZuLQcsHm\nk7z3N4seHYwvqOFat6UaEhbITb53R6CD5+t2wtGUuhxPIBfIryIS0Z6v09H/\nTBsrH+F/QhM5LwRiIESKZglFOtjGr2Jce0W2olOZn8BGJyI5PuNqkzP7jKya\n39yeueKB1DSZ49z7/awoig22gHly7RVZbCDhg6Q+gVdIoQMDJIDWrN2H7+B1\nkc+C3a8M9u0B7WHTvajb9xFLWkx378sxL+9hdWzNHTeK3Qmn8LpD06+00ud/\n4f6Rl1DcNKghdIkbxDIm4mGM33rcpMq16XUadyfBz5k/Y6pFZwMNAu4rutbM\n5CVPLHFvNc4FkFlNP92RHyq0T10dSpAUatgHZi77EZKi8zyHylXv/IZxn1wc\nnLlT9l4zlApPSpMj8U+8BVJ0z2aonqPitrKrOwOczvjsGoCq+bDLF1iX7657\ni3UMzkDisGZdGiJFUKfD46EBTO0jV+jYQF3dI07hSb44LCaeB3UAZGaUm9du\n80zePLxJ0kPUAoRvjyZDqa+1+jDh+DAuG93lagLiLQ+2XcLHeUnyQHmz8SiY\nxpTwrZQ735k2wiBM9TM6OYTG5gM/zPhDf7AzGElqPb+6zinU7hPsgaInmAG5\nAZyK\r\n=FL5l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0TBb7JU0yGkuRtOYkqyvJV5B8MooF4FI4FXsde1iNgQIhANbLEbwUmrox1cKpRW3ymm8rBa2QWkp2pYQVptWpxfOI"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606908709-9f09a702.0_1606908867477_0.039252483755354506"},"_hasShrinkwrap":false},"2.30.2-next-1606909561-6166d705.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606909561-6166d705.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606909561-6166d705.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606909561-6166d705.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nD1+FnxMVm0oLGGR5nLfKBOK3AxFmNxO2iRkPmwoWl0KB4NOr+keOZ1YSbRbYab2BZ94LvsLVOezpn3SFXAZRQ==","shasum":"1473ec003b7a709fb51304eb3fb89c3a3f3c2502","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606909561-6166d705.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx38fCRA9TVsSAnZWagAAdHMP/j1ObxQRjGgxW0aSM1nn\nP9eMAdkMnI6oWnq2pD11bMmW5rSpTfPdovGqkabewyWKLQliXB0mTEOq0O0E\nAyXH6fSPbGzLZHN07yJSw+Z+wpPSVNRoE7h9NkaUqBUXdHn1zvpyR5atYOP9\nlbU+ZpWwnsPaGJlLf2wQaWe9Q6ZJspzRSN+Y8jEtEFm/dZ/HgNhFFikHHUho\n1fitT3ocW0Fn78UPdrTyKMPOACbwyW/gWD3yCx64oeLCyfn1OlQ1uNUJS1rm\njfncrWqJkoBP0Fruaof2wrJbQ6EXfzRSg6HsQ1MWv0Wo03HYnTEdnKp8a82b\n9STsRoRYjoh6IDTfhfSr/aldUZgWd7iH8nfi3Tp2foKX5ILxH80kyPU2w0FF\nusOvHWPGp3vq1p6wbGtuqO7FSwKZ8VJoFKFCe2OtIHs7DyI86rX/2iphO2R1\n4mP3tYlhpaOBVh699o9BtTk8qzz84DX+3tHQbYO/BJiprflzuk3gF4WSv900\nN22+X4enJkSOTK+e9PpsZDJrQTRUT9KcrI8aKLoGuP1e2Fbj9PiBTM0a3lrg\nR8sNi4RUFGC1LDZKwzUAT6HGUdr9nuf4eFZdshJBpt022Es9H4Z+0Sk/fQFL\n438MZ2ToY6X6ZrUIniORCl2C+/M8GW1McCUoKMl8K5FY6YxMU3dHgpleeRIJ\nzU+8\r\n=qPe0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBvUJxKnHDPoGP0iLjMVQJX2tLWXFRA5UjGb82LLEEaIAiEArOeNoazTGeTuUvwtIXBQx1ag7G3uXcu9QlBRJT4B0G8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606909561-6166d705.0_1606909726759_0.11542324577969088"},"_hasShrinkwrap":false},"2.30.2-next-1606910350-bd473414.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606910350-bd473414.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606910350-bd473414.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606910350-bd473414.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4uKyQuCuC+LUdX+cZtZ0AwyvT/CVmbuqeesnoNpzzx5iFlvwSJkcEWtdNQS231ObsSJQ+I1D7u0AFCygvU+2oQ==","shasum":"0c571df6cd6c11aa2628726d1d7af3a28ff10ee2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606910350-bd473414.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx4IqCRA9TVsSAnZWagAALmEP/ApPOQf19kFXY0Ep4ymW\n0qR2YrJ4lpWq6bKipjZ+7DJntGX/Jz8GODmn0WKj0UqDUVOYZEYIXnfBkZEx\nekpe+gAg4mfdXjr61VpYcatrKZEYfL5ljLecB3DXueLstWqbE2oERIJCuats\n61XbdpkBpCUq2ChOV62ac9cpUU+MROyxrqbE2/AKENDUWSSNxzkzaEAstTs5\nTwRJLS2JIt3+yAe0GoTEKkwJZX9xVK/DS+3qtViw0OZDYStVCVkJSwGBZzBB\nSWddShSjZsSnSp6O2N2NrJbT7DqFluVrRlQMTK+yYOm1fEaxjU9YniIWiviq\n4CG/CXVzXEO/jXeq2D6MUtUkQ5IToYqC37WkuIjkjtyQAMDL6Gzw3xslagNK\nfmUcueBgVS0WiOwI6B1zR/xhOgPKURc09wV3ZnvxyjZ6y7SdZl0DzNmX7dDO\nhwX1KSLAiEBSHTT6sS4n/BuYPcwJoUrbgmF3+FQH0zsmsrJWb6tnFlhIqwfK\nO+KwbYhAoquy9PxRHOfqH3A04I4t+zj5A3Kptit/RGnP5wcAWD/nClqNfyJW\nlRFcSa2MONO78AenvXYsamY9QCzFTOdDa99WS1MQL/qgOeDQNaq+4XMmFTEG\nbPBayb1aw1wMM8rlVrQOZ3ya5tmlOmIeuLx/oxK2PPGADAnGwLHM18AlMxR8\nSQII\r\n=oVMP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICuhh2e1N5JzKZMGZxVUNC7Gc0G3Zey8OJzM0TQjJ0tLAiEAt/mEb3tgr4ftqjoHdWSAyIKw2phELG7mhSi2YsNLoAU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606910350-bd473414.0_1606910505988_0.2106813742425222"},"_hasShrinkwrap":false},"2.30.2-next-1606919948-bd473414.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606919948-bd473414.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606919948-bd473414.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606919948-bd473414.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r6ySSFNioqWvX8V4mK2t3zVU//TGNTFusyALq4cMMxvkT0mWJANP0ImJ6S6ipWYNPaPqKOH6aoFaKicQWpGhhQ==","shasum":"760c7a1f6210c52006a9a86c9a559f3cb20d843b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606919948-bd473414.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx6evCRA9TVsSAnZWagAA71QP/AvtHyg4sVr9hJ6mUgCi\nXRnHkq8tszqlBaoLBU7htSaiJP62+0356Q0mzKAauzKscqxuh4yqJI9/agXm\n4PpChtMczosxYztAOb+xw6ypmcYtoI1f35YanXyFMm4vzI5JXKSNoyawAT8p\nP7jsI34WwCUSSreHh0sOq7eiMtrYAFDpDzYh8pDBDZec52k6kJQ6MFAPtuPg\nd4biv1zFjhY7w3bu/b2NOy+avDEGzaPCIfUnN01APY7Ad3ViWdQNCNYMA1s1\nY/Q+jMzKhs+jXpH0BI8oObWcGyHucHjzdoEzcLfZPXN5vA4UdEwjl1sWdEc1\nwgbVcSde0vNzADrQwmfwV2owXMCJ5h7D7NLEoYEQ5R60MtSFQFjxzp8eYDzH\nZkKBdE0cY25HNg0Z8S3wvneLdnmpT6CWTYAVat7qukHEF1SBMfpJI/s3NI2H\nK+poXT5T0eVTLgKoyQyAOWog4xQu+1HdpeRNL/9DaPb007xWDE2YLwD7iiJN\n3FbtXSMXabTWTkJXjE5+4Tz6PvuqIiarG3tIyJGVpnCVPs0fQpRX+oQ3lZne\n8uLSGjKr1xKuUWr+a2d5+WaMRymc/v22BCSdEGKv4Yy/snYnctSMKR2UXMSf\nbiLZ17sC+gh5kZwP85H2k2GwzAPHqRcYY+I7sEQwEw7rcpVsaM2Fp0v6ggJM\nqmZI\r\n=Fj4k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmQuNLvpggoFQboXbIAcJ2Ztj0VfxHmag4GCC9MXXIawIhAJ6nyFWCAYgAheIWBgNeRlAxD4rYw9zw4BnaYNN3A2rd"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606919948-bd473414.0_1606920110640_0.20324605988154465"},"_hasShrinkwrap":false},"2.30.2-next-1606920193-de66504d.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606920193-de66504d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606920193-de66504d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606920193-de66504d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dD6xnYOXdBMX1Wt79NS9yuvLS3mlxRICCxUKb0W7rRDCBrOGOef8Q67jQTgmb++rrkWH7EYQBPpU4ScBWpoTaw==","shasum":"8d8ed21af82784a4a7b1ed08b86c522a425d68d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606920193-de66504d.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx6iVCRA9TVsSAnZWagAAaHQP+wYkfrQjjdcryet4HDf7\nZWskMfLKEn7fhWGxZowAExcD7Li6q+D5sk2GveYs/eeyiK2dPupUtL+bHjCI\nf/BsqJOm/xe2C+jlPYg0ygc7eXpDK+gPZ/ZY0O8dHSNt/QvtM0eTuCd/uYBk\ng/9lsKJ27Y7nun1z+sG/yCqkfBlwSxf6cAcJ1NX+1kdxjMZP5FDw45QGwS7Y\nrjOVCgXActYWbngOUJAc+oJS1j7VybJTervB/UNgH1mBhuFsl0aXYub3yolH\nzkc4pGASQFvyX0ZOAjvksw2fQYXfCjgrqco2/hJCbV7rMtDy5pPVXZx/9KQn\nF+NIE70SekkM5f8NGjXD7i5WjMqps5Ab5G0gcyZB7tY4I0qCQQOW8tRnR8PS\nGVkFHfI3SywaLWtSj6HB/6rIS1vZCTs61ZnSPI+vxk/S66EeoO7r409qXpk9\nVWKcsJV72c7qdRhvBEinY6lleu7uoLRnv1d+cKwnZD/YcCbgwOmSHE693sc1\njhyXn9LWhOt8johxyjBjRmEaQrFi4GxsgHLODDS6tIAa+qzs7bj31tLETVl3\n5k7Fd5xnwUh3B2htD5pRF0VBN6uva8bOq+b3QWRwPtsU8nML1ED0Ky9WldOy\n4cjw8usr36SXHJM3MnBIFC6BSdc5zlv/v4ijZ0sXetbHxvu8kgl5sSB9gQcG\nNWmE\r\n=XGze\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBFiby9tuNxF5wzHO2nsbdhP9gnton96eyhqjlpyLYZlAiEAoVO0V1kjAhjZUb/cj8GhNMir38xVXodvPf7VqlfyiEE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606920193-de66504d.0_1606920340447_0.47751992671436194"},"_hasShrinkwrap":false},"2.30.2-next-1606920224-de66504d.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606920224-de66504d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606920224-de66504d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606920224-de66504d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ol8ela/hFnbLJnJTkbgtep0GyVvXMeLyCpGMpWZ878yf0sS8kWCRCdNK6HXE0V8IAxIFA7yhBmggaNOX4qX9vQ==","shasum":"39e6434150e9660f4e23e133ab42684a258e755d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606920224-de66504d.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx6jOCRA9TVsSAnZWagAAcqYP/2SY3V5Q/Q/i2gWBn31x\n22TKMKEE1O3kvOie8mG9dFgKGJVbwcTsxRUT6NE7+SiV3ll6c4Qhxzrv0hb1\nLLxNVfNggXre0tIJ1PjfcXU0ihBqrixEz65S6lBAKX11AqKvAjKy4VE8M7wP\na5ToBgQ3VlMtMbf+pP6CzLX4tnPQ1sx2iSNaN/vWGfjIAeab7ahS5C5qTrrk\ntv1rs1rvNeBI44ToZGspbxJDH5dsM+EKqry8qqycUTtwXTDKbyCxmXmhq3LB\n8YffLdZf3ofd9oXcx62Mr1WbrSKzs2UUYsQTHafPfIIXTP1e+gTKKu4Gk/Bx\nbpXSS5bGA0jab4vvJiq0VylhBwwGUbChsMEH81NLFk6X7m/BOO+0CyL3FG6y\nHh/N+JTWZNLUW1Ijs8LQlNae79dC6z41TK6pfy02MQ3VT9KWqTnihRWN2Kuc\nHhsxaRv6sGH8rwj5YxqFlCPtNyIzd7Ns4dvyHy5coi50f+Q1n/qqx0BiwKo3\nYhV7mH1e+P/HOf50X5BPRqf1hEN1EfiwaCn7ZGjJUjeMkKN+b7lsyqlplJm1\nvTxmRX7wjmuP6pH1mucjYRk6IJzGUiH/EXyiepoMEdn4bxEbGCV+dcVD93D2\nCAnS8pxlTuU3UKdVv4PTS2WePcitB3KAd3F+SEiFmMGMVD40V1u328N+cWvv\n7XXW\r\n=61Pj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGLjzG3sCEBC7IxH8E/FurP1vDLHs7XmzzTGqNSdSldCAiAUHT7UxOc0uGrEuQD+T1IZwkDtTlpkQ81dVNHb4vkX9A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606920224-de66504d.0_1606920397524_0.9922697611923992"},"_hasShrinkwrap":false},"2.30.2-next-1606920279-05eeb452.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606920279-05eeb452.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606920279-05eeb452.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606920279-05eeb452.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-huHldjcXMl/lA93bc2lDiDZ2mtgFvGB8sB6+aUaaj7OvKvoomlobqPA4+fWPD+ouo7Z1RAvNCzpwotgYhcuWHA==","shasum":"6ab861f0c63ea37f234577751fddcd27b07e5761","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606920279-05eeb452.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx6jvCRA9TVsSAnZWagAAeyYP/j9Lf3c+HuwaTTacwT9K\nivJ9BwwqWgHKQ6lBYmzfg7VkUXgZAc7bl0fM/zr0Kl2AI0sIvkvpFzLQIQeS\nvYfq7fUk+nVvf26INPALGWA29UnuVwoZ6kFdSPxbmoifUFte02vcfVRJkLwC\noJYGHZWoT9nrgpXm1+LidNs15DSfMgCz3O8ce5EBwPAnl138ityjIxt/h1iG\nG9jM8pdzvu7KJbnjL8IDeIFnUM/Kz2e79qVq88H+deGI+onDCcyibJ1FC9Ca\nmebn4S4yM046WmJ5Osx2klSfvEI8WXcSiCEQsIv2J+MJDpO8V0U0o2/JRwcT\nEevfELwYxpAHT1YQaklTNuikDSb1/cI8ERytb9zIFAHlMLGPR8iVus3EwqDX\nFFJBcNllLbvfFPTEDSeJXWRtauPVoZNAC89277gLcfFG4JrvfOZOz8sZjXtK\nWjHs7uFCL5fwgnZ09rYC16b5kxKDLKTWXicswca9oEyt0M7bFc0pMzPM5KQT\nTGtT3cm7vM0D1gwYhXQgWq5NgthzXSDI1G3/cxVs6MdBj5+PreiSoja1q9In\nzi6pdiV5318k1aJESuUcCEAnzv/EatEpfdX8eKwiW/WFqBnTGd5wRWJQlQUg\nKvQxQyCYpX8rYGoMtbrg2A8GKYnPeo2yD5FZeZFXqR0V1lppmcrLhQd7iDMz\nlW++\r\n=QfJz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBBrpYIlTE38WuQTFM8aTAwtX89rgucrnVkmnDmGj2anAiEA/Qcr7jwbhdZwhDKlYibzU9wcHz2f9rNdhAQyToZkuic="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606920279-05eeb452.0_1606920431133_0.10562924385301553"},"_hasShrinkwrap":false},"2.30.2-next-1606921099-05eeb452.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606921099-05eeb452.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606921099-05eeb452.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606921099-05eeb452.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qHazGRLDHrDaXw0tp/QlLiJg71L4JyQGxFV2AjKGMHRnEvC+a08Z2xcpbmSDfVY21gDb8BwG3+N5xkWIolddfA==","shasum":"4e06516e15c3d93fff7c3c36926dda3b811970dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606921099-05eeb452.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx6wnCRA9TVsSAnZWagAANW8P/1j8uDhqnQvEGqqUo498\nhZIjSnB2oP6G+srAFGbOkk2zMiTQ8Luze5bM1QPw4voOEdX+kEelLBowaeB9\nOCBsoNIsFa1RxS0QjZpADHRRgREwHMRTf6+65orTawTnoTgSb8WTH70lzi/3\n3z4iGhMNh3u7muVu9GjS0tmTSIUGt8abic6/22o3JFzYSNaTHOh7rtXwy0s6\nl6eeUH9Ay1gWGHs4yGeRShPfLoTYFnLpOLXZMukzV2wRHzUJbbfqjt8HaYDT\npNOD8MZgK+HtWl9FsFWuAMWcLCzAVcxHyQ90iMJVwn2IjLpKj2yOBuG8VlOw\nNWh/junr7ELGFHiR+MRdY0Cm8vTydtiv4UpqZHzXI9AmsQB5suhrIUOmWIg3\nEwi6k3t9er8S9RFPxCG1wNQq/TneF9n7u+CGQrlz+nkqyTjPnvzkcHHkaAtl\nh3+gPw1Y5DIHsDK0G2Mn0MefOMuTZbnhAzEfVIBvmHTrm5rJt6tp1UjvtO/w\nr0qIb81L7r5R+tjwRJw0YcYo3JHE5LGLfWph6mWjIH2s3amN1c6BL4vXcEH2\nDhLIRO+hPdZC2Z6fh7ohivYq4tuoUsT03GcuxlibW7TwkqTvid3R9rq6rTK2\nbQGB1B0/qXXiOiHLLDdFuZRr04m7gaQUPg5588O/a+RdGYhrghc5jDRLO4Rw\nN7sS\r\n=N8k/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE69cTx5+4ACku5xk1yVNeW+ndTZ8munz9GFlzTUD3RSAiBD5NFlbKxPar6jI9299cimVuB7agVdPvaXuGpE5CNL9A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606921099-05eeb452.0_1606921255395_0.7782721400869317"},"_hasShrinkwrap":false},"2.30.2-next-1606927527-05eeb452.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606927527-05eeb452.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606927527-05eeb452.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606927527-05eeb452.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AhsE9+oYBZOd6aF1rn8ceuX10gk52JrZi0T55wl9KWU/ATx/IJNmXjkHLQFOGFL/RScx8UDM/TlHjWkYnyZ31Q==","shasum":"0e69eafc4d6a4f776028bdbfaad4036cc4a253d8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606927527-05eeb452.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx8VFCRA9TVsSAnZWagAACOsP/1m6M+zzsebBdJH6052e\nrE+wOuAW0nBemyK0hJAzAMyCTnLLNbAWHVcIoAQMyAaRBSVrV8bPpCHVV5N9\nEXk9T1TZ01KOkrZq5cuEKijWDE1vzIoqHkPGMTpueN2TNTHQo747g6NUmHI2\ntQaE0AVInmsGcZwSOvGPi4U4H3Kxmo683ywJUVHRqWKggbu2c1CNZD2VDrg0\n8RqVR2MqNSzzT2jMNpWUCKuX+3HoA2G9IUWOKKSPkR7L6iYjQUwixwOjRZqK\nndMLb/prSDx9TizC3hw5d6hpZmcY0F+Q6d6XOXkUTsFv+zT+T8bgWwab82QV\nkZK+H4AYKnKqen0zIU17iymmYqYyEQAhcDncUEBtOdzdInhOUVq56PWV2Mqx\nmOPvoRFDPI0gyOSzZqhQNKnSxwGNUrLtp2pxKEvQRwqJGAtlApEE0iSx7E4B\nNGlRmtU9mjyfzH+XVXRP2nByRuGxkfoweQGUWJi2In/T6TvBJYdmiotgiEII\nOLomF2a2SEMvz+1gd7vOcICzyLDOJ9BDhyVkQ5vq/QWaRF0BODYc9q3VhGyB\nnrP9YCCzxlHFcMjuXluWk5Goz803jw9vHXcjwg8iZXpgttfa4S5lErqpi0Il\nIlZluFcgy6KMtUjAPL6zbFBKlVLMj22V4t1+T5w9jeYIpQmTTmE4LL2MKnGd\n8KpT\r\n=nbKn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJnPQfcz2OIUcuTDbOyW2Wfhr6d/l7sv+t4GdpN/4GMgIgWAnzMoNX/ZjMFc9f/hWaSGmDc7wUqmlSZJOvMitn+bE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606927527-05eeb452.0_1606927685397_0.14144961141495216"},"_hasShrinkwrap":false},"2.30.2-next-1606935782-d79f3129.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606935782-d79f3129.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606935782-d79f3129.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606935782-d79f3129.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0sudqn9JEoIVxUxHSwdIGLqceA6abYEr4cWrv6YAfGcD1RdH7IStPZPoN8RkN1QtsmNw+j6ZDxr0V00TlkDoDg==","shasum":"bdd7bb3dbf14cee9ac1f4d7efc83d2e4779afa7f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606935782-d79f3129.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx+WJCRA9TVsSAnZWagAAb34P/3kNcGGu7MYA6GDDyYI2\nMD5NumCKqwKY6HphHjCKimSX2LN1nQs20hbSJXF1GeNqXwllKOwS6Kr1hGMR\nB/gzCUOE8k+K2/wYfPxtglgyBhtvGZvoK7slE0nmdW1ZAcFJKhNyBIu4sr//\nsApGxe+vKRMl+TIy0VZFcJ+tGbRf4PwVIvRexhd9jrRm2SCgAcuGEaqx/zQL\nG+Fiw6tysSInpLbhTmCq+Gz4Lq2D+2AnYM7rfty7mAT+9TYRnixZnGi8gwWy\ngJkpBt3rmCAid4uz5Orf/PwRwnN/VV7ybgzje1R/KrKdEmzq+99n50xD5xKW\nMYEtqkHNclTR7SxaN1YB8Vt9OTN7joiCo20uDGR9GsfNe0qDvNmum/IfQw+p\nHtrz47DRsty7p01oTw5WMjQLRJ3toknrTqErjlYPbPUQndFvmCUQM82lalm1\nqobNcvU/eJkbHAHs0hohWKmPwPVb3eNelB4inQa1LDH7p4Kxb8dkCRUXJcgc\nRyHCDrR7hV8mfJvJZgUqzyZGYmxjWCOwtdUVJH5KA7FAIHyfc6xFhxyVZHAG\n9UdY6ECYUc5llmWJ2DDi7cd2LCrMuG8kymyOlin6N9tTQv1aG1WG7Q7V4Ugu\nra8jzLi0EoHVrEKTXHMxJhWLlYBC/LZedK97hkHKA8u4XdgJEdbwtfuWPOgk\nPjD2\r\n=NCpY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDERtHINe52q4zZOZBgk8qeWREKdNELEdYFa5UgZ8GbUwIhANl3CDW56XDSC8ZmHf6SVXvP7o/Rebw9abHJmy+2+9hk"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606935782-d79f3129.0_1606935945328_0.12428224258244946"},"_hasShrinkwrap":false},"2.30.3-next-1606940707-9bd954b0.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1606940707-9bd954b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1606940707-9bd954b0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1606940707-9bd954b0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HiTVZfwjYtW0EmqHwyvwG9ExkCtwkdKb5Onvp/n23pBUp7yeYPoblgK43D3NI6fTEJW9lSYQj3IyU5we0k65pw==","shasum":"1f90ec36340dd8ab7fa2bc159d94da73ba5e60ee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1606940707-9bd954b0.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx/jOCRA9TVsSAnZWagAANW8QAJrGUYqRUc21+seHKJCe\nOqodnihp3EOtPcUzrsBxVu4jSKRo6ezotTxGS50SLbwISJquDIT9ILRY4JXt\nD0RT6borghQ+NbtsV4iOZbQ+K2QrwaidyZPoxUKe01u1oSXO3vnz7ubo2Yd2\nJ7JVzAOfZ7Sz4txFwZonBHYR9Ed9nkWldhd3k4NUH1tc3MziRaj6uQ0+EOTZ\nYaXoIWz/pVdJuvtKVt/kTbUZCaGCZiZIiqWdOYvwF4Qi6NZclmj+xH1TB/Yb\n3jRyMpccI0xH68KiW1SNkPzt+Z5YMdbPjuWYex13X4rmH7o/C71vejjwI2iB\n2Z+7SoeTFmifleLUuaMn1WOJRSi4lLp5Wao++iTsJyOQfKlG1/Mkzs7r6Tse\ncmB8ipfWYOtScKAXp5B6T0sNCYJjJ/VgG90HHIzynlGqVEBYC89Yg1h42X59\nAmFxFmD5p2eb0jPHK2BVllnvLc3HIwzU0z4VOu357IOZNuXQgJqYrHi2Kw+H\n4pQHxlniohWms/OA0mTFLtodjwX1ochRNv4YyGWte5hLSUPlvCYWYpedltCm\nJ0expWvRebbcgFuXgAU/lKbmv+r+GYN4/lGU/6/Hip89iyMHJJCZkKleTYu4\nF9matT/uTWDlnUty3/O/XpLb06XD2GW2z/hh/bRDiYOyfTa6aRQ7FvgoAdQn\nSnOv\r\n=ObTl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAXyM6MlAtv/dzVbF/S6ytN04qHG/QlytqykDD8Y+n11AiA9kqiRgqzHYTNAbPo32XoUqjIOMiipBAbBIsULY+0KUA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1606940707-9bd954b0.0_1606940878093_0.2650359320418245"},"_hasShrinkwrap":false},"2.30.2-next-1606940726-b77263b9.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606940726-b77263b9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606940726-b77263b9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606940726-b77263b9.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BeklTzBkm/lbwk2Z94JGLnyDyMLfxpLMDlSLwjSRElapTdzDdewQ8GGjzOkOrEHBAiFf1kC5oP24w4sgAKFPCA==","shasum":"4562718fc6aaae6491599771f899e0730f35c199","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606940726-b77263b9.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx/jkCRA9TVsSAnZWagAAM2MQAIdk3DzI7I0HChtJSEHC\nMm7FCiCtAEy7o6TbrA0tZLAcz3Qf3zixgxgnDfXxugoQ8Fuoo0GcWFtc3T8W\nG6vJDE7P8hzGpfKdP+7uTHFK5j77Ih4qI6LzE4FFpcizsRyQvsRlM6mf2HjG\nJby4uNkYJpQHnIBijIJVrUvCULBrlbGO+krDoObL7ahy6HEICQ2VW9D603UY\ns1xe0mxK6ys3F9Gmbb2loG+5BGg3fc757LMm0uYjmZJtZaggOAFo70Mr1bZ1\nhRLyZ7QCR5MCzdXKB3Uqf/J52xeHyO7KRCHSgnwTQOI4uZ2MCGKWbpS+LHXE\nkFFqP4awJIC2zD+X6MIwJ08NjiYpffgBeMJ+fOxao0bzrioY+bCvGl8gnpOi\nSCvGb5Pq5kZiruDkTA7ASRPzzySzy8VymWAcevORtbEZIGrXEoHqL/xrr6lG\noCoNi5+w4KpD2WaXDJshNbNZyzbuiFj+A0ltJehU8radPJ2Zg2zBc98Tq4/i\n1e3yC3BWK7GYUeacSc4Mgdmq2S9/9oC2Jp3joIdo8OrF9e9sUcV/pK2ZgQf0\nbvGXFgNSpzkeYa31spEVNyXBtBWsaG3Vlj9gC22nf9nqkTXSKA481txaI3QH\nenhY6OjzfF5sXKMTXpVHMc4w6/FMbX5+6qyn+HUldTJBS510K0DHpLlSOV09\nX7tT\r\n=CQWT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGxf/HZ0n1ev23gkpKqiaJMvQaQl0GuhyIyNlQHDXP4qAiBmAQMYJ0K5kbV2eTxX45q6Drs6kZ3xoAUIPJu78l0nDw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606940726-b77263b9.0_1606940899974_0.7009356717678532"},"_hasShrinkwrap":false},"2.30.3-next-1606941435-580de42f.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1606941435-580de42f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1606941435-580de42f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1606941435-580de42f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-m3GNdBUWVe6nq0LSQJhGnjfXUkye6E29wVVFGCTJ/jpFALHUK/nNIwtTH/o6ZXlH7iYkScEtMZz1BVRWpmYuoQ==","shasum":"a7917ff1d4b98fb9f6bed6218c2a98a2c743f88b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1606941435-580de42f.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx/ugCRA9TVsSAnZWagAAZRMQAIiib5vCK0dJWxvsszNf\ncumejGuXKAyc/IPxkDBypejQ7Vgh3qFbxXuPHBQFWvLZ9zNO5RzKMJx2s1Ro\nxpuPsa5pBYPOsbRC5YElWB0jKfzrPf0WNDhvcGVkj8n2FEH0dIF3LyQSNKFM\nnj8TuZsIy/SuDN4k395NhtQIR4KmFjuhFOCd0IBCVrx3f9s5piiJSDk7pYxt\nJmEbNq3I1p3T6eeE5xdduipXaekkGSF5iM2blOxxZZccUhB+LtS7+DFyWG0k\ndzV8KBjvdNYoicu4MwBqft4/ItvHLVoNsG0j7wXP55yvFpquF3wxU7O6A+sV\nMNECo2Ih01h5IuSZfmd1Umsd1x/auogGHoDlgFyUxAL5r07w8iWX1XgVpcAY\nB/1n4OnienGRXvLIsIyPdSVpFuGrhui130sxmzQEbdqQ7vIY+zfcWM8FhxD3\nC4lAtMDMjWw3nT4auaoMlUn35/FJir541txAdMScLUaw1tBsdrBa5X6QSuI/\nOELOx8MySNJzAD0Bx4IjGwpDxpSBlBljvJ0jrgP97FwupO8jBr3PeLp+Q5qd\nriuo/JAntrQqCy9DxufgaoP4v/NUCdd9M/tlsYbBk/ZVial+EriDXWqwtlEy\ncD7vu1XPNW0sQr/uuvoSn0LWkMRXAsTlatAK5ulOxHGUuVuuf1vKUvbXykuy\nYHtT\r\n=4g7Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMKk7xPs8BcS6fpwGImgqBQ81+BQ1sFNAFRXXUwzW78AIhAJZeQdXtsZJNWrIG2/elQg6xDa6dP9CWXQlbAJmiUqPb"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1606941435-580de42f.0_1606941600234_0.6549575544352022"},"_hasShrinkwrap":false},"2.30.2":{"name":"@xdn/prefetch","version":"2.30.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.30.2","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6W8SuwsadBqeb521WDyxaNEH5qWqUCYg1fOZT019EkEvDht4+K0A5i5+bjEdZktJ7UFHgr11B5CitGcid3/7bw==","shasum":"e15f59cedb1e7d359cf96e6c9b9d628aa8c33e2f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2.tgz","fileCount":58,"unpackedSize":141818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx/5aCRA9TVsSAnZWagAA52wP/iOttl1J4Ut899K2jnPK\nyN4RTBY/bZEWf5vk8gCbRrXKjdk9lUlFZuEnmvXeE9mU5lXXiXKaaRGbt2O8\nUWzMMlnlc55HU37RBz924zJFVT/EC9bDK/F/MFjzlYMjiuMgKPkAB4mXoKfg\nIHEHX9qF2LPMfpDrgEy3ZouaiYUnck6MHOpqQlxGBdKCqB9ZzMlT+r22kN9M\n06RQFxLMsTlC9SV2gkd0tGydLpCAFpyH8VregJHlKzvZJQXnHVlF232mn852\nJxoVsmopiOooMhzEhhHDqfaqM13a/YHydAFeIOLplqR340WmHoi6jGukrBed\n5NzDC5WKCeBRSDiZjyi9jRtFn3CBpLxtXp8hgQAGW9U/ty+Iqkps6tkgdZiL\nhwXLZpDStvioNUZ/PAyDcjGmOMI77auROI05e5kydvXLu60US3vWe9sWCyf9\nXrjp6EX/4/zyBGnXKqRlOfZsjCi8zYIzaa0hfsNt3Z8045rQdzKSOx00F5OD\ny4sidmlyozSUBzuILAW63dkUeza4l4jXv0MMUMIFeoY8CZwg25zT3MPDytdf\nuBA/Qe2xpPCkXv+uJOaGqHjTzpZV0m2eDI+8/roPckTIYvrUtXyudWckaz/u\ndfUYSbkrRoQ0bveXX0OzEpLNouaQp9ycpDmatqoxhWeA/+vdvvHHw0ck5o7E\nBOzB\r\n=9vSQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD79dXDz0e7yRUq30jKNfH4KpC5E1nVdG+/xClM5eAVOQIgC045zLPOvbeCJHj7KhvynmaEg6vGCAhPWXftnvNSEmc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2_1606942298202_0.6821515462264984"},"_hasShrinkwrap":false},"2.30.3-next-1606943566-00430898.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1606943566-00430898.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1606943566-00430898.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1606943566-00430898.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/dNF8bKvM46Y5N+sK3OqNDHmXFrEC8+OerFZ0R2OhdTWPmvNp2UhTbIwl9ocdkfI3oLSR+YUX2zMF+E+iEIHjA==","shasum":"a57f4d6232d08d76ecfe44c1a208172dbf14b781","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1606943566-00430898.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyAPoCRA9TVsSAnZWagAAfBMP/0y7eL0tb/CDQoOeSIs2\nqLsHsTw5KcbSltyCiO2wJl9vMGva+qT3yMxI82Ta8NukEugPfFC9EfWUIU5X\nDI1EUQ4zNt+sFjbGIlAd6CB1i1l2/qNvTOfwXbCJfnzSxYNEqnyjAGjWy4V+\n63ZPOgMeT1K1LBHN0w9KAT1fxnkibqclPUU7RiMdMSa+fPLEufa8u8eekJQ2\nXKwEgus5+shGPwMjSsNjCtIKRYQmiKyJG6h/lCh/OIxRpAv14guZbhietROr\nCbChnKPcTfDcj645eARXPwER2ArHWh8oUgfR/pLxSpM9Rq4n04NAq/qe5zgY\nSUyOI22V6otn/Pyj/eXNrgnGQ0QyoHEzfwMwug3PMUJ/MvcF6RBMGK0xOtZR\nr4UK+9Ni/T58vd17oxMko4gErhf8sx0L3Ko7FbIbtZ0JYXcLtEtKFrulNCCK\nH+nYlOByQogBntOteeJR3mjSTUSIwjw2NrQY/N1ekOtXPK7We2D6WtprosW9\nJfouERMNNr0AgNzcdgKo0LVfBGnRICWSsBzXDke6rMcwJHuzhgfJWRYzdmiC\nQy2Bl8W3dSGBYZkWXvEu4ERpGHmbZRvyyKnJq3/RO71+hYcCNGRiPgCafP3C\nBEVLHfS2sBj1Xr+wpOfFEAXBRHoGiE1gSMDfaxRaBu+YHWmbFka0BLaPcl0X\nPSkh\r\n=YPqD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDi4wViy4rQCOxTDuXVN+YWfLx5l+92L1ShtmpD95t+4AIgD5kDSg8mquAD3rh4vDcyA+3urnDX/11UlJb50wA2T88="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1606943566-00430898.0_1606943719894_0.2710564740846"},"_hasShrinkwrap":false},"2.30.3-next-1606995022-98023332.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1606995022-98023332.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1606995022-98023332.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1606995022-98023332.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ylc6g3iyoasVBYYg3eizIIxllvgv/RC1eVEY1Q5fPljrLKS3+ubhZ4ipBIHeD0Vpsf4EO0f0flcRJezbi/yD5A==","shasum":"c531ff521cfc61c8b4219e0cffc139bedc2c7c72","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1606995022-98023332.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyMzjCRA9TVsSAnZWagAAj2sP/AoaYXrvPqsR+pgFNHGf\n0mj/IRe4+ZjNnAgo5wVWvoe16kJnZT5lHKiKPVeMCxwZUrKs6ILL57HOv3S9\nRpzfwrvSv3DWM9HHFVG7RR8AK3qCReP5AlXo6TGfC87I4oBdPcoa3p75S4p+\nvM3tEj2LZ69eGeJzqBEWdUm4RIB4aGn7+vQvl8EYCtUXIiy8yQcrMVidEb0n\nRqEXzFztrV6VSMIxy0x9FD/8xrpsvUdIjT94LdcYtPwR7CmoPxa8Ex03DDYy\ne/yEIF5MEtRooLrVbcOn99AR/JRKeS49YRLQY4y4WGN9mI/D3nAGxDDCcGNv\nEP8L3rQo0jImN/WOd3tXYNbGA+i3pmWOKyMhbohoI+1hhYkWzg/0EANGe3+X\n9AeAnVmRG/LpKnf3xhi9IVryhEQ5AP3I1MxZWOZU3o7/h6vN6K0z/4FCSELt\ntJQW4bBO5uzCxaSfr371cZcA1zkvv9jt/Sn9GSGYpe0krOj1psGy34ncpWpI\nfGjjfAalrRpBjBeSwAOAVIBR3CPhjwDxeMvxtqhiyK25nXUsYxPd/sTcPiaH\np6BMBE0qwZVU8kDkU5Q3ofGvYKaDf+mLI3YRQQqzQ4RTtqeT9IP1rZl6N4Yl\na4Fw879uFnbgbh+V0ZJB3ML8/27Fg4qx1+7dwGiux16K2t7/dJiDkLpv3nMO\nqfo7\r\n=0jHc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEc3+jtoRV8MeL7cB/GGOCznq83SUMv2ZTeHwUU3itdBAiAQ17KVAd61OaVY9MRvPk3qc4MijnkZT3INAx8z07K+Mg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1606995022-98023332.0_1606995170706_0.4441848451914385"},"_hasShrinkwrap":false},"2.30.3-next-1606995211-d9560aa5.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1606995211-d9560aa5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1606995211-d9560aa5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1606995211-d9560aa5.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CALSpwDwvLE1hkanPsiC82lDWbgLlr/1R+2gflRo+EqQpvpe7S1GlOQNPVRVfBtr7uudiXKbrIpBNRRfZSFX1A==","shasum":"fa19cc3d2439973a112e05cdbb5290846735015d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1606995211-d9560aa5.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyM2kCRA9TVsSAnZWagAAMjwP/iMc233J6CKo/iq1kZqI\nZ4UUL6y3KEUAXB0asE0Y/HzKQ8qq/q/FS0l0JTQPkxTWwnTm1VQnbb7mXNMK\nlG4PFURmv+pg+KmL9eWqojGofkGlxzJspQ6srzfz4D+aO1daGMUZlC2bKO25\nJjYq1/TJMveXggZAbnsL2vISqPJdZ6djVim6I7/6qpQdKd9xrxxDk+Mkg9Ix\nafyjAJlG+9R4ESQ00bK72JyWIKT+tkfXUFynXWTra9v+lGcMNeQQJJAK1mT1\nkx966dDUc5DX7HZZEspavL8q7SSMUXP/1xUTvAdgG9S7OHwwJzniMNCT3Ggu\n/F6N1mNTRyyNePHpy0/DgWD2Y94RntQNSHwsy2sZU1bKV5dY+8JTUhpMhOcn\nBnqCOBmd7HI/xaN/hK1w0PWLD9daoXWfxruE/l26PfKgUvQotrcUaW/l3oDP\n1OKny3N1ERyyttartA5tBjPSZxOHlKWjkDNm3c6mRvJEzJJKNh6eVBEUmNNk\nfMczhAN+GPIfffyksgjVAh+g9E4WzIb4n9mXB4oIuFRmPbblIGbFRzqi63SL\nYYbyXUMkPoY9hnxzs82paW+SxvRtHvfWRETA4oikEusNxVehCIZoNH1sWiqc\nalSAW+T27EYkvdYrujp61u/rZI2bVTJNA3wujKz6NSwKIX4a/Ap5X4asOEm4\nUR+t\r\n=oE7K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7f2JlpxqLkWH4Kk/SgFzosraiD/o3modx+2C+n5sKwAIhAJuqDcYEfeE8yAFfVeWlnA9bpGjwjzlkUvN7wHpPeERS"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1606995211-d9560aa5.0_1606995364003_0.64403660231463"},"_hasShrinkwrap":false},"2.30.2-next-1606996603-05eeb452.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1606996603-05eeb452.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1606996603-05eeb452.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1606996603-05eeb452.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-SOIlwzeuL786Xg0vx8BUkCX4ppOvaRldkPR7TQGRK8XtjLXKk5fcHN3JFUz1DRbpZO6ZQQ21I/hABgB6Lz8K3w==","shasum":"b6ae9b974f44cf53721e8d84edff0902dc0664da","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1606996603-05eeb452.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyNMkCRA9TVsSAnZWagAAfVAP/RZkAiYYzS1IR2zp20Yl\nw1OqcScy2zIDLDUVO2Kc4cQ3WGMkv1Sj2FBj4jgbz+WZtVBA4P2s9NjeaAZO\nsmiUfyC6fBc0NAP/u3b4UO0D1N7DIxWRiViCQVpTwMIkPSj24QBvKuuYdMMt\nK/VKp2bA4tbgKiz2UZQ2qx6Z659/PzBh6hiUEfykNIMdlVXmYupHufJ/iqHA\nqcGINpQ4KuzKdkngXGJdK9jbQhYIR7MT83h4YztfzOeXbyFKkqaqY3/x6vNw\n1zFkosOJoOTWmPwhkHbc2pasp5a8nmEYrUVZ/1jpyuGvmgtCDm4T3OkVWvgw\nhdF1xIZ9xaGEnLoinZwiyZs+VO4GaWTCsgCzlvsYGQJGmoQJyFkS/Q3iwqpc\nAa2YZqDJmQFbWEOfbSnYJuvcbXHHaW5PrM6BPpoNaBRSpIQPNvTrPwfaKXAY\nNpcPNB8Nv1tH8Q5Pn390fBYv+mq5gBTmtwMFycLLXWDS6DGn23OHHICAvWgw\nm9DfCyWdMRm/qpTBq9umgJfZNxGWUmJNcz1EsXu9ka8cH2iKIhM3Nn/apwnY\nUT+YqrGf5vKz4KOshp+Ph4tjUNh4toVfFWBShO9y7xgdVedOeZAGXR9HG7pG\nkQUO53mdYUW5NJh/FvjjokPmAcQe4SWpU8zuw0H2gd0yyd8u53L/2eDOZ6zT\ne6H4\r\n=xsiB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHG9SIy8y85/aeA+NX/4XPIGGuP+zpJiTQdLE2w490RHAiEAq5RZ5FqaiE4yafvlWNkC9x3z2R/96Z6f5n0VVOMEyyU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1606996603-05eeb452.0_1606996772034_0.898086858751036"},"_hasShrinkwrap":false},"2.30.3-next-1607029718-e2da972c.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607029718-e2da972c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607029718-e2da972c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607029718-e2da972c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-izDDE1/0sTc/d9Wz5v2m1OSy5ACtYozNXV42wXV1zZSX1GbS0hOIZ+0fXtA3AP7pLA18fzeZYUJX1u+RlZMtiA==","shasum":"13abaf5a88019bffc0f3375950c7d22f3e0aa8f8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607029718-e2da972c.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyVRvCRA9TVsSAnZWagAAHPkP/0a5knozuI3XieQGsp4U\n5J1Ufp/s2RSeRw0sKJ36h6ZXy9G2j6VRLkasoX5H09+DQBlklJr+Oe6LIT83\n8Jey/S7oh+6IbE/FMfv3CTxKNXO/ABU2jX2AqFfBnD/esZwJOUQlLOvl88aw\n3AxsY0qS3VE0jc4cBl/U30XYcn14644R51qgfUBYQ97siccZPFpDx8BIziOL\nrEondGCNwB9MT2IziGVfzTnm2cMNd7kJfgfZT9HEVmMG6RziHZRTSu6zrG3e\njIrvD+dkROkXiq4eIvp/+zk+rQJ9fB82DkLwEPUQlzHVroKeBA09WMGzuNPN\n2iWy/857oeZT8324zY/itO4mvpXJc2X18Sof3GHoqYGuDOVB4qOUpJvysUbc\n/5WJhNsLXfo9KxEAUkwXPSWhF4TX3Z0iMF2sTcy0sC7WJj6NEEsamklyCxyY\n3o6yPyr40eV6rNdXHzHdxXdP8dFDHU0hHtK4wWQqklFMKl7H7y1BT/HlKOtA\nWZktr40yk7HLhkJ7k90z4QQFGhwNERL5vw6NAQBhtn5OmYj5MSwfVfOigLYn\nVo1O1wpFhruqO3OyymtzNQnTiraBU0zX/QsXLl10sM1kv+xjLzI9frOHNqlo\n/+71IZen0o0peGSXBo8gQKHc6Irw0An3HwZm10MJJJpB4lUxhu8pc2OYcnUk\nOazf\r\n=mtBh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAMIgz1H77blYcWGlc2kh7nHL4+kKaWaU1BlgbrUQDdrAiBfdKV+3J/04ZVt3NPc1JIeOQgcJ5DcO8CLxHaKLo/c5Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607029718-e2da972c.0_1607029871257_0.2425458032946768"},"_hasShrinkwrap":false},"2.30.3-next-1607032074-49dfddd9.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607032074-49dfddd9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607032074-49dfddd9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607032074-49dfddd9.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3kWH2xuNjGL+V0JhU9S5kO9da1X8WPBrjxzcw91brSmtcYRhRLJQnyJyodp9sbfxaPlJ2Nz000VTBWtHFyE6dg==","shasum":"575a53cb0b6d683091ba3c2435808b0f33ebdb30","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607032074-49dfddd9.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyV2sCRA9TVsSAnZWagAAShIP/iGPXUEr4WULD1b5dIuN\nqB01KqS1S81nHiaA9MURs2gN+lStQ2IsFfletj+JQRus25Fc8QQJi6CwcXfP\n4ADV++FhE8vw9BmgytNde3vYDLJyE4Ibq7Cmwl8a+mO34esJhkO6cHegIxl/\nL01f8zaKU8OcLujWdph7oDTpVgPMuFhIYE1S6+02I/SZ8Ucbg8MFG1Qio1g0\nPHl9dgftR6vfCDIs3/lX6MyMf1FSRe2aso106Hjl6cXmha5WTyGSuf9Ba55C\nhOmW7xIiv7j7HdeV4Efgnfl2tZ4hTNGcv/bfAb2mdrerjV4m+j0oxktdMdEl\nJGb2j10eciyYF4bcFKKLs/oJLhEDz+zZ+xlvvUHcR1Pj08LHLKjY4MLrG2Q5\nhYPF0IDwGdZosQJDI87tlaGQHVt+tN2UaDzp9PVX6GIVSKn0u4HiJQ20XlQG\nEy2+kgMb5YjbL3qcqHad71kTa1IzfkREADUsIUBdxjIsEe8EsvBGpEd2sU9H\nfmA9t1bfVIQ/MJ/Sw/DB8TpL7pGSkhDSvPuHphWTGHIrHlqz/O7EY5nYr3Qa\ndJVdf1SP7J+ByiZwu4rCqaLm1/fm8P9vYb+KM0JnZUWoC7NNX3k2WXSQVwO6\nsQu9LZ1j70OVr/hX8AvqW1RyYwMxLiSxNqB5up9nfAHYopcSD+chFbPQBKrF\n6i2W\r\n=/4Ej\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsqWZwIKUTa0YS70b8jXUFh7Y5x+Ymdacd9XX4c3NugQIhAK7/dNBcCL8oTUtWUQLUhDKVh/Tb4cOss/MWmcFkQFP+"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607032074-49dfddd9.0_1607032235745_0.37131938336317316"},"_hasShrinkwrap":false},"2.30.3-next-1607036154-d0efc3b0.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607036154-d0efc3b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607036154-d0efc3b0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607036154-d0efc3b0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WvxUltxo3IFe2t45hjU79Xxd86gv2i6Rr0zsstWOTps/R38m7+BqTNa+FD0HlOwZ6wxblc8YCpfM+C5FIrHMNQ==","shasum":"c254ed50991e13b271144563b3ddeb847e21ceda","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607036154-d0efc3b0.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyW2ZCRA9TVsSAnZWagAABQkP/Az2rAND9zsxIekzfbXQ\nXXC1Cj5HK/UGPCceaGnMZKFROuowoy+M5Oin+bTBaAuOYmGr6H0TmT/1Auzk\nesJ3A39aAQSgwZKteHxXmYJ85lDZMExYYLBVQ2G9lc7q2G0RRlWyMDTWpQJ2\nt66OZEUfpa+QeCg1I7LpfmA/c0NvJwOV5hHmqM1V6jZUnY4YKjYXquPE6RVE\nGeXEwYUYR0mwEmlnzRvdxTm0a+mEv56GVLddPPjJKfOHgjTsovk4DV18hj1h\nUzcFr0YLGOwMnJ2pfB2hSzkoCyDHHnyV5hoUjaK1ZA+CVUFNU2QK7xniYku2\n1YSsfVO+5XuOULsZ23fCJ+RZ7bimqwM1404q/aYlMHtZprrDyQJzjfi0byN1\nPKL4Ou+1wPKs/7FvV8HaYAh2ogAfumh6m8F18nkpiiKl3Kd08my1TLXrudB/\nwnG1DEPEjxom+lShbTE77ebdSxOYZbsvz2ISiL/GKquJqj6oq5Xd7/DQ/OOO\n7nILT0fz6izbs97zfbJPK+xBAbHn2SzHpIztPieOYXCo2fBdM9Ssfc+BMkLl\nED6Zv33B9TXCoLtsWIx/zFkdPfKEpFI6GxCHL5RIw3U+eFNM5bLUfTX6eIv4\nw7UPTEkDBNJewywxvfCAVDH52FlCj9bgQYWCqjdrhqK9Wl4FCTTSm5NXci3b\nTSfx\r\n=Ho08\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCoi8mwrsZF+1JWlvxtCjFs6UtRbi4dZCWtqgqQaT1IAIhANChIQnOcPLjC9C5JLs9SLA3TQpYsI8egCw7v/EjzpSB"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607036154-d0efc3b0.0_1607036313342_0.2306045077529697"},"_hasShrinkwrap":false},"2.30.3-next-1607060525-a61922cb.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607060525-a61922cb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607060525-a61922cb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607060525-a61922cb.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Z2wOwKCnn9BnScoWToFJfpXSZiKKmiouKHlXaxvOLAujOuMpJUsaq25iJh87n6tj6cas3heahg1eOsIILmmUrg==","shasum":"d1103ae2d639d099a7061ec37b4aa7cb9a83bd55","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607060525-a61922cb.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyczdCRA9TVsSAnZWagAA6g4P+QAbyBBWrZLMHCUQ5/yD\nB46n93nETxISCtVVqRyrieMT0JgmmahdpDMB6RIe0kYGwYKSEFiIQBvzNKIA\nEvhonhKFk8sEn6F7c0IBwShyNMPnw6/TRtNFSSb4RrmASZxwxX+QmueFNP8x\nTgHuY1jaPh4cDsl2/xHCJ8te7bY2Bf5NCmOJQe1+l4KoGKLjabnQB8Njn6mB\nRmim048E+/BWI2JBtpkmViMDHduB9vUS4oqZy4nHhTXmfxZt1klMkrM/q9gp\nKCW+UfflNRUiEr27S8ZTJEInYkK9TJO73j6ImdBF4QUXOEDRLALoOxUvBL48\nxiP0FQhCK0oIsP3DJFxg0KgJQ6a2XnO7YdLtr+aBCUF37Y+RnkkY1WF91Xtn\nZzg4BoGVxHnSrKym7DlS+UggGkuQxt5xjMJ3Atj+W7a5IsNm/L9i2OLBU2Tm\nQMYMabE2xmN6i+Bzxe2B1EKb3IE8xMTZshiYichB4IetDP17iZDAhua9z4W1\nKnAhTael3FnIWU8eC+FaTjJo6CqJGFWpO6/vuhl19ZqkjpkgynMb27eE6llc\nUV1TZBh5FeR/o6kBiEdqGvIB85qfr15oAcBk36NonKpEqV4R2kCEzTDwTs+M\nmfdjJRiV/o8wSbF77vX/LSbBurN1eXY2NxaasvcUm+iZ6VVGJWDINtjK2c8w\nWeh7\r\n=TviP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDVx1N1OROqDk3bUJj8SdbRs8Tg2UL5Ks0xzLikj8Z2TAiEAk5Aalim1gMj9CvWLjjnrIm3f3tbpGrrUst9TTSWGUqg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607060525-a61922cb.0_1607060700640_0.3955456724683313"},"_hasShrinkwrap":false},"2.30.3-next-1607060891-dff31a88.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607060891-dff31a88.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607060891-dff31a88.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607060891-dff31a88.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+cGocCD2zbu7YUxPy6kX5AsatXQHXaynNHg5PNQaEZdo6Tcfv9BTMwt5oT1OAJhz+n11IrQUrIgrjY3Y/mmpLg==","shasum":"40a568a7756b75a74f4ade03ebbd46c2d36bee35","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607060891-dff31a88.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyc4zCRA9TVsSAnZWagAA/6kP/35xSE+v3qsxE7vs2yL9\nP7DnD+jCfVO9POMDVv7AC0bjHa/U9YatfsrtF87XSnFbRSzV87LLBhO1akoc\nCNnAFfhfeWbDD0H6ZmZyCPrCByoLij7hD3u08iUhfbc4dPNxq+sjn0+N0RAq\ntH5P615Y5SyKy2WEZd4kTn2q6P15KwmQCT3IUx+8bb0QmBifG1qt0S2moDHP\nQT6ei8R6VPqA5KblGQE+fyuULqLY3+jSZPQf6raYn6adVqDnrgU5hxBv3Z1G\n8FJhbxDMZp/T1mfZu0NUg1fUo8cWqcCrYZMSnJdM6a9sM7suFpRPFMxk4Nsy\nF8+30MIlIfUcyJdvvQBNZqi9X/+8V3pxEDqdvD7d/73EUc6gvpNgd2MyRt4b\nK3TCdpgGliRAdZunqAqiXawZj8L2wThMrGw2TOa2Mn48kE40dd8LeD1gyRMQ\nVbGg4FnNtJqKa+qKjQjOtABXbyIGfiOQtTYwpdYiAtlhv3TAOb6pVw+okZ0L\n7bAYSSrwn+n8W9oD1P5EmeE76lcBRHOz915zXw0b565oEEArQt7euBVcoSC8\nUp8q5zku/sZ8SJEUW1524xEwwCHWnyp08kZ2+C5XhCkx26Pr/PqMpmhRnnAc\nNPbUy8Tb8QIBB5/QSbo61s4ip4pIq0uQbM+wBbEiIFZ4VBHG2m5JvJND09ri\nHy4q\r\n=5Ql5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgv2SvDtrqfNh0PGL6XbU0ijEsfk++SeY9qJT9BIv9qgIgF0esdnPx2oe417EDOlNOBTUwC5e6cb6hJ9mqf0xjKyw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607060891-dff31a88.0_1607061042534_0.5391115926760459"},"_hasShrinkwrap":false},"2.30.3-next-1607063086-6a4f7824.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607063086-6a4f7824.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607063086-6a4f7824.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607063086-6a4f7824.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FvjhtTA3umRdhQI/IA504eJGD3dEe8DZs7RQNcvfNcR75yexaK9s9ZheIBD8bC6jyIvLKrXbMBkzDNLATYAf4w==","shasum":"c70eec6a982712e2a4f02de718fddbbc21cfa813","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607063086-6a4f7824.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfydbcCRA9TVsSAnZWagAApGMP/jgBPjA0CfeLMxQJgS3N\noOK0y64ydup8dhE0JGKcqivT6ChtcSpNrq2j9GjROJeMnK/Kz1Cxvinlwhwo\nNFnEjs1GfNy/nPu7qZKFEkg3oezmECLEl0zas5S0JFqjpBsU4GNoBOgSPFnM\nBtFxFxP6mZum7r8u5GbWugB0DRrz56ZXGVoFg7iVDkZz/J3XXsp00kz97BH+\nHdbEgp6we5ukcaGnrWGTnxqSjdm9X1PqSwCH47biveFfTV/jpaFXaXRHBhKs\nIfPMRjZTgWZYXPmebv7/QY1c6XVde1o0mPGF6qb0khuPxZWucZCOaaoYrtTV\n/p+TqUn/65yjTbB+/4rktLK5uxy0/iZtCSFwtsz6ef2/+FVvvjYRbamu7X+d\nvcvkR/BRpLZOduNoylIzZXIiujVL8Hz21ewoNlpch/7+hGMCdsxNMBSPbrEv\nVficxPrxORMkLqkT+c+E41yHQpoUNX6jk66jfCZHLp/8SbwpmtYtoSMctwSu\nTp9ZQCGS9fWbDxnUse7gq5d79wKhcZuCpDIIsQojOwsCCcW3Psin5Q2jNFou\nglX0mMK/ZRq0g/dCxBijeHhauzAabw17k/0/o9E1sK/c2tM3N1uSqKT9rrjs\nMHcCYWEIFbXio8vd7FrcRM7wEuQRgVcHd+fii2AKlyfrzKnxubjn+N3T+zgE\nUtho\r\n=Rm2I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs/gUmqJFp6wIpxlfSoX86ZcPblRmPqbVU8eEKUkUpzQIhAKZlQvKUhXuE+M6kyWfhrOpdlAqGVT3dntt2NBAvn8tI"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607063086-6a4f7824.0_1607063260138_0.21964033538975203"},"_hasShrinkwrap":false},"2.30.3-next-1607065296-d55ec1e5.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607065296-d55ec1e5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607065296-d55ec1e5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607065296-d55ec1e5.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KW6KJ2GzarbBevHlmLro6HpvRx/FDCcPZTSozaXbN6mTxJQVyCvIhiCGjx+lLuU1zYQyC8Cy0MEWGMerbITLOg==","shasum":"e5d54d82900b27e6dd8e6080b5e73af5a919c943","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607065296-d55ec1e5.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyd9wCRA9TVsSAnZWagAA4HMP+QEJ2eYrHl52c7Yy3Wie\n/RurHJEYKkDoXU9AgO/zTqCBqDficDd+0x/Trt3Y8kCUUMIXuRFnrMduFPjC\nmmYU/7ciRhThzJTYPhtkOCEUiQ2kZhcCnzlTcwMwxSgdezZNc0hTqU9mO7SE\nCJGzrxBtQSWp4KZIx0x1j6gqjMfNTBSePJRQ+0wjblbNtSEI1dpM3y76b5WN\nVrcxhpmtOER4iUgYlvNCD4lWfowxwCAIcs2GpLQNpupdN+yfxJTYYOXKKRIv\nTZCWhSVuFAiGiDbq95SlYTEIpmkqCtwIzTKV50lCSuGZuqyhcFVrDVdGOPQ5\nNy6gPXnqwTqkHw+mDLj3bQLfUJZqQuHYGCZsjYdSVe7QE3d+9PgJ7OXfrrmi\nS0KWbmcgDX3GIdZ4yzHV8EwGNRIY3Owu2XeeKczHHRpbBJy3adql6iypQiLS\nAilChKIXeTqgFXOLF6JsbEeQpUuv3ZUg2sJpYMWToxBT9QjCYGmzXcFJ/cF3\nuczhzWqol0+r1MtXaYyJUyb3QeZZUuu5Y0PlaVK8c7mIZ29Z1QpxCAlK0z5A\nLU/cqd3qA9y4FBF++th2wmhzlZ2Acmy3/X//J/G9mG5KOYxwqvKn7epeXA/j\nid4fAnaceAHPRWCACVrBAgvOEhU80WBN/2HXd5+cjsPuxXIV9EumQ87HEeKp\n5Clo\r\n=uEJG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA0fi0beE64JZcOHYfbW5PpGo+oEX/eKKTbRnXRTJuk1AiBqCzlOeW8x0ofmJRzAvzIEsVUtYcBs+rZpj1X2pEJCLA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607065296-d55ec1e5.0_1607065455416_0.9737244697236274"},"_hasShrinkwrap":false},"2.30.3-next-1607090686-aba2ab9e.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607090686-aba2ab9e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607090686-aba2ab9e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607090686-aba2ab9e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MHh60Y8Re6GOllddjDI1IK4z2oBww0HGmKptgJfmxCPIUg7ofGtoEnDQdSObl5V6Ir42agpeuozEPUEzBmyReg==","shasum":"6af96badaf3c6be67c978bee2f61415ed55f6448","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607090686-aba2ab9e.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfykKbCRA9TVsSAnZWagAAr0UP/juf3zfZOkXToy/ZdvS3\nWN3ziaeGrJ3qnBOcIpj0u2pTpIZida3lSuj04Zk4+ugYqs8SJgB5+ZLPu3Rf\nPmUlmx85Kiy1Kb1yEBTT9oxzYvhM2Yzq9fd9vdMnhdM6qVjVq6Vb9elhtqQS\nhV+pcrLLasGb8+RwOph4ApKjf2s+sshRReTmwUp+Wi0pJOHg1rwltZFbkBKb\nuxnAsM43C2MgGIo65ZCnkydVpkk0oZoTna765iDbWrw69UHyk8C846GhNJwZ\n1NCInkOYGKGx3tZggqjIoMYQ/+Td+Uibf1YPDxam7cco1Rd1DXEpbEgyGxqn\n1VBsIpheK+syd6AIEazzJQixUa6TkfhsKAE+EcsJbgwufb/EQ00pRjgTEAgz\ns/KQSkVQYcvCQsWEyaE0KZ67Q1fL4chYB3M/YNgQbEhRgMSwUU1Vo3EAo7R4\nbIqbNWJS84LAcEj7xNh54kyCt+MppyEN61neC/CKdK/dFXrlvAXtSQOxkHs7\nPb58PHXF/IIi0+drwPJOcJ1PyTfXJDMVijkueg2s0Qo0BBqvcA2UfE2Mm5Rw\nEA5o7Nfio/MmjJJfYgkcJcmJM2pIFgmqs+drkJ6AeAV3uLb5FPj7vkqIf+fA\n/gf/fioagwP8swiz1Q8/12XSQNdHJLXGppi87cM1bfmmjPKysUwi1OJM1T2I\n/EGb\r\n=MEmz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA7fl3PwgW72+keMIbLfEEWwpCTH8LHI/PKVsZSnk9UNAiEA6sGIj/BVVTIixUqkzDTVUeMdz+00h20hxohi45Af6uw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607090686-aba2ab9e.0_1607090842621_0.7311105710427035"},"_hasShrinkwrap":false},"2.30.3-next-1607091445-721559f8.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607091445-721559f8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607091445-721559f8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607091445-721559f8.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5KOMZ7H+xBKbqiC/pgxHxDxfb2YqsBekV9xbNaqxx0AxQpggBTglABTI1G69DZcQYK32D2dgFIH43oZ0zVfatA==","shasum":"5caa66614d3144ef270dbe5a7139b9c427f9904e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607091445-721559f8.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfykWWCRA9TVsSAnZWagAAfqQP/3bcXORzwJAQtKMDst+e\nWSOxtKKW4/IdiwBI1109ddtvtsLRKRmzDNJu8ACvCDXciGFuvkvifWmPoPuT\nXHjvw44VhubzsD5DEE9DjwX96ip0vt7dsP21DZJs2LizdhCptaQ1lhtfISOn\nrkwuNoVy1UhVawCCb4Co9fCH87p2PKqThmq6QWILpINNh5lka6vIdINBKCBq\nj8w2q+BjYuoHisQsTDvtS9JQOrEXY7Ab11dKFCThuNFbV/So6Oq6AdGh6xcy\nMmNFTUjw6x9x+b1eQGJZJtscsVL48w2aLBq+SKM4dMxf/KjWEeEOf2GQT0d8\nh+6PzapWyOMgUYqdfdURUz8vZETrEYZvK+ZV75dNFLyyEJTE4kFDFmJ79PYp\nXZfwDOC+gnAIcwR27Hn6pMcScpYUzp8asQ1N0kswuAC9VUJOruju1VCgIAuI\nEg5kJNgE/D2Q6pQI7vTsy0zEfUvABO1EdiUmWOTbMjBU3NUkTFRxxP16JBUg\nJ/7li6PsFgNTj+6Mz8BsTPduTn9OtuKJpoVMmmwnP4IRhwkdaPGl6tiyPHrs\nxRPbo2Su3dQN8NQpLI8v8+YlepMe07VYoVOY4G6SI+dJuRdle4t1GGdWDxPp\nCmcErlE9R+h9s5/7J/PCeLFcUOGpZNDQQ55h/gQj0CYPVqfULqyFO8pD1d3L\nzly6\r\n=+NMe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGgM0h1g1ox1mpOzWESsJ4iYDgF6h2/o7R4PIDkvJeoqAiEA6NQSYLT03fXJVvvQWJNweiyPGmVTYNXuCqWGfRGzSno="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607091445-721559f8.0_1607091606039_0.2755384532677505"},"_hasShrinkwrap":false},"2.30.3-next-1607091887-579ac520.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607091887-579ac520.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607091887-579ac520.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607091887-579ac520.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-58y9ecH07Fy699yq9u+b/ieGxqTQfjqxTJ1YxrZcbZvyQuue+kL2travfX1lV+Fq+BJ/afl/UDMu4qxNL0QSXA==","shasum":"2bd44d8bf5ff75f4a9527a4143d7c929805b1a39","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607091887-579ac520.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfykdMCRA9TVsSAnZWagAAI2AP/2MuexIkymioycQ+tvGA\nza87Mj9H7GaLd4wNA8jdXeA7se/DPwkXCLHC0UUfoZJ2C2SLwcyfUnIFA77G\n0oF7o2QxzuAquMpZo8BqLtOZKirPBhJTwmWJ5mZroyIjF0S1bv6pzYYRFF1s\ni6tGdqFlO90ocpH5oN7S8lnSPffFyVOG25EymxeMYmdp9eCi0ywaMfmSju39\nZJQKzgJlEdKLTh66aNnoGH4nApFmLGAWG7jQIC52Xxw8N8rhqAX3pXpz/V3x\naibQLh4+dYAo9eMbXHG9euhr6wcXKcGnQVjQZAJOf9Z1k7mVFafhhi3A8qLI\nrBzjCIlhkjY1ahXBQg3laCV85QwIVHrWSp9P+NRRMPx8W9lWUysz/SyxICs9\n0gSYQjxlMd3PvM81pWhZnzmOyrCU9oKwmpEZLywM2wKIz2JiNHJKOp+9Guz7\nJjsi4G/wadt97P72p3jxDSCLxUiGDeTY8AErB+lIegbj2TJdifwK1HDaGiBd\niUDftYY4XMUq3RoByqkpCgc5tcSUyhfb3ZBi2y96wfWy/r2zDegiBOqkFe1N\nX9DEaqFfEvNrAXeFRqx1kxEpySsY5TZt+40h3AyzHyi2pWaYvRxboAcewxsB\nsKXF32CLYIy4ew2ln51BHpyE7JTw4nFD1DgiZsIdwFoRfAI7xYOftic1FJS1\nuN01\r\n=qgMQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfR/JaP6A1kYRfgfYM7iPx+w1GNrJ07nixcKxGrJ7hyQIgO74IL4f/P0MGRMZ3zJkjvR5DXnFZg0TDawu5StVgLgo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607091887-579ac520.0_1607092044369_0.5021641893162285"},"_hasShrinkwrap":false},"2.30.3-next-1607093069-559cca3e.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607093069-559cca3e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607093069-559cca3e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607093069-559cca3e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zWXJOOTRgdNAW9zg5qqC3rUAiqew7E1Vu1zJIA3iosDLiiAABKOBIIiuRvrc54wJWxzRxyKD1cwQPZqnocHSoA==","shasum":"93cd87138604fbc7c3b18d8892eccfdbeb77ddc9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607093069-559cca3e.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfykvpCRA9TVsSAnZWagAAngsP/1pUnGUn405vd5sXufor\n3uKVaHEHnHKTTLBJ0g0VRMhIGgDaPyCJoONzityiMgKsVxomJltnKwDzjVbJ\nRkoD12tEdPwwxUWGGGKDn8kwp8QYuxK2Ed7KffcLV/GABlWIVHP16/o7abS+\nCH8BLLhdHrRvzJojvwiGx+PW48fqRfzRUJj5diRPYZkUZHPEynsDhq1oWv2g\nn/9ltN6lY13Sjz5M4rxntTa7S60GLQDQ+iLhnw5eUbkCqDwcHfpAXudKZoPB\nF8/uoasAI040K9MgpEihtgHCAE97myDBQ40+VvaveVpR4mRUAVn6967RbY7a\nlFFIdPPIQ9tq50iiTct8pbEiIVq2H4O5qzrtFylVfFB0Pt/xvxdWZ/1rknva\nBS7Uc4gr4CWUnemQ18jRmlW1F0dr2I1pkHkmr15pbIfV9+J/PZkHWESUXIo3\nLEHEgNu2tNAGzgeeMtkBy/sLXXlctOIFaklSUKQ5TVRjet90IFMOJ5hjCLmE\nh3QgGIoYKKX/Q1j7/QOW9izg3e/v9o4nYTyKLvEbTUM0uGWHJJoG7zQRo31j\nr6xqqvP3J1Iq13dkB5oOBXJSUlhGs1qny6T0owcRJ5eCJ0xKHf6P85yEXN/j\n3zu5RFDVdfNjb1wr2MRgoJbOW5iGu5DeDYBnanem4Iza1yA9ZDLJKJvcYJir\n67rL\r\n=C8r0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDI7K8nWVD84+adxef32CcLook5DL2c4MilGC6eJqo0zQIgMbqFUDF3+gbWbyrwKPMQrTBI2LwVK/3wL77eMOaj8jc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607093069-559cca3e.0_1607093225098_0.9233829980398651"},"_hasShrinkwrap":false},"2.30.3-next-1607093345-579ac520.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607093345-579ac520.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607093345-579ac520.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607093345-579ac520.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-H8Vs5dnTb5CQDf0hs6yjyMuLv0obsY+KEt/CGy8ST0JG0qzI9+h4fw83Kf/i5gTMM3ba723PilB1gZRWqMT4Zw==","shasum":"a3e66e9e647228481da16bb28d43a5e7f52cdcac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607093345-579ac520.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfykzuCRA9TVsSAnZWagAAgSEP/10m3Xmw1mizmMuWjzTl\ne5aoSHbsJ1Xc63n3REIBN7eEs4scZZc3hRaS16BDUFq571pNFO3+6XJWVE2U\n8QSUFwx2WmOhmddyirdAPc8u+gPyxbVqMdNqXCoV4ES7N5sKaRGK6tj8xcAZ\nyZhjfCMsO2E8R4xvDsmB6gZONBZpgm5DXhMXyzZQByqgfOwmeq4eOXOv/vwS\naopN++GB1DWrDRmQ0YkEBrhX2CgIR1poCBCF/iFgQKB5uBCEwiNJiZW1pvl+\naJoYElxAVYA3o6NtHv5yHtVGGfET1Bgi39zF+xcO4P39g7wHsMDhoVP41WdD\ndpwdd+DAJK+SJLCCc+Os1RFX9SY4eOMRK0/7ObNTUjYYvhZi+8qMNgOpzsg5\nTzVbwi3Wi3FpgXHY1TX05azORvkIvcVuBA9Y2bhlhqcnkEJp3hrzn7Vy0SFK\n19DxzOzZKbhB7hD1GdYS3zntAaK2PhutJcL4ltUPm6o1Uc3acrf6F18PmC+G\noqkMjYqmrm1uLToz9MRiHWuKUJ7+qkkEvsmzG6kQRB72fQxdKJ+VXj+sPRtt\nywWlWhl5LOxlo3hSTTUPNtty4zjh1LL/68LGDueS1noK7VZj0sCYXKgTtLdm\nPa0bPaUDfNIv16I4kCUmhcEpHLyecSYTxgpGgstSkIp4vALKKt8R7Po8a1pJ\n57VL\r\n=bj+d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH68F9VEndrBT0Of9BbO0qkjR5w/VI+Sky8B+a3OVSLZAiEAxCGcDbv4m9ffFbuI/pgFYBkJXM73AFGkL2hUE9gdiYo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607093345-579ac520.0_1607093485644_0.18082113773394526"},"_hasShrinkwrap":false},"2.30.2-next-1607101969-d9826209.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1607101969-d9826209.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1607101969-d9826209.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1607101969-d9826209.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ACJyL5tNE8uZDZEnvlde5FufDDrmFvJCZQ1k3iRuIvflar5oSqewhe8+XTosbYcaM33G3kBTHe71Ud+2gvwpEg==","shasum":"fdfa8cdccb135f6595ba0c4459a9864c11583d01","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1607101969-d9826209.0.tgz","fileCount":58,"unpackedSize":141293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfym65CRA9TVsSAnZWagAAYtcP/j3TWkHJnyJX7AN8jLq1\n199A/6IgNb/VRjmJNZjoHTk0wOh8RfJa7Gt0ygMgX7YzXULGQdRNi9QDT6Ia\njDJAEojHe65V1tyQQ0Ab22sKTV12ElLDUiPFV2vbMX1lA31CjcS+b+0l+smp\ncXFTDYuG7DKoc9YfnehwfyGOkr/MHpXuOK/Aygece8MCSXdjGaxKaphLMO+7\n9NGM+g4ehJg1/2+vqWPPHjnHz3UFHa+ExAejZjFNgMA66MWyq7SYkv/2PBC7\nCPnYBxboimHgECL76orU098jrlvgylU/c214eJfHdN3ABptrkbAMK5QOXbqS\n9nQLY47ZaMuURgbs4B6XJJpJ5IrrdweRBGDlTcHeHHsfaVOU/1HU3PalFCLe\nJK5R0GtdxCSozV89bw75MJgwJFhFFZaxgdytUxkz1JXcumKEimu+vDD54gwd\nfO89dgedqpzIrXhDJVDgcPm+qhlE/zMSGY+LtCpGEFiZ4epDAmdMC9oxxQ1T\niFzn3iN7gUfUINg/3D+2MUDx7vOR6IaIjaYwKF/VhjDrC2oTDvhOuC+dofqt\n7YK9oewWp868xHYYiUI/tdcqYbG4z2ZIq7T3Ju5UDXDZm9i0RX/JbkX4EUWB\nvfU7VlVYi7IEA0WgtRtUtdecYuW4AI0Q0whYae6yBRmvBxUdeu8hSEuqfff0\n2hkr\r\n=sxLr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAK1UrF/SVjIy50AVWl5g+UIl3zZHT3vKS5FlObI2rfDAiAgR8YIoHCzu6jaTc62rRzjEmZ51r75BhW9eM3DkBijmg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1607101969-d9826209.0_1607102136890_0.031270232438889156"},"_hasShrinkwrap":false},"2.30.3-next-1607111481-cf5d1333.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607111481-cf5d1333.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607111481-cf5d1333.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607111481-cf5d1333.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yysik1CmeZH3KUSm/H4pCZqEInB083jJVq7jHbtsMmilK2HjsZy7Bk/mdAfCf6WuSr03F9Rk+t1ab7O68CZwgg==","shasum":"bcba7ef329648b4595070f71061dc65a19e14bca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607111481-cf5d1333.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfypPRCRA9TVsSAnZWagAAay0P/0HKfyCAg2vZWLovH3ud\nLWfTr5kjLxjob5PxTrc8NGNqBsRcuxvGWMCsuls4iIDJdrWnjGzMHnrbJmzN\nEZWEkakER/6rPV2w8a3qqUN9n1fzSz6D4FeZaQF/HVRoIpUypyUDYccsth1e\nOvZeAPsakGpKrtcEUOtRX0OHwx53qOYvMlNGUvGfPZlGcDxb9eLC5wJNdMFR\n6ylf68zVCeAlvx8h2Ox9IpEJVrooEFSLqUtbcWcLRl6X0feKpijS48h0wQFz\nIkWUCuZC07iF+zAFpcDKCjpONbwWyL0PWgy1cKHEjWERkUfUQG5sDN/cPeSl\nCSbOnhFJD+aKSsOTdSaIt80+AAEQ9BI24l1tUB4vs2WAQHq/1+HHwf1RT/HQ\ngq7s+1kGIVQUohxACyqF7zzcVHpKCe95tW/SZdCOPGwwjXR+/mo+cJ92I0r3\nPSvtzDQ4qtPxXvH6lX8KC5vxwBDu2zod1UoYfmjZFX/QPsXD8AlWYTbPk7BA\ns/ZPzlOvomF0+WzhCLgdmwUBWtwzKCGhYB0qo3Ea9JsIjdW342lDBqTWNMP9\nBO3ICmKE9MrkXD6hQs0YkJQk/wxwjWotB38mgRUz2gLpr/NeRa72zg+vWc2Y\n3qKDV8IhphLVHJEdd1mzb/raMo9ldHv9Dvl1IJKROs/+pFcb56SnuwL46dom\ny88e\r\n=GEen\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0zDRb+9Z4sP5MSL0wyhlQIoEvANXzaJkmtju8pIjgEgIhAIzruagVrZfY5+dHEEyLCJ6H5dRrt4o4cdWVmyybUVue"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607111481-cf5d1333.0_1607111632557_0.4283128568753223"},"_hasShrinkwrap":false},"2.30.3-next-1607339118-47482c77.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607339118-47482c77.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607339118-47482c77.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607339118-47482c77.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Oy2+fnqkVx541LtbxTXP1bSQsQ0zTJdHLoxeVjgKL2riFLO1T5aDwr2PW2gPQNrBsec3Gwc0AJ0fBe4+K6OkJw==","shasum":"23220a2df3a5dd9bae0370f822ff89a2828865a9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607339118-47482c77.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzg0PCRA9TVsSAnZWagAAgDYP/j8kNLPzGVZ1D/p81PDm\nM1CXwOJb3jvG1M4Q6WC32cmWOLs2diqBCNaRNVj2j2gysN4kvg0e9LtcPIJR\nPtjyQATaGheNnLJdE9IzhSYKv4PHTDPIffpg1k+fi+vbzaLq0WunQtCmxVxo\nTlBt457fg1TQZWk7Zx3yZYkwO072YdAJ4GUqmpjajoQXgYLQweI4lHNWq+Gc\nM/H878PGSlRoNkrbz/BxNSC4pGOUjfQo9CI/ojALM0PCMgrcpjKeGALkApcW\nURkfKGc/krDimvfnGemPK1IK+Ri7G+AiWOtVJryrjjM2u4UmeB6cvd2KX3tE\npeRwQ2ZJLVcVwUm3WH3Px/aJl6MxDhclgMILwGjW0ZlkAcx7r5Di70xtGKMI\nyg7SO0mmpM/Xfwf0g4OyUqG+PLVaMd5o0vk76TPgepREMUyVV2nRx08zgbDs\nFD79TMFtCq/5kEzWJCsnU77h8itXdnZPu3sAie3EKZoo8ng+O6bq8rWzPbXH\nScL0MXi82A9jF2pAQS6FD9sf8cWhrKtlLzfpHO1TvMh4Q3QZSturgRx0ftBZ\nSvQk4m4xAGj0AR57VIgOJWfnNTABKQnJ/Do5VcE+CrpDemSziNKHyRfwGe5V\n0gu6sQ0d91twR8n0Hth08DtRTqNlS+mLWvlFhKKlx4x0KF3F6SNdEdJU+xYr\n2oTL\r\n=yLv/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICS+X8n9BoIQ4oK3yX3m6zjmJNX5ZoP8NOAsTLsWj+uMAiEA07jCo+5ZjAyJ9dHUORhscelNksUpTHiN+6gNVhrXr58="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607339118-47482c77.0_1607339278520_0.4553172846278628"},"_hasShrinkwrap":false},"2.30.3-next-1607341377-db21a60e.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607341377-db21a60e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607341377-db21a60e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607341377-db21a60e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M4V0xWm9lDF1rDRMuxV1dUDunv8T4VvHP8cgNYuuUJF5v1Fl0DP0JDNb35kTHpoAR3Jm+1c3zlY+zYwu8ZxBAQ==","shasum":"077cd24beaf779f5a20fe75590091a4b9b668b9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607341377-db21a60e.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzhXUCRA9TVsSAnZWagAAQcwQAIvH/5iW/M9up9YM8JUz\nMo0UvzB3gf+h2USt9we3ys4gaV4hZU+RvxzXIycILMxRcOlvgGb7dtEpthCd\nmAp0gyz3j0lWIxbgomwRaECeoBVgarmblswpmJ/vhvrhcab2tv6LYO+7Thsp\nA2uuf/PCdfWzI3W2SYkY+H1YkJHF52Vu8dyj/p61oTaUaoj0wxKFjdtUtz8j\nfYstb2dMNmtVAOKJN4EatJhzHQtgrUtpEUTVMZQ/7FIRRQwlKfRuQRVR4sPN\n3ed3L5JZrZZHKhky3oqQa57I5HyoM7rD2Mc8e7zd3sLV+HjBiXL5kPcTBOmj\nFVuWabBkb95gNstzrq0NbkiAAhyoAGcp5y3Q8UkHs4Mp/64/ez+gO35IqQFB\nKhee0IdPIVvqcgdnrMUNswa0qFKJYbwaYf9QVuPEdQlYaetsj0E7nTW+FTCO\nEA10F6BMdjH8AADzPuYudTPrZmqeIo59UpM07ttZVRe/zF0mz7BeodQBKJ1v\nN8+45nI84mNfh99Kzhll+WmzKenKqBF7PDi8gh44nVRbseciN+R8jkoBTyS7\nLaXTXAQy6sSIQDZwYiDYw+16psnOxDViN3xKZCmB2OUD4Upwmvm6yd0mbfmK\nOoJeqy4qDTgQsA0BB6M4Qjr3C6QvMleogObhv+JnHNyAb30zHyeVrVAgWxLF\nz5BG\r\n=gaEr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE1DBpoDeaxGH51TkF6WJGoXllRnrcGhhAN0XVGnweW8AiAYngR6KSufXJYULWe6RZ9DSMHX8D3WGKLgVkjUV2qeQw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607341377-db21a60e.0_1607341524218_0.5666130620662937"},"_hasShrinkwrap":false},"2.30.3-next-1607349437-49cca36c.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607349437-49cca36c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607349437-49cca36c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607349437-49cca36c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OCmtOVemX9oiKARkenDa3oAs9DBnJAAH5Rt3zlMte3MK+jF2g7D/3aHoUpduzKk08Y1FFHV1xmBfl87uwkvHlQ==","shasum":"24e6142df490d31f5bfeb5ba20feb8e69787e08a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607349437-49cca36c.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzjVrCRA9TVsSAnZWagAAFiwP/3aGJvGVRY17HWk4ycLg\nu/VshkBkF9wANSAbWfm+wE4AA8tmz0T7w80qEVpVU/UcEosaKyDwaA75TP1F\nK46YtdDYgrjnwfycI3Dd7w3sh538JjAwPVvrw6whxtG5JNMGN5EADfVU1WIc\n0er75R02p1vIouJhlAgdMH5kRLf6NygahYw6RC5EBjrvaHCk/V9ed4lbFvYu\nVv/ZjnLttuhR1bXxN5HcpsbHcEoXMf4GLOX9x0/X/zmZBjZ4NLbkHLUXpp/c\nXNBvgaWQlS1LA61JgEXpwdp5ky/02YbmHEsXYpfyssRogLfP3Z+K/S7eo2Aa\n8Q9pNuHdgsdIRCs5vnINjflM14e3dLFem9KWprxO3hPiPKmAefmWD04ACkLU\nZS3Rp67OH7LluwBm7XzvqNVinuSUXn6en9C9/mLV1WzmzgGsZYq41nt4CnvZ\nr5HJPkFazAFzeLnxLSo9k9eoIp+Yw5NVrbhxbhZuyrmNUJSZX4Jzutarp80l\n+WXtvy1EdBwJfvba6Zha+lYcMN6e6zTM1ZpgXcMe/m202AHSmwLwPZGZ6Y93\nxEPv/BwTy7IT+mmYzYm70VnFbEiwMmnMtNOCrDI0X9d0CFk1nqZgm8LMMLmT\n+W2iY2DNRnWSVzPGZjKl6dvv+GwWinzUA1EoQ4naSkQnNXgzGp4MerKbchS/\n7TGl\r\n=C1QS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCNhgM+Et8xblg2Ns1CY7HoxndhfA7sOmgCzejUrpnrwIgcetwc+KQD7SNk1AEBmtqQcU13B9AF6hrNe553gE8R9A="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607349437-49cca36c.0_1607349611115_0.5224167062841194"},"_hasShrinkwrap":false},"2.30.3-next-1607357734-579ac520.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607357734-579ac520.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607357734-579ac520.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607357734-579ac520.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-szvpbVsl13gyvUnEFRjdrJ5fYVDGspsgBbxR9+UCzEU17i4gsseo8t6t93uji7mEkw+gc1E9uikOvckbRN36yw==","shasum":"7b1a297d6726682e049973fee1a911b2245d4520","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607357734-579ac520.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzlXMCRA9TVsSAnZWagAA6+sP+QGi06QRxFfkE2gmsFqN\n9KRVOSuzb7yyInEbTXK5BSF5ZHfwU0LJLZJhSdM5ZXBtZbPISf4VU+5BxB2S\nvSJmLpskqhzI0FsB9kwJyUU+EMfeiyl/yUtjgCixoEru0Pz86jjRDW/6kXqv\nGKaj3mHRTDOLWyrS/XfEHfMYEV+bqWLsUb2iIIwBRvVAOk7Ria7w4M/vObBE\npEXa/NoEvucgK+dwuS+gZ0vZ/z69kG+HlthCcBU3Y9Pc7hmUCh1Y8F6DQUlM\nTcsJmyV4y9bJRxrr9pHw2J5pG/oniMgqETJOS9lJZg9aFTZ+yxo8QJIADH7C\n65UGzglHfN7zPyFxI3E6mZmw2u7T8NxiNnbZgH6JHdQQezWHya1IwAseXr+B\nRZ/i2IsU9VuV5kzi8lB1FcugRFvHlJAaOvpCZU8VtsmI0KBBEfxcKSVjjvFj\nE8/RRAgersGP45add+6er80lRbtRTwaCqCIySsfu4g0RtIA26wHdUnesb7l5\nC7Mb6Z0BenguQcY2gY7Pt2km7JfpsogtM2/w2KE+c4pDf/aZiLf+1LisF4sp\nWA0O+QshrsisY1mUN94d3kepoe2u+ngLSF26E9EtH5VI4KrT4eQCcS8aqwft\nMAFC/NfVXSwa1Z9XOFyrTmuKWbN+P7yi/N5YcL4jSHyGaFGPcb2VH8Y0iPtE\n36uH\r\n=qUki\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFc5UY7n/vEJOml7GFRZ4wrYn05qp90kpslBGDz87dUtAiBn9llg5KuerLuXLM0FDD6iuQl/GJ+0Nca7zKS91vV9Nw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607357734-579ac520.0_1607357900127_0.6565231597778385"},"_hasShrinkwrap":false},"2.30.3-next-1607359484-579ac520.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607359484-579ac520.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607359484-579ac520.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607359484-579ac520.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-l7t9pR4SDrCoeEKUyj4Ahaj8XLeTciUnZzjZDwjuCxgiyOAnTNcA4F2Hw+HYuK2RIxmRW16uhy2faPO9nmY3Ig==","shasum":"b41e5be5992352e943cd163c7be3512a182432db","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607359484-579ac520.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzlySCRA9TVsSAnZWagAAyIgQAKMF7Hu54sn6vdx0b4z6\nKvIeFG8TQwV2TeVouJAze5kn7BqRc7iNKJ4kjeainqYcE7SMdVjZAPZoMsFm\nRJOTJ+W5w0gIFo2qMUI+wN2rtICudEBfaQ6pkNKb6mRabJDOdTu6Z6agqUvs\nCeQRcqMR0gVNFNQUOS6fmUXTXljGnWv27GXaVcrIpli4Eu50tILgyzWU/LYT\nguDbfb3RJmzYbcVlKMSxPaFVCgCbgft8kOUhMD0Xq9fgghqXWdLk1shZn8e5\nYyNyiLAu6WADpcZBGDIrxKkzHEVztjwMYaNnXJGQ2yJ4s9dnPBhN87iopAyj\nc13iwpqaF6Le6qhklTR+zv2EJ+bTws/ExdP3J4/LAyyFlh6lO9d7YnL24zOg\nyGj4OLIjGsTcqvvpx1tO2Png36VWVt7ow10On3fPAXUg7WLfsb1zZi/UtnbC\npJld+LfPuliy6sEa0Lb0MDLAJK590FQ28mDXOevcsrTDxPcE5tfVbgSX/ffT\nwZBb+BWynxbYgXVsIi4IhW6QUI9k5sPlHf4kY+seCRnv5njITLedtRlafJOc\nE6zslNyKlqIpY5n81SANN+dy3t98CGqg+3kDh3UgNH5w6F2K4eMzD5WHFWHg\nuNwRKTLg92l8Qx3uSot9OatwQCkgNWbrHGHIQv258dQMhCaMRu9cWUeuZFr0\nAtg6\r\n=cmeF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCas9roGFL6PzhBPdRIeWfk9fhtng4nI1MRsr+Wn70mQgIhAJ8NHV0Ekc0ABKaQey+DR6bAQYoZ9vLZKxe+roesdoKu"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607359484-579ac520.0_1607359633587_0.7167331691935499"},"_hasShrinkwrap":false},"2.30.3-next-1607361800-a7da6be3.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607361800-a7da6be3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607361800-a7da6be3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607361800-a7da6be3.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XkVIm+A3f8teax1hRc9sXsQKY+GUG28VW1cPQaALhsrQjfgM6c/3uOb1cDa0RfmEmhnpVnjzq8YuG/TYjRKIgA==","shasum":"4bc4b9d42ab84662dfae3139c0660f23af4d0f49","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607361800-a7da6be3.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzmWiCRA9TVsSAnZWagAASkkP/jVJqLiH74GuSJ3OF7aC\nbcNhvyy4ITm38LOfNQY4aYo2wGFlTTjbKqhhQ5+1grvB15yhgAhEcO+2GqkU\nr4KqYwwpcJk18GJ2ITSNdrLg4gW1OZTOXY+LIzwo+9FHrebVEAgYwOMPrrO3\n+HG2Z5aZkspVJve3f8TOqH72Wjb9xJmy/Xw9tRUES/zEOi4EnCq1CiCqf/jo\nWaUs4EQ7PsQnsQ0IUTiOAAOnmQ+0N9au2XYC10+37Y7vJ488KCRf8cCPlY5O\nZ34SacgFMcBNeS+C0dKD8aNI78oPAwK15TUaFbyxGETtBOmbWnUrqd7gMvO/\nasw7NVYUtTuifSfiRvvpBWE7aaLt1g5QG4Ih9I0gfhnksAGb1tGYFS3zGQYK\nQMCg4LGIQWkCtSC0Vs2xuTj6z6mucsVenRIugmqmYYTCRmcTNU7L1tZTBwMf\nTih7DXuIFR9ilzARxIYpiyk2LNVkwRhiqIIwcv5KCSuwJXQxi/Tmso3Z8x2y\n3B6T4z0Q+OhWChSDIbJvdYllFIa+cA6ZX5ICUQkTADtEMTfydYEx+pi6p5IN\nQGoY7rujnqyM7ph9af9gtQ39M1kkg4U9bySJ5U8IVj7duYEJa8hVYI74OCaQ\n5HlHtpu8fh+FNHnQOB6n0xwV2+XdvH7uBi1eHJ4E8zuRivsJBu0KJ4T0sGwf\nM3mI\r\n=cALx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFr12yxap8EkOrV5O8gZxfG/sIhCsYWZtr0Ec8FCgCfMAiEAtTyU/kzPwvvqrJRe9SOHMGDpc1AFlHRMbwnY7mcR5eA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607361800-a7da6be3.0_1607361953639_0.02853625003746929"},"_hasShrinkwrap":false},"2.30.2-next-1607367706-04a7387e.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1607367706-04a7387e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1607367706-04a7387e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1607367706-04a7387e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BsfySuhfxA4/2611vRzYTQQ31PwGtoyX9vYWAf1a1Vwbw+UT+e4rAQBUAMbe8u2cj35qmBHv2URZGPt2r73ayw==","shasum":"41d6dfcfe6ae5b854d5b5fc46d3477880df5d0c4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1607367706-04a7387e.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfznzpCRA9TVsSAnZWagAADWEQAJOcTfNPG3F2E6b5hWvD\n5e1sAYPeBBR18jyrqofG+0XWYbCCwvzrxW4YpVub5yw72ZLY078rmkAMqf2H\nq/2nJJYaCO9Zfj0an7HFIDhiGpNEXNRQCqOZlGMzoywH18nqiNxbReD9txGS\nbwyAZyS75AVcR3w737SMflviv/ehUjl9NyTBaQhgshG21mJmVRN0WLFJm8u0\n6CsB1Y6GjuImFzBm7llFMJuUFvyF/k4/lB0A4CFCxNS9F4MOICByN7XmtFML\nmNiuu4EHBF7XKrcMxYEJ40//oqNlpDJB0QjisiEHilof8WeE1sK6k0ld5Kvg\nq3gThmbXeqoFPF8Y6UlCVIkiKvUY18RfFhshqFCOBtqCncXf9M5UKlBGpIhw\nFBa4vAPO5JfLl/uEjBoeAQ7b5qsRLmA3Y+7jPjHVPcSg1ov8xY12J401eevp\n71rKpknErpMFjbsFSeCIJIuCxwQf+x7vAOwp0fmFWpY3clL5EoGQp0c8xzb1\n3QE3eB6uxTQLzdQFrUM2n2tB87CpgGIlMZqj8i1d0rzV4y5h3gsQ7RoM9hK/\nZReGVFqPnv7lRj3g4PBaK2D7iGHCGJ08wn4IWYjHPL2lwG/uVHjJjmi05JP0\nDYNlv4ZLG5GXtR5WDIjo6YIIsfkI/feA4NXDlLyQIzk7kDfI/NhhDlj7y+CX\ncafy\r\n=Ncgr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF5BmjLdK59xIx/lhaP48IbNHbtPdl6Ofi2pAeaoJM8qAiEAt84XUepgxUQpEgQbgQIH4sA1dkGAPEIe3krT1q6+qd0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1607367706-04a7387e.0_1607367913284_0.716132080554092"},"_hasShrinkwrap":false},"2.30.2-next-1607373864-1d1b8d2c.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1607373864-1d1b8d2c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1607373864-1d1b8d2c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1607373864-1d1b8d2c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Se+00Hg0o3XzeXhQQ2mrdEf431gvpxEL4pQiJP31XYG0fPSQNCL9HRWIp4fnddK4BnhuHks/t+F91KpxixbTJw==","shasum":"1e0e8add1bb1e92a9a2659182b00ee0fabc85b94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1607373864-1d1b8d2c.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzpTHCRA9TVsSAnZWagAAd70P/2S4/TlA/L3552haCX0H\nVueg5Biu/wzRTFWvJRX6bXzO7Z3voEqcvDmjGFJx8mFfmar98piR6zxG2Vbj\nloixsH0m7FQjjicf2cR0z0+8ZTOTCkLDtOMq8guW/Q3K01MxDdUizM3staxe\ns0mJQ/v9r2w67CpQBc6nJeWVRLPeZHiy93epiio7eCQ6SIxus57ruMmGo8II\nwDDjcXItHMPW4YxBZV9HU2MJYa1BQ2hYcYDvdyS85HD+PKBhbCqrK3BHxRGd\nFa9o2e/AuTuoUE7djBrKlgv3kQEyl+Gb5bUwVVRszhkFom0MCv0Vmof/55Cu\nerJ1MXv6KFXuORL8cqm3PB0dtTiXllpWEZnwu5cPkVsFjS0Gwx/2pRhBuBXD\nd2qdZnUSoefvBfK2jafjz3TcXcU+9vbTNLsSnW4YHwUR01Zmhm8QTTf1dYos\nLJg75j9xlCuaoF5qrxn1L9hfykkeozNcmUvUWEEPhE8BXhq8kGpc6bWAdvlz\nfwbX5hQu36J7e7z71jr4ktoi5WRFg9Xr/1a1VzzwSCgY5+OS7YVS5OGdlu82\nY3fHCB1yQNK2pGmKh2237po9JbpucDdwif+fxB1UX5z2/+q1y8qwJ2ptT6eI\nHlwAJey460PivJQRNski6xhUneFkLmjGdVpfX7qiAgVyXcWd2sjHm4rzQ7gn\nOBds\r\n=AsTy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGbG3BWoksS+PXOaBrdgo2jvWcSVkEH8f8MJB0cF6q1vAiEAxIivP+6In9TqFeUVDLqGPX2tDywkbMDvETN9cJvR0uA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1607373864-1d1b8d2c.0_1607374022910_0.4548649425915876"},"_hasShrinkwrap":false},"2.30.2-next-1607377641-34dbca27.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1607377641-34dbca27.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1607377641-34dbca27.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1607377641-34dbca27.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jUtU8XvlaNysN2/y8hol1AqOcAWdrq5k9imEZwCJtl8mvu0AJ3AfkjnuQBLS6fe72z4ZUhgytbMMX+jRaFDulw==","shasum":"ef6d36836f38dbc6fb2810971b2a0a27e3a4ffab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1607377641-34dbca27.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzqONCRA9TVsSAnZWagAAMSEP/A+3fv9ityA/Zb3a9nk/\nlEUkyotjg0ezGM1OcpLwTyoA06nOLpmfubLcNLvecKvhk/GFMOY3mDWKAUd7\n1WY4jQuT/9yD+4mlxN88nHS+r9/Zhxp/mLh1YtHpae4ZHdDIAbHuEcXNfGNG\n/v00vXozgTZ61rjSQdeVyjv9JSZ+DA/Z7V3p1fvuxMLeLtDp8ySC9MyPttWv\nrW4iwlSXPvlWx1qJxBk4dMoCLN64HW7Le9wHWy8dGjRI3g1iA2ax7MxGSyFo\nqRrhlzMFrRmJaa+94rvzZjCh8ycOtXRltMEiOhP+PnZsihHp6lAJ74Kmof97\n5qTbG3FPzFwaadssjFrsrjrZZTn3hBsKvghUsBF7cVRyXDzUJ3lG0vp1aPcQ\n4aziLOucRAUFrlqwsUxrTskOYom6VWtRJcFBE82aaJ9DEcsHABQ2FO0dOPMq\nufC9pIq/2SkADiJdtL4C7B7iyorYTpt/+RVhdapYlWmDp1bEO8sI7mKw9Kb8\n9JL2885S/rTzGSRTwVajdSXMpBkAUVT2FStY2JIvdOjAx6pv9aRcUvHlUpvN\nGbSbbeas92huEnmo51i1Ym5cj09s5mNMGRM6VJGRE2vdLwD4KR7uZcEOGNPz\nlbp+AqWjX0yeLnactdvzzpHmSullEZwHh8q9TOCGYPatNb8g7TN8J94zer56\nnMcf\r\n=RS0S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAJ7B572awzM4KsEvcCQDjnjCKzzWjPm2MCkEHh0lXKrAiA/3evv+Zm2NIAv6ESPUa9M5XYJCILiYI8i1CZlqcinlw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1607377641-34dbca27.0_1607377804665_0.7641291149063771"},"_hasShrinkwrap":false},"2.30.3-next-1607433508-72cc812c.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607433508-72cc812c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607433508-72cc812c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607433508-72cc812c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-V53uSx22ZfYJ1PEvYAtFqxDnnxke1cuMBq5FhZkQJULw+2mDe5UpMiOiR5QpG0qpXFUjjqxB1eX7PFgDsV8feA==","shasum":"08989e85d4110742a67b010b41cbc6a6ec323037","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607433508-72cc812c.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz325CRA9TVsSAnZWagAAI3oQAKNKnw4luFhVX4xFgNeJ\naSSYYrapDwQCGJakPG45csGap5kZqzsa1K1E4EAaQwucQPvoRZNBi+uQ1qw/\nEf757p9tJSgylI+3ZTSHT6N1Z6fl0ootHT3Lv52G9KGnZNq1MGP3vFad+RT3\n7fBay3I1lxFwbtJgXAVcNC1R4+ukEkzdexXP63rpkAVnXVp8Dbpqtowteba8\n4FHslTK3rJAVfrtq4Y89Hc+VQUtO0j80PEzwWlg1wsQ/yyqyCClguBhlIxBq\nXzZARAy0hOYOsyDk654o7UNPovwfsGR4ExL2fsVTNEeYukPYiGngqEpOkCvO\n9mGZRgcyiVJeBXOQoHFyI1mvhTq0lz5+y6eBXpufwzp8jP5J1k0x7whzRnel\nGET3w+4R7+4P9cob64ZPPWk0xbb8qQ1OT1kVnhEXsQ4NwQDXd+8LFSwF1MzR\nPcDIl1bvvhWPh0541DmLflJGePQ/nPLxSbcTN8x3BjnGZgBbMuRMvCmXOQ0B\n+enTzMu3d9FPuQAOSqII7RgEHKP3i7E5fttA+W5hInspBOABf61VUXmiXV8f\npNNj4PabJ5rjej6Z+1UKcx4PlG33noynJGCS8hvjqqBgPUeGYS5zoUiekfMp\nz9Hg3I0k+26fw1cCWYktiXFW7+eg+XHF76RlSGZ+9GoeZWi7Ljc3orza87oV\nrwMu\r\n=T/aT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFAfPRx04hsv5JoXW2ffNEbVf1vjTREOG7gpGgKF1hKRAiEAj1UVPUy2QaFuSiOeVfQo8eY5HjIgGUzTanPh/bjQJxM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607433508-72cc812c.0_1607433657008_0.13634303696976846"},"_hasShrinkwrap":false},"2.30.3-next-1607435329-8dc01657.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607435329-8dc01657.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607435329-8dc01657.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607435329-8dc01657.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vjBbSF47PiRaG0eWs69yGwcGFhjU7s8VXcc5hMiCuE4VW2+zeMnHNwq+nijDEsXtHBL+sxdMddxI50OCqmicSg==","shasum":"a1a9b786e94f606fd3920c4a57849ec305520253","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607435329-8dc01657.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz4ThCRA9TVsSAnZWagAAxWYP/i7nyDPzXDsXOFy5dy2g\nmvn4QyQVf4bLa03DU0Z45DUchGRIsBg63eIWDCiJvWky0fWEaEgD6aVVmT1Q\nPWB20Z9Uxj6+sZg8Jc0zqG4YXPpAL68Cto+cfaKJW6LAQ7sOvsJveFwXrhHj\nY6tcbIVHmd0LtjyBiVec0XXm/RTV/uQakAZ+5v4/CjpoKTNNbmxwX+Y9FKle\nnZa1vbsbBjj1t6gx4hUsFwbqMtINF/ZRUbzmpoXCj87dQmeL5NAQQ+GyWvVK\nJ48Bs6/1oZJRST01vFcFILBexVbgeGiCp3YMEI1QbItwFkcVmPYxw0KsdO7k\nYIkzDnkf1mVuuNiITfODHC+f08JAdk6YfWU1XsyoKeXDpPimAm8HaAHoyneW\n0fMe9Jx7R8C5oNDCvHrC1FA5wsqy92OyHPoCann7nG1oCgXp6QJrT7k8ib7I\ni9KSNJuKGOJwsVaoMTLjzi0yRYm3kZq+fcX7fmHsMGQ3S7tR3gQ5yi1WhBmb\nz2rrKkAUEacC6OIuo+v3VBQTCNMhdjfaBVM7buHyX9Bc27WS4rgUVU8cg/mH\n4JvJ+EFsfle3ibuCd+mee5RWKG67lF0dIIJuKzsBXSRL7fYLVvy/LQG3Ffeu\neCFdj9xgMoqFsiXZ4JC8niitqP9yXidi7v0nSKmRE7XlhE0eOKie4VBiQpqj\nnW9S\r\n=P/nw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbMsiRh95/BfFfkdDEGNgdB8IhobWMv5f6/SjXom4gAAiAMRGoTkfqTrlTw+HfK7VrwPLsc2nOrE+ZdoR/xcdvl3w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607435329-8dc01657.0_1607435488249_0.3458411379226629"},"_hasShrinkwrap":false},"2.30.3-next-1607449081-c24ce069.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607449081-c24ce069.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607449081-c24ce069.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607449081-c24ce069.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-i1MqsmfNsd6PbmlBOB8oxxiIOIqD2JjqtMjmWgp1/Ko+yw0elSwIxoZu8pDwmG+RKAjHQuJyK/Sg73PPAl7c4w==","shasum":"2b3a11b42bbd8f1e4c7a8bf7e0b9aa2ca5134107","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607449081-c24ce069.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz7quCRA9TVsSAnZWagAAGREQAJVdjY659Lxhn+wu2Bju\n35Vq9kwmZngMCeovRZMEfOm61VIfhZy91pwwrenzGxT20b/YgvIS1VcFv2Lg\nBZA/0+qgWK6f8rssPX4PKlCVOtafv6uwSl6QwrYlbtPzHZgjmdl8Z3jC2nZ4\nBhpCK0giuPZ7JyGLKndEUUE6H5Wwd9Vg6LINve/rT9g8SYn7hIbujNcxBlAu\n86eO6zdflOwow6e29vbZ6jvE/f82wUCFytn8dpXypu4yJ/gdyaRtm0xrYwLC\nGnumKaqLBrjyOukhHikzgFjxbNLE2bfBcXaaRAdjMhTt6shFYudcL6ASXGIT\nvThtvSdKUNef9AK4APPUaGUpFMN7qzpf+F3gwVi4TIiUHl3pV6mHCfVfoCLQ\nog9IgOK9m6U3b+HAjS7UwLUMCCXtLutJO+/pgIXdhgTloYEcADQxRuOJ7iCb\nFfmEFbrE36d1EBYijpVYwoGXvdp76MgVhbNP+2EWMJzrcPqgOPtjcLsvAYwa\nx4iD7aeYoyQiMJ+GqNL63A7QTv2fL+wSd7fMhFGPXp0sGk5VzqPEpl8M6sau\nukcniHYDzIoo6TFPgEDXlxzJww6L7eB6LywcsQilm7NWk6YShtHDPHIkQaW0\nXgeGSLhC3L9oWyCWIWz9j3V1Cs6B6+A1FlB3z9xX47Sp0QFs1b4/fx/Ga3Fg\n4B5D\r\n=bqbV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/3u//KDB31PS2MALGCAT6V/w9A0WU7XdmWEzUhO3XcAiAu1JbdB9BFUzTOt/9UpxoAZ17wrTkFWJDQ0hy9lHVn5Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607449081-c24ce069.0_1607449262220_0.2831398756981698"},"_hasShrinkwrap":false},"2.30.2-next-1607463092-1162d135.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1607463092-1162d135.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1607463092-1162d135.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1607463092-1162d135.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GPpaCRDEzM9jhMvjcM7icgRJJK7TJ88T5zxhEVBSm5X5Vhg9y0jpMF+VDQPqg5LgRUdTTFF+iRu0NBVRLf026g==","shasum":"9bd6fc6d10f746bc04531707d2d3eb3b05bdec85","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1607463092-1162d135.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz/FSCRA9TVsSAnZWagAACLAP/0RDqmcK3d7WAblTzo4n\nfZKjXkd58o78MCckfCKhBZvkfN6HpzmkIyzZVMe9YMz5uFf4MFmrJDEk9XwE\nykzB895oaM/ln/D4E+smDAbgLwEJXPz/oDmlxK8u4QfpUlb9Ft+qBezoRdvY\nNrpAw6FMAs1u/vbSiEG75H6NL9kkZgVHfEY3+C2c97PyJuFRXEz2vZLiFiZt\nG2dhaQ7LW04J6O3zAOFfLbonzcxSvE68l7zf2qdqpgtzm+IEtTjTqLs0VeCd\nx4fT0BLDY33FBX7Qwy7Leetmw+sa8qR/snc4arBfZvXnPqLM3Jg4xYlY84If\nTzUyOnauwZR7v7NUjyBLJr5aT5nbWCJAaLiXhtg2X44mChFnYn9FSyr7ubKY\nqHqiGCBGNVjJNCKoRT2xlgBjyKr+DEz1K4HGCHgB78yZOU+TRLutoIik9e5+\nf/FR7+MCJGj1IqSKWs+6o0vTlHe/nNOOHnQlMdPuzJ/I23fgDnqfiYvv+83i\ns0aVgWmgt7gJ+N+cgrc7jtkAqwe3NeTygAcygDI35Jw6lUowrMVHEJ4JpBda\ndIs/pfgL1hBSUEEvBQnlt5rF8plyyK5bAQ9pLco1c2Cm3JLArUkFCmLI0ke3\nImSFFwTJf1cambUTmrGRfCMfpFt961JpAKxcMYUznmRwYPcbaebvnhg0DcFT\nJ/fW\r\n=S2Gk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC0wHFd0G7OzVTJ/1dihlHP9ABb0GhtzWi7Gr/YVEVxtAiEA11e3oQ0P6QHjjWkG8y5yzYYF7H2PGBrHkmSdCKf1t+s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1607463092-1162d135.0_1607463249630_0.1626251238684533"},"_hasShrinkwrap":false},"2.30.3-next-1607512886-d05bcd38.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607512886-d05bcd38.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607512886-d05bcd38.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607512886-d05bcd38.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WiyUuYFwk5xFAPUFeL0vwGUo9JYixGJrsCNIlS6zy/WipaRTJ23kqvkC21byPkJrM/2Pj88xYEP7caVoMfsZ+A==","shasum":"c623ab898c74fcdc6fd2ab76d0ab1ef7a889af9a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607512886-d05bcd38.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0LPaCRA9TVsSAnZWagAAyw4P/2+MtvEqzV/LCyBCeElh\nCVfukBqEZSdPbDpCxRTQHQD4W+HOHvJWbMx63DDUqioC+Yd2fb4LS53JhdbE\n9xhAl61iQaoKkuIwCFo+6zGcf9+YGQ8tGkryucLosnbjgzIxRsyk+/ZmAcQs\n7pTVGtBmVzGyum0XN+gwBi3Gzn/SXFB/Wvnz10AN9Vw28s2qJp/2pB4qmMnH\npCyv+T99gBN0VrflXadZ+ZO1y52amQXf7SpasEGi8qqYTZ0L4uekX9xZQceF\nCPSk1vvBdcffCGHmVoqF1AKe+GqEwrzRMlZKWsGU6SOaVTEO7VWwGOO0RMwR\npIu6vi2CVKbOYm9hJTx1U0qq8VzXxVQY1cYTF0A3zEoSPx9DXRhV83+f7rFr\nFTF3tGoqxtzico1H0w1+QuSeWloJdBlXJBQUKxfNWpoZ6yCv6+GhrTRqmq5z\nnYOf2hSCJ9CxmYFr/z4LLdYLQRWOarBKrak3SjDQMYlD7/cu8urukdli+IJq\n+4pm5i17teB4x+ZU8PhAEUuwchccNPQ25sM+kJrPNqB49i2MpJ36/9Q3aWik\n3r/5VOjxrBcl4eaflt6XRODLCMwMUD8Om4+4cdbGm3Dx0gqjUrqrbaymDV+I\n86vN1WUuMryZ4H6xbZfPRdn4tLCQjOwbFYxvA5f1TxE/TyCV/R54nGRlkKnk\nvkN9\r\n=o8ja\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgqLnyK+/dnNyFWtp2p9dvjUIIEMvxQbvZD2QPFW2JyQIhAIZsScJXPnKw7VeIbhan9mAKF4HKKnkrkaeqWFndJxme"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607512886-d05bcd38.0_1607513049470_0.28759255805038175"},"_hasShrinkwrap":false},"2.30.3-next-1607513272-e9539c34.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607513272-e9539c34.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607513272-e9539c34.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607513272-e9539c34.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-t8cIMYhUyTcCxbwldi5paNPoXh9tXnOFe3Z6fN6bjE2b01pyWw9OvN5R1X7aEQB/WWA8Vb/Xx91Jh7jb4HGGkQ==","shasum":"d47fed3a3abb4cb6b8920e4ea99373cd5d1d7e14","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607513272-e9539c34.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0LVpCRA9TVsSAnZWagAAtOYQAIFd6PKs85d5iuCAFwzG\nFXBv+9m3WueM/TQA+bRQ7BFLra1dW/Pne90RI7YkxFxeg17Hw/tg6o7OFeoh\n8yB6XQ6h9hqHwXpskr0jxnzP+nUmryFt88qeKIbv/SZWm7G5ulHAa3kMvbX2\nRky0zAdL8ZPhb4XkR1shf8obIC8SGvV6DJkLlK76vdLc23r+0lgh17Z8Oi+z\nVZP7k/MYQ8Z4u13c94ymAOkRI5VP9ruyDM/rcYNAdFdtI0ehnNtC+iyccqsh\nCM5lp0gK4wtSDumsyQ0ISDjbuHJ9X71Obdoe0Efbho9Tig6UrygI9r93db1x\nQEeupjACLzYiFMNcha6auT8W3XLyi8NCzOjnMIc1TnQDDtW/d3hCjBA8pfdP\noDXmRI1LNHexaAOcYXyJuImGoLHNoVFu3n2AMA2+OW1E9S/D5l1peVvRHRCl\nqorqe4REeAq7EMN/133zXVoybblOnmbXyBiS0pYy9MiZi20fRfUuU6a5a7BE\nk5gPhfBgLkA7LJC8putqDWpBTys1orupLF34D7FpZrQixfTsscEq7ISXEOxP\njtEhrk0peFu4CP4Vr9Nm+pfJMIuKcXDLSIrUS2dZOiBuBJdE/nbnKIbqZJBI\nIm6L5Q+G3c/hSuXCH33bawDjBct2McEBf55I6aBLEhzwzcg1a1ShUoJLbTmY\n1y3U\r\n=2uYa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB0kJRCBnBFySUQGjUqBlI9CB0XUC7q8vmemvKRc9kKRAiEAuoVBJXIW4rVaxvML/HS+CBJnHTNH+yP+McXPHjyUtVY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607513272-e9539c34.0_1607513449182_0.987858405167231"},"_hasShrinkwrap":false},"2.30.3-next-1607515523-9ff8e5ee.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607515523-9ff8e5ee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607515523-9ff8e5ee.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607515523-9ff8e5ee.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pEuyrAishAZcWNegGMxFeAlqx8PUhyZXI04Vnuy/T0NWzFW1TfnKG2MRRgMgthBRBb+CltzzVA8Kt9ske34rZA==","shasum":"6efab3989c3fad63e41f2ff8477f0adc7913480e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607515523-9ff8e5ee.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0L4iCRA9TVsSAnZWagAAGCYP/1qfzaz80Y+C6TpeBKsl\nuvwVJe93RcJS1XgDqELSxsIGYyo1qAW46BvZwHQuQKXJ5G03hzQAoV1eWGBp\nWKDmuNTM7vJ1C+VlDIHooOiao1R7Df7oBobMj7E7NWZTGwwCrR707gWSNLtH\nUXSNrnIEywiaR+NNUXjdKmSEuY7rObbyA7dbTAtHCTxz/7nJAq2B6R61w3z8\nC2mXIZQ3KqUdsjhzg9lfYYbLDUD49Ce60GKMQOoOAEBHj98sSJvt5GLXqCWZ\nW/+u6jrhlO5JCEquk8vUSqRHDbXCFpB5Jl7s4M4FGwNS6dDiT+/ZgO9iwIiz\nCb4nhcoYZRs9GW5x542OIIh/NJEhoExEsabkdyUF6iRRc0ayIHf5p7J+Ymb7\nloSW/c4HHKOXHuAN/4lQbO5F2iRQuRJMN5Fkgfa12uE4gme+rke2+AVEhQeT\nX52jA6eRtnl4DDVDZswX7h9UMmKsFdl2RKzNXqzDYECg2HoPg9sx0UDm+ckD\nUd3H2OlgpYJG5CjLNfM3F43pfq7+hzEYRVuVkQy2c2t4Ai7Ab+KyZ4H6lqSS\nmLnVeuObbNXj1VzTzTU5O/iCQ0aF7KetUwCaWvnp/XdpucXZoClua0DY8fei\nVIk5v17WaFAweDio8ird+FW2D1Y+xPaVHvi666eFT9u9aYTl2gHKOaAP+RRb\nRm1J\r\n=fQrO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0mZurdPj9P+Mj3myGIT5YDgDtwtXZCTuIvf4FKAj5+AiBr5HK5lyXO4R2mWYlHYEqms9YkFHrfWFxWF0XlnAY/PA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607515523-9ff8e5ee.0_1607515681632_0.5180875204638957"},"_hasShrinkwrap":false},"2.30.3-next-1607516970-e40fe00a.0":{"name":"@xdn/prefetch","version":"2.30.3-next-1607516970-e40fe00a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3-next-1607516970-e40fe00a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.3-next-1607516970-e40fe00a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tOEybY61OgvhlfUFjOfU3Xfs2NXVo31zrnJtRGQ46thgyRnPKvtCUYv/iKgKlbI8BMToRlB19V02P2sLqgYFUg==","shasum":"f5742dd5db23d690634083b095e9bf665cb4260f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3-next-1607516970-e40fe00a.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0MPLCRA9TVsSAnZWagAAdAMP/1PsWK4IVvhqtaSoI4Y0\n2BS0IE60fX9gAKb4DKJtfu1f4EGxvuo2oyafpF5L7+vCjrtu9hrJ4veBMU8q\nBQsoS2+0YpJ64PkmRbX7lMGOP8JJGtfzxmZBbnbsOt4uVrb83ME4EnaStrEa\nZBwr1NqemBBPUYMLN1YNgf9mot/CNdhHQ372095T6Z+kQHJbp4OLoHDa7uJv\nbxupIgyD2ghCRre2zTtD1gPFFQjEuRBIpXgAAcCTGcTqL/65pvnxS3CFpbr3\nce4cABy0tEzmai3Z37W2fcBlr6dr5ox/m86/r0CZs8ls2QN9pwWJJ9gxv2sa\ny5BQPjBCFhJJDZyillw3DKtmneEh5EiAwfjVDXC46yMBlJPxrnyuYNdRHh5z\nHnw9QRY0aqfe6tF1IndRrlI7wMgmxA0z2e6YwEhgTlXIx+NymTKkIat05Lcu\nTVVpAWRshdU1feHa7WmcfdiZaP1lSEOhF2Tsk89okjM2wC7jvf+HfGpms5Kk\nxTr1JgaAiryNN7t0bQQY3SEObHmfPJg2jE2PzoffDrGV4ea6cjeSDUmbosLG\nbYnIQgBrUHPpqkDBcUXfl3qfcIJSYaKs1i+bJvvdtlfylOazrpHbZmknDTe7\n9FOfeZRG65xP9xYKDEGuTlUgK4m5E02OUWTvkyGR6vG1WF04LHWq/5e9XeUS\nmx5S\r\n=Fqpn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiaPIb/HZKxVpmYuhp/KLdwVoDoKj4n+YJPE12ITd8ZwIgBKycQYKGv/5UmmoSdM1Ovw/iGZ8fFLA+srp96c504Pw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3-next-1607516970-e40fe00a.0_1607517130936_0.7018714012370668"},"_hasShrinkwrap":false},"2.30.4-next-1607517102-836b4d74.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607517102-836b4d74.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607517102-836b4d74.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607517102-836b4d74.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-elcwPykm/nQgVb9nvvYi98nOjWHG22DytkoNxBK+geAvlC/fPbI4QkYwbkIIc8uVocO09W5QTcuShAqF8egk6g==","shasum":"7b07391166313591a17bc825eeb96f44bc68bce0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607517102-836b4d74.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0MROCRA9TVsSAnZWagAAgg8P/AxdX9O7eUSShT9Rl/FY\nShbL4nT+Mm+Ime/Vh0y/taqnmsRqqWBZ/CmREgfs7cAZGTRKuXayrHA9kn7z\nLd1WKA+o8aBUC73j/w8jKQAIw5KF4t747g3uzIjVHMZW3Nc+APREyAcY/51m\n2CsA7xa4/05kKVTut4YLDOUEcpp13FLh5FnU3eQGmylenzRyj7v1OCrjJKDs\nHpV9uTh4IULdudfbCRzfJhoSKI+A069RtObZ9Uo+epkGwi3BvztvoaKUyo2P\nB9Ah1P3Ymp524pXSKh5rkUcX/XwxfbY1qKKKQXfj+bNxHDmTp7b+zFnGkj42\nE7Xlx9I68qQPOBfhYriL9C69Rj6tnM8G8RTOig+aJYfSBNj5T5zNolx6r0Bh\nez2u3KkViuOlQpO7oEZfoyb+a42cLLpHwqYY04dwEWHJqlP+EAhPzmdyL+0f\nvf7O8OPPNjlXOEY5p4QIWrvIHprJTJQVRH4Lu19KAREP+Zi/MQ4oDMkPIFq8\nG1a5NmLzmxpoxodwAL0TT0/0JgfnLcsbc4l6jN2FNw33HFBw6I9X9ScJGtLi\ntHWuEcYrqhnVBlKfN8Co26geRSyklDXjSiH7tLKbJcV51gsc+N2dB0y0KtCr\nptRyYoNiPv0ZU0+DB6GETjjZLpkV+hyvz6s29dp6eQzcyo0pRAUGevzkQst3\nedUH\r\n=GVQX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFLFSXDdg2/s0OBBSFlvAvZWyCCdK9IrDtWTgj9hgpMWAiEA1vpmHfL15mNOZXJseHIvD0wuHnPAduDnzR8q0D1ke40="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607517102-836b4d74.0_1607517261942_0.6863246322202377"},"_hasShrinkwrap":false},"2.30.3":{"name":"@xdn/prefetch","version":"2.30.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.3","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.30.3","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-d7A+tuPA/QnvEjRhuu/g/1pLMC4lKgS8ryL/mIqt6uka9ppaPEQyrW13zpygjOrwxgGs0yg4t1Hfy3tFbUk1Kg==","shasum":"f15fc363f553125526f96d86db18e16ed3605cca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.3.tgz","fileCount":58,"unpackedSize":141818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0Mx9CRA9TVsSAnZWagAAOe4P/iULsAh/ScdbES8qOv1e\nr++osSpCgaPu1ojLe+BA4DWv8l8SdU0NDvIOtHQrVyNgAoxemDjDnRlRmdlz\n+RItOJ6M2Ecaf5ThP4xos0sRAXHW47sz+Y+q0yVOdmhP+5LIQ1mje9aZBfiN\nZ/DKXJQEv+VuQlQ+diCYlX8p4DBsNZ00ZFZZzxbNpvCbIBlgBxVySIYeb3Rz\nemlghbf1EJoaXFZzZfYuS8RvlJEpIwL56qAWu6q+tWQTRbQF+DuHQN/UO381\nomP+zZ6efZcLJUr8ZK0c6JV6LHkpkYIwyLq/Z8xauPnyWzHiaAne7+4MohDL\nmhmt0LqNZ30aQwyeqCoWceoM5qXgxpBZDMStc73EJEfWoZ9mNc4duyMWV2Kf\nfGTAHcf5kZwuruc3JyfE1uHbiJhindiHse6pa6+rSvggVM6BozNH8r9D9ejw\n65bjMpUTd3w3XAKaF/5yxKCCQfxXbaXr9hGxDquensXPp0je9dNEESF5Eep4\nHCerrCkB3XR7buBMmLcSUhRsGBIZ42ZWvEoc91FWJyIiFyWSuolafUuGp5x9\nq2wxELmDfHB7jivnU9eutxxxbQvzg9ReyJQ4SOp1gQszAsIOk5t1kko2ARDA\nH+vY7suGgVjKmpIDzfskOH2+kKWqnonab6pAOaq56QGEQxKiMdszSLSCyKzD\n/9Zg\r\n=bT4B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD93jM+qv6AYwqNkr7cUKpW3vH0673521gRp37/ke4JrAIhAJqk+o8xSct9HhcO418EQRriNrLcYewu7LAxCNEuV7Vp"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.3_1607519356867_0.6247066450084982"},"_hasShrinkwrap":false},"2.30.4-next-1607523716-7c077106.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607523716-7c077106.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607523716-7c077106.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607523716-7c077106.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-k2iBrNKijGKspSQBC2QdB1h7lUbArUqaUdQk4SZJKpsVmBbMKJGS+8/MdGYB94L09KqS6ceHiHZ9ZbNMrbqdqA==","shasum":"faddaf1ebae546d392ca8ae31b5e2facccc3fb64","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607523716-7c077106.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0N4zCRA9TVsSAnZWagAAfZEQAI1t2pXCwpJ9+F5fD/yf\nkTELUlI3BEvXc/Jn/rYURSVIDIs48zgfJGff8+twpvnwSPOh6e0VW8cMrRdk\n1e3z5Iuo1/sLicS/5FuUGIYJ+canUP6Wjj56kVKZl8VIJ/8amfn2WFkOSbFT\n6yWwxoWRK93Yzb4cH6ZMQw2P3wAG1j2ftjeRYnXY/6iGURjUkDtUfM6yhe4p\nRkPSKkHOSBDtJMhPJoHf11RfYU8skN5bSVEPGlqYbVRPiSonaRHr3JoXK3kK\n0Kbw1EzF4e09LJvBKUrbpBazaNW8flmsfkp9d7xJkVdgrJ4AV9YdeB0ckyNS\n1MCEBDv5vZEwWzFMXzm3GwbcU2/1g8P6fPkJMPvORm4Tl+EQgQ/TDz6sqYxV\nBtpPKIcmVFH2IRXXry+9NCqjH8JfON3k5L6l1J7akwXopfeUh0Juof3VygsN\ntdez9dKGgs26Op2ITQuSCsPjWL48AVkxM7jNlWeT4BhdxiNwmElNJCgI39wu\nhfkEX4bfkiZb1avAOoGHMN0T0YY2wHyatMfonwCYuZoZxV43/sF8urg/K2yO\nyAzQHSCeUml2Y+1b9jTuJ0S9rzLSFjwnPHHo8oMkh360wQH5+9B+Qhr9I+7J\nR0TeutAnZl3QzUXcAZhCQtYd3rP75jsfp0VCKad7JVMEQ+7u1T4zXFV/gJVu\nQTjv\r\n=RNUD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbrmCg6e8PDNImtXmD5GUEV2xTgV1b1ZXiHpg3ukUa6QIhAOE5UtUz639XCQzO5UyeKRnpMGAzW8rnkwGKenugy0vU"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607523716-7c077106.0_1607523890542_0.7144377539199624"},"_hasShrinkwrap":false},"2.30.4-next-1607524587-e12d6f5e.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607524587-e12d6f5e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607524587-e12d6f5e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607524587-e12d6f5e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HWVn5mGtHOnnVN16s79JA0iqJ6pjxeyI8LogqCB8Om1+MT9bW2w5eHbDhaPoc87nfD1gnwmCtolvg39s/5s1gg==","shasum":"47427dcd0ef742c6c31fd9e15d3feb5cbf8a07e3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607524587-e12d6f5e.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0OGFCRA9TVsSAnZWagAAkl4QAJnSUFztu3MyB6Ymx9Gf\nESLWdquSU/GCaSR6kS4HaPcSqKylRylSZ+H8V0kclwAZ/Bk+Ra3iCMd5o1lr\nDd4ho6j3KbkTYyxgSKYAe74ew40zOwC+j5yHHdP9Exw20zVNYMlCHokRYGdp\nNHxDg4uXx0wEkI8G7II62UsQzQbd8KAB3p+r967hjQaE/QKMMPDlZk5y5ljH\nGHlYNO/2nVZ9Dh/qTfcIwiKSwO/FEwX7JLEvQhCD7WRp1SG/eBHXNHMyXWkc\nixwZgYFTcjzw4K6/F0rEmZQBiB13KerHYrvSKuAjYNCjNfcT5v35/3/t7xVc\nUo52Qwf37P/9ql+dDTgX0A2v+RGSEKMPtMfk8ZX9XHYMMsSQVQ0AoreCBYS/\ntE8dtUZT+36rofGMivFXkrFg2t9Sub6McM0VAzEgxY7EJm/1dv8Rp4PYGvNs\nB494PR3BF5vS9SfaWzF9RuFRQDLqlKCAETpLS1pbUsNWKFDXKr8PqaUOaRmS\ncsSLFYkz06hkXK/ONygldmNUuMa3kpUESpLnSO2SJaJOO7njeTEZXGapFrh0\nyrZraUXYbgO0ZgIsMKwlJ/WDsVwTheXkptsrk6MrXOIcToQxbO2C0RI06gFM\nWyS5K2DvLEDtVquqSDWDnao5dp9kGCC5kUQZZlYAI7JwN87VaLMtRl71un6b\n7acG\r\n=JWcH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHqdcUYV1RR+KhM0Xut5MxLdVj2xW9AEP0M7Fbxj9XAnAiEArIyQ9Iu26y68uZWdHlrP1DhaUZqolqZEzbeIXFRLxSI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607524587-e12d6f5e.0_1607524740744_0.5354770482419924"},"_hasShrinkwrap":false},"2.30.4-next-1607550472-2cf4049f.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607550472-2cf4049f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607550472-2cf4049f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607550472-2cf4049f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6i69y44ppgDRnvnvEioLgetmXISje6aDLoLUhYViPNjr9/Zxncw/8e8T8HVGlvzFxpNgufa13odxzxH3CEtLvA==","shasum":"e22853d883c2350bd56f33155be4709f659de7e3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607550472-2cf4049f.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0UagCRA9TVsSAnZWagAArq8P/3VQK2lbhOyrlw2l7TcN\nzO/lwwtQIj3aKb2ryCBN+TKARMLpzzokB2i+j0cYBJuoMyrYDi1KBTNyiAK4\ndFja5mfyjOgYOX4JihfhjcZvpshN6Fwh7BYi1Sls00HjHw7YXDi8Dpi93Jxa\nL+O5/EIypvl7RwCZEvM3uiiMDZl+5AII5alSmVv0I5PAgZ3LWBTWMWB74+cd\nxKAPi1weKs89ljmSucD0uzV0fAhuE9BerDWuPEfXoIaJ3QCV9fH1s+uo5Po8\neSUm8uhuzrZD+UV1an5Tv52+UJtLayL4Wd9rpFQf3OA/VcHzB3p+QeQf00OC\nFu44qD5UsyTUSltsOBlUZjwgPhI+uPfTS6NOixbF27nBXBpxaA9gMTKegVRx\nsNWRLPdmC78flcR/YKb2e03Y2fpj6WRI82g9pkiTuAxWzQtwQYhhS981Vp41\nBdFlEEa2plHK8PFF1LD84ljbCl58acJ/aJRdo1HP8B4B/y21F9K90PUCDk0G\nKcQmfC7oBclLLxcTt7/IUdS0Bhbmx726YHDAneCshyydkCL6U+jWtWrBXF6A\nz684tVlGF0bNPc1bqu9Ws3hWsndNkgx8wWDJO79QHLL9qPf8cKGqChWIO2Fw\nxcVUt9wUepFZxzftRslBGpdsx7bd/XTWvOqqPx8yEWeXSK8BOKI2GGhi5cNW\nUeWe\r\n=gw4p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1TIGruDwI9/o3u3ZQNNRzmteSEpDiqILlRt3+4BqWagIgcQ4/YSfvsOROkA0dy+cf0SQVNE8cZ5CTQ8FeYbU1jec="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607550472-2cf4049f.0_1607550623693_0.2665032729457504"},"_hasShrinkwrap":false},"2.30.4-next-1607552312-fba7ba12.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607552312-fba7ba12.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607552312-fba7ba12.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607552312-fba7ba12.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EBSLmvA+A+FJGG3zwpkKSrBlCgGi9yNxoqvkQr9vx4FKbu6s3fBXqynRFZSsZiUAi+PPxg3C2WAXbIkXMfl15w==","shasum":"3a9973c4b7d33d7584bdeaf33dd783e158722b13","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607552312-fba7ba12.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0U3SCRA9TVsSAnZWagAAWHwP/iNSltnud/heab0BgufG\nvsvS4xMBwcx2vDFD57gO3xGRisKmxJq6eqbH9e18lDYnqTyHuob6YgtGtJn5\nh98tfyRdVhHBmUUTs2ZNdiipjpfD/liRAdXbvvSIvhfzQgFPrvtMmEcCYDgc\nqKEErWAa+486OXLjML5dlRCb4aflQAdZ8ML9v4bUvn7Cm8OnouQeAsiZrmp3\nb5FSEo1hZBLmf21ZsghPDPfrIXez/2/mXFwwNBNiNWvgjC+yzT0ixb40GQoq\n+67WsMcn3iiqwqNfxmbb58EXzjYgWZfjlsHev+AbOO1uKbtScoBqZx1Fwafn\nZM8nKJ7FgRg5GcIz5k5vrfr1/J67mXpkLWchLf4Xkb9JF8wzfSD14R99Parr\n3QAA2zpFLOjzE5ULtH4k5E1nOqJDaxLfXGtuA1+7aTFJCrfi9wvMcALNj5AS\nmH0DWyv1PbEt0Hjq2EVLNkV49PKB1jGfVKbBw2soDSvgr7X8ci38150+e7rx\n+slaDEzmDhtKYnPI+pfvCCgqKffkYAtPtWrLYMltJ7rc24PCO47hOrgc6yMk\nEranJFnQc5aXu/h6UGR5EbCQdvi3b9ErhTIk1HwgKRO29eGnj/cE23NKvZ1Y\ne9voEyZRkrh6LMbGKjhF0KGpiLN33ZHKQQFP0mVmxAxE+tCMd41QDTuaHq3e\nBX0J\r\n=t6Rk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBbXNBVOQIcuUDKs9MK6Z+SUgmGBuVNlnvj85O8aVqTaAiBNp5b0g5/X9mtvUHtOXOOsFNDVSwAlZMVULlTmfTbesg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607552312-fba7ba12.0_1607552466079_0.20858773144983211"},"_hasShrinkwrap":false},"2.30.4-next-1607553436-bfe76dd6.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607553436-bfe76dd6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607553436-bfe76dd6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607553436-bfe76dd6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AtZc8h4r33461ODSf6c5BB7phN+C4DhlhuCKSlXAcBHRSk7UGSqqUw5P6WcE91rPuVlPybFMkoNs2pOEStefyw==","shasum":"793c371d59209d176ccb440eef970bd16f253c2f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607553436-bfe76dd6.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0VI2CRA9TVsSAnZWagAA3McP/2SDTNVqcqnaTd/I8xvX\nk95mSIvRTWg/IM6ZjmRPPRZwmSgevV10dr8tfRsawwrV4iL/hZ5jbBbTyX5w\nQM6lCACHGkNbQQ2bB1Nga52/08xoxXusnCwGiXljFphBZY3zjDG+7O0x46dY\nghHDmVPptBE4fbLDRL0dlq0jmNc59E4pT5XHX20QNvj4TF6z2X/bvtXdEhXW\nj7ywsXuNYXPWv7+3hizArOCPcTkTnK9ZkEDN2kCXVxvckXhoLvuBiVvzO6mz\nX7pmIXO4n1ETEH41/7/QL7uKCLhOR9qQF0sMhMSw6z0Lw67fw+tPHHSuRBJd\nD8R/rKw+EvmW3S8Z+qIrEAiqDyZgzaXZ7E5pdBVhIvjVHBuFaoYaOB3v6WNx\n78lg4ZMHOhrmQIuY4DEnETj0zNXOcMPXaxeWik2XtKpVWiFVcTrIoLkqxQVD\n5ggg/UAeJQdkrRk03MubRbcmOYSvP4ZpLKIdEJBGwWv+5mYhbjoxiPfbVFjl\nRkl/Nrv5yxJ3kyMK+sakWPtcpc2rhTOfG4dQvsxpoEKk2r6z4n5EWZv0FbKA\nEybhSEIbEeLLh7AyHnfOvHjf9S2v7PWh72yzEjDUcCkOxTTKPc674pH7kiPn\nYhFdTIpv4QR3hhnW/0uSdR6F7tt5q7UZKZ6qb3DVQNXLw5/yuudaZnJTFJck\nhzOX\r\n=w/vx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAOvziZAEVPLWdxhVO/rdLo+YpFjwP7Z1vtiN66mctTVAiBx+Wjp+5W9tmNUu/al6ObWyTx1M99GjGyt5p0XwZikyQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607553436-bfe76dd6.0_1607553589956_0.6928247738357729"},"_hasShrinkwrap":false},"2.30.4-next-1607555016-f51a073a.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607555016-f51a073a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607555016-f51a073a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607555016-f51a073a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YLqeO2XdovPqpDvn/HJAQ6az9pkXia/BLFNFxu67bKRmUXgM/J1HGNSQToWF3QH0g4rTvXzNHcwsgOBLqYEnwg==","shasum":"524aa8ebcbfbe504ccdbcdf6e215f668c2b0e2e1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607555016-f51a073a.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0VheCRA9TVsSAnZWagAAFRMP/iTYRqOi/JEfVtXQ26PG\nHPIyK9oqUgZYVes1n4YX2jt1fIQeHm8CHY4bscg74Hea5NdL/epz9v85Hzad\nGMfq24d/22Ibno9gCpJluzroxsCPJ5/m3ftOF+zGXsOiR4sJT/dqRIe+W3IU\nHut3o+lO7t49UatdYyOBx5mA/GGgvdA3IqdxBqSm07aCi/d8+vn4Xnfv5C7d\npH114A5M8gehoSBc7Z+6b6uYIQZwsw+2pcKDpWSLaNuXLU2Vervpg6mWdov5\nznR3Ol8TC52swi1qfFCDzdzH0FwPo9QXFP1YauiLzEKfZg1IEu0BpfsYq5CN\nLAeCM7D4gz73IF0Nd9t33YoMFo0toOxGV+61BJj5aEczC88GAwx53Gmpgc8b\nSCgS118VIhbswfCtDJk1COd+o+TuXNMsyxPWoY1yNvrElm+xL1NZOd/gJhsz\nZNaLQ0IeVlKiHFSFXq3jghYvfPYRagM4WYDWDLVbhu0MfNpFPQE13Kalse44\nd00bxD7e7GxdMVfruh06764FJ7ufnwmlSp2Jn5AJocCee4M8kiNEE0C9eo8F\nHwzlbKnlNZBvyDktJY9wQurTEa2bPDXRUPEAmjUR0c/YUa3o2v7UP9yVAn1K\ndWr0uPRxDUtErCwG2heiJ2TPVx8dnPgSbjYOGlSIpa8LPQoGM7sYQmblt1PQ\nRw3s\r\n=RgyY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7mwKtfkbVEblHNz7jQIxaDmg72GxHPzvZ0Mixe+WSAgIgU8tiKw/cfK55NcZ40Jie8m45e/9byi5lO70aIw5x4K0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607555016-f51a073a.0_1607555165752_0.9381014725179615"},"_hasShrinkwrap":false},"2.30.4-next-1607556592-2f08e9be.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607556592-2f08e9be.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607556592-2f08e9be.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607556592-2f08e9be.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mvwYfom5XPAijF+PgjfU1ZS8vYhBsZfhZOhO+aG7B5kUV7iKiOtE2ygzptVUkku0QFp0n3yWZkDd0kI19PYEgA==","shasum":"a1516fb14fa27794b8b5dcb7a43acec2cfa6c4af","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607556592-2f08e9be.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0V6iCRA9TVsSAnZWagAAMK8P/06gudis5kwB0a8L4DOx\nh3on6Ny9+5UwtQI+IEt9jL/Xiv3BlOTs1R8zK8E9frRqkBcDqUoSqURUS7xg\nuJ5AkH3kTbEUIhKkhZmC3A9izBaVE1zdQiPypkle/mGDT4N3MQhn18Awle5o\n+egYQk2E4Ag3fNElQL5tTI+bmuJaTfsX5EzeE+6MmifdeQSuiBHGVdGYRlqD\niCITWkwAukFRR0RqKxTROwSj7HgQVuEWzODAwWzdeIMRq2dM/F5CQJl1Rar9\nxPnFlvNO7ijpEA5Z/kuGQyHxHnB7RbNvJXpRBo3p0SwgwpDr9RquO58rMbko\nNReyJxLFaCw+1QWb7HtY705reQY5r0Ewr7iS9VtCiTN3RyFboA8kAaYJjwwv\nUjVM6yDfbOHo9EuHCLV4e/bD1biu1JTPa5HAg6T4nhReraxWMiTlnks8hMJR\n3VB2Zspgl51gtAFV1fjKy4uUzXTsXUKAJeHkc/uzz2nMk9WopNsuzuLS3Dt2\nfzv8iv53xjETV5AFMzKSuViXhWQ6VZtJLFsvcsF3eQ+LMbWJWRiNNupY8zIZ\nR/BzGhlg7lUqGFXjyYoLfzAiTNWy9zBn0yCmno12m0v21y15+wKlqPff8gpl\nI8L2vItNTI+iR/ITxB7595baaNgi7ubuNHTYHLD7OgFjIrL13JBD47iemlBr\nVvfs\r\n=Kv3X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIEQMmI/zBRT5g01cX7aBx7gBxyLieoosCGMzex2GrxwIhALPwJSVmtHsP3SXEbzUjG9nWQi31xtP8jvr2f+CShWvL"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607556592-2f08e9be.0_1607556769821_0.12417533375553713"},"_hasShrinkwrap":false},"2.30.4-next-1607600861-4620c21c.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607600861-4620c21c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607600861-4620c21c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607600861-4620c21c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0qwbClvIZ1KPc2dUpcVSoSjrtO7tyJZaeHyVx+K7ieQhrcVHDE5IAyeeIOjhUVcChmilVkjJKHOvHQHANGOV2g==","shasum":"931b9fb557eecb53e525c613b01107cb5818b9d5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607600861-4620c21c.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0guKCRA9TVsSAnZWagAADbIP/iOoKD/NEAgo/Tp+NRkG\nFDM4LeikUi7HsQ3Qc/7j5zk/g/UfNFdNgocUUmsnGLMFK4qCUtfWAqk5bkf/\n2mhvRrvC6oVjyaFNxk1YaE/9GJ7oGqZdw4n+xydJWFQzFi6qIHXjEKYv0Ny7\nwhgPon/lZ7GbhVHuFGGIS/e/fbD5l0gAUaZZ8hQaG5c5jTb9BmGoCX0VbAlr\nPm/iv632DOI66TvfTRHGCp3iR4tTfygrjMK1cfqUI4Bpen106hqyre65OxXe\nPoE1WBveveTNdk4gSyoUb36r2R2ZkZPioWXPVnA/6P1lJINXH/aiBRY+A7fu\n5sbYvJTxbj/8yozE/BcMRXnxn8y4LOeHkHUclSkY1IXQFgFwuOFoHDkdhvxB\nsPddgTgX4ItLxBhijrFlfi58bOSnbMAtppJFS6GFuYbxAiNEk/SgFvpXMGV8\noIJJtetr/9+Y0tQX/3KO2gyB6NqPUNYs+/Jzkphw0BQVM0jV7cAMevXEJj4E\nWNenwth1hbqhLxqLe7aonJdgYcTS1ZS9tI5Bfw2SrpuAxMbqx4/WSk6TTTJk\n169j4XsFuwzIbMNAM9j5CYnGbPv3kZkU71yX/ay6s66f5Sgfi7Df54BWrne3\n2NXUAy/4urAOnC9N3hDAZCjRN5W8s1gQaO0xhcp3rU2YHCZBYyzE649pWSvZ\nTda/\r\n=LcB8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHzu/qsD+JaA5JgbNZbjBo/ybn36nb9WcdPxKP+F2JwBAiEA9GA1LsN2a9/9TUHsQfSjXTqsyNtUkgcMDfykjlEqCIg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607600861-4620c21c.0_1607601034161_0.9398372326275195"},"_hasShrinkwrap":false},"2.30.4-next-1607608791-86d4d0ed.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607608791-86d4d0ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607608791-86d4d0ed.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607608791-86d4d0ed.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fbQqK/Z/PLVxNoeWouIlrqi0srSNWD91uaKFoyfVm8sNIK157RCZZkoZNy8AYTTe5HrXFgLc1BGvfqG9jCpJzg==","shasum":"198efbbe0686d99fd96a47e0b01ba829faf39e6c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607608791-86d4d0ed.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0iqPCRA9TVsSAnZWagAAkzUQAIAfFlI273VZaERxfVOk\n2vxe+GKirBuOK9bkbjeiNdQuAP12pjbZ2aLdwlTqNG1Kxqg+MOQtOMw5qSxr\nMuRiqmO0u9iFmaqgVX2rh6xXbr1bmXRORfPuCfVujpqH89SlQ80/+P7Rq5zL\nQpCI0hdc6jXu8o+V/Sn5pJXOvETUAEUjABLNuOHz733fROh/rP4lrT7EDeHg\nxxfaK8xowEUr2HF+r0V/K6OnDqHIs+dgpHP/aquPsodG3QoZw1/QD1fMcP79\n9ydIbvZP8fERqK2b57Vt5onA4Y6MqksjUU+X/FIoPdnK/u4CZ09e0WKssyDJ\nScHFS4oJCw8uu4Wui44KMu6sxvQmA788qp13NsoSWYjPLY2ZivzgqrDb/DaH\nsmph9SarFjdzHsPYqR1UpR7s3yAWaigC8X4XU2d4vOtWnZvQ22Z8nGICj1bh\nzRvCgyhwyJf5mpdM6AUXQkZvR99Osm250yXMhvyda3uBXsUjMMPk5ntF9uz2\ne+hYLYLsTDteUbirTcJitqLg/Npy2xLNb6RaS0gdXjxNIjn4hIqLInN85VvG\naUPKQxVKgi3LItpTt+wxbEb+Eq1mUlEByr1Vdt/TrKKD+XW19MJJukV8C1Y8\n/IDv6sPPc6ybypl/D8yWkN+BMk/Y4xnhVOCI1iGKTH00Mb1wripynzePjIbT\n27cw\r\n=oU4X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTwaNiLlBSCt8ZggaqdZml4finxwJRF/cXTXcxxkcliAIhALEB5evA0rrNW2IzublhpxBRMAW5g29jvnWpeupTlkjv"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607608791-86d4d0ed.0_1607608974428_0.6987231138930579"},"_hasShrinkwrap":false},"2.30.2-next-1607614386-50f42e25.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1607614386-50f42e25.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1607614386-50f42e25.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1607614386-50f42e25.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OG33OYcxyS89ta3+Py4vjklIpgv0PHIr1lF298Jt97N2g08xo2+ulSIGqLb+yrtoaXGueba6jaS/RNczJ8DnRA==","shasum":"8ddee397fd3809c119ca5a85ca31273f9924488a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1607614386-50f42e25.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0kBeCRA9TVsSAnZWagAApRQP+gKSdnKdY3HBaLYyzNkL\n6LXuhC8Wmh66FUJA6jRIeVmdoGPnhpLk1PqehkWtupd45sMELUEmzr9EG417\nVoPMeGUxnBlYCWJOMK8d7rYobiS+KOKO+CzmaGQbOC2wrHy5kT0U8+AtXn/O\nenOS9u8kDLGPzFj9VLzh2KYNStCHdkhhEPdpGyFINBAn78Pg+RVY3kMuYQV+\n94V0ejcZwENAfm/ZPbMb3dA0nEOZ2re27+g8RZW1OyneZpsXBZkJOLaTl+rp\niJekhOf6EGokQuCGllllmeleW84T+2FMa9wMKXPC15EWZ6bMn1Kg/VcouJgB\ndm135K2e1KLZatzAndZwHSPeoxvXP56AlQxDr1pzGb0REe10Fdpe7zA6API5\n6eYgts0uqtL3V5Pe4lG9/WGppRHaRaHWJjGQ8Fl/fRRfxrrNqTIGJ3UNAGDX\nUD1ERWIluY5Nz13mWKPkihwMYuctW445ZhhqlwW4q2ZDX/CToFKWVAiOsScR\n5ppMLI54+A1tC8/roRGFu3uAbvhlz75qrBEf3xGj+Grc6mpmEekgbZmgfcgf\nfe7FojvafEmi0A5tb0gK43YMb+BMTJ8Lb4yRPB2AufWpwWqY+1DoqY6UJxFM\nltcP/q7M2RtAsWnUX/7/E1Z3UP7lhmEQsFqbzvvwKfN/Gpnfybof7e//2UdD\nhd/B\r\n=nExJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA5SO02SWOkTmrInrrtzM+gJhxptjfmyi6YHtBN8QlKzAiEAtTmjdQW30loM15ps9qQSUzy5yhe3BlhJzZFXMYiT0DY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1607614386-50f42e25.0_1607614558254_0.7126216784793884"},"_hasShrinkwrap":false},"2.30.4-next-1607617432-7d64068c.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607617432-7d64068c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607617432-7d64068c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607617432-7d64068c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pBgk3uOAlBXM2BPqyHgkEzQn7ybcHaNtvPlBTf75BOWF5vjObs6Rh5Y/jZMDUBejTcN5EY2JMH3WqLt+mUg0bQ==","shasum":"13854d8c50fe7e8259a2b0332e777ecf3a0434a6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607617432-7d64068c.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0kxCCRA9TVsSAnZWagAA164P/0M+fDXpE5szj0TGNQs8\nrivxPlEx24yGy8OdU01l/keo9FNYtKwL3T8hKC1Feq1/IcuVWgfOFyQLVcUc\nc7uD6s4fXUmsrtO25UaZ+LFy3qNH2afyI7NWxTWuAhpw00nCFTW0p8qNCl6n\nhrKY9Jq6lRcm8mpUE4N8PnCEckNfRlbke6Ek2lIzdH3ziiep0ad763ONL96R\nznIB9BwxA/A9FcwW5vtOdPo4SS7TdhUrULaPrezBhab0re6YC2ajko9DKQxd\n6uNNmtF7aK1/21IKlQ897OCo8/qH7Vtf7DRm+JpH+esle6tkXIei2WkHTtFE\nkVDAwhlkA+Ly+EzSyjPN/rJ6dAsDCSg8TWXxcstpH6QuNqmAcqYHvf0M1gsv\n9hC74pQVMzIk3HpEeEhKDUqdo8HupFRluMSQqwbShhO09oa0NjZ00oAwggEK\nfTdyKuTlG0mC1N/XzQt/sPTdBD3JZr9qObaLV5qZG9/7LfluOKSZOHyN8hnI\neJ2+tD724VzhVQbOqDxuCF/JHc/qT6lWZnakM7lB0sA9kYBFmDIkH76Q/bAJ\n/YKgZ7Q4rr3Cpr9nXPXrT/V1Q2HU9OMvURSy2gNqu0lbN/jkGcgjDKL65uf1\ns9S41pTJi/aP/aNY31uvmAf6AK1kmnfzFFCyWlnNmSCxzkDWv4Uvm0KflUJV\nHzC1\r\n=Ozf7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQCyH08Q1+eaPmAMCZDmb39m/2e4nc4g7MCHR1a067nVBwIfPIFC4d+QW6uCWZYF9xi11Yfgh0M/wF8vHwART5fZCQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607617432-7d64068c.0_1607617602204_0.6213425546781655"},"_hasShrinkwrap":false},"2.30.4-next-1607618169-7493a449.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607618169-7493a449.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607618169-7493a449.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607618169-7493a449.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vt41F3cReTVaXQK9eZXATvy9rpDcgSkQjLQ3Ef3rsen8bBkxSNKZ99Y25BaLXvKBhRB/Hq+Y1+wplqcQ1J2OJQ==","shasum":"d096f5d3adc1ff1b81b33800925529043a4543b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607618169-7493a449.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0k8cCRA9TVsSAnZWagAAjtgQAI8iAyGSBDosov2kRWKM\n1OtRDqvfEypYaD1wGDPJFcp9XXL1IdOTUwUZTUT/0m5MIKOgZyUAoGEtp8kF\nfewiqkTczQBwtOpyp6WbvEnvpzGU9OXpT2vn5ESVEXSuzxX1EvDaeNkWGa0W\nBnaYD8/TT1ztMRwxVe+CWDt9+kMdf1Zfc7Q6H4tSkOgaKpB1kHi6HjsymB+o\nXTbfFLwvOy1+0kz1RRFQobjF+D45lcI48+St2eYVUz+KKHC+Hx+Mdqb2JZ+p\n4Kao3+6LmIFca9aLKDP8YI3MH7W8m65E901p8E38fOV7QQhu3zZ/MVhRkmmt\nLtZI1/DmG7QwQn7SNkD7xBFwSekK/aWRSOZXJAL4L2O+1ZBjJ6fKdRQy0Tl5\nwJsvOCi7/5TQylShNgLUEHov9IY4Nwcxad0KxP9w+IqJL0GLHJ+QOCZxrswK\nmW3Znxb01TrxXTKPq/x5jvDjc6eIQr3KSJPrpO1DA5uBJcn7xY03bedl4q4O\nNFeR9ORokPIdjF8pYeSvvme2CT5ULnT44Bw9tdb+qz3GJf1WEP/U7FHygFrE\nIYGCUT0hG23Kn4v2zddUitLjuThKO9PmkG8ZhzlHkQPCD5hnvK127Q19CKtP\nopZm+zeLX6QtwYoyPXZRrDnDScIpVdwTY6eqXuxJiwpBRLcIInU0eHcV9k6U\nBxdC\r\n=6djk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEeIP2PxJKCSI/VOSrBPHMBaENCOD2PhUSCeaqbX9q1GAiA97nhxdlhybu3kcvPXVlkHuoUI1xcHnUBZ+G+n6vQ6Qg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607618169-7493a449.0_1607618331529_0.6878277849283039"},"_hasShrinkwrap":false},"2.30.4-next-1607622444-7493a449.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607622444-7493a449.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607622444-7493a449.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607622444-7493a449.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-k1+p6QfgkF4OT0F6/xIuhpK5BOnxooZMJSCz0i9Z4mvBTTLJnXhBXcg2VVjx2Unsk1xxZDBpA5dL8wnkAwDHvA==","shasum":"bdf8f6b94f39e4361597ceae42ea5dde1e0c9ae8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607622444-7493a449.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0l/SCRA9TVsSAnZWagAA0uYQAKRFr7YK3Toh/nQfbpym\nVSbUlIJwTtH3W/fGP6yohXQAp0jl4xJjooaLLqfDirF7OFX071GJQQ92GL5W\nWI+xpgwEeQjblybkzp9AwXErWLTvNbIMd4MbX0VRy3s6TAZ1VpWIVYqDKlbE\nqYASjKqI1Ot5+m3nYCjHxKbgwKpashre0j3N22qP2hv9ZCoIhjs/+xRZwpkM\nfE8sUjNnpstpi/tXCEN18aZIIGqNOaGPBrv5wdB+MPVR5V8bJ/rZIZKBYsWd\nUMIOZwK8iWMlnzVx84ozy7i5S9jqMD5iESyckp9/R5VHcM4u6tYnQLe0YHEF\nMfXj9j6csD7Lr37f1sM7KE0OcHR6I6HJjn/siXVD1mBg+jsi6joiRwb008nS\nvNxYcutuRn+DZoYPOFLnYd2QSdwtdJ6tmXPUof7CaOemIP7eGvF5odIl9mdF\njY/w71dAVEMNXo2PBQtNgKPdNQLKVUfbNDQSaNuP9C1SGTubzhRlF3FCJWGP\nVvRaWh2qOaPfCXXLha4BPBRFuT5dhkII9rmN29vfzEnTApglt7P8ldGjOIQn\nAJu3SKyxIe+RjDOTMEd7JUxNPr0FRMmO6g/uWg1VSNeDb2EMuN6sCXZJfn5h\nkKlVZv+svDwWQZMDinwWgphC+6okBiIjd5YmFIR8pCDgaKDLvNxNlQCwtcyC\n0cNh\r\n=2FeP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICWbfl7iWjQbVoy0yME2ggEZcUHzAzgr6webVyCWP+kDAiEAkF3P7vOXmSOdH+UJIYMqInUqdMtp2lYZyzsu0XBkYRs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607622444-7493a449.0_1607622610359_0.8502150798673529"},"_hasShrinkwrap":false},"2.30.4-next-1607625268-8308b630.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607625268-8308b630.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607625268-8308b630.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607625268-8308b630.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-m1wTOR+1NNf4i6oHwnNQhZ6GqT+mWZ0AqmrSBOwmmsnwuQW539i0gnCHfuDiCveVHVEmfhLzeEQhX1TGFqGoSA==","shasum":"defb71d6de0e7149eb41b4cdfcf1bcea4a352ec9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607625268-8308b630.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0mrECRA9TVsSAnZWagAABY4QAI0u0Wo0Ru2ZB1e6Ogii\nAZAx0ONlqw1al5fYe6sAcDGPad5q2VtaGnhOq+RXtuLYjffrFNgHPRuWvagH\nftQapG5z1MmcRJQLbyHZskKGT3ZtgPe2EyoPzP5kagOCIh5QtGpqkln8LbOD\nEojfRCpRHqMlyEkbzAwJqe3875amUHb4fc9+R4duHvpiJuO3qb7i5/bVBAlO\nckdMgcJ7RQqV4Ij4KfKNjfwHiSQBDuDad8YCDyKcsueb43wEz14DdMbTPmGw\nOUWlbYA4vwGbl7iv4HuQt/C8+/3fuCC+7ARD2T1RX8+M5PwCarhVOVAlvHaw\naCWWNh92KW77UNGDV8myp+W/gIUBwe9tU4QF0RlWkTF3Q4rKOdu3/Q/Ixb1v\ntyRqvMdAOfNnwRqn5QCUoFCZGrolx5VlsuaLZ7YF50O2EIaytZq28PP3vJ/8\nl44kkiUaOofXKzlnkHMRUKR5HaQnTzWMBF7vw4L7IGn6UHh5A/o2wxZwOY6W\ndoDr0FczhXMwGdGnuuCfpx774S8YQSEX5cROd+tWuERE7C2sIOTrUgEtIWHo\nwJt3EjuKJ2dayxCfTLPE4C2oYObKBflQxPggF99P1iDlTrlzrFSK4jr5cc+h\nQdFV/2YsUJKm7OWlE67w7ZDqp4wQnSo/96qKMW+/7wIwJ8Uy1WDy7gn0olUj\n2x7P\r\n=3erK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC8bwiqg9aPIGNqpueW5JZwkyKgVAOSSyIjhNZKpuH2EAiEAhu77fL+M2ozvhC71J0mjS9Gyfo+CVXcrDE6pqcnT+mM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607625268-8308b630.0_1607625412463_0.4084978971683808"},"_hasShrinkwrap":false},"2.30.4-next-1607626288-31a80cc0.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607626288-31a80cc0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607626288-31a80cc0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607626288-31a80cc0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-co/FRMjkEFMWBSpkdeC/xE6mwUwxPsr64JyP3hdJHM0BgFM5g9j4qKVs4WT9JYq5/iHWkIR1hB2UbyZDiRSx/w==","shasum":"7e9ecf9f8919cc7fe80f55d494ae9256dc97640f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607626288-31a80cc0.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0m7ECRA9TVsSAnZWagAAXygQAIXxtmN7ay/+My+OwDxk\ncTAs+mxzor9Dzo4+LIqCos1BGd2rrVQ9Si+mHUY/kQh/0NT50bYmCBxZ24Bf\nJ+k0EwTE6c7oSoci3duZHLQVlfidpsXBDCwues7x2mzoP18SaQZuLhj/Cw5t\nZDRoJhMXIV8X7qzKkgSituVcysICeF02qTbHgPkJCZCymH2STTuu3oKtyoul\nL4xvAxytqUOCPTGO697HDtRPp7UnqkdHFZyekyqCLfriFxO6PWtUv1V4RRV+\nyfXDXjPngtWUIhsLz6RBOCOeRCNdYFO9J4MYT8i2p82rqWP1XxZNsE8HLt6C\njr5Wp7dv972aCWRr66ImnLDgT3axqK0l2UaewIFcgGMqJ9UYv1/A1V3Dlxzt\nZ28sgGxj8sQwq+pxNKJUgKiAL5YVK7JZjzICDZtKoD+M/9wYtrJFQbxJv+NB\nT9G5AWVq2XV1UUKXO8VMR6CKkwzddL1Z+PM12T+rCbtczM5eAHv30IGdsre5\nFgBxwMkrQJnVOlQYQCLH7ndz5fsOT8zgspc7Pe7T2X35PcDakgkXhl2NBXBO\n65NAzNSlPKNOBqB/AsG5mJ0qXMHGVEvUICuY3/nuZBhhGHjDpbCuNE6tatBl\n1ZVXviWHUC7lNw33tqBC+t0mYfvDWaexJ9MvGjRm15My95K46dpvXn2kHsJh\nzEfS\r\n=Coib\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICEa6UAo6/yHvY5px2AZVmi0Nur1g+ZTRk3vm3QCb+K/AiBJ4TAMKFjniLQJWEmO9vu5ebsRqdG8lch1WV4SHad/lg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607626288-31a80cc0.0_1607626436045_0.0708936594327303"},"_hasShrinkwrap":false},"2.31.1-next-1607628041-0fadc1d3.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607628041-0fadc1d3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607628041-0fadc1d3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607628041-0fadc1d3.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HsUdjXwWOUoV7Ylas0Q+n+jMet/ANFLRzpL3l4SirtxljvHeUBwXy9IfWCZB/92i0608wxoOLRjPNbicQIHT8g==","shasum":"a3b659110b747cb0091f6de90ae9c59a2bca9889","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607628041-0fadc1d3.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0nWmCRA9TVsSAnZWagAAZN0QAJWPvFD3DuQc5pN4qF+f\nmm9gifOZ1DT5JJqjAYQzarHQf0FO6OE2xiJDAwuSArnfZPPSFij9DH1Z0+Aj\nC5N9eDs0cDpw4+SJeFJzd3ETxxfZx55lb9+9kVfhDBxbuUnkzAkgpq5VYEmi\nliKVY3w6EiTznzgHTYuzgU6CqgiK675V557mlvsAto/64ZW8kXxu2nUMuYCP\nL+uDN0T1z+653Kq8oSssrmuSzUh3m+sGJbfHQqkKEbj98qN7Aa/2vGtp9JZD\nKfSSwcOM/NolTm6+cZdRWDG4vOTpfMuQV98FLtfSlgRGSEi3iUbjXssTusN3\nJRPUwSZtW+ctNaiisAbFjfjVPb6e9L2++mP1W1O9R9VCsDzOJsPCQmKCpKrC\ndoE+/aPOUxdk3DWUsNulk6wLJuTy/ZJ12JpsxxRS+nPdNPwlJFs9svb+d3NR\nPCOZ4oWyGlw4MBleCAnuSMCO0123r3eYm7WmVKprAiAByj3jS1k9KXRC7LLc\nBd14PTMat+ZyfinvrfBXsv904Lyxx5bJOPvnLinrV+bfAUtfDSfaCnW9DpNK\nSj9s8pJc14pFMH1pDzLhvqp4/vXxbmBVKUp3qS7q2RsF8wjaaDCV8hOSNwFk\n00hu5fqvrG2zXsHokJJwltFj6WulzDOZbjQKiv5b8MXvNgKZx5kQBQlmS14J\n8Vxs\r\n=8L/N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPtLxhaTb5y02FOy3E1ywK3K1/TcfaxmAKxk3LQisvDQIgE+/urFm1ZpZe5kn5yViBodg04gdSAsDfwywoudsi70Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607628041-0fadc1d3.0_1607628198261_0.12410503586009813"},"_hasShrinkwrap":false},"2.30.4-next-1607628828-7e78e7a7.0":{"name":"@xdn/prefetch","version":"2.30.4-next-1607628828-7e78e7a7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.4-next-1607628828-7e78e7a7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.4-next-1607628828-7e78e7a7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1vImo4iPQxecNTmaoMzCheBoRdqLjRUoy6r7Upv1BGdhNkVcJn8fMaeGNh1BFNmmY3xvuaLg4BOyL+s5XiIixQ==","shasum":"a09971fd36c75429774e75e699869cd44a7d98d0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.4-next-1607628828-7e78e7a7.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0niwCRA9TVsSAnZWagAAyQUP/ibXYqk0vyqKbMi7ds8M\nGwfJiEBq833ESMvTSuo+oTlIv6MAfECmVm4FkjIHFCfxnM1EtprHzDwBsZdg\nlxVjdyNCCFM99CQF+MYgARbkeI8CrLCvqyWhTjn6+/sw4DijBl4MtSJs/BS3\ntv8MgrdTbXsG/2qqJuslqGAbi+Ax6IA0Rx/5AtqgO7xPOkJQLN0JIPKiBTHE\nNfp+KKhGxCBwqMfFIj5RnzIuQ1iOlGZqBCYwvom0/dHba0c+hlwNzDCkze2P\naeVvVwkRfLOcoJbvkgE/NoFl/mf5YZb6ZifxvYmcefDKWUFKD487B4tmItJi\noT+ArVMh1GoD2/3AXY7HUtDfBwoxvisqwjn09XJusuTbYZ3PeSeLODlZWaVz\nqIx3jZFz90O6n2BmapJIdUSLBGPI1uCtpWJyH83CAe9Xu77BE0AW7r6mmN5Q\nDtBzmq0W7sesOjReZMKJRCIxEdYZH389s0TczhrRT6vOU21WHksVv3IB8N3T\n277SWo7e/vZV3TvkjxzVM5cgJTzDCu8dNf+ChnLBqh5t9FYUV9mnTwvlFHXA\n+9avDn1FY3ifkZhvXobP27gcV0R37r/59s+dVKCfC6RlCcYvKQzf8JIEkJq1\nEDL97Ymw7YFYBLFi3xqV+35ttgbfUBHBbBd+cNTAOKQqs4oog87lz3og71Ri\nmH7t\r\n=q6Nu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/BXMnBiIMdg8zr9mzsYu186ZS1qYVsGvgQ35mtG9Q5AiEAhGlOM4R7RSw/YwvJ/E48L3acsFhOwvqWMSn6TFIQE1U="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.4-next-1607628828-7e78e7a7.0_1607628975942_0.7106940992266002"},"_hasShrinkwrap":false},"2.31.1-next-1607633034-ed60cc16.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607633034-ed60cc16.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607633034-ed60cc16.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607633034-ed60cc16.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/A+jAKpZKxg2bz8quBYzhl7ndUC/V2hnKdCJYAmLuZbrWvHhaOfy1mlqN65sN3O2W8tQk1FUVnLKVUtzu7KqoA==","shasum":"c0fd65cb131334e2740224c6f09b06c577e100e9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607633034-ed60cc16.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0okbCRA9TVsSAnZWagAAL8wP+wVoZ2c8nFPO9PfrzZjP\n8WspGk6xMLAws9btR+6BIBVJtL7H4NOa7KLOwM2E0Y1OMC5yyshRijapovSP\na78P9+6qYcujpzwBEqbWLJPteKgprVkPiftFDC47/Tng0ArDzz1df/bOc/W3\n0JwWBzFUgCKTbp0hhDrzTb31zFGyP9nQs1eRIz7xC4AnQM7FKGZjJxCmfSbS\nS8DbSxXGzl+TB1/+3oveVb9i1b8NVdEYUxeMORnfwAdZYhCjNkvg1Isc9ZCy\nO+9TU6KaOZErUWwEew2ah06CJ9Os0enM1UmU1O2xEUxhomJDHuPxEyLvNGjw\nfqZwaKJ84u6a2MkLQTas5x+YluB9DhABH+JtkYcbbpLWGDD0eGg3Jrkf0Okj\n6KJ7WDSQ1L3QaNKafUgRRU+Cnre3KUd+3wPmdUX1X+hj7VpDlKoXE2CKaQh9\ny2Y2Z9fGbBPqjri+2o45K96yMkVevCETp9S8hvCnk+mL7PSojgilX8TqqYZv\noyCKojwFa3HSSwmAM70B31DRl5pCfqfSOOW7dz1Liha2bQ4eoWQQ71uYKWsf\neRLROhFDLlkPxn40fvhBSg0iiPVwFjSK7TPi46Ohuu0zCDSkrgMerAcSHI+j\nGL+nYLFnREg0iTpfP30LjMEUsJyuN9blaw+PXUlIRqWZGzavYRAAh8hZ4JF8\n615k\r\n=RMGz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs0/yF3xehQJfWX1jrZ9FgowgZVFgeaWNlRYOcoLpeSgIhAJ8FW8JqTGT7zL7HFyfEn6HY/QGeCgsRcvf/gVFsQ9Ph"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607633034-ed60cc16.0_1607633179404_0.43983052573557546"},"_hasShrinkwrap":false},"2.31.1-next-1607635372-9730ab60.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607635372-9730ab60.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607635372-9730ab60.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607635372-9730ab60.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8zpaG6Kl7Cej2TVHTFCnBHsKgJuVTCIY5PwvIsIw8l58fXkK7zeUXH0kfXmmrBHRrXfVKZvCkcPHjv+IJ0Y/Vw==","shasum":"259bc1986279a9b614749f8d19bd43ee8f2d971b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607635372-9730ab60.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0pI9CRA9TVsSAnZWagAASi8P/0yQwazM2OFMHJ9BM1+s\nL2rLurWTnttl4K7xsGL0igN/W9Dm2wDR1psMxEDT2TiJIxPrS9WfdYggJpmc\nT8+5ruQhNcXLziOUVAZRLizs/qg1klaopzF9gNWGE3uU4l55CyarDbIfwtdH\nSRKxvtOKXU014kKXg0LP4Bo9kJ8aeOjWXRCzd0qYEmEgXhehNdNMpnTDyBN4\nWIU3b9cQSXskpkW/TDJK7xhnZ5HcYGQM5RMZYsKMZHc6MY8wRF0Kynshvk5G\njD1xxVJsPcJRkc6X6IEYBvmmhJI2eeSgQEihCdCvY+8RJxtMIo4jD9nencAc\nXbiSRyDU/cwGGbgJB/3CYxzOf62a2GckpLERyV6PsHNKRHGnDd5+4/cKh7nt\n82FLPEUvo0hA9ZpECxOrLIZsLxvH6vfKxefInI5Bg5JbryDvsXWPHHYahBvn\nEOw1M6U9xNWq0CDzeOc85jRd324G+k84GW5cy2AZ2cHHZOLUfWSe2ArTlH+1\nKUHbhSj9LNWgPMy4t2lxngYEVBGruDscud/e1XMrvXyTKvD02awUc4gsTXfI\nJamgl6ZrFf8PUg2deJm/p+fUode8kn2sByv5rrOUy2P3yJ3zbJeWEPS9kknw\nvcx/hCAPy7PAYXBsfhZm7/SlKPnnk9LCCMKVptVoSgwdqgmuJvGw34CCgrWm\nhOBu\r\n=xeCp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH41XRxAfdCb1qVS8DNsbkyQkTtq19rR18Wdvnt2z7f4AiEA8oiuVdoxXV8Q3TDJjxqRKaQqHnrCE89M2VtBQ5TWYO8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607635372-9730ab60.0_1607635516723_0.723078922502461"},"_hasShrinkwrap":false},"2.30.2-next-1607636416-cd801e00.0":{"name":"@xdn/prefetch","version":"2.30.2-next-1607636416-cd801e00.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.30.2-next-1607636416-cd801e00.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.30.2-next-1607636416-cd801e00.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3bNYIVNt2JYGQt+8FoJktDG0rdepOHigJVlirvFMYwlUvuO1D9Aejm2c6BLngcnwzdBha9nV72wQbq9NlAfFXw==","shasum":"3ec644e89a297429700be70e9b4d9f38b5e67db9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.30.2-next-1607636416-cd801e00.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0pZiCRA9TVsSAnZWagAAoo4P/jeam6f8gbfivrHWXiGb\ncIwQYGizVDvr9nsYKWRM/qyqP32aHCCeyq8v0xIO5hpNkU9ned5Z8kteXPCp\n9Jy0Xm6HAO2Ze1Xx4F4nxeKKPpo02aIwoZ85KholHhrGMsdpLs7UrpMlZACg\neIuz84iv/TIESvcSiNlG11p/03MImjWue0et4lGybGl0bOAlwkLAicyowoXY\nh/2QEJTh/sG18S6Zciln+/jWDT+BAhS41LCTb9aVZTtYKLjomrEO+3l9Xw8q\n2oMKMGCtDy9zdy0Q3qEqZ5oM6Y/GLaj5xmv+DQXcr/QhSzjdKbXpD1fh6Zm/\nEz1e3k7AvE0VSeU5Wf1dxU/+ImLHqtwx0tPRRtBrA2wDcv0EWaIScTsnvFBv\n2YNnU/HbPHRniw9gX10uL7+4SKgsuBGsOFhq1hewLKc1cpp20b66F++/IjEE\nKk1TRLr69Wd970RjLHo/naCIyVTHaXutP50pNzNev9GVlBhqzbk50Fh6t4pT\nW3xRVWi3ca8CscABkpU9yI7n47r6Vp8jN0rl1Hw8J78y6vpP4RD5zNOys1uc\nrPjvBhBDabAKOo/SjrUfXP2MezzMDYLTnt77s4YG49rdn/qOQbyid3OvW0cw\nRYlCSHA6uy59Q5bH/pPei4K0Kyb9wzQL+VSiNSUcVHaiTesxl/mR97c1KIWE\nzvI9\r\n=infx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHbAOyiyGqGRGBZDYEVnAtEThsh8/CLpywSsqvinR3YAAiEAz64sxeL2WyQ3Nt+W04qCUSuOD3EkMd1H18wMKRko0wc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.30.2-next-1607636416-cd801e00.0_1607636577692_0.08090358661975494"},"_hasShrinkwrap":false},"2.31.1-next-1607636756-bacb6c25.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607636756-bacb6c25.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607636756-bacb6c25.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607636756-bacb6c25.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OpOnExmusYaeZtsyaoaLhWLdRHgnqTt0pHwhBUP6ugDSu0Y5GBoyZwd2xOCPwltwOs72w0eVkrebTTgyCS3dYQ==","shasum":"b5d9e233ec1ebd3e47a588392b8ded558553e478","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607636756-bacb6c25.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0pe6CRA9TVsSAnZWagAA6nAP/i/G6utwjhX0BWcb+Jqw\nPBTmgVDsjEqk3OsMp2RQhyhd6i8XmNBwNtk41ETA+/+KwBVQBFIWNA+JyYFI\n3vFKtFRy+O6aVQ5kb8b8FcWCrF6wUqOOHd/stCwjNX+szWN0klE87YBYw4Bz\nOIEMTJtvQqXlEqdbY2GDrPHjQmaDpga13EvtlB+qJp3xxm1Wn75BmvSQjgSu\nQdV9pgQKiNieeN7aMJd77/h/Y/Kp2pqrQNuWhVam53s01REaqi8852zFA3il\nGZQW6OA+iS0E10zigeWTVPVipZs3/cnNMDZwdBYjvnzN2N5xHcRZAPsvDjJy\ndPT2SYih8L/pxL9BYaGdBrCEA5TDLiNBTJKLyT6JOc37LEzTy1+A2skR2LhD\nPo2al69uzPm1MbbYJeGEIxP46aMGx+1UcIAboMgLaPiitahbJtDxIQ2Y/RVy\nfVtF06cQVMYTtB/pwF1tDnLsfRo600sB8mPXWkWspwYuO1BMLvGWlNRfVbAi\n6TKSzhNeGkfUV0uBCPbyJC/D05X2DnGeJ9kSW+u1mGGEMIv4yrlFPIHTgg3o\npA0fopmAYuNIA5+cGJF7aBqqc/mU2NDgWoiMwau1xKOevP/v0LunOMkjD3iA\n81XXThCejLVAJm/4iq6YutgQxFxjVOcUhwjXZl+YX9xRv524NkbPjGtv0PD9\nfbjk\r\n=xwlD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUf2iawodZz0YlyWNueh06jFroS7q6gHhBht2DLYAIAwIhAOpN+lRiKpFS0MVKqQSpNXOIqJbGzOFFZad6KRx5RRRg"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607636756-bacb6c25.0_1607636921381_0.7309480224878466"},"_hasShrinkwrap":false},"2.31.0":{"name":"@xdn/prefetch","version":"2.31.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.31.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hBcIEOpFOwA+fcYEXSXtyIVxm7yY6qJAaR3khBFkTs/GP5i3pfh/gRCQn9rUPCagopXdIIFObRBxfOqDsrxXIg==","shasum":"b23270885293441933e01281acf5ffbb08d4a92c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.0.tgz","fileCount":58,"unpackedSize":141818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0p1CCRA9TVsSAnZWagAAgRkP/2zbki27Q6BHktGCK8iU\nGQ4ePsLl86m7w0E+BtiSpYFdYcfRfqU1pxq/e1fZCdpiQs82I0EUjBiKpXSd\nPgQ+mbBE/mbNElPKGSXLXbTtkR3XPVYBomiLKVJB3R24S+E5L4J0FfPZk6g0\njizT6MlE4MCNWZuL6mtw2ihTlqjT13lvVuWDLXAD8s+qTwvI+RtphOFAZTaF\nmIhaWeeUlT3mbiTFpsKUrSFvNU7rptC1QdIUtbv36X/VxUvis2a4FDjWLPIX\nOksZv2a0qb01lURNxkT2HgMoWnSM6HIwVxaaOfwbX0aPlSDT86+CacwYFJXx\nXLyadhzVu3qvfdz+1NtPdAbhdgnId/y9OQd1A0D9BWt3mif3osRdR4Ox3MT8\nhj4Pmli46rJ68rMxGOIs92XSSIo/vVtnF5MOSL86kRDYPblWvbvu/qGL5dk7\n2IFbbqw/8murzF2baRku8j5AYPrnPuIZnVoHb7ol/Sm3UX67sHsTP5smnHS3\n2P8c6wJqdHcVZCYCnTQUHDBazex9HUbC30k2eyPQ7IzOoTfIYUbC6M25cbhJ\ndu2K0fEyT+6Saw3UWZNtLIqkR4D0l1MqZ9VII1CMLvCm2e7W2aUGtTrUB2zi\nAyHHoFsNA5JaDGbW3T6HsSNXNGrOkwzKwf+phYwpc+NprY7KP5krTAlqzJyU\niqwL\r\n=RKHW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFZ5tm0sOhEpY49dI3aXfqU9vyg94Aqe3GrkSL51KUBXAiEAl/fEvEAYmtn4e9azDYRIMN+5H7nYr9OdEDkg3ifAiOI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.0_1607638337681_0.23029700531483677"},"_hasShrinkwrap":false},"2.31.1-next-1607687730-e330ff72.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607687730-e330ff72.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607687730-e330ff72.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607687730-e330ff72.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IXWdVWAHmJ88ysR/qb0B1lU7m298L+pP7SxBQicSeU9pbbISfta8zUYdfTmEFJBrbx0vUCXdYZr/oO88yiipcw==","shasum":"1fb52ede04f64e0ba1e46dcdef3f44ff67818303","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607687730-e330ff72.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf017iCRA9TVsSAnZWagAAC68P/0qHKYHx9jrGD1ex317F\neoi7mAzjfNvxvcC1Vf9s6nBSaCcKll6nNnUlMmg+z9NUAdVbsqP9K7wwG+7a\nvfHXDgQC/9MSQLwRbciEnRhkEU6Wbtnu4UaMz06yaplXkSNMSDAi1BYTpoDb\n7PHtNy63MKayhoDcKPZAiAru8m5Cg4Lmk504MEhPatrlCBsO/Ce2tQLuYRdY\nKLKAhpLtC4xwZfNnGNwP+h6/rFzPXzF8H73H3Qbbl4xh22gF20sxxVTE5d3Z\nzwIO0lYmI1fWJg0fIBSQPngwNhCZsaGcVfUoUTS9e2LfZl4ecmxIBBhlh3rX\n5tN2iq0ZGkWtqj5UGj0wJGQzztu6xrDpRRwlwHl91f6DQaiqaJJ6ou7+2cTN\n7ZKd/84TdDG//x2lxK2x5ZLsMte7Ma70xI/drmJhSynLOyepqiCWN3yFBjFQ\nAyrWwSLOpf8qsNy+JQY5FCffW3l95abBFROmWZWlkJ8jlP2xIYJxKaIMiSYm\nQ370CrJ/IWRiR3q8bzE8pYGAhM540YFgZIQkk3CfTW3xyFwdIaipRVeQhi7Y\ngQpTib82n8X7TSW6ieYoQxSY0Wf92NGVrYeF1iLKBBmZbEmfg+yRO2edtVeJ\nqFH5wUkFMYvzx9JNA91Nmi8FlqNW1DoBZuJJuF0SZk9FYYTgdITtpJwbOc99\nKVG+\r\n=mLlG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGbjQUgs7OGcnPP0CzeLrWoGqWdmLt2ddYTDofx1+b7HAiEApVzoF0As7KZuWZRn4EDtsJUidj+ryoCXtpR3XvcksZY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607687730-e330ff72.0_1607687905915_0.32379324068095605"},"_hasShrinkwrap":false},"2.31.1-next-1607688185-c86bc913.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607688185-c86bc913.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607688185-c86bc913.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607688185-c86bc913.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lAL76a+KJmldByP3xfU+IjERV1/outhu3L14ebzwXlsvw1v0+nQ7/8+aRQMDx+ptXf50nLqCGKajDipctMrIZA==","shasum":"4182599b17fbea4fa8f0c5a35bf73befa26a7e07","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607688185-c86bc913.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf02CECRA9TVsSAnZWagAAbZAQAIDulRGra64e47W/czX+\nB/VCwTEuxN1B8uyoXe4l7Jty0XCtdwqS4XIZL9vyjwYJfI1ch8z+73jecr8Z\np77qqCH51EyhLekGqVucmsZgkP/otFFSE+St0zsTmLUxQz7ksYxzuWa85Q/v\n3fQ2hqd+ASUjZvV4vbutJkLy3xfEnMADLDwHhA+KKMvvcVJdKR5BGgpZYKA2\nqUEACJ5XbI14lyjcz8BVYjWWEWpdBdudQ0j5oNHng5maS2+nhF/kVGfWPwi/\n7qxR1/RMSeRMcjNE/xOOU8MJBOgW3omeo9/UrX80xLBSUggcPjO3PF3G+/RC\nocoRVM6Mu/7uRTl/VYtUWWEGLrck+I2eHRuDSxeR3YB6PPdvna1NBnwzWA/g\nTlZHm7wgbTkwZBsJJ52tG8kVGoLG2oImT7ZBsGUEIhssIu0QW5XXRgj9AFvB\nNj0eJPdbW1SywS9H6UFhXThcuLo0kqJ0TzQGqjx9vJOVm+RJNJ9i7HlBBbQ9\navO49CrmQ+uam8X02G3PnhJ2jrnFzeCWV6TqdozarHpLn4kFvX7X/zK0VYuX\n/Ba9M7np/SfVtIbz0m2+F5FobFxZZ4VDMQjvtQsS1cXufGY+JmrY7qkzrM1f\nqyScN87tNJ5UPf46w71KlopGGa5Dw0Jb92vOaFnQrP4dbSFATVQXtZKftT4H\niw5Z\r\n=BB00\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRMqCnsAxujTX0qzQNfqcskgTfOoHHZXHqvbVLDDFiMgIgfNLswTM4XgElMndQvg/CYe9WPIEq9NI1dW0uRV4diL0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607688185-c86bc913.0_1607688324184_0.21288291452448083"},"_hasShrinkwrap":false},"2.31.1-next-1607689275-e084f4d3.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607689275-e084f4d3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607689275-e084f4d3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607689275-e084f4d3.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XDLSxjnYhI0dgS+6OQP9ve2iMS+9a0I5c/Ik5IxezhVnE/kKZcJNpcgO6Ji+rcOZOucQ/M69+qwWKA6YaAy04Q==","shasum":"9bbcc9939a67883eafaae6ce76f0a08c0486e08d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607689275-e084f4d3.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf02TDCRA9TVsSAnZWagAA11YP/27ycCLgASMqrehfCUvV\no8s+DL8uAifTWp/oUFXA4K3MN60va9Q/i067HvpgWcsPz4vZ7iABALQpNug3\n196DQcuwK5VFe+YJq9q2nutztKR6wXfbkG8iqC3ksO0q6XL4oBpfwi4Tiq+l\nFi44/Re1oy1Qpl7gHXQBiKKp2L5+bDNc3qgxlyyJx+5yrQR+O8wcfkHKnjBd\nyHCERkFDQ/0I1f+KnRrlfS/zP8ElXRAzg/hrtBgS7s7JENIKfInjVL9f8zJp\nr6GemwnpC2ZaaJcNIxPZmWBcNBfFuKXMymbam9usjqKPwsM2g2S7zsH3Lg8h\n2PuBwCP+UfmXEEiTgfmvXG+g2zeZR9diDUjV3d9I+27/fwd8YYmH2yToBGil\npXoQQ0CJ9IcE4leXXB/AeGGdoQZJzecDqid47dJemYACRqnA00lHb8cY1Lwt\nfycT4wFq551UiYSxehRqvu1+e1PqS/bpvQFrnwIr+eCAwPo7ZBI52ULVt2wK\ngQ4Gt84bE079FkiqPlOzbmGCL0HBfe+s759c00f2zJCVJeIP2Ks7U1JNF6Kl\nn8qcWXsoB45B8dBgkoFZlJVb9VTbsb0OHLE9hinn1BoGIgHOmlf+Pe1LuC2B\ndBEO8B5/GUlDjZdfMXGABgKge4mnKAZiTcULYrUv7Tr34NlJ8/zqU2r5009G\n0eM7\r\n=gVjc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0FjeCR41TQugzad0s+TDbgS+/f/OxQFS7Uq/DH0zzjAiEApTf6+VyJanxaqF6tp8/WJimticQuQpIaOrJ+qHXDiaE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607689275-e084f4d3.0_1607689410942_0.19264217243355652"},"_hasShrinkwrap":false},"2.31.1-next-1607690195-8c68b079.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607690195-8c68b079.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607690195-8c68b079.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607690195-8c68b079.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qqrSRKhMX6us6S8D9TNEuUJmMoa8PElUCeoAeKo1pAbwm2fvbrkfTE4715IIkgC1xcuggn5E1IFuJ95n6UKkOg==","shasum":"822a63c6004684af96a5f1a69f33b9087cafcb8a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607690195-8c68b079.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf02iGCRA9TVsSAnZWagAA2L0P/iwyxegQkcuBMdWi40u9\nQbSGEVXPsSe75OqXmx0Hkb386H/6Y8hSjgu9BePByabVS4dWxWHXu9Evabol\nU+sBupZAH41NLvEItELcU2vOhoUmAn6O2hZjycQt/92S68TwLQL96NtUdkI8\n3DhhFO0zSGRCh6sfn1nFM2taYDzdsxA/6SrMWwTpi5F3vIf01xYzuVCRzCZA\nvErdMXfqMMCyWjTRWcxsSAPGHRKakdSqS1ZHPggea1Ds56Gd6HD3vYAejqOx\nMConktvZein3jogbs+XotYhcsyzPkghMKG37dji6tp0sGmJmdzP36g+JpJQQ\n3fIqP3TivUiqXRvIrRI/3zVKpgz3YfS1yVXJyT4ZSuE9dRhdx0HOVDB1P8r+\nU6dlfKBnjDklOW4NLAiBtg+N/VvLgaFQmeNDISEYwWI7MXh+VP1bCvP3Qx4c\nW1rZc7TTQolqMlj5Jc87dPLoaBhCKkKoXLjsRR+rd9jLnt5sjh5ooxqVa5UH\ndfJXhJu6bFlXDEBkhAgRkoYwm67CbPTbqkF0ZsXwNAqETouJskssUkZ+8W5k\nHKW1GBKiLeurJBtNbVbopBMZkfJJSPw+ze8lY0pMeA7H9PqKJ78/BysTG43s\nv+R3E44O8hh1pyu+tCmh+6gBpfsQ6iDp+Xw/X/uo/hK24Y0kZF3cHBJ+10hL\nW7i7\r\n=OWiN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqnIRW/d7Mp1xI/7DJ8mLRCBhKVcEclnyapWbx7/pHagIgHQtbRsIJSE+DrmnWVGOLNIgnaJDxWulTzVQnGIXil3Q="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607690195-8c68b079.0_1607690374198_0.6986048357359618"},"_hasShrinkwrap":false},"2.31.1-next-1607690667-7a391e85.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607690667-7a391e85.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607690667-7a391e85.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607690667-7a391e85.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1pB6g4TMs4+Y4xhNpFjm8wmShGP9sHKX4LnrfpWNtp71CPwlqG0NEPj+QEfFzG3FKblYSuSiVSTVrkTWqwxH4g==","shasum":"9c91aca250b66419b56d807d00dbf8c8e198942f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607690667-7a391e85.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf02pLCRA9TVsSAnZWagAA9xwP/1+kldgTjdcHZz0RfCP2\nPB2KRiUsRURypgutcVNfCslBDjIwNlWlgzVMKFJrBtKrd8EwHQLuAnwJOobD\nAlX+Q8jwZNMKADsAluCwTuyz/lYAkBkHegP1yKukbC0XONt/ku8Az17HWLdC\n7oMVJj3Baehul5VGbXN/u3RQ0KNKEZuBQSkjclFU1ak+5OBO2nfIhVkU1Grf\nG3tkeqwO4mzU5eOkjEIQgjXJnImR9m1C8Iw8tEReDf1w8A84mrs7m4doGY7y\nD22cVGcVyCEkPznF9LoLn2t6plV4tLfqBCIB6HtSRDxQY+l3YiZPlll8wDG+\n3BfeCCMRDRaTIQQkNjrIm9ItHX57TWFm5nOCrJz8THKXitXq02mYR6vR667W\nKu+lyNGRon9iEaUVFjoh4glkE2ZIHouk0BWrRbSR4/Nl6YDgWkBMy+NBi+J7\nLFpe1LTxZ8feQZt0zYh9guHyFjctQ4udz9gkxSS2MiIiSm3lWtIEVrrVaaxI\np0HWltTgEE/Rjkz9/OAn+FV+I3+FEyv10PvZ6Qiij1piY07Nb6FWQR643EZp\n2ZDMcnovLlV4LeTYqR+c5Dm78LEs8IdOvYDbIQ6eIM51N8PKslgddcUoCxCs\nMvHoVjzEAqhxS0qI8tHOx4uJODYKL8eU418Iby6hWlT1Cfpmf2cjvo5xW7Dq\nUXfF\r\n=zlQi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICjjJAtTzWwHaYIcgGER5E/ENMgS4N8+ZQYvVzrXBV/lAiEAohc8f4Rbd089a/jR1u9//qDPArQybQfOWSyicEb8k2w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607690667-7a391e85.0_1607690826927_0.8758837488447915"},"_hasShrinkwrap":false},"2.31.1-next-1607691240-24a96a90.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607691240-24a96a90.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607691240-24a96a90.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607691240-24a96a90.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Iy2H0zfd9h/Kbl1EeWVzzZWhczg3E4R8lCzfTQGmzMO/4TmX6jRnKTHTxpQj5kNEkVTV9umnhZtzcZmNcmH8sw==","shasum":"f2d37caf37c843732533562b3a505ae13f3b9a68","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607691240-24a96a90.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf02x0CRA9TVsSAnZWagAAReYP/A/2kYeDvYWrvfT1gF3q\ne3NMaih4xFa0uXOnKBRaTyqxIzE5yLuBMBCzIhy3GQdDjA3HRSl46LUNcp/W\njSnB2pUiraJ0AN6rtzPgvf3wiUBIh5/I7sAbEMZxbuH/dNFvirV+f+RSeZOI\nrsBi02pGvYp0mHVlPXVDBeVAMfA2B+NodP7FgF0oiol79kStz41Xgqc+ouOu\nq9lqmtlPNYNVoB82w2M1AGO25gsx86cnhh/wr0CRNzccfqS2QP6OPJLzTHTz\nwSDauRYNUJnuuk+tGB3Y6dSY0CzeejbLGoHo3WKnMz/29iSO/EKowW0G7Rf3\nk/LBfSlYwNPExfkzs3XiA6LfIeHn6Vhniv5jEFWGm3NW9mvukjbj0vdE7zDf\nD6hKbejr0ITKLczeF/FbOE1DzOG2RBg0WK5Q4nsGBCfMyoNdrhuFC/JJCLdu\n+fjQaJFsZ5bWD5qdykoeSPywp3tBl4KRpvEy394umloVE598kqsUpnjFhki6\n/0+/QQ/KsmsrYFJZGrpedExClWVTaMIOBYv/fvPQKvsCrilbUo6DQOEEXLUm\n1uVbL4CR7Bw0bPDCLFLgWZYV2SdkUWYHH7fjEX2u3V0OgyqDmlhOeTxUUgUR\niYnqtZIydlKnlJBPz0+ncYG5+skYoyO9c78dyCHgm7W9X67qEO6Uz/NHbxhQ\nBfCj\r\n=4/fI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAlb2+fhCcZuMEkqZ7amE4nF+Lm+DCoaziHs0gJCgGxhAiEA5DyVWR6mBqVpI8UB+tUcsflQSei8rkg6ewf+s4ycKLQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607691240-24a96a90.0_1607691379706_0.8024759427754518"},"_hasShrinkwrap":false},"2.31.1-next-1607691858-07af2548.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607691858-07af2548.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607691858-07af2548.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607691858-07af2548.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-T64E1bOA7FyLraWzdw/O/zH8EUVtATdr0UkvKMkpHgj6+OXCHqQsdLqwk0+GCqvUYOI0tzK3U1XKDjZQT8pW5Q==","shasum":"993a211f51288cbee10f90f9df0716eb3cabeddd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607691858-07af2548.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf027fCRA9TVsSAnZWagAAVUYP+weU9Kva+/QjTMzdQPHM\nzoWsprO992TIu08Bwgymz4GKyhv0GpkvB0UGBdvglAL7uwCUypyL/UvyH/QS\nwIU/cA2MeU1Xh8DlOxfVRZUxI9tyn3/OOjGTVGcvzxlSqNmxJ3Ta8XK5NWjx\nez33oatZliqttnEyCljKszAMzctvb3XpymA4+xBj9LksyCgc9DfDvdSPOUln\nC9rwFfnmiLBplY/BC7nUDJi2IUg6zsA9PbS5wIEdtLeNgnlj9VK8zaKDqZRc\nyXlOKW3yBRjI9MotS4KR9PLFRJnqMsqB01ArWRoekw4suSgcwUlhqcRkH1Jk\n7V4cE/8qpN16lT5qI9GOXkyUXpxYeK/I4dZ5S1lYJmP9AWwcIRrXKt788blI\nr3R5opYhjG7Ktj/oqzpli6cKrT7AkXTt85YwHGHxpWDOtorx35vhFpzyp16H\n6P3uQK62vllL7qiL1lCnBUCGnMbdEHeHNMwx0VWD/neKvhtbTaDIis0H5y/Y\npc+uoibYjcjYR1UgU3osZ1kNwhDTeAlX37PG712whuf0LkNmD42lLMvknaZo\nS7prlD8a62n3nDckRZjJ33mnSbZnVE5acG4lmXUmY+xi+n9gFcGpLByMNIfH\nNXvunpm58zYyWmsRvS3rEj6IJgOxjarHz39DwORlYRbyWnDH2jARRW/HUYg6\nqQXf\r\n=20Wa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWKMT/KQL9RL9G0EvrAG4btvmLTJ93foAZ8iUMzCbXYgIhAN5At6YdfD59V7XIUNK1Jz8A0NNVCYEVftZxRBfW71KV"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607691858-07af2548.0_1607691998778_0.7179855297004012"},"_hasShrinkwrap":false},"2.31.1-next-1607696063-9f0ee0e0.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607696063-9f0ee0e0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607696063-9f0ee0e0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607696063-9f0ee0e0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DtJlJgtJKj/tD4oOMlVvOR+8y1cRNxvRPibuN+MGdplWGayZDdMDqzoPKn80KsP6w3/uY1DGYUfB2fbiXF3rig==","shasum":"b59919640d09ea55fc61eec7f27864a00537831d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607696063-9f0ee0e0.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf039MCRA9TVsSAnZWagAA1BoP/RehWbyghmw3dJqOZDBk\nPuBDHGLhP9aCyo3ThNvOupipsGEvZxw1UKG/JBccN1a6q/0t09JF918upa1f\nbK/fXGd/y1W4o3Jyqu74sP6NGWttYh3XKjCOc+kUuCAkUBNlC1AZnWcz5AMw\ndUaN+UgD+nlQN8DHgQ+F2nVoGcXEaQkyPKMDWhibjfe7gtnUuONw6Q4xWT0V\nylbq0fckvvDNNpmpctlMg+ZbIXwT8Xx2a2IFl1CyF8H8bdXAU55uCHflQK0K\n3s+NlRNDiXyKNxX7i+C47BG5nxGk+y4ZggeJCvc9Gkaz2/nanVTHmGoMz/IO\nWS37smSzJXJ1a9Y43nyyB12jaLlGeHTDHUrFM8nboLIJrI9YS9QY0N/MTVlq\nxqFOKFoH7xTA8ahBJ4NmYDh3FXDIvyYmiSK7Gm6CBinkZnjY0KpUhKhXg5ab\nTNa/LBG7uBaf+Sgs4BbazV2QwMM7/T2ISJ7gmYNapfhoIE4j5BWx3JgE7JGH\nACMBUyVQAQoiBAYKF2VuuRBp84Ol9bbcynu9RTO899Zlu/y380geUru3v+5F\n0xDoQvpY5bxh4hhpfPM2Z4ooN2RBtwIBBsSjA1m3CHQG67WV9IeP2ME3GCF3\nNZSHA5pqHlHgzpX/mMo1rNp0fXVz2D494Ea9IGlD+cOZJ1NtZ5zdv/iHbqDi\nmCqH\r\n=agPO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdUHoIQGcJtqmiEx/1IdVqC3MqsNXOX/dGEaLsF2oNSgIgE63FrLuwScrvbTLEqqoU7qaG02cvGYqGeHnzIqKaMCY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607696063-9f0ee0e0.0_1607696204055_0.10773407063964768"},"_hasShrinkwrap":false},"2.31.1-next-1607696325-8e0e88b4.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607696325-8e0e88b4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607696325-8e0e88b4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607696325-8e0e88b4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dEhBDJFjPdoTtvMGYNZtAqradbWlJ7qN7zxP2qKctrH/Xa0Vu10Z7fTu8jfpMcZAbBKDcaqfgjxUgbHclQ3YdQ==","shasum":"e7492609bd3b9af9c986058166032522eed93849","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607696325-8e0e88b4.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf04BWCRA9TVsSAnZWagAAYrYP/icBIhybpO7WnS4wW0I4\nvWoGzv6WzjlFhdqWXYhL2UYkEn2KxkQqLV0qtAnWxrgcv99fJAE+x8BP6AeA\n7y1rKYdIfLR11R5ZTnWf/4VipuNpAaPZihI68bz1jCq1mHhlvfws923OT+e1\nhjQLUyV0xCdG6bFNL2TCo/esy58AaBJ8e9+rO8hsF2dQceNScwxXC1N2/cOT\nlCN2WseR5lMn6TruFNfp5ocVBEZIdHq3nb54ogtD4dgTVLnkId2u2E9vu0FP\n5bq/7ZNHx/IccwtD+Cqz1VxKgrQDCqKgnzkFLsgaYzPK60dDIiLJ0YwMQ2kK\nPUkLEotpfhWYh0OIw3gqpdhFnefuVjYCgE3eYPfSW7y4YdCHAar1sCdFz29K\naJ5LLwHKzzQXxfgK91ghh1thOees2qTS33XQ3yTDWxvdkwHy2gYltJaZ2CFF\n1FwItMCmXX9djm6p4O5NbuNH+A7s5V2F3Jmc0Je8WQWWeXoSEtllc/blpOYR\nBkZ7d18G/leNWdC8vImVq0B1Obzl5Wec6pPC59xu8EEcAB4cNq2rTxee2Qxc\nRipgtXI32/0eYsONt/JWectEn9RohiEAzdDxgftQ8ZKRQkF191uJ/Q28jAyW\nBj9U81YVlu0CwIZ+0822OrPF9Sm1l5pcA7aTfgT75w+7xofevEwmr3C93e6W\nuZ6H\r\n=LE1s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID03vjSPivGhMA0GIJbWConHVTIKyudGUnx9K7nBmEsrAiEApX/6tRDBu/qXwPbmURUYP6yj/BFt3FC8u7HqDawiyvI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607696325-8e0e88b4.0_1607696470342_0.7308600577777686"},"_hasShrinkwrap":false},"2.31.1-next-1607696470-f71f3b54.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607696470-f71f3b54.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607696470-f71f3b54.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607696470-f71f3b54.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zauqWiXpMVWKprlGBTt5q6yN/Ktz1O8+lPjeeys8I+vrW7ufJKRK+IzC5/tGAQBUNFd3fvS5Bt3j7NQJElpVTw==","shasum":"dd06380ae344c86ac2b0e87503b3c2ff081b65bf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607696470-f71f3b54.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf04DqCRA9TVsSAnZWagAAe8sP/R/AXj+4us9qzRMc9jp0\ntJesG8zYgw3OJRi2ixnWaAVcX7T9JV6cKlHfGCAzuSHgKRp84Exg8iE+Hlag\nVTDWLwyUHZxJ68nGFEZL41R+MN5PqpmrZP9JUdWsPPEbpqxKcG3OF/QW2uV9\n143Q86zwfZuEGBfo7UeCWp0ascAvk+w8ROj1nHKEEcKnjxPt4l/i8eDkRNw7\nK/xr/hxjI73WF+4BBmKnbS9ImfKiUf+ZNcSfYB7DlOKj1GQdZvLRnA8dieeX\nHImqGFHshOQGZWC+mMG9NfLyljhFGTByc5w3ba4Ok1jZ92XuFuEvp94X/kpf\nfTq1ab2Uu0pTMtOEUk7qb4cnIeSrwValycCSQ6t1nqOTHY2TTVx2AKLzEZuD\nc3A7IMbomUUKDJH53JaCkAV9ApfkQEbQV9ucX0JNHMZDw4P5UGnElzh3CIDT\nOJs9VVu/m4iKIGeq4kHK1Gkt86DU9J/h1e+ojRJMAhQjh6PsAJXHb5qjRStL\nwTZKqqnfH29/b2UsNgwQ8EX949CvAoHFWeZRUrbo97jEbumTHWlYzaNUHJEt\nq4avnVP+df5pMcEZKAiyMSkZDo8SX+h8Oq9ehlOD+VKpJTX4DFlJ/jVWkOsA\nw6028qYymp1cphOvPFfm7CduHJ5hclbh/9pqQsLvLWQV4wd0TS7Rc9HyghXQ\nkay7\r\n=H+kG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICej1UjEj4Z2UdWLm/YqnxkA/4exbqAjzqGYBQZk070tAiBftUaO4oEShPuTsOIr+bdnmhjJ6+PHPwuX6pTVKX0y5g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607696470-f71f3b54.0_1607696618375_0.7624186468234122"},"_hasShrinkwrap":false},"2.31.1-next-1607697018-fada1fb8.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607697018-fada1fb8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607697018-fada1fb8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607697018-fada1fb8.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nhwDnZmSa21+1Kk8C3DTKxvtkQiF9QIBg/5jtI8OasYrhJpiI6u+tZS4cpXhVgzS0BDhBkrc7eyUztJJ3FVQXA==","shasum":"006cbc614a1bbe309ae9da3138c5319219f3d300","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607697018-fada1fb8.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf04MECRA9TVsSAnZWagAAo+QP/RjaOffgPVEgpZ8ZlrpX\nSAIyFbPxXdcMprHru0xEWeOTa+bIT3vVVC50N9/lVvmInhkqubYKVIQ2LAym\nPq++JcqC8qXsaXDj15W8ap8oGLc528WTMc5cjCLH7kjL3VtwsV8cjZbccqqO\nHCbtKfnxOM4NNbvui2AOlxesc3TVdBot6vtPmhIPyLgZyV/7szvw90gxbuTV\nl1zbdHesVF0b5y7V9gbaA/hzew8ipVD1wRnUqpHR3nIcyas2se+REKPmfNUU\nMb3HUQ7xklgXxl0gvUeaMH+p8j9LCnEl1OEPStMUOFkHt/tAYu/84bpPedmL\ndQ1ypDBxZAkvitFZ5D1ndZ1jDITgq2XdDH39xnvdUI6sz7DN5lY4iiPETExJ\nxJK3GezmQg6rv/HxP5AB53wnHyBVwTVieNeHork0OUv1+69VbgopIgRpPJMy\nHWSYpGKx2ulbH10nkbNhoyD6/0HaOhywmIFMLwnpMHX5qEAjRgR9zWfNgd4J\nKIQEXST3kIfnL48E7JPuRfQuColHUpB+5oci4DKaqi45D1SabJR4nD4KwNKG\n1RGYaWVDXQOdvPptXaEZG83ekeCCkQ34+XiP3+6oWoDMlDrp6DVu5Or2rd1A\nM55oegDjYuXbQECnAK9vecgYOZ6EHPjJzB67vn6KqSYrANLOnWk9YY1VocWP\nPk+d\r\n=xi2t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsasuLIqUEAIcf917JnKxSAlphAFcXQyGmi07VW4Fv0wIhAMEWzJwuB2NFFY30kU/aA9EnSFBO+jKeYUA4mdUiB6BJ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607697018-fada1fb8.0_1607697155573_0.8325750923790629"},"_hasShrinkwrap":false},"2.31.1-next-1607697051-9c6d7e71.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607697051-9c6d7e71.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607697051-9c6d7e71.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607697051-9c6d7e71.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IWHvX/OshzmtOQgxy6vglK5dtuJZnyVooRaJQK1joChbIgbNBl3/YShRcK17rk/4Ia/ORRbrYgbq0PhDFIHbsg==","shasum":"76d6efcebefd9b8170d0697a1c07d2aa5c950620","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607697051-9c6d7e71.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf04M8CRA9TVsSAnZWagAAzqMQAIyopbekBX/NsblVFVRw\nFojQSJDz+GVr7xMmRjr3NnN3zO9gwVAIVh9nKIxxs9px/KJ1zRqNJyfL8XHO\n62FnlC88vSCoDV5ZCACjIj6zWlDJh1LFwip5i8icfeJOwum9iQdqkrQsjKfG\nojESLZM+3vae3a8fu+uROke0r4vdbehgYPFga3gcNQT08pLoq4NQKtnQ5YF6\nnARejqxvGj8VbCvg3fo7IJif4jpnMiEpu9GnvxgGZXr/kqp1BQGvwMxZVeY8\nrOr0sK+0au0ayTljV317ciNHiJEtmqlv1qYAIgLRVwIEC6t1geY4U9FM5zUy\nLuCRrhmlS1u3eh2TCCMTT4hLUBjNPztrd5io0k6LxV5VUSnZknthLP0FS/+6\nF3QlDUz4HheuqK0OW9ZXgXF4BNRPx3xeXta9F2aSwg/nGD/Qb+K9UUwCejuQ\nY5a4rrZeiqnLJG0aJyhsyjvcX15COv1ZgeIZAiJWis8x+Ad5qPPBiTU6IsfG\nKUsqnzW6frDoUWhXeyo2Xp1kbn3SXDcGtIf77cGmXKRx1mCcYV8i4/q0A4yr\nQcQlxse94+dmDdrTIoCVlzd3Clq1iYt7lmUPlOuUD/hL8tnnTteWclqNWOkB\nR2rncj8UDTZUN4SUzHMNT6Uvkce/JDFzuMak4oBANJxD9SiBpxIQEJbrA3Xa\n03I1\r\n=uI7P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDObuX4lCDVmp7eISc+beH0Zco4wbiEw6IkTXCmOhvYdAIgcvUiVCkPyPAbRTkFBLFu4pZLw/umeaQf0zR0X8/lysE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607697051-9c6d7e71.0_1607697211850_0.9365826900320526"},"_hasShrinkwrap":false},"2.31.1-next-1607698811-41ff6fb3.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607698811-41ff6fb3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607698811-41ff6fb3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607698811-41ff6fb3.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6oV6/sFCoOv9d7Hv1IScCsoyBYTTPV/G69c4eZyv0qZdFGIq0fW2IyZpdV5xhV88XkP4Luhr+vcvPiCImMcunQ==","shasum":"cd5d8fd3f1794afa542acbdc41653b8227634b1e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607698811-41ff6fb3.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf04oJCRA9TVsSAnZWagAAKy8QAKN/Ijttuw55xw5oN0R1\n7qsu/p3K+2NNbY8MtV4Gza9XWU3U6N2T9KnEqNy/lNIqxuprh5XfYEEkkY2S\n4AqdYu08tZ6eKHl8q5ocfxT6aiQHujWS+hd+f0y4Q/A9j9YwTn4aEIplDE18\nAKkyOkULdWWpHOjEZBcObSS3lgT4x4PgC19KqUmQ7n5x1MrB1fUvN4RvIm3F\nn/U9Q/AHTFquL3sUzzgHpr4/nNtNkuNk5Abuz2Gw/T9scdJ5qwI3tetuWZWi\nRs8mgrzC9oQTIW1sN551WSwdpfIFEHRl3Il+SgMR997RNBHfp9Wb0va1EQ7O\n5ZayF5g2kkMPflF19xMU/zDkd8ENiFbEaqvigSEFLbZtcaifYKDcGY1vi4js\nUmAXt5vcp26Kh6uCRlkvDGInRZP8CjmyXnOgB9jbz4F/uU97gh83vzYgSYnd\nGolV+xheCxQ1AQTMheE08iz7Mfu3NQ9IfCS3il1FIzoXTI6HAYh0YWAPaHVW\nrTJ4P3uaJ/ByLkBFPQztI+hB3cz9pmpp5IlYGFSmQbGvDudLhZGQY+psCnu/\nBQHDzBWgt9qI4h3rKGLpF0hcJebrC8GnGD4IfrC98eMiDoh+loQkQ1yfEFgS\np5DsXR9WDRb6dqTN8bSoQ4d27SOM4HXNXt4wfdThmTE9nTMToQvg7cVjVJT0\n7BiR\r\n=617E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGkGdmuF+KnLuN4EVS9StimHpezbZWX4h24HF4BTTaJ8AiEArTvoeTZn0BOKeL8CYx6HX2fPnmTjsWtk1IV/u0NMSLc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607698811-41ff6fb3.0_1607698952741_0.9810591462887712"},"_hasShrinkwrap":false},"2.32.1-next-1607698887-456c7271.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607698887-456c7271.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607698887-456c7271.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607698887-456c7271.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/i9PVGWc2XY5MVxw3kR3PwiaA5fktNrb8g/gWwIRzwyB7W/qxiofzF9llXXLjEubMAa9QgGAgUPebwNgOXFnzg==","shasum":"52c86e732e52c669964c62e18277f8ea6f66d954","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607698887-456c7271.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf04pWCRA9TVsSAnZWagAAOV4P/2fzOB1DAEViHc5znkDf\nA+mY4pTr19H5JtiMHeCCFzKxzw+pE9gShRMPmj7G9zWYdUavGuoAY1f01Sp3\nfnEN/NCirPE7kOFt+4Fw8+ju+VZbenSefjhzGtzMNhnyNtxUtpIt+iPcVomo\nyVRoKA3+QxIwH1CRVbcAC4yfSuSPcmQZ5QKO2t6X0Q8H/djrX0LW1C9JIflv\nYwaQY7vwtlwTlENmV3SafKyolMcM6QPdNOze3pjBBzxPicCLSVWaQjg3ZLxB\nzy/4iMeAkEg+wGJSjMwZvLHRA0qbk/AlqKbZ5D47br+o7AcBR9UzHb8Yqcq5\nHvm7p+p+u09/VLeGSf7U7YU5TPrODEGhEJnvgW5yk274NJvlGKYqgYFA7ief\nifHK0IGgw4S80Dk2qYu0d8Sz+Npl50FDR/jDSwDoCLizG5y3IHkPYYI2wmhf\nkOr8WuSgr+MV1iM2QrCXOgHcRwaUM+ELaq6bmbe/TqPAfrO6KwBVdiWha19l\n15TJerJWbLwqGcl9c81qVcBnvnHYcoIfrigBreWOGMA+B867zgnUp2JJXngT\n0yTwYrMIuLdwVIMewLnhEuXf3MijcY5GsAPL90kOMlWvfEreA8LfSJcT/Elw\n0Zle4bw9J7C1n/CuWNXSKQQ3HRlXP4mGR5RMAON7+er0+kpxNE2y6vJ/MywM\naIrV\r\n=kwya\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnqAJmDjsBygmjFhYjlMRS3GAvsoywv7lo8lOl7AMTwAIhAO36hVZjTcj1TLsUWHUYMSUYTl2gdT/izKIoSz4H6Tpw"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607698887-456c7271.0_1607699029676_0.8501921042626808"},"_hasShrinkwrap":false},"2.32.1-next-1607701421-53f9e9a6.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607701421-53f9e9a6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607701421-53f9e9a6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607701421-53f9e9a6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zz8KCTW3w7M+IrPL0uJincF966mdsw6437OPoANX+DIucPKUwED6KuSMHTymaAt9zFWqmbWfGR5AI/08SmCtGQ==","shasum":"d88cea79f650fabe0a4321ec7e9d5267666d4f31","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607701421-53f9e9a6.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf05ReCRA9TVsSAnZWagAAnB0QAJtpYzLVRtHZmk5aIEGX\nfajjCjImHg0pEy5heaUcUgG7tvdZF772EbtHWysJqbA7TqcCYqL1IKuA+WQf\nDsYCnDJQaxDY6CX/xLBvLADAxfGO8Me080rRFpyLPImc+JMyNCKC9ut7tnQk\nMMIq+nFe+a7O3u1oHZHhE5fQ7C/zzVfMAj0SfRRvoEb9y3rVicqeG/huym8R\nECkWQW3wlZdMA0GiU2gKs5aSNwTP3D/e9bu+n9tYMpw0R2ZM7o76h86vWOMB\n5SHEp+0vnuBX44/q69Jy6wEMqT8q5az9Qs/cD7IfB67oT+o4MwQLkuXvPub0\ntvg3b3VJwZUKkqzLmYJgIsUxZOge+3uSguargV8LcjCT0lZNmjRmyv9qK23U\nbeD39aVumyD56PW7M+snudguj/SFWQH81ckS3sEccRq5i2FwNVpQLD6M1TpJ\nnK9/NtoYq0GPck4dg2VzvLBU12XL+xkzgORExmK7bR1fEJDUMHMG0nm1Mt85\nzifjwZs/PiTHXNu4GR6olv23X1Lu9ZKZtKHbkjRtydguq8p9kRqrQ7jtT32i\npBsIM2O9W+wi3Q550lqpdVTjfoOmHKsEt37BJIMHvyE+NsiQmYKRTHimxTEE\nA0pY/CaUEg2UFo9FrIm87wgixHSoPv5Utj1Rp10PKWAabFZ2h+CXvqJJ5Tqc\nLeZW\r\n=pwac\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDw4QnkZcN5YPvie9jZPOWA3T5AMcZfZfpU8YN7GaN3qgIhAOcmZ45qaYjpRs1tJl1RlGDqJaRNBDxBdVKbamsPXx9t"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607701421-53f9e9a6.0_1607701598032_0.07579446241911914"},"_hasShrinkwrap":false},"2.32.0":{"name":"@xdn/prefetch","version":"2.32.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.32.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/Ox1EER6p8Lp1psFwQgmj7Nv7S8Bc+F3C5SP359pGnY6vEwxMsCvzrLGTlPKkBwdeZmBLmXh8h0vA9jFM2w1zA==","shasum":"45358509af60cf9d3ce1b6c08a09f3060cf0f02f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.0.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf05xUCRA9TVsSAnZWagAA/mIP/Re7Da7MbXHQ4YvXzFBs\n4hWjgfQDOZJ9RbCq3IKVaZ0xICU3WRs1NPygeGqT4zV+9yZ0GAuZw381pq6D\nsNnSjixFuC9iUUBqUyNMOuh2W8i3R5GvpFBMWCeGjl/QYUDZx7j2uWFGqPsz\n4vtKOrIc3NciuuZxIRkW8mB/oukhRenBx63u0iMVD1in8llwmN0A7FHV0+d7\nMze4WHdpqDSfko2eFmC/wxPe24uIR3e9LNScduws57p/7s7UqhmNzRdzjTS/\nGdvAjTJN+EwJoczMzUp4tXZoXb53jbx1or3qpT2pMYXpRx9vA4ud5Y21Nh6t\nLYUqaWjBOiFrGbti8Er6ideIo8MF29VCbKCrZrqsQeIsyNxob6nGn5O77TES\niFAtUpDzKAmsv9TjGtqeqN4gm0g0BH98Czt1zDcCprCLERWkRoQb/UfLE7oy\n0G4Rrf1H7c7VWVazKKHhyJy6KzEKhRFPS5PWGqUH/OEgQiiQb9f6bI5lmcfV\n9tzVxPvdyb3BZ3+4D9iuXiwlZMTF4mBx2ucRqd3KQo/b0x397QTdb0Svep39\nwfT0QyQFH2JOYRh8Phz9c75mBaAgR2o5MUR/jAAnJSsOXt/wFNCYT2p/lJly\noAkPaZqnIirqUSelXpKfal7k9GJ5t5y1ZrpG8a1La7mQ9iYs/5jpOzk/hUvg\ntn/A\r\n=uHwb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDxRH7EbnbgkJLqU/CYTkPtGqBnsJca2YddmoDhDnPm/AiEAmkECBGfVN+9iL1TzpycjNPxKKXSyVXRPb8uNgxj/ujM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.0_1607703635807_0.47973548778121256"},"_hasShrinkwrap":false},"2.32.1-next-1607704971-f29917df.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607704971-f29917df.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607704971-f29917df.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607704971-f29917df.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/1GPEXL3v8hj78rbPXvUntEHa1hhUxHXn22Nm7DKXyR4XaAkVxByLkWUbvXDGhvm6oToEzfTnWLyIOaKTk/r2A==","shasum":"1bc401659e8f02b49c24a1d49f9d4ed027d95bc6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607704971-f29917df.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf06IXCRA9TVsSAnZWagAANWYP/isKmD0QUss2PfcfBiuy\ngHip0PrTruVhgCyxTr5zvNsTZRQFc3mw1A6xNgrrrOi9AawUn+V1tiBakaqq\n7NkAuZ3mthwjPvIW4VLIq1/J8YGdsLV59tId4SHUQWZxJ2cA1PUx4IDk3hrn\nRFYg1RAb36ddyAHP7af/dIDpX9DeIq9LSBbnbHflcX65reWT1u3I7SLpAV5P\nBrxiR0JM894b2Y2QdCZ5qlHvp1qQO+j5t6KY4adp+lqxnC0mmWwd1m/C49Aa\nQGIf6UUU6XP0C2ofg8q/UAgeUVRjduSUgzhHVY/03mEHD2PSO/DCl0F11LK2\nkB3xCvytA7iVekm3KdMKcfPIepdIOA1wa8YfhjuZs6RcEboR3CnAcqCCbrkF\nudUtMr/D8eVY/y7ZW9EKm/TTaw60usTKyaSQjNqOm5bLfH2riKyJkaiiuf4L\nR2GG7mMDQ69YbHxO3gtXDx6IjJwXmlcx60C97KcfXz9wdbqInxfuA+IwgCj3\n+JyiKM4ivipkGoX4n9Hwlul5sKHTM7GAKrwjxQ1bUBD/Bw24c5SHDWH1cilZ\nvr0PwryjWT8v8tyN2offx09yMZbm7thA12UOOy+gLI8RRI05yVaVAOjnMEGj\nBHEdvLltuDDbmeve+i/EIVL/RVCE66El9A4iKLU7k/LheiNsRYXDNJ3cfEzd\nNh2m\r\n=h3rG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHc5Qgeu4opbTMYu+aJVc6C0XG/HUhTK92v6CPogauSQIgWLaLkbn6uBEGthYRGYs9gcySX+7w07rXjSksmTRBAzs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607704971-f29917df.0_1607705111000_0.7768719581647485"},"_hasShrinkwrap":false},"2.32.1-next-1607705333-488a3532.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607705333-488a3532.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607705333-488a3532.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607705333-488a3532.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JFRhHmMsxu1aPaPSEXNBsVE0X/87/Qm3MwbQy/RJ3bxYHoqvOHIhcq/h9xLOVuDr0iNLUWiDtW+wLV9tOvszhg==","shasum":"981b4b29081344533370f069522ca6d7a71216be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607705333-488a3532.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf06OUCRA9TVsSAnZWagAA/bgP/inUUsQrKiabg2AWQHLm\n7oBNDd5/CYa14SXUNTKeMzrxq9ffWcmH4GIVZFgRxNPY7obhBjF7EjfVlFh9\nJ/mN5Rf2T7opI+eiLXFt674FJvdgNWpDDr4awql0TEXUGkqD5PB5RiGepZux\nd3wvi+W+SVf8YVwmwU55j0E/XToee2Uengo7EZgpUSxXAtP9iA3FF3Qxx5Az\nU6dms2Aj57W+ycfSfyy8LgewQMWEBzmm7BL041wMGRm99fpTNsYNsUuFKbOL\naSdjtUzpr+WKjA0f5yn0JukXbUorfbfNx5S6onzpA/MVFoWA2M6p4JehGgNI\nWn7p5MGEopO6tlDDZgSjjNTyZHySWxSCUlDlG9H8R49ZR+9SWKHNWqMXJOuV\nDgWj3NfOvNZBsCBKFwO5OEOXnmE5UHWDCA6enRrSxADf+KF67QoCHTXiu2qB\nWNgH9q0+5WKTvsQsAcFXWP+Xeh/0EmrvQPQ1YdfOeZaD1aTx8w8kC5bhIaVa\nAfy+qejb9D1rtBRfIX0gU+FhXmHyLaS9moK5D/URXvwRVBEjjeiD+5kzrL8N\nlhyqbf8NNf42O+sR0nt/rXyqehG/JKDOzl5/Wq1O8x8JS8MyVzH22ZzIyvDY\ns6x0So7SauKXVtVchOidvxU+nVKONcIHEH/t8dHT4RLp0xsj2eQe7arbeNN0\nqJ1K\r\n=uUdx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4iDTo/0agCmJpnHgMpmL/FwoQ5toVXvPEhRFUbMPmegIgcLfe4Gc/SzozPUYzLFGOlQx7RE1WQ972lKUfmnXzKdo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607705333-488a3532.0_1607705491327_0.8129923927837532"},"_hasShrinkwrap":false},"2.32.1-next-1607705763-3e196b21.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607705763-3e196b21.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607705763-3e196b21.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607705763-3e196b21.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LMWzzWrVVyWeU0QDgMtvs93URmVtKEXY6CfQ3e1gICZqzKO7F9rawZOS8HKrg+4UI1eARjQ3Vee0yVGNt1jhzw==","shasum":"21ca1bb6012f102ca75580f42adc9b7dd7d77264","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607705763-3e196b21.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf06U4CRA9TVsSAnZWagAAwpcQAIZ5jvjqsosdI9RSAKgJ\nEc/QbpqlExyFHyR1DSQwCRuRWQWmkhqRkZbkvXEt/jUGcZNqEv5DXuzxKv9A\nUrtNOQ9hWAh5OuPxEL7j52VkN894UbtJ7FQsmfVge4/ilIBROwL0iaB2nVbU\nnPZ6aJaRFWO8x0IzPE2J+xhbQHbwoKqHkjkPSSkbz8bGIPLrJPVeL9XW+kOn\nxm+9PRAXzVNjMPCxeqzpP2lzVtOcdGWPsPviOuD3Tf/JslSBTgFd7DgvGhbY\n0QYK/t+F14F8plO4V2Aozmq2ni4gA+Fhd0NKtIRwzF0YWC205iryGI6yR99U\nq7RYrhaU/GqeE4fW8qMo+GdNLbtRvK1udMNPP+ZtFLwG1ZnR0jnDK/XhmiA5\nXZ71ZF5pBYqHoApecpGkb6zCxmysrZQZ9St49lIOgauA9YeManEYBKwxMNGl\n+RLg5F5Zuja1Hfi59aD3DfvKGeDFy0/uY9bo/GqOSF0ByhJ7kAX+HT5iQ8pd\nNLVhKaM0HVFCbKvZyD7MJmm6+9TO2nKkn/bikE+e9cG+8qfw+R7R7j4kfu1x\nJIIVHsafl/7o3TS1Bh3rjQDIQfKGbIj2FWm9LFCYOhGnCZN2fyCoaTauLyE3\ngEhO2L+ASSV/5M4aGc8i2Q/dNfDyk0pFwvvnwSqF3xUcPPEPLWSBxJH1VnPj\noQnq\r\n=ckYX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0hET8ya3hiTwy30ZSwDB5DzQctfLrQWtgszSXoXpQ1gIhAL35gFkdqfHuQydTGyF4zxVSV9mZZZqRB8gInn9HJG8l"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607705763-3e196b21.0_1607705912014_0.9960611542648616"},"_hasShrinkwrap":false},"2.32.1-next-1607712516-6956b4c1.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607712516-6956b4c1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607712516-6956b4c1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607712516-6956b4c1.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8Z23GG/22sFpXqmzgT283QyPwEyh+ulyuK9ZTrtXY2FUStKbb6184a0PFImumuG/0x1l4V2twImygp++/d6JSw==","shasum":"48a53d4df2bf69b36da9eea723fb16ff12e8b079","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607712516-6956b4c1.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf07+lCRA9TVsSAnZWagAAJIsP/jI2v70OHS5dKk9k5NCw\nnfV7WeDQt3WK8ErZcbkyEFlZ0Orq/1y2IHV8WpmL8rsaG49lHTV7GH6ZkcjD\np04E9W5CkV6Sq6oPXdDaGPXq+GF8u7g5cZ1fjqZD47iF5k5YbhiO7DCowi8g\nA+qNPAIreXhADGwk5zVJGmrsexLpni7WfQhEG4jA6zSuWP5jwbl0PwSVrnTm\nMn7mBXVioGLT1h1czt5ghnCGi8ert162VWIoWmh4PqE4SvtyMknbi7KVCvhs\nG5oJHNl6i7yPmfYaYa3RWgPVPiYXHgvGwtAkYpY045DV/CS/SEoaNk17od/u\nnc6j4e2SVT+ZfzqrYUiTreJkmONsKV12sFXEMlFT+jbudcAwXs7jjaipLhWh\ncjNWUO7Ti0w2FLCh1vuUL26CWU/iNn46mElV5lJqJ4sr5jEqKVS5KZFj1T/w\nLRmgCXvbVm9wJcYtmW1IGHh9ELheD8rR5KoYmu7wxC36OF+esrZ7/D0AGXbc\nKmI5pVN7ecVyXjbLLlFHbPgVqHMt3IPu7h/KShmdc4R+cP+9OtdUrcQR2R7g\n7rzDruxdlpBme4iw+mlOXHfls2ElsdmH/kuMWfVw2n3osvm7Q9gYEbLqnxMF\nOoT8eY+bNHQQd2kwbR7Itm70wO4rcwqT9ajd5f50vYfM3YOCU7c5Taqc3RDS\nUQxL\r\n=BMV+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBM8Inu/rs8SdyhVe/XvkhBAWffWzJJNFaKRT93p0PaUAiEAul7FaRFRUjiTg24Us2cKhCE+D9NnKyAKookgzChB+a4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607712516-6956b4c1.0_1607712676616_0.4639342824897381"},"_hasShrinkwrap":false},"2.32.1-next-1607714702-434290d6.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607714702-434290d6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607714702-434290d6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607714702-434290d6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-01K+nT40L+ViX2NT/S9E1UaZX2cW50tC1xt0GNNdiReKWBFDYI/z2vihbOWPv/yqn7LmnMp4dchEoa3MVR0jfw==","shasum":"b992ec6110a5385e72bb449c4d01ea73f6f61168","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607714702-434290d6.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf08geCRA9TVsSAnZWagAAzTAP/2KakPhTbnYjPBkHXlOY\nGQb7ZDs0q89p1gE3WRbcSrx85wgV5MHFKDiXzJQrWeFlmV1zz2IC/mlKnEky\nQaDbYUu1HGy9IzbBfn2YiRbRozbX4E2nD+1nM7dZKq8ovX14tJHl8cIZApUG\n8r+9uTrwqarBcBar5KzXU698wo/gxQVHlXxxb1boYZYv74/tCzPm5D2wvp2d\nJX69PKm3IFufw8mS+F0zNIRe/wz3eqrUj7YouLc7whNA2VMvoJhGD/zt8dYP\nKEnYTgRHOapAH3GucjR1xYASOuzIpZELWRSTqoF217iqaZermiGmUdn8LhLf\nu7yzAh/n5wbbPB4ieKPYRoVv/XPG8XYfobQJtDIKvHdIbzwVLT16cC/j2F4t\nQHmdMBuAa/JM3c2HxEqf/dGSPQa/+113iBlQvALRuwdTreICOE0h4bnOwrfY\nANX5bjd54kBKqcF+gVRLa+m7BFAQyV1UiakYfA265XlTAW3xl7JVX9ptN/JE\nROaTnkyzm12/41VZE7KnfFAfRhvAhasQHvi2rRKxoateDWgcSi4ugkr4txHL\n6FWgEqKzngUQiBHU1fei6e4auLiezGuRlw157vSpmZJzvMzkbDabcHGaIVOv\nZFcZcuS8Xcee5+z/Gf75KgGoNwJQ+u1tmT514mYSSlazm82V8NK6YcsbmLPC\nUyPz\r\n=HO2j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7X1mFLPeH7d1vHM2LUQE54Rkx5h0swrWzaZN6Z5Hi/AIhAJ47p8x78cea6/imOdUF8yDzwZPXbsXGHAZZLiGYuJKT"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607714702-434290d6.0_1607714845867_0.4014982889585763"},"_hasShrinkwrap":false},"2.32.1-next-1607715878-061ec874.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607715878-061ec874.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607715878-061ec874.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607715878-061ec874.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3eh/JD8y/dbiIxR7QSgyZjlmQCoHBSwWdBB5sGidTooPn1N6Fd2PlIZT0k7Z9Ps4ot/vcUSB0A7wpHfPr6gbLg==","shasum":"170fe3f5c96f06546ce0430d6d6df5ca986e1efd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607715878-061ec874.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf08zACRA9TVsSAnZWagAADgcP/AnjHS+E7u40Jopcd33J\ngNkIiYFRyazwnR/NwyZfewTCurKLxFSniB1C8iLXucEwu+i3Tr6JNSNzM0iy\nBFEXs8owEZuOR85LcxmsusxbGZqTWCDvC7G4KLAN/9vdlxliw8WaHa1SAArp\na6VOjvj9rGi5/bKM7k28az7k5MZcvBHD+k0Rauh/EOieYEf1qcRIGML1ibiy\nScsTSoRSWOqI40nUn0qgar2cW8JSlZsje/YpWARXWGC47DrivhjVgsojqHBP\nCOUYlUnQdQctHhxHHetcQL54tK+6QY0Q49RCzalfQbAIrUughf+GZcDAPA63\n7WjWaYmoPCfIwnCehLT6JL7xRqXAjtUHika9rQO/HtRGVjSYPHzWrVt5W8zQ\nk9Eko0gZBsLw3L3vWMSlMgnmBpgBXBgNFxl9dS4mdxkkvQkAR4GQ15ETIsAk\nMQcMDb4NyQUzELDSAXdDvT+Zm+oY9qJuARDA1qiQ3jxkkkvEX1bKuQ3I8Od3\n0NilURDeIK4ErNU9nD8T3eremXGGN0IMPX1pTNJNXV1B51TxxHwfPjoknTx3\nNuCGa3xImYY/XT6bjE0GbSgDdsVfbeW4+2kHmaEvlF0SwNE+0CZNvC0ZIA6W\n0aIWFRofy/2BrgvyIlfgOco2s9yKd0N7YKffn+TL9hO9lUIP8sbh61R8AsdD\n0pt1\r\n=TL+d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF9Yy9BZQNvRiNLkuJ+0lCerYWHswPuEahUtqs62zq0AAiBvrhrArrGUZlwK7gzM2kx9ClAfXnYQXFHuJnV8SOXM7w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607715878-061ec874.0_1607716031580_0.8542396967277248"},"_hasShrinkwrap":false},"2.32.1-next-1607717334-4165be9c.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607717334-4165be9c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607717334-4165be9c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607717334-4165be9c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-C+lWtK3LZM8IdIXUzJRgRf87/KnkM/dX6xew0gC0tA/kzFHNhUWZNCt5j2nP02ACNR/Z6UAUvj1ux/pOuKCrpA==","shasum":"a31bafc45808818ac2a3ec7468c9820a1134fa20","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607717334-4165be9c.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf09JpCRA9TVsSAnZWagAA6AgP/15EuZ99EQ+HtrSlYDPp\n6/PtlPDfFq8R9N0MR/ebec9F5gPdZ3vHsoO2HaLH68xtH1NV0FlzKWmFdzDl\ndJ47DJXq2MJ5/2llZM++Sk6BKFDwHZwZSm/YVIeSRbHyQyHXAoazmJx86fjz\nLrKOrKhKck/Fqu7sZ7dVI9D51HkI9Q0EJHkQOEfLvw/zB9EGbbpGC4gTMkim\nQCt/X4rdg6i0/S2AP3qAEH9ZdphvNdTI3GtDoxqbezmM+fPGg3Y3FEIVFC9m\nPuZtwZSyVh4s1pa3vQFy09R9P9JLY+59ZG4lopfTPm3ua2KUrLQBcelzmIBD\no1znH+Tlew/MpxhSU2KZSMU4jIU9IFgEae4gwmlB6fMMTw2Sy3ZpwhaLfhv8\nzVPe3jV594Kl5yC65pib91obEzTtqHHHbpoFdiES9lrIoJ8aK2ulNE/CoXtH\nRrU8qTNKFWdcNSIgzi1DsfJ3IS1uXiN98HEyWdWPKBiK2tvlbW6MgqpvKvTc\nw36kMqzzl7P0GpoVtNhb1NGYLdgyPfylJhYvti3pSbieqiy3lFlV5gzXkT2s\nJ2H/n3izJ79j6ZenoW2ADGp5nxPmM790kYMzys4BhQ4pjXg9FVcN9OI0JUZ9\nfPDO1YseIxXOK/FAxOcml0e4hceteEkkE3dkhDUKv6b4COsy/Un5CbthKRfK\ncrlm\r\n=cOxK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtrltm49PwybNKkD7vGP6Z4VQWJE1wOU/tOFm8d5VPpAiEAtO+V7gtGgrykf1EMwbQuNBzbkLwXkFJNlDpgjp0us8M="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607717334-4165be9c.0_1607717481099_0.849268733709337"},"_hasShrinkwrap":false},"2.32.1-next-1607719277-4165be9c.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607719277-4165be9c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607719277-4165be9c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607719277-4165be9c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fBcQRnNlBJBt9hxST6gNsXJPXM1fzk4PH7IsJnraL0FgYBKZvbOzkMIa8B7ExedCp2WL7tq1Muzg32Hzmu4P5w==","shasum":"17949f4d8adbce580a85dfe785fd480761294eea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607719277-4165be9c.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf09n6CRA9TVsSAnZWagAADxUP/2v9140n8CCRqfCQTLIU\n0OAVth+OzidBG87ttBEZ1vlaMFP6nDkhzfH4urULhP8t1IV7zaSCNuQd6zOF\ncX17mVijz5Z74P6wtFc8w9CFF4yjuYMw6QR0Nst52qDqBCP/Tc3A4dNfgH7Y\nWUTzNe//82Uynz3rUNunPHaR7v+kDpN/Qmel3P+gYDu3RmDG4lVNbE4a0rIn\naattXdcw9+OKHJkiNWosB/gX0f+/hwNzxtDtm2xlbBHdifmO1Xqb39Pmk1vK\nimabUQPRng74HTviF71XY4PsbybdDp+9/2MrWyBJFbGKvyf2xScebMiMAALa\n9KNPwxVO/QnOcb+ONM+rsZX05dalCidAgEoyn5qcgT62j21TTLhHOTHs+6l/\nLu8ZBRv62L3FEdIT7oxuaWtZm409/vvDN/yX+75bc1+Wur7mmGz3vGJm3gA1\nd+SluvNyR4N8Bw0EpNTac/LPH2Eivqkc/v9s3sI3deVQa86vQ7nt29LWE+oY\nznD8h5X+o0xrdQlnmpaVN/jjpOwzShd78ZBm2+knQ+PcdXi6ULexJ83ukiyX\nECwrE/bC4hZb+sw4LlQTG4NV91U6oytf/1QrWZXe/9P9eOLv6B7l8hXKQnlT\n31A9ME1OGKercqzP/LUfonoGSOGNpWgv7Fe0P8NyM8PwjzTm6tnZ6ihBKwDh\ngjYd\r\n=dcZZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDoKI3wlCyLjwZb9bDf9FmZ8imFmhPGlzNUHKSs9N0AOAiAdncALDn37dRGuUrA3HbNP6o7wPKPqAA4NMhQvJutCuw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607719277-4165be9c.0_1607719417989_0.7949068129218793"},"_hasShrinkwrap":false},"2.32.1-next-1607720585-71aca485.0":{"name":"@xdn/prefetch","version":"2.32.1-next-1607720585-71aca485.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1-next-1607720585-71aca485.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.1-next-1607720585-71aca485.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XTIKZhgMEpPMF7B/TmM3e3XdqWs7aTZ10ildm8SejK3pHS2KTfAoKLgFHLQ7jr+GrmJ3s3LM1CG6358oPYOAhA==","shasum":"f506f88f96a981340d240f448131131331af4081","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1-next-1607720585-71aca485.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0980CRA9TVsSAnZWagAAh0YP/jYXZGiX/Izwfs3+F8Cl\nz59019Q5NG9rc93u56BZlZ/Ix7RUJZJC9J/DNEOibSsgESTRhr+d0zrE6qDc\nATjPb9Vr8d3kqpYZmHp5+izPRRNwzMZFxpRWwPgRGYL1mvuEnh7F+srExT9G\nWRrBU78ySB22J8WRu4mCF3TOwqxe3hBIAMKvpmKnWrwyc4SIJLfnjq0DnSqT\nQDSkjdJMrjBgbUUjuwbZumC8lx+wyAFno2bKcX6rPqvpfgOBsdgbnbEZL9vW\ntegwgJG2c/66EiUrs1yJC8gCDIrOHMGHFcR6rpvRtBaSvDfD3//kCXD+VlIZ\npWd/mzNsRnWe8oCXIcF04Cg2v/rxJeF0MTU7+i+NeulAFqrFvHnnC83YWzk+\nwqwj4Wg3Lua30a+tXUnCY+z/kL7dk+b7I17TYiOnWbGyXY8nqlNpALrJTRed\nlLIGGa3KnizX7Gxy1g95o3J9Cfqclb1RemhgdDoGIhAJktdE9e83310GoODf\n2xtwrbtzlnjrrqS+NgAoPoWeIFnYZh41E1qzy39Ytkva7SlZqkonlZNDVqsL\nIdoJWYUG6dsWb4/uAa8RdeW6XiZQlWR4QrDWOG1dU+CfnyHODYvjw19gVMq5\nUZStS9r8b1LOZQoIliJx8rrcSncss/iDelt9mI2Fjg38tdEUur3FNM0k2ZUQ\nVw6P\r\n=e+XK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhn3TlShfCW96/gVnx5I8y3kcCuxQ9i4j4KEpGAGpgfgIgXnxs/6SWmcOd57xqcJJmOukoSeAYYWgWrihill27Q40="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1-next-1607720585-71aca485.0_1607720756341_0.973181055333902"},"_hasShrinkwrap":false},"2.32.2-next-1607720658-d946f598.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607720658-d946f598.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607720658-d946f598.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607720658-d946f598.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IzNrkpvd+9rs0+QDl23fZ8haEnBQFB8dbUNrHbj8zMCgkapogbC0CcEe1vOf2MhV9jee9vrma+T/fBBbs2+lQQ==","shasum":"35e16b7fcf86e283c575673d7facb70874dc16fe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607720658-d946f598.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf099jCRA9TVsSAnZWagAA3K0QAJ3kElY/tSf44tWiGCk0\nTBzEVHaOR/h0TlC8k/bnctb3sXl6TSWewSU0t57Q3EJrVOiO4/+Ppv+NdZGs\n8qysRT315Rdza8upS8YGbGQZ6Wc0UJas3TTx9xgNrrVtWEBJU0FMMaIfxkCM\nx7j5rbfQlOjlzTTaQ7uVxkagjaNIzWc5r3gxnu9uL1TNsbps29V/3+Zo6OQS\nftj0KFpasjYJMTi55jmJG0g7TK5ejv4N8kscDzUDpQZaVUXEJAxStfM/xhmy\nDHUjJtvwQO4KtK/BbPz7KTfN3nr+/zoKlqwvcktimNg0yTis3ANTV+vQNveL\n4xnHrXhcRTckIs63co3N0J/LxSjekNUbw0ADUG2sBqmibr182Zc3JPceqW10\nYFTRthIeyUnB44ieLUXtS5lkXk56mD1vcnErxx5dKytE1ih7iVNVMjrklX5U\n6iiGY36VI+P4xJdokz92Ly0mr3fY+KZYx0hwTCtGt2gAqIBTlk12JxExkfRc\npft5b4k/AqksvA6rUsgXAbjsIdqKi1HxH0sGjemoYpdk5yFXnTBW/Myit5d1\nqh/Ov8sIyfvREMWjls7Xjxr99ZEcDpcuMeEJ9xMKCzsQJN5gVfuhYlkuOIQE\nTPDAgicR6Nx5N7QVA1rGIfzYS6VJWjbap8DphCmbewlqHh8Sj/pY6u6Uj1Oo\njmiD\r\n=z9oH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFBlcGexHj1Dy3jw16B1Cldazp4hXXfuY5mV4WfR75YMAiAY4vOzsH4PU5RViNl2Rkieeej0+8D4GwQOVw8RLX66YQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607720658-d946f598.0_1607720802742_0.05703311706701464"},"_hasShrinkwrap":false},"2.32.1":{"name":"@xdn/prefetch","version":"2.32.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.32.1","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aUkUDa6kzIFcHlYQZlECRmUUumXTJ9MOAXei0zUDSHWKPJ0YmVccssW3idOtZ0UfK7hTSuZ0i8tBhVo4Nl9oGQ==","shasum":"9966caae22195228f23bbdb59537ebe3b0ba4746","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.1.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0+iaCRA9TVsSAnZWagAAai8P/0DhJfQQKorFDrW4fu7Q\noOqvL9h7ck/d+lz0DXmK+iylIpm0/MuRFYvSAfIWKH0UY55DbxfINIwOESAf\n/Wgk0uBcfim8reQrIR7ODXYbqBuiu26Pe3OE42tiP+19LtVoMFIHF+I6yM9Z\n/c/BxKo2iifJwCi0Y+G9RrDp5TjZqGqSYuHDrTcEtXDGj6lF9R/BRADBxAH3\nnnx8tX+Z2WDktTeR/gxqJ2wfwI3Ba3Rw7XPflcqSxAsboB37pSiYrbg03dbS\nL7hX2qheo87oqLuASQi2HzQ7nLyL5QKh0IqyG/+X8bFCkTsr90gw/Sj/UzZ0\nsyVda6/dRWnq3HZ9GXQkZvP5WC8vq72WGTffveEqDPR0G1GDwWgPcUFauK8I\nhp6wmb73295X/JXrq9oJt3V7/72l6UmUoHSkPH1z21Jc/3nJqG9aWI5PZ2mY\n4pXIVrGTvt7QrScZvCbIv5SAUmgCosUURGlUuHxHXbPL7JBGjA17Orw+CoHu\nBuHcABtLm5fNlaIyrAnOyoNtWpSDZb/iGKy1Q4vwBxuxrsgAGGijFlMGx3KR\nm+vjsBW5YSseuT4WGCIYezgRMVtIzpzsHBIsl580Cbz0W2OVX3EzKf5MJwbm\nXVjD6lN+VK7dAxNFUZKpBbC1eBkOBmodup1aNHhfR0zRIV/3HF6AzuAW/ohy\nLk1O\r\n=pp0U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFNSWT6kX8tG39/xmzEodylGbgK5wEDvUGPIApfpZCobAiEAg2BGuv2Dc2leC5vEBGFcFx1n8BQ7S81UVrU22hL8pD8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.1_1607723162082_0.7361049693911415"},"_hasShrinkwrap":false},"2.32.2-next-1607936112-dbf5842f.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607936112-dbf5842f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607936112-dbf5842f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607936112-dbf5842f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-RY8BJPhv5apuVRvO8Z51pvikNF57P/CpwYwqpdsZ3K1Stb9y5Ry3KYGjQRX7SBkyDmG4tdgOVlZLPktL6Pop/Q==","shasum":"e8be2a20557e11c803f96bd3d453d4f51e736011","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607936112-dbf5842f.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1ykFCRA9TVsSAnZWagAAPAQP/2fdAMZZS2Ncg7mOX/3V\nBjbbablFN4i+pMmtID9vDqmRBXyCp0L39Wq1sMS1Wk98iFrRewGLxxYf9me6\nL3qzKF9IWdzlvoN2HCOlhZcjcb1GP2b9cBsKvEPOkF8ZnBAubYR7bkOowo3S\n5Per1zpegv8IHXR/jqi1TDsMMorMc0GHfBPM4nuicZ5rOWKMoQEUqL83Z5qX\ndgHixgeD22wJUBgZOj8kLT3+K9GT5P7TROyw3IDGoet2ls31O7sWphZQpeHh\nj1stP5moCfI05KbNNfp8wLDKtPliNyH7oBpDYAULgp3Psug5YRUifM54+fAs\nemsK48vCZlmAuKjosC8Uc13AZ0CxwimW2Fl2AErZikuzwpEfZHFRnYQkkfzF\nEnIlZwWeDd55rDSLdqo35ZuprvQ5TGFNuLO24NtHcoaZFwcPJ/N4ZQ4cVC7x\na2W2G15XTfHZnFrw7jUnMAE+0pYhk3vLLwoYf+4tE6xIrabsRHB1UV2qyJsb\no2QTqBv59mVxWqL8Yz0LR0MQGOCLajzbZLcvOLbMau/L+XuKyZFvWmTDFO67\nFWWCRtzx/IEFOtwj9oOMsz8YsiuSjGwnCVt7T3Da617v/BRXgR81bcqTT0kK\nE2fOMyR183/S4buwX+VdE5ijrN96KK4NwpIs3C13wvbNMYh1jESDfABCoTyI\ndcDB\r\n=gHdW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEicq/Q3za0JMdVe9x27loPcqloFKDj25Adm8eyXQ/KVAiEAqDYGV3FX6wys2xNOk7Tl5y24Emzh4Cfx+uPXEaRs3P8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607936112-dbf5842f.0_1607936261236_0.7738894893044648"},"_hasShrinkwrap":false},"2.32.2-next-1607940357-a1de5a51.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607940357-a1de5a51.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607940357-a1de5a51.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607940357-a1de5a51.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bq8ONDUniaQ+MrjE7q9UoyN90DFZnPHZwIC4rpcPstCESbhYehkH1BsTZTWZhXloIQkBujZSztBOtWGZcTe7yg==","shasum":"f063dac286209f9033de68c5758768259b8dd7fa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607940357-a1de5a51.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1zmTCRA9TVsSAnZWagAAdJsP/2eX/r6sXiNmfciiL40U\ngcNSc+xGFL9HYMzV13Cmz9zXLm646Mp/K4S6uL9+aoIQWJLtwDMvpgbvo6gV\nGt4CTXbqBK3y5MqcPORAteQuABNQU7o4udjnE7U0SR0X1oWkXz/lVeZPhZQV\n01Xxg78tY6FyR9sW97wlL1Is6nVjBpDyakWuen5+jQJvvjeeqK1Tg2ShfTFt\ndVt0A8tx+6AbVWoEgnapD4d6tYSuykF5nZzY3B9YsbSRc3CMibHpdY/Yn4O2\nuhnSUHAmnuWcOorIFjLU44YOaliFrlrwlKewqKF64EW9fYntI0CEcoNO+E1H\nyn52jL6Cxtb0P68qW0+6fEKBAMtUdAFCZepNJXHypeUbPO6k0X4kCu8fmALv\nREijQGWbOtbz0Xc+9fNTiiKH/jzSNqHeal3anzw0WwjoHFPVMiCNoifFe5Mx\nO9Zl6NEn2C0UqRCq+Ytb+XhyMm/uLuqkjYByNbloS2px8wy/xX/2dYXrb8jd\n5nopaYmiFt4tYW2mbx8a9P3MMihx3+cAI7QkoSe4uZlJFNE47Uc9b1ZoMzwF\nxURoxOLrxVVfZbsXwLSOgHhal6oh5ieyS160Re/IxCxnuhoq2XwUkQBF40SM\n8+APzbQSYCn4RDwYGbG8/cL+AHHVlGYmQuHUxOoVSOAEOZ3pPM09SG8DmY1l\nVsOL\r\n=V1yG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzXrPJdey2eQmqqFLEcM2CRv/BN1Nn9UNltR/yKhPegQIhAI474wI/yybKuY6RsqeXP/HvBqwT2Ks2UokiPQWcRYzS"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607940357-a1de5a51.0_1607940499314_0.555820733088372"},"_hasShrinkwrap":false},"2.32.2-next-1607941267-c1faf96e.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607941267-c1faf96e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607941267-c1faf96e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607941267-c1faf96e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qIZ68VjmcMKFy/FJkuBYFYygC3qQSh8IK/Phf6iWGCTZsEtQp1awjijrY3s+LeUprTMzgcbvexS/1YTzq/8aEQ==","shasum":"b18e25346d9643132533b20c78ecdf8f67e2a4cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607941267-c1faf96e.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1z0uCRA9TVsSAnZWagAA4DkQAKEd9STX6hQY6S7EHY+y\ncrAjvQahl+tfQ2zmfwwzUTZQe1SWhRKxPQEOPP3C9wqeHpL/UTXYzNbfAQ+z\nAjS1UkqfooxF7nfi89JL0Cu0rFoTp+iz1p6sjJ2VH2+ERDGckuy7DuwaaFia\nhdx3uEJXdG3j+3wV5+VAvh7uz3OmBM77z6bnbjlS7wVHVlqe+6+7wtovBWyr\n8zeA7hsCpR7bfOxfIEYAR8XR2xCqtpTeVNaDh5hDiObPf4cw2CM+czPvTi+3\n/cjOE88tX52ZlftcyC6xRGHH6ZGD+tgu1mqo5pHmZjamtuAIBD5CLX8BkCDp\n+2VwsW4eR9sfTte/PiYtvRe6qQPBR5xrI1F3G4MkoM+b3D03nyucnzB0Qsb8\n2VgSm6uViTyMb4vxwXTBE7X2O3BJcKA/20QpogDBpEuyQ4NBhjPG52WRE9X6\nDSSlpH+b9pEx/wcRF6Ka7OX6fftHNmp/gg0sqFv0mqxVZGsc6scOvSACklBS\nwo0Ylc6KTnUho0A/2g/yOHrKLiII1VnktC/cf5eTXDKDOWslVgVPhErmn2k7\nTqhdB35kEkDYidz1Gw4l4a/JSQ3idHMmvwm8ioCNqCnOueZXv9WjEjmUrt9L\nSRrBF5fPYdcCjAPL5R47fBqWWKcBD9FcIkZDJ6lvR1YO+CVLNCOOkCd4aYQe\nJFp+\r\n=Ki2n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDn51Z4DR2gDFf/a1HjTxNy6WOXExlFmLTeeMr3jwjzegIgSxABEHiSRQ/WbCvS9Cr5pSPdBowDLRAItPhJ7OPQRxI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607941267-c1faf96e.0_1607941421476_0.9461606978724275"},"_hasShrinkwrap":false},"2.32.2-next-1607944586-973d7b0f.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607944586-973d7b0f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607944586-973d7b0f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607944586-973d7b0f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YVFLCdsmtFsgoiYaW+N6HrfNyOP3oSLWgtuzJR62+vG7ImAlSnHyhx3xX5M4VBz1oFdB90SVy4vr5mkw2onBgA==","shasum":"a6410caa125bc8551737f0f925eb91d698e88df4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607944586-973d7b0f.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf10ojCRA9TVsSAnZWagAAmQ8P/iPN5K13Ar6qQTJ04g6z\nEPWQkJEnvEy7k0LaNR1RnmpSRM4Jn0c4d2fISv6pudARvU2JrWVEOb8yfcd7\ngZMbY9WaUMjlcagcaDjZMgyDSqqA9Iy6qxvaHYVLYEpjyXZxuc0L/PYoeQ9A\nQn2wPUX6aW3M/EU+vAWCWuoOzHyulocnvnLS2ier0S3/XnHqiU1+FIDxw91O\nkPDkclghgHSoSIackbP158nhqjddHkRH7kTmtonDpwMRxJT/3oKrO5IkUFmF\nJHJ8Uhv3poM8ccLhnR1Jw5xUNZvIaSMUz1lOnxZI3Jequ5WBMSN+Q5DSl9Do\nziy4WGR1dEel8TfEhgFagkc+N9NvZQZyq0lRkD8NCzyeDsOkECebrQJaZdJY\no5Fy58OEqSqpBLFgaOoUlkOgI4b9JB5F0moFVkyQflLXm+1LUbAqiiN83nzy\nemjfGe5fELfXdVDvVWFkhkQYiyesgzl2jrmZHpnEUb8+uKgGYhfLGvkF3gav\n/NSZGjy+lqzDgFO1sRwiOqKIdI6+t0sZlbMWx1lyrM1RfAl/VVz+iT5oZG/P\nMihsHfQmzfQq9vn0gB+n7JMS9eFvGTpxjmIgBm/UyamYVjxUu/USzx+nmjDs\n0ROaHH8I20wd5N6DsMXJ56b7Z7QtVO2ZCsqb6eegvnpupR3mUizu1ppP3uxC\ni9CM\r\n=TuPb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC47H7znmifoWObo5zZPy0iWMMIIzqxyWQQVZb+tHGl6QIgeYaT1nLntDekQ63pXvxFgbrTTP//FVrupegkFcBC2Tk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607944586-973d7b0f.0_1607944738761_0.6641386965356204"},"_hasShrinkwrap":false},"2.32.2-next-1607944802-6397f7a4.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607944802-6397f7a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607944802-6397f7a4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607944802-6397f7a4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FeUsfUmXv4/P6+cDxDM+1F6RjoKvETVv2DzQbqMFxsqWsHFfrzSzYkIBPdXyMeNQaEW9Ea9JH5i/XhRXbaPGsQ==","shasum":"a84633466e08a70a84eb01e74d6c812ac1dd6a4a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607944802-6397f7a4.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf10rwCRA9TVsSAnZWagAA8lMP/0xI9S/gqRLh26Dh9Zy1\npMKBOmHIzDP4+1clJEybA7BOyu18l3I1kW/KH/6ZlyL+rV6b7c+RT05lwsZ1\nur1RTql2V9CsZD22GFYLwuc97C9TnT4BHeKVzPEvy6acAH+FHAqzwHP4WMjU\n9XItqvOLAV8XS2f2sPKZWPnVjEqd/CErCsvfj7XXBEt8by/WPr6C6ZihdYFh\nWdvLw4HjTzgnO2uOfaC5IBziA3F0BP4YB63GQVZNQgRl+05iWcKf6e06j3vt\nZMMNnGr6pzfiFkEww8+ZAed+scRMYMLB+5oRMiMCuf+B4Uz5/T2sPFNyDH0W\nTpg2mlPCZhJ791r+6UIRsSWwxmyPKnLpDEISGKdAvhlRWkl6ms5e19bgX1qz\nZyw9gZJiIuSQ474IfhODGitFVO146ZI0x5o76tv7jRKVUITCIP+f8Us1FVCR\nvpB+/7FdtuHBi+ZU5mbr0hP3Cyy1IvtNIM5y36Beql8vohJQAXtZb7OtgE4i\nbNpJWdfL0Dx7NVrF4xdJkCvxU0ARfJVZ+TzwFYaDVejCyHwnD4IhzqgdBua9\n+yJ1RXH9HTUrOKjO5KFQJpagINilPqp8DYEW8jncB/bKB2CmDrEtPjxYH3pE\nlXu6t8VYp8VdPRT+8iqtw+yKq0Pp+DXaMVZDFjn2oWnWkeU1zKxIiXrX5bhD\ng4Wd\r\n=79Wj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFLSJ5woZuABynnJ/tpzi1BvcS6KdY7z7DEFKPMRcy0ZAiBW2SCH/pfEPJSiSnmllRn50s8TIuHyYaLxewiI+I9xiw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607944802-6397f7a4.0_1607944943845_0.6144199832106192"},"_hasShrinkwrap":false},"2.32.2-next-1607951952-15540a8c.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607951952-15540a8c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607951952-15540a8c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607951952-15540a8c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DTmfr7AxEh1c9XSBN4829iYeiUAcGHWIZEQh69Hz1oWCKui2+LTknhiefW7PWqBCkiEK2EFHvJ82Gl/qiwTQZA==","shasum":"c1adb54e7c3cf2f6272e333177987e5e7591b864","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607951952-15540a8c.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf12b+CRA9TVsSAnZWagAAz1AP/2dXHKob/wjyEHJ2Vp1i\ng8QxDylB9K3H/9l6R0HuP3fFQapxHN49zlKmyoqm2LjOMFmMwO8jYDMleYRx\nxDbHVyKWGUeCMKR+3LqYR3YyUDO25Dh475zjDBnFuEuQea4KFi11AuTTNt7H\nW5J7EzlMMrTHEKHs6XlSYSG2WIpclvGZSRSdyvefx40mEjdLDB9gwIwLRSIi\n85HxN0V+Oyw8CxQjeNXb0n3ZzyZpN4tA2ldJ4XQPkwn5iyTIaNZgzeP+XkVt\n8Ypnpv2FJszi7K7JCF/5CO7ebP5amSmmyExIyfyfAYW1RvKtqrZLQhUyWSQZ\na3sLpLnfDu7XrxEPrNpCoAZdKaCcWe0SD90MCkfAE3iAAtvP5Zlja+teSJ2z\nizOW9H6zbWyyjuoHRUS9XOkQFBEywOKOgOIOmWw54xySd8CrYC5ceRjpWTHC\n+Tn7It+v//K2KdRZTl1qXfJBaOgdlm8bdy/it7ZlzlyTbl3LpDg8xllb8so+\n6qnrXfbxexaMQuMcLcMnj8DxrHEJQ11ANNW3Js+dy3nB04rpjxFaTVH7TSWj\nNcaf/+lTaJPcp9lp621VJ0J/qoKJRczv5mKKO+r/W7g/6Kaqd47MKKqle2Pp\ne1wPNiS4hpwEpBXhTTnfGvkun9Dh75EtDAOMgO0eM/1Jfx4/sI9Fphhb3F8b\nRXXj\r\n=V7Sd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHd13I4Jo5KC2vAJfS8BLTv5YNhLefNnYQtplGVi+WvCAiBZYDcPlDNL0dkBpMHnchSXl2B5Y/cqShMOEOYUGrK2qw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607951952-15540a8c.0_1607952126000_0.945799146541912"},"_hasShrinkwrap":false},"2.32.2-next-1607952037-358f7e06.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607952037-358f7e06.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607952037-358f7e06.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607952037-358f7e06.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cDM66EOfGxN2CQ5S10N9xpLifbCr3vzPPJaZBLzMqeK5kCHFgkxIbgZOBe59v3wZlmFNVsTKeZ3Xktfo/xHwng==","shasum":"4495f94cba45e7f790de1634f2c32d3f74c8729b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607952037-358f7e06.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf12dBCRA9TVsSAnZWagAA6EAP+wVTdS+cnF825440V6UB\ndqGxVhupyh6FCvxWjfYSjzIYm0LgGym31oZ1Jn9MgNFAqRgw3XQf464f2maX\nINX+neftCB2KD7ocVYKfrOcn+eeP0GKU36HUH6b1e5JS7pX6vG2695E8JXf+\nu+qAiiR0VQGJ+D069shDkNq2iY7mK3ngx0W8+vfS9du3/AZlGFf0h+Sv3ceP\n7dTZbu1Pl73e5R+5FqTj88pkBcfC4qGa5UBBsw9wlY8oGAPNF/kSMNqZfxdB\n2U0XV1rJfFHOCxuVZvmVhEBTnrnKAHuRZdeRW2KMV98AJ8ioPa84yVc0PSXE\nlaA53nUmiybnNLQUcqGcrzi9IoCsn+mi6kyl1LbpRA4thNDcFmCGjPSoepkC\n2cVv3v6XWBw8IXZnSsPUeiqBdZbrpIwab10Rd/iElZe0Jm3eb5iO5tzHIXfI\nfRUIl8OOteC51plZCLISuQkmurATIqdVodaibn6XGpK5GSfv8UbYYMz5Bbah\nJMFboSkkn6138NbyxRVYkPqz15HLjUTWIM6fUG0x+0xyRT+az2rZheAKGS/8\nPAa1GlIaenJ84WZA7gOdMNIHxbRQGXorwq100ZKGVnaaeMXc65oROurJZOCz\nMuHQWdhQt+4WPFbKR5vZKNYBLIjviLLxUHc7zshU6IR8ILM45zm5HnDXcq4I\nySfP\r\n=BEQE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEFx56k9tTTuRXs2Hlr056aEazQvsfBNHNOpGdFIm/CPAiAkO9eDYvksxOwqhgvDMdhE+G2B+UM6sDD9dTYMlnrg+g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607952037-358f7e06.0_1607952193000_0.7085848147793765"},"_hasShrinkwrap":false},"2.32.2-next-1607952972-6f121a94.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607952972-6f121a94.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607952972-6f121a94.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607952972-6f121a94.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zhtJEMxVRx8WWCo4XWVMpbcF2AcKvKalujF2Mhj/O7tu5sF7hxsMHI7OxL8H9MrrWJXqCZYLltPcWtcUEHq8wA==","shasum":"a3b91125580e6cca756a8eb8bd629d043e3b2983","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607952972-6f121a94.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf12rbCRA9TVsSAnZWagAAN0cP/3k1kpdZRodQV2uwyWJo\nlM3RETLkSpQTypZpVNlEUsjixipFQdJE+7I8IXlLYxsSm36ABKReKYXlywGh\nAs4ZfmM63aTte0PHoI1cWfxeYQg23DuE9fghOCP4SFySgvmCfIGPlTmI2QAq\n9K84TkXpcOf58PG7Vxnxu41yodoUTe9uU/ic1URMR0a9YpDBHnMveDUcw1Qb\nQETuMpgwTJlPK9rQCE6e4NAxR4opyI/irKr/JxfIPDjOVaNRAviUpcIWzOnP\nlxvX1SiyBkoylvAvccMN1cLIw4k4sMK0gW0uZ2vdY5qss7MMfXIqLepyneKh\nNx5UjPaull7zxPfqVcHDG9i9yDtFi4Zd9bRIWLhiMWGNpiS3gho1h8HnPXe8\nikvPvnlfUIW3UWDRDFn8w5b1HmK3ps3J+gxP/fiJCOrLDeLem2+RBQOOyEYZ\nBFkmTnUeSo1BmEvg1pk26wD2OpKt7UOWYdM/MWQpLY+vEw22l5InJfXYOVAH\nXs8J3L/I2VHeS0hT1Rfx9TKiWycYfpdOtt+cJOSodJxBfLcmL88Ud8A7RGbF\nWschptwdLNwRi6Jc+yg8Z0e6QdSLY5tDfooE6WPSpzKUmsPMtdEKy4ln4ijk\nir9G56dIEXtD5WG429vdI8NDE1+U99jPT2J6yt1fLB68vX+DhflXhk+RCu+V\nEoHG\r\n=BUNl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCd7f0DAuk0/mmKs0Pa7+PppnLNEPWnC5X/ff84rix1UQIgQMAZ5cyhJqrrdn/1QYJ3pUfWSWE6jZbyTii+/0KofSQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607952972-6f121a94.0_1607953114301_0.614285413738549"},"_hasShrinkwrap":false},"2.31.1-next-1607957576-e48e52eb.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607957576-e48e52eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607957576-e48e52eb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607957576-e48e52eb.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zbkp/wcojloWz2sNQHQeOno+qyP5w19vPSGU7UMdgFLroBWI8fls190QZhnE8bbyJO3DemHU7sDOHIsm+e5bUA==","shasum":"0118a51af8e251fad8831258910498bcf0546193","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607957576-e48e52eb.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf130ACRA9TVsSAnZWagAA6NEQAJ6QnT1od/XRLSu4DO0Q\nx5/7J/DAyq5Zcfu3ot+O+B2SVBmoYQeByE1kvk6AqiLhHoH6+l7KRj89vXYx\nAVSRJsCqfbycl2l1XYlFXPkvJjg0x0jOhzlOEVAlWBcmKI4eXkSOGPF9Hx+t\nKNgmVWoVEj1TMK3a8lodMGWFMCsLk7UKwD/l15WoFlX6LoDh3KUId2GAlcxf\n9qPlYqBReW/L4ubvgBlyHqgUV6pd+ayRBTtvnM7X1VZFxWRJ3ydnz7jdTNuj\n5nX6aMe5vo5/e4cMeKjXfKKDDgtr3AxmQPbqYMaVnmx4e/O7tdPOBcl7YZj0\nKQWFsdYO7s6NK/G/sTUP/4YqHhSZsUmie30ph+URvsrpHFaV8G/RQZ+zAWv+\nOw0sM4o5fnPXVsyCDg1cMQ7uNYhyhNAbwfFr5iFWkXLsCDAP2OQflekcCK3H\n5dJVKQesTpRwFpM+pLLWXK4bMSdMuKUmhLvFxmSkvx/GhE6YgjH7q+j6H4Fr\n68iYE3LyPq/ikOMf9ULOOux3fBxoH+h11OjTiuMSUl0vnCinJLfUtDo1fS4y\ngRtNy3RE6fPcjxIKPl7HdkBB0oqSX8spAKoJsa6IuBlkXdDrP1o2w6E4ltLZ\nt3UnhoyGzwWrMdyAxZn935Pz78NY/25ynzHMNoZzlW2NIUUiAtnLpSV7UBJN\nUBOx\r\n=qQge\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3huSV71Kr38TqmbGbm7hsuKdq0IOikU0yCiPJ8qhTEgIgdsQwQSF9St9bdiOAGeLllSLd5pKvQLoh5AqhmvyD6DE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607957576-e48e52eb.0_1607957759461_0.5370413370233733"},"_hasShrinkwrap":false},"2.32.2-next-1607958276-b7f6fcc7.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607958276-b7f6fcc7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607958276-b7f6fcc7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607958276-b7f6fcc7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cplAK8sLCZja++30IeCNLoKYO+xVY+ISzbR6LQwc/RJ3G1t91N4K5Ou8NfJ4/OfitP2wCcRHzB5ZSwZL6qwWtQ==","shasum":"da4625a855a256be5d11b47f23784bfe2efcf284","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607958276-b7f6fcc7.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf13+pCRA9TVsSAnZWagAAIKAP/1cZSV5NXj+412ahNmnN\nS/dtj6cNBHFFFGZKLAkcPez/GCoo4R4T6jwCBMxXqacBnsBQ7XYMC6VX0aSR\nY2jenfEDqZysS8iftnCql3sWGL5pfl4WXIfMyp0BGveLhhBHE5WQUATlvsoX\nshe4oBG2siIBDoMlhn/kVXQb3equ542uF5ujRidzGDV1et+pcaxKy2UBzgec\nW0O5eGfTaAVIvPwxLEG1WuJYB9zPgyNDvNxUzaUCly7T6XPTU7kTxh3k1vsL\n8ZOGYck4karFOFrtF9SbSTvlsbWG5uv50rmwmQDrqVTeGsUhHafa53Pb/Vsa\nKOaF2IeVAU2BJOxhZostBLUDq9no45qE6cDohEgbpX1LrG1yOh1fk7qkZAWu\nl36RFaWPbVzNAedrMx21V8TyPgQdJff406bCPiuh6a8u7n9Zow8ljVcj8rlt\nIdCozfrTwmlZjsqs0MQTlZLUxB1WafYd2ySqzCgZ/qxuudLa60FJbY3DiBPu\nJIKt6ibOluvAtBc/uOjbzCbdnJJX0Kp+6hxYQUXHRjETEIQpR0o5bCnpL9bZ\naK4ob6mAvGcEoT6Xvg/3+SlAYcTYeVNWtzFNRJ0yXMn36KruK0Ua49ulR/1F\n/HoBl1C74rCX0bsAk4gb/RQdDand+6Q2HgBfEizUPHPh0Q3klDDrTWnSK9be\nfLPm\r\n=+uVe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+12GsjPkgzPT4jiDiwAdBEpp3+2YNb+ESF1BzOnt0BAiAz+nRRuiEZPefD2GmJ2D4qDTO3akvk5CZ736NcmhxUvg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607958276-b7f6fcc7.0_1607958440721_0.5349501867100137"},"_hasShrinkwrap":false},"2.31.1-next-1607958315-6f557338.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607958315-6f557338.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607958315-6f557338.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607958315-6f557338.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6VmxUiO2BxpZOnTuQtSPiCXsA23X52swCWf6IrKD/Okkb5vMtAFmTW5sbNj2n9dHqdweNULz6qniu5QHnoM3FA==","shasum":"dabec94d795f80bfe1af8be40d46862ec8918484","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607958315-6f557338.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf13/XCRA9TVsSAnZWagAA7gMP/1hKV4mg8wmYeprhFrDK\naJQ2gJbAck+TF3O5CYG5qLS5eGBEitRkPdJQZH+aGgHLgfz35u9uY8T67r4L\n83px7fOhs3OBwI2bhZ9hblAXbBgYQqWEVXBl+UbFu9Ht2JAIbTd/Xw0lV2Cv\nEj/081rUbORdDC0Ollt7dP0jA1Go1224UsPQUX1gm/hpDr8Ox6oHrJCG2rPJ\ntKVNA057GHb43NHqMNs//5ixY/oy9/RgvYCVtsUAbEomuexsbfay3E6TVHfy\nBDYTCZlrzMJ0dE+UZFQRqtQOUVkxjW6gqvObUtz+lBumxc5Ls9F/IH1tJvpO\n6uZYT5asBWLQdgL1SQfzS604iNEKdXcT0JXmQSknvfdS8bvWyODUU2tdAnyA\n31Q5nlQMrhhZRRAepbEg1uwe9yrSsfPiWaxObr3hI+PzMLyoNXJBlGoyjdGG\nusR1PmC0KobYF96krQ7X+PVca0BnCZ7kNpSjxVWnTufmm97VMSsjluR3hbVK\ncD5dOr1OOwj6ZPH5J+E6NCz6KCdzu89t8daIGXebFo9IXUkQrWlB0Fpq6TRH\npBG6KU0ZYJynIqmAfKg5W4yOcoJJK4xp2s7LLP3Zlw0bFQfKdImS3XvJb5bo\nQF+nTx/lfCZYKuZmzWn9TZIDYwv4IBtEsG7agjFy8RPdM5BW5mOxrgcnyfdz\nIez8\r\n=BMNg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnF5G6vW2gLtJC7F+AHl/qQZ8RTDNvBxGksE/YQn6tbAIhALcscRJxiBR/Q6HVmvj00LAjnfN3AdRFM6ixI+fnqOzy"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607958315-6f557338.0_1607958487049_0.04131264657744205"},"_hasShrinkwrap":false},"2.31.1-next-1607959352-6f557338.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607959352-6f557338.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607959352-6f557338.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607959352-6f557338.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-u5v4U3VGQkotNmlUy0VZWPISN16ynsBaimpOAowCJWE2QONpYdraO2uQGWWHa5qDxJQdZUEiL1S2uHqH/ccHDA==","shasum":"67ad51fa15e53c1ec1bee9466fd9dcf494d6ea55","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607959352-6f557338.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf14QMCRA9TVsSAnZWagAAPV8P/i2TyYh/16b3WZHjYYsQ\nsI259rwiMJirjm5SlNznNr+MyEhkn5e1goqdecUz60xFOkZLmU4gRKg2zGl3\nAIVRylmHeZo96kA08EUHD0EBQyed+UuHzvj/Gm3VA/fd/JM1Bqyx20bknCN1\n/dWB2mBkQIt1bn7pYVwHk9IjZEL45tKCXFP86uo5PkVsO7RVHKkAihzh2Yih\nxha0QzAz6dSeO94iHmO+AFRz68D2qHaPFpCEtBdZzOfdBGotELInS0HGLWzE\n8T7+vx4tEzVrVdsLXSsmR7AJXJXvzfWn0ovovzljM/EdihXaehd9vxqKaxGK\nudPBWIinIJyazcqBjOFDSwCEJlQteuQ6WGvwA9LIX5V8ZDo40wqQSTEJXN0e\nVAnG/Xzvazn8jcKZVWIi0Ybuc7lXqymCBW89I1k4aYsOtE9LgX4cJXWUfzb1\nL+/Ei+9bXJ1Vxlcd9yET4IoVwD2seH3k9es3YIwXPOQvndOaEb0/rsA+V8I9\nnuzOx6c8UC15UlKaE0Yna8sXfSeGga8tRdCO2T7J3VgamrM1b9HCi/ytC4e1\nwVHvfEOI18ramT3rt6eJ8xitVDIQvD+elAPI1XnyJv4gNbYvKF/SRMcRcfjJ\nt/fZv5pqH/0vhu9TVR+gwpB66Nvpgfcot0shPY1B5tREfLbF2TbzPAiURdxu\nFQLW\r\n=eU2s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOfAdzWlWUcjr4+X6A91TPwO+QcVdxdtxdafR4mAQo0wIhAKbWDT6LRsHWZTxsugRUuil/vPQp6E7K186rOzzKqT3F"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607959352-6f557338.0_1607959564335_0.8137632561368802"},"_hasShrinkwrap":false},"2.32.2-next-1607960134-24b0d71c.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607960134-24b0d71c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607960134-24b0d71c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607960134-24b0d71c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-i+lpMJHF8Ko4UcPQTAxFbpMbHrhMA1n5FbkwNm25zIHZzw8lrVm+Ot94JqqH7kRYW1FAyQrTuIUQwDkN0C8pqw==","shasum":"bcae578917ea02aa152c204647218a2e12d5026a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607960134-24b0d71c.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf14bSCRA9TVsSAnZWagAA7/gQAIBUmxcdIRllDNZhb/0D\nD/N20/HFUR4S59UORJhRpubm9Kcim5aF6ZlJIRrh+i7cdr1/ENmhj/yokkHe\nAzVmd/B7f1+49eGdVfH8wanndZKVtB9qjMUtxqMsXvWkkSKCB6AElXHojGVy\nvX0NcAaGrwKEk8p+2Th4xyrpeGDletgTsGb1vUezCCIRynPaH2GPHXki60tb\nodcyslnFDC8Q74iNLCdlpopxj8gvcS73+I1rjU4J9K++NmnpN3tvqYjpv3A7\niTAjypkGB4Ppjd1lQ9KCEKZ5XdZqCS0gBT8OhfCTPjENg+fx96366Ne3Wc3s\n64KwyertX+vMwAldZfXet1nSho5uk0aEgSRWX3KJ3qjVlA+DATYTwBesFu/Q\nmYorvNyTdUBep5ZkcsynvikxnIvS/Sp0vHpJ6YuFKEtjolfX73VE9YwQudpp\nENHwWXuggPKSCEopfHzw/3wOobnP8mysbObgdgSL1czJSpaJTfHyfkG2IOBo\nMug+vD35UFpbgH8r4pmYd3r6f3PNGcfh+UkWl1bl4ooJ70dF1MQ34MwwzAtq\nCYzh/XjqVmTH5TBM571HoKzGwWGmWBBHXFxJXb9G8DWEq3nkN8+lLXLHMWnC\n+asQp/D4HnhuwPUcJznRdKSArFirmfLJPGlA0C2HRk0pc2/iGQLrY5Xm6oxR\nfCqa\r\n=X6JP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMnv5FaHs6bvzmHl/O+8ncBYCawtP5TmmH8jgGut5mSQIgO6nTXYeDLVIhoHEl0OKFlU5KZjppn/ble87SpOQMO/4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607960134-24b0d71c.0_1607960273621_0.5037181399828801"},"_hasShrinkwrap":false},"2.32.2-next-1607961083-852bc561.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607961083-852bc561.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607961083-852bc561.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607961083-852bc561.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2Dl5ZdOD1OD5DLsReWHg2ACf+aF9uDfuzbwLEDJnmSAYdHyHYdkoVximaguWALoJNhT6ES9zpUgOkh6rQzmbTQ==","shasum":"ac0a30bebfd134979ad62f34c5f3ee383f124bc5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607961083-852bc561.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf14qQCRA9TVsSAnZWagAAE7QQAICpFLhb9SMKZVt5SvM9\nLEFiWuUPUlEjsSmIQdlZZyS1e29Snjnv+wBJ237TtvR1oVOgEUHGI41t6LH8\nBww5K7oow1dnrLpwbtMbqC5MCtbmczSuGrBRTljJxkdWRkHmPlS3cG+EzU4P\nA78VKIsLxomU+ldSPPb1G67xce95+a3BXem4aHkNmGPdo2gXhJPllpubG+Nc\n4zkufq5To9IpDVRA9xB1uG0nKTAF1JQiSeydk1JzKK4XGTNyK3J9qDCekfyY\nXNudhmPDqoPLL0L3PurvtLNQykr9wnlq5WUf63nlxPanbw6TPM9ehrWrLyNr\niIdY+GmFmo+dHiEdeswjck69YARuZ0P9GAx6AbPB8PfhbhTi68cDLAk4LrH+\nssR99R2rVzBvuSxF5H5eapWz4tU8KQEWq9A8XuoXgzCPQ7UXH3I7NWImHZyp\n4Osb2dt9HbZnBpMeWaRyllRSbEohnb+4dU6vq8WW/ECBlaOedDxilV5Xjv4b\nNlg8pFkn8da1Drposd9s0SQA/1+H5bEGVnNApCY9Y4Ampaw8AtCCHKpJNKw5\nZ9bQg7E3gLea6gQmDTtJMml8Kb8k4ytQUOZe/A58/mD6NFdIAtM+B93/HmRg\nTPuhmNMQzmOgi/KKsQe0U+TcQImf88J+X5WOLyySjiDU+bov05KttFJJueFy\nQfA8\r\n=9mMK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDa4clKCPNzZB6mw5RSDQGmOul0399F1pZK+7HINzhG7AIhAMgnT8RTVuArP5rk6LKGO0QB679Eg2qVUnggVuwH3GvH"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607961083-852bc561.0_1607961232178_0.9618985350057763"},"_hasShrinkwrap":false},"2.31.1-next-1607962569-26d8e4d2.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607962569-26d8e4d2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607962569-26d8e4d2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607962569-26d8e4d2.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kcPLn+0leE/vmjjRjTdPA1exJGn5WJH1aQ4UCiMlPB3f5F9j9tGsSuJckd3oG5PWu9omxJNLbLcUaKdhdna79g==","shasum":"ba9bdb0c0f3139bd7cda9cb7bfe395ab40ab53e0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607962569-26d8e4d2.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf15B9CRA9TVsSAnZWagAAvdcQAKIzgrMboJ4PC/lM5GH2\n9ZxfC3DMuEUhcBXYv8TpVErnpHG6hGpx2pcSQ71g90sF/xc1WemR1P66UZwu\niXG6rUs9AhnuSNlwWyBSpFGim4rMyxodEk2a8rsRGyY88Jb/yKng4tuxqfao\n58/OMrVONJHU6ETUKbmE6Mi6jczfSE72qTglsCbYpovgQeU3sz/HZt+uxeL8\n49ePaqHSh+Jo5MbYHT5nT9LiWx91pnAshx3rBNcSuMglw62nAWzM7x1N9GJM\nTs3is8hq2Gkk1XUvFUyGosVPZVf0jM9MENHpo6FbY3wjFeANwbkkHy+GVDIU\n2HNqohp3uD0+yrAotWPO8P2hFf2W4vrjz0cLU6PbPP+Ps7271ayAio11FHHl\nbO9WhBPz+plC2kTW3NQTIZ99kR43ArFlRvSWqDwYB4eTeh1kO/qTPd1kK2oE\nDZfllM/x3qVj37E9LalPZWhsuEC61G+mZkjlxOHp7/tp7ux4svtC6AMKd9T5\nYph67dAYrfKyiLwmbaXCD3p7W/08WjGXqKYG9KauzxJUUJ4MHBJM1Inu3plV\ngnudVzHABFbpwwluuOWLRQSg4lV+DcqLtKb+Q7mpHJhtJAZfPtoZrERkHORO\nP0YTOkrpq2f3YBtgG/vReXlkfyua6Zt4tD0fxsfOLmxVgEbbHDAskTsnmAJD\n6tPW\r\n=osf/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCC68voEQYyunJDcOx0acaJVikYMbS4pCug2C3CX2/RrgIgA3/kORihb2H5xlzop7C+uB2EEnf2KgXyWbwFC0ZXnf8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607962569-26d8e4d2.0_1607962748436_0.04068555447777178"},"_hasShrinkwrap":false},"2.32.2-next-1607962772-c59ba19b.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607962772-c59ba19b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607962772-c59ba19b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607962772-c59ba19b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-l2fGC5vQNttwBwQP+odltSm1vJlFDfl5xo/DacqXuz8LFzgv9u6RiLL7CS6f3ScEjge7OgUkOLDTKbkEbRxS3A==","shasum":"ddf688b62a76036ceb3f78f6681775e2f507840a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607962772-c59ba19b.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf15EsCRA9TVsSAnZWagAAmYkQAIe1NDcvRD2vAam8Mk6e\nGjjmcJbonJ4z3Y5BVxxipJLzGKo4yjtH79LBLp3r83C3aOiaXICJjMgBh6tX\nXvuoJLzrXOWXrXVj2TLREKsU5Pcf95G4eHn96OIt49kHJKjITAxoRdbSbT84\nHi+MjwEHxx9duWYwsubXeUfKIbVvlGNuk22EC0+GxoLOEHZUQ0CGmwvN/Ixc\nb6c8yQa1DB2k+k9hRwR+DP1VKQZUSWrD1nLpJdqgqMPK1K9Rfj/LztxTCSF1\ntkatEaOgTfh/0tdwdLsoYK7CE1WLLkfnWLoSY1azJxJjWq9W+49ShPNOD89Z\n7ui4RzukvSAtDJg2JsoFQosM8jDaLio6VnY6GDBkezvrOCHiLzlcMZ4Tnl3C\nVFBOhJUsZ1kswgT39wZdp1HVjNYt4BrvHmIzE8j0lG2uykgwZqH4R5VLbjmR\nsvJPHnnvtcV7QTf4qIi3PVUyySOUjizHL5uI7Lf0BX2Rjvk5MH7NIpgEAtAr\njPgbkuUAsOgHEKTs2KcyfGwDFyFf54pd6pfBCcjxhq8l5AiCeI70Z+SUOaN8\nq3Bx+7etjOQvxmtWA1GQnyr4N02kF/YNgUyGAdC8AVejFO/SpN9v6w+WIPLF\nYXHYgB5NUe0uemZR/oAb0qJzdpPRwDNNDpa7j2BlwKqRR0KvLRw73tgMFtrM\nk8DB\r\n=hHpl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1TYuyZUMW3rJvH+OtAC4jVqQgiBF7ef5ma4MINAJu5AIhAOlBnOIyDfmvI0D6KzoQgbIovf8Jzb/c280vXwrOH8E4"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607962772-c59ba19b.0_1607962923727_0.8426004728648249"},"_hasShrinkwrap":false},"2.31.1-next-1607963703-40c18b89.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607963703-40c18b89.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607963703-40c18b89.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607963703-40c18b89.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rHaAhup8rp6uOy+OMD/eFv0RJ5nVSNQaK2qWpvK9NHTwNnQlc3I0Uuu5vPGszKj0+Tq1V8GqYfoXk2qezxV8eQ==","shasum":"2bd5f072fca35573594654845122a6a667b6550b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607963703-40c18b89.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf15TfCRA9TVsSAnZWagAAGY0P/12P47lgdtN5c9mB/5rO\ntnOB6Z7GeTnmlFenrh+Ovatjo9Tojtt5DfynPpPAkTQGQH4veXqcrIHQOIJt\nd9kkNQizYunQOO1svW/LAE72FDyAFtn5hC9u/X0cECwCPWBVU3rmBabPRJyI\n3BtBZZp86ka2TzQ247pLY2pZKXinrrzdLLC9EP8994wQlVJKgwv6P4gthagF\nwjoB0tS7WLTGjmVeBwqBrMjjC/Fv28NPW3L5sRoViza0fQHpoe9lreiZWSVv\n3BHs4PQSS4ZAPS6XzdWZPn/RFGO2VWb57nbEjp9kXCrZAXdFncTjNvB58r9i\nZnbeS707LuW5Q4MrewlBVlyg45WkW7z4OKZ5yHjnFl17WAiE3B+tRDySnZzk\nuaHjvL+e4S3GSKiuXiFzMddNJZj4bXUTlj/du1bnRviL5dAl0XpdU3qCilxi\niCcIyLZiEdfvdVJHhtrgVq2QNB4e3v1qCwgDIsGUCKKWUJ/kyZ26zkPOinCs\nJN8WhXhkofLBRRIn1hhyh1f7iP4rWFNrt5cSGNqnhQHB2G4P/A0jnPU924Jf\nnZHhiCwDMZg4yubzNLJ4CJkQSJeGpMRM4Gojz9fRHgGmy1Vjxedi/5+HeKIS\npRV1kwG4e96SPmV7KTLxk5oV1P73lvpbaleGKUgOkBoUqI6WLIiMRd5TAXXy\nJqZH\r\n=n9wp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZnW20YOit/Y45YmJLJ/zH2xGzUIpOplM7vTSyvc6+UAiEAvkigSEUkRjlf52UNO20xJ+dFYcP2nGiyLiIELBL06yE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607963703-40c18b89.0_1607963870930_0.17525436162644192"},"_hasShrinkwrap":false},"2.31.1-next-1607975140-0c1c69ce.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607975140-0c1c69ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607975140-0c1c69ce.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607975140-0c1c69ce.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-246ald5IMPBAtdf7xxVzPOfwrPSq8UHZkXH3ZxXLgBm8FY/Gzh0Cu7iMq0EYwvZtTrnOKIt4YdUZkiJZCmRpRQ==","shasum":"0001ea33c6c8747ad23d2b7a24435f628b554221","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607975140-0c1c69ce.0.tgz","fileCount":58,"unpackedSize":141872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf18GKCRA9TVsSAnZWagAAK2UP/0FBZXmVlqII9NmsE5QD\noH0J5jGDtyiMaaxiRsh3DggU3I7bCFHpNh2NZz9bVHGgb4aJWUK3gPPp3Gkz\nWNYXJKlD997DZ4zRACJBcdZig2kclNfc7Ww1D1/aAIsoEWmkxJa1cghGzjK/\nD3dKsR2QbpZZb24kdspH1T8+v6ISW2OoRWYv2LzhSXcjuWXZ7JI+4rP/CY9J\nhJlpuRM6RMR/mUcAk+lclpKFHlm//JRl93zzf/Wb2rgWIXtJ1BKo7wnijWnB\nbsFK6cYJUUrDBsMvhV5pWaFJBzUDIePEaEx5tZCx0JbAYuEfduh4NzfSwllL\n5dD63d8enLFi+GtrvXFOV9EFUWWY5SCuLciED5TqzXnUKwG7vKmhkPtfUqQk\nfiMwF8tECLDAUsnXBfA6XDbGyEqD9emezZtKUQxdhm1jJg9HgCJmseDd0KXu\nvKW9ylFDiZwnr4GQBF2X6kef9s00FNam26vSPcwRpYZlSfOMaypBlT1nWwez\nk0ScIJp0Ezh76BnYeUDV5ufzWt/t4O4afM+nogcmdHJItJCtSreVevpPvfuU\nl7sr8mTLvl/pfItsPRdGpt1KN2Vhn+vQwu4ZON0qbGzL0x9stLV+UI8d22XV\nOwF5cP5HrQrN8KN8rgh9TfQseNr0eer9DqpHtR+UaL2yEZHObM2Rpo4OyzVo\nWeiS\r\n=v8TE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNiZvEpx4vyht2KUFwwhcnOBvyHVvb389BuEAcUYUQ0AIgNM6ymnAt5SzY/vdzOoXMkLizBTwAafh6yKG6yNIC5X4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607975140-0c1c69ce.0_1607975306218_0.33210881031087114"},"_hasShrinkwrap":false},"2.32.2-next-1607982223-6c0079ef.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607982223-6c0079ef.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607982223-6c0079ef.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607982223-6c0079ef.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8ZaO2w60SLr6FR6rF9BgLhUERrYc6BKmWfNrepOox6GugzFcyk8H6t9oJyY7jUy1Lk3gHTCouZ/9o7y6OoX96Q==","shasum":"15223daaf1e8857be3e62925329deb72e2940a1c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607982223-6c0079ef.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf190wCRA9TVsSAnZWagAA0qwP/28e9nPgdjewjpMDQYxs\nqSip7BU95w62OTDXOjz+Ax6Vq45LOW/Wj0fZYCRvoHXB/2gYQQaSTKV/Y0rs\n1tRbRyx0pntg9+cKesxT0iKDpQObZWAMKYgowH5wv24h+6srrrwpBKMkRsrw\nUwBOTWGHKoFX9TVZj92lgIdkakNyf7/lKNdoOJ+SWnnufKW66PLw3nDWaBMo\nBcEEhPJzp9RQ2wSsYDxEteImiGdSPXAJJAnzNrmyewIzFcFLZFSKYFwZd4aR\nMCS4yjLWSx+4qSSlYb1ofoFTWe4u/lQo/XGR+bLb6RXeHer7JhDflOBHrk/j\nsfm4hMwGJ2hPytj/jTttS9udGL+C/Adn0MMw455+GsXt9H/Id4fp8evs7HrC\nHBdDau1Png0zLLx18b/vJHRo4ZRWWuggE8tDw4GaQrQBnkNzmYWti73dX9lE\nWC9d9ZtktOa8f7Zoum2ZC3MLtkbxamlOnlTEWVPDnfS4Mim1nR+oEEX7B1SE\nMptsGRNdQZRqaqem4pwcrl2XKng20vD3AE+92pOdY1pRbuyBrZ62JrnscZNm\nug167bQ0w86QE7bPKz1DRAL/7iqecJ8rzeil4vKeSSz3ufeMemkFiht9V6Mr\nwqYzO3QK3SPd7PdV1bSFR9EyNNRrypVXvmLkBbwW8jPwDYsxK6kbgIkOU/3j\nKImJ\r\n=11Ex\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/ioeLR4RYMeLsxBcM2JJVFHYH1NlwgML/Nm4bqDYabAIhAMVJiX2mxLBz/nYL4xX4KfDTFNnQA031aAVeytn7JF88"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607982223-6c0079ef.0_1607982383692_0.0418513202868358"},"_hasShrinkwrap":false},"2.32.2-next-1607982888-4957c5ed.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607982888-4957c5ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607982888-4957c5ed.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607982888-4957c5ed.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yNbTSASjYDkS7Pf7r7fN0UUgP34fYvHlxxUm/yuN0pOkuTxmguoLUNCPS9kXmT2UuPxixoTA7oHb4WiRRWvnCw==","shasum":"6d145025d6ccce2baf0b78192be2720e530af3f8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607982888-4957c5ed.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf19/FCRA9TVsSAnZWagAAKM8QAJ6ff3/4xEW3z03UrNrU\n76UqJvTZ7/G399D2gDWogCNv9QXzDXqLyvCnrzqlpD/ihO2whZybE+ekXBLv\nNHu9q1R5Eo8zddDssU7M4MdHMibtzLrfxxTnMwnHB7B4yDjdJGNfNaOf6+II\naSYp+7l1qYkLxmZYqysupJdkeJqXYivCH53dgjk022xScvrOlVQ+6Pr+fGjq\nycYgUX8F4/f3Yr2vNCcVseAmDXSRu0R9IMlUbm8X/J+PisNmoTcBTzZB1BJL\nH+VWPXqIF5uX6HdC1RttX+rLb5V6g3QG3qDYmCSr1MBEOh77c1AihaGCxfnF\nyk5+strf13kaHNsIEmkhv122X/kbgfzlbRW4Aw7pYz8hAowzdC6tud4evCc3\n0L6owRW/haD7t3M2kSpdUulKIYo6+Ty68VcDtNDtLIfTvLjJxpjYTODaReUe\nPxs0fLGoUdffeqXGQnY4E93E4KU/iG7WPXKwh+p7qWphDWLV7u2BSB4tbD/x\nLMQmqXxjBFsNwZloOgsntm1VPNncgX1eRMycELnOJHycwSnOSPS0ATy+nawZ\ntbCnyRHemUlhR5uHbcMnlLKLYlFz9Zy+ycHZydd6XcOQYmjI0VcywZVoia82\n+B4VYCtf/TvdKsFw6A9U/Uavkqwz1sPDnhrcFjyuAB6kFZbLr0qEgkn/bkqI\nCTUk\r\n=TQYG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQaiTiEs6UxjxYNehw3sz5DEkMeBhQkA/Ndtbqcm/sSwIgEacZTOffqeHvIdDjZRa6UF5Gk5o83hJlVwYpm0diLyA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607982888-4957c5ed.0_1607983044926_0.9370426979877777"},"_hasShrinkwrap":false},"2.32.2-next-1607985622-4957c5ed.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607985622-4957c5ed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607985622-4957c5ed.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607985622-4957c5ed.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0j2iQBUwM+42N9t5z0xel5vn9RFy1ZOqQd0V4LOwGngSAfUz8luf2kAWuMS4ELBJlCtUv3AWe6IyYSZCm8oTIg==","shasum":"50aff4cb1a8826072f576b2a1b096f2b7e45043b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607985622-4957c5ed.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1+p2CRA9TVsSAnZWagAASsMP/A3MX9uxQytn6E1MMKUQ\npfKLncjWfSu2lrwqmq7SByy7PCnfHwWE1YwJysHfyB0TkgiAPNHYHp7cBld4\nqn4d5+ivmy0sknN2eDb3TicTzCa68kVG9Ubxkp45iBMYVVnx4yPE+/654Za8\n96KZK/bO/7ETchS90i5xBWmgPPYR7gG88Th5eR+pVP1DM0t8UacdO9/J1odU\nPI+wXbcwiKC1IpzporoX+w1DXBdh1xC23jgX0Eqi75zh3RSK87oUTqo9qmly\n8yyO8GpbnugBSsuMq1Wp97Si3jksJMon+RU5Eu/0DQZ3PvtYZd5C20CP0V5t\nlwvdEiu9BJZlpxXB4tiaEWXM9laZRdeAqQEOWkSSR0g2KhUpYKOdb+4ONFJ8\n1JrjHnTtG93GPsyM/gUEa+p9GfrLd37bAje9BCRsBAdwG96yOxT77ox6peLl\nNMZZ7VdgIxnq0gHVmrubkkbXTwWdmvtbAXgQnqIzs+q3dq02GxqEV9nlMz4G\nMW1BRTkVn28bL6TomVp8kbnsv2D5k3l6TlaeDi52CUj6MqeEXBOncVSQAX5D\nGlKzfFgDSe+8d5WhHjevYoC2CiXWHP6lZRaABv1HkRFZBy2p1kgmHnB6Fc7/\nADFKcLOTh7lUEjs+ILuJ14tlfJ7f06WAZYeNfdR76NjJ8MNYXZzUgyHUDYsP\nHkUZ\r\n=+wiS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJ55+25KLiRkHJk9Vq2/5FNQa856X3zJ2V66AZFSiG/wIgY6xBOcyKO3FWjjHfHpBdDUjMaKd8P0XaNaA0lfv1vfk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607985622-4957c5ed.0_1607985781870_0.9135311097567009"},"_hasShrinkwrap":false},"2.31.1-next-1607986904-d0d62e43.0":{"name":"@xdn/prefetch","version":"2.31.1-next-1607986904-d0d62e43.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.31.1-next-1607986904-d0d62e43.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.31.1-next-1607986904-d0d62e43.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-f0r1VjctNqmseOjf0N4SCmj2KYzcsDUDXtDA7NMoOMPOhm+o5zuYSiIesuY8EuhmJP4gRb8F7sFxS87jc8PrbA==","shasum":"0dac0fc028fcd7e9cb6fb11149313e19cdb4e85d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.31.1-next-1607986904-d0d62e43.0.tgz","fileCount":58,"unpackedSize":142992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1+95CRA9TVsSAnZWagAAYIsP/1nOjGgEHwQp0GFtylzM\n28m8GKE56hxHPWTskeliBuyH2rlAgyqjbj/K6AUsy61rX3KRENxU5XdcwnGJ\naNlBj8Zb64MxM4G57lQaEWGHuX+gATSa5ceJueyXAF1a879GciBYSZouOKqT\nz/P1fcqkWLcCGBwdl+h83sxkIt5qWCxMEpSk0ZG0A6RopB4wlcUlJZNwnHGO\nBlDrlJ/8TGnqvK9FZCPRlIti8NkkMftswCWz5LX1U0sx9ILEBXTtS+QMupBn\naPNmSRTiysAo50TpjJ0NYtJAe7UqSAslSz98qcWNjvTwGRJoMap4XxVgihIR\nW05fo+tV/dkoec3+Ixl3f0++3TRFYarZVwWQbfIqY2YTCqLZwkEzSrBmvOiO\nl+glum1Fom4UFo9ac7pHOgj02zIM2+0vfj19a+kn7RsQ0lKlNohhK5EBypSk\nVgQUVZtBXOj1xrG774LjqodJHgdfdflg4euisZovYA7uMIL1XSNU2tTNcOcD\n5RjJTh5Urgyqbw/E650PSIfcwPcQgDBZRFrumhxiWlACJiy4A8MHU8mMyML5\nfx94TitzHF94+/9lBi7VWGNu9geELS9xfaYMWeUxl81/H5jFr7tYF6LdnSfe\nR/DT9o0tAvqq41ppPljz+qOsBV9uiLsllxn8TtwIsSI+hsybEdwQZMKldzic\nLp+l\r\n=NvSL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC88Uzn/D2Az75ofDKgBlFJB3USQilMbn6gw2a6ZypYJgIgX2sZtBiNSbus1wXad3tV8Zc+K8Aym925yVEy5IGScho="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.31.1-next-1607986904-d0d62e43.0_1607987065014_0.13814875375224434"},"_hasShrinkwrap":false},"2.32.2-next-1607993767-ad0d322d.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1607993767-ad0d322d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1607993767-ad0d322d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1607993767-ad0d322d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6MlrEz8xF6K8kfCrzFTCr49hPwWouDe4/wj0YRyMRZaLKIl9f48cGW7C/G6stZjmOJ6wFXPXCT6yTUVtvDM7aw==","shasum":"e32135e05d218b6825c92aed1843a2a628fc0597","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1607993767-ad0d322d.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2Ao0CRA9TVsSAnZWagAAeMsQAJxPU1qr+J8qc2+fAjOM\nbuvToEoNyB6jHfmE3VMsuF4vG7PsZk9fdMbN1fj4qmwQqulCrui9YbfxBpdE\nYhLZyG3ZSFe5npp/bxX3swAKKtIeHBjx3W+q/W9fx3fVx+DS+jccx+DZOb/s\nokiC3CD6vRWlfsF1/Q5/oGvmFyrRUngSkhLJezTjansaTFV8vAFhkACieC6+\nWQocNNtC6IYtZYFjcSoqJENsqHmNNYv44yfZ9MWyIs2wHngpQ+6r5n7BZvtY\ntlx4jO5ruotMm5uYHFEWVinoaUZ/MdefLY6BnvN93Vn3ut7wPv/YAtgGZr89\n/mGkwrWTD4ol883VG+WNO3KqnIGhWETCXme8OBaHHA/8xJbEauYLWmw8/nJR\n12Ilan8xD1Q1uwkstSe+3sZCPHxzpEQVbEO7jQAtOCJ2dM0GbqB0X7GGlVgr\nrtEEbJLjtJAljOTe4idzVNOD22TG5WHfaHr3q+39uvlInB/OBHMSbnHz0b8K\nZSKjT29tgN5ixKBjJmNMSNnMX22OSYUE7GmLI2OtSQCAwuBUcHxcBR3TynW7\nxCjf6IXDamvS8sGWn4+DFwZToG4gVgQ6emuUQMbwYMdH6P4PR/wSk/9TXDTk\ntMx74M9MIFbhDQe9bRdVQ82sC23v93Wdt+3USVmQsJnxUWOciqr3RC6KC3tr\nalGT\r\n=bnI6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICnp1nHYH6p2pfUbUviypeKX27pwsMjjA0a8iyqjOT8kAiEAr9F+ye4i2RlJlVYAIdmRtqLmk7H2rM0a8fvU021bvGA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1607993767-ad0d322d.0_1607993907827_0.3997049711320364"},"_hasShrinkwrap":false},"2.32.3-next-1607996913-308e4320.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1607996913-308e4320.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1607996913-308e4320.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1607996913-308e4320.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EgMdo5ZqcLyEtXaoP+u1KCeeCmZRLyYqGi2eq18+du2/zUQGYikmFT8huErqMc6B1dTDhJf3vrwLeaKuqRVO7A==","shasum":"c9e77e1b74631e74e2136008c87d84a6c96fc8d5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1607996913-308e4320.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2BaCCRA9TVsSAnZWagAA5o8P/1c9Ezhbo5BDBReupM6D\nRW2dzG/mHWd6g5sSodFMS2O2Ug8hcuBIhlB2nUX6pFBx+Z/jGHR3II+/lb51\n9vELtFUsDarVTXyGJx8KvGZ/unlTzQZP5PGW7NBXGQUyUl0mdtN9LYpAXohF\nqQn4/b/Jj5VyNTOSYHCLnTWRF5WPno+gkZCjcdIhcAQ3mrUPvZqWhki4I+B7\ngTGxdzaatJQbIJGmOBTm/MFyzfnhqbQesB/9AhnZmBVI/c4Wasbmz706DPOs\nEXTqZITebFeR1i4PAHrz6js1jIhy5ZgH1rgQjnyTzouAsIeWQmU/IJC2oor6\nTvc+xZZri6Z3tqoKIVLj3ORi+VCv07CPyyKMxiYZZwczV/meEKET0rQgGQq8\ndaMEa8WPTm9vd694q3xtLhsGwsWibORrAvCOuuQFZCWCR0om0XfuAiaVRX34\nN1/z2bJVa29fxMaIcVZXYEvAi+o1nHcpbrQfQBpN5QCwn/ewGa0pK16ZZnpG\nt+3WpIQGOB2w2h/VZUa7stl1K5WF6ENN/Gslibb+Huv/tqEQl63chZM4zXzI\n8OjwuQzfNnJZ2sNguWZkzFxpnSWuVxzpSTu4hi74o4NYHkW2gxpCBwQllpf2\nki16F5l3SdJNo07xirb5aLEAsi/RsTLlyKm4PKRy2SoP6IoSA5vKICaPFI+O\nS+KS\r\n=M8B6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGlW1XOfDIhh+jq5kXsVNuSjTYy6me1yD4ZAlZuOoEXwIhAL+o/2eES/obbt4bAEhoOLmHx41ZSCjLXcN4T5zk2jE3"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1607996913-308e4320.0_1607997058303_0.993199657044411"},"_hasShrinkwrap":false},"2.32.2-next-1608029931-07fa1aee.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1608029931-07fa1aee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1608029931-07fa1aee.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1608029931-07fa1aee.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mzPaAbKq8cMsxUTqAnmzRKrIAHSQoFrTa7TBe9NNALEL07oRYzzYQ+ZSBPb2/7zMKBFp/BladJyci2kK2KVeFQ==","shasum":"d54c821c8dda0f91663e544ebf21052ba31cd9c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1608029931-07fa1aee.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2Jd/CRA9TVsSAnZWagAA5e4P/jvkRwleqa4Zr9d1r+gm\n92TQvjdLvc5KuKH3jvJ+yqg0D7Au9lr0DFE6NAMoENfqliK6rLeUjpq/ChMY\nNzbdhSRO4+cIiirHvABMb0IaRjtoznD9eTtW4YKjsik4UDJKm/TwiliwYyf2\nHvGXQZ2Sw5zyFqVBsL8c5/jWFIC2jx60276h5GC9avnz5ZJtVVKT++E98Qa1\n5IbDS2/YCkSOLMk1X4ifS3ea+J6+Zn/GEv5ZMza2RNLBUg/79wVWnNFfk1ce\nUab2Am56r7Qj6qW+0I/vim7Rh94tSboVlDst1GL9SBj1vX5IlMvOtw8nFku8\nCH5n6pif7NMkH3C3BbZ+304PIejrsvPplaOp7uThbgA5VRL5NQMn9uOBa+wM\n6f6TG5yqH/0VPNbUyvFnhakdf5MoEoSB8Y3KwDeh7S5OSqjzf7l5q/3eca0A\n9D302nc/OMDrNdY1qWJoUKL882zDHJzF9L22C0EGBKEuO1LShXb3nPuYduVb\nh22tY3Tpp+KyXTBCqGAtQTgPyezG6hoRg/JzrkiISAM9nBgbpt0p9pT5HJCw\n0JzH8MuoERuMJ4TFc4DVfGwHxd3jvi0MPyCtOH7YUJcOwxdSxXaNMB+bvJq6\nLZliyq9MaLtoSMocDTfjJYGerGmIf8M+OvfFuVhZw3pNYpArfZley5jieayl\nCpZa\r\n=0PRf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBN1vqBL5P6DmMhSssCkhBN64Qw4DXbcZr0zYMXkCovZAiEApHE9tz23GJTYpgUun8FZvHNHKf4/ZzW1ykrQypJnrtI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1608029931-07fa1aee.0_1608030078765_0.9034705141699131"},"_hasShrinkwrap":false},"2.32.2-next-1608035029-2b53c85c.0":{"name":"@xdn/prefetch","version":"2.32.2-next-1608035029-2b53c85c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2-next-1608035029-2b53c85c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.2-next-1608035029-2b53c85c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LUXbNmWUAkhlN2WPrMgY8yAk+BqeKEMnbSY7k37UdEAF0TVnAO/uVv134M2oeRYOHWyqLhh+ma9IYiMwQSk/AA==","shasum":"8c3d54ca03b240d036b2355d794b8453c69f0230","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2-next-1608035029-2b53c85c.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2KtrCRA9TVsSAnZWagAAgKcQAJyJ/K/r+rGMjPKJ3l1O\n3ldsQvj0fLCkxwH8UH7nAIRzx0YKOD//a922Xqv9SuhXk5VuzKzBuZsXlpWO\nfY/KQ7+uu/H7KUUE1PO0FubVvafIcIpIlsIlMSfUVezJ0qFjwqSiGGjNtD32\nFw/9dVSXfHuG8NkOaRVAIlE6BSmnd3uUS80+R+YEVw848O0ZxgTGEXk0oaR/\nQSJTByxgwG0zP30Tsjx4vLXN8+JBJEb0juD2xwr+g/zinWZycjp2q10xqhF8\nmssujYxf3klZ3O9Z/LcGpLbfe9eCwY1C6fdFDLoRyfNnQzRcr2WpARo/FsmJ\ngY9jc0sdZx7r9qRM88HZ8ExprkKRFqFfdVzlmeoODF3eslCD+AgRxHYYqCAY\ncva0IKDjJv9SOOK99kf3tsVKN6lxSLr9Kh3FZPEYsp8xX+xhpCFvkZu38jKt\nr5Da7mS74oeqeLw4u4KGBAgEi6Z+gi0zNy/FYaOt40SQYiSLwSzVEvA1Hw3+\nNkAAhKwKS4bhoNjFAbbsBD7RcwAfKJeDfTctG0X7Wsb+6Kt2nPv945/KEN7o\nAdOqARk5eP5DXy2KLUUQR2mz/xoWt0HO/AB8MYHJAbNtGeumWfSeNPkgeFER\nvflUnmea9GmAl1uoxxhWx6X9yoet60Nbj25kKSgYMgyVK6zo3m/AyG3wxJFM\nXmrI\r\n=6SVj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDby+YyT/rlft3hhk4TopnYbehPoW2YL3Z+2ChyiCXc9AiEApgr0Wd6FRtR+t2+Qh9pOy6YG4WOSGGXlV+QM2Q7QRcg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2-next-1608035029-2b53c85c.0_1608035178783_0.7328624742390262"},"_hasShrinkwrap":false},"2.32.3-next-1608036288-c85ac393.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608036288-c85ac393.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608036288-c85ac393.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608036288-c85ac393.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MbS9ckncQanwI+iZEzgdPv8DjCNzJxctl6J8VcNuEaD9zLZXPTxUrRMh0NObXJGtq7hdnEKK0yCmTVe50HINKw==","shasum":"36418787d5f5855abca74bc02c1adf50d292a97a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608036288-c85ac393.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2LBeCRA9TVsSAnZWagAAIo8P/0lubBuFm1VAGW591Mr0\nQ44h5BIhaJxQrUa1BomPjPUj5rXBHacHBTX1T6QijjwfMOOsMlsmbJh68qCM\n6W4TqniTaBZ25k7ZnE5UWyz13RFWK8OIphfOd9QLJ5WSHxNy70kGMbqsWG8B\nSfUudGZSGfzNze8N/AcEVmUMjWlB3AOaGGy4kwB0b8ugMfX25hCmLSaj9cJs\neAI+rNKUxoxeBkYcbUuoFFdRqY56OIXp/ucimVuOrZr4wgS1UcDrriW6V7oW\n5C1CqiIgjPyBYFDHLr94zbDHjEw5jmTh5Q/CrcI3J86e6izaK5Mmm5f/bC/o\n6qj0vfvqJy79HeneN9AXhzZYkD/IucJywg7VFxEPzo2HSRciMKAqKiIpc5/C\nf6Ui9FLsy6dl+L0f3y50aCpZS6A49NKl9TAYGH9XBfWNc0XMJWfJZ3ApnyyJ\naG2VxOIu5yUn2V5dPPsUNL+Q4IDNWwaI+koaxFOYqfBJOd37Nm8Fn/KJ1y4v\nUQ+sit6pWutX+YddupscQj3hhZtw6wIh05wqzvgRlXH3wKwNJ8NomlSnUO8B\nZuN8kHDlIcwDKT/qws3hf9VaPMyB7ZZMyUz/EdfijFVr7lgWc2m0obf3AXof\n3OBBJzK+i5I+iLq+jMAbCYWwdGqYc/1IiYcNW+sMgHmLbPjmE/fxQhVJcCcE\nRR9q\r\n=lTk0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICTK+zwlO6gkLOewejoogkIkClFYqfLRR+8Rv8HBvIjtAiEAsVsztgOix2F+SEhN8IlWu3tFCQZhAy5q6gljQ5U6sKI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608036288-c85ac393.0_1608036446271_0.29252806086854544"},"_hasShrinkwrap":false},"2.32.3-next-1608036987-a4571c62.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608036987-a4571c62.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608036987-a4571c62.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608036987-a4571c62.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+jO3WS5BxQ6ABPeexpVIRknyDiVtzl1fr5izuZvVS6Iwu5M2ujm1XciO0KxubhMkekTQ0xUBzeUUNyUh49FSlA==","shasum":"b1a86fe3f1f837d8f8b974a74bb379cadb28e4fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608036987-a4571c62.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2LMhCRA9TVsSAnZWagAAA9EQAIK4fCD34uULIthZtwbZ\nviMzV0DNRGCNjTkUAePG7ZZucr45n2FExUVKhneDK2R2p2K6kSVNGWuGek+s\nQzvN4muqvJMCv4zauDf2jeoesDeYmeOfMhwxRjIsYuOddKxMH9BdMXOx/Jf3\n8a9vFJYXW0Wljf2ForVtUdU5VlF4Fyl5VevAqjSW/DFs2y6CRfBB/+j+Wxnk\nbO5BwMSSzDWe5rqJ49lLw72acUSJAsU710ECz/XdBu0rFJsMvASd2uesxTSh\nsLP1vQCSG6hAdQf6w3TaLKA3m9dZIhXrbTVVmZJUJRXCMDYalBScCB82pSZ+\nb9aeAqEAmxYqLa15tTvvmux1EksN6T8AWgdxVKBGaPP6q9TKgWHaV6LaW29+\noPb27cHrTNPlBV8hOKGroSq/+bOQrpYJbSYnRHMJxsk0yvL4kN6FIXdzzpeB\nJYP6bVnpNEkrxe1TPRP6+KkUexD2HduNtjWBBEHPApkEm4ZTL4DtZ+7Du7ym\nUE4wJKHxP9KsFog1GSirn5jHjsslQTWHgxlsJmHlOgU7rD5lR7j35JuZU68c\nu3u4c97WIU42OB+KWrjG9rv8r0CNy/07Ip/o+dxvet7J9KKfMul0rpyvW8IV\nZl/Baxlyk1nKR24B5EMJcEQR/a1WZsKH8+dTVPopGqmqU+gNu4t/RaS3gbof\nA5Q7\r\n=XzGK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNfzv+1jBIgFs2K4Iv/xgiLY0/1snrfOsQvynIMwb/cAIhAKte+GTR8RjptPMSUzNN8Hh2jr/5O15T4WJ4cM3IixCJ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608036987-a4571c62.0_1608037152598_0.9837949872350458"},"_hasShrinkwrap":false},"2.32.2":{"name":"@xdn/prefetch","version":"2.32.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.32.2","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MDULUdGP01f+FFnA5ZAd34rJ+mQfQ+S1NC9acVbExuOoKzNcxaWXKtP2ID0uG9r8RzXAw15QVGpsIOs5uk1PYA==","shasum":"4473309eb79ad01a293569c52395358332214b4c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.2.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2LVHCRA9TVsSAnZWagAAAioQAKJPSWWx6+mFDMUWtqKu\neRyBEW7IyZ7xI1mjrTqrQ8ozSxAqH1YGEy7AKI8fzIWU4ROdlHHx7xvJAPTf\n6ZtepOvDmbz4NQQ/lUKmDGmj/XI6KDigp/I8O926cdH8+ZJSsk4BgaiJZXKY\nZzPEH6AWtDfDJ4PQzAd4gPVMF1ilUKQdTWIuoWOfJ7I6XwtN3kIMY7drD6Mh\nKKAYJe9d5pH5g6+7DryKWFkPMRZmZXvo1AqQ9yBitj2/NXcO5ZPgOnHZjwxF\nn2lpyi/tVhr+YWibW1Sl8p6MPTVgkoKu7QUCHNVsCiPnp6ORo95xkvAQXBwJ\nJtakBZRKa1NaAd+hnoc7dmx3wGdI0oe+6zwf7KE+YrEO2PwZRF5x8zKZHD3f\nV91/uV6yPyHwJ1ChEWIzqNqzWKVxXfnIvfemOMws1z80QXGkUvkqW69hkU+w\n+0TH9QV8+vrI2HEXI4v59lM7mP3o23Qt9Ute0wzKNviSrma9Mt742pRTyF2Y\nyrFLSywq71TSfX4/qWfbyf2s5tCRbON0KuzQIIdUGjMqZnmloS7kud3X2DKi\njAk3V/kSjA0bQbwbgdOWwPQGdTLdlh+Kxy9Ile7jkOj14CPcbCQHHzuT2Ch+\n1zrKuDOMbGcUBYAuSKW1UufwZlbsOluE0r1E0WTpVcLVUCG3b4aAN0KvJkgK\nw3WI\r\n=QLif\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDBWyU5os1XKZdnxp79s5l6bSdmqIzxZhXPQct0NdbuKAiAVZBAMN4z/B+DuzDoBFIByKZB07NEBSGtOEgLrgbKwlQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.2_1608037702977_0.2017964123914906"},"_hasShrinkwrap":false},"2.32.3-next-1608039440-6efd4c02.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608039440-6efd4c02.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608039440-6efd4c02.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608039440-6efd4c02.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iIrnbFcX17HIDGDwYQuJ+ZQWAO9iTkrnR5TVkoBRLXArTo6Cig/9hb1LdsVZzFGTfYZk19E5TBL4o9zkdMtPEg==","shasum":"74fbc395a82dae0ccd167b40a45611778a4f1b76","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608039440-6efd4c02.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2LyjCRA9TVsSAnZWagAAd4IP/iUH9WDUyYuUcjN3pDp1\nMDPRAYBKiY/jqmPaUUdQMvx1nSpsbsDsaXnxEY13NIPHbe2AYrdiwoPUPeP3\nREE/Y74Pz9abjJV/MRoMSg2e5vBiGnZIWO1caKR5Tu5vvpuOskgh435+xeEz\neb/uF06gNGGqFfaxxEoB8oL6VlnAPk5VS/7nHZ1rfByXwbP6Klbk+9eUdw1P\nfUK6najtFPMtyQx/OINstvWsJRDA/nF0II0KLvYHJZ837VmNShmmtjq26u6N\n+lNWD6CqUaTWr3OVG8MgYHVl6V8bJn7j+OmVngd4daHpg9K/bGEU14CiRVYJ\nc42LB3ybZee4Q8fcRBwoTghpJJ5A9+0EdgCRiJlUVbdS1n99M96SKQ+1oULE\nIAxFDRpJcBaGUD5XRzlvNS4sHc64zzqtVeQQFzzAteUcY2ixa84dTxV4ihIx\nVj+dznUG9lYouu51/XXcIFuOVW7OzNo4L8M0LiLvoQq/RZUlf8ROLDz8aDJn\n1UhBtxWAM2blU0Dk6dphF31VU2pmG1MzQACwEoLkFivbeqKY/o80lBLZopDt\n3Wd/oHINFNnvzmj9vJi5qFDy677Xb0Xg3jtjJPrU64AWm2cI04BAXPXkDB8g\n1naKeNHnbqOoHDPj/AKstrvuzRIKbcFRTbs7lu7Xayx4Q7fmHm2++0336UL7\njUnC\r\n=bZnd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhKmNqD86eGcpPqb6vzropwf+Ko6+vOizF+dUL4lKpHAIgUSy59iNLGmIB73n+LillgPwFoQDq30W4ZS4zQ7o/PO0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608039440-6efd4c02.0_1608039586854_0.06775890353582947"},"_hasShrinkwrap":false},"2.32.3-next-1608041026-b2847b01.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608041026-b2847b01.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608041026-b2847b01.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608041026-b2847b01.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KjWqyF6CGYHZvfLnqkR1bG4iWNX2liG19kCdyCgERbKts6OnuCVDQo9p6BkcHzujqPawfg5lrHqyMZ61U6A6FQ==","shasum":"bddd5ab9f0b7a2bc13e64af643c4a8f33b315af2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608041026-b2847b01.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2MLgCRA9TVsSAnZWagAA1PIP+wWH0IaJzU2K0E375Jq3\nlXZ2vx6Nt78KbM6oGidussRfbASUvZ5LByWasvbbCt618Nl6ggoFeYxAAta1\nfrhbAWKx5v5o4sDSBF2h2f6FbmdBfC0LsCn+1muVPCJQnianle6FrTT1fAPu\nuvC4vZqF8kFdfA4lvo3vTus9gkQgIEobgC6S/AamxXJgPenuikhuO9MAnd0B\nqvdIKYd1Pbl73i6TOShJea2tuYkSdLJ5rZ/YOfV0e6robsgh7FAj35mh0SuP\nMmKPim5LvapsoLMmwROwJYLSeqd3lWOTBJxVGpGmyX2QnptfmQYKxVX7yGc9\nvEyPddQEFZyP3AAZUh93fle46enxPGYrTGWz5KCCfb0rsL1+3380hbXJ1Bv6\nz2BrkkkdMNHky4X/ObKLSerIMVPksvQqdIyIgg/znwx+KIX+wGeZ3fRNhwE3\n+xTZwH5wwcHBuW31h04w1mCD46q4McnyPT82tXquPaScTgcNxk+zuElgwfn4\nuJnnVIJ8Kl9cs9ZqwpE5txtu8+z1BcsAic6kyPlPVu5kTKlaSO0dpEGTZyik\nns8kY8+Ls5KC8IhHEvPpFB/TpiEM/7RgI/bWzjZomMOF7PfqIKiwxkjjPT0w\nZH4SXDQYUvmcPFEiESr+PVHRamBxJykfQLT64TisVqvkgWMvaxsS2cDQoTh+\ngYXL\r\n=jFJf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQqz+ZKTFeZn8WOjfGo0FmPoeeb8c6T/dUtTP3WOUEQAiAnx/DUEsGILUMYox9rHgxeKwmVnzUyQZ3eZqYOk4wEyA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608041026-b2847b01.0_1608041183569_0.6111648642335819"},"_hasShrinkwrap":false},"2.32.3-next-1608041346-a7577626.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608041346-a7577626.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608041346-a7577626.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608041346-a7577626.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1TqxUl5d9miBHQCmzoGdgijJxvhn9o/IDRGvwK+/v8moUzB4sd3L5v4+w/s2ZqdQY+F0+2+sllrHPK65U+jPAA==","shasum":"f148e63a7bbdb296236cd8f47ce78548e778f628","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608041346-a7577626.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2MQyCRA9TVsSAnZWagAA8ZcP/j7qeEWi06HiKSOAFg5i\nrV4e9dyhguqTb7Cq9hO0Qr26NAU37CCO8BIlEwA7k1UolwmtFXuT+KNBYNeQ\nzxGT0u55csYm1Naj6fInBgcZIUkYRpGX6/1BSBCESTN+xEL8Jo2vScjjBzFW\ntWKz1Qf1Nr47WCiT9/MnT1StHFaXbhoN0SNyJr31NChna4Xn8qnNUYnOXTE0\n7MWb9WuxFbO56MwX0P8c2AiPPTmPAUoA3I7v9mN9sAUVqY3CN0EVtYV6Q3HA\nd+hDBkq9voeksIZH3Oe6xAxif6Bl6c1aiU+HK1koDNzLj+kXv82XAkMqeh10\nRmmBB2qkYACPhsc71uuYXVspYfMv3CmbkcFsyxQ6db+LuzLKEQ3y8v/ILtmN\nIJas0EFDXXgj+bIlVTp1CpVSQzkqsWjp0h1QFWKJGzgZeEORWVp0DfpD5CPq\nlb9Mt3ple9vBUojAtfW0jNircebBCwr79BWI93UrozeqfEPKjUtN5Fj1xWLm\n6exQDXA5tcGglVXQBmzwvMitRnFcYvl0+Vzu4prJhn+wpSiHaXxu45sXi81g\nDveRsJl73jxpPsdmD1zoQ+Wu52cQk3q73/KlHGtelb3RYd+ZINp5EIuEn0Fb\nRm9nHAniJ4gCNgJF9yRDBmudTgoWB18HTzmOmgi3sbCGRbSjulRJX0VJCyBi\nBfHC\r\n=XyYU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7TRUv0i6clV64/JR6ccmw6UtZkQQ+EqllH8JnQtdL/AiEA2lhDMr5k23u2dQvsxdIMcreG0t4Lw50dYCHBJZbju+U="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608041346-a7577626.0_1608041521588_0.6964753170958284"},"_hasShrinkwrap":false},"2.32.3-next-1608042160-2ec6cb3a.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608042160-2ec6cb3a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608042160-2ec6cb3a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608042160-2ec6cb3a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hMtbjRMWGvs04Id2Wwy77o7YyRA9FbY8kBNbvLxGJ0pH3Y7rP6vifLEIGnSYS5lnoHc35MZYESAFSZf6EqdMQQ==","shasum":"927f0b4420ad8dc873e6cbb757b8f9957fff701b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608042160-2ec6cb3a.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2MdeCRA9TVsSAnZWagAAKYYP/jeXmiMQTOALjRJrYhmv\n2M6KTpOJ307gELfez35fbzUv4XNL3wtq/0GjaPTUBtmqab+wbxiXYl3yvxI/\n37Vsi9o11MG+67YX4VuTdb5w2nGu1Z77+z5O1yTc02V/CN9mvB8yXfeUJwgU\nZfLDwK9doBNutzFGQzvfYY5yONEz/C3GbpTCaTkayoGZVL5a+yn0uvQch3sg\nhsEFjZWUbhq0BeqtbiDIR/zR9aaIGgZKfv7ToCDQz602nRxRPl3NIF3tIPAE\nMkJSeOpER8leyFQENYgy5RD63qGGKIlsrrZ8NoAW41mTj8JNmZa8w5Y+WRrz\nvaMnKGerCVyjmDxrYvpsqidN3OlvBpb6Kh0ERtDQ0pmZHOK1BRgk3xmJLhkl\nddeqaHGm5hhgTIhzI22ALulqpF/tlfXJGp6t6sCM3qybZut7Uc2Sn3JUCozV\n8QyBahckYDn61trJSuReiQmlrW3GN2FkC3sQuP9gEiqhppmweiQCDgsk2bhZ\n7/jU7/rGCi+usZfsp+g5ToSng/+4KyC30REv5/WwFP17pgnwF2BSjePBIpEh\n0fdNFteN1vI4SGxjfYYPv6d88Mm8POWMOibt60Duc6V4lVWTOKgxRRvxTjZ3\n7gl6v0Mt+N/cjnSgDRygJ0MbLmDw5/zbQfHcHm4nEy6ihRixKdEQOw2iynzU\n5Dsr\r\n=NcMB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpmrnu3FeFp74bEaFQassbPUVPV2jrHeOKs/i5OIWLaQIgY66MqDZKmhiOGCGIu3vrcVzQy/tTfebiffdriq+iSBg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608042160-2ec6cb3a.0_1608042333955_0.7134706063237264"},"_hasShrinkwrap":false},"2.32.3-next-1608042765-7e7a0b1c.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608042765-7e7a0b1c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608042765-7e7a0b1c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608042765-7e7a0b1c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DknwWQpUJC6wwfhggziij9SAxBbvACGagvRw+oYa4rVqrLQp7b9b+IAbbsRk5OwPYy3uyd/iQ0bsX8zcmtiwzg==","shasum":"18af7ab74fca73c2883b8f359b9f6cc419543382","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608042765-7e7a0b1c.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2MmsCRA9TVsSAnZWagAAPCYQAIJ03SiOiRjXcDeP0vVK\nqakfv2PKW2XBhzUUBXN4BMqo8Z5JLz2nP/GuloC9s3ZOt7EemEHjdANeMJT1\nrEbdvmZBfXsyR5vF0E6tfgD/eUUQErA+NeIQNJIXnYqAorKI4vjWdtwS3Nl/\nXPpqyP8sq5e3wlZP0KtdOM7BsI8GRc2tikj35nQ2/9htisOVwC+Rghee8yqR\n1iCSzGHVj572+v8hUP6KcLm+Sk1ovM/iucWuRtVYE5ssojX7xMS4zGTGeM9k\nx4Hie/fSQlDiZr8ORFvV5qlhSAigI5+6GZXyMe/eqHhUjv1LJMP//kYabwp8\nK3aJBd8yG8hOJ+voDtXBiGzjo1sH0sHsrec95qz7gRoMeurGqpkQVzO05G5T\niwgc0WUeOcZ0mLyYhEk6DpJAacfRAs7zLE5FMXAY+/YoKHi646RTaeqr6rPc\nmqyHM3FDWshzm8miY06lrvVBD1iEIP7oE1UKeZOa65/vLeNqye+CywjWQafB\neY+B6kFujnq2d+IPcu27vynH7fSzAPVqdNLEhF/H4rSio+kKLjnZSqoW8ClD\nIm6eRYl4ZvDxPzpK7QUzQA3yNzlTWxUDVpF7wYcA+bji06kcpqvIQFUebTld\n4rg9Agwsh9t2CQAbds9bttLcrq2XibyBQuzRhZ5TRlXZ3lEYnB+5L+QDckJs\njNFQ\r\n=0Kzl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDYM8S81LxSlGEKUtWP/0LwVIIKzZnVpG4Wl9q7zxVCEAiEA1vC1m4hvGD4vTYL4YXvB+Gjdec7Ht79de9/VfK92F88="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608042765-7e7a0b1c.0_1608042923851_0.28284964666008117"},"_hasShrinkwrap":false},"2.32.3-next-1608042792-5ad1aad6.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608042792-5ad1aad6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608042792-5ad1aad6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608042792-5ad1aad6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XvO1m84ABrckbcZ7bV8XOIYQhyjkl1hUBOBf9oLAGopmvOE6u5ikdcCaZeE2np/tDcPFSbDuoGNTgSaopSW35Q==","shasum":"6e82704a2f88d37df07de662649dcfacf9ff1f79","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608042792-5ad1aad6.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2MneCRA9TVsSAnZWagAA/LMP/j0DFwFuKsEKCidoh0Dh\nqP+1M0XeFPvXIogl0XE+lajWhdthzfPCgT0dsjQZSISm9QwUcu77o7fqMPvY\njv3IBsCeLeuhgJ9yVIGjheF7Tq5WKL9Ay7Uwe8Clk65DQC3zldqN9knl4UBQ\ntAlWU6bcfzR/0tNgsFKTwG0d/KJqaijkkoPMDPmoeyxEhPPvHBuLWIyCrG65\nA90wI3M6Mmc4L7eCkJAVHGewFKf+8uJJ6lTHz/p/O3UAJ/iL2kTACtZFoN9r\nW+BQG9RB1feby0jy/8INDo00QD+bMxGtaIsDJN1Q1Lhtu10rYjGvMi1Yz/n3\n1vc4L7qQ8eozhEt+IsfPXrCyWskuLvNF0+1ZUQWX7R+viYYe+i9FonSrIv1p\neT5V9RrV3ZEDgoZrXDjrYufu3zVHfZBzXDpim6qBV5l/Ruf3o2EUbg7Zvseo\nliQhayastpntC1bU7HeeE2pEXlmOBF0NH5UPUP5/kvkd3IHTtdsEc/u4eMMw\niw6DrCdeb+1Rv96L73Wg65jVB/kyYlLzqRM05qnCA/Dn7o+Z6ak/HgZBX9hG\nOX8WP2VQfLNj4RPZiME0mx1n+K2CDcr16Zb9N4/CUG+lsvHLYZ89/3GMdTOw\nFRLoL9Ul1AmMV6Mph3tPMWA7XJd02F8/yw9LSjFi8andyPNz5V7gII1D4bfk\ndVNf\r\n=Q8Ut\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDX6JBEas8R+ESe+nzAolLLcxMnhDzNUTZES4syT7pB8AIhAMby/Ho56ycmkJpHiz0Fg+zssyFv9GyFbIlS+XFIwrwe"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608042792-5ad1aad6.0_1608042973605_0.383525192446617"},"_hasShrinkwrap":false},"2.32.3-next-1608043836-1f712470.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608043836-1f712470.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608043836-1f712470.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608043836-1f712470.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-D70Nhv2xuRgS/9547DROSK+qG4G3tHorWa4CnZ33RPgM216c05zZkEjjZrFKaxw89AlT+GIUxY0zXqdOj0rk0w==","shasum":"1bbf813e82285c6f89768cfc358d4591573df0aa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608043836-1f712470.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2M3VCRA9TVsSAnZWagAAm6kP/ijZFW7fe9tj9aBLVO+B\noVAtJStarPuLsAHJ7CgYQ+v/qZ4ujHkl0Gy+kjg0u7LWdp0fxSFnvTdaQ66i\n1geK500ZPUdFlxUsqp5OkAFZKUWlbMKXA7X4O5Tp3bKfvRYw3wYfk+Gz2kdX\nb4sJuSsFdVc4jtLSYgevO3kFl1LbibknYVNkuB3BndTkv61RFpaUhTw4uyvp\npxTz60JQLKUtigj5alQFirTrXbwaAFSH6mdyff8vlM+YtRicOl4yJmQVO5ed\nl6Rngk8hS4mx4tziZsTZ6/SGNamltZPKBdSFN0DHqZD61ny/kbWkKYH6LrkI\n8Dfti3xTc6LBJDtMQFdfHk4R8Yq/Qp2yKQXBtbHKYVjsrUGiAPADGF94fBkj\n2+IUHtSCsL6HVekDY+0GFYvP6zfPuuH5JMdJXrdaORzxMV7EM3LuQUWlgqXW\njwSMZ2VelsHj59orKKKHv1uiE/vooyH1jBhPt9hBvRXtolb5vf9kN86rS4Y4\nD752z1YRwe1/+JS2ylNztxLkMe25yZfN+F9aI2Nw4X667MEwtVp3/TBGaqSl\n9SpQRjAOkV5T/HcffwLS0qAAMjOeUixzcAIhLOgnfxB+hsnqKOG8j489Xwzm\nZSD89GBuRg0+zAaDI2ote+GGawBsfVYm6sL9rIrrr3pJL/Q23mrs5f9ez0ah\nuoef\r\n=UbWh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6P+fiUXz+YEENTje4Wfdt99HApj/JijEW7helyggQUAIgCnpg/1o2uSsjB1+3N4Bv8Yb3RXOdUg7/nUOZfdKMCJQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608043836-1f712470.0_1608043988660_0.18786277104578986"},"_hasShrinkwrap":false},"2.32.3-next-1608043916-6ffcd0e0.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608043916-6ffcd0e0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608043916-6ffcd0e0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608043916-6ffcd0e0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-io67Bczfy2+19MbUwpYkWhJFpveXCg1JKkP5Gawf0qTl9MExh2wJtkWrOFo73v35YCPsMhVNgGNbU6yMEgpl7A==","shasum":"e739d210995e7f140949e14e660c8c843ca59dbe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608043916-6ffcd0e0.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2M4eCRA9TVsSAnZWagAADWwP/iZ0powmFVkXqngV2hPl\nP686giNJ6rlYkFvalSWxmhEzK+ia3yYW5Wa58Yh6sXnF3+Y6Guqmlhcbzq4B\nleKgP3Bkmi8cGmD6j+xFrdaFRlCa3g53sEPFX32ad+HPEkD6BnJCpi+6D0On\n5ea/BVPzM9HECNgdVdIs9HbOzMuyD4I9HEBDzqPD3yUZDrk/DTno6/IJbrRz\noGJGwQow2cQAyndl5U2VOcpkIps9mpqdPXk9rx2KkzF1DNM23HIT+oWGDJEY\nd4gwpMwChZM5iMoMZqYpbvbtdz4najwVDdRLNf+2XRghlnEVicWpZIqwb00g\n5rpaQhxHocXR05QNa1mR20YB/6ZSZ13pE056FMZmq6x9CvVA8GKAUs2xCqGN\ntsn49XEG3tiKh0DJXgzbj01RotGhCf4PzC3F5Q+n5UKD3+XBlkM0bODNu9KG\njmxT/AMKq2AVzkZusZTCYT/fbALUt27cpEb7HzosyWlOLJwSLbrDWc5tKYm+\nWxmWUy2S/myZj91firkUe+xb1hSuBMd2QNERMvv6pznN18DKWutx08+yDlij\nvwbkh+Ek48zpGW56ZaapmDeEmrSs1cjJYbokzJmofmMRNLBGGJ/XJ1jSeR/b\nGlgi8hu5LNjroPj6YR3Bns3bPG4tCPKafbz6uAbupN8DC8hxd9jMZBjS8MRU\nPyQ/\r\n=h0HS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5JyUlPhpYTG+oqs5ubIqr4APUR9u0jWh1I0r70ODBdwIhALg0UEkP19MfO/8KL51fAE366FYKPEziDX+FJ8pGBQ0I"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608043916-6ffcd0e0.0_1608044061561_0.9376589048476054"},"_hasShrinkwrap":false},"2.32.3-next-1608044120-8a10bb60.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608044120-8a10bb60.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608044120-8a10bb60.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608044120-8a10bb60.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7cvtp3RpTB5c7+xSXVP3OHXsEiqKQwLqJOCgzFC0th5OtYhyddeU03ngW+D08VihtjHEHNEdq9P+lIrkJupFlw==","shasum":"f7e88cf9c4ed77afc3dd1a6989058df455396b5d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608044120-8a10bb60.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2M7zCRA9TVsSAnZWagAAKCcQAKAfRVfG0vNSJulPamCV\nyUAjNJoqyQj3HbEnyC6UruzkI8gXUWTiv6dXxZV7Zcagc907gq4i+f7JNthP\nKMJRt5RluTzmmwGO87oJRN9IDTK0LwkYZOqxgTITEwhEuMdorYzLMkhF1HRn\nkYM3tu5a3MsJSxCW38EUosEFsJxMXHooTJg8jOgKDk8EfkGKQulzFTJNgOLs\njmpghjmUmIiD6Toicm0a+7o3R1vipTGhvQTmyGds7QIJWR/6Ct71/JE5L04x\nlfYyeyjwemaMDB5E29WStlz4uf5cKmPDjuen3kgz/H3NLvHBUoYXU76ZCSTz\n7RAGFfrKG+qyjUddXCPKduHYgtAwjLVv+FGtM7wIPPtzeD6okazIDqQE2l+m\nnnnNVlfdiYbzPL70UQvlNQ2xmjhJaJkAoh9aB+90SqA89+RcYNddJDviXAVj\n7GXwaPaMqLqPZlsoBYJns4SgeFM2SGl1LPt7uA9B8phbWO1K1KT/dyuUHN8r\nzSjwy4dWgV5TyvW1c4em0ZzqFaRA+Gn7PAHcXrtQB1KyWGCfsFNUHeWatha8\nnVn86TCWSkp+huIGq1uMsifd3rWUZK1Xorb+st5lv+UmuR5U3F3018EMhJqI\nfU11k0qHyT0Ce3MbsmGK6GJtGGVLH89ZAK9ZVVcSi/cR2w0LMcW5HRHRSyMv\nCokH\r\n=S2e2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmXPe7vDVzY6fwAbZ3POrnYhiZA/GGhXL9I3VEKjX9WwIgMpEQj3OrMR99PHKwMWH62lLHyvxS7qrL4Snxf/F+mhU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608044120-8a10bb60.0_1608044275072_0.16503061754127457"},"_hasShrinkwrap":false},"2.32.3-next-1608047089-c66cb524.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608047089-c66cb524.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608047089-c66cb524.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608047089-c66cb524.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qDKAWgLDhZ1/KGDK4JOMkao29zMMnijBgBTvP9iR19H0+Ki9TN6HxzSAZaagDz/V0Fd5WhPMZJcrRl8e4I7LUQ==","shasum":"de82c643ba5962925bd2ac65c1d86ae5e63f819c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608047089-c66cb524.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2NqSCRA9TVsSAnZWagAAZ3EP/2iAdESsIWs/IuOTaj8R\nA0nNA54VDA+JX9YMbuGCNpmg6U12WRmvNk1sbbaL7Wi+lzRUBSidBeDT1VCQ\ngqRQ2THjhNFw0F9QFUOmcQxO8DLbrOt7p8ESx/UKqUs3zbG/uTJOUIDPYuBg\nHDExnFgUD7JnUNXyTzAhvYWXBJuYTp6xqtQtwTBT/nQlsb5M4N3pLiI4LJoG\nMcVzYfazfTqefb/Geh8b2svUYeqT7DrMwnRlKIAnRqf68NRa18TO/xy/HHHs\nEYkXwQ3vBGlkypOVSnmMQqpK3hzjTbwzC0DnFiedIntvVsI7CxQ9FGeFKdAC\nH2yqcNI0aINnnd3bK9KDaH2seYeoIzCV82Uk532xaWKnfuupso7dywBtepI0\nIuyK75k/6YT5FLbBaLJNHl04n48w9Inua62sWgX+ZKBTqhy4sT6Fjn0N5Ski\n1RoUug6RkN4UxWontF6IyudvKZgq52RxKygbeY+o2SXMaeqT5gP1EEX9DYin\nBCJqOX7Uw8v0cSSv5z3yHJAoyXfOZiMELqWC2cvdOw5cgL1fRL9CA9NJEeU6\naKkpet1h0vm6sIx/15hwbmakg0nnGfNha651o5hsWJAzasTzfi5sZgp1gldr\nywMZ92Q/4SYYOTU0xh00HHQm2L+UAib180N8bIC+Cohepkf8EMj+27qhBhCD\nwLc5\r\n=nibg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqNbLJQQZfYvd/mIRSW7qhhml4kCJ2DXgc487rqAZ5HQIgFXmMtIdqEZyEE69QVU/sDsX3PT0oumdghHe4LcERy8s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608047089-c66cb524.0_1608047250294_0.7712929334173897"},"_hasShrinkwrap":false},"2.32.3-next-1608047166-921e0330.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608047166-921e0330.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608047166-921e0330.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608047166-921e0330.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wRLn8EgOzLSC/bwGqTY6XVOAbsazJI++rWRP3KhgFPyxMQKbAx4Wp8Wj7aOoGLF/4S+lOqj/YOzRDojCA1hxpw==","shasum":"93ca78b19114411d2009b036c888c370a605386d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608047166-921e0330.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2NrnCRA9TVsSAnZWagAAwDkP/j/Yjzmc612lgN6iqsOD\nMXos3AiRg/COU2Ks6gZ7l17bNmoFUOkdgVDNIcB4KBrgi2X9ORsSh7h8mxMD\nBEXRNxQq6wPdrP9ZEDI2FrzB4Ikw11kdChmCF9kbshukPZ3if6H6RMlSpC50\no95AqHQSh2fBYQLChzkKHAwcwHmbUSjYcHwYHpkWn5AZLEpCgjVrulznCsWw\nR6Ep3J7wryrPb8NjwKIWkwK5Z7o51ptgCGqM3ggWkvSvZDupjAsKCm1LIEdR\nO2tqtk2p8Y8bknGGk47eqYGBnygqtNvr/zsgb5DgvCUyZH3ZzALrioF9PRUL\njp2A+oaxey/QLxBJDm4SnG4s9CNIul7oTJS52oSe1zlv61R2dZkb2Wetfl4l\n0lagwsMnkn9Rog1NOiTi8Rn6IzZw6YWFA8TCcxhtWnpu6Q8HDEK4KqrGG2Hn\n/PsNMzZgtGyEeiZwcdLzkVPWhWLj1CaCpjP7RLEPb7E/0noan21eQWis9INM\nC4ojvQD4/ibODKv3GoritTZCxI3UjyH8NUgpTLpX505hXYoZBTO3MhFm6BTl\noKB654Pil1eMbU1KZjKhir484w1DaOrgfFBS9oijt10HaM/GgcDjmkn+OnM1\nzItwQ9Zxb422eU1YRVDIGt3xccMm9WA2OB06lhENaqiSq4dNNhrI7vudBJn4\n2UA6\r\n=24Fv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCY04FEiZTuyBZyeQJf3q1jZPrDa/ErpEu5XhgjPiwSvwIgFWUAaVkWcnO5gm2tj06wCA5F7G1T2MvYcoPg1LMWvTY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608047166-921e0330.0_1608047334637_0.5635067199472901"},"_hasShrinkwrap":false},"2.32.3-next-1608047341-5347fa9c.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608047341-5347fa9c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608047341-5347fa9c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608047341-5347fa9c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7D9zuwvNtoEarbOt8En1fQ1gUuhoPFC1mI30YBksXxPRb2Y/KgMzTKEwn2t7SgOg27BWl+cvbENfOMUOdGBbKw==","shasum":"6e0c639c5fe54b3c03b854fee31c1143f1fa8338","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608047341-5347fa9c.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2NuNCRA9TVsSAnZWagAAFZAP/iDEuZLbfmUsPI1IeHNy\nOP+7FKJBD0Csed9RZvXsVzxQJKqQcb+ZktJByPSthusZIvyeNwbEdhDMEU7X\nl9SYVtx4paVZxHWfSAziPdefZcNpY+GDG/fFDYaORbr6BS0FABI2PSDQ8g4j\npVGxzv2kODeUoI8OSEzfNq/VtdEZfNp6qW03VcSmU/Yx8vd6nlva9/UTIIPH\n4Un40EfcIWdDLpC6vr1obIs5KYHObuiFqV/fkWKSWvV7uCGfnTibIW1dbJ2D\n17MZy3I0gszO85a6iYhx5leJnRcem617QxlTIPVtj+p3i8gBSmnu6APkMwPY\n1zJC5x9lU7oSQt33TXdQ5mHAYyNeM9/YDg5TNAGliN6/C6KdJp+isWGlzylC\nKwMUjzrMMO3s1z7OTbQ+h3JtzfsTWmGmNO6JxRC6aOSBMsEGN0uExyurEYmo\nTBFh7Iq8AXnrmf3okkgL6LNsCD293hkuw2GFVneiaCD5M8ToU3mghZ7W9LVA\nvFgjRBseq1qXwRyqKp96h3SgIysdv70+Lbww6SWvzgtkIm2fZs9x6M0S9zo9\nek2769NgXA+e51tCyffvsndWKrUBhN2rSP94fXIdLJ8BRAjnGz+OSmsb+yx2\nfqGJCe8gzg7wEbsEE0HBoFhbEui9yaCe+R8gGHl8O8MEk6fDbKVv4nGGTz1b\nwL7o\r\n=XQas\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGJtvcNuC7zplo1nsByOE46y/cfAC7W829hCY9XxKE7mAiEA1jDyqktIo/Jf5pzTdoOvDmkpxPeh54y967z7W6vg4Pg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608047341-5347fa9c.0_1608047501372_0.6403585604327215"},"_hasShrinkwrap":false},"2.32.3-next-1608048083-7cbe2792.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608048083-7cbe2792.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608048083-7cbe2792.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608048083-7cbe2792.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4hM772hFeWYNkIGsLgnXPRjW/8X1bGZXwbK8Y+AwPtjUCgh4EJXDDUGo61JAajZ1/I/P6zPx2hKxye1l/LV9GQ==","shasum":"2a4ed8a3a72b971c689ed5535476a8870b07657e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608048083-7cbe2792.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2N6BCRA9TVsSAnZWagAAsJYP/1vH/N+c0lY0Go4PtDiH\nhaI9dC9Cd1pTSUqAVGvJrAZWIuFpL9RdifMY6QUWV7junBepoaFofHLVxsnE\nPW8PcW6rSz3kxo6mO+Hn5wyiBBCqwfy4WTf3yBTIcc1JPpzxo/t5IdPbYUxr\nbLCP2gUh1zdCOu6spqf9DV7QO2SKuNNJDmkFXesbj7OetGA/fVlI1QLN2LBC\nhxlz0lxunfB2xoQTIie5nDg/2AEKnHqShkxcdsnZ4WzbItwFs/IcTt/ik6F7\nOukWgZZojYqTJxkAQhFCCoalql/gueRA9nvtnZ3r9miDg7K4gcJUt9xzYxKO\nyNP+UshJQousavY6njiFaoCYLDCJL2tsnymxLMm2zzYw7w1/rLxDXrfCaSeb\niJ3DHtkPDktlMjgaNJ/oqoGqa4seAO1FTHHmdvWrAAOWHv1el6xvoP7x5tlz\nQk4fPPoxyLxMSPrY1QZqDegstg/z2nqSMYAJso+ob7HNil0IgOY2zLscL9L8\nXkOu7tQmjAtUGfo2JOJYdgjZPggzom+Sviri/XrBn+g56KuCqR87fFoOQuUK\nhN8YZK0i6ppiTbCRpf7FEDukHssCKWCG1cV8NTnOgcsFMd79V+OF+QbEFxDB\nlkUKbS/HGDjceFJgFhpB0oqrBolgFSDpEo7szKjMoczDZ2Y/lF9gWwRIfIJd\nI2AN\r\n=aE4g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJzIQ8YR+MiCJrKdqs6yRJQggoKl1wVJm1GOAOEdwtFgIgOUDWtGUIpgVLy4YUZB0zHlK+/Z1LDa31K+WBV6btvP8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608048083-7cbe2792.0_1608048256778_0.16929358451183796"},"_hasShrinkwrap":false},"2.32.3-next-1608048285-8a10bb60.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608048285-8a10bb60.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608048285-8a10bb60.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608048285-8a10bb60.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VDU0bVIqCcJPA5xyh+1U4HxlTNaaZk7tgecDRFHGV4+GZg0A4NC3c8kW9rjz2DHkPaIKQMGqjUUqyM+02L6juw==","shasum":"308897438cc791c40b21fddab5eeaec2a02db9dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608048285-8a10bb60.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2N+PCRA9TVsSAnZWagAA1vkQAJ5daa25FnlaC9axC6ll\nvKXbhec1b9dbjLw/u2HaEhE8NqY00Nax0TOgSJtWFHI8UQ/cmNRSa7deJhyL\njXVUZYzOVYHLxkLUHA4pvMupWirDmEWO6T8zHD0DfTRlDyydBNeE33+8nzxP\nYzu8GbWg9VtptnHMQeBt6Lx92qiNg6VgBxLuYfBInTPu1tllJH6y4zb3YLIm\nmDSvTlZYHGOeerKhgZutRhelh37EPUogOcjI0iu14KdB9KleOxWG4jbKpwHw\nEMeEuPHu7ZLHVsy2Ap0u05Z0wMrPXdH21brEZXDfxI2uwqRqP2p8LwwqRUIx\n534E8a2KqSi0UusZ83NDQHgyG7oyysaW71S8Q68XMFs0//5E5SczdNCDkD48\nm8vcT7TPgLAjuBWLBFry0QR9P1Nz+5D/nptLyinSK4sY9tEjdH31v+vyEb0m\n08cGqKCpQ7+tzGuSBFHEQk7X3Dp3wLOPE8VUzbf3NpBdyle/XBl4ZozYkOj1\nkdzmbzX+n0LV9uk7pwTujix0BO/NZRxf3C/D6279HFMyhY6SU1J7UyE4a/u4\nCZByDAlu+ZBlnGJdKurgAgLkj54u894hUHDsOAQxbsVoAnTnVJDIJ2J91edp\nZBY4c6aA4HTG64JdewLrvnrGvbJGHC/H8yjgNjy3tQMXm9xXzqtd0xNDoF5K\nyoR+\r\n=Mhy2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHrx+3Vri7LwbUvuZdgF4SM0xGu5YFEvortEn2MTjIPiAiEAi+MEyj7kkkKQs/3nQDQpZwOcIZlbrM4L1P2FvIeCyDo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608048285-8a10bb60.0_1608048527247_0.7462599554159106"},"_hasShrinkwrap":false},"2.32.3-next-1608050790-8a10bb60.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608050790-8a10bb60.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608050790-8a10bb60.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608050790-8a10bb60.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xJcsyH6IPJmZVXnIUZpVvE/LgS+AX4DBjcHl/tUv8N1ebHje0rfqWLSdHZyTfTcXjMU82YYBZUrf0Agc1v8Q6A==","shasum":"f1bbe1bcb725b6bab4dae55c6f26c460f9928e1b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608050790-8a10bb60.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2OkhCRA9TVsSAnZWagAArH4QAJK6UFpKu43ukTiniIQP\nNyo2Jpc+bWaOjpCoZY5YNumbBFUk8le7kQ1pzqIO/ffD0qGUI2xqci7uAirZ\n5lvrt5RvhGKAip/AidzxerWyfa6dPbPI5OMPMPz427vHb6CG8Zl3xAtB7kvh\nPEtdVmMGaptqZNBOhUSttGBkNtmHqktaTz/7P2Ev1ZVpShdGfpROaYfHkGCv\nq5XgKRxh80vyXQgaviLeioiyzzbyqVI9MewbytS+GNs+KyN3cmk2/QqWv+gH\ndR8dQpCGHMClxRC6Ugvvgg/Uk7ChbYkoP5XMfT0imheubWsxCHpLglAlHTrq\nBySsTp/FtjC2zEQM4YNKNCkvvwEIuN0d9F/8H/ncYmnjIq5K3ZutvqeGK4Fo\nnNlLYaZlkz8V3lz1pYbXeji77qFaZh5A3poamAyjt0IFNZCZ4FwjUhkHxnhh\nLzj8n3LDE135jW8eGpRlGUbVQ9fsp+ieTcnxNDDCJa0dFkgQgoGlZT1OuL7Q\n6qrckfazekre6pdCxnkUEoaH8f3n/D0ow9SHnFQi2irmRTbCIGYeNJNsOU/z\nYLpENWtk+ec8H41oZTkmSLCSODf1YePyBa/k0t6OAJ+bx4r1UZsJvV2YRY+M\nIVWuqdlVN2U9GmvvfcXhIHCzuD4p2RWGSsA5/ZK7yC/mE2/n1WFtUMbyl3wA\nIyHw\r\n=A5od\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCC82SBAE2cEgnDuCz6Ys2tp3eilkWpwI8tbqOOaD7gNAIgd2RICoLTs5CpGLH4KI9wObIyBIb+f3ZOQ27XwLvqP/E="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608050790-8a10bb60.0_1608050976902_0.5803110406830485"},"_hasShrinkwrap":false},"2.32.3-next-1608052491-32097b1b.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608052491-32097b1b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608052491-32097b1b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608052491-32097b1b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kHkahvL/vGiwA2imABL0zO4ms/ucrhuUf3KmnG1WkyoCVgddpNB9UGyKmUtdWJYOJGg7ghModh8Bn1pflH7Y7w==","shasum":"0d9e7abedf29e49ed0b63507eb7792b470fec9ed","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608052491-32097b1b.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2O+gCRA9TVsSAnZWagAAvpwP/3/D2wveogxrbYo/jPfv\naVSFBWS3r0K2QHFzBHYUL0BPVI+0uqWFmj4bJZLzK9l4fqc1JrOt4IN3MXU+\nNATmqXr5KEtS2phrdAbtLdwjxoHjMaarfszvqpFL0cqvA5wFD4bEXYMlhD29\n+oDIG/MLdlIjNZalbhf5ft1131lQhVNaC0QBwurDUfIg4oHvUqJieAodxSab\nbqGfsl11OXGPGD3dT4z8oprlKs3EsL/fGK7C3/fTnoClcaaFO3ofG+Q95V7U\naIdbQupECqwPnMhDXhFYtJj1R88j7ENIXumBJhK1w8z7b3iHyl7CfsthayP2\nSL/ek6D57g/KQuj+70jXH7EBfIetnK4VpZOsb5Ckw+IcI7J3/LpWFB1Eil6m\n2gtE6sQ1ufFoDV1dFhSn8SQCmo3Z1Z/VWfb6g7NDMAeRuF6JxWAHGrKSKF7G\n65reWEF2ftylBhXbnUhG5NqiBHUQ4N7VpsnbE/sEE2+NygaLWWkUSvSihq7o\n1eWV5GE6is5C2HO8sCd3BHrR4Pje7Ceq9xGIfADngwtok0I+TD4Ms89zjC1a\nNPN3FQEkUic43VjUN3//YtYTXXORr9QXSe9KQMGoaiuwR8C8YNv7dBB+fe9U\n5Z92P7fxoRCxQxLUdStkq51cLQtHktnQMlP2KXjfdfu73go8s93jSLVzgrTh\nUm11\r\n=MtMY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFiEZkkV4j4oAxktCekE8mCoYkQNw897RpGT76uJTwuwIhAIgNZiRDTWSbmIG6KHmM5i5NlDp9PJp62GngG++CPllD"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608052491-32097b1b.0_1608052639579_0.35425259841528467"},"_hasShrinkwrap":false},"2.32.3-next-1608055281-cee788b4.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608055281-cee788b4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608055281-cee788b4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608055281-cee788b4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VUzNgkayF4UjsAYhHjeaBXl9DkHS8bukKYYExZg6t0CJQDwl2Ub6UdboIz6til+xgXk0wdRmQs8JmkCcfDYE6Q==","shasum":"bb70fbf3f75941625d316d77b21871fb93e1c20a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608055281-cee788b4.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2PqRCRA9TVsSAnZWagAAmbMP/2kFPHEkBf80CQQxRE4/\nokDjr3oY5+ZESQwkdowLd7zalrrNELNCcGdoszXGHQ6c6JBWmw6pJ5qJD/3d\nfGa/843yMHQbn8ZUw/ClAhaQB3TUpAoc4Twjj9cfhX+SGeKxmU7fQ+uRE0WR\nCPqZpLyf+FPPmSPuurs52lbfB9xodxhByKAWk7sHpBNoButfv5+70jOU/BwF\nw/SmSIFbTpgEddps5FsOBCFO0tyBu9VAxnMBSL6vbFf90bgpKH1nPumrs1O+\nRGfkI8lBqAiDl8tkUK35C76u8phP1x7bB4rYgWXZ4rHFze5qKyACUvYrhsMS\n6+xuE1Tlb1TFaTbNntX2rVHVihUFA8oPfUEQ44RylXqAIzqPLwo1QRcAjRqZ\nnMLxAQJ1FjstPThAtouTHt9SdJF+qdeAPOsIslFDQXaR6FInHvbiU+wGibT4\nu7CbuaN72dNChqzL+dOLI8xygb4KNtxRyttJiU/FuBP/04X0vEstVqaIoOGy\nG260xKYDuCXpY0+48diKyieqc0YSb7TOuD1eZaSNmjcMJeJZixoKE7fPI2Bm\nFprUYh5JD5c9ijvGgS4IEuEIuZ+DPGZdFo7lxfQTNfPgt1D5LaYqK5+i2tRS\nZ2DX7aKB9FRSwUDWykW3Me0cVe8bFlKoTylnE7VjRS9wW/v0KzSvHDbzZOqA\naOyR\r\n=OFvd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMKvqPgrA2heMRYG2DoXVUD9gAKFHfjkHCS/i2PJY+xAiARDgpNN6pDXTyPmWhJlq78BUwLzwPBhKfhvYQNZRWgog=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608055281-cee788b4.0_1608055440789_0.34552889968815803"},"_hasShrinkwrap":false},"2.32.3-next-1608057783-ccce23fa.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608057783-ccce23fa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608057783-ccce23fa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608057783-ccce23fa.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vRUEHb+uK1Gmii1EExCYv/IZVmI44RXZvN3HgxrjhxT2nQM4MSDV6AXtZltPfD7ubNTObwoo57RajchtaxFw0Q==","shasum":"a4cde767603f00c38ebdb5b7df874f554a6b0380","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608057783-ccce23fa.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2QReCRA9TVsSAnZWagAAQOkP/3jZxTFfTVEDP7eZTYsB\nJsLHvcfanteLaZVB+5BTRMkkhHxLw7Cniw6xBUOAodpagfRYRSEEsQoobBt6\nsQQYI3zZupoV1hYf8wMr+9c/csPwcwVr6t+uctTgNJ/sl1vXip659y/3aBss\nhse940sOjjaJ3uSswVgdjd7dI4F+xgpiAjXNQBBZ+R6JeyGjIKeQDItiO4GQ\nb90V38wEEJVMpKsTeZlGlhgBgnqXMmA3GIS9NCw0aRNm1PQ6hMVJ8HQzuBJ+\nvUxj0w8BJCDYRTYO+n7Tmc0kgXdWiAYKNr42uLqWVOrw8GB+sygGGIH4gzDb\ncJVm0T9IdmIkGn0u+bdrhoI4oT93lU5dEsCUZ3PshGKMmVYfKBU3Y8clowbV\nH5ou/ht0Q6q+D4Vx3HdnZUBD/8OyKt66jClM34KEG1led+N8Ry3dmZUNAAEf\nJweQjO4+8ZX608ybSbhjQVk3YSivTU4KSTom4IsykyEbQYz7ZVIyYEIjXfOV\nuR7HVfZNTrMDO3TQNWNKzHVv9KQm3DQi3q793wSpKyxJU77/cTMgzW1dnKb+\nMdekAFhRivF0TJpw0Ea9MGDvHi4LlFt0e54+f1m2I0GU+niq3FN+4Tog8FZI\n1ExD9QQu/d+jyNjJVhrIXZCfSKGTmssFTHQhu8GMqSPV68PBUJN0glksSRHO\nOk3g\r\n=sWsA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHbssonJWEPlHJwLv64qqMiTALFlmSKXpv8p81LY1nAAiBeZYo+/SuJQZoU30ky2Stqbgcso08Ov1v7JZe1kMmFZA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608057783-ccce23fa.0_1608057949700_0.6381694157609799"},"_hasShrinkwrap":false},"2.33.1-next-1608061455-ddb1f2d8.0":{"name":"@xdn/prefetch","version":"2.33.1-next-1608061455-ddb1f2d8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1-next-1608061455-ddb1f2d8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.1-next-1608061455-ddb1f2d8.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eEs0GDpx2PZG/F3+yRpFYbo2Ykz6dFgFXU8x4pRgb+u0afHA9Fcs2d1+0Er1CaKLsTI7G+0HeeDBSAqXE1ZiNQ==","shasum":"df8ab5685525446b154498d71576b5ee183f3d00","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1-next-1608061455-ddb1f2d8.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2RKZCRA9TVsSAnZWagAAJicP/2HsPr8FxrJfwKTXxDNx\nWCa9WLD/IqnKuCd+ivFb5m+bUT45nVotctzTdE9SDaxGgU00nHOLdzRKX17u\npktLtwqL9r/kBwUa0ZS3xdZYjKXZkdNOpulGnj3XCKxZp2oc/Eqdv40Zv2pF\n1cxn99cQ/KKA9ISNNijN5Zkxseh0IcIxjl/qnlXIjN4dSGXl0QhWaLStSZFJ\nEHfS4o0VYf16aX5CRKgwJ/Ot72Iw66NoeboIYLmUPxw1gNSr0KX3TvLrtTUT\nWh0S5/5eddADfyg9yvm19IiUtti1uji7vgi65kBmIAuA77nytxB2SHXfGDM5\nmHpDjmdW1s2H0uAOVvoePRXlaZn1cqm90uplMGQJ4h/SqNd5MfK0zB4k1kD5\nXzw6dN77y95jrht3SRlaIxprzyq+ff2rcPqu/j0jM5ry9XhudKdH6vtudEMu\numDbeMrLqeD/+G1IREtkA57dCENeXtjtpmtYXhEaUCbVnXX0bIpK73GuNDXj\nHnjRxKgfTFgUsDMCj5Q0RtGD/rn7QWRxF5GkZK7pr7Used9myWcFkssA81Gi\n7BchCGSLq4UQZsc+0xLAH3fSFFtPDSGcpK1bDb6sOxp4ciooHpN82IAqeUnS\nVPNfbxE5jTYLPtO+orqtPVmNeQmEswcOuzrotf4AU25Wo+FIMk4hubsokap3\n6RyV\r\n=sxmp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICk96uff/ZNiiq8UVqeZ/FYveTtIwYoRuH/U6NOg39o3AiEAomiNh9ASqSRYikamZVnx8hEUHOgjx7A62upOK6soT1o="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1-next-1608061455-ddb1f2d8.0_1608061593265_0.8715879778657403"},"_hasShrinkwrap":false},"2.33.1-next-1608112092-f8b6fea7.0":{"name":"@xdn/prefetch","version":"2.33.1-next-1608112092-f8b6fea7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1-next-1608112092-f8b6fea7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.1-next-1608112092-f8b6fea7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PqEbDWLjHxE9O5DwqTSAdCKhOlZgw0zgNaMjkeR/tfGPhTzFQ3RNOaVHs0gXAmd4Nmiv/5OuYb5wAMrSzOzwjw==","shasum":"0ebd0fed1e698cbf7c3b52371ac9983ae93fc3cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1-next-1608112092-f8b6fea7.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2dhxCRA9TVsSAnZWagAAOssP/i3UQc5+4Sf5mF6yVi2v\nG+tbadIr4fS21ZVoBiI0kIZB1g0sT2kFwwwPQKGLifIoU6FWs2sv7+6/nfVv\nPFqBpGSXpWXZ114HDPWwTxY8gU0Ew1f92XDn4nQ/I/615oTI5Lsn/J6GYbwQ\n1CU49xltltbRVzGanUJmzicfErOb+otMrlYe6aR2Qx+goxlYCwV8hH9SyBjQ\n+G/aZStDLo4HLjLAR0RADavVZUfr3Cvu6lsT/2eiCCgI2miAF2bU2SefMKpa\n37UB55PpiJuZ0Rbb+SHJ2um8A4uHkeP5/9/Qb7n5qcAuKLYDtcU1VWmxDDXc\nXxp5u3dk/toS6uh3Pj15iQXe2MtMCks3/M828GPUdIeBcuWcsNEodY0/EcU2\nL7B13kuyj17JnqdclmhquWkfn6GI7wLFxeucAdUKw76VFFm0+/c6HEZ+p6Jp\nMa5pxtXL8j5+KwhYIAQ4vlPcXt8yzqo/roZGZp61DGu9uda9eCThOiOAAEZ3\nCTpxdJC6UwGTfKBrhW0G11gmQIC2vbs/mYcZgKAGwwEDsBcf8rWfxClNcEL3\nL6QyGO439ppi1FnuiNQpWrtXdWy8YiONxDKCaPn+Le/Z/5GPVaHzbrPLR+kA\nQMsaAmoXFbe230tBYC/MFJkNrDUje+Pxk/x3kB6tJbfZyBF1ea2FoPKJx2UD\nWKjV\r\n=N+TS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDYuQo2uSJkDGLKKsbUw8xHe7nSchAtLXBgEhQ1I8bsVAiEAtZmeymjjCwYc9HBPnCfs57SXRh9IgzEo6qSM2uzhzaA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1-next-1608112092-f8b6fea7.0_1608112240538_0.021502117504279328"},"_hasShrinkwrap":false},"2.33.1-next-1608112638-345034cc.0":{"name":"@xdn/prefetch","version":"2.33.1-next-1608112638-345034cc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1-next-1608112638-345034cc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.1-next-1608112638-345034cc.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DLn1Dx/EaSTzEW6zGE3BR76DTlko7l82g+GUFd0phaOvECSTUEdotAxcm2T6f+dDDdHW+tXjYgUczeGjrAj7zg==","shasum":"b810ea65aa25f790ddad30cea2aab55244917a37","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1-next-1608112638-345034cc.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2dq4CRA9TVsSAnZWagAAGMwP/0gt9KDEH8XmjhCAoiU7\nRVfQQ/IWusDXasVOWvNzIJB85tPpJ7grFkhIO6Wtdrg9kMDs05gNLLLKNb7s\nkjUqEIXLc9L2O7fS/xkMiUY+ij8OaesQvzRKC6IjXxj2Ne3OKSaQ4M20euVQ\na8BAEaB9O3iSdDZO1BeCr2JH8GUMSlvAXFJ4bTT4z7Dr/Qzrqf5CS+mUjpjv\nIIG6iqWpQC9DW3esr4uBCnpvRzLoYqIRPTqeWR38yaZcTH+Nh2sxM/1FbtIQ\nVQDISJtimALpHCWTfXfSkptsFLdYeAsg6tnijPYHlYe+H6/MYy/+/8Iv659p\n1j0f5ai71Yr8AX502fsQyTDl0SKeIP1b5FuS0TV2zqB54rMTBfQxfmKh2d27\nM6cHB/duJK+gsUeFVSaKuniv52igRh4MTO5ZamTdym6YkuxraNH5xug6Pxbf\nlPrqvlA4KUsRbGG4jIFqYYjqh8on1LPaB9Uexlv2yKwnBvdkslAoP07+kTtW\ni0L6cN1Ke13VhOsbt/Bl6nXgdnWE3rLPCSvg1tG2HKhOv4Zv0P9hkmhn7Lwn\nVQvtv0yj1cGF/YsK2cXirLcAJ+7zTvM85fQGlEKjUInl7+pfjdMRSsQYU0uK\nEY3Jd+ynbwognWkNOPD2eFvlxwHfnYmq58ftWCOPNJ9rLJKaKOfwlkX6Cwnc\nEPVF\r\n=/+cR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGFsorzZn/bM4/YPV3MkUVCGPoC1e4YlBmuHUmoyUIRAIgHxV6XEbNRG3U9seyvI1cT2wYhGzkNgCSYnfLQJcAJ+Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1-next-1608112638-345034cc.0_1608112823532_0.787636958348277"},"_hasShrinkwrap":false},"2.33.1-next-1608115772-3c88132b.0":{"name":"@xdn/prefetch","version":"2.33.1-next-1608115772-3c88132b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1-next-1608115772-3c88132b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.1-next-1608115772-3c88132b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YPhphVh1585puNKXlZU97zvT8U75ojZ399U9Bz3vzHC5w4IFL5LDQZ51SPyNB393VsUKRk6s41lxRO/hv/WXkw==","shasum":"54a7fcc8dd214ef6578af85dfae87f10043f7fe7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1-next-1608115772-3c88132b.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2ebMCRA9TVsSAnZWagAAwCIP/iTIItbeQgg7TpzGprC5\nAMCOY9cwKLJHMax5Pr+a08U9L5yt0pNZwKBtqG8BA2gwnopgRV9xGunWMK0U\nSQ/Ot7YmSszSmpzeupIXtPEfItOb4/MSIe2fEK6m4jPFLM6cLOK+T7ve7u+q\nQG0ZkKVWa7M5sDF4377lEAP0LaUFgv1QWrt4UlWMBnH2epGZvtKCPx42L4Zw\nrMKM6f9BB+Qbyus/VxtwB07SqAEbcglGMZbeR6KDnr1uuTRTDL8ggl7hd72j\nqi2eNWkNTBaB3cU5h2DfM7pY0WOuR6ckyiKpk152KCts50PE9+TJzs3rwyBb\njyg+pibqLuHg/MR8bwEh17QcNYAS/oAXjgaAwyNZkyJt4cKOgwg8fzSvac7o\n/2P/D8ADUa35y1Lqkkvf6ug/ZLVszUuT79gV1TzFyTj/1letNJEeIXk6xnsN\nEosCVcgQuaCy88o6/F1lgtoSXkVLyJy0TVaAKViEljFvE8CbdOGjPJniYDiZ\nlaMWQN/AsbL9Bn/rl0BDe/FEFhTuggG21ZyhKZh6L51xcriqUUKUlxkr9fHT\nd+v6oA4wg7yIe2wPQPVV8QjQGd9G/46L7MKARJyUns1vxSCksTaGY8UE6/ua\nZ/rPH3Bq+zL68eeJvjucWst4xHUq2M6ybKyQ2pQPJrlr653Cz4hSaIwD8f0X\nPZqK\r\n=pG0E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMkJ19w4I5Us38ArfVWJvznQwsD9r3Yu+YyWfZ9GYHRgIhAIwddagJ6Bmf8zxOvdv2s0Zrb0FnEYCcqbhYrLRfhNuh"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1-next-1608115772-3c88132b.0_1608115915809_0.020301732500140668"},"_hasShrinkwrap":false},"2.33.0":{"name":"@xdn/prefetch","version":"2.33.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.33.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r1Uxy8a8QLEylASBfKLL2r1Amh/dmtuvuq/5N9Vdcoy93OinJWcYAjc3PgY+3fAKgFCPXU9H48zjXF8raCt+Ig==","shasum":"2869319f8a7726ca7c70ecf857bd49ef08a8f1d1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.0.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2fZECRA9TVsSAnZWagAAKGcP+wTk/uW8osifMMI5Tpx4\nR8ScYc5hLiXaZSOya/22TCHkYuQcETtSOGzcJbeZ3YM85BWQvO8F5aCMXyVR\nxibJg6c9zpXQSVM4CVDBNBqnRUEUc2PvNGRoZKMUpVsMeHUrT4hhRQKkAbyS\n/4oZKcqqKAu8+UqLsnuN/O5C6mnEDNss+DxQxwFOoG88wJ9Dv2DUo2GRG7jj\nmhfQ6GhLAoZqxjbWL97OQkHV5Q5bgrK/VJwc9kbZxzZcO6VMT9hk2pPo0FcZ\ntSrxZbuzCtrztrhD4KhNkf/nIxVkEHxpYF6hu2pnV3NZ6gfGFv4aaptKIlLf\ni6o6tQK6LnTvS9Wi8Lzh2hXJLOBrXcj3CauNV8EPWqticLtyMJzx626utHfP\nzmD7iO7OVp/CTzz67X8V+PctPeSCOQOg3mmmU4xLgGd2fjrAC0v1R24PYqXX\nHAkjw3bX/ouxud2x9KC2JgRTNwmEYOSIEuhTkag4ivK4xsHMUZm3h4du+C2+\ntGlrqg6ehHQVSc8QCzTWaNRHyW17eGm9AUX5CqAIha0S1z3QJ8iBAVdVthf3\n1x0PQhWLZJ3Rq6XCB/2tIvmlZn7Ks13RYmgV2o21nd5xnEmZ8Nm3d5Aq4thF\nbbk7gb0s4yEXj/m45/J7AHEpZGv6qBzloHB7Fay85/tGfW9TxovswPOTSeob\n3TQT\r\n=OhSo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGGMz5LDfq0osRAUaaiAUpnFKg1dP+mPeHA6BsGP4o2VAiEAnvwTLQFN8whqBjhaFKnugqHyXB5Sfj/ACmnkYpI8pWw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.0_1608119875994_0.019432313319208694"},"_hasShrinkwrap":false},"2.33.1-next-1608120558-3c88132b.0":{"name":"@xdn/prefetch","version":"2.33.1-next-1608120558-3c88132b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1-next-1608120558-3c88132b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.1-next-1608120558-3c88132b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1i5jwaifw42izFrlqdjfSRDIHLfvKzDGovPsJWLT41x/U5garOsRIKHZRnBtn29DPZEt+9fffnNo3x4nZAog6g==","shasum":"9dfd9c50ad3a59f2b1c6fd1a7fb4e546b8710e93","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1-next-1608120558-3c88132b.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2fmbCRA9TVsSAnZWagAAmO8P/iGEGqXKfy1ooNuzvJVn\nhI3F3oDRR5DCDyhxISSIILFmmI1AckkM/382/V77Zs0xMKU7qpiLi+vPaHvY\nWZjR7quc5sD//zJUg1za3VOh/SPYpxK67qH2yo6VCED+JgLqX8vumXTJSRg2\nRTwFS0OShhNZr97dIAeiutoA0a1wGPUdM+MiBxKWLDSZwUTsQYz8g2fKTlnK\nkScwzXDGEanqlkbGwrXAV/ftmTFN+Ww8iRKXrf9I4iuG2S2vWlKkdG68l5YV\nykdoxZGPfqmwBLWgB6n+8pp1PeQulC+ITfoDFA+gcaxm5pLpJ6l0oKeFTL5l\npfAO9zo/AvLqYfvPJOFuIPPy1eti7ign0Y+PQpVTOBfhJaY4tIMgDIUy5uPK\n6F66dDdSUyNlUS+b76bTkZx0bdBbCjfkrdereSrSKHmIY4WItkjoXIZAqeYa\nDNYcFgtS2fLiKWbZ5diEjNVEcbWEEAl9dEymXNXA+J7fD366+W14pjgvRZ0l\n0+FfNq1EDGa4u1RH9fZORKRVg4HB7Vi5HBtuBJsVDvfzKKY1wNNS26NSlwZK\nTJRVfURI2yxBIZgPLCtrlMwMXU6J0/sG9DC5xk3UYITex8lDfpVQoPyW1nST\nFwUnsAKqC5QoB1sWyyhti3unbikyoN0hFB22nsnBzcTin8TYt7l4Fbu5Xwi7\nYGCL\r\n=en8B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDe3AmTjixDGua42qPxv0+lZy284EDznt/3O5S2IUjP3wIgbC+9DD9mgv84t3jQA6soZH8A+C/eqyz2o51ofleXY0g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1-next-1608120558-3c88132b.0_1608120730499_0.7132292180917725"},"_hasShrinkwrap":false},"2.33.1-next-1608121221-6d09bfe4.0":{"name":"@xdn/prefetch","version":"2.33.1-next-1608121221-6d09bfe4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1-next-1608121221-6d09bfe4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.1-next-1608121221-6d09bfe4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-I0SjOfgOC8xtQ4FEv7+3YEDem2qii2ylyayRx/uor+TxTADaclqR9YtsGaKCGlWfes2tjWgEqgu89Wj/6NHUVA==","shasum":"d1f5300a36426bb2d208fe1802b9ec2746ab240d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1-next-1608121221-6d09bfe4.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2fwQCRA9TVsSAnZWagAAf74QAI4UYpRlIGt6rAErzIn/\nYMQYhi24+NNcTEenuxs2SLcZSW25HJ8ZFHqbXdOQ1Ceu+TVT+zGbZsug6S66\nFDqqVB8o83cIPa8MEFGfbd+OHAlGYSwTLAzS9SOkJWTWkf00Nsu3elieD91k\nVjjc33w9XA6rSsehjO95aJGL8MtbgDikWRHHYFHHnPZNRDiLDRsA9F1RsMj5\nn802EcffEIL1Uca2xkIRZlxiKGVt/CbpH35afzxkcfHvOp/xEbCHrAsoJv5F\n9IaG6ECwtEFqeexkqHnQH5Ix9flsISJ8g5brzobzIh/rGsKtT/JH7fYB6CAb\nRZcYXC9DobKAqfjMU1fgPk8a/yWM5JHrtvlc3HuPG4XP68JA+wCyopPJUyge\nTUEUvY1tdhuKlBINVKhmSfFsCG8SpsiWV5VnCQIZTQ3SNsSs9+fEA+YLavMr\nUwKYKlZKyPdy+0z6D7fNqLsliYL4I7txgQrkKh9B7uSYSIl751BvknjBMjPb\nD0sbJMoAdLJI/Kv2IHOrvuuXPwUPV5fQhONL4FlFaLaShLyEzkvm13ftERpY\nWGdSTZIlrO/0cs40IgAdWWoggztRW6IkVT0BnzV+qh2BL2tdTo67sB9qTtrw\ni6o3ZbHTDpvKO6VEtDvd95xFj74FX4P+GuTZB6kzZWtt1HUVupn2v1MxDY3e\noeMl\r\n=WpIU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCI+DTEmvtp/VPyateQW1ABSf4NY08t5+jgtFnjTLY1AQIhAMiOpwTSAorgHhDAWC0DJewdfx88Eip2Q/j8wrxeIldV"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1-next-1608121221-6d09bfe4.0_1608121360054_0.939794303045544"},"_hasShrinkwrap":false},"2.33.1-next-1608125131-59df05ff.0":{"name":"@xdn/prefetch","version":"2.33.1-next-1608125131-59df05ff.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1-next-1608125131-59df05ff.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.1-next-1608125131-59df05ff.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2ut9EPh/OtXb31Dz8HKjHOe/iR9uFtQIIwqTHt/0Zz+div3esXYC23bxzKUwz9YkFDRA03OrxSnX/RbZ9srIKw==","shasum":"21361b42eab794b98171fd029661ae04c31b2d18","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1-next-1608125131-59df05ff.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2gtuCRA9TVsSAnZWagAAnnYP/1/7PQWyAYJrkK9+MAGA\n+AB8PCzJw91G5YS56IwlJVhuu7ziW01J5uDawPeHU4nvQqrrKhbH5H2qC3Nm\nrOXUYBWE7MWS6lOq2ieURGE9enRU5vuypGuFxqaH6ennTHAVJZ/JpfOuaxnu\nJfe4RZF5UU1ip18gMI4hlRCgIQRKD/XdVNzjNHSe7xxl0QtF0ZMF+yR2IdYf\nNb6TudKMJ94VibdIQAFB+j46+zo1RV9hdv/NdLvFX3/ewEYxJXj48Re67/Oa\ncWBWOLx9nTlKF0npjvg5uYHg1N5rdn+f229ZJbrhSXkAz/oqEWH8JAuOpDHB\nfggf+n16Bjtt1+VE/o9FDSsAtwYxwzeKafJfsnbQJvAGBUt3mXI3522k2Yyz\n/jjhgKoS+g75Gsegn6Q5E1nC2RtbGQyO6CC6oKH/bBvxDpJ67MGUwEBd7ncV\nRcBwbcQ8+c4jIIarqdTwr2aqH9K6ZixM7kB5MVBMNssn53zXdCHZyETFCrto\nz/BLRxfqxORRhrI6U/AhgyMXXj7lMMtog6hpHUgqir+2rwc03yAzfazQaGA5\nkCF55NgzbKbJw/PA4kTI+s52qBYEyN8Nb73HK6avBnyNTgsrZBnPlDDGQXYT\nxpJhTegPCwnfp4UqsVNxo/wNQ+l7nFhGEQnfbQRhfOc/hdRTKRi0DQRhslej\nA6rS\r\n=iWIW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrwO8lqsLarLrYpubh7esjP/AAPrvZ+z9oRJweMBF4rAIhAPp26g9jzlNa0FgOEXMvignI696LmjLQRndT3FX5EaN8"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1-next-1608125131-59df05ff.0_1608125293793_0.863427894219301"},"_hasShrinkwrap":false},"2.33.1-next-1608126216-ea30c7c2.0":{"name":"@xdn/prefetch","version":"2.33.1-next-1608126216-ea30c7c2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1-next-1608126216-ea30c7c2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.1-next-1608126216-ea30c7c2.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ByhpBhx2/iGJg9AI3WbUFEFYxnBTe+Orlz5jImh8lEI3PaHezs7LpxmcgbdRm6WFVUZ+DVDlYfosrIx5m/cz4A==","shasum":"fe534323ed146a86f721c45de89528ba1fd3452b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1-next-1608126216-ea30c7c2.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2g+eCRA9TVsSAnZWagAAgYcP/3DiosOYmPTn4pfIdiGe\nfoTWDpGEMLxYndDYbY54mjU4nkwW1q/xldMkwn804z2ftS6xuUBJlxEFblgD\nBP3y6+S/oGBOpK00ZdsXDbVg5MMdEC4HUTQ5VtPD0XsI4Up1xtYXM8A3e/hI\n4iaVvXvOBMFFcnuMn/nB5WotXWMkXWEZRkK/S9VgkBcLHv+0saUw0LTnvF9r\ncDvEjc9lMlrK5q7/jN4I1rFTozes8pvo7geNRxMC7VSbRABqgP+wRvRIxfts\nomc68zuRcH6+UZmv4kO612n13haYHzL6KZfdUd5rSUENLvR+owgYUmotSBES\nOXG3atnowZV/v4exuDXhXUeQyYiPA68uDpr6YMSzst/ikd9gJVYTNvEWX5+u\n/MSPgF3si2Q3xrDXKT0ToGl+JFCIMYna0UyaR3X4xXxd/qeJuDq4qL4JESQA\nBA561XBBtwkZYl3tckVXDTa60263vWh7OIfauRvh4lTyrraVxtJ2Zjuf3NZ+\nMURyb8pmWI/RkgCUt2SFcwPpAvMSB4pEVSMZ5OK9I5bHTHpO0UmQjeGa+DGJ\nMuiw3GQerTDW1WB5lAt0W6wEAVpd77ZIIZhxfyDj3xKrSmqjlsSja/4hjgoO\nMFRJuRlisyj5QX7Va/T2MM9FTjbNDOaWYOZ6Uev8CHAgzDDXH5pI3SsBPJzG\nHLv3\r\n=kFBQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB7laBVjkoOl/Ck85yxH4ufCDWGY5vufAXq6TNoipzhSAiBULNf28/8SAIrPiRcHDw+2abDqSO6CPtdrSKrV0gmeww=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1-next-1608126216-ea30c7c2.0_1608126366350_0.8108080064983592"},"_hasShrinkwrap":false},"2.33.1-next-1608126527-1c76dccb.0":{"name":"@xdn/prefetch","version":"2.33.1-next-1608126527-1c76dccb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1-next-1608126527-1c76dccb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.1-next-1608126527-1c76dccb.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1YYD+jEwBQ2Frl3DjK6/fELcYFt9h9kzCZ2wNf4tOHtAf4tpaBb4HhSIa5K+oP7N9xODTVNVzDXt8v7iPDfLQQ==","shasum":"783541684446cb32392035176aafb09a7652da20","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1-next-1608126527-1c76dccb.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2hDOCRA9TVsSAnZWagAAvXkP+wdWv9M030p/798L3hnH\n4BHodfKAVorrYVeBtGDrmQARTaoejrn90dcDUQKoUr7/BvGndfYK1dgdzthS\n3Lex2Cm9Lm0IS3GAG0HGOFPyIWr6xnQvNMCmDkkaEasv/wrdbxIsYQQ66g1u\n9xvk19ZyohoOHT7fFqZeckgLI2Q3wS48Pf2VGeqbQIcvP3NAvbt8emWCrl1/\nPKzqZxNW0QrJYv7nB4HN2QPY14o6I2Z1ISMSgfVvMkzdHDlYxpGqba9n/1TM\nn7rimMZRcpjU6E+1BlQW2oWApArYAtcEbBgaNMBrVLNnor3hTOHpH+RD+zgG\nnBfZyMlbhgYW0SAFPrfecbX9yP08yTsEohHWcuzPoZIqjCKVqDtuRSoy4x1M\n12aex7qwt8AFftIbO+az2jElEgvWC8e8Bcj2oDnkmuzHSMf1HDCq5gz2Vj0w\niXCr3ya1sZ4N2E/M2TXGv7BK7jiwQ+nWq3s2aqddpfeHyyvGJiP9/UCZ4oVM\nKlDZtQ4hXgMalWI6rLP/jqPdHHuAU3Hl+pm5RkP/6ywdNa2+lRS/K5Ixu1xv\nZ6rcTma/tk4awoWkXObpIsdjb0oWzK40f47pwqdHxcJ+7vBOZg23QW5seKNy\nxf03q9HYGUAsp9i+4Y0Y0tr2N5pu9LDbURS/b6R6gTl0nvPi2/YOaPVrzydj\nn1TM\r\n=rIQz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGZu1Zc0cqSC46bhJi1rJ0EWZzdjNW2FXBgvXzAuDvwAIhAOD42OH/AB9n1ERJby7uOifynFPg8ftgafMswZPqiNVJ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1-next-1608126527-1c76dccb.0_1608126669768_0.8487277981035712"},"_hasShrinkwrap":false},"2.33.2-next-1608128839-8f6fd916.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608128839-8f6fd916.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608128839-8f6fd916.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608128839-8f6fd916.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OMeFdZF4r6xcB9XSLIVgKTcEDAEqWombM9shz8GdXQ8urZi2SM3T24imGMNmmN9FhLRhmarrPN9YOMohPJCg9w==","shasum":"7349412d8157ffe5f42e59c1195963c86ada0d8a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608128839-8f6fd916.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2hncCRA9TVsSAnZWagAAmyIP/ROVZjZ7Vsw51LESzgYK\nrXNLOL6gJhTbORo6z6tK7gTMLc+R1AXbf72wuXlX53voePIZcTOeAumBjV5s\nkdUnjBbcntcEPUqQSpB2/mk4Cr2Q9Y0+gaCdw50dydEN2nJm03YTEQ4nx4UO\ng6NETz3Gq2MV5aciZAq9j2sbsEVaoqbPgnXmggPHhxFSbcWfz42sjBszJYC5\noKE6sty3TXu1ui6caBBtpZZarJuv0EfoOiaPspsN6p1wo0LFunz/zqSToECm\nm9WGBWzF4ueU5DeeTRCb2ohVSimhu4zAv6ZOW4N/svf39av+MvF2fGZRJVux\nOxFTxpKCyP4FE6ZXJAYLvpOxVYn4K8P28ZiXi50RtVUpP36NUrY6xW6PRoJU\nMHj0tgEZCmcpaVQ8DNwifW+6aPGw3Nomo1J8Smg2Wz3wNZOLv0UGwSGxsUzc\n78m8Oq/kPcbFwwxvjefDFu84VzbIQFFyy5MkIwF1lgT7aEAJ6OQ3n3Zu6pAe\npTEHMdQ6fevaNMd0WYtfb5Mimo2/j8ND5LTEsOuU6V9H/ltq+8nnbVa5priq\nQDTVgZiSUbrXEZZco7Z0PzI4sH1MagRQIaMHoJMrBROpABP/O9Y+qnMSbsPN\nXqHkcHKnjYxavYCk7yYGV7bNn6Fk4ivtBZTZBOgTop1yurevhbXfX+8e1op6\noBlf\r\n=KOZR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMUGT3sS9jJfU9SxBp4wNLBturdnKuIiCb3Ze3KLMeMgIhAMNVcxHXtvwUZSKsEF7UOPHvIcD/rpKAXVdTQ2OGMFba"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608128839-8f6fd916.0_1608128987731_0.29078060580545406"},"_hasShrinkwrap":false},"2.33.2-next-1608130256-8f6fd916.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608130256-8f6fd916.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608130256-8f6fd916.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608130256-8f6fd916.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/SnmYuKqLT7kCs1S/nEdR5rv+kzIHTE0w/IoWzOCY0qt6q3y+6kwSTEwnVxTlcrTlZGM6+Tc07yFvTMFFW+SfQ==","shasum":"388df0af70f7d9193fff3968112789f5b14a9f30","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608130256-8f6fd916.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2h+HCRA9TVsSAnZWagAAWJgP/Rl8Ee4YgHVOcFdKK5SS\nkoA2Mp5k3zqPvrVjDwr2dhwGehYQpuazCyETaD54YtRj7kuenPpXzPO9WwbJ\nkYIcPpRx3pgU48W+C/BkgI/eRaNwHonalnntdYginXiDLkuxpM9TXTjESIUu\n28HH/Bd/UcwkSZfFh0GrVFjhlKpustB4OhQEqXSOitax4zYtZuZgBZPTNups\n7wEhaDDZBS7uVHxynu/b6w+c30OQdBK46JvCAckS95yxK3iKGMQS3oT7ASuZ\nm3HbdE4EZfCkK0tTGUBKVAMVkeWYx54/+FbWWC2w/aMcW8uZwOe+nsjU5EF8\nEY6QvrsEaFb1WVusMr/Aqo1Q4Y6mpByHCAHGno5Y+/kp7DmW7IHc51087Z4J\n4f7dqeeO+rGGPqVT4gMXic9glrdZMdltEhoAUl+7BJl8Q0wyYc7Bd335SIPy\nncIDZy2rmOrCcp6KLOTCg/+IfCQB6Wzu2dFBwpO57BGkYpgX9hy93Wih/JAo\n0zJaIXZCYb3TTZ75oBk4qvMvCGnkC0yHrQ2KazEn9cZvEPmcF4C0Rq4rrP7u\n8PscyCqfQKQdoT2DXdZ8kfZPCtfAURRQACDAELYJuRQnuGJelwNa7BdS4hOL\nktSd1Xt455jNZ7jbow49qvmFjPUeOWyogOwBYXBODEWcPP3Db/k5RmPWDA6k\noBv5\r\n=CEm/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDksiPEMS0xXYOfvXfgn8pLaNw5q0zsaAcVaHcKgCjrwgIhAIH0436ZUiHTLilBsD5EFPwlPG0Vsalk6mvUxQr7LH5u"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608130256-8f6fd916.0_1608130439381_0.23710379544778593"},"_hasShrinkwrap":false},"2.33.1":{"name":"@xdn/prefetch","version":"2.33.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.33.1","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LuOJMvc+mpWVYpphxT+XWLtzLwaPNM27klT5FC2ODRvK+TVpZ9sq3rj3CYTxJ1azw9h3L3nDjRDjP9orYEscbQ==","shasum":"85e806a0912d541d6b927c35ed4b1dace974f012","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.1.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2iY9CRA9TVsSAnZWagAAEN0P/i2nh/h/+axpJAtGborO\nfnnZsvBW6RAYMTeH9C68Kf4u0GMR76mBSKChM1HtbKO9JKafwMLBlwG5Xcj6\nwXC7zJ2DhDkgx0W81W5jNPnnPc8R2QydT+qT9yuaT4w8lO4aQKV/X/esg+VY\nSaA/G/UxAbL90IN5TBX3XZr1KS+rtHMcWKG7Apo3HhPY+HCS7z0XgefNKRUF\nIBmdKTL8ZaTnR2J0OU9b+MsThjEhuOV+cXuxlOsZajESH26VqlclU6WjGDg9\n2FZlVZR3lxO8vE5aF4zqDPDL59kQ2RhYIuNQbLrsdrOd9KNHvPMVF6eV4P+z\nDGZHmDz4cakxc3xYKSOM+eBxLfXNOdDqdaWMz+55//8b8T5P+oPFECXn2Cc9\nWIeoo1ogY4DvxnePMXEcYovUx8li8XjeAgAM+mIuKy8TgWd2wH5wr4qgciHA\nR5143buD1jebvCpJCGigPQmG5Wsbte94Q9EyfcYbxJddY1xFvgggPy2AGfmr\nI+y0/72Xj3dFoCvTcty3BNRgB8wFJE31yX7t0vNufoABgYNV6re21T5jdooV\nvfQQgEx3ZhYZKLdO+FuUOSvyojQDczja/C35DXb6jBXCDM9puZoW2pzv3ubc\nWKrpjMZdfYxkq8x4wFGvK0jEsiA93fi8OVb0lX+YPv1TiypxDAzq9Mxuwd+U\nDzP1\r\n=epEM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+sdkSq/WYcM7466aXlV1BkrQZFT5fqZbwXVYF6Gf8tAIhAIOVedoBulU2iiiR/wlDnt2QtVZKq5JAukNPUG3L+Dzg"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.1_1608132156380_0.4632123318355079"},"_hasShrinkwrap":false},"2.33.2-next-1608135242-f0696638.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608135242-f0696638.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608135242-f0696638.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608135242-f0696638.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/n4wKiKRV8mOnizOYC2R0aGPm1+7/EgbgAE3ZM9KqPSdp5W3TxRnOCSNl3HZHTEZo5I41bV1lNtRJprrREHvcw==","shasum":"91c614854a9ae666854cdc44e1ebc26a2fbc815e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608135242-f0696638.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2jL6CRA9TVsSAnZWagAAy8IP/iwWhaIUGnCouq6WNqvC\nVfS3yelm3BjVNXLjS/Nux9IhdDfpmqEzG/TKyrFCyGvZe6gJ3oghkyoggyL2\n7B/v/SXsxEDe37gJSfluB5AonUHhnDp/tfdnQ5lIzVwJ4ojGjWM4uPJPwPfy\nEYCJYR/11UMrTJpEADLCKbw3A3pDlMsUHBPawIIowYCGP/PrMF3P6qM4uNys\nzgF3hClo1YwynstarV1LhfgS8af3P7F+YBx48SjsE+D8f1a1t/bgqf/hWCkf\nEXYG1nHYEJ2IbBJaQLrk810JL9eArUpE8rQxL7Hd2bx4lUDfEPKg8K/WbE/K\nYLpTWczVtpveZz/0TwBf4pIO4OZBlelvDRGfWL03qu5FvI2vux4/TmfLR7a3\n2jy4Ox58WqSG+ZnwytntBH/eWQ1ANQWZtVvdutCiEPHhTWW436zAffCsDGbL\ntRvInc/om8SQ6TKtAJTVXRPTEpjOKnjAoYpFz2TpK6CYJS8Asxr8rVxpgmvL\nAmSiVR6Kz2DKHjvYp2jsvD1rjCxHQwZGJjjJWhsIia5efgCL8tkRNQYq59SE\n7VV1mWOtcGoRgpnkzwo6RYO7jRfsha+3s+CNF1vGxczeMe7QI1zUKFksFotE\nSLkwRyvAbCh6S/ZMFBcOrjsiB1VXCGpqFUe/t9ZIaolgw7WQhQ6fmHCG/OXN\n7Dzb\r\n=CSsx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE/sG2NCqF5FcEqEbUtBoSpeFHOHICV3JqxeEuRCCCU9AiEA5+W1mq5V8QgSunVkea51m5ZOwYT/VnDvt9YYJpxk44I="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608135242-f0696638.0_1608135417434_0.8822103800475354"},"_hasShrinkwrap":false},"2.33.2-next-1608138916-d5e9477d.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608138916-d5e9477d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608138916-d5e9477d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608138916-d5e9477d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-sJOPSM1LB1sPsk7pGFw4+iEhJogfJk39f8tGYLfEK5QCTOnszuFHVf7c2f71dVZjhWcwLJBF3HzXdGL3wfYK2A==","shasum":"6e39e604572ecf730fcf692488ccef6c712a439f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608138916-d5e9477d.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2kFLCRA9TVsSAnZWagAAfo8QAIQVrM9HohDhLLeuHah5\nQ6D/fLs1Sxu/YCidO2XThB7mE7RAN8ffEHiGX7bgSkcIp7d+xTsJ1TLaWxfW\n72ff9D1Uq2dido0rKgnMy5d4KKBlqsorpdY9YRPILggykuabhpRFrqQFtciZ\nhgTqO4Zys87kc8a6eh9zZ+/z++R1s0NTZMjg7Vjni+iryxVLG71RzaCTkwOp\nSIlxBavw2ivcG/qGDxgP8pW0+EBlqO2RO0f3+x94hStTpxX5vSvHnhKAHgFh\n6ex4+I/OXULpOm7DuGxOA2nz2QxIejkBil3jF02TMkG52NJahFwUQaigIp+f\n5Z19uLsJYysKReHS9Ivoqjz2TPRVZTw8VnxZAJcDFIRzI93MQ6waWGym5CUb\nlBksR6xvMy2XriQm2kNnW8cOJSMUyJss1X3wxl2mFPD+GSzQb7XOv05rTjeR\n0EvRp2zr4Q9lwPNB4nzRQW9PHOw/RvYzei7KkxgO6AVvOee/TEQtkhg6TM9K\nt+JghGYhXe2ZVe6plG5MMTinrcPJbNf8+wz8X3roaT/TsrOmolNf4tfJvKCK\n9akw9ItxKs7DL28bGQzMMn4DUIowtQE418s/Hq9QvsE9FXjEqMSr0JK5NJta\nFc6dzHTjaB9PKUutF3+1p1Zoaan2o5/6m9ngr5gbNXm+uxmAhSvYEnJouwow\nW2xi\r\n=PPsM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBmYFxh6Rb2sre8fzt9SFd20/O/lWt+Fb9E9WHaBwj5cAiEAn8lwZFaIBSGv8wYT9LbAmiaYSlW211a4iP4lfCsn5AY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608138916-d5e9477d.0_1608139082812_0.0817373309254088"},"_hasShrinkwrap":false},"2.33.2-next-1608140836-4c6a5a27.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608140836-4c6a5a27.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608140836-4c6a5a27.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608140836-4c6a5a27.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WhSelwuv7Xb1o/d5uBE9kiNgP7eeqfZhSbGAvnSZI8mh0UMVXHF3mwnrI8rMjHMEnyDZebthXdPp6xHJ4xMdug==","shasum":"e1c29e526c879d49917f20d088c6cf218b329be7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608140836-4c6a5a27.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2kjaCRA9TVsSAnZWagAAdk0P/ihJFmRef17qmwKOWjbW\nUL2FnOAhIdKwCZYkFwi9hxPbs5icUTjnT1GVS37KGJ2CkcJqc06hRee7qPC9\nKhwzs1jFei+2S+u0O7ijPX5YtUWkTBIkieS7CbyL0FOuoKaXJOhpqZhP2SaA\nBs20fd9DGIYwHu++f/gpinDCThWAYYFf368Fyp4POKoDZlW1HvRlOHNEDkMh\nH2IEatpXrbeVE7owazps4Kb8eIozupaeVF5ojOpyCZ5OJ8n3Dgc3g02Md7U1\nsDBCTUaVRx38JhL1QmNTKFDagCiOZ+87jnRRfis3L2bHgb+1Vc16Dp9mJQjS\ny61xwuK+eaALKR83h/GKFQ/tXo+8l/EqxYXMRp5lOVGx5vwd8N9XNBsWDBgd\nSEx6lYVm9O43+drIfdP1l4E00KTksSBos0sLdokYep2SsfBNWrfEQpEOYxt/\nk7H6TNdDjjI9bZ8/l1UZ4mF37/1BCGfk3xg9f5b4DjSnbGeiBBBZSYvvD2JC\noTrJGJsOZCuR2ZhtuHiTp/Kx7jDZQjSBygs4bAe27uBpPWoH7zdVEtBSAxYa\nixCjggwJD6mtYnpIwX7OrBFgGxiAKinpdYC0P5z7tAoi2GAHIySpex3RFtek\nlrJk0RAaHZOP7z3R4B4DABCh42V+zGTvHBRkvOjwKnoOfGEpyL4YB5Tzco3N\nhRPk\r\n=EIeW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHbRnRnc23ogoD2vTfbAUW0uoLKvtoHvae+36+bhBlCxAiEAyG1N5XITLgWQ4lG+5lSY60X7NCZ0kda1JNiMNEvrPZs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608140836-4c6a5a27.0_1608141017997_0.3942995883686822"},"_hasShrinkwrap":false},"2.33.2-next-1608175365-501ce721.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608175365-501ce721.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608175365-501ce721.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608175365-501ce721.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ND4hZbDKUHfJIySnlZK4psXgbBzt4rFCykMMp3HMYA9vh0oIbLfBMmJt4LXYhYol3jXj/QZDvXXWpjCTFxzvrQ==","shasum":"26387aa5039c88ed83d70eb21b61baddcbbb1f4c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608175365-501ce721.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2s+fCRA9TVsSAnZWagAAKdcP/2Q4mmLFPEadv9AnZu8G\noRaPh5r4t9IqcVxM1Oq9itz3yXTRI1llJkr4yG4baxj8sRqtjf/4daGjUUNX\nza+Z7JlPFSsbN+ax3PRPJioRNZWIGNTPHEDkygyuCMWCJbn46WUzI9RNdjDI\nzAQg4CWsmFjyT6qsxpiF/hACxhH92RTbYVf3QxhStvkEDTDYosWUQrj8aPUd\nZZK4uCGauX0q9JQqEz6FDCYrfCAhlAs2X+eszEm67LE+nK+cwXQvn2f38/WE\n/6xjcTLLFGqzosD7XtoCD0KFPhgYSbfHPYe8NnedDPdSY9W2kdGvEtPSVIOL\nr7MIndZFWaXm2+QXmFXMKKA3WhDpaN7ACDzWG5iP3UYIZ3JhS6WulVq1qPz1\nBGvdqyUWcOayfmrV6kib7yqgH2EupVJOMjtnvkJUhO3ugjtcYrCCV7uRgKBU\nctz5K235bxVQROCp76uN5p493TbhDzAe2mz/j0Aa3xzo5hS7wN2ufb2Nrdsc\nZWRrXUqdKTvIAUiw3U9B9onCcYn+YFkVKdIo/zkeq9Fm0ZA2XryvUMhNd/Sx\nDTXbMm1fDbXwwG0hXjxr2Cf/Pbk8PaGzo8jdkrWm40TCsLismcDa4oq0b1Nu\nTjymerEx6wp3SXD/YP6m1joOdU0uPqVbd9sRWRI1aWKTfRs6YYutpnCwVmb5\noeZT\r\n=LAWf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBixVhbS05LgIuH611E9GItnA0O9Ow0/ktwVwqNCOZ+UAiA8p4G0EZpVrgE1sDj9fsUsPApy4czNuQY1RhDh9CNfYw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608175365-501ce721.0_1608175518425_0.011542513639296148"},"_hasShrinkwrap":false},"2.33.2-next-1608176934-e9719e27.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608176934-e9719e27.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608176934-e9719e27.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608176934-e9719e27.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Y9kd3L2oZ290CXtapTR4K31NK+SGDyzuQ9gFwNVveRxidaRghTFHlbbefFr6twGHo1985idzyslJ4p2vdWuRuQ==","shasum":"3ab0df8589b8481beaf6d4814a7e450a8b2b63af","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608176934-e9719e27.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2tWyCRA9TVsSAnZWagAA1JYP/33Qd8+GYnLFWDYkYgkH\n0xKjrzQgNQYsETrrxleI1sWx8bzQjL8uO1CaEMpdr+7Wx7ZLx4LBLyo/Pefz\ntBDnqNr9ImRAvjO8JookkWOJ9wcVVB68Dkm3TkMShnABklF43fCJnlt5yfny\nXEW3Iq5T2BPvLD9omuWJchLkE8yUP4aLS3mPIzDcttSwCCHlghuhod2ekaFu\nU/v14rxoqfirowB7dg5l8xokPcPutI7ohE5cnZGjsjOgxQBSOTBSG8fAO/iw\nH7VoneWdECk9sDIiyBskWQNCTUnRklkI5jmH1kmbjn9Gkar5PVsXmqsJaVKa\n0qtnIxFnCbpVSHoZdMGgVFUGCTgNd7EAEfEbdgAVAXWRPC5l5eGPrLGB0XGk\nFuocwFVbyago9tsAno9PmLL2sMfxuMghDBbA3AZxXWJK6IwTM0+aIhmnQ5bh\nY0q5FDc9R5YryoU9FDI5nKBrYRCTBkfhTpI2LNUuDJtO67qMgBXfRUNZ6cir\nEyrR7vzbj8t4IvrrmEpMDQXCYJm9il4k5ZUYS43fmDkD+EAprYHv/1FS6ExL\ntMXbKEOtN8VtqRt42Y8J/S9i7hMKDhuaGLjt3aW8byps0gleTjP/cfwxgXRN\nT+sDK+IuQ1jr/Ai0gYyUvSgrtwSVTudTqpToQZZQtLzR561ZG2Y/rXN0pP+B\nk6XQ\r\n=SOcc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIOD7FEAMNmM5z33MsCFPRHnfetPAsJewNWZpSnTNd3wIgAidzrf/iD/Q+op22nh8sCw7B0pKhXRL9zQuCi0jDl1o="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608176934-e9719e27.0_1608177074059_0.17996140305204023"},"_hasShrinkwrap":false},"2.33.2-next-1608200469-e61d7e58.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608200469-e61d7e58.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608200469-e61d7e58.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608200469-e61d7e58.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3TOocsnZYCiB3mC26+LT1+BvbyVxF4i41LolawkeyrZzJmo5ltjymfFjEUA9Ln6h9B6gUuIwFpt6eS7iynFC3Q==","shasum":"50f3571d3875f8f3b7e9ecd9af21536ba1397e7a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608200469-e61d7e58.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2zGuCRA9TVsSAnZWagAAq7kQAJH2oHE8gF8Hk18xBjBk\nczrXIWf1pXPJxK0xJuB3J6+Ht/KB7MIonNZjZcwJ9HTQ3Yv51JiYTSNOL7EC\nKSF1i9sZOJ/AF+h4t/X2nPNx6SDqT6FsqxTNbEHRx4VA/ii6a734QvdBuL7G\nCre3sYJtWkdjgCA+gYvm67/ZnWjYp3KOP1Ys2qmNIWSHSMISysLS9q+BdmKt\nMtAcNumCBcgi6RtaIJRtHhDgkwhQuS07/fzaMdOZ+DlVWesV41AMS0RFznSR\n2rPCIpurp4/r40W9fgd/bCE6jU2n3lpG0CJ6T5Hb+UKvG2YrdYEWy7Ifcdjs\nS386UlTOZWqGrz7AOm/JPwGOwzWjQGb7k9LIc7G9/q4TcPcYwnu8CYcjqUjf\njYwa39402HjPy2lRPqV2lkeDKeZFU/eZfztoPmCcvk7fOs2IB3DklctBBA9m\ngpan9RtFhlUspna2AoZAFnabxuuOzf0ePDXHo1wFMW/esgzTE06R5Jou5Sx6\nmW0zTDp/P8yR7hg7uZsldySXsA7/Mi0QMOPRdpjJ1UnofqhPztGs66jeYy9N\nT1JgZeJaqgqxaTBaWJUihtt8agp0sjl8/1h/MToSQv7oTgzxAKE/6S+PKBUI\nLQ+x+ZJ855DqIHwm1uZ1vC5cr1dkG7ddAcRD1wXgCwEA1UubEs35sP9k8VVU\nXw/p\r\n=rXD7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoYp7hd526HfG+lHwZLfqnz2bYXcEGSFgzf8y0FVVg/gIgViwFF1k1/ZUrDoIsbQRz2BQk6+jMSg939JdqbldQteU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608200469-e61d7e58.0_1608200622281_0.8122431166614192"},"_hasShrinkwrap":false},"2.33.2-next-1608201574-e61d7e58.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608201574-e61d7e58.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608201574-e61d7e58.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608201574-e61d7e58.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-R+ZrJXfBy9gsOgNo/C6ONcpK66lOo+frPvhMbm1K27Vc0qis6EhdjyUpDulwVRJUmb2NwnTlbj4XxNSP1DP/JQ==","shasum":"f4d3df48c2aaec2302ba5dd614436c4a548513f4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608201574-e61d7e58.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2zYQCRA9TVsSAnZWagAAgTAQAJCpkS8SlOqO+PxHyKhV\ndY8BRuipgunwB4g87+lmkzzjR9K6y4JPIZEe8A85bypUjXnncbpn2S1P708s\nDERs/mYMOJ0f49LWSwgjNdPVDYcrEzykirfpksFQbldvx127/ocwEpanOdqo\nwFjHdc7fffh+8Ws4DEM04sL/lSljYZnPkZTDE8dAyZySU7YE6V4ja0wdApY2\n7kEF4iKzjd3gZghfXuKucWY3p5qs2hUAKSAQ1R4X+H1SG7qOZuGFU1LJE9yu\nbNe8IWvnlezz9R6oxxag07OuoVX9jj5/PvkgpINdnY7rdkLs0fi3H2RJCfcP\nfNEI+n2mmTxmJ6xxvSDDtWXGtxLku4HXCWRvfkGupPG/Y5QB8k2qXBE0XE3W\n58dVvxX8DOmbvilk9H+Ve+4MGi4ErzsCEHckGap/cgYqlVjpxJ31XW5b2y7v\nmwTBeDsCzY28kJRTXTjULR2vkVzO9tXUr7FYYGjS7HYQOKjityDo7VRkkfB7\nTzxBIkMWFHB3Vt/dbz/Xdj5YGq+9h7eoORokIzDsymbUqCaU9HgcGsczJxRn\nI316A3C9n09FIbaJgSp4+NZ0hSK3iXjoj7mwioJ7pBPTEa/NPR/6r/OQt6go\nNqK0oO7eolTMdWr9ay4csdJB6KbZ8YvgbTZ3WX/I8dQEigNru1eM94R5tVfP\nWT+m\r\n=VWFE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr/c1DgUhlMsCvOG0OWBhLmdeu4neURfED6mJjg4ZlEwIgH/zmeI/FztkBZJU1UtE6YtrmNj2Wx8anA0rK6jXXCw8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608201574-e61d7e58.0_1608201743633_0.2868802532340047"},"_hasShrinkwrap":false},"2.33.2-next-1608203172-1031d9e1.0":{"name":"@xdn/prefetch","version":"2.33.2-next-1608203172-1031d9e1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2-next-1608203172-1031d9e1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.2-next-1608203172-1031d9e1.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ke6rNQa/xpQx+vKLxYUkaKGyvzWmaglLf9C8HQAZbMa4rkifxcIRilRv16td/1SsmpLOs3Cuw1/OVLlixzLwUg==","shasum":"9f48a248efd8c2a720e64b5085cc7ed9a2335e2a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2-next-1608203172-1031d9e1.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2zxICRA9TVsSAnZWagAALqsP/1RhjbuUwxfng+b6xALL\nNHL6HqSMnLd0ULZWBcDcQd6RyKhSctxE/HUH9Gt4YfBJyPEFxufMMstMXP2P\nMNK7wdOnZvjLG8g+Ggi8AsDVtfxpYHqFZHLYKYzT2JJ+qhLQKnmLzyLVVOrf\nn6vApnH2mEnGJitR7Px+T7SHOvroJMLiWZTjEeqtCpD/tOB+LbjDXyDQi8Ae\n1B0NLhq7HZ0aqRGhEOXw6BPUCnMXdPmr/uKGlBUmbsKYvR24Y0JzJs67hVL9\nHRRm0vjc4fZjv9d6TSDcFX0wVul7URYTcEcUtJZbFfmO6fcvB6fy0gvVhyOE\nIxXabCxQWlz3eozmKrTC8sGXqPfqG+hay8lCHH8WOSyVYJjg4uiMYEMqiwZx\nOwkK6Ai+f1UlPomac3AimGSxOAt9w358NEyrWxtJJ585X4eESTgh/A5uGa+l\nOL7l3otJmlGgDBi1aXA7RKnn20ROQXvGKazuCnHY1nS5uccgX/0w0jvWZGQ5\nISiKvHyedrNDOxagBDqDnJCtINdF7Obpcun96vFb6WB+pya1XDRAUc/9ZPOi\nAF36nSmM2o3BVwjYrQER3/7SLLMoegZ0KKP/s/M10xt9soqai6h4e2NX6ToZ\nrZvEbtdFLe5xihfBSyTEUV1FtRYwCXoxsn6XSb5knq3RXAD02fvcwo76n2ge\nre/z\r\n=P7gv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIwIiCpTzB+L8ARsKqaRnrOG85NovKq6Tos6tZeLpwmgIgX7sL1ezXJb63wg8SuUxvOkrH1ZDf3XcfhhR2XETQ11Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2-next-1608203172-1031d9e1.0_1608203335494_0.3547922838086095"},"_hasShrinkwrap":false},"2.33.3-next-1608204470-9f2b3b55.0":{"name":"@xdn/prefetch","version":"2.33.3-next-1608204470-9f2b3b55.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.3-next-1608204470-9f2b3b55.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.3-next-1608204470-9f2b3b55.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-preUPkSLUUMjpi+I1m7V8jUXiAodxe8HdW8Ama+UwgRIiZ9lcyhY8k5lIkCvAuRMWHsSaTpU51meCcfiROlrrQ==","shasum":"7e0822dfee15fe6292d7d21f3cfa8e7e410b4c9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.3-next-1608204470-9f2b3b55.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf20FPCRA9TVsSAnZWagAAs9EQAJEklRPwJW3F99u9TcGz\nE0L1nL1P9JCtvCdMTZ8HxDZ8g/bKZ1MSMfqTh3PFonPLwSEYInORWSjBv9p7\nzsjdFiH6D3Ivfesyg3DxZxZrKo/tVLrRsdpCRGFP047BXtSls0MUAcjsYSmc\nbczZHo7RiaoYWBAMNgPSgJUpZn3Yk0S5SkNEU3WMq1AQMzKjRTPPdRqtx9ae\n+s+MHUjB2PvNk1JK7phkeyiVXNr7tlORtwgAItgAz71NObiWEOGnOxUqmsef\nyaBhJvEsmmYAWUaHZ4H/YmpekW+uepOtOCLZWQDkDKSDK1K0v/4tarnCR6Y6\ndzqXOuuGJT/BzwsQ6S9gmlog76hDRGcrkcm5fPkH8WzZ8geXz6DK6Vjzogcv\nDVxGMD+DCbDVm0sKvaoZhpkwC2QdAo+XZ8669Hs9GmecvLJp4V3pAcj5xkvG\n8XHVxG1ltlnTRK4GFZ+NqEOWzkMmFOsLMRkjdHa8k4FGhThMdEs2Xu8Pkmdu\ne1KOeZnY1L/mbL7GI63SvVsyUPTovMLGXDB9KcLdEVoawmX+yZOxWGicGtIg\nirWMW5JAgMYq9S+FyplsLGdx49w7f77L6WF7zaDT+XbpiL8qUGFC8gylPujn\nvOLqDYl1zY4fIFBmjPEMohvNWQ+z40Kz/jhAdHTcSptffm0lGDc85SG+GPO7\npBMK\r\n=wNTR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDcBYBzGm3BqUsHDnUxXLMM/3Zzx49HNRi8CkDhPh6xLAiBDbNz8g+hga/S79a3lJgox4i3MKZXSYP/vUWdlB4PFrA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.3-next-1608204470-9f2b3b55.0_1608204622809_0.18633173754264432"},"_hasShrinkwrap":false},"2.33.3-next-1608206118-be25a311.0":{"name":"@xdn/prefetch","version":"2.33.3-next-1608206118-be25a311.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.3-next-1608206118-be25a311.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.3-next-1608206118-be25a311.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0GACJ2+fUHWfIsJcirLq2QpJdttzXqAJIMt2PCvqZ2vOFp+jaPU6Y0WLTOogi5CZ1u1JWJvc8m7mtB2dcVfIuQ==","shasum":"6f40552db54ddb2e20a7b8dcdb18fdfef2486509","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.3-next-1608206118-be25a311.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf20fVCRA9TVsSAnZWagAAY+EP/0UhDcxSeGXUzWFoe9xy\nXyhcab76969SzWGYdoG1jBfNgH0OCRWtAotZglt6RZK2kHj6Zv60EMoilJXw\nqe1pbuudVS2dlJqA8Y/HtbAZNf+7tmGkdmQGEftuISFup4hiaEwuNXshwJ+1\n8kNdMsXeCE4uM1AfmoTfMtqTjxYLJbifdaoJP5lf54aUQKsbOAxqCqV8aWGe\nyiC3E8Jt4R0eZyh8wQuPx3T71bw6ujSvkClQyn1ylaALZgpgmT8iM1fNffa8\nmvF0UFShIbODDAw5jAG1q06+XvzvkQzI9nmZfCol20ETd0rNcVGZfUxNdC2d\nF4gvg6ZspHPu6JhwAfHUtnhcp5DNJkKwiDeonLFoIt2OleBwU06KA5Q6e7c5\nUlVzeTh0Q3d/xNDzck7obyPom9FdYf4StssHEyvhK1daz5GjtWpex297PN+L\ne/nWpNtNEbA3HsW5hgYn3LLIHChQog90ZILFKdxMaSSXbs1FkZ4ZHIXc5y7t\nUrgvJ33gV4ZtF/TpfLrDkY6QwK5HfXBFP+VIaHsmDK8fr/J3MrncgKJwg2wa\nXGgaQ2t7vBFZmCbQI4QV15fb9tVKsJx3FqL/NXtO29KaqpAJQ1O8RDAViORD\nMMA1tLX9TiJVKdyIAgaRkGGTXgRwzSAF7rCMUlMty/rJjz8l/TDErOztE3S6\nCBpN\r\n=B5tb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA/c823mP7rmaQWyZK4mfFrMYnF7+ZJ77tG6PZqt5rIjAiAtx4tC+Y52XJAteCD5bSzLKQ+jenHcpQ8JpTUwYwrOoQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.3-next-1608206118-be25a311.0_1608206293069_0.09495613659119972"},"_hasShrinkwrap":false},"2.33.3-next-1608210925-6c0dfada.0":{"name":"@xdn/prefetch","version":"2.33.3-next-1608210925-6c0dfada.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.3-next-1608210925-6c0dfada.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.3-next-1608210925-6c0dfada.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xfl80Jluhc0mueRrb7cHfUfa1jidZROEZzubVKDOG/SMwYHPNgzOh14QCcfQrcIN/YOX7IJAWSrXaQRomf69Hw==","shasum":"48a54166c1d392ddd9a87636fcdc26d854e15495","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.3-next-1608210925-6c0dfada.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf21qDCRA9TVsSAnZWagAAWdIP/iTMbQYR8m1PlV7M1NJY\n1SuBWfHyncQ8EFr4E56fcuCuDu7bQhRxBeFbI95v02n4tewhjTjju2Yptfaj\nV/5Hjis6XERD1K7z/l63tLmswBtFebJ6PYFdBhVNienn0NETECmeUi9DFTND\nseN9Z+xSuwMeSSQ6DzJ8aZohofgE+echORiv4tp87S6K0EE18Ek8bn7QepfT\nQl/XtsizDp3HPFwN+CPrff9Dw+BIqnyUGzwY2+s88ZlBDh+LotDo0YjFya3l\nnNAoyVwLVyyqs8ElUI94c2lfy/f1ai9Qecvk2RZI5D1s3KyZ+CdjrWGxCK7K\naXXWSM1zbpf3TPY+240lZUqZProOXQY8QKetjbQcExT2ABRNEyVI7XNw5ioN\n74HUb7a95USGJzPTp0CV93dcFiSz8JDd/CH1IiII5eGIwy5Z8hFT6oridUCS\nBOHt9K0Hus+OFPtDSqpqBnZeLD62n8D2A7LLsSOCy6T9+ojNayEr6A6ZgLf5\nJkIQdNuW81+ZtZrGtjT08TUgeIY4Tq/EJAZLLo/OYuwnJen4TIDf1VOmwBZk\n1LYolb1mktafWgMLlL85q24BjzyTkes1UFTJgSQv+QWCndiTr3rLeRkoEiiN\nMQfvIEBizmv27RITA9A2fqVPc6R0pFiltohltUOnn3yNdqNK8KB5Tp2DF/QG\nUkV/\r\n=vv3e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2+xswtsi5gNwdypV7mxFA0WkZDYbczXKYbqB8jR4r3AiEAkp6pbAsJxBmPpzGTAWeQ3jwzyk4kx6RmZ1hzN97/Pe4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.3-next-1608210925-6c0dfada.0_1608211074952_0.4561033428165442"},"_hasShrinkwrap":false},"2.33.2":{"name":"@xdn/prefetch","version":"2.33.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.33.2","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-n3esJlZavkWTMGCDMJ+3KJeLiimUETrBTxsMzu+t3AfL+WKwoahRDHvPAH4FrIEwVE5GmZzvyKQbTYyaHjg1/A==","shasum":"44f7155a348a69d8dd872c009446f57fe26a8a7e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.2.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf216/CRA9TVsSAnZWagAAKDwQAJLRec8ZlwhH7e03FCQ3\n4XgEGVwbVwspXUejSdnNkco5I778xNpP9BeqLUpN/Yh80TGqgSHp/LCfCppr\nagRWwfKmEqfsa6N2K9XTinn6aPyqkcy5LEiRGswXNHXEcfyV466fOxuUyFXQ\n3GR4W126mWhj0UJ2wWf1yuYYpS4lBFBefiTEEQ0N8qgFNPlmD03BS2B/qSEh\nVqMzwUI/igQHMuVUYEQBEdbAcgHiiIskpk+WO3D5Tt5cBkQro3f+Xgct8ujh\nCYWrwQwS8n0ZQ4u79XN1ALmKRGwvtJIrN0JAkzU9nN3NzKE9e/0mhfWk82D8\n7I11wZ48zNAyLRg0yreOad8QGsu476tuXee0Zh5EEXYDFKtqe8Mp2hUIkCff\n5+85h2TmyMUNAE8COpxqKlAWSke2FZ5m9MhC4itbwb6MrsbnxLiUR+UvqIs5\np4hEuZUVMeMlKETL541RrAUffP/6RltvfZpSkicwP3CefOe0FvZm52IuMsT8\nKffNws99WH3M8buiNuPNZhv7Tc5Q4lcrlYI/slyvEr8ydVcIQuV9G2soTh35\ni/WMZsQK2KXnVdOrpSnrZyg/IXb5WYtW3w0GC/jnTnfkmxEdZc7T9S6Pfzjk\nQC2MlOB0tAT7MADilsNFHDBfWv97UoSA8U9WmT/9cDauz2wWE47BI3QHZYNg\nKXNB\r\n=O42s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAp3pQp5krz6j2YQOsmMDWRTp9unGcLLKv/BbYpfZ0l9AiAOQeypDyi0Oxup4DjAy+uXjTCXhpzekZQeQFTc3jomQA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.2_1608212159240_0.778694814752303"},"_hasShrinkwrap":false},"2.33.3-next-1608214108-f2be469e.0":{"name":"@xdn/prefetch","version":"2.33.3-next-1608214108-f2be469e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.3-next-1608214108-f2be469e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.3-next-1608214108-f2be469e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+LK1QnTxZxP6e+ZLoxpVnd19VfHxD9E/+hPcTY8mmp+qzqLvjG+0Bfkq3JHot3+csUszvvH+Ygw+Z10nxWHkDg==","shasum":"98cb50bbe1fad3d74bd949c75a2f4412b2e5caf4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.3-next-1608214108-f2be469e.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf22b+CRA9TVsSAnZWagAApgEQAIZ+M7kxkQZr8ceUhHwt\nXiJij+5WvX3hXFVu4HjgJMCV9bGsU0rIxh8tGdL5CBI2iXmDj5faVsEufTuF\nPwa86hM3tj/aiD9lAUo9A96I1Dq61LnjgXGwm4fyEsyHf51e1ilTmq+sSxno\nEhzF4fmtC66x3r/wk9Zz6CQHQX1EAlZAMlCNRUb8gWS2hSDkxZpofKJtVr60\nhMiizAW+W1wjEYGysmk9SVDLBguac+oIgSv0ybzmOiVWPklisWH9E7mYGijW\naqpvLayt0vgD3WBT0RoW/bTCcTfjKAkU6dgxmgtpUVQs640V4FbegI4Niguq\nTEaHUHqf2l2+3OGlP8eUTtTrnhNxm5lJvPTV3MOrKoPFDkvXBn8ruaGuqDkj\nmso6AOUiH7rWDGXo9LjqrCrH1mk/vHzHOlDR6N0j2DjijEW02mCwam4bo87y\nXROfBlBEj5xQkQs7rkXhwGfhBuhA9OQTAj6TMp3Y8nk5JZdUjh3ZhABPg4pl\nJF40POARNG4B3OY0K34JARHlP2I8bRKbnjM1Slh3O/zKLqP7UtUGNtokJqaq\nMvEpTnxsvbnmr7ZRSlqgZaqXaNvOivebKgWYUUxR5pZSuKgyT7xQ2LEvFTLK\njqe7MUXF+AXrBkbSSvJYobNgqSjvHa5CMq7mWKxx+t5JcbLBNygzmc/Jwdl5\nj9nN\r\n=uyTQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGjqFnyh1shEO532BSzciPZxgTtJKgugs1H+sYY12L5kAiAL1W/Ny8ldqk1k8PfnArJAP8xiwqUAqK38TDhvWB4Xhw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.3-next-1608214108-f2be469e.0_1608214270114_0.7789414287117411"},"_hasShrinkwrap":false},"2.33.3-next-1608215550-f2be469e.0":{"name":"@xdn/prefetch","version":"2.33.3-next-1608215550-f2be469e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.3-next-1608215550-f2be469e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.3-next-1608215550-f2be469e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MmjNIlwZAiR0GzbHK4ux/B/VRMGTqinWHJsLVSrfLT47eVIo1LWrWmFZ05x6n/306DteWwFMqnw9cVJJH/T+7Q==","shasum":"d009c7a380a59251c48b255a14335dec8d89bf93","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.3-next-1608215550-f2be469e.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf22ywCRA9TVsSAnZWagAAcEcP/iK6xmgDY2pAwEqD7e/s\np8FiHRLoWPo/dKkK/HDAEK3xvaRupgZVYUlDnyHklpILOEtytAD7EIVSmNuK\nV33I74/5VtyFA9+dIyHFDtAkcl4rLjc0/DcoT3l7cuKWlFJu6d+Ce2bnKTbD\nXu6VxpwglY2g8XsMkQ5v5KNkNlZhhFfpj0Ukun9RUMmboh2quMe5AP1/mZ37\nkXanXm/B0V6XbMYhmgWWZmhKishsMsiKncaDAuBtcxXvwOhEies6v4M3TlTS\nnU2IPU7rQ5KMVbWw+sRiMQyTAApp+upHGZ/9Hwv3LzfMbQN/xwfH0T6pQOFs\nQARxlDgbPmGJoA1MkyU/D//ptv14hfm3GuIypCJ0IsZy407R96U3EX4GAOPx\n/wA8IWpzvqsOrNKLVUiOi0SkE0RjqMWx+zkcGb7AnntG50Xm+gEqgS1DwY27\n9wdUTI8HhNTSMI5j+AnCmkBpnBe3OoxqvSu1vdQ7pBFOKYTGUjRpuX8fHiM7\nHM6yO2dBEN0hkS+SBiE8EE7LnIkl94tAr4XOxD8cqJ8KkSYUtiNHJzfqmsDf\nxi/xSnJkba3wHAL3BUefld9Hokr+srqqCrbCtulGxN+ba8GOzd8xKDSzsYih\nhY2ZYAZyv113T2BjL+F6VkT2HKk7nTtWh2USvRy7LfQasNlrErFJof9gBoOV\n4X9P\r\n=mqQe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfza9s/IugrDqUMfzS4uuczHzJkqbpLpc/hhVOAJQruAIgZwv82nOhH1oa7dO2aZo899x9SGT/PhhZ0bC3+qc02a4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.3-next-1608215550-f2be469e.0_1608215727527_0.7715340698083566"},"_hasShrinkwrap":false},"2.33.3-next-1608222257-f9260e66.0":{"name":"@xdn/prefetch","version":"2.33.3-next-1608222257-f9260e66.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.3-next-1608222257-f9260e66.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.3-next-1608222257-f9260e66.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-q49MGA6HWMQIS83w+ynyz0gPibsEQWMJzN6ZzRFfeLDKxwHucCR81Gsu1trq9CBTmXmEoYpTPQXgEjdrN8tNtg==","shasum":"e0a6104d9ffd058b2a882e7537468a79d6ce7ba8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.3-next-1608222257-f9260e66.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf24bZCRA9TVsSAnZWagAAqhQP/1jD22at6Wg+B/v24tt5\nr8ld468CKcr8RX/X2rdvKL71FcFvkiIuNG90tXVNuSvxz+KTSwStCTltBKKC\n0K4fLblQHz2HRGpRoqhHoLxuJSPseAtmnDphf5o8Wt6t3O4d7wH/FllIDYzP\nltg3XebMAJYMtxdQdmauQLYfS7+YSVQDEZEhAhGatAf5hpxDP1WKChDoo3K8\nmhFEoxGA5eQCOJdHBPMS1YxV/cPFHiMRUtWB3cgpfhfpAaI+cKFx8obkS1+4\n9zRv7F9WHIHDI6RgzP9aS/Q5QVZxPJ5tEJqhuD/WNqmWptOMEixTzVN2iwsL\nXV/Ubxhk+cQF1jgdbUbl5n81kP7/88IP21M5SGYtSooJqKSM96SwtZSxo/5D\nQ1dzmsiFkbETZDCcnvqwcSfcq4QuRlCwV51wXFokAqQBK9PVffuD74jycncy\nXXx1kpwIZobQMOVWrd9NwtbP7aoomj3X3tBD2FBvTpl9esfDbw7px/hwOYxJ\n9F65HxPoerp+hHNNSRN2hbBO5k3oIYkC+JcukfHo5Sw+xQhxL67evEjnxWdg\nX/YJohTUlpl1E23vDiT6MCYfWRdXSfKtBFPdmc3TqA4GRYOBTPX4RPfKrtXI\nscxTMEu1hPPD2D9JIM35XNUSdPIS0gKrHvSybwGSgtW+aQxut6pY/cHGUgMo\n1vBz\r\n=NDMU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHucv9oSWQHt0XeHQm9fN8dg2qIMv2tHmvyUWFO1Mld/AiEAs++uCCYO0kpto7dM2UF8kxAgqquYPq6IlX78HR3QnoY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.3-next-1608222257-f9260e66.0_1608222424699_0.9156202517084475"},"_hasShrinkwrap":false},"2.33.3-next-1608222666-2c1f1b94.0":{"name":"@xdn/prefetch","version":"2.33.3-next-1608222666-2c1f1b94.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.3-next-1608222666-2c1f1b94.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.3-next-1608222666-2c1f1b94.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7oRYgBA/j7kJdJ+56Xy+R2Dgcce0Ldm7a8r6KH943RXYAfjnnY6JLxNzJmwb74KqPlrz2wS//VtmYkRBZbpkHw==","shasum":"dc1b8369eed75ca2646cf0eb9c8d11e8cf42bfda","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.3-next-1608222666-2c1f1b94.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf24hcCRA9TVsSAnZWagAAwj4P+QH0m3NGN4vdcWUOakn7\nVIjdK1MwUfV7fkAcfypDfaeWk72/47TpPtbSXnOqMbFnp7rld5wTCFV6lAaM\nlBzFh5ALoZmZ2YmeluUWtbjscJEgkp51EjDri6UKQHdEUlMH0Xk29BpmOCao\nT1ReIrfNq4COHaNqmkoLEU2ujHMSYnRWyK149Yj/efZ6+4sZ5Zs7Gy6l97mR\nJ78AclIa0IWpvD8KjlzhkW6xtcZhjkwKCmRwWwvmARmloACI3tuL+TeLp9ti\nidDFYvlpmd53ZDKUAlhpDjcBE5jkq5bPw+qbRlBgx0S4KhfcM7iGb3gML+YI\nr2Mxvw1JsV6iIDe1tsOyWXG38CZWtsnMMts8G8n+hAVZr5fNBY0MVctpCr4D\nlbBx5C2oM8uoUp8tdq1v/lJRdLrX4DeSGMYkvLi40Wq2rMHl0WkNClkoHYvh\nOHhAL10YY8D1hUHTl96gosqCDoaNG0+i2IfNZTAM/qm4dzZQYfUWbow9qp3w\nPuhyDyVi5CwyG+zC9mdEjXoyd6Q2JSVzSqA+g7wm4n++ABboHsYwbFxvNdqJ\n9vlCJBjbUgejr7iN3h6xtxJi9l7Qqbc7dVJCeZlYtj6S6T8eRLReQ/YrMBki\npZcY1heTuuuP5P/183PDD+4MzWeipcpPsEeQGrc1LQSoxeVEACH2mWTwMS4L\n6//I\r\n=DAoP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCpz0A4k/o0PyxYnGjEhxBTwiQNNreDFXtza4k0s0+/AIgSsIPI2TuXTA2/+EaLmRY3Yp3myxraclgymnqIBY9Y3w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.3-next-1608222666-2c1f1b94.0_1608222811510_0.018857848571738556"},"_hasShrinkwrap":false},"2.32.3-next-1608223390-4a64ae60.0":{"name":"@xdn/prefetch","version":"2.32.3-next-1608223390-4a64ae60.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.32.3-next-1608223390-4a64ae60.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.32.3-next-1608223390-4a64ae60.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NLhttXe2Esr0mSfHMMiCvG3dK9BVMuDraMmU3vUEAcuLaRhHJnrn8lu54DHXw8YGuIghd+FnyUrKkNbGvym8Vg==","shasum":"d8b966f9fffbcc52ca416ee55a966937046c6a58","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.32.3-next-1608223390-4a64ae60.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf24spCRA9TVsSAnZWagAA1YkQAJ4Q343mPrmqz1g3Ktu4\nJ+njUSaBSe7PqBk7+QZfRhnT03/xvDEC2pO76nvJ5okT5KfBMxH9GArxDD96\nPy8k0zCfZ5/mXjEIKWfdTpQYBOeozT2qPF/BcJjoptHviCEdxpSyOYPHNqSb\nQzvhcE/mHfDKbUMjVDJ0EdbaF+GWF/BRKb3o9mI4KSnLhV1SBxwa3w6B2J61\np4VocktCZAz7jZ0bF2mU8Fh2wj3SGvXJk3g7sPTEphiFIPI7RAghQFKbDbkI\nVqKr1qpEQINd6/EXdRuQAFp4+SvY5rx7one0SMgR6EyW5lpTOQXrufa0L4G9\nGMYTlIK7LfV9DcHCWOpaWU1+EFFnwNHoFJhtRWvXAVcAS6WsQqyzJJQUgd4L\nAt+BdTgZBdqQuCD5Flsw83mNz3bAzdLqfKWoHbBcOeLyFRAFtPreadDAzTUs\ny0kpCTW7Ma7hvGzzmlU8G5DNtgw6Z1C5VT7/XltnxRQ0KQZwH48U9WDL9FWx\n7zXTkzS3uCn94SCqs0S6L/lyWq0JOmha0koQ+FrO3chX9LsDZRtb9JcWqqDz\n1OSFkAMKdCXyafAQyWl1UbwAW2/zsgj/8TkbAC0jhsQL6jC9A4q0vdGy3HFE\nOZQ0O9neecD2x8g6cbhQLjf8jyC6Y3TkpaUg1eysvi/TxKZ0ecX1iDP0SvWu\nJ5rX\r\n=EGTt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5aqMhic1AP5vr1FiA9Ol033beJH5jZ5ccvn+l6Bul0AIhAPSCg4aeKtj/mbQV0we9/bMbsjPSr1UTpjlxrDCqhwXP"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.32.3-next-1608223390-4a64ae60.0_1608223528958_0.7833302379694147"},"_hasShrinkwrap":false},"2.33.3-next-1608224061-8507e4b0.0":{"name":"@xdn/prefetch","version":"2.33.3-next-1608224061-8507e4b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.3-next-1608224061-8507e4b0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.3-next-1608224061-8507e4b0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JX0XP735WcWTkFwU6fbjLlFSKUIwXpGQZ4E07fPxNYaHYKC3jdkwTIODAM35NYH/HdHxmpvgzDKmLCbBn/t5Vg==","shasum":"c5b93b35c4d11815b172d8153c244b5a8dce86f8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.3-next-1608224061-8507e4b0.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf243PCRA9TVsSAnZWagAA3mQQAIC/TDi3jNKyQQbW2L5G\ndfuJWWIahxqd0iXHf1pnOOzHo+WyfSXMO0lV3X1AxzMnd2u/V0cu/yQ/QG3g\n/3t+4f7PZLZQBd8OJ3QPFtn15LVA6RTPgJDopoAflaITIm9zPIBXh+nHPUK+\nw+cn3iA8elo2VEiBwKUu70eOFm/O2s7dEXPPPoyhByBP9ZBWERm0vPpoPBdg\nFIeenkDP483hhXxZPs9BfNDLNakQMEBz/SP9QY54obu9La0SdxcH4gE1XErJ\nck4/e10tnFQHbXei3/J5H4yNeB447bEPn1MIS5ZqBqFLOua7I7tNmihA/3TN\nw/cH3Ez6JWh9UwunDmHOBvs/7kbIEPfAa8fWbdqmPluynm9mP5bauwdfUEJy\ntVjvZg18GkwYGXP4aodVOFk+Sm1W5y/keAHP05NB3CrJ08Jiipe1qaKLjdX/\nIkXjpIATx1GMiayN7npP4OJ5XQh4mnIHFTvlFxL+i1yk+HrrIFnGlX6Vxt7a\ncInU4YqPC2ZcCeN77yL3z41VWHxJ5P6ZgMVw2o10nSKcKyiSr1ra1JDShomS\noJMfpVM26VUgq9Ah9n8UZ8dgokFNWlxCb/CKy9YxNxX+ol6Rh2kBGbOWwAYD\nbKSxLbjOeRDi1B+C4pl0cAPNet+dg9CoGnnUAb0QODb1n27sGXKG3Mc7gP5c\nv4ti\r\n=P9N5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFjF5Z975nZzDSFSB85z7DoNrq4QbmExAIAzkOr+PzbPAiEApg3AFCRWOWgxBbCHPOso8DxUFkmzuxJvq2ICh1U6uEA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.3-next-1608224061-8507e4b0.0_1608224206583_0.0573779357713915"},"_hasShrinkwrap":false},"2.33.4-next-1608224200-7531f6ac.0":{"name":"@xdn/prefetch","version":"2.33.4-next-1608224200-7531f6ac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.4-next-1608224200-7531f6ac.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.4-next-1608224200-7531f6ac.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AKZaiu3NmrvSJUpHSpfaa1cpMdC5aNZ/Wuh4YcCANqvenUKdpuZF7VqZc6yxySf44IPcrQxgFpUQuVsbOkWJwg==","shasum":"e99b34ae628886b75aa4d99f18d3698189279da4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.4-next-1608224200-7531f6ac.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf245wCRA9TVsSAnZWagAAi/EQAJD0p831tqu9kVpJfIiQ\nDh5xSj7C1yjEL3HxgaVVPvfYyIsxNYk0FRyxbVrM+yAXckxixHfode7yuLEF\nWLGEU36GtUyi4mHmVtArKeLG+slygxIkhQ+ozgxQIgi9rm4GpqWBfyrb2slI\nH+n0JO2Vkt2k/FKzmwlLvXPcLg6WSzQIAfXc/oqoOsfbxPMRYYpL+6kYj5HA\nn8GYtp7yFCbqEUwoddwdI7MSEwClct9kPt6IB5l1ixwCE1n7buxaw9QqVxk3\nmko5jXNZpRA/+mP3QHXSqZPip05vtahzZiKww8lgCI1iqruXFIllPD0iVWJ1\npXM3Pf2CMOi9QNtmUIoN0Y+nABXK+jG73s58bBL4XXgwekmgZRRLTwj5A4pd\nkU+EP51Bc6AE50tM2Hmzx1H8Lw78tGNWR7q3Q2+r4v9cHf8+d+fVVViGE5+R\ngsFA9sVcJ0cLHBno+JsOWcbEIlIrwqqgVwdPOL2QU54YQ3CLr5ONXzB7AKnJ\n7WOgWKUs1HcRHqTj9FuZOyqkK+sGzn6oPFPwKBXnsc/virTz7r66run81jii\nuNqgVVhJeFBAmol2qlreyPFmuBj1MidECHj/HYCMnzVYDqev3GsqBxoMqKKx\nxmgvW2WyLXTj33j0bmKWGpS0ono/P3rzwpJCN2UPjRn21so2eqxCzukKo7zV\nUSfa\r\n=7TMe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9VJo6xhj1v8PnpDt0QQPUvqv/4wI4orTv1HEqGPMqbAiEAtpLlZm5KH035UGAS+HKK3WhBkxkT3CROfNaL9KKfEbY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.4-next-1608224200-7531f6ac.0_1608224367636_0.9376181469021942"},"_hasShrinkwrap":false},"2.33.3":{"name":"@xdn/prefetch","version":"2.33.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.3","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.33.3","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-talttx2LFsBo4w2URT3tpYOUOQVgcb8E4jSgXhciU7/03VahXzVJozmbOGq1tkE171r07f/1vTvv2OnRaQcRbQ==","shasum":"7ffb5d81315dead3cf8d5c33be1012013ffc4f33","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.3.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf25MsCRA9TVsSAnZWagAAAt8P/2aL9b1WRa+x+2dkfPH2\n8netzjN7U1TQoFxHB5OzP1LoP0L9TzyNTuggQwOwz/7PCcbf6eyukZTSpXZG\nQf3pZiyjavb3xqmIe0mIOgZ2yufVVDd9MmOY+g/sa8BPMtYxrixGOPwT3VeU\na9owv+3T5WP8ikUr3d1FtMXXkoOgEtrcIETMkbVBDY6M5EoRyH7cB64TbGLn\nopsFUZAnAckeH53uJ4/1jL9bEZInN9X87H5TdOI9pl2zIMPNfiAMY+iI1DGT\n40ypntGkUiBRyZzi6icJPrFOC9jhC190HOXpWoR3OEmfM9Ax86zLOSN0g7uN\nz4lBOgVw7BuZA0K6CXogjzpf9k7nu+pmrOsIvaAX3rNlarRCQz2gJtLWekwW\n22npuG4leu5f7Fw+KDhbg+su/tHbyKFwilbaIgwVdG3BlRVV8PkVk1EO/m1w\n2y9dKK1xXeVbvyoGqvvCLhi23+lnsPSUKS8kwvOaIjpMsjvdlQClP/PZUZ8B\nI4FS1FdBCgfuWtiwXDz7hADLEf/S68b9JAtCswpriZ3+Vnw6cIyyY4jTr27K\n9KH1DEaMsl895ipZjCIYA4TuiGmuPkO+HPxYUx2DADiV0//tPcYB53BEYwXa\nFIwX4vf7oML0Hb4D5rS/HdVDVC08bxygMhIzwzOa5JFrzJqRFzBIHuuQMS14\nASxt\r\n=27EL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkvYrT8eDN7osVsT9wBJKbSD7vOtWwu65K3YJS0g+WUgIgaIYuyfoJEMPXPHjnABOSUX8BAOGSFtnJvdI/sR4H+KU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.3_1608225580219_0.09158601606915018"},"_hasShrinkwrap":false},"2.33.4-next-1608252872-8d3b9435.0":{"name":"@xdn/prefetch","version":"2.33.4-next-1608252872-8d3b9435.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.4-next-1608252872-8d3b9435.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.4-next-1608252872-8d3b9435.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-olkGHnlTMJvhWBlMn8s/ELwtk9qw3TBdZ8KcDlweftySvjXaffJlqonjr82RQBa2Ew4CrNWyETvS6pyFPrnmJg==","shasum":"1643ed9c3ebab9c61dc5b4ca28ef2543c80664a8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.4-next-1608252872-8d3b9435.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2/5aCRA9TVsSAnZWagAAV8YQAIcVTmivZElfAouwqK70\n71FZK16FbtCYAElLvR0WZUBaENVIH3sTb0lim20a8E+NUfU+t74UvNHcJEF9\nR4Y3hTK7ymfPP2AZDqTVPUh/cI/cOK/x3NiaHe9HzvcgeC9Xy5qoZsJ0GAOU\nAmT0Aw2qW/+T30FhE/vn1ltwA4787dIDaFDA1VN+7+5+hkX2lLGY7JLrOK2h\nNww+Wif6fx76YI4BpBJ2w6cUR0WFmroCmc7WR3BygF5YL+iUW6ZHX+9j350R\ndJjlHnaP4lLK9E1kVR20R90ZjbiZE/OPX7QY2EApqv6w2qSZ/tP6CHC2Co/f\nkMGgjFB7cZPMg9u+ix0fTJ66XdUyT23jpdyNqdoj4v+l1qhgY9H9Ad1HB0zk\n5oVjv2LAf1LcKBjTbTQkYBxjgHQwwybKXbrxxBkaeesXoZgGiH+6hERwCoYM\nHjW1UTOiZ/BmNFiN+na/WlIc4LfU1S4Y6MQwztEDnxxn9Bl0swWDHaffsbKN\nBdXdsFTJ1C0PKrV4VRKSkfOfydwB1RCPyL2MOPHlF+xnxNK6YTQBudig8Ils\nJ1c6wMb5xxl5WLcb2BoxHS8jav3GY6uxw31SsPvqAvxPeHKzt33WJiRW3ukO\nGAsOboLWJusj6sCLw579U3Gi4rArcweyPBKoEVFlST21NyWIs2k3/XbotiG2\ntJoq\r\n=VrJS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGgSh/p4rU+9jJhLGBmd4mS1Y9BB5Bbo4tEqvBmnx2SxAiEA4kMEt/II6lkPCKFUhD8psbw/6eREBorxKAeBV8kcPy4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.4-next-1608252872-8d3b9435.0_1608253018278_0.5051438564639885"},"_hasShrinkwrap":false},"2.33.4-next-1608289305-33ace1f2.0":{"name":"@xdn/prefetch","version":"2.33.4-next-1608289305-33ace1f2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.4-next-1608289305-33ace1f2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.4-next-1608289305-33ace1f2.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-i8RfGoQwtmBPUC7JYVTTtL4c8ji2pO5uAubhPaFoB53FIinueTHj+Ex2gzkrzD3X1/2bHWPGY9YkS5CD99s+og==","shasum":"44c04637c686b58bd792bee93b4b522b8f6a8640","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.4-next-1608289305-33ace1f2.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3IylCRA9TVsSAnZWagAAcG8P/RXByJGUTYSRee3WAb/P\nT11pUk/YGGIC7+dO3Pv2dlAUjNcratASviCersrCk25USFcxZG8uzpF3GHgl\ns0NdS67o2UDjuI+8SPbC4GdZtB/03O1+qtd9zTLjfOrBLwJhC94bGZfpt7YB\nAwGj7mHdmZ+q1wThniWWNjw2SNG22n/2ka9HTmexPCihYsst6XcRp83appNB\n/RuiKfC+YQeghLptk5EWD6HaM44BRtq5OjSXtB5bPcsDZSkE1XZV3wm2vlwx\n8ZlqzqlD01PfGANqgW+2wblu1oAiou5aFXmNlhztdUPT5zd8Qo+3KHfBjtKD\nOkraSW3mIDlQ9ToezbKPv8tIK+5QAszvncp4L+uEQXle0lbtEwcMSrvyW2+S\nphF2qTDIN6CY0+C8QUJDkFU8XAxXcbl6ICbvSiTcl73zw9eFzN1+UFBTFLFK\nec043oQXWs0D5jO0CECpzzhviKnZmibRAcQUn3B9Lv21pEC27kj/7lLPEaHV\n/E5AFMs5qjvef497FmQbDLNxsGqaDyX0dUg98/QVvDNbykPmm0nCHVeuFcik\nRE+v5ie267MHcNZkrMOHFWYEaTe6ph8Jb1CJ6VhvwSO+9J69BB+ICCTve3ca\npx2lwZxUzUR1SBRVbFm2QmMOoqIcBfoh160bp6naE+yPZowbhXYxR5aIieum\nsQym\r\n=KQpH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxnBFIX+dDkm9DPHm+5xKmUOsRAA6GKR1zfWLYExgSpAIhAOoB6/FDp1arra2rGdPlKwg/NRZgabvWoohjfYadxw5G"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.4-next-1608289305-33ace1f2.0_1608289445282_0.1162243671767913"},"_hasShrinkwrap":false},"2.33.5-next-1608295665-a0eabebb.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608295665-a0eabebb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608295665-a0eabebb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608295665-a0eabebb.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-l7aPS/4c4XwYgOZENMRMoin0ZjnlT5tgJ1f1xftHJgD55hRVEYorMg9eKs/rVlXSQFKBmXKbVMWLTh9dur2t2w==","shasum":"0ce29a932f1362be159f2857a8db03ef1b61cb41","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608295665-a0eabebb.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3KWKCRA9TVsSAnZWagAArO0P/R+iZ5sp/4mpsQDNeAcE\n0V/tBGYN8pcLtWVXhJo2K2IhEC5pUKdQro1qpxsVdaDqWGKaeb/AMJfMs4kf\n2bcWMOrKgwOFJ1yas4wobkrq0xxKL0zRcqQrcCci3Hk6tWtcUE5reOx3I97m\nRqnSpI8Yd8nyWZePilJ8x86q3fLWEVLI0Zp3vgoQXHoiG5J9MIOaDWgTZroO\nblhHO/6KVBUZuDEBiSrIQQRM9CKEuhAvBZcRcotBxPiGU0TU4ijtxKO0lJMS\nY+OYccnBLuoBKTWQ02DQsa0GffBfnagiE2h7D8Ah27rd+M+o2M629La9TcrY\niWaEf+bxfXH2sw1IxOHwnaynT5afhEodXIsuINyhzudeV+LuDl5mYM5Z4zXC\njxo/MLVp6nOc9J+ohZqYXwSTJQZYejxFflCC++JF1wIqfW6JrVYOI5g83DyB\n6MH8ZPVJbKt0Kq53FsrHPVTJjvTRZDLzgi3XlZmWuNfB73VhHUfzx+h9MsN1\nyT8XuBADiEySTcze2BoojyRM+kGj3mx8ZCVt4IgbNeCbbQaHyPlYTfusWLu0\nuH6E/61OdvEF8GyMsOddpTPCFI6dUYXPJiVGtTBchR7oSdPhc9MyG1wcZ/66\nGjN+xaYJesya8wCqxtLSa7YAkY6RLZd9DqKJ/glm0jkJaAzQEaHs4Z4lgO3a\nEgI/\r\n=hwBt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQDyOrQgWWF6jOnnRYNbGDnfxNKx9b22PdSfDrhkVMbHBAIfK6FRBwxBgCcKuHf8b4bRJHThqJleZcBKhzUV5XoBrw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608295665-a0eabebb.0_1608295818040_0.14329081065699434"},"_hasShrinkwrap":false},"2.33.5-next-1608296907-a0eabebb.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608296907-a0eabebb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608296907-a0eabebb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608296907-a0eabebb.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r/dEZVaq2NLy5V4e2LsBK4r7dzRi4LtUYQZrvl5ukU3H2jwnpsRy88vOXtXNFOasyUJA6znV+aIxlY10AyvMEg==","shasum":"97d6162e8130df6f0791f02d5b7b6889b7387e6b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608296907-a0eabebb.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3KpoCRA9TVsSAnZWagAAiowP/RhZWIc2kTkrdMVQ/aue\na77KRV9RZaL1en6Rw6Mhp52Hr9g8ChwCvYY1AJO889Tk5kJC0vT5P0RuoYR0\nR1IVfnjdQIppEss7eAlq49AOhlpZSNiOX1yr0BBMzVPtMX0tR32iprOTcs+6\n4G7Zub5quqMGi+UbR5TSXd3ZH3ESQqDlpmMino6NDLyIu5XcpQ6DajfIaLMZ\nDbzXIkGZATrFJDTeN8AtNq5oOpTx1RF1lxHF/BVilqUBuPtulWws4I/VKSBs\nWRYunvIJfsroWvD0tg3RvHwlnkIzRBHzFVG2U+PzZvCtEIjtbu3RLgPOotSr\nmXLq4DS3l1aJOE3Szq/U4lY9MrIcB9oxauzCFi2wE1iT1c2YiAJ+Rf1KeP5O\nY/y9NRUWLwEsXWbAvbTlZRFg4NQV7zkGgWvfJt3is7yY5vOgoA8x9Rs1O+Z3\n/bgclfLRDXcR14ZEtlhrS15vxW9noHKc8pYDU+/x0iJZug2s7weLMDjnVQ74\nuAIFfj1aQMbO4wXXzT1fK9t7DGujfwoi5rVbvQSKTnqCcAt+g0oP98GVWP9M\nYUTmIzTSSTbaaSw5XbVR4vRnrwNauKHpFQaembT7+nGjC3baX2rWZR+Ps7ON\nG+6jqXK2OEP0XIS56K3zpciw1YBjOIra7k1NUiMUl5X+8zPB86r1Fb80VbDX\nh52O\r\n=Rk97\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeEgIfWmprlxSbj7iTzxLQnushgUIlFfy0icDAv2ysCQIhANOy3b8mxgQw7HDGqqUdkkKFCZWKnJyDAZtBevDSOkks"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608296907-a0eabebb.0_1608297063991_0.37095978442983224"},"_hasShrinkwrap":false},"2.33.5-next-1608299095-45a1f58e.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608299095-45a1f58e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608299095-45a1f58e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608299095-45a1f58e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eWzd/94Hx6EyuwHoxZQnr6mmszNdfwlHJnLC9WQb4wXMN2kEIIm/AD1jEbkqNEt1BWbEgvnDDCaJJbVICeFznA==","shasum":"5fa22e0d402de39ae29d541486ecbe4b41ee431b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608299095-45a1f58e.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3LL4CRA9TVsSAnZWagAAhZEP/A8/QLk46asTJBeY+Lvn\n5q/IqiGt9f/BUHbogLWVZrs6ifmb2RJYjT6eBxsAGvqUZpmd7ZBDglVdKybG\nRgzj2ziAqcECk8zniy4frXzHOlCnYHss+UjFuEo9kLfjLqwSSGSv/w65/qrh\nEPQWQWbNw/JNlGBiroi+GrUxHvQeG4pQkD08xx3FsxlRQUCuyjDZxKewkLLP\nw/6R0copaYpb+A8THdtTMfhw8AP0fZe006vJ8MTUFiRj5vIN2JYrAxvCypdN\nirAmgI3yaytguozvc5/nEbUtOkU1Z2Mw1igtb1XGe7bOWM0bIIovqs/S1bW2\nmnMrtnLmwoa4Lb66WUpLrGHDRv5YdqudaWZL93FIVogsq3q32P6L/D/7D2aj\nHyrDg8ZLi7JI2/QNfXLqWOC2enqGOZzzS7fP4MOSlZo1ViirO5JZEl2BgIeW\nUnKG53/LWix1TAJY/Ko1ls3t5k69J9nZvWAgGqWQ1FP1q87XjkrA4ftwmffk\nPYNgHtp0Indkkm4GgttdbjnuEQeYxCqlmvIgEmTi74EWkMGCv9/7aoifkLYr\nCEhsk9vfcIyspI7RAElgkC9YTL7ahFHE5d1i11iIWUZi8VfIXEHNeb62RpqD\nFToa6ogsT5YzQakVRTlsENpOpdSkA4VxP0Rhg4LEIVXEB34m4tNt4GtQWkoS\nxYzY\r\n=A97y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIpPK4SPgVs3VRD16aUaE/RUl0YEn2XY5vvWbosHvWxQIgJMzl/WLgRgAkN3g42sJGSHe2Prs8cCz53aYcPricwS8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608299095-45a1f58e.0_1608299255524_0.41462600610239675"},"_hasShrinkwrap":false},"2.33.4":{"name":"@xdn/prefetch","version":"2.33.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.4","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.33.4","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KwEwHBTuLRxY3WMbxkshJEt0wupmp1Uq1OK9fkozcy2ot9vo8ZDbB81lvpKeivyGVV1r10+zrzEBAvmzedUCJw==","shasum":"50782983ad70321112cd6b0090695f1f724d68ba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.4.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3LMrCRA9TVsSAnZWagAAIhEP/iqqD8hOSclRxVVKH1iy\ni+qPRJySXylHwraLOBOktuOZIpYSznmZy+W9JA3JWCyO8DIbVuhxAM4LxLOC\neaxkQkbWwEK4lO2NrSRhkWDgrmMhoEQ68uaGcoc4mHcLRb7/aqNpp2D3bQ69\n7WwPTRxDa/EpOgMGtb+E2/wJaKoZA254xvHqgfkhvNM4ArFMfPa622fqwi9h\n+gXuLcXpCuP/dtpdrO2PROPUXk290nGBi0HRA1rxvw0zQHQOEhYAGIjsO8ex\nbqaGuVwDDniUXkZ1+YvDpE8YdYhvbcRGcAGx5rBOi7GlOFHZejguuJNyulD5\nPUMxHaGj/lRRmn24Q3DSJAE/cVi3q3MuVJI2FskMz8nrGr+TIDt6xa4ddc0d\n+lE8SSbVW/wXbtxGX9rxKyKwxK7B1CC8ypWleiQuhI40Xa/xsCogna+Tnsb7\n5kY6BzPoW6QqrSinVRfQx+dEbkps60lfCBcCWDQooxxSRyXuM4iKuRQtffFP\nOZuXTlU+fvcicAYmwK3vcaNXZfKBBz+hsr9MRgEKtqvvJ9tMO8gIQJ0lZnPj\nGRFxor29xlPlmgVTxsbPA5QC66oETNeHTvz6eXS6wfDKGgDg61kKBa1aH6Yx\nfsUQbznAIJDL68hcSnHpcBUvRJsvtr+TnCVeW1nPHTm9l2k4PsiuYKc4DOPs\n2x+V\r\n=Tddo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4ZWxIZMxa13IN6wfPdb0IYOEjGJbRkN2w66M90FOWJAiEA9Cg8GMrTvCIf+OZtfhIcApG817SKfCcWg+0ie4Cx4Fw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.4_1608299307149_0.9193745396006845"},"_hasShrinkwrap":false},"2.33.5-next-1608302141-80c04811.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608302141-80c04811.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608302141-80c04811.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608302141-80c04811.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mVikUsfdUQTjQ8vPF7tilQde+UhKWT99fV+6sdoOsNXXTKYb5PTRkj1BeFd8bFtkH3CyD5XwmVpmPeZ05OnCcA==","shasum":"67d81273d07f6bf25bf9cbf4bbef107fcb605f32","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608302141-80c04811.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3L7iCRA9TVsSAnZWagAALAQP/2sBzlQIIxYOKYkzPVq0\nxd7Arf9j3g9aSRhn0Uqca4J/hBC3lxsauak0akoeHz4Vi5Jlzb7naywE4Boj\nMNDNHlattFvu28kNMFF5BM6QOYUx7OV2XHJVD6R6tRGcmmkkFtiTcksOLtPm\nBBoOMX2i2o4FTarihKeL9SZieT98BXZyfvKeo8DgEqpEFjGU4lxqYKQiqZVI\nUylMTpC/JzIvUe2uN4CKmr/WLa8u4tGDQjxO8kDTEx6uWwHsxhhgFrYjRIu9\nec9k6YRzj3OQnEy7UiWfdHg8UJRMS6jm8L8Q12IcNb87uDyJ+hJ0oj6sJGOg\nlIlJOEdD3n9OvTOQ76Xnw1Yre5k/xtjStUohM4fwP/WS+vGxI7tT6xPkO9Xm\nj7B9CXPIcSyAyceofWx6Q/vTFArz4J8vq1a5bkTdYf/+aylY5zwjimMUwCft\nVP6D7Vr8lG8NYqmQZkGxNwZf743B26LKU3hzZCm1DKjxV4senulfdclBoeYy\naHUqKAyjqz0Y0Zlsrexa5lHBNKBi7SXEcCFNpiA9lVHG3YYCUNmjkDc+cTKi\nYpchXvfDWhtoMc4M3IoOAqZo6l5VfLvnGsfy8KEcWuaFUKmu7svRis5rcpUp\nn9NlSwfd2YS/rI6VLo0udN1VlZr1+bqG2Lbvt5cLgnwABmh8SMfIkCgcXZsJ\nSqsa\r\n=vSOj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0lBBT8n1BEi75PhL4fCgHCGz1YFGCVMuPDlwQ9PNq2wIhAJjE0Yh+wD+DMFl+/15Acy/Ic/3GtwNQp+Svd8hYOwY3"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608302141-80c04811.0_1608302305982_0.6416017261097087"},"_hasShrinkwrap":false},"2.33.5-next-1608303377-0201f9c0.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608303377-0201f9c0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608303377-0201f9c0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608303377-0201f9c0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3UfcVFJmmP7MhDGbo0hU5zNhxSFSnYzeSFTMeRZMkUP6bEmFCe6DSj3xTmUSWug6nPkN2JymLa736jDSfiSS8Q==","shasum":"615e4a1a0de0f783db99eebf87d0df27b1900fc0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608303377-0201f9c0.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3MOxCRA9TVsSAnZWagAABmkP/3WggCaibEHcbwXnDn/A\nvLXQ52twY9RJa/4u6JU2PDXW915nxtcvwteamiVpq8esB9EB+BEJaXLYMQpm\no0YwgecgIsuBAM8kftmaFbR+pVeVvGvYvX1aOENG/wRs4VzzgfuNA4mLqlCU\nNDgLPr47ANwvsEwNG0OOENXG922v4aYjWYJ9cFXSvnibQuJx5UFN+n3ryE3Z\nkvSVxuLd6gDiWAOin/oceDy0OSJQ4A4aBw2O4o9D2++iUt7FozxkJ3EPZBjA\n6xEsKr5yS5gPXO6MvNLpLafXqgZHeUtTcnzu5L5AnIVJ//vq8IPebsCkdUFC\nXKU9zK0IvAdm3JfqJ31li0vpV59OZkB/dV1jrS+I9uf05xQhAH9TqpfRrf4B\n04Tkau6ZhqiTsVWFoa3uLWdL408o9EaxnQyRVJ2zxntf3hB3dziOzsUhSRSc\nkDrI7kCCqmh7CCVQjnAvtzYz1ADFTSmq5ZQ/aRz1mCymXQnhrwsPBhojpeYB\nLtpeSTe8ykHbgIoZG9ul7VkpqnQxv5cqlhsT195yZc0Zv0A5Hb6+j6qzGRfk\nRovg8os79Gg2KRA9DqkJT84Bv85QIA8mcnb2W0GuJ58NHlALjXoxo7a76vUq\n7llbuG6Z4Hy6yHJ3pXASDwEmfs+uTu3MnqkplYIrdiA/GCIsEWmNYE73ztfO\nZu4y\r\n=Okp/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlvvZvzgb78gqSuAzT0EFFCDxfZlEZWjyQmZsHkvG8FwIhAJE6U5As9avHtKdlCP8N0YD56oZijqD88dmsDaw3un1v"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608303377-0201f9c0.0_1608303536812_0.7661043824916431"},"_hasShrinkwrap":false},"2.33.5-next-1608303515-812f4081.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608303515-812f4081.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608303515-812f4081.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608303515-812f4081.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cNH0KEz7T/9eHtbDVNaIHEiTRT45w+BBs0MGljKcqQvSjN5Pp0ndqjvwcP9rE+Op+Iazp4CltZ1EXFwAjS4Obw==","shasum":"573de6a9a8d0ca21f331ea03a396abbb5a412a9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608303515-812f4081.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3MQ2CRA9TVsSAnZWagAArJEQAIDyqMO+HOwUhAbVLQGr\ngRTiJX6KMgmsARemwRej3r63U5+6t/f8rBZvGASWCFvO3NJfkuolTsoYX+gu\n8s98f2iuc5dgrQXQVX4GXpBPi3lGJ9pVi34zjdUXLKGdCdUyfgnIZ1x/Ev1v\nvS+dSe1e99f/1BkEi9g9kqMZ7XIXcLdXLx31+D77hceBvZZHaPGTnb33zi5z\ngQs3uDsHHrEuNMvrvYnoBbbyssagyCSULwSf1FjjyESuPoA5jc+upX93ztWE\nhi4l5S9NYgCKbQn05P+oZjAjWDdodYOIVZJgIUhdM4ryPUy46dP5DVKHkR9i\nGS02DIhU+P7jSIPe1ITyvJCdQ6q6ognU4/fjlwnGpxTmy+6wS9LRg0o9UnRK\nuf7MOoAIID50fKXjsFxdbU+9ZF9Az91HH157qtk/P6q9dKrEgnwcUtwYos77\n1hRzJ3iB2dG8+j6jn8FsZyddYh3Igb5fEp3NLHpIOt1zBoJB3mSszHJ0dcKs\nJojTvVLUm1NxP8NNMlAMmMhU5ymFShv7sRpuDfx2YOboTzPgtsF1JArBjsva\nC9/clBO58LqlPlvvD/1Q9Cti5tMzEMOWD1S59KvaOQRFSwDVGavUwe0OgqHh\nxHqaeHIPNG2GLVcRreUUsoMV1d+lhQu7p6Sy6NiuprTP+6CLb8YA8SgTNxRE\nIWf8\r\n=7Wo6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpUzQDPsDFLtQkeRrKaUBX4N7agDyn/XMczwgdp95gUwIgAWOWpWvD3TiWg62UDk7rFQG6MVImoBeJJ302x135xg8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608303515-812f4081.0_1608303669979_0.3208273726668893"},"_hasShrinkwrap":false},"2.33.5-next-1608305824-f89e5e37.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608305824-f89e5e37.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608305824-f89e5e37.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608305824-f89e5e37.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9yYCEnd6tgX+zBIvhO9b3FkYoMvN9MK8VKRNNlCDJjsS41LLQuatJoF/RVF1GYFb+gcpCBMmkIQeoHR9rI8cIg==","shasum":"f0eb2e8a44121ed864f53f1d9d42f42c5bc73c88","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608305824-f89e5e37.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3M1HCRA9TVsSAnZWagAA2xoP/2Swc3gsqQFhRref6p46\nXE5GVjJDS4tVT68kzPP0Bg7JLvMwTrv/wo4y55P3MpUns3jJp0YW4oU/pzvE\nmOn4HHulT3coq4sexZ8532wlxpXPqTbFfyianzDRfePhaedAXVIgg1CZMMLN\nk3LftgIqXikTCPbATw+hoCUmOivFDfQZ2iH1EUjiDCYAqpX7l2vctIT64eew\n4Eig3XeacaVbJOfyVVHPimuiRqb3uUsrrsO3RvV0+n/GnQiSQj2ZfcxsTTH0\neGIa3ouP3s0gQeI72WuH2nBoARf2amGGMkg9K1VZmeJkXYWJktawfT6PIVmz\nzcU8E/wjQyXPf+2rV5NeXbM9tlGldJHyUFEczswhynpNCpCHym2v4UJNvtdo\n+2pUyHBiNGEBFz7KeXn5jPhM4hLPgtF7cIAmam67KB+9Gl7WWbXmCIKJtAGe\nVV+vG64DptdzHmDnhcMXNLNOuOOTli4ApMfQnpKpo4xZJip97JPH7zfGLp8e\np1FtpGHyq5HaB+qMx1YwValeov+/brHN6vKzbgxUp0JaOy+jk/KnyK0f0+wX\nADaLmLkJOx7+LJQG2jmxp+EomGQkiL1CbkKqxJSEp/VLfwxXjk7Rp+PU5aUp\n3erzvBSa0ycPqeUgAoxf3YfYcmmovStXdkqYYEIvY7WcC5otA8GLNgxI8IY5\nUOAv\r\n=h333\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGaiScv/OvOyfoa7ujB1LnDatLK2AG+N6BxjaUVP96XwIhAJgycIY+k4j+SbR4oFghIClK4CPK5sC6wlLESPeyXeRL"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608305824-f89e5e37.0_1608305990411_0.8039903653938343"},"_hasShrinkwrap":false},"2.33.5-next-1608309114-d5e5c6f2.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608309114-d5e5c6f2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608309114-d5e5c6f2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608309114-d5e5c6f2.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-G6knPXEg9d2cyk0ZJFJBCYIn8dH8vFd3V1X3Ixjnj4vxtZgyFUMB9vglNcuuJfdT01P2gFTPyR3J9Evt4ZVLaQ==","shasum":"6cec143557ed19b4d0a7f55db8acb4fe208dc99e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608309114-d5e5c6f2.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3NoMCRA9TVsSAnZWagAANewP/AhUe1nNvDE2M7MyONTB\nU67Ok1c1nokrRchhhurfY9G/2LTu8UztYwjFzEtZa/4K+ZIPFfxRam+w7iOs\nCKqrZIKTXj0mPrmDx4YM5BRvFBv3tbkLyfYjrX4UzDCtS5qH3HBM+z7KECMZ\nVUKar3jjlv8q1EUgTCGzx3qNCnKNoYoAYfa3S3GKG3Vbqfr9Bna5F9ih5eSG\n+9GKYWdIViyr0t4PNTAd+8zgsxDcGNzSfQN9/Ct4AI5ExNO9drgWygMaerT2\nRa2om0jMoEOjNZOHTalmCTvMy77Z4v2GeU4Go0yZyYiZHxylgGGz9ZMLVOTH\nQAK7XXWxyrVmFttb2OX0PUOgxwYMaWKAycKQvpNp0WigHjC81oMMB6H7DBxk\nW4McSl0Z6hQjog3TcF/pvtg3DMJhdoQ9r4j61a6RBWSv9jW/PEmRYRttbdy1\n6XIfo736l2JuGDZHJGDv2xOeIwpFtpNcG+kXsd97Mn9657gxDd8xEU4T5F8i\ntOFV4RafDYWozytSPl96avrUaAtLit8tcv5Vti26sj9EC537ukltfzTqjPLA\nGoMWUbBHsVcadFrFbqX2myCt2Gw1mJMqDWX+i6gT1H1VmU3xYjTPsihVOVwr\ndYOtZh2kQtEbUBTfD/KRQ1+hGPMY9JKHuJIntnWOIpymglAwlZgx0LknrmpV\n7C9X\r\n=1GuW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVLNY3ad3t3o+wbcZXB/UNnALfev3WaC70H51S8ZlpBAiAscA+PiyUYFORYZ4WZKdc1TwLXYQghXiYEBT1QBEPD2Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608309114-d5e5c6f2.0_1608309259795_0.17362545969472776"},"_hasShrinkwrap":false},"2.33.5-next-1608309537-d6372d54.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608309537-d6372d54.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608309537-d6372d54.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608309537-d6372d54.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YSIZLbBb7fkcFQUNyNjruNVlWBgEn1hPT/bUO5YzWHeEeJCHwHofSP2X88E3iC7y8Of8+6BXMUmcq3yrT2/M8A==","shasum":"554ea41e8a452b156254bfb50d8f5548b4b4cb89","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608309537-d6372d54.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3Nu1CRA9TVsSAnZWagAAv8IP+wZhHp6yZdBDBWlHnR1T\nlsG1XaftXlbPmi63xXQ0Yxkfqk2SHNbakC2+S0oX3LUmjEIwhIo9HSdoRpNE\n3nbGduprOp4zlwSfi01e6ixVduD7OHKJg3EwvOTgOYuaDqNuaXlWAGD4BkEt\nN6OJx0Q6b9GH69Ep+r/J3U6mrVv2MtAHrdOnlQLx4bzpr3VCDn17iE09SKHi\ni3mpDdaHh2a81tX7UNdKG/u//QFHE9piBvPqcJL22grhoQsbKKPUPcXRYVmG\nPc1eGxulUZSi9mowvDo+48uDJ3UxxNhtJd5V4PvDwNsMhabguXALyvLui+mt\nkf+DAPWFj3cYcMnx/cA+tkmgIdBWnKMyGyiWtGfnHQmq5iespsMVX5XbZT2O\nQfcZsPHlZ1OqhHWaSg7UWjHPk/jp18/HghRF4/6PZ+wxL7x0N4jZBaebzYL8\n6f+uek5XEVvvcXJIuINz/PMQe7T13z1pNx6fZiuIrJ9/wy4BDX+CDrufwMdq\nILMlPF2zNa/0LC2oD+JNnEnSLTBJiYOYADQRCzFxHSnKX83VZngvhENbjVoX\nU0hxXAI8nb3NSne5LoQ504qtpIU3zCv4ChHYHXY2klaI8Cw/obafeXNzGIxR\nU0p9P3yvWiojFlknoJZGAK6RxWOdEc8Vj34Oy58QiQ66F6nDqLyON4NDkEAh\nzeKt\r\n=4aTR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbkOa2pjfyD6rX7YdKNyVA6I1A0OsqapMubJOfR6e8cgIhAIXyWYL4OOwf+IOiHsa4DRG/HaLss0S0H3elVS8GMUMe"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608309537-d6372d54.0_1608309685041_0.33685858721102324"},"_hasShrinkwrap":false},"2.33.5-next-1608311618-bb1bc7ae.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608311618-bb1bc7ae.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608311618-bb1bc7ae.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608311618-bb1bc7ae.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XnlXb6G99fxy1/tPxdzEAPvQKzR45Prv/1zetLa4j2rx20wtjYZLyOiq2OnUbompFx7em+/hPMI2Jlo0z5Ie1w==","shasum":"5ec5da0170345986d7c9d3dbfd61b11a90f2783d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608311618-bb1bc7ae.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3OP0CRA9TVsSAnZWagAAGLYP/07dwE1HFvj9an7Rvo0A\nzsF49lu4MJwsESmVUoS7tAriygpAYeEY/zTmJK68dYum0JFiKnLPUQGaEzHw\neIS1mp4lSRo7zzeHoPkPMswz+ysGl6SkbxZVf4YUn5wlfASOTuzjGFt5AJMC\nlfIXouI77kvjBBp8I7WYP3tUnA3LT03wS2Jjb9aIhXv79vq+B3He9Uhqe6/W\nFTlmqZwgvg9PcgTm0yz+7aVxf7WcBpdM2dkDAfA8YdaJlOxzSGLCphQh2d7m\n8500vbPx0hnQZytw7tz7Xl4uchg+YT2m5rYEIqo/mMPkVTwDIuAPem7t35e5\nfFODxssvdFo8U/AzRoEtQgSYlsEwafzJi6wOlBeyyXyH0Q3CBHpR/KLkD6L3\n1udNaRKzox0lKSSRWv77++aBzCLV8av6HLKNzAfRX9O+KmvtV6R3tgWqXD8i\n/Wuln+sFlJmrOnpIHr9v9g9VPSxeyxhuzb98tOSvqObW1XBkg8Cec1XxOURF\nMGsytUXBKnyVGmzpidoBSjeTmt/5hrDbFEUzziPFACnHtBnZqf1IsQsiT149\n3bLQsfEkO2GwJNZTQxWUWv42NA8AV7oUrnfvduGqYAiYRRI8r/B5LFACky/p\nw8vw4Z/Vs8BFzq4mHSz5vfgsKrf+Jvwlrcbb7xKcoyIoX2RRs15vRfqzmKgT\nSd0c\r\n=Z/N6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYfNBMew6jWZpwMFn2EXJ/S6HQI0o0DtHsuRCb6ImlnQIhAKoXstYOCQWVl9PPO9hOrY+/EO0YWjZLqXAZraZm/sCn"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608311618-bb1bc7ae.0_1608311796114_0.39045259293990897"},"_hasShrinkwrap":false},"2.33.5-next-1608316295-e478ce95.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608316295-e478ce95.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608316295-e478ce95.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608316295-e478ce95.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HZCjg5YcyBo3k1kOLUJ6aIl9je7nAmo55CmC0DFOFlxV0Y0hi4+dxxHASHZCTYZp6n4L/CmSN1S5Tyvh9M7S0A==","shasum":"4c708ad7c437d53d28f7bb38d87c064078ee3310","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608316295-e478ce95.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3PYcCRA9TVsSAnZWagAAsuwP/jrMXaMrxjmfbdXctHmW\nx4ua2ghNyfezCii8mr1+1Wxn4VrZ5w8BZbZYPRx2Vk1Ihm8rDFVZkV4JqI1b\nHDbNUTtofHFz6Bago5miCP/+75r/3JI7Ch3NQCM+mRFhxRFtR5DPfKk1g2DG\nFvdcTjygOLQmsZgQLf16j2vqWjgb9bdnnSpaa9iU7Vl5bHw7u4DL2OF66ifw\nusIKV+g+JQC7TKhb5f/viZl5l8Scmq2qxvHIVooDETkOUxsqx13Qrn5qKubJ\npZ5H/WQtsr8+qGDpoB+GGCA57fIFoe8M1VQ5qfFFhWlPlt0fcHSCH9ynvCy9\nPq9EQDgW0wC5ZItAIrtDKr9AfHIbzsS3zEwRPOLM4ibJec/6/4OA6r3goCXa\nMoh1yFzO1WCjHjUqtcRow2oHrY3UMvOF1uiZJfg1PSAnbncBgLzZ73PKLycK\nsUVks6Ij6jceiU8l7HXOdlwQxZi3hpLxT7HV+xLN/hA3LGn7W7HXK5gScRcw\nMZYw4hct0PdRiq6QuvGwoiPpZgN8KP9Dc6kDuUpF5zR4qCPakqmKA3ifPqg1\nX1uGF2M8FMaVDS4C7NCO5QIqly78UZNwW/xcB8McE8y0xGz0ln5ZRYJXfxl+\nBx/XU/y0HPRLC3JEhnumzzUhvLBkbB7F82xlnmLaFf96j1no/nbuQ/RYawsd\nKVgH\r\n=IDsh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHFaSHJd680AXJB1dKqR/kgd7Qx3cncQH3aXs/OsPfT0AiA42CSD2/bdcGZHcKrNHGo7NIOk7ioP4a/alSFReOSeMA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608316295-e478ce95.0_1608316443698_0.7874098676006538"},"_hasShrinkwrap":false},"2.33.5-next-1608319923-e478ce95.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608319923-e478ce95.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608319923-e478ce95.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608319923-e478ce95.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jQcnPakouyR0UTGj7muB00d0vDTgq8pmR/u+0IU1HZUKfdDm571tXayNIwIMxqizTtXIdOJRyyDYf5kTl/oG2g==","shasum":"d4909b82e83187e174b374eb71a2c9809dbc7ce8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608319923-e478ce95.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3QRSCRA9TVsSAnZWagAArbYP/1y26L6/0SMzoBmPZfe0\nkYpviU1Hc92mrwhp85iYb8sqrZDzGhwu20tmHjWqRsXMgNzn1EZUyIX1Vl3l\nNWOZhreu0vSwa9j5Ws5Uy7JfQ0agV6STA5CUCN1maENQL7/4wrqLzwLtqSpO\nNyc4mXZjEdZvD0MA/zN2r1cnPSr0uU7cwicy6TiebUUJu4YShWtSwkf/SMbo\nd/trYExeJP6CciDBxe7KyKO1XtIHX+DWQtJjJCkq/lqaTOUZh41okZ9mCj6J\n/YlRU4fckXs8lMBsm2lgmxm34nSdtRxrMbBh3d8sIjzJq+OxrhpDgkClL4Rk\n0UXzVcL3vS3WwxCPl4IklyT30Bj6KHCKIYXW0mKjnJ/CAexDDrIGVEXvuOQY\nDaojMyvNzCZraTFipci8bRoTds4R/lW+v18nhKy0iEE0ybtgd249g13QKpa7\n3z/45+wnWHmKrKh3sm/dmko/cjWHEzSnMaqNURubc3rBXX+7pj9lKLsi8qKc\nKs6jjGfNrejRqvBDScDsGBNPvScmqkVaQ3szZEhZGapepmecde0bmevHIjmZ\nmafI9YlPw4NZcvQxe+PyLNl6cLAtG3hQLGM0doqspIEkg8q7t/Wz2F+hm/Um\nKSyO6ukxAVY2sJZFLOo6GMuNSiMZMjuBxFUyTi569YPjitVNeWTc9Osu7ZRh\nme9+\r\n=Onoo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGDABhzWJgCndivuvm3Pi2GzaZSBuGsTChC+aEHZurkAAiAlFl36lNMtpaUaCHTGofmHv0yGJjXEWn8JKX9qlaNXmQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608319923-e478ce95.0_1608320082194_0.8208748037800122"},"_hasShrinkwrap":false},"2.33.5-next-1608320425-0431d01c.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608320425-0431d01c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608320425-0431d01c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608320425-0431d01c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-773fR5BVeVSsACMncXKGlQ/SuDfi05yHgJh2ZBMGP0YJMMWzCxw2DTFk+MlRO+TKj36vWJc3o6ne9SfvUrmvOA==","shasum":"a427605a3a1cde922f2e632e74f6e6a68aba0c2a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608320425-0431d01c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3QZOCRA9TVsSAnZWagAAeE0P/2VIxy4A9GM2pmKEJJ+p\ngpOeXEkIXc82/GkahmlGio68DcQvyFK9u7uOHdhme4UXIwAmOJx64m4ttuQD\n5pug2wl1GQwHwokL46gBUXNv2BW9pSoQ857QZjC+Tm79itFUxZzzh4qFPLK5\nbxLhzjXbVSehIFOs3LtTs8LwFu70mXZqFA2/AD8gm6VAOkwMXljZa+xBNSJp\nN/ukpfo8JiAfXKQX2rcgKkJhRm/hiIgoilYHj52AeJ8VTfqJRRtKvkrSaCxR\nuO4SEtu+ZVoba56l9IzHX9WMhlfuc49kJUYdLkzKmhktzPF9BWcLyrtV6ndG\nfM1oXKc7tNRBsPqwnoYIEVuI0hYHzwG8y1ap1Zi7q9hpEeJYSsiWIICVkToL\nRDq3OfxbIibnjm60FbrSA/ab/NF3+PFbuEz6EaCQSeHl9v70hgm69bQPb3o3\nnyeAkrgg1lsrdTf8w180qjEaktVsJlT5CvbvejiuBbQS/V+IdeUZi9YT+VL2\nONoNQLFGZz93CE+C29hfpsTmPLH0b9wqKtZRjP8S4ia1GTCPxUYTRsnhczh0\nVsP1KMS68l/3g/TmDg1WMx5DFk1OxJViFduYpH/UyWpmG6yjsTvcjb5p4EmH\nFnw17ZF+mweA1yEf+pzf/Byg6dMgMPvgVp6oH8n++gLTsKIE997/HvtWZv43\nLckG\r\n=Hf2H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENTjQYSIQ40srJzEEMdT/fPVk3tSa1onI1qKtkyQRDOAiA/2bumNWbmo3ke3F/Fng+S3DtnAgfJyVKVSBTcNS0NRg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608320425-0431d01c.0_1608320589541_0.20803841510205556"},"_hasShrinkwrap":false},"2.33.5-next-1608323882-4c66a640.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608323882-4c66a640.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608323882-4c66a640.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608323882-4c66a640.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fi/IW4EP8o+HcmhjA8r+e05kuENyGLivrqZ5VIqUPjfeSJn1Pm/4q4KSp4Ws8d5IGCtJR52Qc8bYYWHfjk8MEw==","shasum":"39ede75051957a483613841258568dfdef5d6a28","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608323882-4c66a640.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3RPVCRA9TVsSAnZWagAAqBYP/28Ep1Bd7rq+6/V2YKlu\nMXtF246iQUlth5/n83raXqCw6VzivJFwNy71r4ihbVwblW54xv/f7TZvoYje\nDvkj7j+JN2a/VQ3Nss3PAsTjUZoKDxDD8ukmfsDjiD0k8h0egkx87OEBOUAP\nqh0YbNP+lZfjn4VZAlEwYv7DkYADKUOUfvnQstE7EPde5W7dHx9z2xAGyeyn\nbT4cSM+tLHQSYR4KmJOCQymUawQ6HHxBcd7dK27E8cd14aCMELRwBgi5jFVi\neB3r9FlYRU8Xixc3MxUVTEz46850aa8ts+W53y5xEX+p0gv71w++RCdBonOj\nHVHSWFjFViboxod52CUHmLsM9iS9A0OwyE3WsLJ4e3+bJ9pybkpRBh9y3wZ8\nw1FwXNgJIijExE4umwpRo3e08qJsXmj7uKg/UBVIr8arMnWwx/x0HoGvd5Bi\nClQWwVORl5Tt/qVOahyQMyvg+MVJjYicTd03NFCwPgDG06zXub2oqCRR0tNT\nLwKAR0ogSVyrme/4FlYn7eIzBpTca9skKFtFM/A43lWuJuQnMWkr14JMK7nS\n9ZIMW+48KOxx3A1DVy0euFGJKnOyjIukuPhhhytYFRqv9CgAIRpKdvMHUkqD\nADzc9G1EBbkIpO2YWSMU7Iq7tYWe55vnqbjmtKozdAYuVqYh7YS9tFwPIpZS\nYiiO\r\n=IMG2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiya8vnAaD+aFalVaMSagz/RS3KQmW5wwF2FnsG3E8PAIhAOifPC3orNTwnjcJ+oKcOJplgvZ5mLh2lKKorQHbFkeu"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608323882-4c66a640.0_1608324053232_0.06783526163333686"},"_hasShrinkwrap":false},"2.33.5-next-1608324861-3156623d.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608324861-3156623d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608324861-3156623d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608324861-3156623d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-evJesQ/vNANsUmNhQbrPbEo/vygZvnLISHP4y3B0e41+PyiKIp7vFszbXLP7k8K+UCZPRgdIl7CW0AywHtsvvw==","shasum":"f3ea950ee18c1d20fa0e4b5b466c95a2caeaceb8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608324861-3156623d.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3ReJCRA9TVsSAnZWagAAtiUP/jBCScoNGWdjK5ygkFO5\ngxmehqGBhTHgMn8lrmga35iy8QAR7hwpQEnjyO5on/1psL2O+Qi3spEJk2Jo\n9tzeYbnKrNBS3QdkXneAemD1Q0A+HvBlY7/KXk4A/y47zFiIc5Zplnk/vKZr\nzBHiYhxK+TCryOp3PqAgzDa6dgfpj5Go2RcqUB611co/wTEbDcLBt7zS11K3\nmlASrge9j2wfFsnva1lNhjkaWEwF1IzFVI0Mv2iSlDRQ0Tb9f03bq8FlGV51\nT2LPxXmsYlhRWP83RC4d9fZ9IyP27M1+vHkNFZb1AIy1jEmq0y61d/12OL1g\nPpdszTdr1PV3tzA9lXiT6+Qd2ckrnIKTOg5YQs2tdK+Cywir9sxgl3vyRpup\nPTvgfrbfUh9dZ264fh5Ed8RG1Xh5K3NPH74eWeaPEg2v35z+3W1yiPyDvetD\nrKVL69HWNrWAHWTJ6Zz7qMog9merh3CY7MPyk+VXa+PX4fBRE4dM+a8R+4mA\nimyLechzBuSUkVv67dpPoDxmigAitkF00wEXW+MwPCJwxD7qJuR/8HVIJ/D4\n9d2G3htvbmoyzm585BsUO5grqEFwLuyJAGgXgT0G0KcVZgRjUb8nWWXMJmuT\nmOAJJtIQlvffa7IHc1k+haLNdHp9iIFSemj/fWS/MVUQeV9OuqcSQa2AmF9a\nPLtg\r\n=1HCJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDWnAMzAVEzDXN+NOzC/vyO7i+stEQNP6hGBqzB6OEJBAiEA4LEN2RaUKvrglXZS2SrLdPF1zRMjSU1lnd7odWQMiHo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608324861-3156623d.0_1608325001258_0.07003899652802259"},"_hasShrinkwrap":false},"2.33.5-next-1608327686-05e2ed67.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608327686-05e2ed67.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608327686-05e2ed67.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608327686-05e2ed67.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DHyDvA6K5RfrOGc5faXcbjjeUCYo6m/Pe5hRIJutcYwIr87STnqXC+FaS64ufLTs9UwOL7RFwj+n1MCas8bFzg==","shasum":"f6a1e6ef738c05c96fecaf7bbe5b3c9f51e6ee4b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608327686-05e2ed67.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3SK2CRA9TVsSAnZWagAAbqsQAJyy13fOCRhm8fBIG/sS\ndnKKyYVci+NybRCEbqW13f6sWVwwwvHLCNKOddMHJlqiZC91IT0Bdbxespxu\nBzV//TmGfmvUSAphQxUvFfWjr7nrrhlqggOKLEoGNBJpxOz7FkyhEzD5riCY\nfn+C12jNwKUKPh209m1t9doDRVvvT6I3oMsh4UyyM80jVi26Z8RjmR+vg34O\nWwobfyL8eChuSSnqi6cVIt1ohuNgBvrKjRWc9ldQztx4cxvEo2c9MHQqTu6A\nNn6BcSvqYyh2NcaQg7zM3y0MHVR2Oygk0hQvPhjU+N4csvo9pkRYeWoAuNRZ\nQcx0r2YhsHoFwl28nFkisE27wU9ryYt5b6/4ApwVKDfP2CrCHAqc7m2UlwZG\nzLa1juDauehmbQsGLHG/sJ09ytio22ihk5WiQx1hXcLySJtqaVGU5wEbtvvw\ng3Xl++vPd29NMjIfNIDHqi9GFzntpE7WBD0/FPE0YkOrJ7PKDxV/Dn8loKlf\nTzUX6ANh62NVM2Us2pRUaqXdhCrdNJrsNNqiWDV+e9rV6CQxqc8ac5JMdGOD\n0+JOGh+xHoCeJsN4YW9kWw0DptLbHDNaFZyeCVOD/BA6FWtVA0NHPMr9w4Vf\nuhMQNwclKgfqURHapPhsgdHrxN712I2w+CvXy/dwb8bOwQVaZr07wSwSUm4c\ncQOJ\r\n=rBwU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+ZyMhmnL89/mLsfePIC/8wJixludHOjr6oOMthRJtpAiAl8q1Fbu03sW3I8SDqxn/loYpusMIR913yprAHOY+76A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608327686-05e2ed67.0_1608327861531_0.09162236353761433"},"_hasShrinkwrap":false},"2.33.5-next-1608521678-583ce108.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608521678-583ce108.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608521678-583ce108.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608521678-583ce108.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aPSgdByxQGuKKLc82tc95ZDAmBBn6ib8zJzm6w0F67JTI10N7zLV5o37TP0t3T3Hf5sXIpPXbVm6h3jxPvB97Q==","shasum":"4dd7777694f603f6ef3786d554ca0d7367a19b29","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608521678-583ce108.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4Bh3CRA9TVsSAnZWagAAj0YP+gOCvUo9OU9aU/xpsjkc\nKWgw6wOKQyLxw6MBBhi2jepB7geMoSy2P8ZbjxvtdQnpqGiJLvs3dCcWL06O\nSTA5ALGsB1ZzwRcxyWX6OFiLKA4vG63mcaPCV6L+t4AI1bjZy/hn1J+RvFer\np2f6I0zAAIO3BxaVnXKB0gccsmoa3hhFRnknrJKEmVPkJqlq8pOvq3mTzVJI\n6SMLzsskXODoRrEVaM9exi4PkPpK5bdnJ8Qg/Z+y0JfbW08cmq+RzKG6I50/\ngVht1HxApO6R7uWDm8Ir03sJzduDyhEcrNs939c1wMIXD9oH4bRkH/E9jkll\nV6Twoav7rdm2odwwj4VwVshTHO9KSaG9+qs44akUR+fibZU6o1Kea4YRBbwP\nnsYmUg40cEf8RWeSzd86kUR0xbkFizvzWkXfBKg6T5VmwNklc6apjgyQDvXn\n2wjRH7Dvd0ZNcK36RoS+CcGowlHtg2mtzLap3DMXZaFKMgbg3je5w5rvCQbS\nFxOzd9pWj0HeCd4Z6iWXNKQ3gn/CjK/Gk6cF0Ye09K5oCG98qGNCqReEpq4s\n82cP4AfwZWyl75gEOS3JGpDXwW1lyryCCjRzMzJNxRmedWTIRYG5cdQ6vZ9A\n7LOZQSNiVtkGEM50WfeQhmMr7yNboDrp3dD9cdvyqdWOcxtqgoKkzntcFHwd\no3Wu\r\n=SRkB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAq08BQA8zUiTB0xD99GPOC+qgBCLpLy505rQmbBD8WaAiEA9tO8C/hWdhscB66eKOofWNJk2kC4Tqei93/L1jEVdWs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608521678-583ce108.0_1608521847233_0.062472925634238674"},"_hasShrinkwrap":false},"2.33.5-next-1608545000-e716a252.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608545000-e716a252.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608545000-e716a252.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608545000-e716a252.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fncBC2/ctGoHum5RaTK6jSNcP6xam2Yac77bZAlFKONtdvXFef1ao7NGpCwY/dQdkdtirvMjMXyEGpN4MnCyYQ==","shasum":"381b1e8956b3c5517385dc0bbb01433b07cea51c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608545000-e716a252.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4HOLCRA9TVsSAnZWagAAuKwQAKLY99CtpVAtcQYd8oGX\nool0bWmlD/Go219sUXAQu5ZPYWPGGKZDcx2XEdPRaPKCcZdD/FZrWTyyUGwr\neQ7rwocsZOjXdJbY9EdeuscFtdw7jG0U8zGQUXHucacavjqn3Y8SZm6aRJXQ\n+lwgmS15AoLo6/zph8Fk30XG6dUY1b1jiFDxoo1KAJOfBLjWWJDkNnI/fCV1\nGXRcJFSM2QaILAogtPuGDXNWkap1LE5cMJl1J8avGmwwxH2FQ1HT8SE5kgJk\nrEKvhvh/UOYO2BmK81caCjFnndQCJ3kW/THA3td8A23R0+i1B3lh0xErTIqP\nu2exKYun2gmf+3J8IaIzopI+ntNhzRywSG7W8vwV2DISg1hTQeIHVB/kg4RH\n/m+lCBxRuFhOhDtP/LaHzynVuABMCsEJDC+uCHBMXM/OJnbImE2TeRpabJO3\njsGPodRzaGTwEphcaVr2aRx7a6HXXxdNfnmvmIYnKum4cyybN3mPtr/tendO\niCobIpPx+xMLUOnhyDPetpuhmmoy1iGt3wu2NYPoX7l8H0q2LPfrQ6nzFwpH\noibzR7oHp2mAfGsiM6Mfao9HniPqDlmQYnXhYTojaAOtIbMo/EydfdQXpj9w\nC7he3lYaCNPdZj+zreGpmTmGeMJiAgvF+VjuE5bVA8QnOARw2e7Gcd1waijg\nFMjp\r\n=Xu5y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAvliFCnU4VuMLUOv0QPAZnJKfNaGCpyoE+lJ1iw5nsaAiEAxaNS9LRH93fjQUtw9LDBTjQv7BMRiJBgs5/DG7RtfoU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608545000-e716a252.0_1608545162552_0.7329526706432519"},"_hasShrinkwrap":false},"2.33.5-next-1608549179-a4a9fc0a.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608549179-a4a9fc0a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608549179-a4a9fc0a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608549179-a4a9fc0a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zU5sXjqlrD7Ns0GeSNrlGlNQiFoHTpzYdVVgqtzSBSF7G1FBBBSuZRFDoNXbw39fpRirTo41ByMxnwRNuuegYA==","shasum":"ba70e176a3185d9a62837282156b525e46e249d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608549179-a4a9fc0a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4IPMCRA9TVsSAnZWagAAyD0P+wdZHqEbyBdyJtzBobUz\nk0kpkJYC+huNEQ4Ii/Agtq9wIgPBQPGZr67LWeon7N2tHjXCxxZGyw97czzK\neoExLkHHjDKyS1ZSc9q5W0za/R3ALJHUWkaS4g5durBSm2zpkZ8QdsGHSMTq\nJlUd4PUgZpnLoOXrsvu5Gdwa+OTUaitk8XeXZ2rjw7HvFbeFvANuqAWkreFU\n+9nMXGuzC4PZSOtn/CzmxgEwhAy1TaE/PSc3nLxHR2PSIBCEE8zaeAvZEjWs\n1/hUB8z9s2nWIE/6KyB1s+mwrxzHEN+aVoEg4tHc14eKiwiDGu0xBReoNoOT\ng69/NP+3Hp4pZJz+vKxYNjVPkgIrfJdN1W6V5k2BoBLD7L/oxo2eyYG0FNc2\nbkWP8+dvFSZxBhr4+griRljOVN4gDr6nWXh4DjrpAiwRuDJct+ZqSAbjQjKH\nqB/+twv76F2htMMPPuyeo6NpIZ76NzNX1sj1JImqmA6UuMvy6k7yIwIMprYY\nWjzzeb5bMoXM9I9OqokNTWHaJmnWjgSTEpFYr9u1MpJ+xIhePLwFZr2IKjZE\n93fuZ2mIeeSuzoZ89SYb6zRFQP3Kr2L1btSN4zQz2p9eZdEYY97gt4rH6SuZ\nopah8j8u0dT7pB3cLBTA8wrVm5rDwuIW7FRlmOovlspr8C2wNeweNFSKBsdh\nRTA/\r\n=LP7D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAa4gZZRJXURKUm81dgXhXQ4i2QNqpHMS1+hJ4QeHbbnAiEApLKNG0t3kWEwDhnPz8n4qXXU6EAMBhRovCybZKuDNBc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608549179-a4a9fc0a.0_1608549324046_0.8060558117228163"},"_hasShrinkwrap":false},"2.33.5-next-1608551757-488574eb.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608551757-488574eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608551757-488574eb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608551757-488574eb.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M16XhFhyAZ/Hm55Lfb/yWtpaPqlV2+YSdF4z7ojViZoOHIEymnZ3ufHleKbfGWxPwxL7gkx1yyCC0mLLmbjktg==","shasum":"aac28420854b1b253e985262ec663d0364ba3615","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608551757-488574eb.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4I4ECRA9TVsSAnZWagAANy8P/2FXtMBRr0KRcrfGPXAp\nANuZHpAkR9TX639GlQ/hKudjK6iw2xfLXRl2igprj6oJ/F6oPaHu3ZtJdsEI\nRiW9Trjw6bUsujB06Qjd7ZvzcwE3KvyirgRMU9e3UCwoTo/lYJt9yGDIN/J8\n0vD0oozj6w/HS74VsQSOyyD4Q08fedZNy2E/AvaqXlaltMtdGL6Wt3BVzi4D\nMlo97WS4QIAOXJUage+6q+knAUYRGulSHL6PRcz3v4zACuOhKK6Khf2G1Cdn\nafHIcJeA+vwUUISmz3Ee4omUaAjsYBw7Ubep0ml2NQW0bzIj7aiBTv39GQs9\naJYdZSfTbSBPjtpJxQAiW57rpH8AQXzMlwcFbjo4D+VTwpz4nYr0NFiyrXcI\n0nxPpJ72KY5joOFJ2LcTOXrPU7P0UuCXSAJf2pDtv6Cr2lZD/eQDbDbmnbgL\naoU9byan5EZM6yuhYQX7NPTdOp/as38pc2wcXHMeRKkqTPLs34JSIUde50dj\n3KFMOuH8mRQIEMshSI3E9RYnL3i17h053cz+d5EI+rvl/GeqrWUSL/qfmlI1\nFLEmDs817+aCfhVA1WD2INfQV5eQpejuxMvmmiWuqbVcyNkTmSlPLBPkPN9B\nTm79RhUEjPjfNKIMSe06pvMcmVvX1J/rADxI4r9BO9BwgHeGze/yg82kw1O3\nCLf7\r\n=6iTq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFVFxEPU9jT/WuECuSnzaIuVRoqcjbuOIiyabdxnlf2ZAiEA/ontMA4hpb+ZpiT3bDuf1qjoO19y9m6sXXylhboebIo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608551757-488574eb.0_1608551939558_0.5824269742306438"},"_hasShrinkwrap":false},"2.33.5-next-1608553542-f0652012.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608553542-f0652012.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608553542-f0652012.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608553542-f0652012.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wyKwAP/EuyNJl3bDceZJGKzvtcj44g28ZfKkVf3d2XzRwrTs+uVee3ATjCa2JinTBIoMrwwM/Lj4ECA4HSYk+w==","shasum":"badd4bae599864c7fc627649dc4bee684bac2698","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608553542-f0652012.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4JTfCRA9TVsSAnZWagAAhzoP/30l1MetQTVAfUO9yD9e\nOqlNM8XfvMjb+RMJRmE8z2aTzrun83H/qtdTlgJUOJIeRTVoGHEW8nm+1OpA\nnHdJdVfSuUIYG88y6dbNFNjofuDizkCBPNRyXYUs805X8kwVSgUX0Og4yf8W\nAjug1IQ4Td1PCKTkXtJds1ly1LlkHvU5KFK3Lw+XCzIWMjy3QrfeJArjbHhU\n5ChnGSD+8qdOl3qy46hmWxKZ7EupZ5Mo+6XUr74EkhcxDtN0lGk7tVR2Oeaw\nWwTb8HNZRggPmE8eR7IaPIE9fZGJcm3Yk4qFX44fcOUcR3gbL4GXeA7ZMhzh\n5UIUTaGbMQKteAzuh4TllPhpu2Jrps/RzPvNzS0cZUQ6rRGdrAc3j7CnESh7\nW0+ajBerOOfZTTsx1FjbDnCLuTLwdf5mJZ1UhdN6ryOCMS+SHphTrfeZEJ1q\nZheSRezyK6iVUXpWABo/ckQS+kYSQ7eCsj7TdGB3bFi9YZxOFg4kGYWCpaN2\nqSOzAmgUo5CVPFjEr41HWWcNM2gFa6I5a7Ly7HR4pd3VbYF1UfwtBDDgVWN9\nSS0/3NQbXmNnzKtOKVImI/dDIJsk/cexhKUDstyZFUdww98cfSmRKHOw70me\n9pxMoJkVFJGHzRSqo1uBjEjJeP4Y6v60Uedcs+Kt5eoF1OHRMHI+bN6ks33q\nRqpF\r\n=04Y/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0e1knZ7NGvORXq0SMbv3WNiMPAqDZhNdVmfvQOuxkOAIhAIUQC6P6TsHb/nAFGieG72ASCN4vhM4nAhsllOREIFmz"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608553542-f0652012.0_1608553695449_0.6111384474864132"},"_hasShrinkwrap":false},"2.33.5-next-1608554053-c16a8c82.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608554053-c16a8c82.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608554053-c16a8c82.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608554053-c16a8c82.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-igHuwF4VFAHP5AzqqnbpFTdXL1x3djhqBJKvh4644t66DgMJBX3c3zsC/7GdRv+E05SujiNPyytjoENpu6nRNA==","shasum":"80dff3be972f4af83d633bbc91c0f49bb626e2f1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608554053-c16a8c82.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4JbSCRA9TVsSAnZWagAA+78QAJNTtX2fqB/e7n3eLDFH\nsRsdzlXorChjF4jQfR5hdYZLojJ/+taO/jDhSeYbgAUZWgQ2mL5Etnjqlp8O\nZC5MJvBQyuhuu5ejiYBHcPqneQhUZb6d616HnNsF0I0akQbMtFOJG6l6v+/S\nmQVT0FD9QsGNdR/NaTd+kV4DPUDcCn7tug+5DaDLvmyxkM4BfrNDlKq+R/gi\nXKloxc3S11/bPscJV6o4h1ZEHyK4plmO5bOtfU1ZcMOalCfGEjHHoMAlmKY2\npj9AzrsK+SOsjzPOUqCE4C5TULwzKgHU/316pTY5F9RMlA0ic7SgjxwMBggz\nH9aSHF58F3UpKX2WLvCUXghcdT5iMqK642vErtwg/bXH+oXiwdAgDmypChsL\n33+y8gnpsCBHWH4wAMDdbTtNh5hvvVClHyhZqSfU6Ie58TDYMJ3rxJchVUsv\nypUoBcvzwcGK+rhF/nYWnlC9ZYLkbra36Agqkq9Oc/ilMKl4UQVMMCn5O1GR\nWRMCJ+29gD4r747pxTn/iRzmmzUoRhN7lTT/gQIBRDX/n2gZ0XKpqbiM4vjQ\nL6A8pfHWGmko2gB87YxSMD/GJw9iLoIezTWGYSqi3AzdOcK9nZsBbgwJaf/n\n6v7QK7MR631Y1tVedPkdPDhZMqXLNfFbH4YXtnhevZkFK49eUb8mshe4Aa6b\nSjlc\r\n=P5rD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXxnlvVbdIExm60/TuQ8TOLc4kz/dphHGZeXXIHycbOAiEAypw8w8TaGKLxHGJa9LOKO30TkjO0M6phdqXiNHIoNgQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608554053-c16a8c82.0_1608554193751_0.4453738984832003"},"_hasShrinkwrap":false},"2.33.5-next-1608556530-1e98b508.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608556530-1e98b508.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608556530-1e98b508.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608556530-1e98b508.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-K66WyUkll+UbdKPeFxmQk1u8TrV8+xq+wzcZglfH8eZxqGYm4BJwWTu/dRPfr5FXtnIOIsSUUArWU73bg1olWQ==","shasum":"5d1a189e5edebd712be0c96c05ead86b1105db6f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608556530-1e98b508.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4KCBCRA9TVsSAnZWagAAtnkP+wSPDEt2GHVU/UpfjeGq\n/+C9kVL0S+i8q+F/7ujSjKqJLIpH3lUpDFo6n/ZeTBa3lPmQV09z1QXJXsx+\n/jueHP6+78BAGfqSHETweND75ZwoYPcBu63F8yOZe3wPUbzCNZR+u5NOLOaH\n2gjUzYincNaFafe9WTNnC3Se78koUV4c5piknk6n9o8N+8YTybEdwkuaYIOG\nFxLva8p/bKi8V0knhRMUDuNMqdEUvcMhXbqhtQeERetFOzO3HEONCryQ3n/d\nn7uNCHx0pQlYmsOOT+Ez7VgAgC+QGOl9hSVeo3AJaRxnXuoJIcJnDUMbR5VP\nc4Aj0BvXRTPutTiwQ9gbMNVOo7HcpvwlMjKO/qdq1xLCaw70VA2+kRTnO7oj\nTPD05eUm1uBhHCXSQJYNIPAd5JgGBdH2ikSdW2py3iYljQl7BR+bsRqy181k\nMVOxgdInQ8bb+3CR+AWalzXwt9NduNlm6d6UGJq9LE44MKe3BWj9F1ilV35z\nVq1rbs8ypztOHgJsWU6hDuG+8goE6BrIySRxYqREaaoqboywfGmdoRExzyOc\n+99E5eYO/zbk1EXkvhlxu/GMGbNps8qHdx+xloQT6nARUNGQ45bI7ARBGrfT\nRdEtdFT0xbIbO0J0Rk5ZAtrn4oI1a5mORHfVVo4nJmpjS1fDw3IQeUNskLpa\nBBvU\r\n=MkYa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuGHy4xmK5J7g7FraCtYfPhWYwP92Vf4agV9FthJGpOwIhAIQRSftHTBuA3mIPqS1KBFUWFtv7E1Gdgv+xmi4PUiJu"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608556530-1e98b508.0_1608556673067_0.6407896660310071"},"_hasShrinkwrap":false},"2.33.5-next-1608556692-5426d52e.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608556692-5426d52e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608556692-5426d52e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608556692-5426d52e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-63tUuRe/z/8mkX7tgTj2O0Y+uHO5AYUAl1Y2FI/8qSLnwJW+2sxNSXjDKvJVnAOKv451GWlsGg0M5XQIkYA3GA==","shasum":"3f6ba031dc37beabdf13b6d225f49d16153dd1e9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608556692-5426d52e.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4KEoCRA9TVsSAnZWagAAKTEP/0jh34Pq8psFaeoSpy8p\n2Kfnm3uE/LoRH3GbZ/zFindWk7l+++WEoOB2eJ7mO6W/KkHm63DCC76KUN2n\nST7xOAjR4Q6SLvqr3Nrdg6Ex5SHh0EVRcBwHcUFWXwQ0zi2BzskWbD6Y9ib5\nZ6ZtmcNJ/g90fwrsWdO9SpMkz8FOs8U2SVDCKnSKcVcLcLiyrM2At+ZeNYp3\nTAerxFhi7azKOy23adQdPPEkAomdUI6MR0QwUeM1DS6LQer8jUDJ1A7gtdmC\nAy2Rx5iOxxvTplouWp/EwVDSigEP6rus6WDvBiiHAUjIHSWI3t/dRrakxtXY\nRdnAzNh6yGFK/bGlMSnGwz/1HhlBkY2IMRLLWnsQJcxPxY2vOJl9D3dXHr/9\nVakNiEes6YmuRYExZFtqSFIqcr8j72Nv8Myvj7KaqQM6742pPK/SdGLx7Mbp\n0DMbmmw2/d37c59UeGOb76dMc6ABP22jPF5DaV79RN9dq0SMptnMt/KayaVb\n+06MnOBRM8whJPyiznhidd8v8roF8nHdIQ64qeskmQGp2+tEJoPwZHxtXtr0\nPAfnv7LoaNzJV9GaM/1FfPFC+exKfn/Tv4r12qsX68w9Pi9fKLza22jnql0x\nPCQ0jU9L/OMzmd7iLdiW/G+orOrhSrNZgRAk8cqMq37+ycxTOrVM62KkbTr5\nwPNf\r\n=X9jg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFmAn82QdNA1/ncyPsnbaB/UsuHJcnSpziWHgMCWbwMJAiADQ9wmkzeMu2Wti/d6foorJ5X6NL2BbPjF6MDpPblRrw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608556692-5426d52e.0_1608556840324_0.5012104775472674"},"_hasShrinkwrap":false},"2.33.5-next-1608556727-0ed5e217.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608556727-0ed5e217.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608556727-0ed5e217.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608556727-0ed5e217.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-btW0y7bB5aRhhCDnv+Rcj6jles+0rPww6c6TWnAV6M1wq5+99Y1/3HXJPkCKoILdrLckXAwZEBBQsPPkHSGw0A==","shasum":"ad6c064be9aa22fa1b0ccc29b98c361b80d0377c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608556727-0ed5e217.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4KFdCRA9TVsSAnZWagAAecgP/R0iq1X/U/4xKVkHwEBq\nRhHn3Pv/uLleag2rvxGDDCnf4TaP6hhBL40wYDymOGVIZZFC8oXr+OztHBaM\nFh6BXKF4PtCf/Db9B5Kd5mD70gdIeOY55F1J12LX2+rX0LlJWiI0ceiKcwPD\nGqBiuBAz0c32QVqfS5087G8Mi524+1ICHCBJtJVOfPteDxjMTq7KGV8Vk/aY\nh9mWe7u8YMZoayNj/R9D9ijETk7XfV71b/CcCsjRkXGBlFWyq5pBdTm4sCcC\nNtjnVIPwzovV7hrRrmZRjG6wpjgYgAvJYumyiRKE1JSnO1EkTv19S3Jqa3/+\nEofUgWB79w3atnG9Rj9YPk6tuPlXsrz2lzi9zUR2qJ8yKlLmJqLWSXer8B5v\nvQXVpChARtgMwEAFLxYikV7QasTxlp+LkTKO5W/1gZepYjN1+v9HQOcgV5eQ\nrcR8uS2bv3SMO5dHitzIgdGAt7wsn1T4+nHUNmFXLTpNUiKek/MWFQ+jJ3YY\nxWw1x6ARm0kStyYBOP7CsWh/0dzXVBuAo93TJK+tkpe6ECwUZohnwtzbUm3B\njF870Y5VLNio13EkoCmtxGWMHIOYupEZcFMqDPhVSTzYLqVQ0BoC6fQLF/5p\ntREgUTy6x7PzMXdWMsn2jgJEgYJ7O0lJpqYkhM1OzS7f6Bi9He7CCs7xassb\nIvsC\r\n=8M7X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYmFBjr8EJSevi+Zv+Gu+Oc91CARn1f8y4FxPACpY26gIgcuNvGi8iQg4nA8bj/GVIuRa7de8qik05UpvS1hDR7Jc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608556727-0ed5e217.0_1608556893392_0.5672876603047445"},"_hasShrinkwrap":false},"2.33.5-next-1608556768-3c5ab2c2.0":{"name":"@xdn/prefetch","version":"2.33.5-next-1608556768-3c5ab2c2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.33.5-next-1608556768-3c5ab2c2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.33.5-next-1608556768-3c5ab2c2.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-K5enxKJU5g1DcK7ypw/DAytil2I5J9I93KwKBbw6BiW+illFV4uXxJyWychfmXRDxMgHZzTKoD9TW9XGK6pc8Q==","shasum":"787761c3bd953bcf82c7cc0ef4929c2fad937a1e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.33.5-next-1608556768-3c5ab2c2.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4KGPCRA9TVsSAnZWagAAFAwP/ikxInlx3DC0lN2O9Pxo\nloE8AcqsthJDHFNPybJTCh6iKbSHvVh6gShroFAc9zQADGmrgw8x+vEtZyJG\nzLxQphpZhAkH4Whdqj+GpPsN39WqMgXJhBNAqOMh0g1/svjg+qv6X4GyfHNV\nXEImVZmYUGIGeJcOwr/sRMcSMCX8Lqrke6MBMLwcazjslNxII8Cvp/mLlgIl\nkhM0SwRQECTurv9mL/xVlJ95rqKKMCk8JAblg031vSWnugGHoAD09vlx4p0b\n4lyiBL2rdD/hOWTjkZxvg5An5HROyFV46lEf9fYBMLmbM5E2lKE3ThQpbpDz\njwIjnTW+GjQ29Yok+U6oR8BNm23fKdOsFvPi9tB7GmjbBzG0s63Rsi/v7V0B\nIazdH6mJfza0va0mWfak15Nj0GpGIu6b2kfbleeIHG1y32dl6klvM8WQoYWX\nYeCaimG7pKbz9BMifnAhwzjn9B/vYLlibT7ouQO3xZLUhqhkGlV0Ky9A3Bjr\nYzh/kkBu32xp2eTfMhjW22KhiskZ3KO4JcQZLL/wLFygZO2S0HbkLb2ETMD7\nJH5hKccTWG2Q2YfgnaFuDSQgyfojEDW4SG0gOcpQYRTmCkFFBcrMnNJjtqr+\nPVuBytAaRjUqsG2hoVzJPPoKPn1zwEPYVcIz8CAZgKgNd7YB7IknB/f0oTQz\n+s0a\r\n=Qsa8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZW8Zbj2j7xyMjhCPPpA8jyyzVsYbEfnaNhtuPfawP1AIgZClNvXp5YODqTE01J/YzPEkdp0D5qq0KpseVrIK8jY8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.33.5-next-1608556768-3c5ab2c2.0_1608556943242_0.26642753172663736"},"_hasShrinkwrap":false},"2.34.1-next-1608557236-7eb01b4b.0":{"name":"@xdn/prefetch","version":"2.34.1-next-1608557236-7eb01b4b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1-next-1608557236-7eb01b4b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.1-next-1608557236-7eb01b4b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kg6FL/+1XzdIiyQJ2DbyrlgQWYQcaI5jBVjjD0hKXVfaRffTU461RZSBMV5easrl+7ZCuvSN6EDd82P9OjDW+w==","shasum":"9107056ce1bb250320b613780366f0cca91975dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1-next-1608557236-7eb01b4b.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4KNLCRA9TVsSAnZWagAAbc4P/RS//VNDtUnOHD3cvzib\nIUPgB639VQ8tUpYr8t77L22deThcYkIA7VYXA+tDntYTtYjo4MauwthFZFGf\nvojFE3wNrOsmIlYXDrQrXje6QlCwjorTkhppYlkANek02x4mYyYZ6QoGL/Hr\nhoWE6FOs7Mbp5QM1aOd5Ahd/S2Kvk6k0g+IgaaNJKXSY0874MRTawg/FEvvR\nmAMBTV4ITUrZUFChq0EYjmwU4RU+P+s6+3bh7D6PIU7yq7QyGq+Mx0+N1FQv\nZeGzTH7828mfPIz9hiJ25VNISN7p+UW6WEbGASeblqaJ+LkPJfLC0y59Lr3U\nE4v/b3TL41YEsUUOnHJbF5sYO2TZmOaTBZhv9lhRDcXBCtXgBAFwWb4QP0Z0\nXeajakHnu5XIRX80PctJakbzv7/bUdH20FhTiMXbgruxvpvfNhpr+9Si8Dxy\nSSZCmd3GWiwJojw+Dz+bw1wTpatlbajAI6w444DJaCnyNTD+Qqp/6r+JeedF\nhkGqbONljXDE6b8UBFxmrz9ESNAIzmfhWzGOhRESrpvfD2GH7uV3gKqh9QBM\nrWR7o5+9Q+Rg2Yr5WsICYqjWv31M8CogXdYwDGlIaBBdSaWjbyD+/9sLp/fN\neEAVCb1YLlKs6gxXjuUDWPxPqbM4BxsLb+P41YnUZboF33+H0k+kbBY5JadV\n6mNI\r\n=k9Ka\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDD2LNo0/7N353VzURQLL8VORpca0OnBZWxPpvBuCG40AIgdCCfULI2BK05hQs+tuziOY0h8+iex0cwME2tCahUjhk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1-next-1608557236-7eb01b4b.0_1608557386754_0.5183558288335086"},"_hasShrinkwrap":false},"2.34.1-next-1608557252-604a0597.0":{"name":"@xdn/prefetch","version":"2.34.1-next-1608557252-604a0597.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1-next-1608557252-604a0597.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.1-next-1608557252-604a0597.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ss7ijsBxT4pE7SPg9xgAMDe3AspbDzvOAeRy65Df/IO5Huqq/cAX37bexaq7gqVaIDEi0bv6mDWcyUJFrkjozQ==","shasum":"0769dd3b173ef3d197c0074743324f53460b11c7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1-next-1608557252-604a0597.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4KNtCRA9TVsSAnZWagAANwIP/Rv1LmGQxYfRPi17HNhY\n97SjIZrtw5SDyH5OIC8GqmHJoqRJ3e7XcFq1IDRSGj6oLg4EtqfgghYSQlnH\n5TFJU8JazFgFdRQCFf15rB9iWcO5H5j87HIevY/fwg3Vw2MZN0N0cgIWB4v7\nsayS7KzyLMjdkC7TEXjgdLSgUsHkUe1gDMNalNhvgzu+oX0Bx6cTcysbTbZF\nOJdaRwBvNP6leoYQkjbYufW82LtnW6HK8WD4fRcbHbd18NZwxcTtx6of0BW4\nND4ybrq+vW2WCi4C/tReOhdwb/Aszej5KYf6TB3MhH0h55btvuULT2E43090\nBlQP6s0fbyV7XiI5hBJmSRD0bUqnJ2jSkdoBiYnL5fzTPPiZoKs3NsWzh4hN\nVBPQSDRQa23hOUgzC8YfoS8q9pBIk2BOUeP5fsVhxvMwJfIfmStCUy3Zg1ur\n1POJj3oxI9KDR4dWhyxhpyxC8peP1FEGYGcqGPuavEtGv95USv3lrr9SqSCw\nPImZzI9JVQwyCaRgz4Um7UBYUXpufLsE88mUqiAg1AZQ0roTuDPAcBmXUWjj\n+eoCClrae6H0rkCjGCKoKe6UVaQ/UFBHuhrfLnfOSXbOekCGMsHO5r/ZoVXx\n+XHj2d7CkWTj0DpEPy/nnb5JdFLnIE2CGC9OgeJZLxchX76eypJIg/wFFyef\nel2P\r\n=MMbE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIVicz0e2FZuIYGlffCjqeCxHnty2BAW5bri3oRPDZ/wIgKak5Ox6vmgxAyRJTljQmLH3Dj3zWJhBZW66v+QQBj8w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1-next-1608557252-604a0597.0_1608557420447_0.988100074553983"},"_hasShrinkwrap":false},"2.34.0":{"name":"@xdn/prefetch","version":"2.34.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.34.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aNl5AyO2e+GNI8OgbxhwJPiMP1xJgcjzHfORhdAWsyNmhZCqlZBXG0X29XswS+T+KXV0eaCyFyq7canv8vj8Yw==","shasum":"2af49f32a615c83966dbccc69987c333183966d8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.0.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4KQNCRA9TVsSAnZWagAARxMQAJuLKfDlgplxQtH7WIiy\ng6V8Fr7ZeMnr6d0+EBNmhHknjb7vKYBaFU5zwbBXfQGuZ9dfFdnUjqx2YXeO\n3vK5BlGippqJwkBvuBGsoForCl0BoaecL9ZotM5YF1nqboeShrVRQoTE8ZFe\nHL+caAvz+BhoVjigNR/2rkBAkq5p5Gvof+fBox0CeeL/DPFCLRs0H3oRUVaQ\nwif+Iz+MTCKZ+oFWQuBxISDOG2kyfLuAY0YnUNTqCjEXdoOi2Gv+Nj0JqFAT\njlVbbhQXBTpWF06k5x/YF/4cHWiOn/FMnyz6UXI0d9lqG8GmnYfSgZAGk90L\nBFy6+UhyrygOoZlBgkQHy5a/hzxcI8+ou44dNOeY8S7tkJsKc0BnPfNDfodI\njLf+A0xyII3xP4CacHptCgyvtfQ3a/XQB9EjHngUS5KrKS5IlgjSJdr/wexM\nyING8CElxA9BMB49CVcU7vc75yxdYLSMdqRpjENKPeYiunIupwaoKhXZuEJN\nTVn8aDeXiscNxwz5X0hU3XtXPgHbLukZ+JnSpC8gWNRKudMaXWGol9rP/+T+\nsNwAdUzaqqyKikSXPUb3IucCVXkA234cVRvCEHNQDE1mx471MlpGxTsVA0H5\np9xbK7K0L2Idqqq41krNPYUjOsUJavRj2ESwl8YGLbx3fDsUA4lbAN4HbCAs\n/y4U\r\n=VT0C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVaG56eVPDeTtQvD/Se32nMeawO0wo2GKj7LnzN9FgMAiBKSmP5btANlc8VfiVhc8KGvMtJTlYuc3v1AIjNsjWEVw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.0_1608557580957_0.24586073728435287"},"_hasShrinkwrap":false},"2.34.1-next-1608567275-604a0597.0":{"name":"@xdn/prefetch","version":"2.34.1-next-1608567275-604a0597.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1-next-1608567275-604a0597.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.1-next-1608567275-604a0597.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-h7s4Ci1WTvl4jeCzqAqmgVa6x1nN44Y24g7IeWOKn2Mh0opN63Lcyj0Y7QGGYnNhnArjrFHpYc6grfBI90u+mg==","shasum":"f70ec354d8dc3c2ddcf4e7f7885f0ca86ac35927","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1-next-1608567275-604a0597.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4MqICRA9TVsSAnZWagAAM0MP/1+GdvlpOdqy7mY5nZk4\nBDZBgMoLIt0n8gb7tkfSk+J6flcFntF1v9ZR+MfSaBieQB96/Y/jxeBdqtFm\nG3oolOO7fER+NJctXd9cf6biWfXDN/8oZpPtUo8M2I3VtE3T5nQgtHeVaAti\n+J67p0qaw9cL+KwHmhMI1ATx3NGt+vE7Tig0TolooC5cq0UzoqUYseAj2KuN\n8980RCTgcjGG4CWNo8FOe2JFKuHG5aq8QVdClmK8RY0HbIb/cYPuY3WN4HcF\nNUEvdtfmcKIr2EZrMTSSa+xcfvm7FGUj9A2CDa+4A6sF1lmRqfX5xbXSH+LL\ny41pKpBPF0+TpB7Nhdhnjl8FH0QBP46dsp2JLQEptgx0Nl1WekstyLEjcll4\nJDOKSkHQd0nHIqx4puk8+dv6fvcq/PNX6s1/dfhryHkqFpfNjUcaaF6nEWZp\nPjX7F3moLWGdcPjWeqyvyP/w+whROq4hrp1eQ6FG5qr0drZhCeHBeGF9dybE\nxHFOHioBmYk/rzX3vwGVj38v+7trYwyt8oxkjOuEqoxr5yWyBD5/nzi0NYZ8\nNz9IBFH04A0KPS0RLOM0XNUHzRFkVe7fQ5UrVuLfnHLPWPYBvqNyikKed0Jn\nOhdaNjMV5+xzU2Z9iXXrc8m/Qu343GypZZh8oSrsAnCK8jneKZuoZNF2uv9R\ngoTK\r\n=ABzZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJk/Jaw9/lUoz4Kvmew7suUdX21K0vXgE2pRtgjyP3fwIhAMZu6Ei0IcKze1mj9rMAh5aBn0cGpWuPnEgQqFx7WIn6"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1-next-1608567275-604a0597.0_1608567431636_0.10952219431526844"},"_hasShrinkwrap":false},"2.34.1-next-1608567983-da91d7bd.0":{"name":"@xdn/prefetch","version":"2.34.1-next-1608567983-da91d7bd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1-next-1608567983-da91d7bd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.1-next-1608567983-da91d7bd.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eABpr2JmcbKrSZFyr4pPInDp2g+MKsv5yLlRzztU2AP5z36OCc5RdrVNgja0s7uNQu7tI1wQchrWd/ftMffDkQ==","shasum":"59a4fe85dee11e0b793989f687a413879c793f5a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1-next-1608567983-da91d7bd.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4M1jCRA9TVsSAnZWagAAnvoP/jw73CKTkhXb/tZl+mWf\nOVzOnZypJgX29xYd/6tWu/+tQ4sO+VPIfR55Csw53CJZHL/AJbmxvVRSsA5z\nyphi2mA17U9n8jIJgLprZTw9UN6r7Px2HakQQ8sdKeIFbnxK6TEu+QKd7pEt\nUgwxMQ0j0Gn3fDwbiHW2Y5eqJsU+HdPsk5El+jBee1UHvxgFREjGDcWY0JJs\ndyQVvmIsAizdFTuPbPD9tmRfeOtFIL6SFfDuZ37CKddJr9ONiNL3g8Zj2PZO\n3PwlvIyscyqdkmp9PAfmDmZZgmGuu2UoAU0jyd15zK0CvGTg8BVmwaDmGD22\nhpXC9Lx+5ioVJ5/UEde8I4O4/8uejOrDnXekPQYsYQJYvuYU5eCRr8ZvK3Al\n7xWG6Pxyxg4uL+HJe7m+K2nyFU38slrJsbqXXptihMtiMgwCqmGk0Ju96YBM\nUC/EmVHEnldZixTj1kyVHgTEdJ56StYJm+0AllLy+5ZeQ67jODknPRWSX/U1\ngBEwEK40ApYNcXJmqyXOmOBoG3lxG+xSrkB/ZvoS2964/9XSY0FPEVaH0RMc\nDANYiWRlKiVGmSSyNYHZ2iPZjf7ZwQOsfeYhHALNoo1MwvYbMKv4vQO8vOry\nQtiSid512jJP7XNwpYp+KqWie1eD7KoZ7sjx0CcXqzG70ss7PPmjw561GpLi\nJc18\r\n=SKnv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaz/2Xla7qHpI4K0NCgBcivH1qxkFyeguO+eoiRwqUFwIhALEVMX2cmnBMlWXV6vux/CciSi5htuKORfy15lLCDrLZ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1-next-1608567983-da91d7bd.0_1608568162499_0.35753727813011094"},"_hasShrinkwrap":false},"2.34.1-next-1608574672-96b6a2d1.0":{"name":"@xdn/prefetch","version":"2.34.1-next-1608574672-96b6a2d1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1-next-1608574672-96b6a2d1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.1-next-1608574672-96b6a2d1.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gcMr0rzpiWvlgoHE+RRTwOSpWBVRdHRlX4XgPPFCqS9vRcFeFn+eUeG0Dg4pznqLc9kQ5xu1mROXzE0Mg+5Zhg==","shasum":"0ea0b8aa74749e07de8e8208b339915dde74bb5d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1-next-1608574672-96b6a2d1.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4OdjCRA9TVsSAnZWagAANGQP/1nKiadTBW4YirfeWoZb\nhn1w3naZYd2lunfZNOGl2GdXv1Lva/uyBQLzL83pK3Wrkv2HrFdkFpye5UWg\nWlJAdkJpMxNZYL0wZrC7qKehZhpwtbiIymf4XR3hUpZLyeU4GDxJNAVITEQa\nLSaFxs1XA7ZN3PGDMhsXPVUdjey3/RAgYBnL2Y/Y7Ztr/1osItciQn/BPA2B\nfHWBAPDe17vN1683mEg19Fx3IIuXMuxPWNLhNtxB6hwqAVeoYcgbTAlxbxvq\n9wVbvGmvBIRpXyVqMJAgHcrSo6SjHNQj00sO2Rz90khxjngj7L10HQyRuAO8\nUanrKCyj6DUgARIST2EPE3gRDrVq3zkSr9teSGqPimaCFm9vBOV2H4NlZbQ/\nZws0yr1BeGYSpPO8eGOQ5TQ3kkQd/1HXH+CewXUkPxxS+2c2fCL7ITIahcGs\nnQ8II0ASEOL03ZpRmHRWYerQ94ZckVRdCZ1/1Dd3lO+bvtYWwC1qjidm9CpZ\nNHUc/Y23Wkh33zKGzBhFSXZkUvzgngCZhfilqN5mUSqjr30/lgWmJaA+1tcY\ndAz7Rm4QyidKJTRaN2AhhnpiCAPTH6pVwBocGXaGxxmzy3BWFDay5nD/PzjN\nQLra+UYqwFvaNR5xzSq1TxgWSSG1dVfGrtoNKsEXL0pNzVxeYETlpF0kGqdZ\nuszN\r\n=fx8z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTSKhwusWaD9NmTho/eCuVzOHqSlD5TRTWMomweylBrwIgIXtevNG2LUtz0EfuZ63iozNBOou5JsJdIjxnfNH1p1M="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1-next-1608574672-96b6a2d1.0_1608574818357_0.1148528424027615"},"_hasShrinkwrap":false},"2.34.1-next-1608574978-80b9a077.0":{"name":"@xdn/prefetch","version":"2.34.1-next-1608574978-80b9a077.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1-next-1608574978-80b9a077.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.1-next-1608574978-80b9a077.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-H+TbDTDh7w36I/W/J9wqpwltlsXX0wOLP6CkuatV6mvs8K7+jCCUcNsaQIRmVL/9aj0StFtICKEfDyoaYqsJWw==","shasum":"7f32387d392c13d0a2b096a27040b6255ff99471","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1-next-1608574978-80b9a077.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4OirCRA9TVsSAnZWagAAsEIP/2/KsdgMXaJNQMwvr4NG\nTUoMErCmiM8ln5ZjiTHp0nsJmk5XwkT5RngWqE2xEGUTt7LdMgsGmMytKGKE\n3PctnBCqkUsU3P9XfvHK2useO5DAm0q+WqctGtIZp4AksUKj4ew0KWsb/XRF\nW8cToCUOwSXWqhtVxWOEvxexWrILkQ47FN7YjUpADwVIzMdpWCnTIsc3ub1I\nIkYIC0FCDC4zVsUx9387gMW8Y5IKp8mOpRc5X7YCBG7IZps0vduEOeoT1rk2\nyVSNGINO+qTGYRZBNn3SDsW/Gb2SuhXeRdPQcqu+8Na1MQ7tyoVojhWofz62\ncAFicSmTvgvrf6w+iT2WMvX2GyrDKM3eykMKMhqFLMvYGI+yp7eS0UE6Wcol\nnCZSDXfwGbU3ARnP8QNwPCVOua0VMnleS63I+RthkJNZTgcbRcxtkpSNLnv7\nA7frWLThvLtDzk/t+urZ9aXF+bQ/yvF8SMDIYfnFRkMQDec+P8jeJ0Y6SpcN\nf9Yo08Dc9ZwD7K9KzqcNRCxQ1TCPgbPQWCJOyqjQUYSCSO7hRvfcvDJbqg9r\nnhPNYhSjzvLOaBLGYtqlInT+rjfDBhkpVubW7nmTuCdBGRkB/C0qYUgYGBDa\nHVaMNq2k2dL3QKNmmPLgT4PlkJmZshzUkjhqSoOt+Vz8gCXBs+df2QUyHe2g\nNz7m\r\n=6TAs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICojWtvn//bvpfHq5azPukeFlWHKyY8D7fYG0sMX8IfcAiAGUDtKprRzyEEYR6uixi5dd9URYlw8rwGQFlizquDy1A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1-next-1608574978-80b9a077.0_1608575147131_0.8459871526871703"},"_hasShrinkwrap":false},"2.34.2-next-1608577558-7f068e8c.0":{"name":"@xdn/prefetch","version":"2.34.2-next-1608577558-7f068e8c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.2-next-1608577558-7f068e8c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.2-next-1608577558-7f068e8c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HVYKnnp0j3aV+t8L7+AzXPiFYQ7uO6w9SFrL4jnBE8Bb6G2kfT/r/nXHYvU2PvyuNFzHNFE2kcZ+oKr6cRh13g==","shasum":"343dd6f26945981f7ee51e7a9e048871682e9608","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.2-next-1608577558-7f068e8c.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4PK9CRA9TVsSAnZWagAAedcP/iaehIjM6bCBelsJJV3+\nejQZqu/4RHMQ/sAL/ZMpzDvOkDkHVDPLEzCN12FLYnDJQHL204pTZbE+FLo2\nTDLZ1vU/T4bZ4T7EMg5eNYPJqUnA3vSLK0vvT+XeCdTveCaz+NExLMG2WhfQ\n6ZruXRQNh9hiir7etx8iXNOqlJHdw+prpSiwVt+JCSLE4mOF4cooMdK2AHJL\nH621GS1pSs2IsENRsEYyGAMT+dQ9+Igx3Fc4jt1yhkIqLExsuMemcRgpCNGB\nX2VeXRqZO0+0Ddkn2OsWk+UAFFlnVt9IT1HUS/GNyYBU8O38UU1yQSfaWtdP\nDOcaMqvin41nJj30hVm9uWjATqTiiThyQWnS5Cf978bb+f/NQRrGIcgxh7wL\n61TNFfeH8TzzktFea+8FK9Tt0S9VI4wabe9LBN4XXicphD1Uhz2r+GVtQpli\nv3EEy0obp4QZ+EOpfrCPfW8/dO4/KRtRm3iXdqLujIKhYvBDmp6oTnuM3Tc3\nvVwwRaa+hSNSLyiWE6Qe6xs2P2Q4uapdkVOznKPnb7XDnmk/XJ1tVEWiil/3\nhiF9vfLHGoBHCuiRFie0PtJVS+IfP0rv3zvNboYdLZvXd5IYU6GViE0lDyux\nnST9c9yf71SUVXug3b4xARQnQFzlnYdAU4NY0vveTqTIG9CiozDBzQIhUiK8\n7K4y\r\n=2xC1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBfFe0JaF7PviWlsRO1GqepVIDJKisbvSL2sowXQRQ9/AiBuLslU3VGP0F9EzEWJ7JEe7oOWPAkpIbBrX0dPk4Mv0Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.2-next-1608577558-7f068e8c.0_1608577724386_0.43477019413888507"},"_hasShrinkwrap":false},"2.34.2-next-1608579093-7f068e8c.0":{"name":"@xdn/prefetch","version":"2.34.2-next-1608579093-7f068e8c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.2-next-1608579093-7f068e8c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.2-next-1608579093-7f068e8c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fj3sk7JN7HX1nrnF/DRfHIuX3+W1Q1/U+arVVBOH+z0W4Oeypw8CHifjkniW8WWvJhj+J33hgi5QgnMPQGfNeA==","shasum":"84ac9feec0d20b4fda5dbb3345b99a818aa8261d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.2-next-1608579093-7f068e8c.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4Pi/CRA9TVsSAnZWagAA1v8QAJjbBHPPc/9J9dh/Ipi9\nH1qT6YNpD9Kj1a2AscY0cTPP5aLzyHcEnH5Xr8IM6gsFQZMLkpctai0xKWcx\nCbbB6o67eTxkWNa6FZn8krOzPsOuvnuIfB+iZ0xdTEJZDMdZehZDeUlg2ImU\n7w8b8wf4WjwCspaWZwWcodgiW3NFU+NdwJ3zDxQklWCeRaABT6WYL3GHYLT0\ne0ohAqDNBMdAoM1neSz2MLtE71Zj6A7iGnjJYAZgIl1wZGHuSNOdRVg3pxCY\n0w6mEF1u6aFnByF0D55qLDfH9+Csudm7tazeHf9vfexvoZGKyp/Ka070h1VL\n81uIElQOnjphN4ninuxDtIbGW02oS8EwNtOofQzXab6EHfJrdDG7jDpsWycJ\n1jjiRGQhnQnQPkyUdX/AXGawhMl7qXl1jERkS9Plo7uWxMD+xR06bH7PPEl5\niwMLV7gOD93ACLbo4uAN01MhJn/rztp2yVV7zwJydRkqnbvLbf3MOl3O/08I\nySovmZGlXMGty4gLsj6+jhxQtIqfwTBEPNSVNHRQ/67aYz+UO5PVen/9QvJ9\nYFsZzyuS9Fv0AYNEDTpUC609HjBPFGwHWqxPmcspDuSItk8mzD2z4BrjQnMY\nptkQ+WP8ykQosH3d5s3Nhnp8QmpcRHO0mbUy218GAxTLew+tpbqDQv5g++hl\n0DCW\r\n=1tj6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA8mv1LokvH3ys7U1daU9yE1ENqneL0Y3g5dFEHwPWUbAiAYmcsJinORwdF8gVeDwHbEe3c7omfSvUr19GwACctgBg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.2-next-1608579093-7f068e8c.0_1608579263119_0.4453870000413671"},"_hasShrinkwrap":false},"2.34.1":{"name":"@xdn/prefetch","version":"2.34.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.34.1","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lKSX4jDgWdUTJowzlJFhExaDd6H1OOJz6S52Y5ALVpuoZv9WYVTTFD4dAuGsHpYb9sw+E2D97p9/tzXc519kIQ==","shasum":"afafbd709b19778edac79660c8ef6498aba86f50","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4P+ZCRA9TVsSAnZWagAAkSkP/ic+Ixejhdmd7d23YtwT\nM0l6frISnY2LovymlqvhidQ657GIa55RTvtDtznwN/TsaRtIzqIAEZLg3xGI\npNf4KRGTAhN3hfYMc3v216qJjX5uey7mF8Svs/mgAdQKj5kNStj8kqz88wjr\nq98pLVB5dAIEQqf6cDDUvKTa2sKoKHHHoTwgSNEBcCThxm3YtCQvGF+CrTZR\nJk5pzx3hWwG+44n1KxbXNfn5Fa7jun+xpFX7YHWC8OoEQoX8RZmn1U9U+B3q\n7uumQ7bqG5HY4K621afKgbxspg5tMa9LgQiGZQCReN4wB6ATo932PNvKJB2U\nAlmDgfK0QXTnJnQ+kIpaXhwkpIN0yU3eVev9JycTPqLxCg5DgjRQHImz9cqw\njk7XaqsEa72FbWIN8uyJHN3a699l++n72jQiCli2Tm1XI7Uvc/h3ycmMim18\nksRSlDX8kChERmsWK39MxrY7oGxN1jyOT6MdU+M5fDArwV80kjX81frGkmnU\no6tiyQ5nMiQ0BYwnWrpD7oI/SjK3Y0WO5BJCduzGT5o2ii9jeCuQdhWOWOTo\naAtyQu1x4blgew2MdakvN/dClW743T9yGuhw3oNi2+nTBINphdBKEmINPDSF\nBxPsdV6bfSUis+p6iXhCnz0yKugLivBnr9EGzrBH1+HKskCoE2oiYxfomH7H\nB83T\r\n=mwij\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKGIqgb52Hbl1+d1Ra0sKYGvzTYac3paIC0aO62VcP0QIgaVVLypfc4bOQq7eCIRO2XXkhK556JwskQ4kO8F+Xk5U="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1_1608581016641_0.22284186107368087"},"_hasShrinkwrap":false},"2.34.2-next-1608582524-c27fec12.0":{"name":"@xdn/prefetch","version":"2.34.2-next-1608582524-c27fec12.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.2-next-1608582524-c27fec12.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.2-next-1608582524-c27fec12.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bEzBijk3znPkpoxs/TtizpkjTLVGhudb5WfEjNxgdkHO67Dea2wlbzrN7tLn6NxqzIanumBy41mkG1zmMTpldQ==","shasum":"26ab567ea5fc47b0b803c8a43a2a1c49a9c88043","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.2-next-1608582524-c27fec12.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4QYQCRA9TVsSAnZWagAAMNgP/jefrl7E6CeOBTjkx3A0\n086qmDa2hAHfjXlxzeYeVG+8/VIdxfjX0nd0Zy9vp1wpWM9+MeLZP1yfe/uK\nImyzBfHutZ8dDFwC9sxGg6JbYu9S1ua/kQtbddp4jBNFupnfdBKWeoWhyF5k\nJcngYiunJN0bNVyfcK+ANNTwqs/hVOwymLypBGmql5ph6Pjavvm4IWgOZhuV\nYkHqFJJ35H33r5v+pREGvkR0pXAK3ZWd015Ly5kyS16SUMJQhbe4zXs1v85/\nwChCTJTXoaznth0UHKtDsRcE6QmciqvvJwsDEXaP882IU0WqDrI4ffdjppBC\naHx47OAnHez87ayNLBCWfiIW5FyJ0iCRFVEsUAnrn7qQYaxfOaeqr2yhrDOf\n1WwYemlHJBAQg5yuHZto2RUMdL8DLHBnp7bXawJqQ4U3v8IEZnDsEWMPYtIz\nGgi/oog/Zi+ZQeIsjy9CqheA2GdI+2cEgC8ZVYshOh63EC0SFa9JSqYhxY6Y\ns7XI/pOuHCx2kAN4LLC2Gq9BGAdfQ5RbwONPOAenlgA9z6CDZUTJj44ny1K8\nyzxBeGqFjJW7I876/ORbO8+rR05Jp4kvcNtpyc7fm/keSbq6hx2sS0QLeR7l\nWtx0SrzySzztoRI1STZ7v7+hj7NR/GFEilVJpEwLzAIiClscYGlWL6wy8kH6\nG/L+\r\n=gp/t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7+NMikzwgmjtWKr44MuxlaF9/TCEC1DUgyxUjA4bbtgIgZabzCoLIMopIXpJgev8hvliqDP7stvu22e+oZvXbSRU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.2-next-1608582524-c27fec12.0_1608582672156_0.830196732788028"},"_hasShrinkwrap":false},"2.34.2-next-1608638583-2e360a24.0":{"name":"@xdn/prefetch","version":"2.34.2-next-1608638583-2e360a24.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.2-next-1608638583-2e360a24.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.2-next-1608638583-2e360a24.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-F4vpZMLsnw6XkIuVkaHxhbQNqsmRiXANg2oEWc1SLkyc4rtrOPWAJlnp6kh3WLwTn8g3quyeX/UUmJQCLwvATg==","shasum":"05efa5e04160527c9fe0a9a165391a3c05b71494","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.2-next-1608638583-2e360a24.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4eEjCRA9TVsSAnZWagAA+gIQAKM6rlN2t96TjfEEHwaj\nCZdvsrJOV98ZD2WavOAVbRjY7RFYlhRBmgMcFLo8Vmyxfzf1ajB5g7Ze2orW\nLgwXeGTb/IeBGOPGtLdLZdmHtvPw+cdYaxCRzttwXiCg19xEn7LnsQy4dNpk\nq8UYOUKJdWzMg3nNPF0/HDn0s2ZiG5Npwwmu9XZGmkqo2WDsUeoUFk2uX994\nqUa/kyibf6D5T7+XQYN/wCW4p5Gj/6DleKOsuObAzs64s6VkWhgiTETpjWBK\ncly5WQF84I97/8ZmljjLulvA/3Tm2k6C6tZIycn409Wa1W09jRlLmqSe7EvV\nyEdjFONnLj/mFCaLvaSvYrv9ta4twmsRYRcQfKmSDQbnPXx6VsZCZFGn3/m9\n50bgtg7oPKHCvRWl/RJ2lp3JXO0V92lbkrsnhFz88PR8n85Jbb4+a5iFGagm\np8uHvStl9yuP/mZGhPKHUe1w+HX56HNPqH3I+nL7kidG05HmmHG1+0gU/xCm\nj3PIRNQSMFL7pSxAUu/W5lBTbXK54h8XzRHok0mFRwl8HdwZI8SVmO2ICUf5\nsO7jIrSg/4qEM7ekTqY8+iJeX7wcOpeo6YtmfY5BWKfjgI/oKyGtHN5GVD+A\nYxhOjILa2b+yY/rXHEtqfuRL6hUz+nfMT1tSLNnDwCDBHqapzF66b4T4RT5O\n8GyE\r\n=1xQM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMGYuwe1DYK2oGPU8GBqI5AlbkD8ManJ0YmkKhp5mbgwIhAMLNhvxWC6oy3Ezfl+DsxWUEiNcXbcN64gVKLGDnhMFr"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.2-next-1608638583-2e360a24.0_1608638755043_0.21798700008123162"},"_hasShrinkwrap":false},"2.34.1-next-1608638845-b33724ec.0":{"name":"@xdn/prefetch","version":"2.34.1-next-1608638845-b33724ec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1-next-1608638845-b33724ec.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.1-next-1608638845-b33724ec.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uQDiQ0QU8UNb6WfMq3uFi/MzAhtwqKiTfcRLCYvawVtFQMsgeAGTV17OI3PfTbYpR+6NPVz6tauI6c8HcJBe0w==","shasum":"e2f956934342ac50bb0fbcc6a079ada047a785f9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1-next-1608638845-b33724ec.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4eIMCRA9TVsSAnZWagAA9s4P/00S7HmyaUuRLrmNu5Cb\nCGMAgDlOjBsCndYyuIO6mx34WjQfVxF8KPAkP+RCa/W5b1PXSkL3TzZ2Kakd\nQcPaLUh4YnjXq8devf9WgZr3RD/Ge7edBWVUWBIon1zQBsd5XrFwrvX7U7+/\nxbV9M0qEan97tHz50rRaqal6ZVkuk40243IjmuM6lSzHr2cCf75NpXFeaw7d\n98hrde4cclnOzICVP/5rK65k25L2i+nxVn/7ATS+JTkfYixJ3KzJ270sL2vM\n/FniLTzbMx28MJ82twd0WUJjM1niN1enAcow5JCWxNbOrc+BKM7tiFO8r+vW\nabJGLWmujyH9Otz6e+kOuIvALmw4eOWZTneL1vwdMM/pOxO+V8MKl45qzADM\nmn5cYt3oMgNn8qMZiVw/LNMe+zU3U0kn52K84GCM3sStfDnIKTvVW6g28Zip\n3mOBTj0BXpB2HflRv0O8lYz1rN8sB98wkrKmqBPjIF+GvC5MOgwoHJtLb2do\nZJPrxvau+p+oUeOPdg61lUcvHSHkvgWqL/AKqyPO+EoNAF3Ycav/ZDYrQn6z\nezrRFV8bSblSYyeaVRO+Ct/NmhmWNHLr1+nHwCDlX8C/CPJl9FDs1KIaPN5H\noOUK/ygHYZhtHyNTTOm3783PdS/jtQzvMRc1stvV7tv/STqTU590my2Kc2pD\n1whL\r\n=Bs1F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIByhlAKAXFKb3TqdJAXtB05UeHq67Z92dt3Ah+WrO6w9AiB/lcADT5hdiNAVV2OthNwFdoxREDEeq5UeyWUBHoNa4g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1-next-1608638845-b33724ec.0_1608638987567_0.7158722501245436"},"_hasShrinkwrap":false},"2.34.2-next-1608640758-0adb248b.0":{"name":"@xdn/prefetch","version":"2.34.2-next-1608640758-0adb248b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.2-next-1608640758-0adb248b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.2-next-1608640758-0adb248b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YXKSSuViIlp9j2ChPP/hVsAUGFQrhJOD1Hq7UTEOjtiroZtb1QGmBr/vPJjrd0e2gQa58jAkxNqn15YZYq1M3A==","shasum":"cf0917e88c3bdac534c1eb22f9d211989701e84d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.2-next-1608640758-0adb248b.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4emHCRA9TVsSAnZWagAA0WsP/1sogjqQH/ObWSJ3LiER\nx3OgSYBR5VJckatm6v+tanulLwAJmVe0CK78X7kXDUEONsn7Es+SIiVFErAR\nR9YcWMPx0X/Acj9hw1ZkKb1lMx3MhvvFUVHpvxI7BTDf5dO2q2axS/P3loOs\nN6j+NPbHHFthV3L9R8aoPG7VBgslfWHub0emb5jD2PBnFuZ9h9bdVtJ+Psnn\nqlYMJUsfb8sJ41p1+l00mDbPd3wN/GG5xQMrRGD1klQx4rHCMdaywrf+FK5x\nqA2IDB+2+o+UJN4Ff8C6C3Vg6ANsDJdw9bmjSdVysLiCOQslS/QVcfxSi7E6\nCqCpxF534QvUSsTiXz9UMRVCbglYQUxHA9YLH2yIb2r/JnBlJAoFhbwO2GaM\nFSj7r1mZuqulI0I5yE+2Hgi4+TYubBrZNDJQjBx7oWkiGG3uICUonu/YXUwy\nZcFSqfK4P2xR92ykwYLjAp9o4ICw2IsWDiI2+i8RsvOlMT4mdnsy5DNUAY7L\nsO3vz7qQpS/gSZTXUXvgtF4Mp7qTDd7UPEj673SK+Km5TI9AbP74ZKuXaOJ/\ncc4/3Y+lda04HS7EQF3iQdDjoY8vT4N3371TxK1xaYFl/NT/slKCDfNVbcRu\niyB9te1Z6OoRgY/lkCNM2R02cGxk/ex51G/1eqsZTMN22h0D7cgtdyU3I7ph\nh2OM\r\n=CSrA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGKREuJ4OlCn4XFpU+0CwV3Wa9NyEsVOvlbrgipp3uFfAiEA16EyODt6fc6XMH5uBrp9IJCeumknyIr65ODYAJ65IqY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.2-next-1608640758-0adb248b.0_1608640903423_0.007600129833965408"},"_hasShrinkwrap":false},"2.34.1-next-1608641834-2d3670a2.0":{"name":"@xdn/prefetch","version":"2.34.1-next-1608641834-2d3670a2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1-next-1608641834-2d3670a2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.1-next-1608641834-2d3670a2.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kEF27gWHkNbce7c2hwexEuzHv58Et7oH6eeQWcC+u1EUWAxMysncHThDa7VuCPLJOpTpEi7i94bN7rwTKKHjbA==","shasum":"f9b3723396053f297751390416fd2090db2315a3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1-next-1608641834-2d3670a2.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4e25CRA9TVsSAnZWagAAfSsQAKNtee4cbRjOKjcv8RLF\nSCL3q4tSWY/x0jnq85VnKp3z6GBbI1cqlZ/ygIiW8PmM/m6u/aWB0v+o8SEd\ncy+itj2TrJ1AMPBttIMPa3A1LxX639sLbNVnyfX+OX/AJ9fD5Nh33I9U5Kzb\nUcELLCZuPGKlN5rf+cN9mJKQP+VSrAWXIPpNDElgOLPRzx5lUYiIgqRaWxMe\nFv0b/zztiu9RpKjhnSyDxsx6muKf+6F45mPdCzikeeQW3awZOlnXqiz4it5M\nOjzjMJjSTgbSc3XagVIyqAueHwQwJOhP93MbCcOYyYcltUmlKBt8Q9n++08M\nhRrr4RcAlveZMp+APxE5lC2gc3bQ2b9Y6Yi1EP2yZDQ2wMYxOj1Ow8kMRM08\nldR8s0TmPFfcDFwk5Y4ZYgXnbmsTNZyoFMKWaL9qELujOhp37fUY2BhHSPo3\n/OH/V+cNv7GRpz5Ydr5AGFSzEc/3lhE0SVyJx29W1Gc+bly/QBkYDx6u+2/1\nGE4vqrc4O6G8t6J2oXov1bjbdCN2jt4mKe7HLITyioYAU0TxevU7Cw6OZkSP\n2VY0pecoyLBUbGwoeFIpceWsOcHy4CiKI8Dph2WfTspacpPkwr48YDZL/7wP\nMZXvAuKau/ZI56FFJNO1LxAtgawFVxjAv/K+92tzOPs44PA8X3pOn9j02zGX\ntiI/\r\n=ka1N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGxmVDesVn/hljCj491IkNDnSG9w6oovd4nGQ5UBimZKAiEA9J3tzucHu0/NtswKFaycS+lza3lPfhholfDHiuJHRvY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1-next-1608641834-2d3670a2.0_1608641977371_0.514601665277246"},"_hasShrinkwrap":false},"2.34.2-next-1608646576-df6ca815.0":{"name":"@xdn/prefetch","version":"2.34.2-next-1608646576-df6ca815.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.2-next-1608646576-df6ca815.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.2-next-1608646576-df6ca815.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-sceaJ3Rot9azldHy6dWvxxwXhU6/8oyh7ma+v2SGJ2Twu6M0ReYtATfN93kETKK2habYTIEaMpUsbv31AHfRxw==","shasum":"4a12a144275f46f88cd171d087a98991572ea1fb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.2-next-1608646576-df6ca815.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4gBQCRA9TVsSAnZWagAA/9cP/1Lc6h480Ku1KP75bj/o\n2vcEtABQHJc16atUXEKiCOR60QX6q53VLwIGHGz3k9JH4Gn8ATnA3xuMLi81\nhC1XyKiXrKVB/mmBNq+DXnCbkF54bI2BMOIbGZpnlnR3fp65jz94rnaH44Z/\nndU+9st/RXlJ7Kpg6VPqAESMBkAfqpdBP96/DHCT8O46t7JSFmGmUObgqA0r\nezI0Ga+f2Tc5yj4LhZtF0CRzLrOtccovEBtz+XGQ4KOFEAJkKvsTFZgHF0rp\nIEoe+56dFdR9SMhNlnjBETytk3gQ8neMlxYpt0xGCtxXf8YNE+zh3yUgNBf5\nqZE0ovnJnDy+piUVd3a/ySA9j5R/8auz/nAJgmDwXD8EjwzfckiAndCMN1hp\nm2CjKkvGT78xPO8OlVU7bahrtHIgH9dmqr4yS8AUnSFLIcnCiSNTR9ymeVpR\nObavQAtDjal3oMmoO+8cJZhd0sAo6hJcBHmRy85KG2XOXIlEzbXdMO4yyhNQ\nscpnX7ZaLCHl1nTFNpotA+OAajbZP6lNyVkzoOO+u46mmO3XqmFX9EmqqjeA\notL2ES0BaQVEhIB/oU2V1bZuLIr1gCFA0T2S5WZixpzFcZqfLyu/ScRXeErG\nbu5IGfdmaoImQO2V08C1j5HmP9vHonID4JjwD1A8Q6n2cAP0aZfcnkmCGhEw\nRTia\r\n=tZBR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC945CULG4rg85/KKRHLbrJY9gbimjYGG30gxU13zgOZAiBEIqnC5WR9Xdkqi7Wu3RM4i5F01ol2MOnDPIHBxK1UqQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.2-next-1608646576-df6ca815.0_1608646736117_0.11520077908276871"},"_hasShrinkwrap":false},"2.34.1-next-1608646688-e14b894e.0":{"name":"@xdn/prefetch","version":"2.34.1-next-1608646688-e14b894e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.1-next-1608646688-e14b894e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.1-next-1608646688-e14b894e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9CKJePy65olSPedjwGiJo3B7sy8JSolX06Kw9plOb2Sdz/1wxskYpxBM+kpbmGL/wUAWZgQeUEQT+NRN2b96nA==","shasum":"12d8de39fd1698c25380b6bd1f1a8b9c5da3f59c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.1-next-1608646688-e14b894e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4gDkCRA9TVsSAnZWagAAftwP/jSehtJzSJBcVsCMvzrA\nVQ/ALQln1Hlppx1bRmP8PVXsCi0KkoxghsYL9yOsCbjKExw8tgCB8txK/HQE\nOmt3frK3nPUwvInri38Gcffzh9fobFva5WPv/nCEFRhUF3gsnSGk39JghmiD\nmVPe+1sNp9yIQE3bYpf+eE4ABLJCYg0fHiDlSisonM9k7OZJFKJLVwABihCj\nq0pEwl0BNUUh3kiywxXBPC8ddOt0qXbNpDMtub0f60uVIsdc7ESTI/Tgv2Cf\nPaD8K0VWUeAImsJp0YSFiY5blMRh40TQsAM2yh/1q27x5NRRS6nnaDf/119p\npjHywWa1NmhcqYzhSGh/3cNDdCKYXVmvadIQpfracVn5HjctySDh5W/sdC4z\nAeZu6Uuuy2/VmQ9A6YR8a/HVte42o3Wd96TNUEkbeEGVPBAwqldh1UEHiRmE\n7shiBmOeHNwHvxCUSifXatjoEq2Oqrz4hzJ6kbyqCQ3LIouXlTgP2Lx8k9ay\nYAt7OZVIJnvwJ8NK8dge7qyl5i1sOIdwPgvzQWYzxJfm0yyohPq7LgmgVf8H\njqmI8ptqQgv02LH2/Y4WjrE7bmusu/OKUSUe0o0pxIQr+lFzpC5azM5xgcgH\nJv7eN5fGdvT9FuRuJHnjwVteHQbCc8NZUFFc/MGN5MBCITulJggExnBqjqDF\np971\r\n=LwmU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBYM/+EyC2xwEt2747h5mVyCvLMvz7qgZ6DMQWvSp8v5AiEAyk97mcun2oxzjxJyNUq2Hwh0xFf+/yQXNCfH/+vLDb0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.1-next-1608646688-e14b894e.0_1608646883938_0.6348996693033453"},"_hasShrinkwrap":false},"2.34.2-next-1608647696-c605d79d.0":{"name":"@xdn/prefetch","version":"2.34.2-next-1608647696-c605d79d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.2-next-1608647696-c605d79d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.2-next-1608647696-c605d79d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+hSjhjfcIsXR20bR90VQQ8dXyonfw6PCUK0VOmDVqo8V+OUGp5B6CHeS3ASzJT8GUimJ1RI2jmavQZR2HdaIFg==","shasum":"d22bd468e13ee38503cae5534855a9887dd47af8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.2-next-1608647696-c605d79d.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4gS7CRA9TVsSAnZWagAAigQP/R5IDmqIbJcRy280oplZ\nUec3/3sDMhjsLvkLrBF+Rcqti2I/aVq7jeV0xkckKfPiFegLIgV3S3fJbIpm\nkHUnbZVKIcLfxUtn8U7Tsp/ROdP9MoACYq3Nb/35UY8SM+dP5VICP+zhNGJw\nzlA+zc7P0+m3SC8/PPqZwfZGi7eyFRZMHviPvHobeLkgj2gBUFuu1YudX1Xf\nymbf3Fo2SGmCz5zw02pjKnd2uDw1WBj1agwIRau6C0wgPdc8hsV9owGCR2ee\nsWoiYaTq7xXgKKf1uNLXLoVzwWSG5bF2sFifdB7zyQISTfYnBp5a4joinR0K\n/Urmj13D7OxinFu25bFVmt4W+fh+uXIe04dsQ1lT0k7oructX84rGsfRQyw0\nuCVBEdrnTwJ3jSCHQoJ2HUrj+xUHb5K0GoT9RFdkIcxx53yXwSXrcMfgI58A\nDF6yVSMkTc+NjXZp0XeJ44SksucDh7gX//FbeD4MQL3AsNukiEwb0jtfd2UV\n6lpvD+IXArSBNjabjKyIx+jQobHrMRdyTldSgtJ9dELdpfsLHrnfbt52YokJ\nJoxqZ0C2UGys0rIzYBrTvb9cAGb+5DrvFN+pKAywUiqs2dQjBfgQbCFWwh0r\na5mE3mD/LGQCF4n7w+5rzjnIiuXbHth6gFhbOXcckHrH3EVjqKsq+Kj1w59q\n7i6j\r\n=3snZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDA2moU9eH5zp0CDnKdM9uvvW1sv03VX/yOkV6b22xsEgIhAPlb8cbCfDyghR6wwwZ2kDj1pmwxh561wb3KUJiOm9SM"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.2-next-1608647696-c605d79d.0_1608647866526_0.7147332529703647"},"_hasShrinkwrap":false},"2.34.3-next-1608655236-63597e3f.0":{"name":"@xdn/prefetch","version":"2.34.3-next-1608655236-63597e3f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.3-next-1608655236-63597e3f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.3-next-1608655236-63597e3f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/4u3I0I5sUHOChDCCwgleDiMTFzhAJoNHRoQXGiUdvWt9y3/QyRhrjjN0o9KFAW9JHUoSAAWsSaDCXPH4hTKIw==","shasum":"62b26dd5c03655d70ded97bd80c2fea6c5aca333","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.3-next-1608655236-63597e3f.0.tgz","fileCount":58,"unpackedSize":142249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4iIYCRA9TVsSAnZWagAAsP4P/1MWyN3dAvGJPssMTxyi\noyRWYkp8otFCuGjhoUuLQYw8fxW8JnsLdxLubzejxeOlSc96R3546K8SwmTI\nKluHO+3V4Vll8MmQWnTdloJb5Pql6VrBrQWcQMxm05R8JD/jcMReTtadKTLN\nRgyUmmEYieC+xA73w2erXlI7poNfZD1mVdHwbP9yiCahOaXM87FVbxrHLO9f\nKg0JVTdNMRPYqlegycXdGkizh3IXFYqMMhymG2ObX391OtklB06ax/J7tjUK\nX85sKkfz7BRMdvgL+Oo3TDeglfd313Q23CEE++mcT5ZT60GJGhcpZkOg6mgb\n4RtVY1BNmRVCyWdtursCsQVLBP80sMHi6/FTuCmCL7M2NVQ58fGioKTVJxC9\nDeOMVe2kOkMPtGIR4R/Le2lX9Qbf5GdbpmJ/rnfnFsOpgj35i8c2JTtI7C+Q\ndcNGDVoz3NPbdjqWpysH/B6DydUSYUUJ8rXhfuQre4uX4usvqUW4h7gxGzml\neso6B2oX/IMdShWOiPlBK0O1wRE7jcv1fkGQmFLD7JWKPqYiXMN3YOYyLEzW\nnMtv3xUzkHS95inOml715msqT78Vxsu6eyZRoLjohj/th0iI7dcVjIq1vrnh\nkkU7PieBhlQ2EfBiS2KRp91/txbFj0xSvQ6/GPwKcNNAjw80kyp7w8xcSX1p\nJ+lN\r\n=0QBw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHybVOYlvnadDMdmwqjqf5cjp+Nf5TCSsPD3bEk0YAMzAiACl7FE/fMIOdeTiWbYab3I521SLzuc6Uq5HJ68VMiQVw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.3-next-1608655236-63597e3f.0_1608655383466_0.22721123968037893"},"_hasShrinkwrap":false},"2.34.2":{"name":"@xdn/prefetch","version":"2.34.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.34.2","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MHutgDJhAfk8KA/ePodonnaGIIvpIF6skmMFjlcmVQPY2FKCxB0ufOYQhy3X/yQOWvzoWmCOiGy4i+xBFTTUOg==","shasum":"5ea40505dd7697123d7f1b3068efa18ae92e85b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.2.tgz","fileCount":58,"unpackedSize":142195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4ib4CRA9TVsSAnZWagAAz2MP/21M+pM2fZhEK5abUfFq\n4L/b83EgxIPBebZeQXAcuGCWaLK5bqDq11LlfXyD49aCMWEbWlmQELgFCbVQ\nWQpjbQmSdf+B0tQ2mAVRSGiwrmTwg82UQ7hFVrjFyvXNSaF2ms99GT7Od2Pw\nrfWv6UwGRf4f4dvqVuTR9PQHsMihBq7+llsry5kEhj9RTMRangkYfTZD52o0\nPP5R59aqhvjx5+GSpy1kcNC77Q+dvyjEDZsTlzprf2xj1224UiuNLP4FLzFH\ntWeLKkowPtEHBsxbYLwOlOZppQwhbRWy1GEFqPpwPZSObUB5+vGbpwbtLufH\njwm/u5kL6F5RBf2nWl1LuDE8IT8b1dIdKpuwZWzln3oEaIVIjFFo3L3vXtSN\n2LZbFC3pxPcfNOzDvubqH5aIQJmbSbY0Yt7A7Xw+QgcYuFsaFB9e/T0tMrFG\naFSJaQ4w6k9XV8IIa+qjgx4H+p0es5MXvRlaWIBZf4ZpSpt/A2zHZT63ei5u\nyaxH6ZXo55JSFELBDDr9SKxRMLJ4SSrUQXHR7NG4mCqnonqAy1Yxt2OGLypb\nrX+ez+qKhtNeCIOHJnj7hKkMaLFCImrblbeQYvsyjpzo3ubK9ai9xFWqrmqf\nA7iYYC1NzOtNwoqaBGr89yyNnmelG/JoK98nuI1IFpLEcLw7Kxo8yw75KI2X\n/Wg9\r\n=FK88\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPcLw8/Y2w0Q3wX1GoZ4ZaOGy/dTuyXnMSuxtFgWFNDAiEA1DowSNvbGvAOl9Y2P0S/vJgfG8PEI3Fzm01zUOsOD9s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.2_1608656632340_0.27495868166529935"},"_hasShrinkwrap":false},"2.34.3-next-1608657055-e827a337.0":{"name":"@xdn/prefetch","version":"2.34.3-next-1608657055-e827a337.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.3-next-1608657055-e827a337.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.3-next-1608657055-e827a337.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-s8a/m45ZGj5Qeu/0I1kZtdHmbJUrW45sgN+OPGcFIVundY6s4LlU4+v81+BfySf2FMH2mOzo5os/El+Cmj4V1w==","shasum":"f3004b039cd83b16800f55cb2e172513add3759a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.3-next-1608657055-e827a337.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4ilNCRA9TVsSAnZWagAAma4P/2CtteNTITP88gIOA3qw\nxQH9oIscA372t8k1YP8Zqn2oRgUPrC+v1o9p/TYrdXTvyswV2+JjiG/3x5I3\n67Wcbd2lRHhFeLrbIX3EJEz/IeNJmLb7jMWeDt5bxziB3SwMJZ8oonQ+UkXC\nXDcw6cwTUA2ViIGRzru/uPppy1tPxl7nkkNvLw/v3mC6ZucAspbUS19lTPjP\nucHpiidj0wzv8Oxfuti6xUQ/k5R6ygdsmgen35+g5F4ou7h5cGTnr98rybyI\ncxT4HToDrN0UECEGuCEedBx9rfLC4qx61fatow+VkNSNN1iUAhNRsjZH07NQ\nbm+x3MTJjHUQ8yKPIaPH2arv2F+L/RXk7ZjUlAlyAo7COu6ESDbUWPAtB2lE\ni9CjKLBN5QR1e9OsaLtVPSNSwG2JGils8dRsrkimDargxwMJG2yiqwGoDSl8\nx0Gesr9/xIlCgHa11kKUnasBfkowg/R9dbhLzGMzgJly5Ddxqg11grt2TnpY\nBGWpe1Urkc2d1yRSViKAhhqZwIfg6D2MxdmE7wAfxxfEU7yY3UZOwZ8uTXdR\nSJ+FFTpg/4rjq420fGmalQNGcLEnrX+ild78hdUxs1/C8KJONi6//aAV/NpK\nLUMFnwvomm4dOsE2QsokTCMXx9ez1tAaJiNvyJDPXOeaCkvqnKJjf9/3zUFf\nOvi6\r\n=4791\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBkbPmN8iTK7wWhxoMZ8bTjVrJcXvoDkRzBA33oEDxreAiBBK5ZrBOdYxYGvPbPaNN3wvgKPkbXSjAMKQyLkDVrcoQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.3-next-1608657055-e827a337.0_1608657228908_0.8598791614850858"},"_hasShrinkwrap":false},"2.34.3-next-1608660816-a74c132b.0":{"name":"@xdn/prefetch","version":"2.34.3-next-1608660816-a74c132b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.3-next-1608660816-a74c132b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.3-next-1608660816-a74c132b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Tu8sfa0DHGWwxlppYq2TwycuG/UZdOHxjj2p+6dIm2di5CNtugCrL3AqPWb6VgOuihmYXDObbs+V1ELHfy+4ng==","shasum":"340c9c3636a34c040363cc1ea33732dab5933794","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.3-next-1608660816-a74c132b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4jf0CRA9TVsSAnZWagAA/6QQAJv4EbUzCOKswuOKDVoR\nCOVkG/Ix8Q1IBkSsEaYRk+IZGM0Ujznee/1He8Eqsb2lDgGuyL2Y1aPUtRSe\nANn3PqEh0cxkSx6sc2N0EFvmdrd+BqxEKa8O7G8kWr8DLFx/Q92MwJbX2aTJ\nBxPx85DOhWOUCbdtaYjiyi/NP/26faSt5QBeOPbIFebwNjTok7RKWb1Vxqbm\nM9bcfuQXBEimWf0gNFHmZWaOs5j9IvC6VYGVlGSVNnCqhs5vD90TNr237L38\nlSq9vB+8JIkjsuVQ0XUSWcKPMfu4E1RSKnIHEGcjj9Qa87Pm21wbwtk/FDHy\nP6/PhDF6t7O/fAGo8Z/X7jWtc5hx407ZiRLvY8IgpSYyU4ajF4FfEY/QQvaf\nHqqdB8xQ3d0X4EmoqQX4vJdW513ZwmM6p0kluiUsa3JUxhwHBRgptu2eYeVq\nYPVeHj1DUvAWcxRXR8sv9/IuSnrGr0TwDeRKhk/eAurYxSs8+BMO7WYkbonh\nB0DQNbRjLLvfjM6L+SHAQpcd8ek96oKwFIUg28HG5jUjqxyCJYb8oVg5iwmE\n1Z5wbISDAsow152PK07APJMF08cn0TYcaUqY6j8tHeqA/ayEwJyfQ8EQjHrV\nXJwVrKDZbJ7PKOHEP+OAiZycVb9ucJ5NODCRZwYsbKP+CqK1hQtYI8/gm8Jd\nsMwf\r\n=hF/j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICce6PpIz+FW5SLBIlQtNBt+1Fc3U74t3jOFwE4HyOIqAiEAiCENhDBo2WgxJ9lVslEsObCz4II8r89mMeJT6WgSHqw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.3-next-1608660816-a74c132b.0_1608660979357_0.25740197684663224"},"_hasShrinkwrap":false},"2.34.3-next-1608660895-67834941.0":{"name":"@xdn/prefetch","version":"2.34.3-next-1608660895-67834941.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.3-next-1608660895-67834941.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.3-next-1608660895-67834941.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vkWV9sXLDHqaeMLUEmRbid2Cdb2bjMhyVDJlRaZL83GT2Pu2ZVs4flOb3/9uOUzfMeGlkE+gA4Xq98I4H3Wwdg==","shasum":"ffd61d39129f4de1f27232016ee30b4ecd70aed7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.3-next-1608660895-67834941.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4jg2CRA9TVsSAnZWagAATMkP/RN/snadjxLBIRZadC0A\nvCaEfW9L1yBSJwUZjGS3jKVA58n9EMwbXcmTAAz8HUWRORjam0710Zjy2IRb\njhcFqEB7dXHP5mccwlwQG1YJFJ4icT1bwoMGPOPH2F49qy+7oi6tFUoicDan\nPNXp7X2xHTbanNwrm9gsYyEC0ZlIq6t1ejcfY460xb0/66z6nQtM6L7gzPfz\nFfSqekR3mgwUpRG/r3T9xkI+fBqP2axShhMoiR9IdDf6GkzgQjCFh36G52yc\nZ2Rso6xdBXpyNBLDxJuT/GAR6qt7sXg0f1g+kF6m31gWA4nfJNQ36fuzjuqB\nW1ZT1kbjx8D+NJyzLfsQa3sHA6Ydk0XkYZb/SlujbCEHZiceLU/S6bv0fEIQ\nEAguMpr9r0AEQaA3xAJsJcK6tw376ajRakQl0ke9M3i6lN/7+16xz5WqGKW6\nMuf/M0mF3+mYJOrhSTIhdTNUY/xm9OXBLVJVcBo5iz0VUA5V8fZv3X4J1XN4\ntyMX9sfp7EFXS88yfxSa/6dbRKFQ6pXwz7MOfqDEZS+vWpcHe45AhWmQ3HKH\n17b/wRGjtqFvhKu5MibdMDmxIjl9Va+uCRYq4w+wszMLrFCI1T4j1iyB6rdd\nHl60/vbN7/FNF/c8yBMOxJxN93Yv1jAJSp/+HXeV00iO/OF/XRrTu6mO2JPu\nHI9C\r\n=f3en\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDohRubATvoctJ+B/uXRhBBCbWHJQzUqtJ/F5/a4zowLQIgX7BJxxRbm/l4RedKEQJfhMk6a2Ejvsj3hDg+N5EtNrg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.3-next-1608660895-67834941.0_1608661046443_0.7108325862355271"},"_hasShrinkwrap":false},"2.34.3-next-1608661233-7d1655c6.0":{"name":"@xdn/prefetch","version":"2.34.3-next-1608661233-7d1655c6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.3-next-1608661233-7d1655c6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.3-next-1608661233-7d1655c6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ByDciVoPwHjKJTwJ0MPtKOsi5rudbma58cqI5EzRuxPfAX0MX3+xXmN70sqHRgU66JFPFxmY6/cnkjyj/IyNvQ==","shasum":"a56ad7662dd8099ee1ee5bd65c6fe80f4b4f4562","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.3-next-1608661233-7d1655c6.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4jmcCRA9TVsSAnZWagAAswoP/0mycuuRKDzdmGqyTGop\neA+DCdPDrI+no+Wfq9L+iwDVdTV564miy94rdj6SNDHIwEtfZvxlq9y9xu1+\nWqM8eg31Ftnkhwnt3bl7EgfH0QzWMCMf/U6jkEys7h3jBmRKBho7YKjxCGD0\nOwBWmRiBfbQH5x2YiKVVr6LvPEQ0KVYwfdLTIiO0VXxPpOfU7DK0ocJmN2gW\ngpPq+5781FqIxr97yyhpo2NqtM2JnUrl0w2TmUYzzFVyF+trGu4wWdPGdL0Q\nYUUbBzgb5ooCsGrBVLG+ViwJW0l4pnFRFjZfH5CgrkO7so0OSh9uAqOwKGub\npcQR+j2grJ3RgXYdNDdHhcJVciNLkp/z7Cn3zjTiwbmkyzdmnkydTmhBzdvY\nw2Y2ljekZmfLi+EgLL9TRgqMRv15dGBSt/rr4CTdHox6ke2+qtBjug9g9oav\nOt/i8HP3FLsQLzuG1J1DTNqfsn/4zdJEU+PuJBM7vVdu7S8ftx/5twnaTtMk\nfPXn1M5+Nlu21ppCMC81I+ZLSh7vdM2rQN+HfzV1RPCodIH53H58VRqjypyr\nxBnrOAzw0t9bwhOZXPQwGFyDaYjUonr53vWcD2uTn96G/bBdhksJHjdEb80+\njeB82NebUTqSDj0CVj8zCMinLAUknEYf0lBEY0wx17qMCVXxwdmKhnO6Vqpc\nr6lk\r\n=VVPp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDskFxcxW74cNuNdcIgfDiQE7i5bYqpl9yCxVeOj+e/zAiBt+qe0M/c6RbcCFL8i7m/y9mEcZu+HlztcoUqkGBRxxQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.3-next-1608661233-7d1655c6.0_1608661403991_0.5268462700539132"},"_hasShrinkwrap":false},"2.34.3-next-1608661416-4b69d8a0.0":{"name":"@xdn/prefetch","version":"2.34.3-next-1608661416-4b69d8a0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.3-next-1608661416-4b69d8a0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.3-next-1608661416-4b69d8a0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M+w6WzbIrJm7XpscPJwTuK5n42E7waBq5BvhzfM69yjxlYWE2pmGFBXa5Wy65LURD6ozN8Nq+GOBWCkSmD6boA==","shasum":"a43f02f56a7c018f386de7d0756bd71fc26d6e6d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.3-next-1608661416-4b69d8a0.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4jpcCRA9TVsSAnZWagAAbqoP/31YS1HtF4dkrey3BaXA\nCdvRLq2oKeYjhetGWm40VLo6hrs2Znq/abeTFO70IgDU1YfC3ZYcXsyxqzoI\nBXXusRglfYYu3BWCMufEihqVRSswmFGlifat6Ln+/I0LG3Lt4fN6D0DDUG+a\nSZKs8z8/YHBkm8RhFu/LDcgxsA9Gp3e2ASAQuynfEX1yCeBDYplG++uZT5rI\nv4yyC7B1iuwVNnZAH7Idg56BMRuBKXPjco1nC4YzybBfcfoaDbhyCS9BAbdm\nZZ5GJbABeHaWdIE+xeT4MBL0wHUpiCraom3R+zeDUBfPs1h4nPbrJpSTFkdt\ng8qOVIzjsC4yYa+juFdd/4hfjcI8V0FFBZkZGEpdrI1hqzQTlLeZrSg9qvOI\nSE+0+Z624l2/YSKG9PKcWZsoYw1EWTw+7O9IcFRbVfk71smknZZfyMDZj0Do\n7Yyzqsdr3VC+9mCgbBK/k/Jj7ejckd1WqvZ7pF32PocXxepqGI07shll1BXv\nYOB8x0Eg3md2Rhwro6oUVEwdLpmq7TgeINoq+INB1qM7DTs3rykCOMmdEjbk\na+KqR+EUNgL5P5qipRTDYjJgg5lySRf0xGvC4qin54AVZlXR7hyHALRut2qx\nfCTef8l42EADlsnuBZ5zvMidrsmGCBeq+wkga7ns2WOaH3d+Hf0aqhr+w0by\nv7cC\r\n=NNI0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFZMFfmaMtgRWQacvidADJ9jwNSc59DIEauEDaToj/lTAiEAruv6nRswKRV+9Xn9x0Ob+MYHvsaBthBos72rcyyk2qU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.3-next-1608661416-4b69d8a0.0_1608661595560_0.9317394776444405"},"_hasShrinkwrap":false},"2.34.3-next-1608661567-22de7542.0":{"name":"@xdn/prefetch","version":"2.34.3-next-1608661567-22de7542.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.3-next-1608661567-22de7542.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.3-next-1608661567-22de7542.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nN2xctONurkYqkANNE/gWEHON1DKjkwHrMweStRpZTwKAflFIDOPzSTtgFpHhgPNyWoqU2/iXOAOfcgJQp4OUw==","shasum":"ed6c8f51762c4a4ac0100ba2889382e92d5cbc4c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.3-next-1608661567-22de7542.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4jrvCRA9TVsSAnZWagAAESYP/RMrVyRIhZi4+ZU7xylT\n/piKF2CdC1e7mYnGdUArHQssnfhFBoPb1LWDw3q+3yf+9xNYvHDwv2iAheR0\nJlPqcdleBb3jQ8WUb3/K3+GS6oo+3XsrYo6VTFX5Nd8CPMTyr8sYt8tMSqN2\nN2iGgrooklux5MRttxHGC6DrwnNcZrhn1YKBfRdOOrUiQBV/xXMTrHjOn7oj\nzm/IzCyjEo5j9D6t6uV8yDFN6nGZQZ88ofM5TyeLHkwA+BMl0rQKPDPKyqZG\nuL+adiMCIKgJy50GvcdBDrEnNZLuMwR4u8vOW9+irAQtf3MN+VwPMFzxMmyU\nOLXlwbhEBZIFvFN5EepOMihqh1WKYjTPWqkHtZ7IplWv4/aYHvGUh3o3roG5\nnWeGiz91ZASfRXrocHlJu0Xwx0QWTCc3Za8jsXFJczjQUi4mzdWx3RX/fr9R\n/tortxl394oF3ivAVmkOkC7JkHGOyENzJYrU4CbXXLDpa7LT1DpqbPOlrsKA\n4+i7ECnxJUV5X+WGXR1bcW7mGzxC3nXZpoQ6LMI4dRp02RH5va2kM8riv47J\nsyNFp86XCzbXfTcWpXzHnk/6TsR/tepLdXBQIrYAmxFwPepFStQTv2zJzzqP\nTTVM2e3TfC3pE8YBb8nLTaMxOWKTs69PhS5+iUAGie/gEviErQ0xSYAeGA/F\nAo1P\r\n=70zR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbq/urTiA1iLfldjkNuMkAlX6grcPf3cSbZz0bpCje7wIgR8bsrS1Sd6MoJCKFterp8FB4GXO2gwt3LnxgMZa7ld8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.3-next-1608661567-22de7542.0_1608661742696_0.23480582736503508"},"_hasShrinkwrap":false},"2.34.3-next-1608664432-25bdc688.0":{"name":"@xdn/prefetch","version":"2.34.3-next-1608664432-25bdc688.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.3-next-1608664432-25bdc688.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.3-next-1608664432-25bdc688.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TdE3e8DDzbb+DfhF/Fnoam94kncLA9MjbOsZ+AOFIrRQzTDyQEWU7DwkzbUAEWgyxiVSK8+g3tT0GvDv34eogA==","shasum":"9d73881f26d12c18a9291931ed617aed13afa52b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.3-next-1608664432-25bdc688.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4kYOCRA9TVsSAnZWagAA6RAP/2iaNX5gYbsHjX0TVAn2\ndDeeoNX4gbY5T+TMf4UUFp/W4lqaqF+edy615ZsdyUJkvYwZQAAgP0141+iZ\n4dHJCS0DIKYQ4br1zBEzrIeI43WrLfNrmH+cMMZxhj7sRSiUMXK/7WA228w2\nJTAherS3AtSdgchVRyVXIufH6boaH2WDQJdDf1ujFZQzL4XUPtgtPxHvn6Jm\n9KArlnTv1zvM7v8Y0bZAMUogOs68FONcXeLAWrEzGZSCXYTKkcjUaJu9GTGY\nXBnApZmsvvLsL2sV3E1taZFCCwWp/49X8GI8A09Zg1u5cS0xxxmHXf2HgTsF\nit0qWxE9/Wha7QD9EwcuLpUwrU2VyPpp/Vpov9fEnvdYqUlgToa1lH9vIdhE\nHZ7ivS+gB/wHgr75ck2byGYT2Dd3YZIDSqsOp6NHZHSBY89Q2sp8WofmuwuY\nCLN/FYYLtns6DVqzxm02wvGmesYAbedHvOHShf+cqf2MFD8l7Oaxc8QQOJG0\nWPiWvDV9kjz3y05rKhztHhtKl45Al0mJwvAYOBbmrURVCgpC7j9WRvcgBtAe\nSvd0vkzei6o15uNI9Z6obGug5SZme7TxZ3+Clm21vKceVGosmsFI+jt3+PNd\nDjnI+5yKhKb13zhqLUB8jUiN879QvfCoExJeUYQi4jRhfzsd1XIsCHVaQyHO\nWLC3\r\n=UF3U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB29wL/TUb2yU3qQoxEq419JY5rwImXsR2gXwAxOjw/wAiAp9HVCADj+ovYSBO0+cNEIWUZStYQHaOda1rkUH3EJBA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.3-next-1608664432-25bdc688.0_1608664589883_0.13424007495520862"},"_hasShrinkwrap":false},"2.34.3-next-1608664547-786beb6a.0":{"name":"@xdn/prefetch","version":"2.34.3-next-1608664547-786beb6a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.34.3-next-1608664547-786beb6a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.34.3-next-1608664547-786beb6a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NctTdbRUr0hKNyUokXc1RYHqbYL2Jqy/LsGmNisdPkyNi0ld2sb3PZmBS0jISZLOLNSF2+UxUoWahD6Ond9qMQ==","shasum":"9f112293ef5eb6294d987d48eccb3d1174ff3cbd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.34.3-next-1608664547-786beb6a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4kaMCRA9TVsSAnZWagAA4uEP/28VW6291t7V2mVZ05Gz\nPRUN1maW5r6stuBwSTLPIjQBdPZmI5fNL73cRPz7cX9UhTlNf/7V3OpiUNXF\nUUKxi2gle1U1Ifjf5y+S9deto822Y/K/3DIdcZWfGlsZbbuqL5d/KWF4icAL\nqmVK79uTEl8BCEvQNbrX83HnKN2EUe10spFJZneJxhciST+KTpdP0ZXVSiZ+\n766fFfxHpxJznDQGZHyhFrpbdVlYqNAOPQzBjYQMETRDFYtXWpnZQsF8h7IC\nMbnq2qCdYH0Harp3gNDjPqZYCZ+7iMUFxKla3jl/7ZdNrvzs5ULUq07r0Rnv\naQ1JkprGO1urLvw5M9mrqTiYSYiUuGitYcq2GlnNtTUMXRN4+yu2rrb8DOhY\nShrRTsBJFL7cVkYP6dotTYtfFWgw2hzIQkx9EuRI30JHyyXybO+79vwgOS5A\n/J6CMSbMRtGYElEyd1GPKWteBA+DUkeY2qspPL/UaLhHCBjw7dgjONLNuWFK\ndalRdZ/S7Yp3RNKYurBpZ13w2PYvtMrP8sNZmromOa8OKxb8X/eTzWqzABm1\nFWiUobSIPjMI3YJXAh8tdN4jU9M5Azo4h+ywiIf+JB90MuINRQVzub3zADZP\nVM/mh7XsM2SPhIhubOhlL93c7EfeKbN/daHs9mPTrqtSezAREi7cj914jltH\nHfx+\r\n=Ud4Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATPPRSJ8s9+a+AouKzEUl7faGI+MhB+q2GmzH0UHRfbAiAitC5aZExa9BMb5kepWqlT4zbwGVcTrPpLcIv/k5rjqw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.34.3-next-1608664547-786beb6a.0_1608664716144_0.056240718693998604"},"_hasShrinkwrap":false},"2.35.1-next-1608668211-5516a971.0":{"name":"@xdn/prefetch","version":"2.35.1-next-1608668211-5516a971.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1-next-1608668211-5516a971.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.1-next-1608668211-5516a971.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-a2T9IeNqT8R2d+ccNBhkQX2t2gwU6lue2wK4XjVpCWnsdG122rHG5vBzJqIYc1ITLHaFYv471HbeCSBDShnggg==","shasum":"f2efdd1914ee72e36e628be27f9b21333c00c59e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1-next-1608668211-5516a971.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4lTMCRA9TVsSAnZWagAAwyYP/RriTXF1r1G5V8TuueYQ\nmzqAdz9RvZeiWL6vRvMh7PTXSZFho7ciiy+dGBFzxUjauwEK80bNMdbCZhgN\noMDsvc4T7A/X1c9+GoIvmbhaFfWzsLE4NlRccPA4DhZ4Np8LUjp8r6KJep0K\n0yU8KjHxGLpwljUOy58YnBtKSnq9GoO81khEx7iRom5EkZTJEb75wqrxwzJf\nRKfcu4jlsNxsyhbQ17KsCXk0fq+v3Nax0J30EOKBTHngP4EyDMyQRghfke12\nseBuunrSYQW6/YfQddRJtATeyf19XkGHRbIE07gE0PzbLqB/FQHYxYsHtLZm\nEC8l/Y1bC2q4QwClMBFO+HTIRkSykJBeyKWDCNuPfchrgR6o2umjrw/6YcHb\nZAO9DZcfMriDHkMauXTHiSw2u/X8JYcH7ciHr/rUetMmz60yXfTgZ+wUoPTw\nGbwKSOyhePamkZe0RVpFKXnFLf3MNOr1mr085NdlnSD2W+7HsNqU0Q84NN//\nyV4FuLMl6V73CmnNwd+9nmadRz+YUjY9QXv3h3Jb2PZkHtMPjkWVAZDFfcY3\neJK7zqZ/AMOkuG1BqgpPt+w5Kiq6M75JYnLqBIinzzZ+bVN1H/1dncMzj1Zl\nqNYAxaJAuZjIhXItw7CejIeATBWpPI6NXxYKByODP6SFou4HewO0SMnQWi4W\ndior\r\n=pEir\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZrsp8hdOvwmD7yuneCKuoMmZhQ68LETM94rEUNWCr9AIhAK3otZ1FA1m8yon4e7iEpxNpYaeSfeRKYCcecw4XRVso"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1-next-1608668211-5516a971.0_1608668364237_0.7904686604071076"},"_hasShrinkwrap":false},"2.35.0":{"name":"@xdn/prefetch","version":"2.35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.35.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iNSxae6urrNWYhvfsqW/krAiQ5DPjhTNOmlEreIE43j3PBS/0kG8szfgO4Whjv4dqEO42mDOjIhXqWG7Wbeuog==","shasum":"4af030557506fe44612e2fa268bb15273c272faa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.0.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4lXqCRA9TVsSAnZWagAAss8P/2c2XAk0wS30Zx2Mvk1l\npZpefX0JvkIQk2Q31MOIubiZ+xaiFtoPv0NerR/kLKSwYBlvAwAup1wDQiIw\nO6wPMbC8dTvRrf0zWHjwQPb60h4cgdmdnw8yFpdH9bEE1+PXvG2t/DTWKRUl\ne2+KoFlSvkimlRjCnHHf69l1CX80nzuF4Q9P0dO0ECaNFBHO77JKrDH8Uo+f\ntBEJ2HtViuAW66nTv47Ug3I/YrFEwG0g15vdqLmGrFeUIm6a/FhyiDK8pVlm\nh/LWvEMaaNKS2leIvWtngGKmaX/zqpSeizqiLxF0I9pMyAlz0zXNmYQQo/DJ\ncs89bnMHprkJ5OMaj6ZqJQKZYRsTYxmS8IQunpBIhB4H4e/iEHIGyF4jLXr7\nilkqUEPjhDkIlEqdadRBqLjC2uR3QGE6/plA6eoPchOgTxF1wJoPF33z4XpV\nK3Ha+xd/nZ8DP7lK5azHpJMSiGuHsIzx1LP922psM2mlfagHDcHu43p87kAj\nR7kHLCo/+8pmglsbhIZ2gnd4Y6WalTJTJBvBRcNkB2OtXT8OFZle17Ppuyku\ngidtpZGbm2M6ONxReZqlorrzoJINOHsuVT3UxnB1n/KKgRmqYuHj0sX4pFGy\nkzOiJDE4NQqZpDykJvhQgU2/OjRWiTrAK1tFuljuESgGk0c5BMH02IpQic8H\n+KGz\r\n=/Nbz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDlxFaOwTtJKBmf+A0rRh1cTrUtHPPxlyeCEaorFb7LsAiBZzsY+Ceyb0rz8JOIPZ3poAgO9X6CBzn4OQkmdNOy1DA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.0_1608668649726_0.7654645439887091"},"_hasShrinkwrap":false},"2.35.1-next-1608713168-5de4c05c.0":{"name":"@xdn/prefetch","version":"2.35.1-next-1608713168-5de4c05c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1-next-1608713168-5de4c05c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.1-next-1608713168-5de4c05c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mdvwRAYKoM1mYGJUTKYc002JKpJOPG7OSI7cd8PFIij6IMUqn1UcMZdtgtC4r3LIEJJvSGVgGr/+EmUFudJQAQ==","shasum":"a4a333bc5a043d87261bfd6cc2be488b843f56cd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1-next-1608713168-5de4c05c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4wRlCRA9TVsSAnZWagAA6ukQAIbrxUOpjehQc2sfPZy5\nupXgArpcEL7Hgapaf1U6iv7gR0Fu+oARAFvAndQalca7jpjKtDTaC6w0Kp6i\na8lQ5TiIEW7Q7uuN4frqD/1qWO2pS522Nwp7AduMVRgoej+6D4S7cu08qCgh\nX/+BWL7K0DgzWKKD9qB68Xg2iJdWePO9VQ6RR+9RIilrVgNPgIMDXa6eZUIw\ntPFJq6sdf/IfIqy5npoOb6wnztPKgYccHanILmZ0fs+IZSyUGAbE3fLK5lnM\n45wyENBWU1Hu1BcFl0MQzldLr/GAi5rMDxG6iOwCyrLxH3WIUlX5QpZ5JhE7\nHHEmuLcaSwQ8wGb/OsO3c7RCXmFdUlIKZRaS4JMu7yyj5QZYJvFIb5hJpiaV\nmnOMYgCykB5rxNr0+N0+eoC4tBkXIlZhLobAbNoYCe3pJR7Iv8O7z+5xPnMH\n2Uta8xt5JFMH1efYLBfYE2LHnpsK8pOMrB1kFoqjGeaisJNdwZLuXOB6tPad\nAnjkTM3bn4AwhPAmnlfMAD92bLtg5vXF8JLYVqQySJ3Pfg9rmckiNsO6nLOE\noMK6e7W/yVgzcriGWhk821hyv34vwCuX9SsLKsdnc/aPvjAm/ZZlz3b0Go/2\n0a4kEB/RlePoRc6rAZnDfQpD+23p/6em1e2KBrpajtJWS8ZDJhR9G50euDVn\nVTpS\r\n=uygW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpr8hgTUdCx5DiiagseKMuzzPkEqckefBf5vUdvRmZ5wIgVleVOeeepW6V8Sls0x3ldaqfM1Zx+hS/MBlhzFvg3hs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1-next-1608713168-5de4c05c.0_1608713316874_0.8492483173352423"},"_hasShrinkwrap":false},"2.35.1-next-1608721052-c42cf456.0":{"name":"@xdn/prefetch","version":"2.35.1-next-1608721052-c42cf456.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1-next-1608721052-c42cf456.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.1-next-1608721052-c42cf456.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-a1iBKI48NBTzVfyHXOd5C7aqyJL9+UsZjUXKEafbMHyIPZ+qbtW/lnOISO/nInIDHQKE6uvEEz4L4Q+s+jjsUg==","shasum":"fcae59c96d4928e67f5928042cec1c758914ef4b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1-next-1608721052-c42cf456.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4yMwCRA9TVsSAnZWagAA9HIP/RHGInwf8FRDnWtNCBus\nerCt18J3BANWBr/yU2KZDoEaC03utdIRcZv5iJyFqa75UO8UrZa4LHtvi8JW\nu+sOSFj1VVfrDpg6W4U8IYUy0yvJMxlu45ixO2DW96HJk+joQ9ncBx6RawvL\nxFSwfdVL/A0QCCO7oLDUU0SJc6isooTsFThd27SWVLQKB3iLy1PitZR3dr8G\nsDc4IczJbyAaucZ+qFg3lyQukLWcPDImXWTBKCCxm3OB8vhpBDXZJe/rBjcU\napbRksN8afLXc01geJmsnLnhO1oY6jOGE2ZDiXk4HgXtE+8G7FqG5xEJKvaH\nEXM143lywv22cyCz71zPjw6kJcFn8H1evO1A9LOHqSHAhC4o17fDj8UDj4hb\nCSqQdUAo4HvHCW4Z/3Cj2c/9wRKrHwVa9bWVQGFc+tk+kL+C4YaknLCS1FFo\no4eo+TluspLE2opVX9vzKqtA2xx4Akj54OYUDVAKYKMuVgtFNb9U5mC3w81I\n8liyjzeONjjlwodyN2hzj2iHj3Iq1lwPpvafHkRRTpTxqiqubhGSNq9dA9db\nkICYc/mmawjQdWWS/g1YtwPzI3lMBviPP3b/1tUPt27yHbUV9MhBaFDapwkR\nsu4DER1rncphjSgtFesFlZXYVuzUuKHAxM3EMeXoW2AtGIE8pTrUZ/ObwzRL\nfqZ9\r\n=hzBD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWRD8IWm50LVx4kL4bDVxrFa9Y5u7JkGdBrA0NetnCUAIhAMlrqACruwdoMfP96M7Zbx1X0HIaIRsTlv4WtUznqjHR"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1-next-1608721052-c42cf456.0_1608721200112_0.02293849587069663"},"_hasShrinkwrap":false},"2.35.1-next-1608721086-64201d55.0":{"name":"@xdn/prefetch","version":"2.35.1-next-1608721086-64201d55.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1-next-1608721086-64201d55.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.1-next-1608721086-64201d55.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iShMbg9MuyJpfzQit20WwRwgbkz1FgOm7afi2NxYAyH6ibz2jVdDzaEWIMrqEBSbUfxnurB/+qN3urYzCeqXdQ==","shasum":"8ccffae963869c32fb2c2b0d4792f0aa5524dbea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1-next-1608721086-64201d55.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4yNyCRA9TVsSAnZWagAAd9gP/0FSotEq4zqcivvWxKMe\nXnKNvlGuk+WEcXas5KfsZETUpbAFkdesjepwhHWy2cpsd1aA/7e3KV7Wc+tn\naRgyyW9nkvBQajGDUgdHbTC7nco6RZTb4dSZy1HVqcd4OlIhrJ2CBS3Mexil\nANoou4BeOyVMEUMhO00UqnZkL/gVXhwl/qn8yco5CqSy/gUZmFTyzp7GguTI\nRW0Cqju86J2cuCwB3totvCNMTAzjiSDeL83w35DFAU0NLHPnnAtEYtYwvgpl\ndHxg4GwC3hVTVvD9C03h4cqrJip36roJnPDZ9qQ++H3LW8wo/vHhphDmM8hW\n3t+bxLj1wN3/8kZgrSTT0tR3uGIgKNNFKHHFxTueIZ+POgjGUHOc6VZCVeNY\nrrhEu/szvTcZ98TNRDfCgFP39vssmCrQTLOLSaDk/+Wxet9qGG5Tn49YmmMn\nj7AtcqFnkkYFrWpTJ9GW+emcUsKy0WSv/2kDzWFbwHSX9r1cwMYS4mK3Ucxt\nC1RCy0aPlwnd9Egk2saN8WbAmTArysrax1F2t4sMarNZ7ZTZinn1bjPl9Y1Q\nOnt3acrePH9jfShOMBR5GQhJqU7PuF2nK9o+aXU8YF8dmRuE4xL/N6fCN0WD\niJqctM7lbeSHQ64LeSjUwQg1YbPsTbOko+THDH3tG6Cd6lOFY0gjvYOJJiaw\nKF4N\r\n=WqtI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6U16KLvIOoCK1JLNtTE9BfWq6nQBknpL0t69SO7hWYwIgb/zy168gJRSl4b7oLcML5XtJq+3+PANEfi43Zfrw/KU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1-next-1608721086-64201d55.0_1608721265932_0.7421382617555434"},"_hasShrinkwrap":false},"2.35.1-next-1608722547-b43f53c6.0":{"name":"@xdn/prefetch","version":"2.35.1-next-1608722547-b43f53c6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1-next-1608722547-b43f53c6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.1-next-1608722547-b43f53c6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zLll7EqpmUFWpBCjojjXas+3zTlj/bpOmWFIgO7s2+Dx+OMLxh8wD0XN9B5ocOg+ffYrFxp7s9KrVTVu3hjJAg==","shasum":"f3d22fb2d804cd56a4db634127093647ac8ca00f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1-next-1608722547-b43f53c6.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4ykVCRA9TVsSAnZWagAANKgP/A1WfG31eebNMm4cvTKt\nnqOjEhjBx46/ivPLASejpUjYXLSRmKN3u9qB65Pqu+xbLlE0g6vPTlrBqykc\nIinV0IzDjW0gD37OK85ekZZSuZw3w64e8GTOXPr1EwYL8w0PoFwMSK59x5eW\nHZPlQjyLDqUn+s4DkA/ySrJnxJuzwEm5E8Gkvktj75zft5GksS9Oz5dfaJBm\nq/gS3aebTtkbkcniY+azaDl6au7C8KY3Eh1C1XS8nMmzeUOsPRhvStef4CbJ\n6HgctmZuSowyINetjWwhbD+eGGotubLPX7RU7Y1S6L2aDNi8TVCAT+CrWxhs\ns84jyrk3vSqUNQtFCalBPPrmUrd0SDZXsE8v0wvEfRG5j1G6JkXXcYQYhh/r\nlTT3jL1P5kKfJhQtDPiQLlcFnye6VB4Ce5QYJsD09ZVHk3QyOy2HKZ3QGLzm\n8+wfF8AN7InyyiBkzSLmj+4VKCezQxuYEy9SgE9EVpkZTcNjLLN3I+P3J8U2\nSp2zlsZTUr3KOYnhNEUyP6CtQzVGQ07b04ICvENLdBRm0olxSaue+uJcq3SC\nq2ZHnhd4BcJ1A89CXzo6ibIddAIPRMz83FLL/WdvuFJoQmBv6QRri3+5F6rw\nrJQUy/BBMaq/qaiwLiCJDAdBaA3tHHfAivMdxSbB+dd2eUSVN0fOGtC57fVX\nhr06\r\n=iEiQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdLrQVp5QxMDrnkARxJXz+2lORyPVkf6itosl2zGcSAQIgFwtGVNxTDtd8gEWsCf9Z64r5ZL/xnGnfR4kA2Rcv5V8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1-next-1608722547-b43f53c6.0_1608722709110_0.7137399587328745"},"_hasShrinkwrap":false},"2.35.1-next-1608731993-cd4a9f2d.0":{"name":"@xdn/prefetch","version":"2.35.1-next-1608731993-cd4a9f2d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1-next-1608731993-cd4a9f2d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.1-next-1608731993-cd4a9f2d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fI/HZcKjOXp9JnUfuxTKQtU44cBdAaTILQ6iDXI7QC2GTuB+4ILa/Dis9w3CweyEcl5hRYLe5L3QmKCMBU+9JQ==","shasum":"24a10a97b7edc5e7e2eb983104c1c161daf254f0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1-next-1608731993-cd4a9f2d.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4039CRA9TVsSAnZWagAAqQwP/R+8hDrlxUZ/oLx+aC7t\nuYr2KDgSz16mbzmiGNTxQiaT+rCbsVCxEf361nj5zWZC3e2LGPDl80IF7Bxa\nEfF3pPH/rJp3QNwap5xb4QCkH17r/xoqTHQkFBcAsLx7erse3cB4tKDyufcj\nRKxQciKZdESFjw/sk6y/yL8oNPjycw4RUx6GCbUvtpifhUhr3G+lO2z3aPDd\nbq60VUNb7eZB35nW97vcNhHBiLkHM8rFcQXL1gurpFuL5yz+fCn64iXRwi0k\neQrBbOdqy5ryDBi+c9BCNI0ekKPaWqMocFSE3hov58F/Jj6/vpkfe3Kmm6/0\nyU8rHVsw3AMKintIRMZHQuiPJO/NMgHTQnV1cH7Iluh0cBgjJTBvk/6DAQoI\nXpl9n+dEHJ1OvP7lZRgvTdYISSaSC2R5A7ypgjM4pHv/YTP6/JGEhY2Loru8\nxXx2GVrOheaFu2WQrAX0QTB/mtaGLBvfSBAR9gpEN2ahlg3kmEIzFhMSba7/\nSTS6wlcVAU08KozNZ1AO/2pUc8BKQxgmvwrLzoHFHoaQ39JynEoFyB+WavEv\ninELv2wWLjn9DKx7hmFM70K4Xuq8ake6feEffKlCxp5xa62kaNXN1v6Biqmv\nnODS2bzvlDRacEC3sFMVDwOUluRt8IpudyCGRYMsicx/TtnN3rKRRcc6Lthr\nFBPe\r\n=YrQG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2KMPK+MFPKo070HhUo3s2dh3MI88ThKGE9Qx9HoDjWAiEAgbknjY20xueVmGkL3jcSd7fgqX3Thqmh7Xwu3hDDEMM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1-next-1608731993-cd4a9f2d.0_1608732156846_0.002614701284266996"},"_hasShrinkwrap":false},"2.35.1-next-1608732307-51481f4e.0":{"name":"@xdn/prefetch","version":"2.35.1-next-1608732307-51481f4e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1-next-1608732307-51481f4e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.1-next-1608732307-51481f4e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CJhDrCguQiCn/kJTJfawVafDzf1nApIxSQlrtRuc0Pv1Gt5c11OuvXt1DXaLtRKGX3vtpBrRKv5BuVvc/K9Gug==","shasum":"f0c1c1ed2b62b68fcb45acb990147be24e7a59c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1-next-1608732307-51481f4e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf408zCRA9TVsSAnZWagAA96IP/0f82FjmKYQLfrqTAP2m\nwx8gLpepKODeOWloBHmoMTwz8ORoeG2u2yvMrPuhwdM3BgqRACjdFTFSpCHC\nxJVvywUFzEcZI+rjKHouWX3DE8ua1ECmY3GQL7rw2IL9zq3GTzyh8g00rMqF\nkLdunhbzlp71zM9DTQ+cZxpDlnwX2VgnH4XovOAXfShuDdCYUorvJafJ+dhF\nzEZAzr4+RgQF2jmr82IZ05UyrjNljbJAwXKIBzp6gjFQ42GBouQOK0AewLTN\nTdSFB+6MZ/Nn4BCCEJMpnTlXMvsXpkw7csaN1wHsP6Uh8Gxf+k+yvfZFGVNU\nL4BNA5NcLiJCzmDSyBC++TXpDT0FTGtAZoMYEtMVFpQNi3wrQYRLO632pgJD\nzYreM5AE7HD5Y8HV81LTbcs9F0ws2DTX2bbe5+1wI5/ADgXzeOiWciu+nKiY\nPiCVXzj6JMb6MiwHexaslUKiewgURqjbIp8S+DpDhI01H7kbwSXBszsHRTBM\nqM0dCwWKm7Knd2a2yNKt0Z82FudJYV/QQ7sE3w++JLMj9BJFCusPgnHEvVJ9\nwIhzRSyQco02ETcqmIj4m8MMaDgTMXAXeV009ncY/3Cj/srHDMVFNXcYU+Mc\nmDWpQvrIMO7wJQ2ko9e4coQe4K61Tixu67c2sG45YTjr98iA5vhL9lp6vYhb\nf06n\r\n=dZ0V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAyJ6hTTeOs3j/6VDOIyRFnA+cQzugNnq1yTHTI3VPdwIhANbCxxm51j4Z23kVS5Mcaxzi2WU5QVBIebT2I/ufM+AD"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1-next-1608732307-51481f4e.0_1608732467323_0.48820888371834514"},"_hasShrinkwrap":false},"2.35.1-next-1608735581-3412b538.0":{"name":"@xdn/prefetch","version":"2.35.1-next-1608735581-3412b538.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1-next-1608735581-3412b538.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.1-next-1608735581-3412b538.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-S2EHQ8z5QTqrn6qMJQotumMLq4QIS42Kbdi7ewHdZEGfQeVVKtdWiZ7iFsasQVNGJ+fM8SohztJN08dDCyUtNA==","shasum":"96b9ac554d6c216455eb29c0bf164786997252b2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1-next-1608735581-3412b538.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf41wXCRA9TVsSAnZWagAA2sEP+wXkwGItWp04Ey3Rkz5L\nmtc92ZQWCQ1K2hvkd5H6vJtCsk59YfJ+q0HZrDA6l0oOSUUjxMInlYA4DQ8D\nZKwwimsrU61Lk3soXwXybwlb3d55THPUVktZ0UKXK6ltjB6QQdUb2brTf9uz\nBMyPyw7B9KjiYcOjPofCO/Zrl7yjwQm6Toawcy+qfi5tTMAn2xFhKiOYshXx\nyZ2lkex+PfuzXmLVS6TgRZ9tRq6aOfJyCIqY/OwRuh+PWybL1G4TdLir/WBM\njg0DjklAITOUZb2D75g1KQOWqAXhbdibuhVySOseA+/bEWCjX1Nm0K6GPcLU\nQIGTOMRDRIJW4DrOnCxI/tOLXF3VmU2vLA7IPhLU+Mu9jgFpD2ODq7UwdCNC\n8wEtlkHDoeFKhMV3S8u3lnzS8h7TA+y7XKvcs10rTP/B0oUU4O9SUGqytMZi\nXImwF5XGpiXAJeXawMW7sDSuKWekGdGw/q3+ROcd+TnTrquwdo9/LwzB9klL\n3QXAGI/CTppaMX8jC6X0IH3bT7gquzuqh0W/qVy0oQ6YxVomIzOmMhkPS+bQ\nRZsikPrfdv7Ybq5iMB60P8lbVVY9YLRpe5ioOMugIP9b5AK+FN7Bsf6zmqg4\nQXlWu0NqvkiuVW8QDAlbord21ELSkKtMfo4bmoNFrTbERcNUpcW9sPxkbr3/\nv00p\r\n=1CBy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGO83hxVWXkZq2KN2W76klTvd6qAf7wYxd2OU+BttYbvAiBw+ZXgNeIpfs7FAJBDd10Uo8S2TSwQ4E7/xvsaJ7k7rA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1-next-1608735581-3412b538.0_1608735766808_0.41290447616588954"},"_hasShrinkwrap":false},"2.35.1-next-1608736187-23834867.0":{"name":"@xdn/prefetch","version":"2.35.1-next-1608736187-23834867.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1-next-1608736187-23834867.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.1-next-1608736187-23834867.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vjMrvgk8BOW3vCR2VXRT7K5Q3uO/NZUf/xVgdPKPfcmerPjuxuiGqJI9Howa+/dO63ecCI3xokN/kVFlYkgvOQ==","shasum":"ae2e9beb3800658a996542e40b830d12dd4f906a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1-next-1608736187-23834867.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf415kCRA9TVsSAnZWagAA7rsP/1uEJRulLBWBHE05UGtS\nzzcWznZiRmRv9p8fA2zgDIFwlfykX6+7r6xwP0WKZm0CcEp7VkeutDMG0Hyb\nxaXKhQA7U4pruLb/82JBTynD43m/uNbyTOxACKtK+GO3ScZIVHY7vw59QC+T\n4Wl5A0VKxSFXyG9urWZuIP9SIUK0brWd65JgGITRbJ4bXp0TwnlYs+eQSlxu\neyGH7CR3xzGc+OXuKvVieEbkYYyyFoelXn/+KFnRTfiknFxCAShIHBC9CJfQ\nacXMobvqvbIaaiNGr43S1NZh16gIbYeADzpoIQ3uVa6QQ1uzSBQvZ4d8zx2h\nz+nZq2sV5+9Ee5ruuDoAnGofeNfYgXab1d6Zw2Devhq0T/P6xhK4iCzCPw/r\nYtNsHHG3EOYkNRONikrFQp3+GrAbx4dWzwzHEKswv7svqN0jcu89qO+VfYIX\nX6RyjzEQnRJL/xGz/OkBq8H94tIrqdjlTHvPMc94xKWJtPAwtEXD6I3KBshn\nwbM26/x53Ltevf0dRjZIDrxRiw1NRF2iPM6nS06I5VLH+75jIGIkFORpvyUV\nX1pcuWdFMncGVODebk4pbpZzkNreNRRp2v2MxcizIKFNySwYA4iryGskG9kU\nh5qWlJXj4lAudLgrdBLPp+s+9RjNQSdBMo4PjjY6pSKgtliqlgNiM/EhdFVx\nTD/N\r\n=oDAP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDt8XfnQyt8KiPXO5rWNKPidCZ0Yld9lMcg5Pi6iw3zNAiA1o0L1NNuC9Ty9JK4L1FKSoLQj9FH3hF6zhCbVSQvwWw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1-next-1608736187-23834867.0_1608736356024_0.17857160378255443"},"_hasShrinkwrap":false},"2.35.2-next-1608736652-721b7046.0":{"name":"@xdn/prefetch","version":"2.35.2-next-1608736652-721b7046.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.2-next-1608736652-721b7046.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.2-next-1608736652-721b7046.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5XkkXkf8kU1hqpJ7WGuEa7O24Cp3kRZEETw3rhbOSzud41RqZcj5RGm5kcUaek0EvdDmGvJvitiwnyOxDVzIJw==","shasum":"8dc30facec5c3c3403f69d71bed65cbc55f83c32","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.2-next-1608736652-721b7046.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf42AYCRA9TVsSAnZWagAAXRsQAJQqz22xvhdqHDo2YDCD\niT7mkiXVG/Kge2VnuCg5lwX8+JdXF/pc/X0jx/W3LN7iSBYBdetZtzRS8dUg\nh7quh9sSt00WK4aooYgU1iDn37g6DBZVaKcsqhnjyZHGBNeaxK0lwCu1/Z+w\nQ7swExtimQ/5ZvmWVqAaMoD+rcqynZaFntY3RrdgiMqkAT8Gx38xOBf5EAAq\n05Jl7gfdv7UdCG1awBguYVXwgclxZRHpcDaqciXghcN2Z01qaECaEsY3gVND\ni3AQRk0JUNGxm7YWDgtwqyxJSCWs7YYvAqqiHIVcqMiccPtGrw9MWVMG3qXp\nmr8bBfP6J80yKPaRBFjHM4wK7qhifJvYP1jHlg1x7vCgDJmac3MocpXRc0X2\n/QxryMAlsVy+Quix0+XetVasNtZabI7VwBwBEuNxSGm+axbsiAfy35hITeiM\ndv1H3xHNK746Cx5k/q+6kZm7x2wr9RqIDS2IJxh3zD7n9Gb4vwQhtgdHQYlj\nyJ/HwXEw/wNmOZmm5bgHBPtIRghbuAL9kHfh029XSZ2RD/zqfMdIrAK2IeY3\ngH7XLHMBNIAa5F4CNHtGh6AgtZ6ImkG3Q4pkdFLPhw7ApyVxCNd0/gXYQXu3\nZNOWXxhuPym9LcZqdilGbg80SAbKwTZISIFhy3ssUglpnWWlkHa7Pyll7XI9\nguMb\r\n=KTOS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiux+jtvZ8uysKUedd5UhRe11vq5hYaAbkYwNwN2JgaQIgLrWh71om0LvdcGS17DJEoeYOCCQg5uS0NKXMquVYLaU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.2-next-1608736652-721b7046.0_1608736791859_0.8339820180216961"},"_hasShrinkwrap":false},"2.35.1":{"name":"@xdn/prefetch","version":"2.35.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.35.1","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tUbmXj8Xk5GTT0AUM5vCGU5gVpxz0ZbRwnd60gSaVFFD7T/kEjzCcud5U1VdM9v66hPR3/688Z5zA+mT98W4xg==","shasum":"af401575b120de71c268efbe46acc89cc4cc7c5a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.1.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf42dFCRA9TVsSAnZWagAASuoQAILY6sDRyoW9odXU4Y8U\nWhUPXbgKup+qvpJkwiphNANVu1gRsgDrjJD+6wKK1F/4Q2MRGso/DiYCsLV/\nZiA19/0FkhdjApp17pNwN9CH0BUmNueq0rp5sdpAGxN++9uekOEJ2L5qxN4k\nfwStdhxEMgQXy32K4zk4nvEY7ZhOs9NUKX+t/mODnsp1GQbNUpiv6L+I3j0j\neTK0Lae1wGRgvRetFgNKpX0iFqbG2F/JWTe7sjoqoPenyYRRlBcO4wiLIoOz\nIx2W5F/g/agdDIwoh/zDPb/+Fm3/iVZ/8jODZFk95UeufNjWTMPTZS8shtr2\njXwcrH849678NbSK8Yb679K77d12ZYpeqwBl6DQezMfX5KnkIcXCMePkZZ2S\nlIz+9C91AQpWDYPY7YsDUI+5at3oR7LH0hmkyN4PY5PF4mqUfz2qWkFKWQQ3\nztp/ZF4fnUUarrBlQGPZe7PPWhWLDyQZVEVLg6QUU0umshxeWGhOjBe0NTwz\n28LIPgT0sPoyXajfW95gfbROGikV/nFzrQzrVgLZBxJxFir3SFabiTVU8t7X\nD6C+ZCMvigVAaIGCywNYsLfb74eI5taE0GNXn1XGGz8o+yGuckBDQn9aOVfR\nZrZthu/saG2S7c9Bkp9tXfuD1SrDwUdyMZ4dAbf57aP1zCTOaXVzzr2uGuki\n7WXB\r\n=th+h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCULGvpAPxgwlBhyWv6riVsMtPdGnkP5Ja1doDNeXEwJAIhAIus5iezkVeeGIL6WyZb6ITWs5c+vwRFpEerhhada3RQ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.1_1608738628503_0.6184123848245533"},"_hasShrinkwrap":false},"2.35.2-next-1608752410-87b4c6b1.0":{"name":"@xdn/prefetch","version":"2.35.2-next-1608752410-87b4c6b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.2-next-1608752410-87b4c6b1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.2-next-1608752410-87b4c6b1.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1bB0bjhZ2fsGp8Nv0429wpPKOPv4zd5I3DZHZnCahgub2Iv0Ms5ztqX6xKIMPYmvWhoe38g+YoBOb3wxPRfZPA==","shasum":"53c430895184e9ae610382ce68f8b1c5fd150957","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.2-next-1608752410-87b4c6b1.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4523CRA9TVsSAnZWagAAnjkQAJYEgsJlv4dXjimXpaM7\nUeSyAs3j1CwjZOAhlItedZBUXY3j4VLcVmKTZExfHZyXO6pwgY47frjKFx/0\nXci50qJrEytMWwuZ5WdbNkFf8g+rkITrR9RnGcald6YKImrhOM7jya94aC8j\nmME2+5bllM6WBQdIn6hw8b5Nz9Z/cJhcOe4Nkstl1TMcV75ZKXwGv9LrGMld\n2OaHO4a0qZHyflvTKgjMGv4Cm+F7Xj+48k5k02YA2B6SwyEQ45gKgM/EBrkO\njlWEyp7jLWNbsLuPl2mc7KSISARPlyk1/bm+FuJfTdSMKn5thnPx3ub0AIbS\nQc8yL9LimiVbU4gvxXM30m1WrkEasvGo/H28nOhQcaV/I9LSBWrgghXMl3kQ\nSmTl4egY1kWToN2B0sSSNmkFaye5oSqJN2mz0jR5fpqprkvsS6EVvtEJANrV\nxQQZaEcVr8AtxhDVy3YJ4V+vWUOwd6FOK07wL5wzD1lgpN59GD+dtRbHY0Cm\nuwYxr2j9hX5I4s8b2FaekRTE6rvAsm2N1BCLWWK4dVgA9z2Nj0Z4YjhYRYia\nn3ZHcat5YEkaf1alUXLgtwP1IrbMD8TYrjuuoCFE7YqXwQV7C8uStDG8UK24\nqES/Rs1EQworS7HXSK4ApE8jy+kIzCQtkI2NsYM9CoV8GrbIivrBbempv16/\nYBj/\r\n=giLm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBYBSJi5V12wDfJAUoUT82XQ4/1mA2Unn0lMLloGtMBeAiAt6ZymhIyKjWt17VWv0yxD9qRrVTgQk2hDIJgq5SFjrw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.2-next-1608752410-87b4c6b1.0_1608752567448_0.24732021541773386"},"_hasShrinkwrap":false},"2.35.2-next-1608753253-a5a49b6c.0":{"name":"@xdn/prefetch","version":"2.35.2-next-1608753253-a5a49b6c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.2-next-1608753253-a5a49b6c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.2-next-1608753253-a5a49b6c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FwQnLxWCmwAI4mdVrN6VU+3NtAR/Y24H/b7Gue5Xn0zU7MJfW7pBRHw10OgZQEX53AQNpt5XSl80qwUkKkjbNQ==","shasum":"beb3f56c4c44682d148fbe2854c9aa3690d06a93","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.2-next-1608753253-a5a49b6c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf46D0CRA9TVsSAnZWagAAK5sP/jg8zR6B1Dc18/YzKYNW\nRS9jwSAvWfAe/likmYz+QLDDDNC9pXXwMgxP5xhWehgJDUEloa3hrMUnzv58\nStMuQMyfAYzY/vDqyoE9raRoQgENIlVXGVLrBvkA9Fc09emD/mMnx4DNGbJe\nHmJ7HUadGzeouWxFMpMTuAOGUjtALLWQ8ZomHvPslCUCSfooWLXrgImJEHb+\nOZEl5WVLoFbG4PWxvsqc8yBelVZilR3dW3HGMDJapnCVJ0Bv2V0h7Fx+IPBV\nDcSACFTc8QU/XEMWdXAGNni4DipsNX2bOwB29JuXpPbBH0M0NJSq39SGhGtQ\nmsBfLMo3b+hcQlKZ7C5wP2nGPnVz4UK3z4GLnSXrAm4h/QRd0tqFDbJ1MFQN\nLe2tA1AK/kGD4qf1clS8TcMtpajZGU+VDYHEenEa+T4Phu7wJEUgcsoalyul\nwfHgRPPoLCUF1LjL0idhfUeLBOPM5fL/dFzYrKtn69aFN7SSEOdb0K8noW1e\nT5rxxMSKlN0RwT8e/QWaJja/zOzPkDrMu/MFm92HRxG+FnrTsGADYEUtipG8\nrjIk9u41b8Lq8QwsDQvagdvy5YuZDKP+uuTLkqtrSJfpkB55Cq4nX89+h8Dq\nx0JjdDeBiGwA9xNyndIlm4EKIG6OEp1jJNz0THlS0BXeKB1Af3hK8+CT2SGf\nDcxx\r\n=o1CW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGDr3SILz47OtIx+7IJdoxTh92MiOyl6M2qCmrsj6YiwIhAJr0aX+hxk4qhS+2QYOmZ+/Qlb87b4rtISZF1SFxnE2E"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.2-next-1608753253-a5a49b6c.0_1608753396138_0.3651759136084385"},"_hasShrinkwrap":false},"2.35.3-next-1608775333-cbef40b0.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1608775333-cbef40b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1608775333-cbef40b0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1608775333-cbef40b0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bhaU0muob9ITZ66IXi0agpvgEC8A5ARH8s0W6C+nZ35qBm0mv3egBJcrVrcxhE/GsKXPSkJK5wajBG/ilBp3Zg==","shasum":"d29965ba7f9eb6cb927a45fd073f6f22d7d2b3d7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1608775333-cbef40b0.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4/dACRA9TVsSAnZWagAAmaEP/2JBCxx75QBwt0Mptd6H\nZ4rI8zVe2dC6nGX+aFdfqmDS1RD1YvQ4ze1yermdm4+nB3aS5xtkXp1RWdqt\nefaDo7QDAvOePyXHWHGKDthPP3WP77VPNP27d2DDh/aifufBjSWdEnxNu86c\n8kI8s9Dzyq8vyczln3gH2ihtkmQbhtPv6GTNgNQyWvdv/XUXGbn91gxKNoe8\nGMgQMBNVflN8LUdr6oapAWuKnN+SjOSCqowCM3heAxLH+g3quRRdx3rYXL86\n10l3YFJYLIIiYi3iShlPm1rxMH4wj8GjTKcWmkUQT1jqhINivph+eJiEFh9H\nzJqzvp6FvT/4O8KAuoOe/vW2mMBB1UAy7RNIZedqoq+pntzda8Cdaj6K+KGZ\narTpqFCPMVyxwEHK3g/dTutVOoWNf+Nkn3OwSFuaC5mbQh/nwcs7eTLfXhss\nHMmTLbnNWZYea6vOwb6AKl7lZeblCouyd46QpH9OPqP/JBleHsScKmP82AB6\nV5i29CEyM9hibY1KBrEXWsqZgyJJqO76ImqaLfXaqmReW6pL1ShWtESpYRN3\nb0ujkI5JRNFfINRhchF8iIPP4w7VLtucobGnfbfNXqFCFRDZSiBu5/+06jop\nqYhvBK1ZlDlZlNG/6b3hG7tQcRrc3I/2C1eSIFX1o9YaUOQXbbIEo5DT+180\nCfVP\r\n=IT5C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFDn1WMwvLUACz1cVrFMXI1tFZidkmveqaPg23CZ56A0AiEAqRjsvcTpDudELKNFPh7SLNbNI4StKX2HDs5NrjjsNhM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1608775333-cbef40b0.0_1608775488228_0.2757435254317566"},"_hasShrinkwrap":false},"2.35.3-next-1608777077-cbef40b0.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1608777077-cbef40b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1608777077-cbef40b0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1608777077-cbef40b0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tNcX+NMez/hKz5SBigjTBwYKceNtxN0E2PGK6HGMzZIMqN8kf3hQX8rT+wAPlbrGT5nCWDyC9NPr+Kg/dwD2bw==","shasum":"25a20a2d01e6cb0bcaf3293fbff8bc54cf34c89e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1608777077-cbef40b0.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4/4RCRA9TVsSAnZWagAAKZkP/jJiZ0c2B0E3n9Ay2zGq\nXlmRy1oCk++nBRNZxICnAZzAOF3w9RaVF6emPSoWdYMdDPgjXCczDpEQJLdL\njfW5QVXSIdLdZUvZZI7cCcvr5//Dgg83fkUp4zOPOzXxUJgfkTbBlbVZWn7X\nGGLweHaxdf7uBypB2HxxtC7eFeNmN9Hbh5vH/AfYHcF6hYys0t3zhAczjq9j\nrho5OpZvVZk5SUPF8vWJU+4QrJ4WdFoQZ7E6moorzsb1zZpkD9V+FiJmRBXu\nWX65rndF21BXzH/qKmUthILdyeal6vq2K1fru/bOHVeZ/uWLczmit4t54rj4\n1EM6r9T0ochcSpXIasCBfRSk3jdUDLox1mgtLnF8zWxUzDY1cQlfXVlx8b4g\nYF6njLOmZORY6acUifQ/QhT5bOCylPQBfP/jiufZgQeuI0/gLo0r51OCtY+j\nkMe6lBEuABte9ieKMxT6UnMirJ2UC0BfsroNX+5YVAWo40Vmdq4tZjCVmGNz\nT0seagWZ12kVGz6Nm4D6MfmYT0Bwrj3otR7lSbxp7Jd7Swk42MkVKhDjcw93\nCK4ys9sQouKuiEdrLQNwlDEjRh/ToPf/rGNCC2gBEgpwTyhwOaK9qIsdEQpE\nsU3caLmDZcuwugFmp5HyxVh4UZ7c6HF1IUoaMBQYXLEWflR/qkpjNt4Pcgcg\nEiz1\r\n=VsIo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGT4RuW2wVBLPbvLN4e1EQ1PI26zoWCOO4O+YSGpTNdOAiEA/srGmmZVVYlERQnqdMbca8zl/a4GjLdYsbDoqAjlb1U="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1608777077-cbef40b0.0_1608777232668_0.37936067973066656"},"_hasShrinkwrap":false},"2.35.2":{"name":"@xdn/prefetch","version":"2.35.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.35.2","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uEF7stICS5+lqzm2t2Sr6U4l6bK94t7ciRk0VxnAuFqlaszuDcgNt4XYc61rmM37CH7AabhETKsEv5E1zY53tw==","shasum":"f44494a38d6e7a1748a749a4dfc0505dbbaa7752","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.2.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5AN+CRA9TVsSAnZWagAA2qcP/jxU9jehPZjDQ6fnJplO\nWes3emlrHZTJiQD8Mon4PAB0q5Kn/Ii9K7+GgBVCacf0S8n7xpT62eCEizRy\n+LOi6+sJagdKRR6fzmKw/KS69KLjZRaPul9F274NFsTbGxvEtMVGpI5S3hCY\nPgafpgc9ciRklCfmE0sLUBWh55ttmbm6gNoVaIq33z2Ik/7FwRC1ElI+ep7u\naAwoW7ABr/s1owCR7x4EekUyvJj2BDKHNfqXa28t7I9JoevWWxha2nieGehL\n6xIMrVZBF7z+YWwYqJKH+OmcZouYJ5SaD0C0LJSZb19sx8kp99vMFPzKhHFU\npA4VwVm+43tUgLWTIuhArt275M43TIfbkhDp1/pMHRgg04fl7R7jtHTBlcce\ntejmCdoBulcYhWmDlbHP67SH48GzqacKa8XRtqbKh9AH08mMeG9mEXNc5VZu\nV0QVZJXoCsBFje6KN7Xp4YSUl68Y0P3LXHVxcBMBNjrYJzND3gD+ACnkgSQq\n1IdKTSmu/O6RnfzA8+5rk4kyXw8ttVn9K9A6Rp7J2J2uDApPH9790A275xUR\nEVFFTAmS5CDKK5O7XFaan2/jZPd6kSwGCPGBgG+dv0boCX09icHCYbhOFxOA\nwDiShx991Wj47yxzkRqt7g0T3Myb/tvvfrUL2/MLwd0p2KLFU+3ui/psV/z1\nNZAY\r\n=jaVs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDkN7leiOs/dagp1adpUV4o3fF0ZsGcr/cBD3tpOqP7qAiEA0OUgpwuOnXXfMMBQpgVS5fblaszN3PMD/4nZgHV7PY4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.2_1608778621724_0.7847912153530587"},"_hasShrinkwrap":false},"2.35.3-next-1609168353-5d1a8c8b.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1609168353-5d1a8c8b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1609168353-5d1a8c8b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1609168353-5d1a8c8b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KYWZXcjQJboEzRQdhC+X8Q6btRFl7JHbt7y66dxVwDQr3fcjbOaNA3qiZeWzU29Xa9k6gconnZVl0TzJmKD1+Q==","shasum":"cff375b91f9b0fe3edd1dcec75e065f6d3122eeb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1609168353-5d1a8c8b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6faSCRA9TVsSAnZWagAAGnAP/2JbhI5CcDdafs5rbxwS\n3HA/cMaUUEk9k6Znn65McWTOaFbnw+6K7h2yb6PVEOy0XvYRlqsArPvRl6Ok\nXvVzCZds8Pe8Cs6ysJfCS4/R5vkYTXbGjXmpqsVKiYb5VnIPqCd/PFoXxE1q\nIk28zdGtxzO8xklOl63dX+i+7iz2a2FuYUXkaVEL7TP8wZbkuWQ3JnHMYhJe\nw4cYTTDX/SxLgUqj+JwLSbziDqO6wpSuOy7fgJWJbsHGqMN5s4FeauMOYC/P\n2OfdnIkWv8HtopCicokIbs+FwFlL9nd/QIQSq8w+3dFGaoojl/bApvkjq6Iv\nPpOKEFedWnyxXQuUnTSKtdt9TJP29+8tw281oY8lJMBKwCrwiPG6xzmEsSJD\nmsJxqRJBOn58aD6CV9OlVSMF+QQohVsgtFWDgQRlAcLhc0LqM8s/TzQdlQud\n5geQ9reSk4Nxy1OKnVfyqwu0t4WzdNbOtk2CZA1ft3WoyePdUM9NH5vDZDS4\nFPBOpU3P8OOCiAs2naFMunEOlWQr1qbdpuWuhv/dZBhsuZDh/H+s+nZ+csJ1\nWlGyHLzUPYKJN7hB2/Y6cmXu1nWE9XT4CPnOOlAkj5OxrIQiAa+mQK3sWpcH\nKnRkYq9gjKTTACxub/ZGtmLocrJ9IHrlS5lzrq7YwDeZYbTXOKkQjOR+hECW\nH+Fg\r\n=WToU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAEP3l9eOuWTItI/4iCA5bogc8lp9xWCXcOxnxg7bEu6AiBIuq1Wec1J2kEiCXOQPkYJIYtF6tS7gu5T55fjfnCX9A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1609168353-5d1a8c8b.0_1609168529568_0.4024588152760593"},"_hasShrinkwrap":false},"2.35.3-next-1609179863-5d1a8c8b.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1609179863-5d1a8c8b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1609179863-5d1a8c8b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1609179863-5d1a8c8b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UxxTR34zwSLxk6bXbsmAIXAVyEBuTt3HBQbS6/5wdumpmKBd1EWV/MHXSPIwV6A9Y2MG0jp2yCFJyBOQ3O0LNA==","shasum":"47bc5200b787e5de08e410ec53eca9e04e240688","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1609179863-5d1a8c8b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6iN5CRA9TVsSAnZWagAACHkQAJWGqfN3/FHEBckYsO7A\nw2AxR3f7LOPL/Od8sOD66Qi+hpTxs43k4Hw5TEidL7ie5Y69qLmSk1bPyOz3\nBuCv8X0Hgc6XrTCl6FLVZMtVLo+hmRWtJPYNZHrOQbSP+7nXcTPe0WJQbQRb\n+0tYqv+wPDhBzGZqkP9i6vs2np9u3UY1nhPGVrzlDzqqO/NyL4BQ0Bo+AYXl\nl3cKxj2rawLO57rcfpwGzov3bIa2sISQTlbi4YDUGqnAZ0mTrLOTVd7/HlQI\nZN7GeEjBcpAVcvQ9MbtqXShsNclioBiHXrfy/G5VvDOwv3TpbwC60tVHOlfa\n6ZjRf2yyMJsyX90YFpGJGnpL5/5ZwIutUrOOrQOnMrYwaWvkqVVKGXYFj+Av\ndxaN5bwwEdOnShgNMrTxHaMjrNKePhrbGYQ1msOpaMO5nMUMcLcxX/KV4RNl\n88gK7xqbWxDYAQKSFzuIXSvbPDYzATcK8+Dp4cM1QjX1W9RiEqcqIBav0jqb\njqDLdcHFEOVWIJVcHXeBv1F9CAgzJtGV0YYM+M6UNoWnpsqUSFoEPuRadCGH\niT1dsVanzy2JjLu4i7PFrwx3FqLQRMKxcDMT5wcPsjq5KAdRSyOpkiw4cehE\nSrIHpYSuqW5A8TIzdtaddDvAeO0rcY43uKl78OmrqBF2DcC606C4nQE5uTQd\niXQ/\r\n=iWxT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD601B7fhawfEKnLLEJ0jHapcTqyt+8SBUvc2S4WStiAgIgAI6TnAW9ANyuq6jWV80S6lhDsoNRnURmFAwGoXHx9+I="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1609179863-5d1a8c8b.0_1609180025178_0.9309839493867604"},"_hasShrinkwrap":false},"2.35.3-next-1609182300-5d1a8c8b.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1609182300-5d1a8c8b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1609182300-5d1a8c8b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1609182300-5d1a8c8b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MxV4cfuEVfRmNW6SXBw1MSHGzp6W5T4H19Wy/Fkdj/T1oZaGyU4baM3CfYUtZYuM4cU4VJOzAXgsmmJYYEHzOg==","shasum":"41d3124445b1c0bcdf7b9b05427e00f6d1386540","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1609182300-5d1a8c8b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6i0JCRA9TVsSAnZWagAAFecQAIZ8fyPGDxeBuaNk66Ci\nGFKfjonIL/7UHJ3PoGaQTHt2F4vjH6pdhZMDnqdaOjnHkocqij16UFFBTiXZ\nMSvif4ECcanB0CFyYT+NIFIG7VO3lm169/bXtMvCPjlHArF9edwNb5R9h+qF\nPw6mz6N1bSrmytV9exreyI0HyrtZ4sGFHptdx9IxeM4rhB9LFp/4tQAB2DzX\nKwClD1yvtSJUHAdLZ40yAoEFrxUVMc2CtNchv4v75G9XFwMvsk8xWLYQ4msF\nq/m2nIljxjtJDiahZGJccrDAblnJC9lDGPiAShGg9By2XyPN7eXfNKvwcST1\nsqzNZ4dnV1iwnJOX9ZcQDZ8wRFXUCAkTgpfIicxbJLpAWy8en5xqKjZ+LKrF\nsvtL70OCumgQo+xogNojlqSp8/B1TwxSV/uJKQXrgeBfVUeWZb6kSiIA4Wpr\nXxeQr9Rm5wtnSS+YgGb38CkjA2Sjt/YkDCLpMDY0PYpjCG3hW1suqwdFjHcW\nEzuGfkznXdUEFQT/uTDbPK/AUEDsZ5p9XWLHHNWuDObL3cH7kmqwkifc/f0S\nKwwdHi5AKpWGH41AMLch1RYaT0xyREIcEFf7Y/xrQZbvNyVLnFw3aGvoHt1P\n2PAzi9xEJS+/YP9kxrMJoGFj1HjTJNaiPxE4mPvsSyAMK2A1YXcka3Ke6bwp\na6EK\r\n=P22a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbCqlGg+fAzy753IoYhjfst7SeG3KcNk0z6aCIWmtC2QIgYh4mfKMHHpaJiN5ud0P8yvkrlGPx+WYsrp6VBIOkOZE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1609182300-5d1a8c8b.0_1609182473338_0.03718403509222057"},"_hasShrinkwrap":false},"2.35.3-next-1609184825-5d1a8c8b.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1609184825-5d1a8c8b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1609184825-5d1a8c8b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1609184825-5d1a8c8b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XiBczDLG2LXRvHGo43Yw5aj72Q3v03yKThAe43LdQ5tv/S6Pc8RB58bh0rPXlyOB7le1xyHI2k5PfumA7fE8Pg==","shasum":"310044c6f842592530f3845250e31ca69bd87187","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1609184825-5d1a8c8b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6jbACRA9TVsSAnZWagAAadIP/3mP8BS2kUSyWHH4BoyV\nHiRI0ISh3fIw6o85i54q8l4oXOwCDJTa0z2DU2hbrJ4K7O+WZczVt3Q71ztN\nN9wJUjVeGg+ALtLa6qhw3kRQjARSBq28rbQatrgzMHAoHsGQoIr2xnjRqtLW\nB2ZcAoFLqmjKoGpAAk7zV1S/pZODTq+wCEyfvbXBHTINfHOd66qdmu4AKxNZ\nwpzKki986m0lqNEOQ/iyyMLh8u3d2RSrD3iTOTSpmEkq4TJuFPIuu4lvV3nV\nyGUZAiKLQ13SBiDN7ncMXi2OwcSSyoyMdKES/ecxUnZLhkZiM4jMlluF3OuE\n89w3x5iWCjIS+xZL3TlXkIEIStxary/FNWGijG6IYqE7bFIQd80hKvwWWbLv\nbUBh6iFSri/oA1STGBXuGOibnv3ACWs7WJJpkv+/G6p1I+6LUEPoA7BIRuhA\nI6TqPqXv+qCaES+fONbxlLhoUFRdOGCb4G/lpHwThAJBSKs/isA6ssBlX50W\n/B0LL6PVnDlsTdnwcNQerqpd6czpRVAa9vERdrVSbc/rPc8SVztQpBjQzqkH\nvsFuHAJxTNNWxctT1zmRbDso5zT8YNhgCe9gmC4H4CQ38mKmAnFfcwbAFk/F\nDR4c3n52aT+8RIj4WTtu2aLyCMf/CkCdfPh7QXVr7YtBrdvGEIZZuaaC4F7g\nV/d6\r\n=dYYE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB4YutKGM1mtka2bK7K3zFARvt0O2KjY9FICTKqQn3P0AiEA0OTps5BFOzmjLZ5B18XYCJEfS2SyMlcl2JAYlPPn11A="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1609184825-5d1a8c8b.0_1609184960053_0.3276600427809344"},"_hasShrinkwrap":false},"2.35.3-next-1609184855-54158853.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1609184855-54158853.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1609184855-54158853.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1609184855-54158853.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pfgh3PV5dC7KovTRPwp2hQCDoUHcW8ybpSeTGw9CTiNi1bJA5e56u+bYqEllg7pvvkP12UQ7tTGdEyZ5O/OQpA==","shasum":"b599d9b37fc115087eadc49fb464d9d08d007849","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1609184855-54158853.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6jcCCRA9TVsSAnZWagAAnDsP/1JzsE4AzH1XoS3ACON2\nG8IXz1c+6KOQ9exK0GAxgMEl+ymPGi+j4GsOe9ZHDpZazAOUer9R6QgY6j/e\n9HFaQgb7zRwLhwmW58uEluGw4RryFhHxWcvkqPZexWDB7ek1J4HkC6wn4g2J\nOrVGJ6SHZRLo35bj8+hrGr8TvBYO9oLO/9cdu0Paq2IAfBum3srudWTzOn1h\ndT0zpVdTiLJujBs41tsYTlQzuf7LSBW21JYTflcUyYEXio/bGxgtN0JNYRdr\n69hLKm0Pv/59gwdXFfOz/GRHSHHBjeqj3WPMhEffkej3C7PHDhm4fdi4JZgB\nc5IZhgbgyiU9vi4x0qkIibteWvhZH0irf1xCFvO0ojkGpDQuAUZM90g3227T\nEBsLRTUZpE3B3DO2NBIG8yNKfwE20wpbi3gnkyE3AXgzd1NMG97Y8z2UHvCb\nuwr+dzWQzOfJEGGLcvQL9UVTew6aJNk5slbkg6usw/kkjXeLrnI1PvKXVpL5\n6WozLvmFZUYGVcnEBtAGxahERKOY48nLEGT2u0iaNF47IhlOQBZ0SBZgRt5B\nThoj3xjG01BdDDw0utquwF62RAhTzbBebtXbS+EWD1BCKDUmBR2KaOw/xOAB\n7zMuNxQTxkZSfYi5ourKM2Id6ZpF8znLu7w4jXM69EAhbQsAzJFauCUabGLV\nDrYk\r\n=qmE6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICNtJLckSnMIEVXztcnAgFMqtor+AyzhE90DtsMBBAG4AiA83OXPpVnmZHyfn8C32TpYiDc3Jsx4vSmoZM0I6eI7FQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1609184855-54158853.0_1609185026162_0.39548230675377094"},"_hasShrinkwrap":false},"2.35.3-next-1609186613-f8c91d9d.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1609186613-f8c91d9d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1609186613-f8c91d9d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1609186613-f8c91d9d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JAiqNTVkvTlzRCMJ5yDv5hJi0Tf6w1GpTdYnqvYk5UExcBXr6iav2KZyobvuRdpFC5Es9vD9nNOJSzpLzvur9Q==","shasum":"cbd2ac35e9eccac60b95dba0f579b6a4cecd752b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1609186613-f8c91d9d.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6j3YCRA9TVsSAnZWagAAU/EQAKAy5BEFjVZaRMWbU22J\nnBBhSDOgYeS6s7EjiRjUtqKw2UcJx4hts5n1dIJX38YpdQejWbK1RSPb0H6Y\nW4tHxMprvuLU/RlBsxvo7wdedxvzp7tjHOYndojSIfBmCQcJ6Rd/92j0SUqc\nAZ6QoLn94XaEMB+Ui6qSdvpT1ETuf7xq41qPVnc95rB73Uu5QCa7jP7/w0e4\nfiU2XrK0DoWVV+qY1h/OebaDnmKmTgtg8RBkCZu/+HDKqkclOLN5fvNSWCih\nrI0+xu3Z6KtM+e3jPhIvuhpBPDkDmSXDQu8sbJFmVjBC6x2W5wtJkcA0YclX\n1r4+PpXaBSymoBaHr+q9DCPIH7L3wOQ23+fcI9rdkQ9ADKn+UTNs1DVlOc4z\n/TkkytFUOnBiz9wMf/u8R0vWfsialS/WYE2q+crJTTPxL9B2+XS99zhi8FDi\nj9wgqKh3r5rJdBZfpGKtAK3CBG3qxE2AcyQ1KWcV5g35tNMDjaEkd48c4Orw\n5K2wO9vrrpAnupeW88ETyqW3amP3KpN9ZqIyZ5Nl/rn7cpC1VRFy5z9Lqj9o\nGZ1dbpN/mOJx33psFRQqIRt/wK0V6JUBebxRome56nZwkmCZ4ZZrXM3GpZF4\n6fXJrZqO0mq672cLIjxFQJmJm7XrYU2Po/P+QIlP0ZNmwCvjL+l3hTXaPGTp\nj4UT\r\n=O37z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTvsO1DEuoa+EiwH843grEDVnEjwvvICVqNkqe3OheugIgbJkNSJ2ivXYr2ePXmmwK6PQ2t0/16Yvsbyyud20ZVRk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1609186613-f8c91d9d.0_1609186776386_0.7497645945831715"},"_hasShrinkwrap":false},"2.35.3-next-1609188692-ea33ead2.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1609188692-ea33ead2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1609188692-ea33ead2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1609188692-ea33ead2.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-K0l01KOu45qSdYmYJ/ccXxKKRoTVxXGPW25AdNyo8IHN7sGxCQ1FK5TZYORU0Mx5IYIe4Bd2TkD9aKlH/eo7KQ==","shasum":"010d7755f0af276c2357c5b34686ae399fb2185c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1609188692-ea33ead2.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6kXyCRA9TVsSAnZWagAAzTcP/0wO4ErqMKhO8Mk5Dwcv\nsR7jhf9gqGazTCSYZVvEW5GB1SGgpcsIEsk2m2McKbiVRhNAPqur9KLo7F1c\nYMY4jny+piefoC2EuNIyMK5HYbd6zSuSSwGKKUHeYw1xxAaT+BS6tTrMWatd\nS093GVg3N4nWmQPnlZq9/6OYZls0TQK6ePG1KqD3TXGjMGBss0ugEwJ7jVDD\nPyFH/jIHQ0xFCwYrKW2jJ09G1JKUIq5d/Y1/JD4ZOfISczAZEKD8hPAlYWM6\n6iidNVQrOr7yH20/n6Ctf7IjzfQ/LRewzTZ8FJlKkTP6y7CcTjDzdDiDF8zc\n0SJ12k/egE6It30KdZIOf6FwwRjqP2ujZ2ZSiyjuRxoXuqmGnBaB1CsfLCGJ\nAungpJGNRzwnGsESs39KBybBIqpmQfv6n/WqecoX4UYKEzRiUIun/48+Fddt\nts/uYRi7b+WcRS1w0+70and2wnuCvRm21H+3CRdBUt7WkcOp3ylYcwIMoVq7\nO8HdV9P7+MEGpzDQQc0UWuAihALjDztf+4q6acs2Pe5GoBtO2ovjnE+LJCh3\n38/PhwDK9vZVFVA/sA0i+uvSDlmTQxNl1rLKF2908AQdOJXEnLm3NKp5ybh9\nHQV5koVh9y9oT7rghOFiGFYTjYJ0oslaim1qVZD29Qo/YNu5iLRMVZGQrJMY\nCU4R\r\n=I+Fx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoDlyYAEXfJt1os2NYE52wSlkP5MdWV87+ZQF3PIIP5wIgc81NTGNySO0P89UcPotHaPdC7AQafwgXqoQraJeddKA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1609188692-ea33ead2.0_1609188849748_0.5397446370720076"},"_hasShrinkwrap":false},"2.35.3-next-1609260701-f8c91d9d.0":{"name":"@xdn/prefetch","version":"2.35.3-next-1609260701-f8c91d9d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.35.3-next-1609260701-f8c91d9d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.35.3-next-1609260701-f8c91d9d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oyY7Cc8VXplUnIcS6Av61qi7+G5Tlrq4A3i1H63SrGKe0nkhHN6fA0g0K6HWi9D4joiquA2fHHTKCUNUi0Nzqw==","shasum":"b3d3d9cce716bd7948e3605740cbcaee9ebf5c3b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.35.3-next-1609260701-f8c91d9d.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf618/CRA9TVsSAnZWagAAPrQP/RzctYrMyBdQucmJNALl\nW7MUDGm/vnwczsOlP4QZP8L2NVqeobCrDuSKpr3UM0StHU1Rc/f+qatqu8YM\nxF3F1DdbdSMWT1svEMWPfiR5NSHcNM0EZ5vWao+YfoaRSvAqyXXhXoRGXXol\nHIEQsLauFEyr34lTnDbVEvr8qwLA21fZXoLGQ3TC1JXBC8Jb9IlgG/MQcWV/\n/qeiY8HrlKqZDMJr0sqqCpWD2JqsMYz784lhkVPrOMgE9rlBg2s2FsdxLBLo\nhB9ExPJZHCh+Q6yTUqNkj+Mpvk7NxAxSf3/Yqo961PHoaE0m55h52/IQgx0p\n/MGcDS3USv9eaI/ZDDQQE5CcT7nRz6i8PPB6FZS+HoTQTFOiCAZA9vKPJjf3\nnReyJHkZ6Z9Vdu2iUvyeV3K8+9JL48zGCHL4gnZQRqGnlzb9N/VlQLGcjDIA\n9wfoZ5tEQoxU5mbJL6dmJJmFrC+c0Fi/fLHsDLuMApMZCNq6VfvK5B8A3lrN\nbEsQyGy1BIAvASPrMytoeaH7kZenLuJuUTPZAiScK36jhtH7lsl+PQJTLRxa\nZ0icTsiFjdOTIMDq82nFBN7JZn9uJwMIyD8kOMLGaSAdecTMfm7/X3nmzPm5\nN71+9T8hSUEM2/1d7NrMWK9WYtfMVY2TyUn7lwsUF+f1PZfzBPzMHj8qoJ+f\nQkGG\r\n=ACiN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICH9OH31iHoBu+tmtMk8Lbz7RtcuBVaIkHzn7FwAmLRXAiEAl4qQIiRDtuIsdoBSpIrBmRIVOD1cTOac3paicwLgosE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.35.3-next-1609260701-f8c91d9d.0_1609260863478_0.2586338555826855"},"_hasShrinkwrap":false},"2.36.1-next-1609339912-45a9c94d.0":{"name":"@xdn/prefetch","version":"2.36.1-next-1609339912-45a9c94d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.1-next-1609339912-45a9c94d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.1-next-1609339912-45a9c94d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Pzy9jS2BcIV3ITSCk4zrefaUELFPIqOHVgBiShGlQyl4H4zcD5U7q2MHyMzErOuJF1RYr9hTblssJn5pIHMpDw==","shasum":"a545ccab9fd4ede4032e5e45edf8dc212f4ea60e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.1-next-1609339912-45a9c94d.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7JSqCRA9TVsSAnZWagAArL0QAIsQ/4/cj2k4woeequMX\nlottvHpEBUTx4sISxen7v6p2ex0bM14zlss1f26BjpoDtsfxWZjtIsOVDyFd\nugwoR9jwwZZZe+ESIBWzhm8aCOXCaoidWftLu/rFxPtrXvJdt5Elrdktz9h0\nm/qJoaqhkpHj3aQLMpj9NvGLkGgiQFU+FTNc23pyqv1cu1RFnfa+hosq+ml7\ndNbYZ6IQWHlLKssZ4prtA/zRx0nXZQyeqtneglpZWOBGWdUiSsgasR+QAI8d\n2ewceZ4R9Tz9a5f+JE3ZoVwKPX3CffnwRzb/ahBwmYIkBUg/9raKmAk+Wuqw\nbeNjqLem1BEwUp7DXB6a2DvUL9gKvQf8Ue3Hph24UAnl4YNlDXmPeaclAHQT\ngrrub7VrzsiFGK7wCK2z1XOlrlGYIIRb3xyUp7XZNT0l0FUq05Y8EU3O5Vg3\ns+X6Uf63yToV7z1VGN/5RfmZ0c0+P5zae1XeMaMmkjpXgxKxwzWgsL5CF2ty\nGyrS/0cjzEN5X/+wIQ310Y8QjSgqfhL7+9BcQWsrd7IgeStxW4NkAlzmTCEB\ninJhVFWX+mmps6Gjdx6ETa2vJk0dBtV7uuj31w85osqROkhkq58WlM2qa1tv\nPZeJDTzNvfCt+Y/o3hrd6FYy+K95P6hbAndRlWfKW+UgmuCjDXSkYQ2Eh1SV\nHDgn\r\n=9QDw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDB4mJDEoTrBPEx/MPBrSQbYd7XW68pZiFUogCbm+8S4AIhAPlaXeQHTqGhu07J4ez/jHJ8xpIdGhFSxkxk7+XidGq3"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.1-next-1609339912-45a9c94d.0_1609340073596_0.012661445948272565"},"_hasShrinkwrap":false},"2.36.1-next-1609341706-45a9c94d.0":{"name":"@xdn/prefetch","version":"2.36.1-next-1609341706-45a9c94d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.1-next-1609341706-45a9c94d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.1-next-1609341706-45a9c94d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-w1oelIhHmvSFvP07a6Pa9Lo7bG9RnnzBD6fHBKboMQZjDPK9iANXGgc3j4zt5UeWt6Z/Qip8hEhTKEEgI1hBvA==","shasum":"df099cc12a1c602115d0b5024d45db210089660a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.1-next-1609341706-45a9c94d.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7JuuCRA9TVsSAnZWagAArrgP/RiP63p1MC/nQ72G78FG\nlhC9/zNCk3c+RD/IPKIV4Zn5VOQo0x0iCdQLu4+vjYJufemLo+foU4IrNcvc\ndordm+lzUfC8EBhEwe0/HI8jN/lZ0vTqApVwnGJIynB+tQ1gaqit5f2DN32a\nltASrWgx/pCdLeM4u6dW+Ow0ErM4q583yvt8YZbtXJxO4YesqTZEeoyiaHqi\n9ZVJfkK16cb0W8fOENLwlIg702QT677ZiyJNRdnPrSVHubBD6/srKFQqc8qq\nEyat+YMabTCiSODsAvRLghzw9oezzEOjws1Kimf0mpQwP5xSMsdtGk2OOl1G\nLnw9l4EO0EuHbfhVz2zoxIsd77XgocKxc/eX3wuuaXjVFcXE3Acz0/2WHNpk\nsa01FmriygN9EGjsAGWmEQILqfTeJzvh1cx6hQliJYcVpvCfyvxXPP3sAWvY\ntJGJ8/ImMsAU0vGwCUnKYQ78sD0WXXbkSLd9Nlfc+cwoVpMmDhdryobIdNjC\nkZjBrOviUc5aAEt7ZQlMrKTnmnXy0a7LRMsw67wLWj6RTODlWOpFHS6UfxWy\n7dSQjz/AO/H4QwjUI/3pHgJBVe6Gd7yr35MBWyw8P5OW2TDbuJ7Si4WFXHYi\n+DYrCS/gEmFtglQEGqgO5n9UagQ7jT+MJzpo4E1NTeghdFnT+a0+fp+yk9L1\nIo9o\r\n=TiD2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFoBM0YFrk7Ra79Kl1v4qpR1VF5Bh5o6/c5CzUJiMHHyAiEAqXRrIe1Z6eaWL34q4Ngox+93TijLdFWdjpxL8lk3UBk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.1-next-1609341706-45a9c94d.0_1609341870159_0.6370657885102531"},"_hasShrinkwrap":false},"2.36.1-next-1609341954-12f562d3.0":{"name":"@xdn/prefetch","version":"2.36.1-next-1609341954-12f562d3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.1-next-1609341954-12f562d3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.1-next-1609341954-12f562d3.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XY5UZBRfOIQb0EswMTOBFIeHpu77YYX/AsZ0VanQ2PWW+MOAimquHn4orQncDbTZiamNaT9P/9gf7z+avx8I8A==","shasum":"e7198af01d46c7161bb5f2ec2da76f143b38e1cb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.1-next-1609341954-12f562d3.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7Jy0CRA9TVsSAnZWagAAsogP/1mMY8Q+NR3aeW7pWFnU\nzMemyYrEw9Nhmz58wBMYEjLDh1C53oxd0bqw3P3IJwFi1w8j6PA/m9MjnwcL\ned+qqI7D9URxoaaHzQpP7OaFVodYUSzglPF1W6y5lf7HShVyZrpXCYrQD4I/\nHA1etm2T8Vnmm6cQWC+dWgXDFnbIUJDpnNNNcXGOZWEUyJF5CKsbNPz6xChJ\n3FUYRyNayfvwgsOcwBr6tORlQXM++CpgUbs37rbYLXG3iu7cXTMSZ+60jfKS\nO4cHGUqsBQuK6zIXSl5VvX5TjDVeA2T9GnYx8IR5HNN9UKdDtVuzZErKx50s\ngeMPa6FRxR78NyoXcJcJUkNY3ucUxUz3jTnQoQ0p0WwjnnEy+IVseMHTm7WC\nqARxKOHV7KhOIjS2AeHuH+fDSutLKzoV1PI1H/1ezzBA5UTP5rGep2dr6SRP\nw3hMstXqvWQMFQloxdqRYnhONeQ8S7+RHYNTHhp3r+2u8He4aApleesAdeSV\nz8h+GWu39ZiOZdfLM/4mMTwlrOGWa1/x19wYFLWm/IJvaoozSh0upWOXGkzo\nR0xsSZMqGFqgUSJNRt2SqZ8bjEsGTjYj0r+iyp+QmD45RbE6L7KQyelPA+eu\n/IdYkEF8Fs9/Tq4hS8XHDNYzRPlU7HxYIKeUufQDEJ91IKgAxHhdgXaYvDa8\n94WZ\r\n=JSmR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDiT1pfpdV6Ro75oxW5EDsEcomwtD49NL88YWPPrwbdKAiEAmTOjBj8jaH2vnJQm+fFv0nR6KAwWPVNc7XnfyofKE9U="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.1-next-1609341954-12f562d3.0_1609342131857_0.9926329744554965"},"_hasShrinkwrap":false},"2.36.1-next-1609343079-45a9c94d.0":{"name":"@xdn/prefetch","version":"2.36.1-next-1609343079-45a9c94d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.1-next-1609343079-45a9c94d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.1-next-1609343079-45a9c94d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-sGlaIc5T+tBMzXeb2qGItKs4iMzz5BO8UX91a4hQYdUBCj6MOTnIlKKFDmTRaOjTOPAZeY3XPKfey1l9LV2jTg==","shasum":"3be34ccf2ddfbf235d7686985f4e9b4b15ee4e47","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.1-next-1609343079-45a9c94d.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7KD8CRA9TVsSAnZWagAAUI4P/0sui9r+Ie1H+IOWTiod\n2xat5FtWC8qJMlPodGZldO9u2l8F9/rlJhDwBvKmwfKzXypTfqsW31KHXw3o\nLpKKmcueOW+MUuOWont4oq1ckfxLzabjWh/xR6v/Z6vPKQIrzD4Hk7o/dw7S\nRHYuh1U2JclZuk3mTdErLfmiACqdQgiTAMa7i+JEUldd3V2plvE3Co5WShUt\n1fUGSHEmJ2ReXstdrJplzSaNAIESZknxzwFfHta2c4GIB35RZSxW5JwjG2S3\nG/cu+nwqp07r1XwZPeN7YjHGHQmpFr8UX2MkMOtq8Ba6naW1SyDBEvY1P6V6\nw1U3GJbZYcg36ltZ7d2TbHh5W5CbDjsMGreb0EQ0TEMzkaj69wli9i6TugDA\nUsufhi5rLt9wVA7WCDMDk2ULuCJci4QnMTrMWR934wykQYhZfY0Yd28OIexK\nTZ13CNUAlLAC3VFS4S/nCftmBVRQvCEX8J2P1fxpFbU6J5TtnUyvIuMsL9SC\ngfKKpQ2XPsOabweRc1cNsz0Ze6aebZPdpeu8B29jdzPHW1SO7ze57mW9Fgim\nYEk+UTacLTLH2ropGgSiiesE752QqYeiwttgt9Nxc6cyviNDFzDlXCL9M5gr\nMSSELIX7hgMt2xjEi5AnOzfPabk1UYhW9Vj+ib0Y4fR7tUOAZwSjoa/2xSeV\nsqmD\r\n=9A24\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2fn338yuSSQzFcpXJli3Q+PlEj+P/7SLT+mAWjR1f1wIhALoz5uC8QFrIoky+fkXZ8GhFa2TZcBmevC8PHz0CJqtn"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.1-next-1609343079-45a9c94d.0_1609343227800_0.29042648599198473"},"_hasShrinkwrap":false},"2.36.0":{"name":"@xdn/prefetch","version":"2.36.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.36.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Rp8qFbbIUW1oUxvYWA6dNdwGGBM2DGyCsboGcpoExmLxLBsUuAqldV/hafkjhSzlIkMjn9/a9ITSvk25jrXobQ==","shasum":"9b667e3e80513ed0824d0a61bcd8af8d8a85b4e3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.0.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7Kd3CRA9TVsSAnZWagAAjZEP/Ruw8moFKTQXWyfYnYxz\ny30oq6V5P90AQzbL1RVKul5ESeSvseWUCn7fjvs4OoigblOV5PGHoucZ4zWV\nqoaHwnWIHs76Bfwz2lStAhQo2dy+x4vTvSmTTxmseLhZDxsKHVP8l8eVoKj6\n7ajWYdqTbwe+ehzrdZh5RkddGpinXRYYA6aLeJtpd/oaOK13pYNpR/i+HQZH\nvflGFpijAAcem5MEXTvjyd0ldhIuNbPxCJj320+1CiKJ99YytGwvSyYCJimR\nUCL5X3DD7Ko8Mu8cA6Xim8uk+L7pj6wyTbCu1H4wS97mpsWHjAkNDSdj/2Ti\nehfvPPb0HcnjCjuj1Xj0LRaqCH+F/P+T0hfFDffxQBLwbtLxM/9PH31PRXsw\n7ZIcu8fI4I8ORqSW0cSL52gtaOKjsGaxkNVZTNrsssGBd9C8F2ATeE4PKuJS\nVb4USPePf90f29LGPhvMh6IdgfTSdSGZqs//02TVnoYIwyJELGIflMHiDZGq\nUIvDbAiiV2nVKeZadX66trtAu7QT7tiuYB8ogjeJ8s2XGZYBQDtbq6dmcsn1\nR94tQl2QIOTRJdv/nhLDyOTn5UgueLL5ajyRWEPdHDbFzLjSjugfTeXJW2Hy\nax6Tk8KQdQbz7V95GPa4InTgZkpUjDZUCzInAQEotVkL6f4QM0dYSMFcicd6\nmXUW\r\n=Sa31\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBCP2LxDDkravv8GTSLgMIJEMrnxZDR0XNu9ZW9EayRgIgLG9oZMOC8s1KJMWxvLsnvG8fctHRQ+QcvmBzq1zEDYg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.0_1609344886900_0.7143535874014397"},"_hasShrinkwrap":false},"2.36.1-next-1609353465-35c2ae73.0":{"name":"@xdn/prefetch","version":"2.36.1-next-1609353465-35c2ae73.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.1-next-1609353465-35c2ae73.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.1-next-1609353465-35c2ae73.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nCpIrjY2OJ4nGR3RqadCwh+BpFcMRyHREW258O/neHKjGCMUjAQ7OZeF7iYeCX4Loi2pH8C+l1fRTUvLC1qhkQ==","shasum":"ba20a6be37135e92af7670186d38a28079460e83","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.1-next-1609353465-35c2ae73.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7MmeCRA9TVsSAnZWagAAII0QAJIYfGdPd4aYPmY1cRrh\nD377E5i4Vie7U9kQZWxSSAF4ZnAwGpUy3/Vi4lkOz5+yUOfTI3bsV0j8h+aF\n6fa/JsSf5c9uPR5BzNTJe8qtU0EpVi4nHDZzr8IN8R+vRlE6sRRUSIP+VwUl\nrq0s0wmrylh6RNfnJVvrmQoTP32/X+c1CIE/hxdzV1TjNEY/uw7yRQGswR9c\nSccwzx4ZROPUvAGnAnfvIP5SYMgztKObVUPvlDNRpa3EE36IjPS35cSYPN0L\nkHX8UdOD5nfn+TnqSrhOOUwxMf+xkqrd+4GEKXkkbM0Y/FZKn7cemv6aaNH0\np8TdDJCAktUvPkDYyBcHh4ThtfsBnuc36jdO7alzokL7/qN1rlSf3PBP+li5\nT+c6JS1sqZ3sXbdbnNE7GJHekNyIVdTtrS7AXxwe/7gWU4BY8G1Z0R0LihMH\nx0CM9KV4DpeJceihRaJM2TY/OkkzP7eBOy1XNDXi0Mjz6AOJDZjBj1AaDUMk\nMk3ryt5M/G7dArCY0J08X9OxXfGkrRKvOBc2zfjo6B3sYFmqYZsHEmrSdr47\ncLsd/l68IkJiDD2G6sG+vA8aJLPKsn/mqwErqDJA3IfyjIa0oav1wXX7JXR6\nDr5FY/ycX+JzG4kDyfDupq+r+et/lgScE9AecWpy5q+Oj25Rb0bhRb3cCjmG\n9c3H\r\n=Nl38\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxKJFjoOcgbfcGrP63D5x6afbajBdMise6b8ZqjspjagIgS9kq6DeNoFYjvcu1tNijyV8SGtN1UUYZh94CwbEVZmo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.1-next-1609353465-35c2ae73.0_1609353630282_0.24069571596040973"},"_hasShrinkwrap":false},"2.36.1-next-1609354696-db6c193e.0":{"name":"@xdn/prefetch","version":"2.36.1-next-1609354696-db6c193e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.1-next-1609354696-db6c193e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.1-next-1609354696-db6c193e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8dsG16Uxdgh01R3gMRfgZgKnqhoRxacGpV0urzvqNEZ/KG5EWdNP2LXLsGtsMPioZZSSn3VFoLT71D1CG3vsZg==","shasum":"ce31c6da3a5425b119d886088eb419f8812b7f62","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.1-next-1609354696-db6c193e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7M5WCRA9TVsSAnZWagAAvb0P/jhpT/S+6375wuzooxSQ\nwA6nu0aI3fguYXwb9IKVwtZmVBkG6b41KUB9fOy3jostjXkHTtf90tGOO12+\nq7OvshzW8PXneM/wQIYvUqsNYRIEoujGH4ZbNGtmpY5Sm6TU/SXWMQxSsM0y\nSFrhbDQ8/9fECAmyTJaL1VAlhR/1vahVlyJBSW39vRVvc9LYljUya8rVux/t\norNRH+oqDFOrP3JmkSpfQsQO7nF4wuDAOhb6Qb5yMYA+ZI++O47IK6s3qoem\npojd3m3otXZ1+3uySlh1RzAP/Tc+bTh8qInNR60epyc9TsmfBacd28CDnRNe\n24Q3Yz3o2RyF8TREA9Cgt81L2XS2wL0tqNCgO596pbYjAleAQza49xGvVlHa\nRO5DYtC8+d4WADOaoIYX66KHltaPAfRkT7IBmn48g0Di6U9z0notlwnuXmTy\n+flYmY11OJVvH9GwEs20VoSM2DVUXEfUp3Fu5eeTGihE0dHY80cL705ak9r5\nX4TpEOZMmywyQv013H/ch8Wq7p5395IWZHDrOLMz03hyNeJtIcfgedGI4zm/\nBaJTplcXif3Oi5WwooBBcG3IaLn6dA7NprQMJjQzMHKcFMBMBwj6e7+JDYyy\n/fJ5c8/z10RLY9oEhD/ntnu1vXCpOE6iqesBoYOhQnC0jprwIPT+z4pyOmY5\nUMVQ\r\n=eMJa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsHzfOXnY7tRmjFA261OWrbvICLjULAiLHgsowciuGXwIgV5vMiNNmjVJsYGjCuiDDR+m8ia5ChC2XAznKKWu1hIQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.1-next-1609354696-db6c193e.0_1609354837954_0.24915884647164654"},"_hasShrinkwrap":false},"2.36.2-next-1609355383-2f939fa3.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609355383-2f939fa3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609355383-2f939fa3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609355383-2f939fa3.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Rqk98klcBuC4pOQkA3q9vsBuAjQ2siTBViMfM4EMAcN1m5QRm/cjjkMYqRFo9Ln7K+LiKX33UUMD3CvfjXvilg==","shasum":"9840179755e25c201baf28783834710c6885ce00","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609355383-2f939fa3.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7NEYCRA9TVsSAnZWagAAdloP/iKaPxV6eaxPXkHaH1aB\nru8ePD79nKHXXp9+W95ENURWoyD5G6wJ/+L0VsyYNrZGu3sRwDvTLUdKFVUm\nEFIxvTrJ+Ji+0Kq2yTcLB4/KZ7+p6wSTNqk7TPkVmxMIevRGUoS6HCpHCz4L\nBanrV/OeELpbMiyewQaXU+yfZUoyWoVeY0JkutOjy1bsQt6HpPrDFJ5lwHRU\nHSeLUSS1YTU1Pl8OerVdQp8tSjWmEyGMubD3eAtoJ7dU3mErAIiDmbsGkh0x\nc/FtLUxpQHqvazmh9ZUpSklX7tFPLEAYrCBA4xMbWwmaKbJ4Zcak8T8T1nu7\nqAI2P7r5zW9RkCDcnhyna2wiEExxt20BkPZwktUUDi/LPd/En3qgC1LLsKgi\nnGbeEkav+pB57/vbBDYUWJkDXeODyQjS5eifaIGRmTWuV1a7Ao0PvOk+smS/\nG+Moi/EtnFCCFm8M32IQTmmzATcC8uakrAatmXerCSvux8gWN9K4556zKRzX\nG7RA/yoCl1pOhk3hjwwvkhoZ/pBMxXUMB35SJ19hNa1Gs3zPl1M80bUJen4s\ngB0lbsoYTuC5oTFo3ydYQovnYDbwGOLjEhgznF7Xlp6pHKPqvK4+4+RHe7gZ\nRAV6J58R6rcJPyFR7mzMD3x0Q0agoQJT2s/UXaLmIDhe9G6WRXm1Ec98a9v6\nps28\r\n=vWV1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9/bI+vrsxNIuIJG1/cLDjfj14Qfq/cCk5twbSZpdwgwIgKdKwNer6kmdypVJxl4Gui3TkV994tqq5W65j6qgTiI0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609355383-2f939fa3.0_1609355544399_0.6225666773349905"},"_hasShrinkwrap":false},"2.36.2-next-1609356608-2f939fa3.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609356608-2f939fa3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609356608-2f939fa3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609356608-2f939fa3.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7Ejoy4X625J1gi8lOdJ8Yj0E1dTNQUBjNtQYS2HNnLxe5zOkW7bSWFnWVexbAcHMA5DcUoi6k0FY2jFpbeFnvw==","shasum":"c6faf48f90c36ee76cce3fb7d74a07f6d740b7ac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609356608-2f939fa3.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7NXcCRA9TVsSAnZWagAAGckP/3ZEH9zoYxwh5cZczHvb\noXAYK3r/wPv2SgtBD044/PmQdMMJXd7sV/tiMpap2+0RGw5G1VgYzxUw/mEw\nZ/xyb4uoT6d/Q6EiwvrtgI0gTTADPtwCYhNfbCeg8t3cdcvSwFokJi/tdckX\n4pnJHEHWYhH8KOgWPXxUXXg2vJhEXNxbnpuPNaOZuO6b/i2Zj2cGFi21HYy5\nk3FgGgxzEw1/kxGtE43L+L4Kj0aA8l/7SP8K8V3cvxWj7qGyiOEm2Mw4w/Xl\nVjmOWeje/kWVB4yHHSMVa+bVFQUjS/dm6u3S0QK1eXwsRIeXWNYt2ysETx2E\nHujd29vJmjLmhBYh6S2tLNCJBUU06QGwGzXvUjSNWs+YvOV7cLylcBVGlfcU\np7MChdIb23QJ1AViVXxxegJCv8hWhhIcTdlui0z3j/S39Yg74lrrWGEWrrYZ\neYprvSVHtUSabNVE3yrtIKwJCAA3SgFm5xbw41tnbHhsO7uiqLFtMPDBHIv3\nmeKlB21us8ZgFhXipYpp0nxN7U2TjJC5Nswgx9bl/TCWNQN11AdplOW9JYKK\nMdOdMfI06tYL/9+v3e/5Bo+M6oZjtqQLXbbcBoxjmDL95KkwgAkk0K6KM64x\nYQCG1QaY3XaIT4xkfQcEQnPDoLVGYsKI+i5V14sABuh2xoHiVP3htAJzaE5o\nE74P\r\n=obNE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIECPWbJookd81yXuEv8S1tJMrjPs8RJUkDxxJm/uOvhbAiEA0TKeNwOy1bSD9vg+gEb5jUmF2Wm+KnzggCIUTUektWc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609356608-2f939fa3.0_1609356764383_0.935123324775126"},"_hasShrinkwrap":false},"2.36.1":{"name":"@xdn/prefetch","version":"2.36.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.36.1","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VoKdlx2AhudiSqkdB7YzNDg5gsto2dDR9Xuy928CT5Hc3a65uwHvcyaaT6x3ELnXZ4cnzg2qp1IiDtgzFFQPbg==","shasum":"5790dfae1ffd6c4189bc91d311097e18f48b984e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.1.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7PkDCRA9TVsSAnZWagAA6fMQAJxEOLhT8ghhRXqbchbE\nmw2+93nn4H1CUT9+/fxsra7D56CMcjpo9ioasjxVHbW1Kt/hypdp8x5FpFnP\n1oLUyN1lcE0PYvr//Cgs57KhBe8fxv3TFgp+U831rkUIYd9D5o1kSOhI0CO0\ne8RZMZAyxDTb//Lfs392idE0oN76M3mDTqUUTsPy1mKq9dZj+ji2tV13JSYY\nN15l/RjMSQBUGf+ZaI3u+X7s8qXCb0YxnHMLq2bLcJTRu+QEyIznFLLbtziG\nVpJ/Xfq9W8i33ayA/oIJDeCppf+tBYYBAQi//n/mBDG878mE8fTjTfAwtAGU\njEby9QzLx+HFNTLmLdy1IU9G3Ebr7Iwgkq/ROEszUoFDEQn0oYaIpil0E1/p\nHJNEQcWfhUMqT14KE7z4RelGgA/QXlr8kj+MeZQKqe6965+E5PPoAcrfudA1\nmoHHnEtILlN1nTVRTNGh0TeGbig2VlgLwL3Daw9nkSs1aAJkwfN+b0tYB0eA\nRzVKk3NQyMpiHXHkGlzEi4AqyPcP9hAI/iOxo+vfhRXzlOYMI5pta/WaPxRc\nq55hHcowHNI1zN3rE0G6MyytbNrl1dtPvq3J5OMGToBHurI6HH5jJH1xeCdr\ndnUIUDPo/Q9YyMDcwFfjT59tstwPGv0iiBuoSb4iarcvK65ytB1GPY2vVL48\nh94S\r\n=tIw+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFTqqTsIfi0DB3i4J6GIq0NExTi4Htb7/4gnfab70ue/AiEA2d5JIevaMoFzWrtvgd/m5zwKbAE3HI/P/UVOsa5KUCc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.1_1609365762650_0.12269935333738213"},"_hasShrinkwrap":false},"2.36.2-next-1609758263-8f588ac8.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609758263-8f588ac8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609758263-8f588ac8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609758263-8f588ac8.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DOb60GAj88AYLiUcH4ZBC/GCJ7vt0Bc4lFM6vEpA/TuHRekPQhwOXBEgWJeSiVL8c7Hm/FZcqug3vmVyE7+dlQ==","shasum":"affcbaed3213540937e950c70d7260eaa1a4a7cd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609758263-8f588ac8.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8vbXCRA9TVsSAnZWagAAPe4P/2CoAWOHvlqBVLqGnKUo\nzdCPOlFFVrDbIeZ0NETC/Sd/2aQrKKKxK4qqkEIwei2haGBQPpvxubQyICaH\nCKQsjTFuX6QUxj2YgO3k0D/DXwBMXxbuJjzILqqzbRHW+G62r29fOL0zp1PF\nwEmVrz7NMUgWmKrkPhOgWLSFQlKPHGmNyizMJrOjgFHspz0s9Q4DoM8sADr6\nYRsF6LfvCRQluFC1pNYHJbpPH8AzCVXXFU42iQNGP9pd6GBTGBJ2/sRg2fUX\ncYRSk4o/2mqTGmw2Fw83ejvmraNBfkS/WOeclZaQM/+mPziYAqkJ4v4Laaqy\n9hP/IQdZeYNViHz8JB7DWeYqCAxNTCW477lC4Z6YMWKNckoDGas+GEFtBmzm\nrkfblGPM6ZpAu9N4TyaknvRAtQfIhKQe2yy/EBUPDjbre4/67GYwyTCoCxvr\niRamNNX7DUwGa+3iuVEfcI9PDymD2TPSnsgauoUdkwP/m7OFaBGxQFf6EtSH\nTJLdIulkLWWSG3S5wbbmz9XKq7w0QWmarkNDm37u+148vcYpE/QDLZFskJYp\n/KgulPx7rgIFxT9nyEMzBFHbSqGKT+mw+xNI9jb9/F4pRuwb21/PzBL8ejS8\nQcIoiQj3BPmgr1i5k66SUMPJy8ro6O8pvh8tj/udkaC1BffeshCvbWjPeMKN\nOQlU\r\n=Gxhy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQ3Re1wR0WNGNC+ElGG7s3ul6lUwEtAcqPugEhRUGpzgIhAIy9jNvMmjVkLT0Xvuoq9HaSyrAYANHHq4TVeSQgLVIx"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609758263-8f588ac8.0_1609758423079_0.7084045936597159"},"_hasShrinkwrap":false},"2.36.2-next-1609759946-5a922564.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609759946-5a922564.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609759946-5a922564.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609759946-5a922564.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ps5qjLd+1dCaVtEU8EXC8svF4kNJ3Kr+ZhfzOPovMGRPaDGi3dUER3UzOuIwCnNESnX8aU9d4JsRiJ635EHpFw==","shasum":"30d6dde03277ed1bc7d2aeb3087c4d58aa6ea791","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609759946-5a922564.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8v1/CRA9TVsSAnZWagAAxzEP/A6MwLMCtWBpXeML4hWr\nvrMVcu05tdxXUuytIHMNLZsDbmBQkKElm1/89thfLia4XGYv61/b5yRds/7m\nTW72SIU5D0JvMhZKX6vO7cHqHVyJnSz60kpcs66DfQeT35KLm7XukZxCxsi5\nbRAfO2Wh64VVhsC8fu+zGo19GJWaKVsMkmBYv6wwd0T07nj8hCmuDqfb/BU1\nT/O+qG1Qmq5UweAZfXn70PUqq4p3LgtDnavTNLNRjKn5McNpgXy2dTvXJw/T\nnh820bpMNx43+ltrMcOqcf0w/avxAMDRudrfm4ahXJpCD2A4BIE7Jk469Tnq\n6BeG007lViU1rGo2l2s1eD0Pxdgv5sdA/4R4AChjNxo257DJWff94Jz8s46U\nsDpuap/DH2Mk1TN+ur3h/Q/0xjAz7srxZSolNI7p/3eGKOmXMTUqZ5giQgQt\nJgOkLKU7ME+sokqBP6ut5F2QakBnbmPNKHPiWf01TFLsPB2eghE/qwyaIT4w\ncJrvA8zsWLRbgB4OSEbvh8zv3eUhtOfHLfNZvOc9KhVMuxtyC0cjpzmwMHMw\ncMVfqLCJc4TCqsJlhW/g3xgUyD1ilCnG058OaOweRj5ZgroOmGY4n6XJdQxB\n27AhUPTTd4HdDY4/YMiF2mLV2TMMpJNUFY7cmC6dFR5nWi8V/WjesDepulKn\n0h11\r\n=4qjq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6y2kvsINlvN1ZgJqSJv74MyWyuBgHNFaG05kBuDXHVgIhALoxKbUirtO2qfEe1N6J3AjG50q7jA3sjDW3qmAtYs0I"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609759946-5a922564.0_1609760126658_0.8771792604131363"},"_hasShrinkwrap":false},"2.36.2-next-1609764320-34b1906e.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609764320-34b1906e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609764320-34b1906e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609764320-34b1906e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qNysmiGhUZycOASPpLy/o/aF8sVti8WhraGwk9MAfjAHMIhEvPueeqJYCrM+DMtX5P99YRXV+821UTdgWPiFaA==","shasum":"27919aa109b70c32f55a79818e6937bd12c76277","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609764320-34b1906e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8w6JCRA9TVsSAnZWagAAAnIQAIwVktu1+SBOe1hfcN49\nMQXKr2AnKQyMlZaCcnKpw7W4h39qsK8uq3UEmQfzroYy+ZuqGsnJFgV9DnqG\nwy7M/p9R+pYl8sMz1kLGqyMv/zCt+hTjWSBdG9PLFwW6X2cc3k0uzuVqbiik\nTWmcCm7WpUvn2t09mmhupQYRmJe1WOwD96UYRCqRFVHVYxUkc852SGM3n9x/\njVKyzUJtbfEqi5QVdb3hIQObdHzsDmRQ7h5tJzkHyEKGnRvSrAyq+0rcst3L\n0TGibZ6NIFTEZcupgN15AhHb8VzI7hqmjI6QwTfBfyGOLIWUKppdnLpf7jzT\nvCXY7LVpyveZm7bQyIHSvyDKzc3ihD4rOML3y1TI4UCXFDfb5wFh0JHwvWCH\nQDvFwvCSaWwdDbdqnu+QnU34KVe2gVMdyS3f2P/muxMOsN+ETg/oyrGrCU/U\nfuHVDFAkpNHQId6lHVmsXEyzxDmHrOfz5N7/WBHtixvC182C+AOqCmwf77sM\nxEtoITy2R5iadqFUZld336omDTOwBPVVs1epwQDCLMmE9ZHaSu9vDTeAHQeL\nla4PM9U962eJm9sZ/wqmkltHQUgM/B5HvMv3gDs3ffXlwO/jaB/wxsZzjj6p\n6Bae3KsO4z1NPkzE4I5KyBea/pKZKH07I1bS+J59LHyqkbNHmIoaKshuFbQb\nwwup\r\n=/IUl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBgtldjXYU40wOgIIdRD4oL0khRhubJeDhRwl2RpznXIAiA9ZJqrUGI461zEnZ3Sr76qOYBcKx42XTadsSF6jYSrUA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609764320-34b1906e.0_1609764488469_0.11594827164263855"},"_hasShrinkwrap":false},"2.36.2-next-1609764928-377de9aa.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609764928-377de9aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609764928-377de9aa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609764928-377de9aa.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wIX6Xzitrilpj/NANnp5T6tthWIHYOFjPtm0SNEZMdTrGCCRgVZFivFK38RrBT+08nU2lu7VzwWiP2qUSVmyyA==","shasum":"c913097313f1de79d54f186fcb4a2090df31f1e2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609764928-377de9aa.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8xDrCRA9TVsSAnZWagAAk0MP/Azc64l9mdK/DPzTFPke\n1bfK81FatEjdRNV0d+VuVvNuUJvY1OR3bpvtLUNdaqgztdOy71RQCWg1yAOF\nhMa0fjVzQIpgz35KdDW1fI1WRapVr0YL3zS/Y4RVZPaCXbnfPsbATRheCfoY\nC9XMXpw7VV01M7xCFTdUnA+DdtkF8644Qln8MOfU3CQTaxNyJqpPkVmpbCih\nZZOvBmkJ14chOn6sAX2/HAzBpR+KtG5JTokRE8GsTpMqknVfkLDJvjSlCe4r\n85TuDDkZLCppqsTJOKV+SqL68af8nqIFIQhcR8fJvsJxXNnS40TCnWUZjNQr\naTH21nACBfWchzynqOXPOtxs7ITiEVlZzRyvj8gUv4omvXOTfFIhuSlixyqZ\nZ28hzfFlH95mOn4WkeiZfUuL5SedkxffjkNVGmn98TdXuMJIAzK3ywzydUeg\n/gmlEpGRSa2BAZL7BEHMZp0cIKlhbnGY1gK6ZwVmnDuAUHBG7ciVIJ9bacKP\nMjz2GmQpwIdH6sddwW9E2AjMaLvAdGmG8g1jNfK/tNxtgBDtbhv4KMX7rQ4O\nlakJzQWBcfEhQmhs7ajswqWH+yBsVT+8f5gFsXaLep4zBQToOZ0MiXanWLg+\ntx4tUtJn7z4WcBP9Ms/5lh469Iepd+8yliKAa+hmueBIYVhwK0JU+WBvj1HL\ngoU6\r\n=BD26\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIACv5fAACvO25tr+YVCOJVSmUyVGCPhzB5E3AbX8Ow/9AiEA4wplaFVpuL1reuu0BrrbZBJ1Zhq7qjuw6tK7qHdooc8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609764928-377de9aa.0_1609765098782_0.6096381830521496"},"_hasShrinkwrap":false},"2.36.2-next-1609765560-85002dc7.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609765560-85002dc7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609765560-85002dc7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609765560-85002dc7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-O9JTr8aZJUahXLVmfD3MWII5ei6hf9mT0xpotYeuHdsentpv8g3F6VdfyJA07n79JrNkpTBJXsi4NdirIETOpw==","shasum":"726ad093f25f1427f5a04d7fd0a8cb82900be236","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609765560-85002dc7.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8xNiCRA9TVsSAnZWagAA2OkP/2NqS+7S4fr+JHV8hEm0\n+CuGs5daKk/8X4inmlYiqvW5sldqbbt9+wiyLsTmeiN9BrT0ISjrA1qN1rpu\nYmc0BDMHoorTX2C1bneH6oG2DHppQ+TIOlbbUDyLUPPlc57lT5i86fDewP4R\n1tQh6XRvuBrORo/4ULf0uDyjcE20LY08qHLuqlnVq5RQM59hNWgrWd3AQ9z9\nQE2hR4rK9uKwOlK/wbbEc4C3cJlmgdXVlc8Y0RXWO/W7+VziWr6PP6LmMuvG\nj9lB02p0mE5U7bhBRGD1bXZ9ovYozOAC8xQxKU7en76y4/FWGO7FCz2IpWdo\nc8DDIyC2FjzbWWL1Sx5DNtlkEglvtilK6/ZLETEXzid7OsVFn1exgBT3B2zc\nkS/YYAyD8LHwOYDIifEtYTSFyx4e8pDZGXOIxWTT2gPLibTTo9kG3tU+ynRw\nhjQg6Naj241TxK6moYl6RGZxu8bLxoKIIODLLCYz9qHb9ZNvI8TgaL4eC61P\n6o64cBI1sAozAQGI8mAQWRPir+HAO3Ix1biikBjYM8cdq/AsD3JXVoEsDnKL\n+9/laUvTdSOWMCfme8paSnvI1g2EQYKewa7TbcWhpsGNScVI3ojBcNBl31ow\nAnSwyzjbDSnTgAcPg2GlCmMDXJrgqI13AkFysi7fZSe/26HJCtNkC0InZ8oR\nq2pA\r\n=iJnq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNkvu6UHCfIWYQmpJiGQw2JoWgjBzQXCvuyCtelNRqtwIgHAJnJJAsx7+1lofzCTir0rs+rDBG8gPwXVe7+pdiYJs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609765560-85002dc7.0_1609765730059_0.3488434126131652"},"_hasShrinkwrap":false},"2.36.2-next-1609766562-c1bcf807.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609766562-c1bcf807.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609766562-c1bcf807.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609766562-c1bcf807.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dbbOAYFfriheficVlVpgWPVQssfoX6mB2HAND2dgbAlGzSXkqb8WPRY9SVRqYbQN7aY7T3XL2KR+tjZh+TxRqA==","shasum":"5f85e986095a9edf3e56cb8debef557a731e22a8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609766562-c1bcf807.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8xcwCRA9TVsSAnZWagAAxp0P+gOQuvn4veAJjgGJvaZ8\n/NBFFj/iWblaiDeBAEz1hsgAYxL/q8bohd1Fv7EKE6c4H2DxT4dr2z+czJYl\nLidBI1dPJAf4Lip6VzkEW2JTDGEK8A0tlVA59xCQxjljsT9ZiDzmJ3nAMyWt\nHtOZWvjE5akP7t7ZzuyhauRZ6TX1Xih4G+K5Pd7rCxLtAkz36RED93sv0oab\n1eziqfn5aiAlEJ1i0qH57FufAimS5+SwrQpVkUPZx+fHZfV9osn06LXx5SNx\nfFvX6Z36JhS9f+dgDKi2aMzrj6CzXIfOEhEFkD17mbTLHZ7tRiDoQN9Af9Pb\n4Gy7LlWpz/Vesiweon15+Wo6GpfJ8jJTPpsZyElpZ79+5OI7uKdmr4xq8kgy\nxBWdB+pXyY6tw7XLpIvwZ9V9mcp9vwA3KF9sNIYMI12u5CO17YoYPzfNgUJo\nucy1ztYailMd5nmjQjq1iveX/Xtd7amuE+gTmsvwiG5n9yGGKQENUVOnjeF5\nI0MJAwN8b0mmJmfxOruTJU/cuqXZAtBkLslrBDbsAicULGluZxLUB47/80mR\nhjdgffIvX7HE1+rhQxqHtBOGzM3XHoyXkQhuCykNsuYpEjtQehv1pv2LGsTj\nD93It3KjmPB94uEcfuPWQdThz3NYYz1jQB2W0hZOvwTK9zR+Sf9AKWxovhey\n6B92\r\n=MR1e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmQjsEsOr4gIZPYVjn8AUPsftgG6bVBLSwGyEJ+eAeNgIhAM41c0mwa5DqdDpU0OFBStQIobxWaH051/8DbXC1ts0u"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609766562-c1bcf807.0_1609766704267_0.7756031648293829"},"_hasShrinkwrap":false},"2.36.2-next-1609767036-34b1906e.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609767036-34b1906e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609767036-34b1906e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609767036-34b1906e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pITy8ERCmyiNlrGbEFsDOOyWa7FWCrnAkq/dPWWQlqphbcpfXDg1sUDCgaS0cgo3ruvqV4tuC1D4srsyHp6U8Q==","shasum":"04e00170523e512cefe00db6b7a509657c6caf72","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609767036-34b1906e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8xkmCRA9TVsSAnZWagAAHZMQAIGgcTfw9LHLRzRZ4pFz\n2rEbgGNPkn0fKlIEwidcdni1oGpy8L01b9TE2fvN8NZQwB/Gej3Ntu5f7Ufz\ng0vKLqvYyVZJCKeFPkeFh2CyWh5IW9BN3x+BRMy1Gv3BDQJZqVLptBGnGPlJ\noT/K7nJRHqmH8s+166ZQ8nt0a1M8/PQ2XS3bsSMUxuC64BNm4Yh6Ozs4DNYI\nQ/Y98ahUiEO9BUwgbupd9+QYhjrDm9toHvHj7sqfjFhNipE13pd5RribrYaF\ncF3DIZahG2RD9mRe6FoibmvmAyHcpu11XgxVllcpgb7Adr9Fhsaczm3A8WER\nuK3zVK//6mVV9IbIiOmjUrf9QcwtzbZNayFyC/XPiPoeJ7HMDI0NI1j+jlMy\ndeqNFonekUO2HNGKoCq1zhjyCmNtBmZwyGFKeTg/ZCkjL2qRhJ7t31Mde5P9\nAS7ngQ++kSthJbIc8A0TEdXtECCsAhABwC1hZfdplWlt+BAFZYpDHkJQ4Hnm\nUKTcU0HltUAVPR2qjFdWz1glxvrsPzcVYYHSU8KOUpouVrSppIN0IQ4tO3xZ\nmOk5kgN/t9ZuwMiM7ypOOjUorEdwQFL5fDFdIlhE/s4T7QWiJRRm08pxgW4o\nFmwtLmr+d7xzqLM3hdYHQ4YocEJil9ksk+z0lskQNqd/3GMbLx2Yw0RC5QvN\nht7I\r\n=KxLJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmiCilrINXwRKx34+Vz1rJkKsH8ZhACTCRpql67gYvBAiBBHV6OqGCaxS1kscuwVTqwwPUpbPE240HsxkeW/RTGDg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609767036-34b1906e.0_1609767205810_0.2982446040172564"},"_hasShrinkwrap":false},"2.36.2-next-1609767142-b07777bb.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609767142-b07777bb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609767142-b07777bb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609767142-b07777bb.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2CV9YaeB4R6SSABgWw6MEtjkmd4+4P2Hc4CGNHT1NDJMIUrNZBQAKejGxXsCk5TGS02INIPBYCBoLpFOWU8NAw==","shasum":"c142806f6e56590364c5d48142134f016ffadb19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609767142-b07777bb.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8xmOCRA9TVsSAnZWagAA9Q8QAJz66Tvg7K2472tdBbrG\nQHPPtK9mhhRhxGBmP/fGlHIzxjRkTU64W4MfMEBjUdyiBy8N6ZlZGatAYDiG\nYIW5z/TpsdrElCQEt2Ztfce1F0jsY4hL9bflv5AuWXDcifq+Kjy6Z6KZuDIJ\nkQ4NkLWhvQYR0vqNw5Nkc4l3tQCOpHb74zrjfZh8yLndgOu/L4vcU2lb6FWb\nrsDJT4Z/eaZOTCJSaRVGxFEJvzIV1s7fgzDgPAC/6DBgnmzt5/BVepWC6jEb\n5jS4fm6bY10W68DT+438Qg5Cv0t1X+6MzJOPGdlSlfKbT1rlqLsFl208N8pd\n0jNftEaAfYvBc7nMKIRK+QXNaNFGV3TQFPr+cUiR8Q+LTjxOtI1ifdP0yMLA\nhDb5H4NPWo5nlDixdmGlzA5kcMeo2ijrvyyLzQ0KrE1JfJnOaMB39OeNVLqo\nK4J6L4ywLpDR5u7X/ogrSAmbW2T9YNQkAHLXbByAQ05Es8osDazFci1Ty9aD\n0VFAcEKndn4WPtFDKb+r3PxlMifz1gHu+Jv7/opW85pcCfwOJYl9cp0VU/5/\n0rksOEIH8A1F9Pf/Bb/1A7NvSHv5tBHEI9HXevSDfjXd+UcnToc7Q4wJxOGL\nXGDPOF6fj4vGlNRNyES6uoTuGdFtKBEwk8pv+a20ph3nobpNMuDhDJmhyMWC\nxXDr\r\n=HDSR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3Zx7GvF9E14WWissx/Z67uBPCngw/bI+cwvUmT7GAZAIgHYgCZP8RYCn0ltkbQAmsklBjYkBLO7CALikQoXosr9I="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609767142-b07777bb.0_1609767309936_0.8046452591397757"},"_hasShrinkwrap":false},"2.36.2-next-1609768294-4e0810db.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609768294-4e0810db.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609768294-4e0810db.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609768294-4e0810db.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gDTHbyyw4+OnfTWDFdNHhhwunBVKbbVoNbufXwYp9t8G0Hsxy8qB4FyOtr2HLWsQatu0KS5+SboEz4nqnFFiHw==","shasum":"11511d6771d9e904f7b190239dbdc417d6697cb8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609768294-4e0810db.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8x4ECRA9TVsSAnZWagAAfF8P/0JnWwZEWC8MTEsHpHrt\nGAdjdNStMzOS70hu8tekI05ucamkq+AcMfB/VlH6AhMyY3xyxKE3KuHOpyZ2\nL6tHIvhng3IQPPkmDnKgFbogkpLBlaow36KgGlZSbmYsa0DgM7NiB5E2wrlN\nmBoxZqhjHVbQGMxTVOERaUj9hgy5LIhxKNHp2ykf5Dmc4JigJh792XuuizoP\n5kynN0zCNF0A1TkpQ6mbzKlvUd0d6b4VbO/CojL0YuOOiGiJBUKx0qGyjBsK\nRj9dSt/kiiJxnOsOgJoMf1Q5eCXA4P/x5TJLNE2c3MO1dpAglYuwZ6FNGvRv\nhM5H6rA/7sE0KmgkY8A7nBHVVZFpZr72aVLoWFbiw9xyLZ8TB0JGVbcYsppE\ngXnSG7UiCAqqcnhhjTY2rmIn9cWUPQFTYyIj6Fh0Ct7Bc6UiNXbCW+Er6hfJ\nXobwwsqxGXn4rKqYfF+wqv9gWPxG9qxj4uEFrhsd2LeIJrfJJ9X90u8Wm/O0\nncUj1gPepNGE9qzdD4wNaBdRrbMMEVFnhz0oRfV+754e3wKAiXFiqyczJtau\n+UN93jxCUzu6NYqmxowuGCPkRRNrOsMs0piMYSWV+SSwi3R+5XFSOh4On18k\nXw1VgR6yPgaVZ5/WvXLhOLUGeOKUaGvTjXFX7+LFQrtnBkGG7rSY0b5ArG4M\nHHdc\r\n=B+Pp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxBW3BKcdYIGupOkzr4uHr/s1MDvp/vsUGYr3lhrYV6AIhAN+I4Eyji9xAEuLCwlno7Oh/WXkqCNRHPcGISba+j9e/"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609768294-4e0810db.0_1609768452240_0.20076417064944785"},"_hasShrinkwrap":false},"2.36.2-next-1609772224-d27530b1.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609772224-d27530b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609772224-d27530b1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609772224-d27530b1.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kaE72hCdrZRjHylpTpHjy+eEbRjKZG0xXghy4R6ZNyzpkaDWCskpWwadJ8ZxoTUKIPP6SsyAlVk3Pqq6iImIyA==","shasum":"1702fd6d2cc2838a6ae345ed50532ad7f433beda","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609772224-d27530b1.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8y1zCRA9TVsSAnZWagAArPgQAIiISNIAS5ccc52JP5FS\n5cUsptFgiW7skBlaCzg+jScdkOBpM2ZNfDKhCe9m7d6NN/7pc4Ja/KQHFCAu\nlioEppO0sjFVcuRaC61WycVvqGClmb8CMptl2Rn7uCOanuXSOge9r5bPcYRX\naZ2ovKFgRmgNXjJoEIXTUtuDrzo+xxSFbeyJQkoWyzDIqsOkKyqYdmNA/fKT\nGJH8ZlEXwxjbzxRooLxklawx7WKpqYS5BaR6ek11PgKLcomfk6+6L18zJdAH\nNEH9MwZWGyYtxO1+w1YxTHPzYzeYxVjRDx1qWm9obe8nI6f5QHZc/j1N5eY4\nFs9GPgZVmumePTbLIvts6nOApmNBWlxg/lMVfQg/UunUgp1qK+3pyzhvgPzf\n17shpJB4kF678fmtlABcpFI7gP6tqeStKLuj3xdmacWl9L0Yhlx9fmDGpmfw\nAoFBzPvcYrN5KWADBCE93HiQhqfYbY+pXB2WTZx2KZv5ctSmICEF9kYHb2lj\nH7+gPEJybrBKj/v2LIyr9/jaeof0u69iSM0A3+rq+hfEHeI0glc8ioxcxQmi\n3dwenhxYCw9mAzlHl93qtlnEqdya7qBgm4zHyuz/hFPvuXSUZa1UI3XZ2+nY\nYsk9kBSSEjubqf3UEgr8iY0CHYooW1bpovBpL93OiGencja8zM4KjulLPmcA\n+m/0\r\n=f3z4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDm6n+Tr8XMS6084hupKpQ3etXu4dvf3uC08pJkP6mPBQIgd5fjQUqEDiB/3TE/sV+bdNA3Oc6pNMG9H54vR6JNILA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609772224-d27530b1.0_1609772402668_0.8983413832910974"},"_hasShrinkwrap":false},"2.36.2-next-1609776562-649ff1a6.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609776562-649ff1a6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609776562-649ff1a6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609776562-649ff1a6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KetofHXZzBzzGGAGg5ryC9cLNZMswIwzBy9Uzai1zyL7JOJd+xs1d4TmNoQhVvadNRS5ZEbRAMejNOnQhUq6IA==","shasum":"5f565574ef14b70036e6861145aaa0d260d16c9a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609776562-649ff1a6.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8z5eCRA9TVsSAnZWagAAIQ4P/jncHV47O58zuUUVYkAQ\nA1eQf+PGwyIc6VOWGBOIBorEEg9ls5QrbCd9i7IEG02jD0KxvtI0Cep2tv3/\nUvj5iV0PHkFrAV3f6g/Mc+VdPA3Ncrl23Mc5of9l1yos04u4fUg8g83fGL1E\nS0g0wO+eUKmXO2nEhVWbLaArGlz/18vg6a7xjSh8YOaZj/35ctkXOklNJvjm\nWKGNREYQBoCB9h9+W/Ib/yb29gDPyMiqC19QlgdzhBlMaqpDT7bsLikv6lT1\n4v89jm3x0TTUZQ0ewad+RVfhsvk7r9kd8LeKR1LeN4j28IDNfxMoSv76/xjq\n7OM/51wX4sj4Y+jfX9PsjIc/rVax4Gdk5pm234zL0en5hur353S36Lb28loL\nPSZpqdSPdoMQEtjdkc2FOUev/iVDR37Rmep7oC+OPB3uFk7+E68dZb4UApD4\nW4pyDRQsrQZteYu00Hb0yeXdy+sOmSOiVQmqaNtiz24ig8GoQD6tboEH7Jbq\npeQxSGb92pDz3gSEY/txltpPypfpGz5ZBb4G9pHC7JnYiaEkdCCYlwOIDCB5\nSsruH8yKDwDwBF4JEEDV/ZGbfyN8yrzODvDqSKHkuzGk7e3WZrAmB8wuv509\nG3zHsqTGnexq5bN6jffkx7/aXpWK2QBqVigZZhBFEv7qPqQ8cdd3MDz8fbXa\nzVC4\r\n=lLfp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGF9YunYBmFS4LELgmWla6kdVx8x5N4yZUJsJ5glSYmQIgUtAxnwQUUWV828XW7nyQNuxxLR+Mev31A3yTk6ARFmk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609776562-649ff1a6.0_1609776733675_0.27934356798575743"},"_hasShrinkwrap":false},"2.36.2-next-1609778310-35779472.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609778310-35779472.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609778310-35779472.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609778310-35779472.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vj3g+smnSaMg4nw5PZcAl7+jNPK6Noi34ZZK9Zm968gAf+l0XbVcK0fTangwqRl8YCGtJvLBdzOll8gOAHTq3A==","shasum":"1ce26fbd96b7fa2f92f9047c3cdc934cd606ca23","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609778310-35779472.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf80U0CRA9TVsSAnZWagAACpUP/3lwMkKncR5zizJh9lza\nPf1n7kbS5wBCgHD5X74NbWlGJ3z45HqvnxO8a9IRT3GEgnJ6JNxlG1ay/X0p\nCOKCVzI2P8duA0JSeduqn8kCsxZTxkQXMRGUqWK85FPEGp/I4K8AzbPuglJh\nrDbAJBDZqt9fSxHBm2QG2dYdD2M1WHkgmks93ulBTHv8u0C4Q2QwSKWKP9hK\n8jkhe22ptviFUB84iqB/tZ73CxiFf7IdGIo/ZEmQrzvaOH22/+VByYBkxNjx\nscMrrFQpfV5H9n5QYslST7EIOMl+6jB/fNsB8Jkhti28mzh1ycDTP+5Akulv\nWu6d3KHdbMX13hIXHV8FhvRKwozerzvqmiBRUNOtZyagl4nrO02CVTM5cczF\n8T/NdF3TmDv1u4cj8CkuYmOHjUqtuawM0QTzJxaMZA67npVQxF2BOvmUX7gO\nq0BpJDcGO5f9AUpXODfmQIP3n4NG2lazkED4jKF0VpbUQa6BiwXI1IwVjkJO\nfCGOmDiAVS+95LzIQG2sQEOasqdEeh4uVPiJqZ2zseFBo+l5hA6OQ6BQh1IF\noGMWUyxqTJqOo1idqLcIsRolkmiX+MMwPLHza8jd3jnHTmyVQVc/kc3H5E0d\ntcXGcdP0beRLml5MNltLZGEDX5dsea7ww9OGSmiyglTnwkzWZ6pGa4Sx1mVk\n2MqL\r\n=+5oV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHM2S3ec7XRXFy+r8srno77VZUOT+IdeyhJI/ucerQSFAiEAvtxfT0F2zYUNgXx8C87fpeZO7RY2l1Ms16nNlLBJo/E="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609778310-35779472.0_1609778483309_0.9377519102296783"},"_hasShrinkwrap":false},"2.36.2-next-1609779472-2110381f.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609779472-2110381f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609779472-2110381f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609779472-2110381f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-A5K4c9vkgjDugm5vmLB/a7i8g9C2zzDXCBa5B7qk6NuIWeYrbYREcyZwiulfhlQnqbC1WTV1JK5SrPPDLqo8eA==","shasum":"07f54c429acd18bcb6848607b9dfbfccf364db9c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609779472-2110381f.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf80nHCRA9TVsSAnZWagAAidEP/AluiLkJIGcpfwZqS+2E\ntmilBJl8i/xCmgd+FXyVtf/BCvxa1svo8RfEYN8BSQorxg3uyepHHuPFgOSZ\nGAUc5eb3o0B0XVOn7c9srE8iY3E0sPYafR3Y2mvMu/q59FN/0AeMWcqaMNIJ\nUT53XpUqs6IZlb/AmzORLSVmCBO7lg06N+fISBkzXMzyOfvHwgmp9k06Iq/8\nnVINP4hcNjgmuxw5YP0omOprmUlGx1IjeirTa/bLgo48J9eGOyBG4IQ/w+3s\n1FmO3ZoaEi0bojOFOGyx7gSt28AD4GQjY7DUGEPVhCT55X2Rs9Wbv+xENWxr\nwR+lzr9RdoViROCNSgtBXhiLi6DGYFMu6MI4JLtqz4LgEsZp6HpzL4te3TiR\nSgy7ghXPmoQWTzrIIY3zwfm8SqXVj3TbEteeVuOVrr5+3SIO9Wk0+EM0cf7m\n5bDYHH2H9qEFip/LumMDyACIxds320Q53iqWO3mm0u1B58t+LUiCCBG3YnFN\nBoZuZ1Lh27/sxhsZoESYqGoCUr8m3GWyfZChjJczRUG27n12U1ZTenz7hRDl\nMqIRfCP41hN5RmR8B/doX3VSGQUXi5YRtZOqRcr4eLIO3v028dIOc2gTA2wC\nTWuAtr0vnD3LUfYvWgfiKC8WcCSTSlGd1I5As+G2dZ+8Y+WyWwiuDLviTE57\nFeHi\r\n=517c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAnrszXiuTbQP4zF/QRPjB5hSEz5e1GTL4C++tC9B+WRAiAvgvxgp/x5vdacjc0P5FbejvI64vWLjv+8GemrSix2Lg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609779472-2110381f.0_1609779655151_0.5174141105646293"},"_hasShrinkwrap":false},"2.36.2-next-1609780332-173bc48c.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609780332-173bc48c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609780332-173bc48c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609780332-173bc48c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-y/ODQxrk2YRBUJ39YWZl9842DHp0xhBhX5Ir7ZL4G6qv4EPuqCpOYR/AgYC86my66i/8YTdU/kK/HQYtsj376g==","shasum":"e2511df7bc4004ee70282a66112a5d3f06a1dc78","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609780332-173bc48c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf800ICRA9TVsSAnZWagAAgxkP/ROKjrl7XZBL/giqe8W9\ncMJMfrmoOB+3ieBXSBw/u9Y1Wk6hQwujN6hx0UvpK8YoSZVY2VcTwEOStdxl\nuGJlUzBimqP7MCB1FN7pggxSPxYlQqp3wzsft9rCjO9o/2e/Q0Ni4dtDx3ss\nfjBLBpj4ErJDC4HVWq1nrChXH5sx/1S76/7PJ52tgpaxlRwEp/W86Ofwq7lh\n86cVNIrwI0llMRV2lfH3TleQ5e+AoOADSDWNrD9FBchPSybSiTyJkQi7aBQQ\nKmruct2QkKB7MBFmTN8VkQ6CyPl+xBiJPuO32J79Bi/yBMwkVsrcz9bZBNhP\nsZxEium7HiCjSf/jlLjI5g+Bu/p6rGZxmv272cy7w3jqs9QeQrdqQS1/rL2n\nqW/zJ+9KSCNyX4xlX1p7mPBj6WKklTSwpdq8tdn2yS8c9SbVCu880mwoPEOn\nFAfHE71K1WAMGJlmZs9sqvYU1M3Jv1ZdZacoDq/LKKLBr53QHp6gPfQUdGj4\nmTL+916UcGuBQWCJIvDVe59Ha6t1Z6dM5+URMu2DT8N08VMED8sZR+lkq6JG\nBkgHR5XAAet32h0z+JLv4q9Luw7mfHcRW0SzxeLEislyGfWgiqd+2dYVOLBx\n644ZpFkny23xwtQrPsFz1VvRjU3VfbgGgZkuK6mZMsN1lCK0cFwHh0+ki7eT\nng9A\r\n=cTqA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtwzZzf/jOIqgl4Y4ngKSo+jaic2G3KbUFmHOxUi/btAiEAphGpuZ+V3PuJIeOAXt+1weobyLFzeCbWrRqfXpTEXQI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609780332-173bc48c.0_1609780488002_0.7422478871280034"},"_hasShrinkwrap":false},"2.36.2-next-1609782322-d27530b1.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609782322-d27530b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609782322-d27530b1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609782322-d27530b1.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BXcq6cEWTWldK+VQa41aMWD5px+6dyl/f0VTPPGFZRCplJg3dYLtEjAsIALQPKIys1Rgsl6qJSAMz1TDZgVipw==","shasum":"7abe1df88d25b0e866a0b31601e0de8f797fb1c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609782322-d27530b1.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf81T6CRA9TVsSAnZWagAACREQAKHT3acqvq0DFWYR4V0b\nDXaNqrEHFZB3oZcMkWtFrvdFjeSY4yPVrV2kjJCpZ26P5cR0Kf8G08JLej0C\nAL7QEDtbebY5O69P6NBGvi4Y1V4k/i/q8iUlGF2G6tuj0gC2PLwUNvBNK+oC\nSZ8v8oKHd+fWzf3Q4ZYIK6F2ZFFOZqGvsKTG3hfQnvtg8WKVDmvJk9CV7TFO\n+IKZeKpKgWa24PDgUsaNMR+72Bm+kHsS7d0aXkE6f6dgpZT8IbCpm9k89DtN\nZ2A+4a2cf5JC6xJq1lkMo9K0pMvxwZJKDilowzssYGbapnLuMW3ZLXcqDcFw\nSwj2Lpsk9Ym5XuuYs1PiCe6Tmgroh4hI5zYM6ogVLFYim2z/VqmQgYo4hJdm\nVjqXhxh12+tivfWBWU/yFNdEkNDbOpFebHjFdSZXqFogdxt8TrE52t8X+AD0\n0LedjQ3U//E6A7gkVArO8itYuQjQ6ShoaWGg23LFjxHri+dC/HUxSEnndX2x\n3R1Bwv9BJqy/k6GzYExh3q+ljw8wdM1FTiZz1/E+ozt4DiMD6/Pb9BfONUwz\nkjhCX6DdyIvLcMLRn0Hc8QM5ylUhSYXGU3T1E30X7AOgXpsiMSTl5J54PBfx\nUAI83FpfhE7OwdppjQpJruF/rccnoPwjrDHRdCNE3UO7k6BCCuBVzL8OA5j2\n25r2\r\n=3f3n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFogeUXqJNYIcgXFW+gfnT8l8JLKsyUNDXJRW2zCuslzAiBF29aTQaYR1ZvzScHF6KnPnU9gAgAiv2+hSm0g9CQJ1w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609782322-d27530b1.0_1609782522317_0.3156843016308313"},"_hasShrinkwrap":false},"2.36.2-next-1609785170-be6a6494.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609785170-be6a6494.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609785170-be6a6494.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609785170-be6a6494.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZKIML027A0MflKovZlU3e1TXdMThrFkK/K4lrU4mwPv7XS9/qvgJ/Ghr3tZnLwBZOi9iVlMWOMPAKdeVR4C6jQ==","shasum":"7117edc7aa385e1373380ab44716cf3675bef96a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609785170-be6a6494.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf81/rCRA9TVsSAnZWagAAxR0P/3CcxdYlQhFSovMsLyU/\njcdbt/yDCl8ryWfF1KpQQoL2eiLnNhAaTn2C9zOScj17CkFxw8MrrDeqKWAQ\n3Q8sC+lNpJmd6tIImLCGgQT5XJ9hYZHJ2mbZccAgUd/9O4lrhz8TG8B8ZQkp\n1am0Ts5OeS7IeIDTXMlXKVbBEvj1meFZwHl+P7PK/LzRWHoVs1jULZHO0ZwC\nYU204D/04UYJF33kHrN529Hy0sI+JrkYcL2P6H63vx22PY3xY+or0xIINShC\n2QSM2nACp/TUQl30UqW4MvWGMne/gcZrFCQqMCqCM85QlaT78mulnr+9OyoO\nihRBnSjuzrlgLLTZ9ujN+sGAa4FCj7sUHTjmxcFUPku8a5eJ5rAj8xNI7xpr\nDwogoUvQNdNXmNq8Nwidv9PlNxAH/98siK7pyS/KnKtQKI/dBNXdDuFLWF/X\nQ0rvGt9PVaM6BX9oBZX2JvteZt/G8C8McQjfEwaDMAgbS7zf+VGAblNPn8Ar\n1bjvGFnjQlYUSbn1e3y7efFPJjej6gQCHQc3RcLSAGm9B1s93Suwe9DTZVZ3\nxW/gusGAV7iI+u/7/286QpxvyUdfmeDFiYz8L2gThmWR9iq6YDUx2EqMlqae\nNCu9PT/JBsk4sXJqH2LXSuAoD7qm8XZ5iohEfGLTtjXXvJ8APwQIdgoqyp0E\nog0g\r\n=zGpe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF5X9jOhSBZqxd2pJ8w5j6HS2GdZVIAYzSC7WWC4aOfVAiEA993Y5D6URan8QoBHa1FZnZMmEoaGFWKVaCC4i/tjso4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609785170-be6a6494.0_1609785322879_0.43316893112971355"},"_hasShrinkwrap":false},"2.36.2-next-1609786762-f49c471b.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609786762-f49c471b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609786762-f49c471b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609786762-f49c471b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-grQitmkyg+4aLgXRZ3LXffQk+d9vJKl9xSgcTn/yIgbU6oefO4++PBVOPmnoDSEa7xkEZVc6Y+co9vnqyDvcEQ==","shasum":"299e93977daec0a4a162a86c2f4707e053c8a69f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609786762-f49c471b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf82YhCRA9TVsSAnZWagAAtowQAJIVAh6mt6fSsAiQ4f/Y\now47F9gh6S2xBdWpTke/0ZmaTEgbaXaIMCF1OKU49EYtGPT0jBzZFXfFtf2T\nuNVi7X2bidRoaq884SDE5KyRjqeV9czHYIi/iVwRrYcgM/bn3j/Rvtk7sulq\nU4L143PfxriqIyeg6Ts0b6GpPKIX2TxR+bRtFh3Y6cRafVqLgu8dzLCX7fhw\nZ8Us4fPBkbsQQdFdFETD3jApwfWw9rcVWnpweczpJl6kACD+Zj7nvy6gtWzk\nG/YIQf1jmwlqe4ypnGCZQHS7x9B9BrHAJU5/xEK/FdzhO42Us2XJVMuIeRr2\n01e13qoU8bwXaZVxX/CzgCBMm/eP8hwv0Nej2a2PPFI04y4dblZfjw/AITiE\nFRlSSYla1T8Wnct0ePPWoAZz3cLSlYnL1pGbqCuJQdvV9cLsCf47UGM8OIJh\nJ21D7JAsOqdiyg1d8yUWsBUyAyK6Y6KR4tjb4+VOXoLy9iboG5GBakMdX2dd\nTYhW8VkSwp/3xODgRr7dLuR5Sv56T3FbWBtaI5LK1N6IlPPJAnXSV85gS85/\nBPNhkk3EpJ0u197l6DrYgnkkDg7yh1Jh65xdQd7+Xpn7L2k/botJIIRo+nIN\nBilcdlneubY0AzTOBeAUR3BbQCx32oUV0DNzYpCQJpTRfC+ho84d9HUTlU9O\ncxZ7\r\n=YG5x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOO83VeYCiDG+7la1kKdqhGWXLcRpztaWlc4NLAhk6+gIhAL+4dOCz8vIyIe32eRUKDj7zdNjLqs2fQgV7AP2pKWol"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609786762-f49c471b.0_1609786912748_0.478491945077099"},"_hasShrinkwrap":false},"2.36.2-next-1609786819-e88a7e2b.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609786819-e88a7e2b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609786819-e88a7e2b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609786819-e88a7e2b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-q0UQye2zYTLteL7/6xyDdDdMN9N7f80rWCTkNo61kcTG3IEY7vsx7Mp8b5Z+f5jn4n9BDfKq8Ji0Fpzr9RYi+g==","shasum":"66fc5138dede97c5ce1d7dd28166b239d7e459fb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609786819-e88a7e2b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf82ZtCRA9TVsSAnZWagAAh6gP/jAfjDH65ZN5Kvny+5AU\n/wUDxUaWWT5z/Yw2nLH2wUGCGq48xfwyWdmHqsJ6rlQjnmYtUD1mIBnoEE63\nsXzapTBZh0MWX0wl6/XCAQX1JvLpR8zgTMK8SWDqv+pWNMRsx5nFfD0sa9m8\nlDMWCJrBSMdBxu+0q3gC+F0BLwfHaP1aiuCM1nABzOfvavcrmMrWMFR9oJzq\neFicCkDF/LSiIIIhnkPbz54pMy7zRh6c/F3rB75cDhDSC1lHpZn5wVUfxCem\necQi/0gXNZwIlUo1qA3pHvyBMtwSt/X64MgVBXFs5XQZpsNn5DFupW4ieS0W\nArFrRWaPPWDV4sk7IG3vBPW25T7urrbJjirfoRf6cDWUeVicMC8an9DwKI7s\nBbYi+qoOyNr/p7Jfur0TK6GHDVKBgFwcb9zn+8NnKyjUc6nOaFOJBdIgR0tX\nx9IvN6ETe88Ek5VruZKoaxfMKEurlXbMTynEgeIQDTE8uFIi5RAcOpH65ExR\nYCys5p4CkC9Kj7HHzO9YqIzP0k+hRHrqgTXg3/Qifk2oqJ/8giYhzAsZ5g9m\nTmDd4mh9dmhJsEB4y0ANuX55kyxvob7xcLZDfRCJcDQzC1Kahxn0s2KVgXlP\nXFUT2bAWEhFyfeF2/V2Rea3aHlE+pn6wt9Yjxn6yZhKuxwzojWpAbFWWgKms\nki73\r\n=easc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSqm/sKg4U1h0VgtbHAV3T+vcb4agWzVLiBj8AAh00vQIgFDubJha0o+uLXl6wQhJfXMODBuSQeLhQOyKcOgd8YrI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609786819-e88a7e2b.0_1609786989111_0.8268518956891908"},"_hasShrinkwrap":false},"2.36.2-next-1609788058-22ecbc9a.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609788058-22ecbc9a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609788058-22ecbc9a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609788058-22ecbc9a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-SyEr+k3n6dCldysIZ1V7GhxBAHslJXLY4axHNj0+4E7reWP2vBhFf7HwFkhreB0uMETrKbkhaVJ54F5udcbpTg==","shasum":"c6da55778465fdefbfb4b5567d17328cb7cd0ff8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609788058-22ecbc9a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf82svCRA9TVsSAnZWagAAffgP/0OrFiB8gyrLW/DqK45a\nCEtEqZJUUXMCGHn29QpiJiq6GPXR6/jSohGdN/gYIKjpy22AeutT2zNWuOBb\nTAF66N55CeCddYysY+S49AcHDaDwxDx6lLF+JOcMpKm/7xmVJkkjjtnWWdIF\nyyjQXkXHg+47861yqE2CGtrJSy/EB01Bf/dh3VrjVUV5UI+w5L4iU5sT7GFG\nUxWGQaN5Uu8NrUqS7AnhYq+lyH5bijCW1hFpYRYvHALEFQaY9a+QzJ1Uqtc4\nrI3LsohQoUmIKZ7IsL3d0pi/jeQpHg/baFRC7GD5hqf/AxRhyY++kxZBKxbU\nl9nTwsvQ3WIA8RnkVkccngjzKv6PnuuCw1T8Cddf9hWavtAXmUhWSX/jS7Bg\nf2SXRH/u8Cwilqn+iZNUSaXVOGMPN/+z6ujQ2QhFF5abpfuYDfwbHqcmO1j6\nrY1yge99n+B28VuMj8/mh36sCpHG6qLXvQ10xzRH5hF4nBS8TALOEUozzEMQ\nba3BII4FY4oy8eBzy8ousf2KMGI06vN/7pp9BiidUqVuj6XrB7HzFJU6xN2z\n1KiS047Xt9kF1gI73BkR9p9ya9XKRCGFr6AuV8MoaIcnycphCqLFyC1JhwbV\nfPbYH9Nvkm+sMQERDzYU3HLsva0M4xRFkGrQ7L+EG6lYhZhboSYhYAzPI6gG\nsBts\r\n=uGMb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFa2wdFoFlJckDXRKYyZsocCxZXWvP6W5FbHtFmEJ7zAAiA6z3kOkf83quD6iLT0RU+XYRDlc55vLz53Y5/QXWuEow=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609788058-22ecbc9a.0_1609788206504_0.005296257828522721"},"_hasShrinkwrap":false},"2.36.2-next-1609788567-7af451ee.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609788567-7af451ee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609788567-7af451ee.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609788567-7af451ee.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ylKdlW6AjajOhtH79x1SR0Etyi6MhZaP81iW7vEtIQBG3bf4GliWIU0gPnW2l1Cm8KMBqvSPx4pxrt8toyKHWg==","shasum":"bc8f8291e1c6ec0ee67bd57fd54fb9b2f7be2039","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609788567-7af451ee.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf821BCRA9TVsSAnZWagAA3lcP/RoFbx822dPHsZi5/toX\nHd+l4RboG+zgiFIYK21OgEtahXbWf9YO3CjiZyBXHxrOoA/bhazqIs2zr9eM\n3bubWOBjvIYDKiSv3Qd2WnPOnFfrANuLyORbsclF38gjt5+HgOAObgnNmBqR\ndlE6r01bLmF1H+WYiXh0Ortgw08abYYQO4BfeG4TAKScNStsyYghzM2gQ9n9\nWVH2gUVpS4RFTIB9fil9RIzBIfuiKF6Swcsd9BbP3G/eFlmT+aFZ4AMp52W+\nHyTbI7Wm+HsYtpDReXx64ys7Z1p9rPZj1TsW4kTvrARTVNgBdIWapyV39nHH\nAN1u1UDpD4WnDr8dPu1EFayagtia9K5oS/ivdCbpWfbRqmspjceKOEU5nKXL\nqSEk2IeTJAwmG4prxC8Wl3bXEMeYFH40OGuluGDGdmoBJ+9XULtbBku0PMq7\nAK5mqMhXmxFByUp5x04vMe4G3NqWqdHAR9oUYnwag5H4tSH/hzOhbdCzn71M\nxqz3ntyIvCv5Z4ZiBmFmws2oT8jpjLVS1WmHGD81TUK8Q3gX9N7qvnuR6tIK\n7eeoqupbZnhM7YYgduB6lRkGZ31dvXY6w/li0Vo6FOyaWVrTRSlcD2mK59Tx\nyzE+pcuS+1QRyhHeZDkch+f4IF1UaVFIA6FJ+/UKHn7BqTduSfXjxnS7UoEF\nVAyN\r\n=Cn2O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEE7WzFdNiA/IzZxYI/E1xpqKYO9sMMQuCBhoVbJzvS7AiEA6oeDY9V0Hq/gftCAkNXgAOiHQwiakLKhMoZ0qtAzzc8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609788567-7af451ee.0_1609788737288_0.9626957729232517"},"_hasShrinkwrap":false},"2.36.2-next-1609788611-dbbc4217.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609788611-dbbc4217.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609788611-dbbc4217.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609788611-dbbc4217.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HUHYV3jjhVuWEGlQFeoPwDAnybbIkyqbm5cojm9/MRQt446riHbUCws+/fEiLOB1as9cN4S/Ge9GObzVRpvU5Q==","shasum":"4563d26541f785821c92c25c82d187c67614d485","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609788611-dbbc4217.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf821TCRA9TVsSAnZWagAApPcP+QHR0d3A8iNDa7FsI3uB\nof4GVT3H6QtAaMWRI1dFo/TsBX7IoZZIuT7gGM699avhaG92cLmmjbCiWGcW\nu/Yz7eR1IDUQjHm69OJXLQkS1MrMJTmEndm9/fhCrK0RhK6eQbcyjHCC0APT\nYjWqyB81ajYzB82G3EhwYNUIbjSd7nnlRMjKZTZuO3rfQ6aaH5Fk7CD78slh\njL+BzzgMTH28GPrVCrA7/DXKwagdFwQMMRVwfoNS9iNL8qwSkuL4jgj11x6z\nYis7ZWqphu7zVekATghOLaSIpu6XSfA5kJAbmPHrB1IW/LFv7s1xsdfoTZko\nmoynWaaqHW1QcGIfWs/vqy8EtzjcTVNZtnbkjh2G3C8+hhnD6iRZ/hnmtcXe\nj1LdI8hZsBcFe7eO2gBaRIf/Q1WwF40wKE2XQIocDGe7gTohd+LAgYAtLjRk\nBeluvGB7fSf5bxyQFZDzcHoiAxO8dBpjwqZzq3prOxYEDRZe+ZqOOPAeLkfi\nhnWLv4edoPZohTg8liOHTpHiva7e8JDibVYdiT1s837hxXn5FI12OZn9+7/j\n9QTwGu7fvGPq2+UmCfXuUeRDtKkc2IBkdWB37VujPDoML7ME9/tD9FsgswTw\nwf4wu5wc57dRjV1RehFGJ9LmyoHWj17qqkI+m5kQOd2eGdVa5aHtkruQdcmG\nGnpE\r\n=4e9Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0c854crS+eznpfAOKd9FiL3gxThqskTX8W/SUF7X/ngIgVbpY8u2X8bjktJFnlG2ktAjsacNioNo1DK5VCQ7Gdas="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609788611-dbbc4217.0_1609788754846_0.3620103717006564"},"_hasShrinkwrap":false},"2.36.2-next-1609788700-c3f154de.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609788700-c3f154de.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609788700-c3f154de.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609788700-c3f154de.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6oTm6iO8u7ZTQA4UB3SPkNw7D2fJ81KuKkf9ul8O5Taz1pWJwCudYK4UOvH6wIf1keqS6scBH32T74cOEuiijg==","shasum":"d03d29080003223b943488dfc4f1ea2ee77bf311","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609788700-c3f154de.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf823gCRA9TVsSAnZWagAAKcsP/AtQ20RR6y2no25mjdWW\ndGy2WVwc+xMUYIA0TRigU8VFdDwcTDh1yUwE4E2+3fgIg9Lw8+spX8HvkwQK\nu/rtGpwtPCgRjch3nRIn0z6L16QW4SfHnI8UcfMva9kQgkzq72CFtlAb/P9c\n4/akw4vztI6tQvbBVs4yCU2qJrj8O0uPNhH8/TRA1OewQSwTK2aq350JLEIR\nvNBE1uX+Ob9fVFZ+vvrUveddGrTCKA15X7aQ0wwXJcJOHY1bDkfXzcSgyr4q\n6d1E74sTBtjbh6BWyHHe2pkpJukezL22HZMKPdcqVbt2biE0i8+zXllD6nyx\nHKtUFf1xTWzOs3k13LVre/TEdVKCQXeBz6GH1GdV9MPiuXzELDWFuy3E384y\nIHqqISSJFuGySCh4XTDeZWZwgU4I9z9yef3HtmptCmwta6Rp0dros/DGh57T\nGZ1qvUyHHF8lKJf+jkcYAuvNOjmGH7MaEWxFqXj98g7BVMpI2W6X+M8eum+q\nHl2/zwJUk9W8u+V9QUoOS3xZ0ymepLPJs65uk1vFB4rB0Y7Mz/JHnI3A4jjK\nPPB+4S8Jn/by3Yec3EejlVC/+2g14qYkCJht05cLh3WS8A3SDhQi9qsaVvz2\nGsN+6ZUtZFq747t4mVS+nEw4TpblnEa0wGJ97YQ8ia6Q7DG5guZdVMn65pJ5\nTQZV\r\n=D5kM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUxN4w6L571B5yVQjt9DC3swy72Dngo6nl0NGfdjOZyAiACihTXiSnaYGy5/1XL9TV93XFRDkEusFYS1GtGqaKpjQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609788700-c3f154de.0_1609788895932_0.5836948680313347"},"_hasShrinkwrap":false},"2.36.2-next-1609807904-be1239fa.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609807904-be1239fa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609807904-be1239fa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609807904-be1239fa.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BoAxlKvGPTS+TRWUcb30pcpHe/JC6Tce473iQ1KvIhMetV6+otkWia/laH04LYI/Y7fW1rLcpMcU5MhOXlKZFg==","shasum":"a7b84d6b598b1f60b8fee22285f90c66fd21ccc8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609807904-be1239fa.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf87jUCRA9TVsSAnZWagAA8lQP/iHTJBjVAoZKizSJIYIu\nnlEIpweXqZ27aDEczvnP0qXIhygGeLdBtv71A736bO+Qk+FjBzHfibJvU8r6\nRXg/b4qTJxIYNy2XUIdwoy8gXFuxmA7QPkmM+2BXSOagvkOtcJ7nUlQbZNXy\n0gXg8LLXeEJABlot9lxz/5kfwjOZqclwEUcRVCW9E9dVQ0qj3pI6e1IES4Fp\nVf1VkmXW8m/xIg3JHUsH0r3ULqqThT/fopTk5u3wlSYmJDwezEaHxfVt/3h4\n3O/ObLv2CBHzkO0fhEDCqpcof76ljCRWi7h2zpjBWf1m/V1kJPLg6/rFlwZN\nfG0B2TQCx2MXxCMW84tvn7EQo/1TmeWZ6udnspWdcSGkbqZU66tWyQJK953a\n3lPvuFaplUtEALCmGWVOlGMDauW9NILb0v1i9LCYaxJiUgdjkX7skxRqyKld\nX4g2GSolomxKvKuD6b7ptLynfC8TRlH75dvks4BSNplfgLAmYdTqcBgatnoe\nVNWvbmmMutWPXDf9PHnKvu+FMuagyYBL1i2rt+7zaH5ciusypnlat/OWa5LY\ncMw1xZTnnmsOeF5TnyTX1G9bXNFvQJi7mhKXuZ+ro7JrP7nnzWzBg2xeQX9n\nV1bp1ZCxCSoZ5CgbG3J7dl4CZVbpeRJWqSrvZOC0rubrLgvtees0od6U6v2G\nBN1X\r\n=rXvD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGJoTgKHECgsTs5MMc5vxbXIzJaCSH/UFXvyYEUdqEHhAiEA008tR4HRTVi+SYmh78LQ0zvfuFQeks495a3KCUOCJEY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609807904-be1239fa.0_1609808083686_0.6065130733867665"},"_hasShrinkwrap":false},"2.36.2-next-1609837080-490e20ee.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609837080-490e20ee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609837080-490e20ee.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609837080-490e20ee.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HsgawBDFu67/6lLC23LkPHUuWbeqomWitLbOpNgQ/GJ+VXq0hYImOvqQvtpP/v2qWUHtNT32sf+nmxUwOLtuXg==","shasum":"a519ad37c77e0a9dbd77e8c8f6d1783e685eaaed","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609837080-490e20ee.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9Cq+CRA9TVsSAnZWagAAzoIQAIbY7BuDvYO5MbT3uLH6\nIhxxxtGyIMuHpV5j/h//ZIvV7RnDySCOKwMNW7XsU22IFEpSfpfp5Ku4ek/m\nJBRSKw/YOT/jN/DeKPKfPL6PWlZsYQh6LzrNzWI5UBnW8ifD8dTdWfqsJ162\nRdu/Ukmnan1Vzw2yYE1tY6Z+0TF/L0DTVvwGh7JZv2dyBFCSqW3lV6KAVB4f\n1I861iW2s+olvuK+a9+eyElvzEOMr0wedAWdkk8kn3HH/w0VsnACfOQZJvRf\n5m0v05zJpjULXSyQFcDtZBMRJfwG5AU0YSeKJRCBU2CYWMUz2xLvWa1pDL72\n2CKy72a7Y/VPicmfmEawavmyiJGN06rfro2KW/GFBaDIw9oMSFpXPrU7mh1g\neQOszTMKqjl7UXNDnRjAHkU3Fd6tQsQiSD+Qnn/5hH55Fmp3bi3+fTsUZkYy\nTokOOpSMyxX65WIwbLqKPFrQVUZGw0Y9WwTJWCRMLTE881mYilBEAe7vgStx\nqp89WeewVWFa4ZqGPgfS//fyv7k+la9o0h02EtsJxMo/iw4rAG7GhlBJvUAi\nYXRhnNqLy2SEZTKzUBSd8IsjANdsPyrLU/ynx7TPyg43OnM+8yZ/vzZHFONN\npuvgaONobLJjqJ9HxpQSmZsahleqotc3FGDNsfpRUSZiFkuejiEFtkHq8G0W\nKNkK\r\n=IeoQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHcveTa52lZmqA2TwqHuKH/zmRcOCCJAJnVDEmc7AYOxAiEA7LKbCYOgcBRlY8qMUfJ1/I2AmRxs8rXMrhQNhnPE8l4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609837080-490e20ee.0_1609837245938_0.17874562756918078"},"_hasShrinkwrap":false},"2.36.2-next-1609841654-ff67b460.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609841654-ff67b460.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609841654-ff67b460.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609841654-ff67b460.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Vh6zkmTC/OCGzuHnbryEeu4oaGCQAvC4EoeNn2o3tTmA0qFmLvZtGGlP93cNN65vqgdawGQ0ShIrYxqqE7SzeA==","shasum":"cb3315ed351980002937f0371eaf4f304b9b9035","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609841654-ff67b460.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9DyICRA9TVsSAnZWagAAap0P/jtEvEt1ImObBVU9OjMX\n8KRDsVVjpO9yOe6zEtVDzC2x+NzsIA1zHlC+ogIfMXpBlgP1S/LM7Biy1T2v\nu5avI8xUq24KAfMmm+4/e3md2CfQ8yMyCqaADDrzdlpgOy+47lXyd41TvE0W\nX8chcjjD4joFwjzZflzNu0WAts6IzEQJxKxMX6kuuCunEfinuBzEOFcMwLQl\n3yiPlgkfmkYHzZVTYs6ETnff91xjYHGOH5ebG5OJ89KO++kOI5CEvsghZLVR\nJ/P+5JgBsUpxpLUHJtHlnW/CQxLV9+BrbdQoiOIXrEuNbtifqV2+H2BKXQxo\n6FRYrqCh4VG9sjag8diUf+7hlMOBlJYwqqmYKnu3XL8ato8DXiylI65G9Mhz\nijN+C6N025mQFEp4y43qY5zsXUHS2GQGvZDbnEEPSfGpENXk0mmQPrtmLVlU\nlJovDN6yD7lRQLund3lDX3xqJn3uitsFkIu9Sdzul/olLukiXGimaDw9A8Iu\nuZp0PBgtTZ73M4UtMiB1nFJ/6HBgrsdhbIxE6r1uSebGy8eTUnA/9Kyj/qxz\nuFCGoMA3fncj7pFWPNcbudZ8XQkOlxGxFabUgKHCyqbkZeARy3xNSBeveUiv\nZS/TRBtby871jqj/VetBQOOK7wOhm/ynsmAG1UrZZB/KE34fSy2TE3w2NwNF\np5VF\r\n=z5UV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBgr793ElPTcuMg/KfkAWJbB0OxMY7LmHbUdB6m8UtUdAiEArftEDRE0RCME+WlDWqyF0EnmEhqYJLb9+QUNgkUdU6U="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609841654-ff67b460.0_1609841799534_0.22712403900455702"},"_hasShrinkwrap":false},"2.36.2-next-1609845820-70f0ee96.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609845820-70f0ee96.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609845820-70f0ee96.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609845820-70f0ee96.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XYyQtL5oSDEASdCqH93HmisSQN6smGqL0onC6TrwF8RKXXk19Vm1ZfQXIB3eHvhBcPd/62GGr7i67DIpjTt1Ug==","shasum":"9b822670ace1fc67ee8b1498b8c097482c887010","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609845820-70f0ee96.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9EzkCRA9TVsSAnZWagAAQikP/i4Dv9lHF44J4VagLlI7\nFnSgDllR+JJjKwnITD1EM3q61y/+Ae2rIUxScxRLka21hOBra0NuUnzIt8E9\n9z1KbBVzcD5c2cHlcZ70wwCYAXd6D+nZfQ/NCfmzZucgyrB4jtG5OIViTCj7\n+X5bnqqma+vomvswyd+RlMy+OzwInkbef3k+ea4zDlAGGFSxO0UuHeSr5i9D\ntoVRKW2a+znr3YoJe35riFYlB++dnqnTEXGzPAouXINlFB0kX0BRj8MN1CmU\nefVOYFXA1l8cfLIsoModjgiAf3R9Fc9QqUiH7hQUEgOzzn9f+hASMLz2cpAp\nc/I/oPIgmiqBjQ/mL1W0WXy50fVYbn9i3bhJF4t9Og0u7jdXzu0AFaElUkeJ\nXyeSv806RK2Vf4/WVwB99Xy/7c01teopRZrnVb3hl6eB4yZoA3xoGKGk9G56\niUlTKiqD5rRQ/Ug9P9OzBsaoEp/gtc9rmnAyK0yN4tJciHMsHMFazUnP7bAb\naiRDpGQGUkBqMkUMefNDZHTrCY0vYgp3+9fC8Ao1qTbnnqz3zeZjRjLpaYdo\nz8sWvPpzvj+Fld6dqKNuMh3mOqJ0u7cg/TmOu08vgavSvN8Pi+yFit1VejR8\nYtn3Bd5Xc93zPKKavcok1FfPKpAi2NwT0GsbzZQicSx6GrCfwm52B0mVsOWn\nKh37\r\n=ajoC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDavEHXamiEfRbgT/LBymoizWFyUwMjGkNwJdzTp8gh5QIgTY7BY6GZ3S3cSPgGPn6pbEW1Ejk1mgRiJ6i1V1hejBI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609845820-70f0ee96.0_1609845987637_0.4601555333889946"},"_hasShrinkwrap":false},"2.36.2-next-1609846275-490e20ee.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609846275-490e20ee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609846275-490e20ee.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609846275-490e20ee.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6S/yOzGhS1NDKTyQy3ZS8mYmGvc5lPVclhdJ53DLz9+YQSH24BLe9+jW3GYhm8d4D6qAuYclv5yC4FZEVBJRkg==","shasum":"b68a0721623d15ef39a61b11b6e68b58a32619be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609846275-490e20ee.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9E6yCRA9TVsSAnZWagAAP3UP/jobodEkHlkr0DCLccHl\nwx1BPsIeB6WcqmNXPhLl9/5Ivpgt3YXlUg25C3ohml6ADxmp7pmQMOo7ae3p\nGargUYb3viwkYmuKGUxcjPdadk/IDpg21QoOMCQ0SIT0C6tG9rUnOqjNfSzL\n3oWxFKCC951B79lD4cCNhXQRQZXqfC2+m/V8j0REoQuPROiNLoXpEgjwF9/X\nV3uf1nrz8qm8cNmiwQaEcqhzQCB0FKL7RvXEW7zBLs7JFT23J1Tcw7QNGll7\nGYyH9syGfyhur/CkZHEcqt5BRGs8Go38sNG3P/gWOtiuFaXN1tcfbZ0pRDBH\nKIo18kDpCMoWJnPwWMTNAc0svlgeRIXQ7RwpJMlA7jKjab8CEHpU8ARztEox\n//lGZgx+uvQoE9fH+Z8KSZXpSyqUw2fPxOMn71e701QB/oKMLt6P5VWz+lf2\nrfqhf4wYEGs67jEvH7CaAxK8ah2B4ePVrciQCZvvzYKWAi+4g/tDNlfPh7XY\naW9x1rYcsqYIzMCech61NEdpXBqTwNNXL8mOgUVMX9BRyZz1idw+RSVe42tI\n/10sLcdWG3CQg/tvn05ypVlvkmQmzFVeek0u6KfPBV9U+Oe5SHbOrGL+I0bA\nENRTyZP4g8QZumk0FG8s9IRrSovB38qxnhwCfKbGx6FIfDbJXt5mbpDAsxVg\nFH5b\r\n=hU9L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID++L+DgbZF0V8uA42XE8bTQgZVJdACZ2/uaS0vj/6g9AiEAgZPfPM0SsJRXmy/r0hzg/Dw1QbZmCcSE457SGB4jDBc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609846275-490e20ee.0_1609846449345_0.4447535767163806"},"_hasShrinkwrap":false},"2.36.2-next-1609847117-5352652a.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609847117-5352652a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609847117-5352652a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609847117-5352652a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AozWgVxhYQ8Vm5BYXkc0w0w9HIFeuxFGkhHOSSdjPzCYyqmA+KZnERsvr+Iaei86mHZvPIuzVA/tTSCVIOy93g==","shasum":"36c943af55d1aa33fd7fc66b52710dc5c63ac3d2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609847117-5352652a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9FHxCRA9TVsSAnZWagAAvHEP+wbw7treWYZTT2YSMF6l\n32t0JlADZoT/I6j/hOlKGKZXlheBcxJ3M7Q69Pila/R0W9EvDwXuM3JuYvFZ\npW0MSWZt9mKiFQQFt7+8SHEyTDkiKZWAQuhgpuj/TqCmMU210LYzBYtyMfsz\nPH6fmKytWCFyrt4MoYTSbK6awPyy0s956XnX5T3C1t60RvOfSFriwGjwT0wz\nv3ZNpLpwaqNHBEb9TTKq8MBNfYsC2/zNWOfHFWDdL3D3mQOFFwqJxYnSeVai\n3pJBTQmNzLm9TW08O1FdrB3IEdeZkBTIO3VCRO6STHPXf2tE/nyiOlnv1RFn\nblp2GrHQgZvJHpsoqbZO/i73t76Tk7nzP6Dea/RCyPqm/5lDebZ9wV7Ufdo5\niP2ksiPdc7Z2dVqT6xwDvdZ7kJAcFtLnYfhEV9SWqE9Vjw+vzKOuv45zgItI\n5/cE9RCgjqSGQDDbq9oTy+PZwr0zqpjmZEj9f4PF8JMgi7pMm7QhntrJFlbR\n4N9x3sYP2jNfYGmCv1ej0PJqFguHBRIjo7Zr21AHDF6Zs7/B3uiS6swOePsJ\nG1mUzN9lwaea4r+J41XVFc6LQ2Zjx+neeidISxEaAi8QO7stxP6x3FLZdCJF\nrewp2CNV1ZItAvhzp1Mzdq1HpXLvOlkYpwWEc108Vynvnl16cPC9AY05Lafe\nPf1i\r\n=wGST\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCi1Vz9nm4fleck9PBDgmDnTOnNKAYiMZ7M0cgnJD00zwIgVaHknOsSQeaKf19349XXmIU/BtHXsvgwN5g/LlDxE0g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609847117-5352652a.0_1609847280663_0.9222884232713751"},"_hasShrinkwrap":false},"2.36.2-next-1609847217-9d91e49a.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609847217-9d91e49a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609847217-9d91e49a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609847217-9d91e49a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-x1v/CZOycf9X2GFemWGQx2zmjtf7pKkjCdydvX1hsGd1X4Xy5rZYUXiC7kRUpK54POBcDvfQJHu8s0qhdBc6CQ==","shasum":"c1bc22381d452489c8d931ffd0546c4c861e0870","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609847217-9d91e49a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9FJiCRA9TVsSAnZWagAAJTkP/30ikN5uIYg6gVaBVTO8\nrf9dXj1bUvQcqINirClZ9zSbSxsnQFbQtpBbBw7rDdc7Y20gQXN/8rLTdRLC\ndn8eDwLyaU/IEXaOnkhHGfAegGsDddGNOmwQ9wNAJVyUvf4TiAMOikhz+Xbj\nPPT9mS2f3i6FEhzvL7KhxJ1Ayl06E46Dhi2HJNF8UHis6dWrgyqedmAtPzJt\n9uz55GqCEqiCFbBWIRK5V1QYr6VyDTFOsSSdO2w7CNpqf5spzl8kkrJ0sbVR\nwW/myzb3/2PfgtI04Q6aaAPEK1gDHFL6qCsIVHi+bQ7zoKiGvka3Mj+Muyww\nBJyd8PcukI/IxMXRVWjqX8f9AZLjQBlvA9vlfL4O+j9rbVLt7qDqwC+ZYjl/\nIwAJqAiJyEpIt7lEO9KV4krs6Sq1Tz4WlvCx4WVeddSs/txhPKbsHB+B46MN\nb2rWEXmxrZgIcpAKHCz9N1d7rkknOm7uarTqtzOIIn3IqoN35AMjZypSq2b8\nJ3oaucbW7lo92dUHFQ17qAe1sph9bbDZxo8wQOuobLLCIotZfEQWpQ/6cR8g\nm7n2VHVblppCThHJHeB6hKnbMvMLmJiYTIZrikjNxju4MdFjCIwpf522AOvi\ni8b0w+40xquCA3k0Wd8ZE//iV8YB6L7Vf5HX9POLjk5cz+eI/XRLfPQOTgGU\nw7wX\r\n=R2Ew\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGhp/tsfcodM6XCbXydV+oaQvjEgsKfNOgZ7fF+3OBeFAiEA1gpa3et3SLYqyj4ttzTyBl4gZ42pxc/mntlVBUT03DA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609847217-9d91e49a.0_1609847394309_0.17715068238952236"},"_hasShrinkwrap":false},"2.36.2-next-1609847271-c447dd68.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609847271-c447dd68.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609847271-c447dd68.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609847271-c447dd68.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1Xx5VyWvtzHcL258amzujEXtaW+EzR4czb5X0EFA3mxvckCn0h8E1jxqAcnF8+yHYw0jV8CXs36A7aPQsDWn3g==","shasum":"5ad8223b762f2964ed690bfe8b204960a9fc7433","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609847271-c447dd68.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9FKOCRA9TVsSAnZWagAArSwQAIQK1KQrPEnBSiXjeoSe\nvYbRIfoeEcK0eSw5YejGlYbUyrZejT0TAhwQTIEIPct3JcGN4RBAxyCrXO0s\ng2zCBDrvbLMm9q7c851OdwAnr1CGazCDRguBKbMszcSM4nFw5VnedxCcMjAA\nr2rbZ2TMnrhSBG7phpptFvxAYxc7BDI7ga/q22BVGKHu7nH1bTb8rMrCZ54B\nQCKGSHv2LdTzGHJxZ8WQP+S3VmonDi3m4/Ws50IKvxh1JCswQYfSRMxosf1t\ngsfIATMPZfjllWCMPdGPoll8OblJnszZ1Hh8WqtHb9dhe/fE0CKBNPtp9kjo\nzhJgwIPM1ww0jvj1r3THoQovbDbZDCWIIv1eRrxcEwYyZfgEm4ZlHVqbmuo0\nEmNXHWxf+9hxTGkqQJFCKPAzcabGFRv6gLg2W21RLGsRAcx/O8OXSQDJ9iE/\nqfvgLcLYmJCcoycJ4XLcDxC721N3cCBrXieLYmBaXuinryrNlmA58HFPuK2e\nEK20l9R80GEGFJZJNgAoxqyh+cG9Tj6glo7cig7V7WykPtnK3H/dYDBz/ylU\n1DXmEYZ+5bavHhGPtRrZ7cOZyVpTEajpLPHzHgkdgZzd+j2j6+4Iagvd+D0i\nHqle0/10MIn4urbFhbTYz5VRCJcDgKelTbxaoqAMp6ErPI4x92Vtj5m+ru3n\nNMK4\r\n=ylaK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrBw0+OyV45qtWNOFLIjIatF9gg7FAhk0pVBeicZtelgIgCrfmN8SdeTMJui/b37KJpRkSt8okdclAZm2FZqV/bU8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609847271-c447dd68.0_1609847438382_0.040486685932813016"},"_hasShrinkwrap":false},"2.36.2-next-1609848771-e9e63405.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609848771-e9e63405.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609848771-e9e63405.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609848771-e9e63405.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9Eu0U2UAvxc0hpB/EyvE/IeaamwXsFv56IOpL075oUDLfp1M7vMHbmP+Sir8fd3SdLyUSjmmueQ/4/58mk3GoA==","shasum":"72b568867cb22666316299a593175f41d89f7636","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609848771-e9e63405.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9FhQCRA9TVsSAnZWagAAoQAQAKHDdaZegnTua6Frs7zR\nPtQotVxTjv5rTQTZLEcxR3wStAcoxjd6aiZaDNnnnlU7A4i/6dz916BmXkAI\nI98vfewAwrBDxl9F6Zjbqk+AGP9JQ08ByM/3pl5EWW3lkMzifM7y1DhIJ28F\nbGWva5fl6hsGfwUsnW5vP8VuuC4T/roDQ7jPRfa2aGxMQ5ZxvnuGd3XaXnPI\njQHFjYNBL+3Y9w18zSEY44lCwZqwJswQHHVb7NTeb5wEi2oip+pZPxsnCuVM\nAzCb8EaxrSnJ0MlG9fWQmN4HdPUEMyiYwNW0iB649i3t6Ur8o5g9I3suEYff\n3TidYvFaRogBwQavYvZ4rxeeqTePnoC/OO4mKbr8/ZHOpzfYgs0FxbEQx5Bq\n/ocSfqrw8FDmSHe4B+j1DtU+vbJmuonoCTzPdZAqI96KdLFAUI6PP1DeBfbX\nt41XHR25NL0ZHVXJR/EG1VNhkAtt85mnvAuHhTqAJODnt/MWumbfUE8iFe+K\nRM2+tmk9aj02/YPrvuebswgqgsL9v10pEDtaUbLIwMbGdiq1TqaJSGAUxwOs\neCaQNDllCHUye8unu7K3T3My9SYqg335W5FJYTJJNuHFyc9S+U/D/jOIeMAm\nOUZmaI3bVsra3ashWJk9e/PSTb2mwS/fOWO0QWjSyIkxiW9lfuVbbe62LJNo\n1j1g\r\n=1OM/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBLxMrkZ8gJ9MO0MNS7fBW/McyfyDRXOubdmkJwLbnfAAiEAqgSR9dBw+tJAjxAhnmnGdfCEqOdOe/K5XlM/RSZx27M="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609848771-e9e63405.0_1609848911972_0.7713960509313016"},"_hasShrinkwrap":false},"2.36.2-next-1609851992-8e3ce2a6.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609851992-8e3ce2a6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609851992-8e3ce2a6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609851992-8e3ce2a6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QE+poUDCtq2eGAdzJiFoJSqv+BowYgXtvo3DTnP9CzrRLscmvV4hvAakCfQfSGtWO6LwbwDMuKbkoVXuM6B3Xg==","shasum":"ff91bfbaf66ea17704c7d460c2df4170492e91cf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609851992-8e3ce2a6.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9GTyCRA9TVsSAnZWagAAeckQAI/sNicnyd4+/O7KBIzQ\n0CysyMN9XQZ5VdCAwXl6s9BOU6IhC4OB15hqgJkt2N/oVItFa9gBinLUtfd0\n6n6nwkkHAepYTvgwd7tZISBiTLMXgji9OzwLONfgmT82QRwQUW7sOEeSMC/b\n74rlujE+rB/L9htXBh+G/+4uUjyLn/JteDjO2G+iPgVEBuWz7w7IO+aejnbh\n8kGQiY7I5yeCFRFplVyAP1CPZZO7CvGHrDmVb2AjUEIty0FaPDNBsb/UM+hh\nDNEts84SiHdp/NTx+BjOIYpv2JHqa05NDzQzutEnoHkwB6dttdm7+Cb0KrgT\n9DOe90XtzF37NSEAyc6liiq4t6k3KROoV3X7dWkf1S4PRAKsjrhjm9NvP4dN\nntfOWwUgY+7Oogrz49cZCb0FyHS7TYhBHTFVEj/EgbHpMdQtsIUVHCRVUmik\nJ4I8jVsiRG+gQszKAcZp1fRQlk6b+rze9huMEhByUpZ5bjVP/OZEZvqjTqML\nO48WSNx9/4UrLkYKnyXdO8UNE0M92IPveTYIn+afgvufo6Ra+Grcd8SLyZTm\nKaUb6A6NQuTEVHDvJ0tkSxRaSi2gKv0kIJx5744dKfgmatt7ZZxLeMjd/lGg\n+QXQLiiiApS5+4G/ozQUm+cAI9QEEYSLDxR43WNXhUdd7jKCVusFDEWWvG+A\nrBXj\r\n=Wkm8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLUOQCtI3PjGYH5Poqd6/J+6oLT15WOGmIjiQon8tEQAIhAMQzsFX/I72B9+Iezgdf3jj6coSx+VpYRqEcEZwGO2h6"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609851992-8e3ce2a6.0_1609852145454_0.5389895276310543"},"_hasShrinkwrap":false},"2.36.2-next-1609852368-d37eaac4.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609852368-d37eaac4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609852368-d37eaac4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609852368-d37eaac4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aJCamc9x/MkIYj+pUGWCDU6t+d5E1luc3VItQ2qsXd4l9QhoUhA3wPR6Is2rUWGVaUy+0sKhlRNhEuS6TOmhdA==","shasum":"f01e61d9ff0500b57fffa7c9a277d38eb5e7bf93","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609852368-d37eaac4.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9GZuCRA9TVsSAnZWagAA+awP/11bDPadNrD8t817bhbV\nPMJsfAgRvEYznncCGJNBpAZSNjGwLKPcN3A9yO9SyleL5PDNulPYNRTiud0p\n2s1aa1c6bK1hKJGmRgAZtYF/S47xb/oCUb/7IeRc3Y4KZz1BTFr6f0KRy1gL\nDkCO4A5/saKvKn8Vxr/IimhZZDBYByUxcRLwAQb5utYsDRPw/YpJ9RvGmYWq\nu7Ib3YwdnXXND+qyUMUJOhdre3nxBWNeiDprPR05alKG+pdC/tJ4T8yA6SG3\nX9PMCQj6qYyCkAoqPzQ00sexkShNjn0ImYzDpIz5ew+fVmwJmhiKOAWqmmUU\no+hr5QAsPOPLryDGbeg5+XakamUe3YfhMpLAvcDSnhO7XPSuVZClYaQl9Rnc\nwYumoq1RlA8y40wATS85WcUZ34qC0lJ14OhDTVLgzSAR6ghS6CaD69tQS9OA\nrG2ir5M3Rvtr679NV2TztFdFK3+/LJRFvhykUgq8ASSqiAeP3bunUMA5165K\nU3+dVLQ6mzNa+09HwDm0p3pINbNsIux312qm2/bTcfSZYTzG9DW7ednWmBSc\nvlKJfvFIqiJsY035vpFJMGTYDf+W25s9c5ReHnL+oGk/mQ8CTQG8lBRqoie3\nWX6ddvr1wMvXdnaQ+JumcIWr4Gt1e3/u0RD2PeohTQEBNvY0KtP8Fe3hXpW9\nNVQ0\r\n=dfOd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEWp3eml5FuQd7X7hjbYsLBOdxukDlk92KOEodJ1TqUZAiBWmgvpPSfkDZZ2B+aFWpyOzq7eIITSiiToVX5t9p97lg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609852368-d37eaac4.0_1609852526200_0.0024552853572794575"},"_hasShrinkwrap":false},"2.36.2-next-1609853584-45c51d9b.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609853584-45c51d9b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609853584-45c51d9b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609853584-45c51d9b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-R/fK/0QAOJ0L14K2Ok56c7oQ6sbUIN0hDEUBa2WZBcmiEUwKu9x20RmdmlbHyvgz5u82TaMdCoQ9sXf3SLIJug==","shasum":"1dad35a352b123b0efce7ecc7de5e234fc36d78b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609853584-45c51d9b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9GsiCRA9TVsSAnZWagAAG7gP/0tytw9RsVVkvLo14UdK\nSbyYyrKrMdsH7LO1dznzQb+e6xIXC9Dygf+5H/dipTDUP7UJGTm0MirSI1ou\n/t3RmdeTbViPaN2puLnOmFg8VhlosrADFIiBxFRButdsGwUxZRPvnSzK7UlA\na9n4jjdVlp70cxDxRYL9hIW30lyzlKCczxyBbfLgGbjU8ZPasLCKVjVovI3N\nU/nBYhAHDQ7gD0vRbgAwotbcVB0R6UQ6fbWiVVZhWk7jHEC2xnTxpYhe8+of\n3EhgQtZwbPWuOldiTNAGAuTkgCaIh9IihrYN1o/urKFDEDpyIbRx8Fj5PhR/\nMqgsAXEVt1M0ItlNKER/t3iuxIyMI6HbH4kma7WMrJefGfuQv/fCrK9ZMDbw\n2BfcDy+5G5AI6yAHa9AZnFlWPeyYbQrRMpeGAd9k9SLViU2Ic/vq3wiq3Aa/\nWw/ra/Y4SdyqE447hXIAq2WFxd6803y13OHn5fT8lauDxrWKwqvMAlk21AcF\n9OjOQrDhoPxUrYnRVqUfR8UoAyk0R5Bl9KzOmUL7iqUqB9DvUVoCi2Sva5qU\n2uSgha6OQGLaoDId/nALMs9UB6EYoQLcbxAL7IteDzSmIFi3msi5kCmSII68\no2aLSoApiSklRD+JX8ZDfmZGS/npFBIwvyO/AG+eVV0Rp+gs24wXGvnweI6z\nv3JZ\r\n=7jaq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEkesVrxJX5e5yE7iqMBYidUWOKfWtPCwqxS1Juj3y0QIgEkMtiw7vSxe2Y0uOhECSbyYU/ciE6LXbO2LtHhxSPY8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609853584-45c51d9b.0_1609853729807_0.7117360164986615"},"_hasShrinkwrap":false},"2.36.2-next-1609853649-41782c04.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609853649-41782c04.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609853649-41782c04.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609853649-41782c04.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eOcCQNG6XbPlv1cWQalhCuHiv+r/yEo51WGKNow+deihd2NKo2yKuNpWHzqDoq+DO/gNPur5tJRbt51v9It5eA==","shasum":"03ce307be1a4da92ed64bd6f9e258580bd042697","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609853649-41782c04.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9Gt0CRA9TVsSAnZWagAABAwP/iA0h252upadtslnMCAW\nEqZoPur05eYh8rXI5xDtkZ4oMHqwwz72muEVW289EIXjDeXWHZ5H0RUWcV5Y\n8T4pDMvDjGB918R+TGJY2YeN7O7d1H0EokN/MSVqmPkBlo2tXIOzE7X5Hv1a\nPSU+jL0LUiPeiTU3Pg+uOAz1eBJTijummIBxkpzMv/SIPNOzTbAHZwZSZhXX\nAf0VTeT88dKdM979Gj2aHl0xdCOa1H9XKsK5XUeCb1EfIryzDlLrg2oaNteK\nYOn19BcNVM4NUw72K1k1YqBXAj8wwfa321oTYaSYDxTkodapD+tGbxj0jJHK\nKxUtuO9zYXhfmtd+I3xWFJRU+m1Lw4UkIVP6gbbeR0x/M4THM48lN9DSUaA6\nxS9LKS8Qagccm2zd9hIHck+iUElKnKqoyWbx/uyrLhgnnAyq+YRBHnjiSCkH\nGU6MFd8LkaALGmpuaudn8JML5KK9g/PGZ9UOpf8dnxmxdtNwBSCymvOQOX94\n09tQBhCmli/SBUTu3pEcOj4BRIPdFt92CsaDbqIpbm/D5LuJBAw+teEPaUHg\noRil13r7jSU41r5Hc26Cw+6n51mZh5Q8tnbvmCwRs0dOKfMWL8XUn8y+iQwv\nTUE1JzQCi3CncEI0i7rkYlnwBskwr/xBD2SMrnMMaMiItfu1DzqUJsu17I8B\n8MK2\r\n=pMc6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAWhibdTuE1DzJbEqHXIuhbyI6W3EAesEpOaYaikf2YvAiAmEfshjJiFiWluPbFj8LgogW2txuLQZsCjg0PB4t9UoQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609853649-41782c04.0_1609853812419_0.9085502396541207"},"_hasShrinkwrap":false},"2.36.2-next-1609854293-8e3ce2a6.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609854293-8e3ce2a6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609854293-8e3ce2a6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609854293-8e3ce2a6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VnWCubK6U4Fs3V5Nped5dm93PxzWAmpZV4nYVHhvSMsomdTsWLRWLbF4AlUJB8ocMLpmxW9TnUP68x9YxbcRBQ==","shasum":"5038f128797d674040b9872b861a3271b161d954","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609854293-8e3ce2a6.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9G32CRA9TVsSAnZWagAAkPEP/3x/b17ReqNtE3tijIZF\n4G3Z527PU/YgWPI526EtqlEaFmRPwdhOjezUULLV5Bxze4wonkh9Egt3BzNc\n+m29QiQ5TCV0dC8VdVx67SR+OwiBaTxoFLGFHPf+5Xg3B8HNjR3yk6/mzGqE\nLVhgdhKzUcr7VfePtpcraODOHJh3F/dCPi8rhdb0XxfcF0071aQpTQAYIBqI\ngIj2GbBDN4I24Cd+aFMp4U49g+IGfgzMEEbk0luFpRo2WM3FhBXJ8ogKfz7A\nuOhuoZDZVMSeuP3Y9jnMDSK4CfPXK1V2nNvFkMDuLSF+StrFLMZ1L+8KN8eg\nWZ/qzjazpqpmYnGCn6DBRByTF1QOQqT2FF/Euz9szsfwEfmn4yuvsHDe0i46\np8rsbl+dU4oQHhnnoixQkVrwWp3sLOD2qQ2AxRwry3ZMesVRqngWAht6phSb\n/TrWRYxX1xfQL44etL+UIoAQCNItqaXvAb0mn7ZIIGxr8T/uAsRoGE5dlpvs\n3CMaaIAefYXWZjZ9qpHt+H4hYLBNDKBm1snGlgUJlceHI7gWwm/uCayyfOcd\n4ZTC12e0HBELf7TR/yKnsgYdh3CmZACfIPqNmBa299e5bXXWth8TDO21ZDmZ\nnJ/xt+/mJhdkbZsiLuJA+fWfoe/+eZsm8+BrI5Ssru01SCBBBIIa96zkmVxu\nFsDH\r\n=/YVI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHsAyBa40c2ribZWvg7VABLxgkXwGwruH2i3NhsgBncJAiA34cguS+3uSSEiZEJjESt85D9Dk8TYvuKhKeLSq3tenQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609854293-8e3ce2a6.0_1609854453987_0.7494481738576619"},"_hasShrinkwrap":false},"2.36.2-next-1609855613-b9796a4c.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609855613-b9796a4c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609855613-b9796a4c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609855613-b9796a4c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-S/nrTf76B6PbL8yonauvHdUmivxcaLgYlE+DOwlZTCayp3EKbU9YTRsg3zKRZ6+qledqojbuzcs9jKG4CVYkyA==","shasum":"86142caaae1bf5c3207625138bbc08d367c0c62e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609855613-b9796a4c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9HMhCRA9TVsSAnZWagAAtW4P/iAiKbzycChACwNUk/1e\nv5PxG7eW4G5jHMt3JkUhvYqm714oeWRl+Bkj+rwDSs3Ak7YfyRIr2jH+o34y\n79f6j2bs328jcOGvrbWwhRruEVmmd2kVaJ0OxEHI4z2F/kF38ru0EH32Bxc8\nt8YUxwpix+qUabJQ/whJMwwKbYhHErcaf4xWUfTmW5jcILozsTNMgDGVS0L1\n9YkgKuaXbSKvFaKscPXGNxsag1myh20zKlj2X0aHQEPmA9VXpTa/vqMUmaFs\n98Vg0HnXbyeG/vi5BCGYqKOe3CJE5QQF6JXKuCALHEEkZIMWk99IdZ0PvLSO\nVheYu4dUZOnnJb+6Yne+zYhQScT6tV/e4oC2Jkn2tbx+jCTrd9bEDkpb/sWz\nD4TRAOCKJturBel72kIXqgsB8SJRMB82rTr7XYYhhJr6velEDSqTmfeugFmY\n9Ub04fH6W5KFEzs+rQeZPWPrSn8x3xh+prtTSd3s/gsqZbnaaUqzO9GEaMj8\n9bIfkc1N5yQTZ+m/J6rRDIGJI1yGb4sUVovpIPtrQr6cimMiesA5t5JxUMmh\nkQLFNU5HwXsiDHOE24l4EWIGKe4etpZrWv6pT3NkCIu0uObRPv7TPm82pdij\noaDy6AyRyD+aANsDJuEqjabAwu/td1RBFGkmkhlhZoIXrLkTFwTV/86eaytg\n9CVa\r\n=VCuc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDR7uZ0vuQFWQfbMqz+X29BjPM+GrPhSotyR1/9kE4JOAIhAPAeX6ijIszGwFZhFLJntbkIfUWrAPMzzrNvNfFTQV4Y"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609855613-b9796a4c.0_1609855777375_0.12396431679190534"},"_hasShrinkwrap":false},"2.36.2-next-1609855697-6dfcc08a.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609855697-6dfcc08a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609855697-6dfcc08a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609855697-6dfcc08a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-48d08gOTwguKRUxUTs1gaUieIyn4s+GG1Tsk6LxpS+Yy3b64CUu2OryelSQkE+tvlYcy8oTAOt9Gx7wgKhI2lg==","shasum":"a259381014994e1f50ee166c0be56ea5096ed3df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609855697-6dfcc08a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9HNmCRA9TVsSAnZWagAAkLsP/RIkQNdZTBbEw5sD0/+E\nh/jgVkvj/cQBgGkCkvygPkEiGz1AM5OREWiSZXuvdFdLuJX9IaKz7LVIYm60\n6JJJn3KArDKUHOFvOKWoK1zMqQQu73d17Zk2pLMk7owIR0OZrfR2pJCqV5s6\niwZcV5jOmpkDY4DuCMXarIf5sY6MTuh4UgkfvMInq+2/J3oUISWbuWDHcW5Z\ngOINpU6DzArH/O1vY2mvmib6gfqVhuoQ1PfCzDBmjuyrEbx8/cc/TR/rf69J\nyIUUp1Biq3qnBKsBhZdUv4TpPI3GlOmOYMPE1E0ufphNFIo8mEaPLLUGcOrB\na3gz42RDFiABzYPga4Jl415k5Rn9j874LHzRUCv2yp1rOTLDz7SFOQUaTxTR\nYi1KI8lr6cn4RpOfLltfkqe6++SOyltK0tcYFEKfQan+IWkJwTyER7zVzkpM\nQQD6gvdAnfmxdRK0D37ON3DgtKLJe1emGrdbVstNk9u5o8LzZe34KPue0j8X\n/YaLo4rnTGmEyTDEMw7xUwWv9yaV05O4cZUKMPN9AmtrmfyQsVXrNa2KrQnL\nuHgBXO8KYKb8RxTnmVohQIRmuft8WB0qU9CZ5+foPHJWj7Tmf+rfTpov5BH2\nVni/RBBBxlL8Mm0YrrXAOrUsBvbGOkkxIkO8l43GUWonpuumnvRv1MzCyks/\nXOGc\r\n=Jnhi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCu9FBvHEThvp3kFLh/ij3LY84AYtMkJbxTVZV340trTQIgIh3oIrlD0idF4NAb4HO8G2r5uQ8oXHKkP2j2ienR8Mg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609855697-6dfcc08a.0_1609855846299_0.039756537997537755"},"_hasShrinkwrap":false},"2.36.2-next-1609856853-c74ae068.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609856853-c74ae068.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609856853-c74ae068.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609856853-c74ae068.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9VaC2DAnq9uLKsQFfCfW+4PcXBfi++JKA8CB6Ms2Rhrgv8wbYX6V+dDJshSQqhp0AZEZHDI3LPbLfCsxF5DgFg==","shasum":"65d6cff1002ffb1ea2946bce2bad58d25bf5b666","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609856853-c74ae068.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9HgpCRA9TVsSAnZWagAACjsP/AtytqlSr0jwkddn/0Sb\n+G4Zb1fi9EAwa2LQjlz6kn8FgDDIOpwz1U+/iP+r+OQ4O0mN1FQ7IEUicd96\nJr7951O15/V1krD6hgGm1KKzfbQc9lGuAJEl+9nPnq3LrcIj2ezTtgHmxNsJ\n0QTInU+ieokxPbwWJ5J8w95wxrdkpKzdkvWrRHpO1my9J71cPgIPCAEjRDyA\n6VG1WdqrEulFxQJHY2lM+CeUjmg4gGWRnjMApFWk9YaL8vTzGOuemTnYfxme\nHLE5XrYb/JiHPvgOqDk8B7n8Yz9nW6oUL3r+/XE1VFJG9LcPNPQt2kxYr+8p\nhUB5+J2jfTAWNbPIsEyKAo/hw0b4hovvdwtKFiujtTmHtsPOoO5o/wmlor9y\nLJjibfzM6TIYVGwQokwvtEzaKrKrTPIE0XCGZD/hnSveOLj8i4ZpoliKon3M\njitXQz23oGmKrBD3s0F3XpLp2jveLtqzH2psBXJJYArB/8HtkjBC6u3ZLl3D\nLXeSeyZwnUmEh+4We7IH4tj0ph/y/Z3aFnRklrxsNA4QW4CnwAdlYD1NwVyD\nFCLkiKZc5pFaNKkbp0GYU6PvR5YE6sWfH/ZC67A/Hxhtos0x+gBNktbylTmR\nbkkNWjsxYaHNKtaJYwR6xiJ8+T1evgtWaXpHRunKTuancOs7OPz9rfV0oPLf\nfC09\r\n=N5q8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDAdrL0JqmwmPAvbCWt2lyNn3ch1Rfr/ge/psGswAvITAiEAq7/f9FkMPaYUe8y1uD9hJDjjdrscqvD6+fo8aTd4m8Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609856853-c74ae068.0_1609857065002_0.13241396060070998"},"_hasShrinkwrap":false},"2.36.2-next-1609857536-8ed169aa.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609857536-8ed169aa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609857536-8ed169aa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609857536-8ed169aa.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vsAblhhWwvRJ4D2ftIWl+oTnoPdMqiAdS+TFF/J1p0m4LVF3jXG/2FbKBMbdNgmlLMwHIkVv4iHBgXtpArbpCg==","shasum":"0d08fd948bc33e82785d26192dc3b8e7f8d7d0f4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609857536-8ed169aa.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9HqQCRA9TVsSAnZWagAA6VAP/jxfD13f/pFOjjMeHJa/\njWJXgacbANXMk+cYj/VIPATkyPf6HnJskjgZ7c59BiGvjd85kVb8GJGlHMIl\nuNPP9tPOAOA+0rPUKIyyTN+Ld9mHAJt/Pq0x7648lyq1ZHoAtb45u4MQZVXW\nU2oXNcVdsZNjQXBsMPWBXi9jwPw8HUSQZXfihCBIHouCAbOka4fULufU7OT4\n4tIfpHDSutOHrzgg/DH4QT24112fN6CgteqWWOv6cmcD3blPBYXuOYMranqd\nIpsdwIBKhIZPx/mSrbgGbTKONwyx+e+pySpz/TPhhZhYoWzSvSFMe+VZfJF3\n4LTfIqOL6to6jPO7N3pIkUX5WRpv6oMJOGTVgxX5O1sbezpC2F2B65sTM6jY\nf1STeFwFfwUH/RrhHo9+/JTgScHC7iM7v52YFBUW33W/6Th7P0u+1t6jCG3T\n0e3IhXfl2URFvfnQsryfrrK6cUW8yLt/CpD7ERfKVmNvIq6o3cvPWTAWJSYd\nhW67UjBdur1UZU9isNttlWw9i5IdhOauxSXEhDqOpCZokjvLDI8jldyLVz7r\nQz5RE+QkB22yDvLiSc12MOCPygCLD5y/v2Njhc/FgRG4ng+Ddcq0xrQnGMwa\noEyQR4SD9iJ/zBp5AuJDqIiszi0AeFoie3djSCQrR7SR13NlZX5Jjwt/woWW\noCvd\r\n=K6/6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHfUXo/a88lQno7abv2AnwYXWHCadnZyy5T1VSCXmgyTAiAEMZsxJEtzm251WvyW1YJDXE4f2q74M1u8FL1OTtCwDA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609857536-8ed169aa.0_1609857679874_0.13891340865021085"},"_hasShrinkwrap":false},"2.36.2-next-1609857826-8e3157b6.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609857826-8e3157b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609857826-8e3157b6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609857826-8e3157b6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-q65ZrJgVCJy7iLv+1uqUj6fC2VccgqMPW0gw7kVuKY2/iOTtHfH3fQaR7O/B5g8AgB2EutHOX2DA18JYWDd8KQ==","shasum":"5b04495d687f559d3ce6bc262ddb6aee6e4cf6d3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609857826-8e3157b6.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9HvbCRA9TVsSAnZWagAAutoQAJe51qsJMHlImkIkMnpt\nK13qEcJumqF6JpAF9/xfswtmEq/LMry1rmwGAmxMDJkcDNm6PE3IKk+N5RuZ\ngBQZzm/XJH+a1L082z1SdKeKYDBtoMg3b2hTaZ+xQFj1EQXl5fnCXF2WVhA1\nyapC8cefO7PQ9Zxc78qD7WK0pLhxlOcpkoMaDcYnZXV/lsmVDExs83AWHETU\nFkO4pYNLXxHQeErOuEglSmneBRw9Rzrqb4Uied0RG6bdAn5WdHoehjEZnQi0\nQezNqf04jgVx9alHX0M5XGfIM/hQRghJUUblTz4SXTryipUlI/aDwCEYML+J\nXlzKCko91Emv482MfErXqm9Wv6mCv/82iYHbwwpriPCfunOyU2Ms1g8ERp6h\nWXvB7wymjS5RSo+iQYG1tNr2EaDT3DMuwvrwY7M11vWD49zRMf62lYen43eW\nH4P4K28TRZDXoRJX6t8q/Ov6qZbRrribNJnCldtIBme8mnybDSSBBJXrl4t4\nniJ+uGs2qFRCyOIM0Xvt41YPJaOLKYvNBFJtd9UV7n2RhFSm3hOSO9Ly7PXw\nxyPXF8jZT9fGKF9GMnid/TY9aNr1DIxltgaBHVZnuv4DBb1l90ukkowzQ6we\nhk8jgyFCV+qN8TexZJ3vs4bUb01zqHb30b6z3+FAVDDKeGKVGzZsNWN/G2W6\nN4FY\r\n=fGac\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6BaXvAtJzst7kQ6IJdxPGNtZNaEoR71zoXzbaPwE9TAiA7P8HpO2aEJvLhlFR+IcLbJf5TcWDjSV5JQkrKuqCoCA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609857826-8e3157b6.0_1609858010491_0.1362300752253951"},"_hasShrinkwrap":false},"2.36.2-next-1609858005-106be636.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609858005-106be636.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609858005-106be636.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609858005-106be636.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-X69CIYd5P7r5Ar1kLOFs0X9oxh0HEWLA6qWlM6JADiZ1AlwQl5ywvSnljs7FajernoQsT0FsDyx5OLkAHjMWcw==","shasum":"a92194b5e9f387a96e43575509e6cfe327e0c010","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609858005-106be636.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9HxwCRA9TVsSAnZWagAAJuwQAJb1ik6XAn3RTuAIE7VD\nLAsAshrHSGisdlKrGIl1twsz2vAJ1a5jCYmk27tvFTeNmVRZQb6csMx3+vUF\n/jDznmQbHlRjYMel+WbKAqcJnE1/CNcISSEZJqBf6A/6KG7LgFteBKkkP1hC\nsUsmQ4+4pH2PBLSaLDTApsdLfA4uwhLFSYeXDuQ3hLXLHydeW+6WQbZ34i7E\nqAL2ynmKyytuienvsfOLi4lTdJcI9eBT+bRxKe6e2ABgSCcsZjsSphojQ8eT\nv5Ej3G6vPrJ9/Zh0+6MvqygkXldmbmvC3WLHL9eIPT6+NH854ARbSzMN2L7T\nxNpkoS9z1mzbYktRYX5Bq2nXtY1xYFbEB8OoVwBvsXVC0zStY6I9LsQhBMMF\ny4jl/N/rehJgeUcmDGlGOqON9CQ7w1Wl40s5NPZXlfvN23ktIKn/QSOW+3zJ\nqg0krfim6QBkgbbteQPCGAP5d+8f1oA8lSxRR0AXqpCYngxC67Lhac1r9cb+\nFOeonFbAPpve/ghGGdA37GFIphzq/U6smzG1EVLaC+s9iBGO1+UidJkznRka\ngVje/2CI3I6OQB4r4WRd6XHhedDFh5n0UW+9espKBh2HN1zTv24ERmujQzi6\ntM5s9ACiQkTTQVBuvhZcUsCQ9P/0rxuV408p8ErUMRughY/SbRTc7rIMzl7Z\nQcfP\r\n=GO9s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6hdtXAwiHuTYCXxqzutOAXTAoFtQ7R1J5cpWsjwZyYgIhAMwp31JfHBuCkVU2XH/GFOgEiDI14vUpk9NMIOFln8d+"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609858005-106be636.0_1609858159872_0.1383164332630984"},"_hasShrinkwrap":false},"2.36.2-next-1609859719-07fa94ab.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609859719-07fa94ab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609859719-07fa94ab.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609859719-07fa94ab.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-t9lXhQ+etgXRVn/qdyTvd1Mjw1JTSGGQzuDuWJfx2X8SANyHkjH5TwXjAqTRd0Yej/gn8wblpcp8TIWCfubdUA==","shasum":"e6df3a0c1d0aca5f0633c1554afb509674687a95","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609859719-07fa94ab.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9INGCRA9TVsSAnZWagAAI4gP/RBXe3PIASyQ43JDEOE0\n2p23azPvSl5qfy1LhIzm/2t3PJsWM8us8i6evfTaA/YBssCcKPXd3EmHMhul\np0D5HDwbnrxO0xV4kdydfKLeTHUgAXHiZiHiwcAfAC9emGptoAGkBLj8ggbe\n6dk9bi1xF9AdkveNDIPyTsbgDVnQpWlliq0kKarnb1FbYT7bpki98kyVvlYE\nL60hVJ10vVn3ryIo/Uu8OJ7cOoP3gWI7diEsWzpQCljybapK3RmUpZ7WV+Id\nTDPIN7aSTqnwGShykfKRYF6dCIBeUpTVMgslN3QW0GO976PRckHjH9iIEQkJ\nmg8o4y8PQZVGxEQcRL6uLlzHy/3e3teZ3f8muqiZGkQ3ieLNxS5mRo8A/Ivv\nWBHbOh2UarNF+5CAaIBuOoj8dLfzWh7H0TBaofHEzw/2XlbJ/rAEiZv6crNp\nKd1Nx6ul2/cdbzAnGtt1RC9yaMGsz9g7srvuMNsqO4AR4xBEQOglqiI5TSwi\nkX8zhep9HvznDvBPqCN49+44QKkScqTt04Hbz+6ArR0zVp5JWShAilYvHOs9\nZ5alJXm4XvyT1QiHyBF8TGK9ayxi8zCN4WXdiClL48K24NNy68XkrXoKK65D\nZgBdd3OCDVH2eGT5ntxzEHIt4je/2+LVbJXOVALXY49pSeWnH1tOif5dWWqJ\nvoQB\r\n=tSBv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAH3EdoUIi1KwAX5VOjactECiLu9UTqym6QLJ5UhmEzqAiAN1Sqpf+CPrYFZAB9LxceXI2IrW7QX6dS8hCDq/5ZZyg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609859719-07fa94ab.0_1609859910193_0.623363736876132"},"_hasShrinkwrap":false},"2.36.2-next-1609860132-de7da4a4.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609860132-de7da4a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609860132-de7da4a4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609860132-de7da4a4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jcLFO6mUusDAKKfJ7jgKBMlob9kan0jitEI60PT+lh7JQdi3AQmXNjJcq0NzxX1JkNgbh5xiKUX7q2WDcI1rAg==","shasum":"ac52d312845a0c3bf0f5e1f386b33d9daa771014","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609860132-de7da4a4.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9ITGCRA9TVsSAnZWagAAqEAP/RSD8tlfVfmBcK2QkUB4\nsTWQ1dzaiI5UbEEJcnmbQWitbhYDyhxe7afqOgtLU/Kz2KWvMB3OIR0a/Tqj\nrxFifoBvgjqWF0aiT0ZRP7g4WqZtC3rMaw9rQJiiXZ36+gezowuPz/CGS9jP\naWPozMB1jG0EJrvOgLA97MpPV8gy55zHbCs8+FI5v0KXzY+iXSwanSKswTX8\ncl0QWxYh/CSmkv5+nmFig8Xzb+r5fgZxUwoyyHhzEc1a0CFU9ZKfkzfzH5CR\n0bPEvs8aRV3GIH1G60+bAAOOlcJNRZV9o1uATG3SvUpal/qxLyHFDqeDIThg\nKl8MD940inCOhQGmcLocBzI7bC8H2OhgIfUSMKRSQJyWYMQWNpWNKxLK3k2Z\nJzkPfex7NDXn1RO/WSz02Ew9XVLVq4AvDAm4PuK+AWzElauErYRJzm5azIe2\nHA2RbWgffd3co/jvrK77CxoBndYuJFqFQeS07YOoPKGkwlMEh57KRAWUffAN\n7xl6Pbf3EaGDKYwnsEhzbdwyDuB/K10+HIZmcucgmJkpFUjC8F+LK8KtWuuz\n1uW8TEvLTnkxKLfve7dLAM5kReZzNCty3iLnSfRt84nnlIsEqNiz1TH0vWzZ\nu1MF8teiNOBEiuTbPHnT7vbTa4QU6CKgec1NhPs4qtfq4Qt2+Sg/OjnBULl/\ni+rU\r\n=+lOD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQaPQsTrQhb5jVHc8o5dBQBxyg7TnzGSSLNC0u0gi15AiEA04pTZ7mNc5vpdKzDEWnGGWU91TX0eeWghziWLMn4aTw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609860132-de7da4a4.0_1609860293701_0.3526448886351148"},"_hasShrinkwrap":false},"2.36.2-next-1609860205-729190e5.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609860205-729190e5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609860205-729190e5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609860205-729190e5.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Xf/7x9kZrS9XkGqtakGjVtEYX5CBPJpCoHQNO595sYKdfwnzfWg7o6Js4ELcAZBqMW6A98Vxf2FGQ6isBNLCbw==","shasum":"3211ec240a0939b85cf61e1ec59402e443cac5fa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609860205-729190e5.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9IUBCRA9TVsSAnZWagAATdYP/1/9HqOvpBfZJKhzXSJM\nePVglYGjBtp282N5Dse0VjQURTwMP9oWfVYFzCE6K6rJtpOoasiSmniI10gB\nYImiDVyW1RZxv9whQfWs0/qmjwcRM3Bj5Im8bVUeiG2vtgzNImMkkGqC9BkF\nlfhXCdv8ACLId1IpEGhS1U6/TxJypZ/2oRs4uvZxkY3/+iH0dw+urKs2v8/H\n8slpQXDSvF0CcKchhy8Ji0vZB/TVHX5SiL3rUbfSh+/5kx2IiW3RiqzyB1S/\nDAux+D1S6R3XX+y1pD3+MUYsoM4fptGMCooq340wVoH18hJ3P+zRcNw7iX6K\nzy/9BzYIwzgTM1xfJhSdtWuB7859osnHUwsouGIYZ0BcEsAadVCkZvITZX5n\nwFZ5laJB/3RKMCb40yDs1G5LUBrgIlUN1bV6EgOfzzGg+wwb8aU9UUGtS+o0\nCgBrbycmTCyOtftGNS0x7Po2pEOCAZA4oxah9rw3zL93WuUmEisvkKmASgbe\nUCsF8ZHNfxiA9tOe9Rx5TQkdihsWZOeVWSvG/gZjFcJsRBgNcjuTVQr9fWwp\n/JgWsGzgEhac1f+cFOKD5p9gHLnwXgQYKWRXspoC9FM068FkG0ibzCbLCOh8\nAvr3M/Et98PGv1kLzHtZCilrZjrjP+IvGj18xLzPboWBhceXwk+pRZqFYVuT\nBjY3\r\n=pGQ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBSYTyTeoG5+wpow4Jbw4NLlmfIIJG6VVF51tB/z7x6AIgVcqjiPTZFwrcJS+uXDwwN7bdbBJPr2gEIvTpDjhziaw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609860205-729190e5.0_1609860352680_0.024441665102839405"},"_hasShrinkwrap":false},"2.36.2-next-1609860209-7570eb1c.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609860209-7570eb1c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609860209-7570eb1c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609860209-7570eb1c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6TD1kfD4bZyH8mXlBaSSWnJAzuHElvNJYYHJMMAW7FFKH/KH/eplNppNO11qW45coRwtCmvMv6E656EqxiMW5g==","shasum":"05a35bb08b490d170b4a82dd7c0d45adf42a075f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609860209-7570eb1c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9IUlCRA9TVsSAnZWagAATuUP/jY3izd7q4Eco56a0xEV\ncZVJw/6LQsYJ3Ve5ryET2hSin8y7ihfBg/xPOYVZtZSX6CjSNALCCHgGLlcd\n3MDat8b0Esm1jeF0bQDMzi4l9KOiXm9KUUlhqSae3yR5MI8l8PzvkTc8VpUF\nbf3WBU4UuwnOO6nywNylXV3bEXFdTYEcab6aQwCYeFO9soa+rZi4fpqH+WG5\n/AzdvedzWPjnzF83RhdIqAq4ouLKbhdH8pndBFpCQilZs8qc1vMuzFFWvk5g\nZVV/yIKuxLcZHvjOmDEJIuvpR3Lu6/jqsT3eKtAeu8xU3eFnN0k2y7MwJrql\n5TQQqK5Pg+/BEtj5xkPCgVkOg51Pd5A+W+j5/6VLaUSbFa9zS3tUDIDxTJ8k\nWndBxfp3XfPbKXbRmab3La6h8oHc/kf1VOCtsuiOhKdRg8t72gi4gpFpg2qm\n7em2c9gvukBb66u8qa/fjJRT2Y/VM7Ky+SHQ3Xd39OHteWghncV5dgbft8IJ\nBYCFjWeVMDJ8XCHN3sTcJbN8LT9JMpkJc/+LwWJ0N3hRC4AgNnWGy6B4x+O2\nR/HB2jeLXWubeo8cLZ29oBHdR/c4LOVbsrK+JTnqi7EWhICXBUth7LGOsaen\niLv8jyJYNbDrESN7i9B0BLeBxPtZRRajBPCAVEHn8Q+mS5iUukbJ0f219Pim\nw2Sr\r\n=mmLk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE/2yeU1rJXsr1DGqxN1CatuVCFb96PMiOimNlur4DZvAiBFcWvXRY2bQTVvbddH1uqv+XMj9T92uRMigb+yo0xMvw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609860209-7570eb1c.0_1609860388523_0.9605687596383281"},"_hasShrinkwrap":false},"2.36.2-next-1609860971-acc34b9c.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609860971-acc34b9c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609860971-acc34b9c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609860971-acc34b9c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kQ4KI5+SghzFYQN4uG9QpmN4PdTykBSefbepU0VjIAxQkvPOHpPX/4AuUPylSXVAo5ytWglhZHHSq5EVHJTjyA==","shasum":"988d3f2b1150344517d107cb2ee62ca8ae8b840f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609860971-acc34b9c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9IgUCRA9TVsSAnZWagAACv0P+wf87QH5vSrW7Pj8CMsX\nojEDo79ImyfjcTAJ5Z+6GZxzqxbmxmJvS45wwU6v1SVKiX/w4ztwJFX4NZRv\nJY0KTWNcBcSCwQ1Jkn1u6lQUH2iKygwh+u4kgwR0/ZWACqDq2XbKxyiyp1/A\nvZZFwBtMUU+Bf6yGWPTOgs4NRt4PK/8c0DP4WJNUMF31IOiV9oFA1VrKkNgC\niEgExsY257EKI5jUBlPD2tYzXu+cTwyV935T3+Wp10w1r3NdWN2ADK6+uJGb\nfxkhLMnsll7pBDY1eWmVgI5EwsS8lnXYQTAxjZU4DNnrPlbR5hYTcadlY/AW\nuTVA3E/EfzfiPV2exsJnMPv0/ykSaqk3o1atyx/SAF7L3CRAcZPzoPbpyWQN\n3y6hgHPjW/dziDC1pKkRwv5rI15m5vwjD+xIy2ta4EjeazfyZUP0nfDZHQ3S\nfPX061rKMSU/Lbsn/DnD18H06FnBqB+7nPhxd4cNw85eYy2XJC4gSyk4QY5I\noL9QWfF6KK0QZxw23e3VfKGOPk7CBkwDusPHndBXCqnrf3lS4N6rPpNvbeCJ\nd7Cg5woZbtSmtzQPwZ3GKNob1K2btGg/GwgOkN1u8nM89NbXv18XPtRH1NWP\n2iYg2ATeYNMg1Y5cCedNC0w81N8lgn/Zdg1fQvabtEZGVyF5eRzCLC7fPdNV\nyzaV\r\n=QSeU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDBA1mjhSs2bZnDw3EvD7Y0Uq2M/wb+WJ+l4JcZMG8xNAiEA5J1NbbkTcqi5PPk5EFwElfkZ84h75CmcZmgu++I/2+k="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609860971-acc34b9c.0_1609861140260_0.3586199533069996"},"_hasShrinkwrap":false},"2.36.2-next-1609865823-1db5c4f4.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609865823-1db5c4f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609865823-1db5c4f4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609865823-1db5c4f4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dYswrpyNwrUDcgiBQN+2ghXQSWwUK+X2CrIKFn+mZxXxzN3KF7uCLmwbu02VO62DVlhg2oVz/OxwRJEoqbabRQ==","shasum":"2fd43107f4318105e295c6e888914e1989ce145f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609865823-1db5c4f4.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9JsDCRA9TVsSAnZWagAAot4P/jg8EjZMzLZhhSr7B805\nBO18io0A7d0yYtA5bwIxzvW64UIkVj0Ohf/9mgGdgLsqskeQK/9B+0j26wVk\nY6oJRgUY4EaJLkfS9W7EYkhZCecW9kWVi4E5lACWbxzytt6WYly5kQavQ6Jv\nHNac503c1hD1pv24ISvnq2bnoEBDAYVGRRyuCH+UhGCcC8B3D8yORwJQN8Ot\nUjC20TJ7Dh/+PeQylaKv0m3qoekXNskw7THiq0VS8dgZ7MHP4yjuD4XtQhRN\nkh5KeH4+mmfbHXNr6PpXeECNrZxDx+TAFQei0MUMtnZN6CqZk75xPjEXrtK0\n0ArqY3cGUxN9mAdn21cEQTq1jX+dz9kGkMHP72au0hLDL1hFPjGYIhruqi9g\nHrOZ7gkrBe3EEN8ly9Zxe9iAGyl0kdJoUDwilcDEpuANQD2pFEtCRKC5VqYO\nSHADn/JUBz0Af+FHPTvDXOm/74t207UsYkp9SDHu7bamVHKef2fY0uAGfh7b\nby0KcJMEYz55IMqAgw197muGxqburLUaxaBa4EJJ3pKHjWkeE4pIj6qpxZEz\nkCgHNRA9hmI/tleAr5iQbbQe5fa6+gnWNUNv+FsbVXNtkrI1Axbq27O4Ko/t\n1MTSc4DkoiSUE3Jk8E/lKSTNh/iuVHqp9D27gKIK1RJ0zPqxnUrgdG8iVkpH\nXq/V\r\n=pZO9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDY4JEqEIwsGCquZ/jmpQtc3hFgJUoY7rb9BJcbPFB5rgIge1W4r2p1V/50aaSoBs7UC7t4aJ9yyjElVg4bQbJj2Uk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609865823-1db5c4f4.0_1609865987013_0.09644146954146815"},"_hasShrinkwrap":false},"2.36.2-next-1609871980-48c894c0.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609871980-48c894c0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609871980-48c894c0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609871980-48c894c0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8ExB47Q0HohHdf7s4QAzGhAthvQIS990bMY+pFe1D2a+oHOHkZsh+2aiF409+uxlm242WF7PMvcjVNLLrwnDQw==","shasum":"896b7aa0fa6790fd2a2afd784f52ff34b472c44a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609871980-48c894c0.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9LMECRA9TVsSAnZWagAADxgQAJvApLTk96eYNDT9XIeX\nQ2yhn9oT1nkcO741oYFZXcAaUGOvVkopKQVOV6jpv8AAEblhxDzoX8C/nEox\n1aHOt4H67+cVHMd399tP2/gikT1xxYSxDdMv+nR8LSWrNAUme6ZxrgXwlfiZ\ntdugnHo2/4a2Ijc52lxaVSzhMFyMSJQdx0wtO1r6BxdVeVNi0LCztVBz1Tzt\nQCE9Rz9KT2tT5dsQfoGA0V9i/VbV6LMtngaImFiCzDg5YSQ+XFiE4Jnv30uu\nzisp6+2S0U7pc6zvp1fJFWS3A7xm7nCteAvNgjTuHkoDY0J7icMBdqrqpqXh\n5tLRHIYAkfrzsXoNfk1iH1zDlqMHiEOgb9VxwLx4ldCEZgTZHf+BjN9PWGWW\njxq6g5CvnP10jKMG07TX8gFRGgngUnzhQx60vf4Fuim9wuDlSvP+aS2i8X1y\nI+3ivgi8Re4NdFnlOHJyOiy8xIRt/096Oi8vuJCj5/soHQx+xdzDlPfl4Zl4\n0i5AdbxLSXqdewu4v352qJmpWGFyiDyrlGN2buqIoX7MgysR8FQjGOT2VPzQ\nVyWDfdkIv07MReTfNiQonRLPcB6kHy4p4vCWZDrXSmivnvXbrRN8kc67Rzud\nnfpe1e5qCj5a/LUrgkAdVBu+uZA8+Hu+p99WTunhS4WN6Cgaea3/LX4YgD/x\naPqQ\r\n=pYmq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRxrQA17PEFRUzAJj+rnBquud0eyJ0uVjNpJA7bDzURAiEA4wqDLEnIWT9tDatpbhXv0kYERD2sbQxl6RT45oVXnzs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609871980-48c894c0.0_1609872131824_0.16609751179601062"},"_hasShrinkwrap":false},"2.36.2-next-1609872133-13d2cbae.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609872133-13d2cbae.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609872133-13d2cbae.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609872133-13d2cbae.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TCdzt2rR1+8nEvXZwft9jGAinzX9SwYcc2mjGwQYbfbF/5W/lVsHxwXYlFWvOWqSu0mORMTrxHEo9RMN6M7Uag==","shasum":"09fb6f3e1d161c3c92d639f56a5c26c1b60345f3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609872133-13d2cbae.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9LOvCRA9TVsSAnZWagAA4IEQAJiSHDVF2pOnZlnDUIph\nA0seNzLsFOv6QJKRxrxQCt9eLJw+Kw4mR80oY8o6QVGh9zjXC57e9ZTarm2M\ntfIAnXB9e/tRsVK23LZRaMjYmjDxYWR+H+SmOFtYvUywYYAON2KZiArICpkc\nXxwqPvFmBHpOhoDQbuO8ksPxD1gY21wJTu+cU64vgsSEr/70t1ne2zODeutk\nY/QATLPDZsGQ3DPKZOeoDLbpSiCc8b++dUHNWm/fZkGYsHCjnBnOg/bGOh+h\nL2vgHr5Dak/k9rEc2d0BjMg1DSamvJ4gS7ReUoWumxKdtbvtfmnxv5LzQ/1v\ngyXSkjLwmMkLB78pHlYFCBSSAZHtwCanzhuu7TxXaerfBoldhSx1qobyI6e6\n1dnybuoslqr86I38FoA36eCNlzp+Ld5sRt2BrdyjoFZA4ndmHBavmrIO4TV+\neb3Ls9+Hy2XRUiD95Mj/+/7oaIpftwaEAQ5Q5oc32pA2NOPd3/B063CkqUbG\n2hbaaOdGOH/KsifP57ChOIRKr6WyXUab/nSuh29Z5hdpJrMh7LMLw7Qv6x4C\nIDjfq9j9rWjnUnv1WjlDGp3khSnOlMqr/wRmoEdkRI4XpigtXMmGNkbsqPOv\nQJD6C63enHmW/wuAN/WfTj7HdMNtg7AYL7laEU1DNt40VrNBF03Qkw7B405R\n1P+Z\r\n=M1lw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkte1TJr0j/xpsQ5eRlCez79GxLnRpR5/7ThkY6TMgKgIhAPpJIHwFd3lUaL2rWSh668SDKzvBhVSaMRJx90+GmY7m"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609872133-13d2cbae.0_1609872302625_0.04503035034918046"},"_hasShrinkwrap":false},"2.36.2-next-1609872963-e3b05a7b.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609872963-e3b05a7b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609872963-e3b05a7b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609872963-e3b05a7b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wo3R26foHGSXyuavK3CYhgG/Ve3uBNgku+RkzEJNinIV7vWxe+5LzR1AEKW+UB5DGVkO8TKskA666F0wwrqZ1w==","shasum":"636672b7dc15e2658742897f0e6b4ac8f5a9dbbb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609872963-e3b05a7b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9LboCRA9TVsSAnZWagAAT6EP/ApLq++SUlNTsMX3rgZM\nNNWB6+rwhzZCxgFUJiporq9aJNZ0l18tS2VUYmtC/GlA+9fUlYrCUQXsAFnB\neIc6mcio/StpQunsMC1PaL91/yCi240UodD4rwwm4rGctR4iG+P8UWwKZ7al\nzi5+Y6r8UPnGObHjAASimAl25FkNrpqapMe0QC6319cuCW+ZIy8oWpIw2PMC\nDFbGKu9tcgjmNe0QMjbS6IcTT/K8uECWlZ7hdX5PazlnbHQEkh64lbRY1uRU\nkwH7JHjGRzdTpBRqkLaMI+/TGUl1Y2531ru2L4R5Uo/IXFMPIapw8Pm8nuxZ\n5igEpPBjJs7U2NNxYWMjObx4wXuSL9i1Zl2/GTrFOaJlz7m6OWsSqVLRC/h4\nk/Lw/4UT0um+n5fhy9BYFxbY76IRfl/mKxheIIWOXGFXKoo9GOcyTPgkWm0b\n4TXR+Jml3G9fhNSncwLpPU1MDyfey4mDiRLP6M8XjAeWnnJL4qwWb73TmsA0\nqyoj7XMlyMi8N1r+0gKPRBRKb+EiF8O5AmGrsDHNB9jYcZnKwB/dT1njklBJ\nWuKYd4ZsP7aG3SGJvkYfjZvxhpVwL5KBTEo0IhN1/EK47lQLM2e3R46ic4X1\nAES0EAEELJy5pYRwEF0wIJ9CkwO1yObtWylPHeeIl/kv7Q6GbtAb8xih+0bL\nKTBd\r\n=adkP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+KmMCponAbW8xyVQSLV/d+fxFGYybUWYFsJc6RJJZFAIhAIBASvkrb9ztUdw4GgvkNaDnFh5Qjxx4VLP4j9oYaKTt"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609872963-e3b05a7b.0_1609873127895_0.5883606111634618"},"_hasShrinkwrap":false},"2.36.2-next-1609872994-a5d5fc32.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609872994-a5d5fc32.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609872994-a5d5fc32.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609872994-a5d5fc32.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fBPcswo1lTd9tSTC3dW5DyEYAvsE9tnsMtCrq3nwmbL4fSN8fFu1ADqyiZfdH/UPbqMNeM/q19cm3Qg0lz5YxA==","shasum":"8b0100007a13b87ef93d1c0e294195d0f4f0e74c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609872994-a5d5fc32.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9LcHCRA9TVsSAnZWagAAz9UP+wfFb5oqhtnE4GUXP0cv\nf9suZPf7tg/Cdvd9mK7CZ4VzLXk6Vc879Pg5l1G6eFTdk+DD5MdXB8jjkx0D\nCV4MWNSRJZhVW0AT+W4/bFAGsOHMGxAAPbMpesxTR5zYZoUNHvGaIeYkyaId\nXusVBI/Fdcaw/7zcDj1utJ/w+Axc4Hxil8JrLFaXt7+TDE9oJdcSph9Bt+zd\nuIXVBbqqNrPhz4x6iRsXAW14294iFGmEvVS2dGRvymdgJSJzMAzqeSNxA8j8\nFOy68fr8mvMDL1oTNgOT3LtdVplZT6OoZj36shZ6A1/YhC5T99lO4wqkZnV4\nFVhlz83FeawgRgl+1JYWYNgmGLxM4n6F37bnxeTyh7cKPRq1Hqus9x2tFHkJ\nQqFYZjJ68OGQWYNQO/na+Tyf4dM5ZaRPy5D2PB3qC/H0JtvHi2ydvO+/VeiY\n5QmsMQqw4Rc+6B2gJf4Oe7j61pENmHQlFOqsd0iFgiAj6ibhVZVIK44LcKTj\nYY2xvzG8wyG8+04Qxix/db7C7mJJxYN6KJej+TO8QtfG/MR7WUtVTQTYDPjY\nhtMvej4ld1hVGHzFN1mPPV+DoqGHy1qpLIOXHIJEGO/wUBlxZWI+jGzH4AXa\ni6m8s//YHK0x5UkARG3OZQewE9mtiO5UOgur1jQd8G5r+BuYLTX5zKj+t4e+\ns1/b\r\n=capC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFY3TXtD3OLfg8gmyOrUAHKKq99NErDS1bC4dYhaGiAPAiABk6GnSx6OxTH7NNvnrJLy85u/PeGWS5JB7yx8av4n/A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609872994-a5d5fc32.0_1609873159144_0.5031314860402132"},"_hasShrinkwrap":false},"2.36.2-next-1609873075-0d49a037.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609873075-0d49a037.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609873075-0d49a037.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609873075-0d49a037.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KCDhyMqW0Y0fKxT5JUMwLO1Ns2KtnbzfTlTrKotQXWrJD/qgCoxVD6N3Tyy4qS3ztxlHrF6zdJxy4SGQnQ/4gA==","shasum":"6bae0000670d95b473450b7a2f5949c85ab8a190","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609873075-0d49a037.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9LdLCRA9TVsSAnZWagAAni4P/0wR8QCgmYis7xMKBdNt\nKLhZVsKTFmhJr+9X9+Dh7PZZQZ9iR0yz1zmPcwVJXF9ZFAt7TOBre5kCKM4R\njH+X6ABKbd9vxNf0wDgF+1HCCof7ajEkyd5MsLbkxn9NLRcUxJw4GsgOkj2d\nx6yzb1xe2koWfkzXT/aTwfyAxSXljUaArh/gFpLr7m/JaUQDsqBvddbF3Von\nF+aLmnOO/mBftQdsSPAkxCbV3BOMRSwQKC6RUFHYNEN/sGfxoMEIP6Gof2LX\nwSCKqPngpaf0SGWZm1wLMjuAbFaq1KT2gIcLIOBNaAmQAoOK/sPbSZACr58+\n4S5lsWOUPcusGyK9OMSOoWZElrMnIvKcda21QGvnpphpjZdw84XshRjpSBmj\nvzhQyDFD6TmlLBYxce9pZCdq+3Uc2Whe9TMaU/GnC0QAC8ldYH9eR15YCPMr\nSQT4Lmwipyf2RnTYNuPFP+JGQwQ98Gd9NEJIv46c/NolELlfpZNTcfXtjuXq\n/lMF8b8EWRyAhYqJ885S4WiBSaB8xIGbTnoe3F6AlUVfgIX1qdE1HeDA0tSJ\n2AUOCV6Rpp4gMIa2VZH3/9vfv/lQLhIaVoICqZFlnXVl0Ih4m3FoL0bRKl63\nK3njLjjln7GdqtiFTcJGb4tKoEgT9PrKt9oNOlRWaWP5pKf8c3sy+B+9lnrN\n/a/W\r\n=NiIz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGjp4sW4naDQBeN6wXnaX2uCH6eoBN1dCj3jZIMbLskbAiEAy5Jq/3dPvGlYWpveu8vSwqJZdqO42v70ubVy2BZKc5I="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609873075-0d49a037.0_1609873226925_0.8279771173034103"},"_hasShrinkwrap":false},"2.36.2-next-1609873233-0915300b.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609873233-0915300b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609873233-0915300b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609873233-0915300b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-A0gahZQvFGhIbccejs9aroqqlyv0HkPaH+Mg0CmAHJq2QsfFaBhPy1ko8kkVsiHYA1pfidLAqc5WBXf1d0oo4w==","shasum":"b96843a61c1d3e6c751d863fa5e68b41728628fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609873233-0915300b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9LfqCRA9TVsSAnZWagAASaAP/RNV9Pco7NCNTwc7UwAU\nzVQZHDnXcKo6mDfuHKLPyzmgr/zj+41L/IonlFEORJ9WcIW81SXRYrwk9PZD\nPzFct/W2yMfNkBw9bjEdf75BZU27y5eYkcV/isEQDlQ3qmIXmjcfBrz1X1ej\nyevxiaC6qpw2Ypi3n28fD/+rC54Aziy2vpMxPPDifG94m+ALYnl/q59S22+4\nmMO6uZ5dypIBI7iGDGwzn8PicRlI/ufaNDJYLvpS9Vshb4Hvxqo9PBWjDW6D\nW2OMMAvKMOAitZHvPCa5lBFSsoaAD2J1E3VSv1KnBF8vWjZrNtnNM+dj4igA\nBuYwJPPc9CHCGAbULF6FcOSAmjUkzcZcQtxoQglUK3Q6MFNRbMGxk65yXwmW\nRQxZ/TUHCGRudTUE4MMxnFriM3ix6O9wYcmrEQWCCziZbFlB/yxlntDe0stU\n/WhIL3COP0jfp4DP/VoIjW3BrDp4B8aLn5pPqvO9AxEbGtYhwJQPA8pN1XrI\nMLAHHKHdFdERfnkpjm0MOdEtllDP6r8Wfgdp/oXghleBRpQlGbHcenKFKOE4\nNqptaMh8QThFcYCY5pMF3prAaY/KrMx/9R/p38Yl7RVT1JKDU8ZGdMgyaFGl\nlZTd+m11KmfB1EAxvTQz4yZdLvS9RUuXxqsWsj/KmJWWxBZKnWLGW/m6pQnp\nUppM\r\n=+UsB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCq9x8kXiPMjA1uyLtpfgjpYfx8yZN7wA6H9YeEGGF6pAIhAJ/Mw6ka0yY8AAV3N5rQuVA0ou6yXITINCU3mdDkewWu"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609873233-0915300b.0_1609873385733_0.32591040749320777"},"_hasShrinkwrap":false},"2.36.2-next-1609873237-5d6cf7b4.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609873237-5d6cf7b4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609873237-5d6cf7b4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609873237-5d6cf7b4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VL3ltjR4pWTnkoPSoi76LuLea2rJF7uWq+etDtD7caK2dHG+TB5CNPDlFAtqTCFQE2AhMt5gYnuHJCChyKsvGA==","shasum":"64a73d80d7264c64477f4ca3584769c2aa75d31a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609873237-5d6cf7b4.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9LgLCRA9TVsSAnZWagAAmIIP/2gio3Z9ooujdToGyYfO\nZxqt89T4wrAWAcZogX/q91XkyNeGPuVAudxaKSIZcSJiOSvvAVtxhk33xx0B\n6UZLI5AhwY+XUqPEYJwN63NS1Q9lJLEghB3tY4E0hDnY9ceVPgAU6B0yvr23\nKJKGlEti+sYYzu5wv5rVwO1AsCqSewGmKmT/5pCOjhj1P6bR97OboTVWkn5E\nMJNVqA2qofLCBNnIpp1ot6xRNEfctcuQ2MdC4P+zC2FQiUdWPhWU+Ot8qIr3\ngfo9lCDZ3MCkhLGLI2CujXECTBMBODQcWj+6M5nSJ33HJzsOkKj+Gr2kcIGn\nsc4mmvEX+gBa+/POTsuhxsprwLlGnUorotZvZBaDPe7WhwgSScgfxqqXA+Tz\n9TyPmi8VWbpvtCQt1b7/Z5YbMWLPFyHV/F3MDReQ5CQWdAGkWsSbKnfjJt2O\nXUHbZE/DrK8J2qB2zY0sP5wiNqrqI8J6QXJ6SHlPKd7vykzMKGJxBaHDmMc5\nzCbALCe9TagW9b9c2fX6swubQ1bQhxRsL9a3BaJ6BGAI9YhXvilfyqPJA8ro\npJVkyeiMQYQ3txO89hHhm9zbao0OOE8AFIgQeGFJw77zTA/BG+9PYuTNLXlQ\nCwzyPE/7J+NM5ipuk7bJNzeVPhg2Ptts0PCNh/JBIHMSUMWjqK4Tm3Y4vXck\n6QCF\r\n=mzJ3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCe7+jLLg6TM0gTN+PdyZI+rLU17D6vF5yPYIYS35Y1mQIgaORfIOvo1fix5sycq1XLg2WePErUEMaDtTq0OUYU9F0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609873237-5d6cf7b4.0_1609873418548_0.7828468925565424"},"_hasShrinkwrap":false},"2.36.2-next-1609879788-e1f2cfc4.0":{"name":"@xdn/prefetch","version":"2.36.2-next-1609879788-e1f2cfc4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.36.2-next-1609879788-e1f2cfc4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.36.2-next-1609879788-e1f2cfc4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OtkWahIVG2vCesuaCG2WwZvbp+8AJy3y6GeD3CEiSzswgBWHxijB1zOE5eZq/C+P/gYhBickStwW8YUXuUvvdw==","shasum":"5267c6d8ae7b3502876557e101dced1a42c05b2d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.36.2-next-1609879788-e1f2cfc4.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9NGiCRA9TVsSAnZWagAAjQwP/j7KtbaFP+NHacSicxId\nJIvwrTQVI3vrWib6hBzhozMPBO+i8dbkCZ7b6uvOShIv1ilRfi4CD9bhzx1j\nDK9MkFwVE1oWOavp98fl+WSGtn1eh/Sp/nGgPvpQvKC1Jxs0gb0VaKZpAlE2\n+knvrG6mzJLTbYIIBALf2NNHWiS2DzJkmmiv286aW/YcVIWCKeSyN2XZakGy\nxiM5tjw2Cit1O7LxJGrDSiZIaCmJnyhmhDLFpMUw7eRuPMRczofmb/XtT5DE\ntdaevfbPY5vlRDjJ6T/DrS6HIk2cLJRZqrb15uE28bB4XQCj+lsJj3g72nsd\nFh9qcTl4KkQshpxNDZdZuPVsETH3TI8m2W6eotazk8Qxl2ulaHcQ25ZP7ypo\n26BfQiouBAG8J/lIGYJUYQBHTs5tmkQOSJX1/5Vk5VH5p3xi3udnG8cS/Vks\nXMzkgu5dz1DWQlPVaxMaPq/0/ksDl1qujKqTM/hfR/roHqHZ2jEIDTew9XQU\nNQ97woJm5wBQ5mg7SzLpIxGUwfCMo/ZplVk+jZrAp2ot8+VrN3FferoicFnV\nVZ1Dxk2VH3pB7FkzbyX65tUyKKacYIBwTVxPJeKySddFzUZ97YuboKvNnNzH\n2ljBqFEKVRYeEvOXxzTRBrSsflyimVVH2aPP4fGZyUZ83H3mTkynNNzW6mCh\n40Kr\r\n=5xCT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNE+M+iK8qsVaA0AyYgt5tL3ruFhr47gvNL9xdmOZSeAIhANvZQoDZzDlZ9s5hMAP14RS+sY7raDplAVIYKq9xUJGg"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.36.2-next-1609879788-e1f2cfc4.0_1609879969696_0.6758717650881714"},"_hasShrinkwrap":false},"2.37.1-next-1609923256-54216903.0":{"name":"@xdn/prefetch","version":"2.37.1-next-1609923256-54216903.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.1-next-1609923256-54216903.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.1-next-1609923256-54216903.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qxIJrYchKw2TAPD1BUEHg9aSJ6+tThxLlGJnSKjUuu7mfhxp80xEiX9ueOA+ofINVKN6uCLyv2j5MgWCivLkQQ==","shasum":"4c531332b6819310a5c546b683d0ecbafec0520c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.1-next-1609923256-54216903.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9XtdCRA9TVsSAnZWagAAB+oP/jSfPRnHxceMtRIGrxCv\nDWlrdns0mnAXuqGSeHrU+eeQjf//ka3v9p+mkwrTuq5DUJjquc1M3TvsT/jN\nqNP0M/ylRJrRyoSnhr65RYzwO8s/WUaQu/s7df0Ms7xVNC5aN1O1cAc0c/fc\nC7+3QoakpMS55tzreZFPsUjAcl3CcaWGv5cK59wP8YdVeDmRL7qYZjJWm846\n3M4Ry6yGyUMd+uk7xu+Zuk2yBHgUFMBhyJV3hVXzgwJmEtRtI3rakMzRjO3g\n5fAEOMB0mJTcQKjnHV5eTtInEyty0Ymg6FQu6GCxHrCnoNGpwX4ic3JbQuqb\nRPflW2UewCTx92OFV4HONxZjEI6rtFh8DeFPkeJNnsS78WCPwDuIVFhWYstF\nU7ECQFxqo/Aci5LBBj3lotddBFjzRo0QL7OpWP1KmvZ45UjfDx3SS04BBpsT\nodzWEHLlHDz9FjPWKKvznsBnuTioLO9KlI1c4p7Zg0K4BI4pcODdz/0phUGU\n5A1JaLB0jwINBt5TJC8TjtvXialcLybBH5ie5+RCbQDq7nq6D14jUROES8oP\nGYGXmvrWnqJHkzWFqNjWa/dX20gNFrRF1apGxowB0YG5pGFjh9oUgsRzl3bw\nEQj4gHeMgX4O/IRTEeNNBaZCCdW3Ba7qIuQKPfllEqjb3WR0l9IerD/5tkB+\nSkVu\r\n=EtnI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTv/RON2aiWk7Vh6CcidHgenNLjptlFmE0f3CEgDLU/AIgfDGlwnBIilWrd6HGOu6ZPQBHVJlyuDaKKforlIif70g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.1-next-1609923256-54216903.0_1609923420869_0.41387565979938046"},"_hasShrinkwrap":false},"2.37.0":{"name":"@xdn/prefetch","version":"2.37.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.37.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Eow1p+Pa7pV2l4i9uVEzLchk1ONjz2LA7aSevrRqSP8TlVaCq7MRbdBbn3bGpDmqpWlR2xF0IzE1OYpo0CCo/Q==","shasum":"62e493b10d2718a6087a61192b9e8130440c75b6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.0.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9XwoCRA9TVsSAnZWagAArNAP/3BVAm754GBPMGZS/x8k\nITYjMthSBbQGIbMJB4Sn4cRCN3nH2svsEgS3kZ+ov86z7epulCt1nc6nEb9l\n6g+wvapG3wip0zxDOuVDjm+VhV/NM+0qeiuo6W+wtRqO5YaRJl5Jr0QHRONG\njkMieIyjHUQJeDWrKyO3rTwlCAT8y3XUs/EQSQoeFrb+Uds6/vsHGThxZYTl\n5W2tnFPUojDHerf1GrFzIppigHfZN2nOTVHD/jScfZLIsSS7VQ54Bzv27QvE\nVdSyPW1iDS5g9Ysr8KIja51I2Sg+dp6aUamHdXbj7i/yDsU15Cn2K67t7E1W\nNNhwkN9WmLWFMYOQR+3MDomBoOXGUf9hpHhhMLmDuQi8xXQoq4XgKaKrK6Eo\nhOPgVig1bNsLPPZMJDzr15sSOTUNNirFeqx8yq/XuyS6Zz4WXBdg27L1Gxro\n8vSpb23Bc3qTDoafIAE9r8HvCms3CHNMWO7rYoI05F7p2JelquJjiYKR5sKy\nzfU2R3pRR7MOuJlnH/zlbmRshB/QoYt4Q9E+kG3E7UaEpKAjNHYnkXjxnx3P\n3dEG11EjFr0nu41qH3FtUxILKCxIsep6EolesntWDPPGeyKzmaA7go1kN1jk\ndAGupkiHNKY0B8ONQTZyBdo60b47XUjv0WtahJwm26d1QY4TQywEFz3mh6SI\nqyqn\r\n=2UXx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5QQptNOomSXPQV+K0TuICaYy/YTnS6Sckg3obkyx+lwIhAJ2M+68BVpzsg4MLo262M5Z1AnW2TMSDylfwFzrWFOby"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.0_1609923624268_0.7770764035895772"},"_hasShrinkwrap":false},"2.37.1-next-1609928096-8b395e64.0":{"name":"@xdn/prefetch","version":"2.37.1-next-1609928096-8b395e64.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.1-next-1609928096-8b395e64.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.1-next-1609928096-8b395e64.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jmD6pJRsy2mhXYefqUd2++bi6DrZml0nSOqIQg5w6Nfrs1ubt/A86BP7+IqJkPxZgtxyIIglGLRgJK44wN6/fA==","shasum":"4a64f8d84a97a96e10a0b618f0a04f6b21e11bbd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.1-next-1609928096-8b395e64.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9Y5OCRA9TVsSAnZWagAA09MP/3XGNPj0OhRkwqFATfn1\noCeOQ9vsy6osWMKFP2ZPF+l+wBIM+huZTSK50xmOzEZnFb8I3PIxXSO/LlkP\nAzq7MAdoyTUNCsvmEEAtK8NEs2fNtX0DPp3H/9pMsGyTwaiMr6HomZLbRX0/\nS+AGm1mVqO32aF/7ybJEzvsdzvmKHeiH/ZKGE8sLS2Yd1jmdm0pKF8Frqens\nw3dOt+ClSj9C9bXIEfY19J5U9Z9p//jkSP3T1KxTNQ9powwMhfWy5FKg21OH\ne7s+XOu9PACUtGa1mzDGAghruBhidoThqNPMLz/vF/gnxIZz6HSuWph/grqe\nfskX9CIUkp+d9XexafpqI2j0UO8XwBRXYJZfIqvFnj3BAyO6MW/f+BFVtw63\nmkdmx+CCX5TUP3WYRvxsX+IdpeThSuMDLfbjkNWutIPbK6aIAXOYyeDUx8bR\nRfeAjIHHywRzRKLS6cPTrQAehVBur6cjHuch8OVS/wr3It2QmBuIUMIGSiWT\n9BVeRRJzEXxyKBRC5W/ZSO6Av1JeeuMSQMgaiJ261ZoUBIVjDe3UzXBFzx9F\n3jC4JhGXu/8JxC7Gk9LPxZ6oChkXRt3He3RRb4/9eok2T1KZNSQNroAgapHA\nDNmIitZVqBHOkJa0jxFVpnB/bpMtUc0EZT+vFjoJbFjaKIvo2n0DRYFVzP3o\n88XY\r\n=AQBs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEepND6vsP65GrYhENELfO2nHNemxDCXOm0KvmkflLH9AiEAgNF08BbEyUHTI+oe4o+Tphf9JCdNCyW/by9N9HDLcHk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.1-next-1609928096-8b395e64.0_1609928270390_0.6634497072310499"},"_hasShrinkwrap":false},"2.37.1-next-1609928261-a5d5aa64.0":{"name":"@xdn/prefetch","version":"2.37.1-next-1609928261-a5d5aa64.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.1-next-1609928261-a5d5aa64.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.1-next-1609928261-a5d5aa64.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hAV+ju+7Gv94AEoU61mL6b58+VEQ8nd8sptQwh/zk/x8bUwQoOv+Y0l4fAv1erxU03btefQN9HygrHzkbklMEQ==","shasum":"1f2edbcaccb6cd3a8734c44822670a77350d5a56","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.1-next-1609928261-a5d5aa64.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9Y7oCRA9TVsSAnZWagAAfp8P/1Rh1k/9dTplUv7NcOOM\nFBJQ7TpAJDSjNNB+eJvF+//Frn3eCO7cgoyu79Y2rVAK/RCgYYR13F73fF2P\nJz/ds4gJcNuzBOEwFesshxF8bAqgvOfhnOHwvIMckril+DRBpHlxIHNn+WsB\nzbiT5unsqSZPOZ5kLj3JepQXYAZLo9PUFztSzhAdf0IE6/yddAzpWt1Lam41\nxvrEx3hrAri//jWnuffRCV+Tf6FtptdfvtW0oieI3mYEO8jilZIzQt37PnXD\nG9pvO/uXHzkseCqaZPosZ/OpA3sF1BTff6NJA+jCdQftuYhbxSC8li41N+xK\n02DaG8/aow3KOeTmMUCNKUHpND2nuzi+9aTr78ucfx7q7OO0Q/Ua2jFRoMTR\nWjG7TI5xN9vS4jTXd88O3uF2xVj5oIaFiSJxtwezgYR2TvVhtguQwBVeOjtK\nJWtymRwBx9bOcxxrrUT/FY0fKGDQJAo0q5MGRC3MmidW/TftnSP54TkE+CgH\nr35iAgXGsbNZUByTCGTuFwViEEr+Ej306sxykn/weH48rhycriazKbLZ/Amo\ndZRmYb8BjnvsU8uKRN2aF6rjGQysdcWChY6DrcuRaEPB9SUDPJP5ZxCcTC23\nsMVx2Y4VV9Ma/lyU9iG6Pl+n4Y+OS3f0nSzWinEr/AGCro0T6caQAuRT0seF\niBiS\r\n=Bypr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFCoPiQQwVRKNl+gKOFLFpy+EKBXUamrtE9P30ALS8CkAiEA1o7xI53jaBqtrAbZH9TKFP0qIb0wzxOI0hFZ1Mb4YMI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.1-next-1609928261-a5d5aa64.0_1609928423750_0.060366099663775596"},"_hasShrinkwrap":false},"2.37.1-next-1609929467-1a33f113.0":{"name":"@xdn/prefetch","version":"2.37.1-next-1609929467-1a33f113.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.1-next-1609929467-1a33f113.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.1-next-1609929467-1a33f113.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AHWXMuJiipCP7DYKouYii4aEy9Bkcc+P/ouVHD969Whx0gEWhravwd9wcgINseJw01x4VQ5Ok5y2Dbha0nJRWg==","shasum":"ceaae4374dbc6fb92ebb4499217096612009eb8b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.1-next-1609929467-1a33f113.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9ZO1CRA9TVsSAnZWagAAPYwP/0PSceu6d7SRuK8rrZRi\nk9iiZ5BSLMTW0fQkG1pUZKT9vcpF/YlodHAZAZHW/7i6oC5IADMLU2yyjOvv\nCbUAD/zSJzT7FqtXjUSreNsQXkHs899s40S3wljwrzshib1GJsY1zMBhU3HB\nRtW0p2DruM7crsflDupssKQ3zDkkH6a0W7W651L/JG6vv15d3UlzBWv8zjg/\nLjfS7VBe6dabLa5U0Xs1ihZNu+qcTeTWpZIqOQpOouA0+FU9LuDqvEHbxDNf\n4bC2QmTnPZJSJ38frxbUfPsz2aQOh9Y669++HE38mouzjcNlONZWAdCZYEzh\naLi9aoKklHQvoCLpG48kCnv22ht0C0Ropxx2OP/6d5CvxuQ9g5n8Nmmj/MsG\n+krO/1/Drj0y3DqN+fpmZB7Wo7VMGf1OOjyTUs/9AtbO7d3F94387rlMhwX+\nJfo7zepwCT0xQ3kt5X8+20pQF2lOkxxFw5id17p+MYfgbPMypHM+XhQ7Gf3S\n4VlbA8z/2zGhSnt3ksHzYFem5Z1K4KVMls6uLnc/wx2+vEwbuSMTpuKA31mM\nu+v6vmlqUg8Y8ItX50i6UaYaoYsf+Uz5HDAP88XYQDHrejU4v1jnOQ5A60Is\n8q3Qu/IU/HwX6JXr0gCr5i1hRVKkpoE++vkHZaH21460iPYvc0fyMu0mDsQc\nlBa+\r\n=MeVK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB/BuBW2xJTpm8N66HHmji5XRaP0oaCltmThHjK1U0fFAiEA8gyXijl2VCtiJ7mr5k+brCT8m0KWyYFUZxvY0Iv9Ri0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.1-next-1609929467-1a33f113.0_1609929653336_0.1346542056031097"},"_hasShrinkwrap":false},"2.37.1-next-1609931011-18cb286e.0":{"name":"@xdn/prefetch","version":"2.37.1-next-1609931011-18cb286e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.1-next-1609931011-18cb286e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.1-next-1609931011-18cb286e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zgJEEGeEGaYw+w3Rj+QVEZcta8ZvuZ0M5KbZraXZeQm3rUG0dt1SQA6jGKQS2Qc0GdgNpPJCfSKatW8dJNhLZw==","shasum":"7a44fbe0af4d404b1348e581c727a63cd80838ac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.1-next-1609931011-18cb286e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9ZmwCRA9TVsSAnZWagAAKDYQAJDdzVwxUnqclvKV51fG\neqPZk6d77uyfemfdk1G7gXmk0cxqmJVT382YgUw6kF4U+Vhtpq2kyJowxc78\nnZCjSGpy6YPLQiNu7iP+5REt3+jAzQgNh2m1j/HCLYb8zZxKDrp5mdWn66bZ\nx7tNZ0sT6OO+ZIS250dV8VsakvztPKX5OSVflC3rSVZyDgXRpvAUud0N5Byk\ntX/83A/RotswnZygt3ZMZlnGQDRavFrICY32KbxCyuTcYyz9G7bCzfYVKhdU\nt7E+d3UAUl/O23N7EnRehbiGjCEOT+LQ2TWfNTpTHYOKV8Mopswqp6XF2nIS\ng+kwMS6c3exw+cUg8YerIW5/qwxLWtKuvTaN1LSA8AQTtinLVg2ynuqYiWbU\n94kBuRRSLft9XhZ++l7deL2smHTIqnkbZDrsOKUAqCaYAt31qOv3SmO8zXgw\nCTUMHxBzONj9TrFpEILFgYJAt8JskgCNi5qg65Ht/bntPVib/EiN3zSrY/nN\nfzSvx31z/r1qOt1JMWl/7LnZqHTAqycEyF5wxILyWF8qlLHDrr4Nkm6pex5I\nLJpZ69mWxlgIabRik9iwCQhyp2yQTEZpn7GHCovrc4EIdoenFS99eEOMx00S\n2WonRbmUNehdF0rS+EPgfjfdkV7KE5B5fkJESkTrFR0MZ0FMTYW8PJJFLpuI\nyF+C\r\n=WlNL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXq4PhtnYVwghWljLCRLevX9ACCcuUv+/ybqK9uLR5wwIgUn4ie+Ctl/nt3kZ15p16CU9ctTv5ybYUQDnsN0OP5pM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.1-next-1609931011-18cb286e.0_1609931183575_0.7734989920051407"},"_hasShrinkwrap":false},"2.37.1-next-1609933315-09e01ee7.0":{"name":"@xdn/prefetch","version":"2.37.1-next-1609933315-09e01ee7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.1-next-1609933315-09e01ee7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.1-next-1609933315-09e01ee7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZOyxFg00x8k+EhGWLO43qzweu8/Jcw9ozauIjpwp1qAjdd+nxe+hTDMZurak3fFwUhuI8GB1gZCDEkR3ZqB0YQ==","shasum":"29083ab029b41997acd4f29d0dc9d7045dd3b88b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.1-next-1609933315-09e01ee7.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9aKWCRA9TVsSAnZWagAAEvIP/1ymjKa6QsELkMdRiYSN\nkYr8gY1U4akA1nQ9q9GKIgWYngUf8rX88TYEXmi5r8guu1vViWvGWncPtJwz\nimyeBr3Syn5MGXgsQ6IZ7dc/skYz5GIWgmifuyx3XiI03vGMxYo14IObqqys\nRt38IzbhHbvmLixr7EPoxZLm5m/9mf2o1yk3Q60K+kXJAofzHGlZj3FJ1msk\ntN/GvLyeEyyU0PLOvg45kMCT3+zU8k6juVBsvT2CF8rcDgxt8MGwLL9s34JX\nXzAgX9EvLcNw6afx72ayAsoHev8Mk9i2QKQQ6+Obj3GYucNDH1HPPBmwglSt\nztIwBpOBJjOJrXFEsU3zaldaW9EEDtLf233F9hYxObBo82kuqyAD76x4HuOd\nZb1l3U1NDvFe/EHsTBDw8e817nzQWotnAFsbmwUxi4A4mfGKqAJa0P0XgWjL\n/96Bt45YDZn67laj0GmHvczC1vfFlsuTrU4V3IcgzpmTpOjGjkyl9/g8ntOk\nIskDKUGsRcP4h9LHsBMQj7oUSpViPwFsCs0/zW/CnyFxNKvTB2tT7y9kQxWX\nbc3D1FisTSv4pXLwVO6Wk87mYZZOrAPy9xr2MBDLMIaEbV2iw1+tNFpzzbwh\nd25YU070TEJKp2SKMv1ihl3hmv7QoW7A/YcSAoIDJ90B5AX1JzILB7TjFtA0\n/Jb6\r\n=z5uk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGzaAyVxM95izao17lg2xDDjbvu9ynEJxThi+bws1+mAIgVscDKpqC3403D1w9Mp66PQJ/O+4NaLOaLKtNwLQGzJI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.1-next-1609933315-09e01ee7.0_1609933462394_0.6121386828348361"},"_hasShrinkwrap":false},"2.37.1-next-1609933978-932ebc06.0":{"name":"@xdn/prefetch","version":"2.37.1-next-1609933978-932ebc06.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.1-next-1609933978-932ebc06.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.1-next-1609933978-932ebc06.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-K/aXPHGuLZ/O+jMNSlF5KrqlBOgvQoRSqaSGxc7BwRC90CWDUGsvAXN0uvF2EYvYrqWbQu/UMZUKaMm9+GBEoA==","shasum":"da89906fea7621b65abe3bf656a8533f44396f27","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.1-next-1609933978-932ebc06.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9aVFCRA9TVsSAnZWagAAeZsQAKF6OqvQFer88U3kM4VL\nrlCda5qQK2VjMayIKgBFR2TR5ZyzU5tWQacCGxlfods9Fep2CQS2oWkjn1WH\nuMnlGv12VNhUW8cbZ2UP7KxZ0wdLD5yqS6gILzeMjUya8uk5EQq04wh2urvW\nbJ+zD9gugrxbW6wPecE3cEVtDhpCB58H+71fDDxA87EOOF5TwpnYe2K8s3fT\nhdr0gqVgtELMCxTzBpkuUEJWhI0GOaeyYjuDxOPpo+qtXP1jEnyUkLJckC/Z\nCbtGzwnSCfGa9qhtt3LVnfJ77LAuWYh6kB3h/07HzPSpNnNswZDFUcoARSgu\n8rhUBImUvih3yiJ1Rm7xXJ4bcwtKOCtIa/FwYaGXwhZiaBccgZOJPZoeXxHN\neik7braKhEVSOPKXEaDNMOBsXUsc+2nJW+jzy5FNAklMMkeLvZlkKUxm+B57\nZRO4C/3IIN64HPLMNnMbv5Ai88ZyAheV+fLgBMjx/g9aanAvbDamWBbwDYeV\nZcpn1/7Uf5+TuR5+/KkGiH47u1SaRStpieikfx3ndtyFd5JohzUyc2g3MDaL\naDRsyZ3JLkWGGoWkhcMGfAy5Es9srv9L9rKzPgg8xs8o+7K16Jwr6dMRGDmn\n9xqhXig5Af113IIuVokX8+k2amCNsEZbh6wv0P+YE2XqiHOdS3nL0j0u2qMk\ntmkk\r\n=DSh2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdvz09K2/FKZfGf9uR3iaXl7vqYB82/I1WkTuC9aN1KwIhANZq0XfGJ0kwpZkmJzX4axK+8c3yQy8lImh0VMa6/iW6"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.1-next-1609933978-932ebc06.0_1609934149024_0.7122687842992297"},"_hasShrinkwrap":false},"2.37.1-next-1609936179-d65f6b9f.0":{"name":"@xdn/prefetch","version":"2.37.1-next-1609936179-d65f6b9f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.1-next-1609936179-d65f6b9f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.1-next-1609936179-d65f6b9f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-P5tEhyI0j0weoXS5jU10pej7tXYvdh25Jgy60K8Zw5CyKQDgCunDzcyZY0iO33tVQQEkiUf81Ayiok3xw6NqTw==","shasum":"b613dd5fa1909bb53577676b0b020f99f01b6361","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.1-next-1609936179-d65f6b9f.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9a3QCRA9TVsSAnZWagAAwLEP/026JT3IVW06nVLVChw7\nbwW+XXTWIBzffHMLoviJEWAOLR/AcilTLNCNxJ8i4TPHYvXgl55scYxJ38b5\n4l9+7fV4TVYcTsmG42iJNuxFN45QEGRhkFqQlOdhvSMCkjWpV/+uyEXEcF7n\n86Jm/AILyS5yF/vGA69BxgjFN7dFXVtBkXcpX1vAZYJsVKQKYgyAEImnX+ep\nk1Be+JZnRtSOe/ixmTdSlftejDmozP94QWME2NGcLBzSzjyQvhCS8/nRRwqe\nuPF2VTJPq+dGrB2k01ywd7fNsUbhYWwVSpDjarrNqnXTw5RJTQ9zEfKURXHN\nXQWibtLRu2YPtgWfcgXhvIJgVXUKv7vSh9y4oqvwtogr00DEyqUJwORc61Vm\naitxcdxyr2kN3vkomkzz/JkvU6oN2teUClvCdEe90J1IkMo5FTQBemWJexig\nSkCifajenf2BysI9TkeTHBCZTpXyAQqceeseKeZcNciT2V2oAnV8G3s9iJtE\njlmmY6Z5frBat+fbVAc/RMNwzf4YgilKXiHyf/Zmt/r+6d29f2wJKmjG5A3/\nok9SEoi28eTj+71yz/yZhFMbHxoJ/KJ+j+70Ae7i2X6TIQO9hdoLfuE8Yjmn\n4joXJ7kg+KcbsfuwbwMgiDY9kkYLyJs2338fKqz01fF33vv6DzlzfU+eMrJz\ngHg4\r\n=Yaf0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgyfsy2ZLSFpcSy7iyCFwSAsIPFNN/xzhdmkilKogjaQIhAM67aFpaJoFZ66Yb/vmc4W/stsOkXzIdpkI8rgSRS3NZ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.1-next-1609936179-d65f6b9f.0_1609936335518_0.9320529726391944"},"_hasShrinkwrap":false},"2.37.2-next-1609936396-59417961.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609936396-59417961.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609936396-59417961.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609936396-59417961.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IlGzEgKGIfZIQa3fh0dtqN+HnzMJDEFdi0xFq+L3TzIIn7v4FtAWD6svTyL7I9sW6YvB3DhqM30fLgnyoDOttA==","shasum":"bffacb3f61715c073e9cf05bf4a7923e2df28df3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609936396-59417961.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9a6yCRA9TVsSAnZWagAAiqIP/35pKn+GlxXIOEIKl0v9\nDP0cUUGyRWzWCpjwOWeMn7yAjkPUCXRmvXyeGlua1nWVEWV4NcIBlDWM4YkK\ncsrx59bxskcDGqka4jwkGs4rkpP/qBeccU9KKAoDw+aewHSUi7gWHNFHCp1k\nEJ8mlPL7Ax1xO+MkNYiip3PRhxklFhYA+c/U9OT5AadjsdkngZinsGSz3M6i\n91eXTG/eldR6D69TSlyhDOuHSh1lQ/G+s56q8qmzADSFKfp17r3Fxoy9HfrQ\n64I6gItjrbMMigcT7PEACWxxG/lkbVY+8MV3hwRhUf/XOz8Eb0dLgBS+5Rza\n3PFz5ap7iMX/dpprbqDwVM1DNByJuzLYyOx0BChZyykz29aQ5Ie2Jf93jLX6\nxmnDe7ncpdBC6Za4jCWQiXsKSPiSM+GVsdpeM9YyFb5qiNgUB5fCs3KYfkMQ\nA37hqGKzigH5bP2wHCSK83aFFuec7pfZAk9LgIgEmgQvJbwSxPsVu2V+VotI\nHhgz1x91/ovreSDGgYNKigWhxmmgJRa18Bm+nYO2vyhXjopi1I/ad1BxUne2\nHtNqZt7YYrl2yHk50/MFR2J1hbRmD9bjL/bNn9QTU7D2InPkTaGvU0DMlcYD\nNGqSCwvCWAFIuRwwbpdypTosiD/gcPz1hCcxSZ+4ilnYJxcNbdfimQph+wuD\n8ptA\r\n=brB7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQDgmmY9ifu3qDgEXdwrWYviqR4Skr3BNtZL9ZomxHYAIhAPBLfh/rt+DdW0BGsuWyxn/VCUe5Pz4KbGAOT7ra8FOu"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609936396-59417961.0_1609936562482_0.49986776299641855"},"_hasShrinkwrap":false},"2.37.1":{"name":"@xdn/prefetch","version":"2.37.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.37.1","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Lmv7TZDYdlD208aU/H6iKf330rJVuc0L3tOS1TfqO9jagOm6NdNvOkPvZt9Xy3uoRX7KOsELIeDJ+r/oaluDgw==","shasum":"01c3023f314014b8a31c566f4965080188b89afc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.1.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9blMCRA9TVsSAnZWagAArCkP/0nXrL+u5uNHSAzTNEtD\nvirrm9FmsTxmg4a8moZiyyTUnqgn64dfSJvvElYRBNjsEifTZMIu8kbAFu2u\nfduLZfU0oExMPulENRUdnUXhLPBFccZrtoHYcGI29QSI+wJVoVqBB4vPtScd\nPk/YXFtGslTTZaN2Qz/eN4A9ZgA8JXfjmDROO7pJ10sNYSc7d2rsGMazS3iS\n+Z5jAQb/F+0nfOZ5FKdLLPT6oPi6MYuK2Wm/aNn0uZ2GsCw13PvcEPHNegDN\nP6RYfFGXHnMhDyptECUDVpVkFot3wy8p1eSijQu7qEglWo+kDfWS8m8MkZ7m\nGRPRRX98MM9FrnfHND2pSH74yIJ79pcxQgZjjtKf5t+EbuIpLe6Rf3+JOfWm\nDhHSSnHEGT6BIJmhFxqmTv8FJ1aTFm/BpNh0DDevE6f1jdPXTGp3a+ufh8uK\nVhQBkrPKZGAtoqjlworEcwn5pAsqRldVcOZZyWAZ3+5LmTDWa4YtfWZeQ5Dc\nz2zVg/swPcKnkrA6rNrLaob5DlOhqN8MJSR7qmtlXWY4oCb0IQcyD3GLgeAG\n7Y9X83ki/Fdq5pbhS/Ex0seyX/S7USzE8jvSgDtGagVXPecQXJx7/nuSt8q6\nBpQNGvKOL/2xE0ZY+EfJ4bKKwRfvnL7RnOmAnWktWOr6DnHz8vnwlzOjpLRj\nbxtZ\r\n=eklE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD73gzx+Dm2oqHlcf43ZXLOubvkvXslQ4ykj+W81h0ruQIhAMbl304NE5suHw5U1jpboBzc5i4r6VlyKcY1LqzYwuRU"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.1_1609939275607_0.9285678312945054"},"_hasShrinkwrap":false},"2.37.2-next-1609939303-947b656b.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609939303-947b656b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609939303-947b656b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609939303-947b656b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NRher5k33VdodOJsOKNYaHvn+YbLkQ4VTVflsGdyITx9SpjQku8XY8hURlytprVqymF1NkF9tKkJ3jrRUtNWGw==","shasum":"5f87f0a7fcfa9d1241bf365589471cdcb01620ef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609939303-947b656b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9bnwCRA9TVsSAnZWagAAvbYP/3ySKH+VUlLIyKXHVaN8\nLYKFv0fkHD1FrKQW2Y6wQycmD/K6JtnY8FXBln9lZZpJ32gMU1c9/ghCerCF\nnMcq8DJqOBVxZyXcWUOCpBc7Lfe9Q5CcpMYhuCo7HsjRtiSg4agRS8GN6BVC\nyd8j8qO7KGkaAWEytpMtE8MqBxRwZEEtWvy9XgGcS8hw4WfhI5K8hTDtIwyx\nL5tVMhhXPIKj/d79C9FwS829CFtyWWu31qus4+Jr7az9y8uZiw0DqVNAEDy1\nRhfQOP6rfXSG8jOLXqFMe4zo5Rf1geHlLCg99pdOdDO8tcxvnTxd1QwKNnZb\nCzMozNkgWBi47hiW+J8IqiTrwdA9BgziIY9RPuGnvq1h7eAMY7yjeU0vw2b5\nqpVBzFoeY4rmaBd/FV0tjSLJEn/9gQTK3sX+xE6INJRXMKjbh1OWj0tygfZD\nm8HkHKXYWpDQgVhedyxen5+SLkXhjK7n/aRESgCYLhcZi28KlJny+jA5PW36\nMUJVNT/syWCC9eXUsz/hLedGvpbHAcVyWXkpuIOuR6b8HrpwYoT7MhuJp4cY\n0THIpQpq+CI/OeL8c7ljW+TEN6aVMs9R5gus98gvwsBxX+s4itwe336Wg5Jc\n678L/afZmShOZymqVMr6KKKK6nU/c4CpTy6s30hPyoS34ZQEPyenU5oY4qkY\nB29u\r\n=kEr0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHplUIjxFVAlKFIN2G4YLeommhwDMJdMLdhB6E1BY77QAiEAnm+QNtMMXTSOaUX8HWx0H3Hm0lP8zkq/9/Nyz7rpjXk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609939303-947b656b.0_1609939439896_0.817528020913296"},"_hasShrinkwrap":false},"2.37.2-next-1609940770-d567574f.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609940770-d567574f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609940770-d567574f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609940770-d567574f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nURc7u7xQphN5G/h8XQFTo8v3yxkC211kSEwykZLk6bYCKYlbQGfFPJXI+bEgv/ys9Rh0kAbArDGjKIFuIXcfA==","shasum":"c3c0643b29dd246b2774158848c1c2c0b86bce9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609940770-d567574f.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9b/NCRA9TVsSAnZWagAAuxIP/32CpfwAPqb66TWT3Zqv\nJvz69064ZDTHbQZiMnpfezJa79egqYaJ2jiEJpCgOFrsGTPOPn42/AZ4y+qp\nWKA+EhW+1RKnAaQ0OAJxA47Juke+hCJhdthbsIpUmOAGAhIRIe0+69XrEoOw\nIbw259cGMVKOhjZZ7rPa5olqXzebjH9CyCcMSa9XLJvpyiJoNcpyCMKYFeBj\nYHFUCbo+4OcjTdfqSysI3vpTFH9aghDHyy3Ma7L7pbwHTZtEOyIuWUIyB+3V\ne1ItG8awuc05KJvXRFzA4sSTO47XNWOQCkQ+y9ujBwyZ4TunVBGc1IACckfv\nRHlD9BJju7HfgaCMw7hR9+jETDJWnscJl5YwoHw9bYqEH1FfWWO1hnwOkmoW\nt3Rw8LeFLBzSOFc4ezzjtKAxBLaIIj7tMcwAW2fG9mfX9A9duowqQdxBqLWi\nlZ1wg44r3A3USaLbptfKNpytkKuWZ5GYFmB11BrCU6kJ83TsMqrlD7Ano/DC\nOcJeBVqJ2/i6nz28nPmDFCN2WNgnsil524eAH3OPMLtxKnFCvw5NMxpF+eV+\nU9x6fvI+xxtpHc+1aGrwf1KSe+D6OqjareP8tOSUbcqwkNrL/4FJWuIVceIq\nE8vnhtFxv6szTyaf84EXKEsL+s8E5tZPEnDBzqPw9AF22qwhgeEpTVGvOfSk\nh7Dl\r\n=44C3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDB7QGEPYeGUx/PypnD/vZr1XSdHgmoe12fkqAnn+R9AAIhAN4i2nrBeiFqVKFMqQHmy1fNee46XzeZbmMihKMaqU98"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609940770-d567574f.0_1609940941257_0.8256220387977762"},"_hasShrinkwrap":false},"2.37.2-next-1609943014-03296cee.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609943014-03296cee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609943014-03296cee.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609943014-03296cee.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-a0MtV+MgvDKK9II5puSVX547tNtX4k8jdjOBR/kFcdB8cbXVdPysGKYO1hq9EkcgQOlHdbv52ZDBCYubnJZe7A==","shasum":"9b2ba06a752eafacfb99a312530a65b98611db83","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609943014-03296cee.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9ch6CRA9TVsSAnZWagAAs9UQAJd9eQUN2DaMSSVjIixF\npG910iaAROKteh5/YX0z569vBJYL7QfAQDQx0vnJcxobMYBZUPwBtDTMUqsO\nl6qu45Y4AA/RaZqU3arc7rRTPy1jMi9TxYswHy7XBoMRVHz2FrlzcKdvqwfi\ntic9lKquRbB4aSonUT6kK0EyY16ATeKrsdbSMgwdq3f2raH0PsFhrk3EjY2O\n54UueRcruSwsBjNXQrS8hkNWsnkmiwQlfsn4OeipLfGWVUPfILO77NPKK4cc\nTi8EzZYlwXWfSNl3KMbwj+qP7VH5MgtdG9lc2H+9Kko6MxMag52jGefiMLeF\nGo/t21GMf9U5dLgLTJKG7ntrtpvfZgkR1iw7P3+mlvH2P8rT/+wDF+63ztzZ\nBgV4YKkfz5WHAA4Jpjrq5QHxC2UGxXpo08mNrB4nFfHrzGVe4eFxaPwR9z7C\nnG5NNEwX/lb7PS9niWr/9+na6FHJuIcam77UBlorZAI3xswEcl1o+3xjJiDr\nxgEMGdq9QqmD5ZUb5sriUaqfCRZ9PRNNQ8XxWGIgew6N9R3BrtM9fLlWuQ8k\nqR06JDVPnqUFTRGnMnpFzIzhkLaD1VJJwRcA8XSFSJy7xJGQYxtYtyqaiCCd\nmbxKOLxqxaY8/7Ftnm7ugWqhq52hW6ReLCf8iG/JsK3a75R4VOmaB1BVKCP6\ns1xV\r\n=FlaS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJrekGUPP1Cy6x4U/hKqkGlRWP9uNn2dhDt0aeamppiAiB+2aejwpjoGsi4pnSIC4fatX6vudqVGk+/WHJ3B6iGdw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609943014-03296cee.0_1609943161623_0.49212094959477026"},"_hasShrinkwrap":false},"2.37.2-next-1609943714-4f1f2b2a.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609943714-4f1f2b2a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609943714-4f1f2b2a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609943714-4f1f2b2a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-q7OpJHv1X/I2Ds4yZeooV46bgIyw4KUWn3KXVz+CD6Muf/5SFProu0Xrm5fTCAycf3aMDPs+2jNkwG6buqjrxQ==","shasum":"0deed3e7f72de90da5c0c31cd4d9b22f8003f956","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609943714-4f1f2b2a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9cs1CRA9TVsSAnZWagAA3Y8P+walIHLW5Kc1U5TuxPvC\noLn/t4E43WFKrkZ7rJipbP0v9IvHh5rBs+VXAwxwLPHtlGMYExYJ9N5nciGB\nGPDAn+WfWFD0I0g/vnxY9h9z99EBi4w9KImCGwZuJBwROVcDWQmq8hokkhZW\nPUn/SbTlLZB3s11REIGyjvxFmMinWR7H9jLn2gH3Vd2RpHu0k94/Q+WDzRF3\na+mexV647HvStllw/CZu0E6jFVfVdp+jD22rTdLRyaOoCturRbjC9JeRdNf+\niW8paieXdq2cOcSxutGtK4MxKLECK22j2npfRvesGUK+l1r6/AdNTjlY69v4\nfAGfTDsfAOYKG10OjakpRdOoVORwC8eBVoCz2Bn0gYBsDpgJriMESzk6VkIe\n6sBV+09+tbJE4oSklXcjk1qJk9msbqxC3UOA6P0icYA6OJKQbnfrSBYqJ+oA\nbP5u9U73MqeioYiLqYT19v7pU/IWYYistKSJG2p3Lp+ZhHtw5RpalnNCdm8H\nvGkT6xfw863wsyb5VP5cSKJZEeGLiamz6xBa7TXcVJ2Qmx3ZOa9Et8ijILeG\nsa4en9H/mFr27xxySgPJ0aW0jM/VXw8fj4mDIQy72IqE2exa+mt+gxZuWVoQ\nAVe6roTqNnuWA3pngALrN2JFdJznRndmUl+IwhqxmDjNeiOaorP4JJ1OxUAo\n9ZI8\r\n=8QdH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxqbOY2RiibwpyE5tHnX0ZE+5Wrm0EUmzbf7kcRx5bdwIhALT6/j9NcCHtsaEJnLks8lmMl3adVCz0ulDj3H5T9xkW"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609943714-4f1f2b2a.0_1609943860551_0.08630722766592736"},"_hasShrinkwrap":false},"2.37.2-next-1609944019-83616c40.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609944019-83616c40.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609944019-83616c40.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609944019-83616c40.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZQk3Xi0ownJsMm/ylVJ1rHq3msecfyPCo5hgGRcb6Ehxczl0OcBu1VAJtQdjqwWr1kK9wOy/nMzGmZY3S+o0Qw==","shasum":"db235cd67e1e23b11f7f80e7662053373fd0e8a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609944019-83616c40.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9cx1CRA9TVsSAnZWagAA6VEP/iLF+4J8JL8UM0M1TZLL\nXoDSLwWnpd+syoXGfuW4NLJ+9FGNoZAlhS5yRQWyi1+pKSC1+2Yo6U/HNH41\nrxh4H5qVzIs8HWhxtLNeNyiaUHPZUYeeAhRaJaTnJ86KlQIjKFYBWNiFWY/g\nVCuHZlGEP+uxdtXNWL3p8aMNWxSA9riPyTHT2SFXtlcn0mzH8B5wB7Gq1eFw\nLLorp4gzmfb5NjSt4vS16nmLXGns2y4eWmNXzwSYz11Q9sazSFoxENVYqchb\nCp2CldTgYJuukaRST5kunpm4+OFHNp4l6fmJ7ydUlQq/A1lxIHLntbeRNbhA\nO+GvCVovf5gDx1Csr3l8atP4lKTt9ztc6tAou8ikM6sq8xoOa+cMD3b7Ncbm\nyqXCVGol/Kox3Zpzcz2ocy+iqLdGbve2h+yCSbyR5HbjOesyLwyDwMMl2nSb\n+YxovrWQd02KU/kKhOnVnakwryptancJBCt6iUFidALh1X8yJHJE5KqDoRoP\nuj2biUTAZIbxpZwlHaby9osgu+McZ2BfbOZl0hqkyPIEBAqJkEPVOIYIikL5\ngZav1TkdjjD374v7aGideFC/mzYCj7KwprpDW7uVkC50qt6PjPW9fuTLIu9c\nF4x/qgQlZTKEgDIpD2XHi9S+5VXPUZFIOhb6EDHYFtTyB8875xtKV8jvX+Do\nwTVq\r\n=udXE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHr/kCm9rCjKzBJzHZa79ap3dbORhit4saiLSUDY1GFLAiBT426+6vFwU627vy9FekGOGYM/nuXEmJ8ouPaN3ZKmLQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609944019-83616c40.0_1609944180541_0.6332360608434686"},"_hasShrinkwrap":false},"2.37.2-next-1609952817-9c95008a.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609952817-9c95008a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609952817-9c95008a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609952817-9c95008a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jbXzdw15aLbyiT84Egy8PKDwqKGkkp+507ucXJdb7/gBLRjOmLJQkiF67wHQ1ooYGAT0BqnCot1jI9oxDaXmag==","shasum":"0d23c4fb4887b6d8acd57d5ee71ecaa25ef09779","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609952817-9c95008a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9e7VCRA9TVsSAnZWagAAyB8P/3+RjynJ4v3c8BP1T5xN\nBzlWgkYhZQpiX9myDX8McK9kOaeL/mb22eSx0+RdbqGtEYgU/BuRTZHpGUTU\nHpqGd4lVL/n9pqwuxBR8O+G4qIrKwuq/AmlNaeChsejxS43/NGe+kvzfr/Dm\nVtM3R1YhIRz+Uekb5x8p5NukRr3t3Nnoxo+iSytxIV6LKNSbwHAMTrTCgsNb\n4r4wg5P7R4gqsxGzByF8rdUZIXSPkaOzrHbCipCCXP8/OSHdtGSmRM74yI/X\nBwj9VoQGJYKosFeLRSA4h2K4KPvdZbndHZk2/C+rw3aYLdU6pgE3/aJBWkWq\nqoSU+9Pyj0Cmi5o7icK96NVo56kCpsX9ghRtPYg0d5q9KkY5vnbwtkOwKVvv\nAKrNra9zoJ6o3Av4xrufntlO947oiqFxa6YXygqDczyGF10kRO+JyelmghRH\nmqJAh4MqiOY/HSvUR0lQq/shNpEhE8VYrVgd8NeusWUId9WcvNmKO3xm5zm8\n2J/BMSM3lx8GC+poHHOJKPOgh0EOuZ12NCFED1of/Up8DkaxrCOGcOtfmIzI\nG9wf6h45u7EimHGau451maTGBUXi/eNhe2yybk87yO/l+/TKZKrXN/riAk8T\nlq1eKZCeWhdg4lX2LLJ1fItmaD6WL1B31GO+/FX+rAi79q7wKqbjoa3lQYvb\nB16k\r\n=AzzL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQCwLEl2lypuNNzJgodogiVHkhkgOMM5FeRATzZDTMPjgAIfehQEGIgm5vkY9GA8LqEOmMyhmrQbNv1pAmPU/Igw1g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609952817-9c95008a.0_1609952980487_0.8114490217020411"},"_hasShrinkwrap":false},"2.37.2-next-1609953814-5a75e404.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609953814-5a75e404.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609953814-5a75e404.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609953814-5a75e404.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-O283vyzjo7/8ahelcKiiuha2RmGYoFNwcZOSPIMATOeDmx/C+D1ykhG2p1C7EicV8TXOkqz8jQvYzCXRo9PWcg==","shasum":"6c1a083fd25e00f2a421965547b2455a88951ab7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609953814-5a75e404.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9fKgCRA9TVsSAnZWagAAPBkQAJDgvXcZNGA9zaoOn2nr\nQ4mHsSDedzKOW8H+8jYSbtg6c8zTeqBGJsIjGNfCZwpv3YiQSqSXtSGutGO1\nHx6H3KFfIWgtESgtishTrLYLUzudxsFLrSeNjTWx+JRmx24QrquKGQyAuoug\nyjDJBidNRg1rLruzLx09JPwSt4WTUOVx/0JSsQ29dNe4pbjATHyxRSRGfbPA\niLQZctCuGvlP4RgV4aGHohwjCHjgShAztpAZZBEN7hoXNEwnhVWs72IvtMKM\nz35xd98vol+os6gA6YAmGxXcq58ozrKBJ9NVgGFuxe+FkRyTuSJCnmjOy8Po\nrMTPowOc3ReU8BfLYkuJ3/EQpka8vxqAi72UtTfTuoC8wFGPohfLSIBxuyvz\nRF5kIsG97B7A1pefQL5ZOS2lAqBx/lQhuCE6MrV1gwFe6BhjgaYajQz4JDWA\nDl+phtS1tWhmEmwFs8EOOOV3sleFrkZNgsEUcY/eihTKf0jeaIFSc8R7DnLt\nt1kxrko16jMZbfOjvKCGItbeehFiwU5I9vXk/TWoxwNcS48z9HkvqFd5pJdp\nCAvAfEXqFT7+QZYXod9IlmXtgxKMRqEusMhxMXwhDggGxlODkVxuNKNS5yOj\nW71rLXhC9VKll3lvk5LAMivvy0sA3iUiMhZRu8E3zMcnOopNNvFuBnNnKE9B\ndTIT\r\n=IZzZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0jcj7ci1aSXW0rIlqichIHwaZh3TFc8WqFJKwS2QXIAiEAnvp4lCiZ7JExvn3mKeDtcouvejBj8Y6EM5eHSLmAm0I="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609953814-5a75e404.0_1609953952069_0.8570075589018558"},"_hasShrinkwrap":false},"2.37.2-next-1609955030-a5844b51.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609955030-a5844b51.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609955030-a5844b51.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609955030-a5844b51.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FslLBIaOs7xw/BMQi4ai39Tcp3TQChonzNL+IYH4BI4hnOTmKT8WErwEttqqF6+cRcyGD82wKuHwE9Kmv1Bbzg==","shasum":"acd87b1213ad4d66ac93792d8d129e529568665d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609955030-a5844b51.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9fd0CRA9TVsSAnZWagAARDkQAJWQPL9plz7yNBE3fcQZ\ng/5+VhWOoXTAExGf7hSSz0jEJ6x3jryIVVRtxJFJzE+yAsrDEz5oZj109OvS\nHw5WwiQ+AAya6MTh+wt7TcifTdcT5vJXq9YwjGfdGIcvmJZQsiqMB9DPK90H\n8uDT7HWQnEsGJ6yz5ZUxTtikG9nfiGoNy0XeTYEMmUJUNG4WMT8A0gCRdGBl\nbccv1mxEzinobuj4Bl1sKusQOUc8MfNLVJ1P7UDIZ1yGQhFmyE/0is1iewPz\nuT/+UnglFw+SitrRBt4aBfGmsi14Lqmb/7D0VmG68HNN5kA2PXZbrG9Vyxbr\nTkv6M5aRjXHoTeJD/ZhVdFJSnwbbFiaDjTokmX8tZvzSCcMGyyXt5QxL7j60\nTwPvBoMH6o0fErg3VZ4RkLdmFhMLpaSz6UvAeHFa6nnKQyiFL6zK7uPbfXsk\nqxEywUJHDzEydMQjgSEa5MnoCedOuPOZn1DfYH3WTY5izWGpjkaTkD7c0EaX\nhNPy4CiRvVF0E7xTeuRZTLh33xFG+n5WKEybqUDG8+10QWvWHqUcZ0bWvjKH\nUmHO23vjY0oyDRMl5EekfB0+7DmptSLoEjYYtSPzTGMbQ0G9P7ADF1EOdIlE\nwKtOt/9BbAXnGwexCnais0mYKS+RKEoK/0T5SfWiksML6V8TYk5TI9VEdZGZ\notCx\r\n=ERdd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICw9i87957z+AgczQ3HJsAu0ZhnebA+heZeLnCk2ityqAiEA3zXHisqD3gzYv6DHztMjJ7ywuEBs304TaPwudyQcJsw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609955030-a5844b51.0_1609955187554_0.56261826615602"},"_hasShrinkwrap":false},"2.37.2-next-1609955304-9170f396.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609955304-9170f396.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609955304-9170f396.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609955304-9170f396.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-V0RWnYowiRGngI7gfW7beTRlCltciBg/oiTv1C4388IliBP2p0gUHA5mn/ozXDPMsSB78IAT+WkUWF38Wwi7Tg==","shasum":"54640c6caaa789b3ce8fb3c3b75680e8c9cbb6bd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609955304-9170f396.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9fiLCRA9TVsSAnZWagAAmQ8P/1C7jwFpXurpk8k2t2PY\nZMkZqTixcDr05fegkz5sRU/FuwBxCFI9pTSzAoSU/J08VwlgrI6JjV7uiX1u\nx6ZVvhkBN5FOPyrALX+k1tnZD6ntcvJ14MmWP4vLnbFLiVI5B8kfHriJlcs6\nZmcxjjcOSyj0JzEmaRHfM7Wr1fydoXIMlFWDdPExObneBOf83SoztddlJ+B+\noByrP/ekkS2+upmXrCpQ3M6cxTACm4L2agIrXD9AUYgIIgflTlGu7b+VRy7/\nde5yrTQ2t8aol0BTLfaLixnzbNJxvglb8c0zkn8HsA3UYd49A1Fkkbk0hnYD\nPe8b0YO9YSkN2Us4p0XMtEXoFebg9uYfqY6GuBMXmIlkBMOH6GY0g0RsARDs\n9MlMZb9K7la1x+v9X5SZqLNAF8R2iZ/s6HjSzXjkuECByMfg3thi1dEg4s2y\nuszd7l7FFoQkpTOUcFMGxiVfJW4q+chUAg4Jdq9yosNmG3Xy1A09pWEvEuCS\n0+KABCE9az26uwX/YM2ASwH8IfK9F27z7Kxo1Z3Jem+Dzgztfh0mJ2ywhMwA\nWvCbfqkcl/8uzWXTvaKWi2eqTaHDDSLkPieBX0lN8I2IXaR5dNvGvLFX7c+z\nbXjyhBf1nD1CzESaa4XKTpaC98Wn8J2/5rY+Qnr7Znf1wOFjS2ipFtDp7HEf\ndOnk\r\n=zfiN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFKW2RCrXo2VoSxgRMEpmvUllN8opmgREbJlvO9J8XupAiEA4Dwd7Kix72vwdqMabpuRh6JbPUlT4ixf3tDEBLZiKn0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609955304-9170f396.0_1609955466832_0.23852441433875704"},"_hasShrinkwrap":false},"2.37.2-next-1609956119-5d9480eb.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609956119-5d9480eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609956119-5d9480eb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609956119-5d9480eb.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3St3MtbyDqvsNo2atJFD/rC27/vCHnhc7KD9NAJnUX7aFe3G51/CeKx3xYH4+2vabQJ4fm6asPONtHZIepjXLA==","shasum":"a5c9953edf3eb31703fdb1a1b2bb63cfc2133d77","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609956119-5d9480eb.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9fuvCRA9TVsSAnZWagAAIM8P/ibhmgJkvreH8nPzQvK+\nJ11gHz2x65QyZI+JWXniHOct9Qij9zaSzYTzCnnXh7PIO5PuDoAjj+prTlKG\nJELD4m6WXxt2jJdr97tZiEPbMfH4jRI71OFvC+s9BAEdwqDExKEd/8qZkhru\nJUhRqGr5u38CV/OJgkhN0O8FmJlG/QXdGUkU68zJ8WpqWCzjmO4ojCJrQIzB\nVli/guKjJWnG2HLqbYwVUkGLb3K4d8vtxxz0kh6/vWSA0RQaZh8b6lhwUNM+\nNAxwc6UuHfHL9zt0ebxjBfYjlkoGqvY/eWdXO/OLdO9l3v4bJTKbTvcbqF4/\n0xo6U/il8JTFR0jtv5noyzftvfnFpvNlhuog2kt2o77H0vWh2ILpQTckrelU\n26KETbmQdfTQTtsTMGfrB/Fv8SHI6gqpY+sEeaUpPNZYq2/UkS8G3rdus8+h\nwK2OXtNbseyrefAI89i8MxS617xQ2jhcqFEZvXEqVETf+kFh4N0cNUgoE70U\nf9Qf5eK4RNo8Bn9Rgp23xEwgiWYoDvo9aGyVl6En2OlTNoZrw2KnI7w4Atws\nZRbnBFDdpNsREcdR7SfGY2YKGU9AJsK9UvOP7m9nzv4uWl4uRshyxAKd6Z0b\nLh82P2+zHhCnPoUNoxrARYYxLfv8u0yzBPmhoAlKG8PbRUURokeobDebOIIQ\ntMjS\r\n=zYG5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICuYErVd5yCsgA6ph6NUo1htVERMziKfwXeDrvedjA9nAiEA96iPy/cSLcn4jx3X1uLqqvFe8ZTDU3pIx4qlLp8ffhE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609956119-5d9480eb.0_1609956271004_0.529110019610429"},"_hasShrinkwrap":false},"2.37.2-next-1609961856-44607629.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609961856-44607629.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609961856-44607629.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609961856-44607629.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6IbpxBb/8wExb+4adE04By9o7azftCV3NuFzkGiuFFIZOzMLswKUSCS33Gg1oed0vY2BM1WUyvHFlRGZ8gUVDA==","shasum":"22a97a0bf2152dba9679ec7834c3c69334173102","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609961856-44607629.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9hIRCRA9TVsSAnZWagAA57IP/i13Hz7lJf91ioWFaugP\nUzYpZ14qGyg8eiftn/FDmtE+wUYtjtRoGVzQdeN+KiUxppvYMeAStAAFwW3D\nwnjssrlRxkCf/oRmQwOoau7nAJ31pJ3Bn2vpngvHEv+Bj2SnzgS27V07DN7j\nkj2DfCxyhmv2xRdHqPm9OwcjMOXjKsEmSJ1lsyd1+RMHtPhqIrMK6jntvXFs\nY3VLXfR8qvG3q+qEzd94GhLrGg1Mscplgg23wf1+LlxqPl1xHlpf2OZN1M4Z\nQixioFhCCwmNrjgVNkoyJ/N6FUpV4H9ERp9EqHXKMUd9VPfvJLe+8yIRW//j\n78fvyFPDJnCFdmb1b+Mi0JdvCtalI3e94o4BtQz/VhRMBKfGxrRQ6hFNqxMT\nt9chPAjEqSeSruX/31DUUneAQs95JrO3t8L4nH1mAkUQIYteMUle/IPSDgm8\nXCUzwl7QeEI7Ca/NjipIbaJJwXdJE8Wb4496p1MRhAmln/5q4EwA6d/yWkq+\nysHHosyauhhbgg/qqmbMqGNuikS5v6+5TzPdg3Ptz0ZM3TBDwX51v9W8ESZU\nQ+D4eWnkWtdj4Y28seztqNN3JDteHM5mZg9140iAY3/Wf9+18s/sG1HAO0P7\n8BBot6WwgaZGARSOvqc25LhdxNqDA9Pac03jZXnTaXPi5XZ/nqxC2m4yKqtq\nQAI0\r\n=ywXG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDF3dfJNwShZh2SDVEh56OyBwR4cxpPowuUSY6sP7XREAIhAJW9gcLOPhbC8gyMceKFKuUA05EjgeZxAU7pNe+FCNp2"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609961856-44607629.0_1609962000487_0.5344699521260099"},"_hasShrinkwrap":false},"2.37.2-next-1609963301-4f1f2b2a.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609963301-4f1f2b2a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609963301-4f1f2b2a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609963301-4f1f2b2a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eyFTeE8xyO6tIQYvBZS4yl2Z/DSfM3h63Wmu4iSguWhlD6eAIhnxEYi4v+gfRHBgdisniGprdUR7hxepTGeV0Q==","shasum":"aa679a9262268b3b0ab653a9cf80c815f31d1c09","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609963301-4f1f2b2a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9hfUCRA9TVsSAnZWagAA2A0P/i6v1BY7VnLheTIV5lM/\n8bCsreHW3CPxDFWUTmzgGFfzk0DFqUCgrPFdg3618s0LvuBcKaikqzqr9Bj7\nHD5GTQps65ogRhSMij8lilaFY5vEYi9TrTDPCMEYnUdTTlC+OmyPClPDuwzT\nfShTdJ7saYCQWCQGSHhB9vcfb0RWVFguSk7f8eOcBUIJmuumXRtUL8wwIpw1\nt7LOv87dBxfXYX4yumYXBn3lrMYIAemu2zaZIFhOgdOj1mo5thJxFee3lHHg\nfcFgKKLYQ65IRB7zv0aCcDntPHTXMt1psu5KinK9qH1r/yb51W0HlbZjGpGs\no2mWaYOctr2HE9kyq+6depuBp9oRnK/JbZYC5W2p3z/A9rOAVSKZa/+wVlmk\nDEDRHFlQN5YNnbuA5sDd0nZal04w2eGMwvBCKI/giraHB4GvnmpIWhrMyciw\nz4eipRlyqBK9VF3zslQTiOHkat0Po6avEH6ZnGYnyDOr75/sBKV4SNkBiXjS\nekI5w5101TkcQEBtZyvQ/PuaUN8HURjwlNI0igfbfWHLBGIvavTbd1CZVvfl\nuYSlZbJZJ31bEZ6s+8qc++OtHhE7oVEmvXpevODuZgh1KPvNWPmQYMqtQSTR\nGIjzor4lQBde3xmhxrZQlWxamEwQQr4jxCH3avo4Y9V71bwnc8c9UU4kP+vf\nl778\r\n=it3H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClt8rMh2j49llJBleLgzlJip4pfkxhFE7d3je9hcJYqAIhAI7YDqb1AUDHrTX1kRrZN2agXEkUo/dUK86TvVLt5mbg"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609963301-4f1f2b2a.0_1609963476296_0.49530884564951605"},"_hasShrinkwrap":false},"2.37.2-next-1609966044-f3935d08.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609966044-f3935d08.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609966044-f3935d08.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609966044-f3935d08.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-S/agGchkR9IQ2VD06TjTZ4OwSeiSDZL5p1FouIwK/qXfyGbshUeiP7Ri4eoL2fxvAI9a9hSM0Xw+CLJGDrW08w==","shasum":"6a5fb3c19bab20816051fa969e89edb792548995","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609966044-f3935d08.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9iJrCRA9TVsSAnZWagAA3MEP/RP5yUHccn83hP+vQmKG\nF312FQtA26s3Y3yLcN1oqZMfpwxhvTvxFOxQPrpZSDZOrBZkY8F1KqBGkRBD\nGZfpTW6L8JqE76NWWbzEEPFNzUNBgI3jmR14vD01bsAS9qiryVv1RHbn9RyV\nqWgNVC+elS+FA/cljO0hun90l9kVGGWESJvfS78m/it2KFTM4yog21OO+48f\nVG8cznGH3A0JahSep0FfpCew9RzmDs6tmC3swcxBnptjsfND5+06ZBtsyUGS\nakOjK3Ohv2mr0FtLQuKuM5Ux20vR/SZWR371Amkb6i15L9F9l0rpuRrpBdml\nAr88qxRZ5KUaAQAWJt0fLF5jmiqpP0MyTXCupLNYCJzUBUKFMpa80kxyeAgd\n4oxvWysNteE/9Uef3S4ybNTUBodj4dHKQGkAOWoxcSrR0jneWdG9rGxwbjvA\nbuYi3vQyaY8xgiLUg3ODkgBpypiU0iRubVyWhZe6Lbl0d1GjQyVqevWqjX3G\nOfgM9k1R9AMkwFdYERC3qndmsjhLr2lMI1ERt6anu7Cz0GXjoT3udxoJZAsY\n5Y6Ck4oCwxvXCXZxFbGAAdptkXu+INeFp6bf2yVLZSFopBw+rHoOVWGr71Oj\nvkVUdA3HTC6/umM+uj2Sw+bU5IIcLLE5c0WTezpWQgU3tfFJsCGE//Hem5dS\nespE\r\n=OSTq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChGG9bmOOklBK/HW4SKsSvZtILw72A+tXmOSCbB4oSmAIhALUJkYfmsjtn10MXMOoJ644HHqBN7P7f+ljYxWvELwAn"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609966044-f3935d08.0_1609966187194_0.0785707002615268"},"_hasShrinkwrap":false},"2.37.2-next-1609969301-1f04b787.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609969301-1f04b787.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609969301-1f04b787.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609969301-1f04b787.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XKtnoyLKNtCWemwn7hI/y1d4LbU10wmT3fuAeQPXx6W1nlF59Qoo5/g4MCAtirZ74zX2m7dr06bcERarAPKHgQ==","shasum":"3ca007a9056fc5944061082812cb9c45beb1e8c7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609969301-1f04b787.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9i9CCRA9TVsSAnZWagAAnLEP/jN3H8BGDD9+my3UkKgr\ny+kRiydnQDAUPA9z1b3jar5AOQMmIcJWv5HP8capcxT2FBIUv+JTGyGgsWKe\nvT+eVNq60130USVpC6cUz6boldK2Z0MHfIx0vIiTJ6PEK9ucYSANO/1MimEm\nUVYMMntDkNi4vKy9IDxd1GJlNyAeWXvzrO4pV6w30Yzs29evwvjvdONbnKEh\n1DOivqpV0XoVvvutGDEAbV9fTT6xpiZjFUJAthMb3qmEmPrWLnD0y0HDeNJ4\n1qZUIVPGe79YfnF34V7CDvR5hlxcF27ICpIhwvQbBASQ/LEcWdBRsMOiKPAy\nxbFiWgD02Tdegjw8aDVX+RocaITBPLp4aZA3XdMgB3Hp5JI4Ixn8J2fEmkpk\n6hqX4EJc9hN9uoV/1x1Qm8+ROLxkieokkCG6Pblft8ZpwI7DTIpd/zc8m3Tt\nG94wMC4iuKJH+A0QgT0SSJIbgWye0vgGby660tu0tQk1YwT7mxO3zxNB2H6q\nirf9nMjAx/yOOV0LO4mLokAap+mWUpf6iz22qVryEEliphDhR6XPqVS9+Cub\n+BIu2ZzsMeBp1KF+ibnDg9Lc2pV2aNpSoZhAHREhns9vy2JXyCz7DMQ0koGz\ncWYtnkoz+opbC8OPcYNeaLRpPWJfNjeaCzWgK/P5Q1MGODLgYZQv3Ei/azUU\nkB8d\r\n=XXuZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYMFs8Eb7yFaiA3gVaxhp9aeNUDN+nePlgIyWsMC+GvAiEAoRZuHYyqXedA0/9fBMjba2w0vlzHDCOnh8RqRwQG7To="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609969301-1f04b787.0_1609969473445_0.7925647573815544"},"_hasShrinkwrap":false},"2.37.2-next-1609972133-91236735.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1609972133-91236735.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1609972133-91236735.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1609972133-91236735.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cJ+YdwlVh/2fYrJ0esBhScyYc2Z0fWjeDy6bZIq8DCBFijWUP2xIm7jhYWCklBjV06huU4UHON510PfdmeXCpg==","shasum":"a70ef1cd69414000c3514b29e9fb8c36a957ddb8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1609972133-91236735.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9jo5CRA9TVsSAnZWagAAlfgQAJv7WyD+qU6+p+aKoAF7\n+EpYj+lE+uWPV4FrgiG7dAp5cXiSrqzjE08tOit+c8f5wtkl2PuMlz7QBhNQ\nLmM+ewLX4piin/UtpFUAXkZ16Pk8Fodhy8GP0XHbxckFgTZamVcsr3zKZidK\nkO7+5bIGdgkD58HjVIySMi/+YzJ9/gIbJa2fyva+kPFVd99/cI9XGf99og+N\nCZD+VDyk5HvtWC72wU2eY9PXoaGBBdvM210BD0zUrWfeCcRNX9dKcg6y3v90\n8MnRO2akj/0M7ffqFwtrbFikpfxol6FCxs8loo5EPnZsGDJYFRqmBIbMN/d1\n6CEt69IEC1GznenxUcijy/SzjbC0luvkaRY+pab4963f9nnFy9PRgQ+aw+YQ\nNFegUi18gJMkPeYH92PT5DsS8NY1AYcrS06aEyw7v6XgRHl5XI9d31daT6Au\nFk1d9hdYLsbeQ7Wr08REennV9Fm5Ym/24yVluICbOzcHrymH2fkAWx4/nCK0\nSqPsmmjUHONVIOwZEYaEgUFfXRjVuBtflrzp522Sqe4KnQF6zKRKw62gCNJK\n2mxdnT7a7p7FvtaUuIqSaoV7VMP3y2dXyYkejZfY01grk8F0APNcm7OdEn2e\nATA6kOC3W2wiXMNq/IMpoHBoQi5vplFT7yUhuDjDo6eVrHmb0rXNLmin4DuI\nQ17t\r\n=Deuy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVC/pmAcUzb5/mt8yZMzXeGPiktQkzfB1dhGTY7FfnvQIgLqFL1Hn1DGZOqzOdhMCUYqmnO3Ate7JLDOaYXRoOqGc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1609972133-91236735.0_1609972280704_0.44100943289341954"},"_hasShrinkwrap":false},"2.37.2-next-1610016235-e374141c.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1610016235-e374141c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1610016235-e374141c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1610016235-e374141c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-B8xlU1Wz4Fv8iPR1PwCGMKxIbnUZjZLIq3dIjMWu5JvqP2D718uFdbdgru/R1o6UPoVV58lGPISC9E9auBxYDA==","shasum":"8ee56825a88858b07cc3b44aea4a5b245fa17fbc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1610016235-e374141c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9uaWCRA9TVsSAnZWagAAQ2AP+wfkMti3hp8JLc0J7q9J\nh+wASPii2tZJPfEGawktPVOnX0vZows0TOBpe5sQAHHda9bAms8hohzryOBI\nm3MHM759EJXGABl0kxHJKR1I9Wh11rn9HkDhAUMcXuHB2Pt9D3q7D+ES1Pt8\n1pu57zltFJAYg0kXEc+llEQpokK7laufLFk8AnwB5wENFVTLTmEgEUaQ6kYB\n5zeGEcfGnBx7huGhAcynRILrM/2swq12vZOKsTXqbp6YdLp/Tp//fIJzBYBC\n+zR0NpBDJOU2LpBTt7uF1wHFdBYvrnGg/ZvHzhd1cIPM7AK/Yzee3iMguv7E\n2CjkKDHgs6udC+hSez5XDAiaoy8GjyG9DqOloBsL/MHhaN4nBSFXj/ZGNVn8\nRJdqz2VjmisseNKKcs8DUnnYBzuKD9mGQ5byGGEO3Mjzwlj8p7xLuQFItGin\nQ20nUBzcOHP4hTm/iowXwexNsH3KKpTEjprllqA2HrE/QVSuRetlB4X9HCFI\nxafEIj7sX4FdLvedFecoYRvGwhAYi76bq5tZnIJX+Ln7mDiSgejrJ1TYiZXj\n6yCpz1tlJ9sgBG4OH6JXsywJgMcnWQo1OQ3pjCDDuYJzgkWmoZz2mKBckgk2\nA2AXzuuDQ2km7m3Lgr+P1gKwxiv5O+YaKqTWfCI9uqRBKK50EKkMMTEJYlAw\nwLdY\r\n=zNg5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeIDZX1BUzAm2e0HHZ0rAkPnptsRzpAe3BN8FHAWxeTQIgXtBnlEl3PcwqAU0E9Je7cgHSCfO70Cds8y1e9JJqVHA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1610016235-e374141c.0_1610016405338_0.8767481487776478"},"_hasShrinkwrap":false},"2.37.2-next-1610016633-dd69919f.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1610016633-dd69919f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1610016633-dd69919f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1610016633-dd69919f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-y3qre/BLq1YDS1ULW8O+M1yKMmUhGkp2opUiw9zuZQcTMjoB69aEngd8LJOCUk7PK3t1kraMsCf/jc5w/m+0kQ==","shasum":"6f45c4ce0248c5f1df9c48042d0baf447ee319e8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1610016633-dd69919f.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9ugcCRA9TVsSAnZWagAAAaIP/0aZCR22Xd+iCsTDl3ph\nIwaQd+lrBBzZ1RwDOW/E43wVShlI62Ie+ndil2x1cNAT5kzcDw3SUhv1qqhB\nKs7ke6/IZBvV4GlrfRtiNLQev3KShYazN4yAeXGhmXj6YpyZJGhQ8az/608z\nbd9E38gaPHQTd3UKS7tWSm9E8pEvJZrgi7gtne3m7VTJH9jP3t5UFn9JHFrv\nwgGvYRg4kxl1A0njS59gLMOjiMFk3XIBCetup8beGmFOVWIPvKdHC1CsDhsU\nxR1RPP32wbcBm18cjOuR964azK/UQadaMF3+rbNromOhE+iaaN5Dm3K38xwu\nZIwyc5j0ClqhF7g0nHKqtrONEZUB0JXAFyXWnY81NrktbNgVVSVIajRyAeuB\n8fLpDwSives6mayGC53MVJyI8Q5TSPzH4COWj6+FifcGBMnKCoZH4q2do42g\nqVf4eEJD1lBsLhp78LcPaTEvdjCO1G5ZbotB396Wd47fv/zAnD+jOjRYZ3/E\n/9TM6S2mlYXN/YaA1yaioewEL3vPC13lRTicQkPEwxP4VeW13IbFNTIjo4ZM\nH2o5NPe7gz8IvlaqV4YQBzZkh22quQ5wLUCiy2nvqGXhQMD6bMx2VSDSA0Kj\nzRWPXdqrmMYulbmTyXNjZt/uuwcPcQsoxr0zJTJP7eRtwSyLKzCsPNqiqden\nbdxB\r\n=kg1l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEev7yuu9w4CKkT9CNU6nlHZM75ixATWsr4PEUXgx5DwIhALHRCayh0J8fc0Rpxh84cddEhfqmF8d3Hbck052c5OeH"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1610016633-dd69919f.0_1610016796019_0.056901723120267755"},"_hasShrinkwrap":false},"2.37.2-next-1610017546-cb4d18a8.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1610017546-cb4d18a8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1610017546-cb4d18a8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1610017546-cb4d18a8.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zEPUc8NJmIK3aM2bntoRPsUkj44lua4hfGuiB0uSqYQ4evms+jkko+jnekG9TyYo6xVG7tEOBRnEohYjhoNRpw==","shasum":"f65b8aba6e3196a37db1a9a26100d5ae6e7d40c5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1610017546-cb4d18a8.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9uvRCRA9TVsSAnZWagAAUWYP/iIWcZf62+43cE2o1F/6\nlO51RAyysxPPkYp2qW8FHl5RhYead9P3ZN/Skknj1dt1Z/cL9d/en579ztBj\nXWbOyNeTwdaD4Y2EcZzemU8w+DU6zgqvNkMy1q/udbmFlRnnKrc9QGdUOyA+\nSNT6fGMGCqSsE7dNUJBk/O6FbvK/+iaOk1NAvniSkIDUu0ppoxKhHMGwbAn6\nrio4RXGJ8zHWUlAnLwXshYohl7BVtiauShA69JvsXzeqZkmxOy9fOHSkWZoP\nkrJRiTvy+YEd0Qwyecj+IjYkWBIfE88RNWFNM0u4vk92FawXsvjlXPedQb+y\nxvmL6dH+MKViEz5ofQvEWNnXeZZMbZRACl3n6tcEsGwGnxod/IK4bprcktGq\nlYJk+70XY/cdsf6stCPzXJPJIMrWN5o8p/VNJ4m582U8Q80c8WTvk7ZMGEVb\nciJDIpxPgn4CPsJZUxUzxYkLojuh0eJGCImL0oDXJk6+ogERw90Q1tYxI+5k\nuRsaeY7mYME5Y1Ml3TqtEiAdyhYgKmXRF6CHONW43lv7VI7ybEG0t0vVveoN\nx/VSWWYlOMoHrrT25DekdNrB5j3YDqno+qxbQcGBsWCbQkzj9SIoGAd6VmzR\nGa///F1Zs9oRHUz6bhU9W0i5FQ0DCFsRMP6dWBI6xJJbvfFMuxId6EElrihs\n1+Xy\r\n=bgN3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRTqklAfOlWhGawmpFAfIDToy+z7Aox1TjEhgGS5pWXAiEA4GwXWBnKS7Gj4GrWRl9XmxL5bnopIwtwVe+7paJrjVs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1610017546-cb4d18a8.0_1610017744917_0.06227724154929448"},"_hasShrinkwrap":false},"2.37.2-next-1610019842-743f4a14.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1610019842-743f4a14.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1610019842-743f4a14.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1610019842-743f4a14.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Hzw0vkBtu1I74kCDgzE8+swbGN/xeQVgGdDZVAiNxmP0iClNicUpBDedStaLaR8lTZORgDBJQd5mqaDuYrIayw==","shasum":"4def7c7fe2757222499229f5b4a53fb79f0239a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1610019842-743f4a14.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9vSoCRA9TVsSAnZWagAAq2wP/2MkiGyV85lTQzlC+yhu\n4VEKjXK1GwOyIW5bbXKEf2hqT4tydWmiGFZdZbm0bOQIVd4P5+lRK7Aou3qx\nxer3Oj38ELHelVgeAd67XJ0Uq4VEYL1r42FM/CUvwYDnHTh+lC56skUvA1WR\nVuhowLurpFo9V7s3d++mWzt2/FSxC32b1jDEmbpbgqZrVLg0Xhaeu9+JZnaJ\nYkAki+jonyuyJXQ95StMf2vPS6eZFz30MksFCJIE+B99v16V1d8OnvPlEjae\nGqtWwA5d+zSBNyVYNktBj8UAUFbIMGkmuiDJ3aaAMZmuHMJUk3kOGoCBjg0b\nep0Rzi6UFcC+H8fnOlOqYfuPh/rFGBDS+oRG7O3oYmR+Apnhkg57uSlBuliC\n0Ro3PmwRBaRFumTMN22gmshVv9lZdqBHPpTMAWoS1jTWF98ADKkwY40AvvLr\nEbZdUw+mdaZnKdulnzhcBU24uRV3pVniSMQak8+zF3in8SHLGsZAR+ifxzdA\nCOv68oaeNNcJWHYAS2rIyQq5XpnEVT9aCjH68W4Lhr1ziPw3Elgrjo/SBDpz\no2QpfUoiI4xCX/ypr+KIqLYICA6WLx7Zlr07NYQLqZki3w1ePD9OpV3dQwsz\nTxzMn04/5MlhkrlgSG0kk/pfSg1h31DwTWxwr7JaX8+yL7zNXjUmV4fCKJd9\nqEHr\r\n=ZkWR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6VcCfkU2oIQShs//yfE78lP5IDo2Ynt4h1R/mFJTG+AIgdLK4wEyMHWwUoNOQkV46eFVhRMV0IWTU6EeKhJT2Okw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1610019842-743f4a14.0_1610020007755_0.031085615859066662"},"_hasShrinkwrap":false},"2.37.2-next-1610020705-ebd8272c.0":{"name":"@xdn/prefetch","version":"2.37.2-next-1610020705-ebd8272c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2-next-1610020705-ebd8272c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.2-next-1610020705-ebd8272c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-a+a8KYYe3lRqMHnb21L/Z4ydAInndUdxorr0AN0TmGkJpIKPdxcfSoH8pW+RltX+zswo0P40Kr4LxsPYEWSlxw==","shasum":"0822323f3a376710be6592a642d8c203d7eb2503","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2-next-1610020705-ebd8272c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9vgICRA9TVsSAnZWagAAbocP/392qy6Smj/xRRlQoIKA\n55vAjuIabJ6E5Xcmr6e/PfqWOqJEYy46GhSrzAeRp6gDYHExjk8gI1SNyQ9s\n4eFL5tAv/q/y6wNCvFz1OuY9A6TVhMvoWp+vWKx/oa/4yOxeyOXoHgV701XT\nlI3kR/NIZ8SLYXYmSGlt6v5oyZNYMNUIgPKIhQ63kbBc52Sp6jGxeC53m5Kl\nH9dsCSppa+fta4sFjZiEqA0kIyvJeogpjggqjHlWXBHVS1uAX/KdyGE4dJqX\ne3I+Qn4hA70w3YNNy87V6nlnfVb+qDiNntcfWR1u4/o84GN7HkHL3TrURMBY\nJq3AjoYLKKGoZH13b+UAs2JQVK72zIwtc7w4ZKODfoCbHEm+CBsuOCk7AfpS\nDusURyjuuiRQB0BklbsT07uYkEpNeDqToVnn3TUqt7b/DFG9GuFyQAQgvtRR\nI0rMO8A18gxFCgvJNKeBTkg0W3B9asKdXRTl8M1VB+8hKgDfqM8Qswc2BvGW\nXWJB9ryNQvU72/xxylsDeZDHfPtAd6FpiX87tc6qsgvUcwy51SMsAnbmmAvj\nokxAhLZFy2HVc41KzpVtoV2XsA6oYirwl5Kboje22hcFmHUv3P5i654XDV21\n324k+rQ/J1KGHWbxgf4XnxrwJ5z/iDZ8Bne0ZUu8atePiSF0JsqArCvaYaFd\nb0Mh\r\n=a9lJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoHfmbSuwKBfCZOu6VAvIvnkpbTRKP4X8//i9NOfMGawIgHgdGv/Tv6EdVPS9gw/BZ0Hco3qKeUDycgs4nt6ymRLI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2-next-1610020705-ebd8272c.0_1610020871519_0.33919242350803147"},"_hasShrinkwrap":false},"2.37.3-next-1610023337-59e72c19.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610023337-59e72c19.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610023337-59e72c19.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610023337-59e72c19.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3SpFmA/tC92JH2KcI8csCwBb75USfHMM2S+IcfUGJV0zpjG7lWgbPsHI3EfBlnS6K39mUfP4rvBWaeiC8r7LKQ==","shasum":"1801f9ddd56e67f9c7290243f388a0a5aa5a5886","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610023337-59e72c19.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9wJBCRA9TVsSAnZWagAANOAQAJErddHUUkORXyh7SGJv\nJ4H3enDZSvPUTdVdALWwXt+6RUsEzvBAekxCva6g2coBqCWaocUoE7M3yIwO\n1AcGquB6Ndq3/t9frwuTiRKvBPwFZnThrYClw3kx+HC2lY/+EB1e485q+wXB\nekUb7jsJdGiVRM1DUZjlX/BzVffDsh5xZJTf1DquZMuoyI9UnJ7fiLkycr+Y\n2U6mzHqMFldra9N23CriUWy3LDoQHooay7HAJZUNqugDbmzp93/lscGdIE3M\ncwj/ewB9d8JzhNA7dO8GcNdAjK8c3jEjxzBh8D5PL1zTxmT7HCs9LN1tYbbv\nVRO4Vv9nJIuzwAKBuH9UjxEzF26PnRN2Ds1fSIHgk0fg1hq0RsNCXqEQYsYN\nruqyeYtXjxcf8z76trPuIULeH71K/dOFBZ1a9dxRYsSGL1kKPmcTTqQzABGS\n3ZKjGtgPJ+MLyR9ZROzD05+FlTK0pqNNVvZF0CmZyCq9xbsD0TwSl+4zy+gy\nulxrOCGjouze8Me4YaYqohr4+eQLaX4MuRJURop/YjGy7mSi+DAs0uVeZspW\nKHd4jkHluDi4tm4eKp4CLcZFE7LenhyBNYaren9vYCyUS76Bt2oPCEWWBshm\nZTbYOR5xdNHx+nQRh21mZAFmURH2si2kbpIoyx0c5D6to6RMC8RmaIl24Yja\nv8hm\r\n=MClz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBOjXO4S7PbEGC7VFzntlmMeKSIuH+Vd5blGPc+T18zQIgGdErpvtrlOB/lU/Yf+rYsUEmQR2QfVuS8SkPyRDUp0I="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610023337-59e72c19.0_1610023488491_0.6734221350825584"},"_hasShrinkwrap":false},"2.37.2":{"name":"@xdn/prefetch","version":"2.37.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.37.2","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-J152aGQk8G/fDD+vfGnSIXyEmLV2FIqPTkhEH6vJ11/jZH1GxL4dnc+wwAFVNbwD6mz/hlt8ANRAL82O6UdhWQ==","shasum":"b932ceade659c372f7bdb9fef31b0847f88c6ca3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.2.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9wOpCRA9TVsSAnZWagAAzNoQAI7BeiJGF4OxqE4HZc8d\nYgGxHB0gdR3tIweWYK8Y3PAAeAQNoapALKjebkDgAuqbpjQXJpBByrtG/kzH\nZlOTP1AkmvN0J8A70EfNUDcV9NRjm5RkvIGx6MAhOIh8y8G8iKkU4NBfCnbr\n3DoaMZNGKmz9R+4PruKOOcj/nBQ6X5OHWJb3F3W3/b1tmacGf8FKt89h0Y+J\naImaqODTo6cib4dkv2MCbWUNvWLCG/o6T5CBGcTWX9/BPZ1dp+g83t6/uBne\nFqY9Wk/QN2TBHycGLia5j8aBDNgYkkWmx4ECombqhngSsaJub8BeMngvpcDw\ntT408zjA175c9xu7nTj/Y5hgCxi6DeDcJPY8F0jh0SWfSohols9n4Aj47Y94\nztB7lNFDggpk929u56ZpAIhRxEGyHDBnHEP70uqi4dQthArVg4pS3/foMwhA\noKxCuHiAEy688TjcWRh4uYeL2GuQQVOVNGHOAegRBdr6Gvy1yeKqffvapdY0\neOao/fyAXvw8uIYManCW1UcvsF7IlPFPP3Fp7Cl1cblINAInkl4CTzwbbomP\nTSDTOBvA5mPtgcZ9+F5/yKIs/dOeaxc2sSRo+b97RV59B+AgQG6M2rGuUJvR\negk/zBCJEQJkry22u4/5vudxEhZfzUa9AwCyFqfhg40JK3w5V8PpEc6N+Uo/\nIKg/\r\n=ZnLf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHQLFyUNeBJCTMH4nkFMRjqDLR5YstS20r9b3eBAbBLHAiBzxYk1vixUPh2+9F+FecRaozm9MMWoClexyxmNtBeDLw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.2_1610023848739_0.8876658417065693"},"_hasShrinkwrap":false},"2.37.3-next-1610026220-12874458.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610026220-12874458.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610026220-12874458.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610026220-12874458.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-26g+LnlhT0i0xQTbYCykCdM7qI6nkR8dQMoDFwC/NKKNffPDtWtLBVx6FnKQj4d9s8g7SJu1F9xIXpwY1eZJ6Q==","shasum":"0efa0a15a9ce336308e90b772f449ce2dea813e3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610026220-12874458.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9w2QCRA9TVsSAnZWagAA1K8P/3c/Ynqr6/fUQYJzNBsB\nkVAyzK2WX4suL3e6D4qhpTE+L1EMC69B1Ak6OO/Osanwg1BA8nMYSVI8yPT/\nF5wkbdVNlR3mh+d3qPHXadAlwIr8wwZsR8Y2+Mt8DE9/hlvU5CfxRIu/SL5T\n2D2+KcxqU6q2JKP8AFsma1Y5FLjkldMCitt3ahXD5fkxF1TkvNTN6GcJz+8V\nCgd/e1y5UHvHaYxfxMuGpXkXaOw7lO3aNa1puqCTLnQ9Xlm3E954W1mhaVhG\neuqDNPjgKYhuOwNdeHXvPFpojF0O6SnvmLutMBPzTlciCOp8IdVrB6sgOpVE\nG+rE+3t7SPWqjuD8wgnV5XWd+/Mu+RrOBYmZzxcx4xa3DUFnsfbvyscnriF/\nVeVLZlIh+ARdAZx8rilzJv013wUFVQyFH8QYV1Ra8dahMHZYKcOKfxZs0FCK\n2ydf4QV9XCNJEtWnzAEtdExvSxwd9baYjl9+AJpc53N53vm/Q1uQdQS1uh2I\nAuxryajIdgu0cr2VZ8pMK7qGLxz3nKmHHsdE8UGNKlAE5q77kJoEsWuQoRRp\nSMoSpHU2BGwsjSM3Q9UoWxCmSPJglmoY3tC2B7mzTnO0uWFtWsHWxF9wUKLa\nSOF6WwzcLb29r54K4fzXSYenDMEIvuJkbYu38Q6C5+6TII0ySa3scGJMVwAq\nXXkx\r\n=s95J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICG/5IVU2fWg79+Cj3lQ56R0YHLUOoW73LJatI8UNpKoAiAqvMDABnl73Cuz+YIrN3qYnMkjqVkTqnD7+OwtjBu8tA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610026220-12874458.0_1610026383784_0.10619504520054113"},"_hasShrinkwrap":false},"2.37.3-next-1610028043-5b690215.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610028043-5b690215.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610028043-5b690215.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610028043-5b690215.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eN5RCv9bX6uFMNEuOBmdkAr2z198ZNBuVsgauE5DFM4vCeKzSWHjqGBHliLg/P2F2FMCA8KL7pNA5Qa8VpvWNQ==","shasum":"5e8c13afe662d715983f614d72234b6559923f9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610028043-5b690215.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9xSzCRA9TVsSAnZWagAAckMP/0KG6UuVhMX6dWx4n2ra\n7jL4P2ViRKRJivBMPQjwsEXmV042QVIbman09Vo+/8UfpUmaOCxBhjCyiGjy\np4WFmEEE9/bnICDbyYPJ+hm4OdjU687j/VAG2MQjKLBGMU3Zu/ubLnC5pkqa\niAFBp3+m1PakDzy60vfb4LUpty0UUtWIP58PR1MFuNLLr0HESiuQrnIsTtrF\naLrfrvpEydtdK+w0q3ugMRVBf2Vd44Pw+8/NMfCj2aScyPznhAgLml2dkosZ\nAxOC5wPtpwxvnTjvY0Fwz6KauEo60L7GtFG0sVpftpk1vqcgEGxtH6yaLb9/\narYPdnwwy3+Hs0oH2dj052fTPyCahER5JFd3B8L+P9UDMY+PbfWvPpArsfGp\nRvvJ6KvCoygjT/Ljpx9yky/DIacDkwVsiH+g1Ngo8hh+pO5VVLA6r9QkPqG4\nbzXmf+ANqD/K5Veh1mBYGj0rhkTuNErEyIDanDKSuUwBOwQUgEdhCv9Pdoyz\nTIlLZ3HE8qD8PJVSb8b0o2uE4Yh6mrD+2MQ8k8jR9ZP4RsaihId3HigXjte9\nJsh5lx5iQMGWER3Jt7YccS4YZ55ENhSOpktBQDI394RAeR2eMGYEzM1ISI0x\nL9KXOh51Bx7BaO9+cBeRt+e102CeK/3fNqrYFM1Jg7H35BW1+Nqqy7Y61WUm\nXMPr\r\n=clbl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDo5sXiCTU9rYe4MKU5VBEi7qMTbyIz/vGJP5qaVJauVAiAjuQeFwxTvQQa00xdnw9O6s3yOGxQAeYulHwe2bDE+QQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610028043-5b690215.0_1610028211054_0.010719072939492591"},"_hasShrinkwrap":false},"2.37.3-next-1610028210-894a1eba.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610028210-894a1eba.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610028210-894a1eba.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610028210-894a1eba.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/gGPCBTANooPIPOxFW2q3gHCt+pZfbCho+IzCXVQkSl96+epufGtU+8hVXqUBrkHMWtbimRokk7FVCWUre3dyg==","shasum":"5da9ab21fd27ce65f4e79abc18fc62be974d5359","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610028210-894a1eba.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9xVJCRA9TVsSAnZWagAAIUYP/RelV+L4zBrXErrlf3E2\nAMHCKFkV2s9pjQKDFPJif5CZ6CK+KUwnAWXXpF1VpnusGtwasdqYJYrlEQXf\nJIfUMZW0wEpB5uB7VlW8GCUqOM7oF5Tfs2XI6HSzCPAHM1w5Ixa4zlTdPIjl\ncXD36L/AUrTJd12jW06RSOGr5bSI4YvZTYxR/iFAqlRBsi96lb/bRNhk8uQR\nnZxuLXAZvXZVd6JQytno2+n0DJa9u0IkV7UgwbJlBr54WdCQXt2B+0lYN9ok\nIpQo3jOppOYE48jlhdxK9Ss5d/OTs9tDWuVAMf50yWo7ZfJH6uqbiGq/KPEp\nxyyoxcSNeLHT53LHrSNO6k5yuKhGcSrvmMXg84joVkR8oIdk8rovo4qjxJeG\nPLr+WwA2t0AOegeJtauVigLK0kJfaRkfwhgdthGSwMxDi5N1Sn/G1Ks36Ib9\nNH5dFk9/CvsO+ClLtfWpZCNLz+FwX0YeSAnZkN5oDppwx3lNSzPB4xwEXlm7\notDcqgM4hUQo0VfSMbSyHkezjR4l5+J/7P9ZdxNdh2YNOMVpc4o3tyJhar2i\nR7BaV0LQaY2wghipF2KaQ6/smldEcE9auD8RhIlDaxA1MNRZEDWV6EfidnF0\nI8ErfWoK9WXGYIAhrsxn2JJVlgY5SKqdeBugHZwxO3Z64ZU29SXUUrlypF84\nk4uD\r\n=YgVT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCp0nYwzbYYG4W9zBsYQEp9sZ8s/NUgViN0TMB68wnzFAIhAIzuSKUDlP+mH5FWW5Eqyr6uK692fmhVk+xIcHtANg/5"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610028210-894a1eba.0_1610028360867_0.6958072976760716"},"_hasShrinkwrap":false},"2.37.3-next-1610029354-a9cfb447.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610029354-a9cfb447.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610029354-a9cfb447.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610029354-a9cfb447.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1D8y7veHGUnRRqVn7A48POrxvsHE/GM2xZp3PnXrJm7k3G1D25gicVNrHqnKoeAGPWadzBpElhGeCc3EcWLskA==","shasum":"9e9939a9dc2ac2aa715a5ee91e5fbe4894fa2f94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610029354-a9cfb447.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9xnPCRA9TVsSAnZWagAAEH4P/3G7MfKRS70W1O7/Vj6Y\njKUg73bZ0ITSVauR8WFhhi77B6Y32j18ydUQGJRXKz3ZAoxcLB3ocJMd25gP\njchBFuC0CPCIdtOEP+HLPj71mDMAN4dRl+Wfhff0S+jhVp7g8OM+54oRZPP8\n88UNUwlP+DYkaH36zEzYKcEucD26GG+DMeyUb1jf7o+CKX4G10b1gC0CxOsr\nP9lbY4GRAt9T6bXdG4Cs2Z9U0UFJemZxaWM2q4YextoyhAM+0ZF5XdGimGNL\nENjYGdnYaWLXyb2t7XDg5uZgjPTRdIsZrpKRuUARFrpnKDmFeaUSD3CNRW7K\nHKp++tNFDlPHcpjdA2sTWEJjWBd2D+wrFpTWAw29i16gCwcmJPyrNKGCJN3M\nwYvUKvSG7MvOOEyB3A3QUYWmowHXIN/DwJNbadzjsKOjWheKwGFu8qW14Sgp\nvSWYMuY6dJ8Iq/ArpFYNC4To507XbG/ZhXKsD0zhB6DaJ1fu1DqgVBD8vPiN\nK8RiPu7RHH2HrBqwHRoq5CZgXH0ecv4zx8ZiARI5MKdFYR1m7/glX6Mcbml7\nhPHYnioeWMlZCZ+OiBsNNl53eOBEUPPtlp6OOHevMZPVXuJ0DPrVP7+QIdLq\n1alQmq3UwE280E49uRVo8WyT45dU4Mza/Eiet2yW+w0WfOsA0Euzyjgzd+H4\nOWSD\r\n=v7rI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8DedlwVGochcQ+a4qXcoMd0d7kcbsGokDhwjqso+Q/AIgHxpq4+iUUbX7bCobYSzWQuJc0x97V2Bo5dYKt5RrDVc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610029354-a9cfb447.0_1610029518764_0.6761582469509273"},"_hasShrinkwrap":false},"2.37.3-next-1610038994-8d640126.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610038994-8d640126.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610038994-8d640126.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610038994-8d640126.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1xA2qn5c1b7v2TLPJdPzcTY8z1Fg2ky+6YfBVrBtpQoYLPy48DYFY5aBF0pHBln1NQ1X8ttH3GO6TFUo70YFXg==","shasum":"1931cfd519404dc6194f746096135c7443c8ddf7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610038994-8d640126.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9z94CRA9TVsSAnZWagAAv5oP/1ZmXlRuGQVZMIJQr6p7\nK9RlhdrZXPI23eTuyFARKQqxZX8gGlTKszAhEgn9wqOFZIZ13QFyzOV7wZ9q\nqviCX1MrvK4/rEt0Z52A/cK3CDdaaJkN+fK9HI24u+1+4s/VMtbmVDiTN+rO\n8N6Zjbqx5zSDF9JBqjKLKYnwGfqvrwByQvSv6dlqNS9MeBLVUf0+zPrs4Bna\n6bgA8M/FExT3LaaeYH15d92QeD+qkAWIWqW1UeSjb9l/9MjpA/BL6XSVvuok\n05voT4vX1ILXIhiFL/GL3hj5v5oBZkpsBkVetX/IK22xUfy0TnTucVgTui2I\nWKuu0ISdDPBgtwowFpud+HfWoo+bKbAeV52Xxs7L2KzardBf0/+iktCaQqCR\n82zXh4duSBu/hKZDllOOaqXsDuI0RBy7YTQYhqjyxyKKpnrqBB+P4IP1mUBL\n4+wlj2cVaRYNt1nNJY3xNf/i349dI7H4wbta9Kop++ub3Tv3w0/IOmIRNpHb\nUiOQrgw2Bxkf1l/pSVsZr6NvmDSeohh4HoNn6gRTYj5/qgDpZtFYPD1D95OO\n/55HZ60jZtu+SVuwMPcnbXKt/Ovug0yLGBr72GjBhTuJL6QkrERILD1rlYv8\nd5RZ7l1GXVNyXkQOsMoJRylucHQgutAYvpdxuXTW9LjWN1r0Q0fzoClFNA9S\n7VUm\r\n=CqdT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH3TgdnaY4kgVhf9k5CqfOEvpY28Hq5RNOCbhf0QovwhAiEAxHVNEzOH2IcX1gKqY8mbdVdxjgw2sfqKbDR4nzyaYhE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610038994-8d640126.0_1610039160265_0.6747266765663984"},"_hasShrinkwrap":false},"2.37.3-next-1610042634-545f8fa7.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610042634-545f8fa7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610042634-545f8fa7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610042634-545f8fa7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CxC/9luJj9k7Z5msa7J4vw6N9QloqKlugGsYLhNY13WtN/6KV/xDTa9yIMl+s15AyI7vAeC5JPb6BKwqF2tP0g==","shasum":"d95435807980a8b46fc66a59944e4d6433d81b44","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610042634-545f8fa7.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf902dCRA9TVsSAnZWagAAuLYP/Rb/0tZX5sGDZ4OEex2S\nNm3J5cQmICRTR00GI0BVpnprwNGRXRhkf3lCDs/jCVxD+54HiBgjdNLjePdB\njPyIaJdtH2ZDctddw+PcYfDTH10C9T0m8mYmrwWRO0GalDQ1AunDkzXTlus3\n/Lxh9HJ2txxf4FOJGSnso0Vmgec3N2oUVx423XRC4ifZQd2oVu2X/TiqmF3T\njAqtKjXQRkyEpR+B/QVmGT/zlT7H6bbUJZccqtgmOyLRBVkVTJuuL8xRBOcX\neyFCypSAfWfvO7fwiq1aMyFo1f83s/ZBfUzpFSSzk6LsqefGUT9diIu2oDR/\nYVzdZh8Ea185VyW0ZXorFpN7O6uEPUWU222N6ov4MZse3pHc79EvFRHnFsGM\nGnWAnZrQwPG5HmMatrDUjpRlyJfs6nJLdBs81RO/O2L6upeAZiNDqvIqwdkV\nSvDnoAq642f8nf88i9GHQsi4ip4dSpUKLgMBu+8vlhDQxA9pfvH7Zs+e1xHt\nN7Qv0O8Wyhkv0kS5gRH8qBoaqPf/+B2tSMTNeI0rdbfkxGyneFM0JhWb+HKg\noHrn5dJnU2lQf1//+msZ/p4p8prTucVEeSKELPuFiev8kzo+ijRmVKGSRBdR\nzK4rYfOrOLwq98e6JI3LvrLyCPw0FrkzrxHskvxjNR6avoCxOj1DMMjDrdPl\nGrDk\r\n=djzd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+cRAyB9gO6pDX6iQgCbTvM/l4uuNL+sGUi8TBWlm7VwIhAME0WXvqkqdJP40lM0x06X1JZRyyKg19s+SwIzSOx4MV"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610042634-545f8fa7.0_1610042781299_0.34499359698004595"},"_hasShrinkwrap":false},"2.37.3-next-1610042728-22ce179a.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610042728-22ce179a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610042728-22ce179a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610042728-22ce179a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-d/rOisN29TmGvDyVRvKKre7b2fqvS8xcjP2Qv0HJXr1qV8/QUDyAQ1io5DTGv14RCSZrRHqPbCmVjWgpe/nYdg==","shasum":"9c08bf14931b723d636985176eb71d5abc8a1ad8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610042728-22ce179a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf904TCRA9TVsSAnZWagAAh4UQAKN2NdpwH020H12412js\nUNWnyaoge9ZwJoLrDYINWtiSXql2ImAWSUWh6wXf+YDxXZF53AOUNtM8dwjy\n9XYW4B7rAkm/DCNrKCgcFnhSKXs/CKqFEvwTBiHVJjP1hzyYbUGyAZqsQPMe\n2QdIQ19Qg1soMb53GH06gpYB+ppkUm1BMdAL2jz5jroGgj7GkzROiJM8ITRC\n2dkIBEG27ILEGvaQ4agXPYBVUy0psAsQrhaZFoM8YuG5kbhM1oLTkyjxO566\nRaFvbGjz85iPdFEJbAhy4GNMWKSW5ScZlKhOa6XbkyF/KDTgCg6LaDf45ONr\nUVd1IyVTmEWzk+PSDNS77RsWf2EZ6H/KF2sVUNUSBU4bLnThssApfXeUT7oR\nMeLqFMCYZ7vQ0qccq0Z/tMRCozCryFC1nwJ4GoV42TxX8Ksj5hsSmQxH2jCj\nAcGXYEJMrtgT6uVHykPMWl1dRmRW/DvOvaCqPSShrqaZ5sxHi72eQfnpsUhm\nbQyxceKnvMkYO14y+syHp+dE9uoX2zM5wXfLW3NNwXrFU9ykz0l14QG5Z9qF\nRknQL3J4f9fD7tv2qJG7bc8r2Ue4aOMqZujGX1O16JXShaIif7TIcnoYye+4\nLAtnE6QNA4QWTF+HLSg+qlgkWp14Hb7fd6EigKSVfYSFSkzIcDjglfXTGFbR\nusF9\r\n=EKMc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKJiuQUFVaN6Yca3LOKwL7BewYretM0oD6Urkxznk6cQIhAN3AbUkcV9wkmx/Jx36Y5kRV9iL+Kqg1UnGmy2hKra23"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610042728-22ce179a.0_1610042898854_0.6333234010819191"},"_hasShrinkwrap":false},"2.37.3-next-1610043956-ffd00afd.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610043956-ffd00afd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610043956-ffd00afd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610043956-ffd00afd.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Ley0UAXTZVsyeYAfE92nqfhGZYCSkFJzXuEOh4l+uR2eCP73ze9qtdr9LtW0yFNQYyzusYiSAVd2MFDLJw5rVQ==","shasum":"4d7dd5c09fcbd8e16b1541b1ac8d88a3d72ed72d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610043956-ffd00afd.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf91LKCRA9TVsSAnZWagAAuG0P/2DT723KxoQfKaTrHSK8\nexVycFJRK6jb3/vkHX1Z6PFV4Q/CM0ScBNMbAzV97c0kVhB1mqdTyFKGwUO/\n51M+Ld1+6vAaMxmSaYk9zyqEV3cUKlVxaYq+By7tj+QaduiQQbA6xU0XGdUQ\nlE40wMRQTRq6b+EQIpk8ni44Bm4lguw1xiEeRvXSxTIzVdMyGQAxV4tXG8cp\n5HA+pX+SAVLj0B0XH2/RECB+gKK8hPiEkjzjCrhmselYLglugMYsYNxvidGa\nzkB1sjb43KDeiuYuU9cFzfGaZlt2TvXKwTJM3OEKHvgURgwNU5D2TXRB17S8\npRbkLg5nJoFQh3di6YbICkYdCz52OI8M0tLTBo7r3brG9bTQ5cLs58ILrjq2\n5pAR1gXzjcr345054A9Daxohny0W6++z/3dzEZyxvDQVT2pi9qS+KVBEnEIM\nRBI3m9tyypKaWjn9jQ3Kb43SfomAnHSacPRMBrj6H8yjOv00+yXuHuv+Pdvo\n70DTaxbE7Za8LIqjf5VaOboij3xDwUS4mSupA92JWGrcZSC7eJ0j2cdSLzs4\nEEGXXYd8mp5GkEgVnUi2i7rWpCfDRtKO47M1fz6y/gHDyKizucaML9vaCH7b\npGbsAbpIJcQ7ZSJWTuVhBY+7cGw7UxrQlG5sFWcCu68hL1j90w6vKLCVroZe\nUwaG\r\n=KEC4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOCnC/BdBQ8oTJdfsOaxqbS0zXdfUMbbFuR7Mh5mi36gIhAOF+M0dbUx9pxydRpK5ORETG9Dr9gxbhI6Pge/R8OZQW"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610043956-ffd00afd.0_1610044106235_0.7165262216540109"},"_hasShrinkwrap":false},"2.37.3-next-1610044087-6759e43f.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610044087-6759e43f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610044087-6759e43f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610044087-6759e43f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TGp257j9Dvdi+ZGMiHTbQzSYEqgjQzhKorasJpPYa9FoC5QPJkZSOt09pJ5FORWjilEgLnvlsa8ed3TQ25Uakg==","shasum":"ae5d9a80e66000a8a1f0a3d37894e2abb1a92fd0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610044087-6759e43f.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf91NICRA9TVsSAnZWagAAzhMP/ROi3cXSJWqjCbxj36/2\n4Ju1e4464GkNXCh0OOdFmrqXIfmERTI50j8knrHhhylRIMoOqkuYWR3jdW+/\nGp6F2nFAzOjeOf46QtC4+PTggsROAvXC6yXcKsPPOaxCZPQxBgJBfuBCpf9r\n6//Qf8cNUVuHBgih7MqrK3jnB94q0pv/3lRwHe0Tu6eO9mWYaKcyBhHEHpRr\ndSxKet0nobrFfX1CGyryHoqD9kDgK7w/Q0US3itC1PbS5tOvS3hKl8MQlBTx\nMeV/gnb08twqZTzZ2cI+HUI8mX+5z6Dft/OszyUDYZ6uYpzm80FRfqajVwSh\nabRFQlw8V+2zMubie/3By7ygZz+i3Zt0ySwYi42MbckCL+6GmZWqun+ryTvv\nXoe6IaM/AkWOCjU0MbnTKCZBgNYNQm+nJCx+PlevTkBTWmi4nWeOPbxRPzIs\nHx0fV6laG1C9ixL4Fv1Jmi6f5EwjSM25BV3Gtsmh41fSRjP7J5cIkzp3L2An\n8vM8eqTz9/3UgFkkI9P+KKRBJ5VY6xPyg5Jp6y1nf01gmlyHw3AlM7i5CDHI\nV6BElRDTEw/relaUfQGgNfRe0tROIS4AwUAjiVquH66E9SOiwkaufkbgi2dj\nrmT/s9wdyg1mG93DEc4TOtSkLxHnLkrlK29vkidKzXxuymJER27pM3SFFw8c\nuHt4\r\n=ilJ3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFzI2P4a8Tq8N3aYJkCe6pufZrgE0h/Vki9fMtpVLiQkAiEApmTizIibojV8WuuH7unpl9pJtgfMimnhxIHNcK2cV4w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610044087-6759e43f.0_1610044232441_0.7903785790807414"},"_hasShrinkwrap":false},"2.37.3-next-1610044204-545f8fa7.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610044204-545f8fa7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610044204-545f8fa7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610044204-545f8fa7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yvp6NLynEuZIoNpkEsmWaRRvRIU9KC87W8XVYHXA24dHyU4czljnig8X60BfnpdYxkipvtjRVZIKBN/ZXNc2ug==","shasum":"ea3c7a98e45c71a1834c411ae2b99a739db469ea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610044204-545f8fa7.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf91PgCRA9TVsSAnZWagAAZUoP/A5ijpddSkxZ+b6GecUD\n2kOVI+72LSinl2b373SRlryMPXAWKWj2dJuVr2ruoBnHs1T1iOLeC/3I7HN3\nPfRCqD71KRG/B/pIO1eIdFJpZH1gTUUSU/ErTOHTpDb9mMjW3Y93J1UKbRGz\nguQHRo0BExsfpe7cqcyeca0ZWIQqhK6tjJt/LzNJBKUUN74p/70bGi/PM/i+\ng/1aoDIKvExiexQJhapSXvU/4hSTPKHH1TIfRBj2jeH5OUYrXtGC+44x/AGc\njzhVcEN3iE5HwjVmGDHrrd82ykER/RVLYARwXRneRxchbetztta+hJC35nve\nBlXWNVsbq2idg86seLOHYof+Sf9rvJz72V9FmlUhwvKWpoEGWhXXtC8bFLZu\nPt1IHETjKNy24+z7QnYq//qebINIqn47lKD6dPkpqTwE0DpiMTKS5cFnoOWK\na8aN1ZiYI32MUZCBBoNXdTZHBS4FPW6J5bV763EgH8RRTdTIXWrQv9TjA3IY\n2+U4OsrIbWtDveSBgvbaMdbNaL03E8EDnn6wWQkTD79OpOu84U6c6SuWgwcf\nKwbkOnhK7JhmipcdeTPJySjFnnDYcC+VlDKcQsP/yryUOGrsFIpRqLICoow5\niT9td6/6B+vfi6MfWGvxBng1dwRuR/H5xziZ37SSZ7KSjBBqL3LkLxgUpOjn\na7YS\r\n=vxZs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXmVG791olkSmenYn3tav4S0P9C0OeCwG0O3xWXrR5TAIgcDt6pxlpfWs1LvVH72B2K6FgFrMvUc2KZs9QZMD4WVY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610044204-545f8fa7.0_1610044383584_0.2766109096607574"},"_hasShrinkwrap":false},"2.37.3-next-1610046738-ffd00afd.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610046738-ffd00afd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610046738-ffd00afd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610046738-ffd00afd.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DB6Kc9fb3Khi0HNpmaoVu9XeiReg8nJSbmd0IdeSVDTHv1UGDl/W56telXolz3x6w2mwmP0/UL3YDrFwiJPjWw==","shasum":"b1471d0f83a740d8c42ad81b34f7711dfd7fd5cd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610046738-ffd00afd.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf912zCRA9TVsSAnZWagAAPaIQAJwgGK3VUtXqD0HlbDd/\nmuJxpkhK9Ws7fSB68pZIgsBG4RKadOWXdWtwsYZADnrV9xpt1zAD9W8d8UUO\ndPNC9bB+450DCM+0ueFLkIb4YnHIOBK2EXtUpb/+SAHz149WEIV9Zyn1iwLn\nGfFK8xOvbJfoOjNBYwvCHVW7rSJdEUxDHqG2mHr/PmJqCuZGfYChGOb/01ey\ndLgT54xNNhw8Yb+43ANSDBQFAOVSbq7/86AWzv7D8XGp+QvFWq0o1VdA0D3x\nVQ0ohrX8SebHKUD9orYhcqE/SEx91HDmX64NGJtG+Dl1XjECLs+q+EmSoNz0\n7iLd4otLQBH9GgKlPCNixfC9mFyIIfO/sYTu20poc6YLpO00u01kPSWqpxx4\nd7FiKHo7rtTRWytHYjmBvtM033evsRL6PtqhuV0McZvG5EHP/fsOBIWbK5cX\noi2rfniq1TaEr9DjXTj/xG3MAuuk1xAkv/L9NARMky80H3JGwh88tkLe4MLE\nO6BYLuyKY3Khp2zq4C+FTF9K8Fo8ds4lcZj5n47WWEdlz6DZIFZIN7TJoYxu\ndfpnTuoxxXKJ5ETRffIAlRzSeHTKCdgT9AG/K8yRBdVE7sevQyRtw0GcKxna\nzRgvYhPTismBZmzRPDvEamKsLs21wMwFYan1ThcFRyEej+371uz1x92DiG/a\n65Wo\r\n=vdp4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFqABvTahKhMO5KEJwJlzwjwnZSex0AN6+fl+o1nvr2cAiEA2BetycJI8IkIVojN8HefQSmwsPPwh9UG+hqh5ZcbO4I="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610046738-ffd00afd.0_1610046898546_0.728113422019079"},"_hasShrinkwrap":false},"2.37.3-next-1610047463-ccbfacbd.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610047463-ccbfacbd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610047463-ccbfacbd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610047463-ccbfacbd.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Um+dDqqwGqU7bisG3QVpttY9cwphdbbK59ah8z88IwTkGuPam3bxF9F0OfjTcsOWlK1QoRw3bxDD0ibRvjJrHw==","shasum":"c7c08c35efb18484cce601d082e9c98b2a4f69f7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610047463-ccbfacbd.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf92CCCRA9TVsSAnZWagAAfdYP/0uGllUqn0SLPNaVagvb\nTh9JoDKWF6XTMcmrVDZarceLR7mw1aJ08goJC39RCT/OmxSL694PQtWUrQ10\n5HFHbRECstD89X/tvxP1E6ijN8JkZwFgMv/y/ZHlGRrFQ/3XI8d7cUPTZqVn\nd71/xl4s/wMk+p3tDw+bex9vSs8QBYk0m7N7tM1Pd/p6ha3HwMGJIoUaJyIK\nGU/ctDIrOWRpXFyJHQLOkJ0RS79fvR6sWa9YVd0q9o8RoNjkn9ZT2LZJVtgI\nFnuYczpDcGdYUqMsWf8sJTD/zZIAwMnpVx2WZYcyA3z/+Wd1D6K1dF+B+u82\nIWcuPwvBt+cMv0BfujPtKleMKGOI00rZHD3gW1lEykqEej+wgtXEpbFZ8oIt\nncEu49mYu3v1ikQhp92SYDTQ1QmnP853Tbuah43q5VCCZ94ebLIVNIgq/xQc\nB1XPx0gtKb0ValLsnlVufeUwWxvCNTmsXvo1WhibbIpI/XfgsVxKCPuoXE0L\nP5zRgLPSS+boC9aUGz8qDed2m1LCUWGTcKIZuOhv8Y0yWkG5sZbNF6UDJRhY\nMQQB5uF0DrIPPpbQwD5Hc7knOy6pKzJ9Fq/hjtn0fYvOCnTBkbOMXYgB/0dm\n7/gtpWGWlQnytKuq9x/M3B9C6ZmHsDrXgjwKeVDDwwy0GFFJGhxkUk/2ntgA\nG+MG\r\n=PEpZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCERdrxDzJWMMznnSYdh95pYy1vTeW7bhnKvdMhVkZcHwIhAPiGZNth2008QHPuM4IYyDjJPKtkpoT6frVL8H3ZVMVu"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610047463-ccbfacbd.0_1610047617640_0.517544347834461"},"_hasShrinkwrap":false},"2.37.3-next-1610049298-d6ed1e81.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610049298-d6ed1e81.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610049298-d6ed1e81.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610049298-d6ed1e81.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vOIN8/2Eygliwm6NdxURc8uoN1T0cEhe2NeCLjaq9p/P9lhoT8K+DtsMeQ/HkQo7/IIhSlL4RqO72Myc8Pj70g==","shasum":"82dcd84280fab875331bde741f97e715303c8d8d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610049298-d6ed1e81.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf92e8CRA9TVsSAnZWagAAEOUP/Aub7Dbayvj3atPqhVKK\npZEfzw7gn4HZIS6q3AbMckzh+zuqa27d8OQjWUhpMBagYgdw8JE00mZP8jmk\nLF2edxharQRzlNptJBS3NpNufN+TBHd+NIc8FwzdjKpBlECb37X4rG/1DSA5\n27uspKIWmldRmddVUF3KMkgEjNmUEmcIL6dA3+SmwFsVEBlgzj+gV+FGlANn\nSNxPZHFf0tyXtdnvIHIfEaexF1vd8DMjN3NvnItEtbVH5NXWS+0UElTXN2ti\nwvgFGqoPZmJiYSRPT4pLFLmgMXGxyzT0wh4OTtIZ3aRGpPyNdE/8xJk/XdBl\n9rRO+VzmsmZlwXRRuE0avI8M2UWE8oxX65VXRH1YJ6vlcbn4m28kzQpeBHe3\ncWZy4OzrV2Cl6ebSIO4shO4ZvTnwsj39FhK9ejOHWvfq2/AIdDcT6upoinWB\n0z3103OWKzXjXD6QJXgiD6RwXEh4YDXEdUhNWJQOz71iLMnxWzzEqsHVaE9F\nXF/FqnAPGxsEHycDlIni7QVCqbS6noxob+Rt+H0u9+NLTD/iSc0h0K71r+Dn\nHwFZ7cMjpvxEje/5yagrFoeULnQGLv/lQ7j/vilOxyS8gRoWOdS+XnZOuW0T\nu3CW4paSbT1RqigwHEnVYWwD1dmbdOnnJlMDBUIv67dnmi+l5sF6htJwgHf5\n/it9\r\n=l5iM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICFaW3MwQKxLvbbtrrV6eYSDzBFOA6ggUVaVPrwQCj/OAiAnTWlnbE0aHyX5i9McMIcwMrsQMahniWXKtouhZYQVdw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610049298-d6ed1e81.0_1610049468160_0.49452912019882267"},"_hasShrinkwrap":false},"2.37.3-next-1610049394-72bf35f9.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610049394-72bf35f9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610049394-72bf35f9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610049394-72bf35f9.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PopMpgUGVKsPUCHSigXA+zZJ57Ejb4dChMGkYGqKEu7SoxG9OsZ4R2OSQgQOZb72S653TwYpPyRTbJPUo1+EJg==","shasum":"9c37bc5e36b969444e400a7c0a14f19ad1a81cba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610049394-72bf35f9.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf92f9CRA9TVsSAnZWagAAuq8P/jvJ/no1Vq24vJg1X2mC\nOFc0LwRwr2iJeTbLls7iaJaLpKbLGYwJ8UhuhraO+zWjKSiI5a/ma9LzP3+q\nXatU9lLppd2drd3FAg8QKsT4pzy8lOZX7xDmdxArne84mY934Qrou1b6QtYV\nZewYnvmTYjrfJ9PSVKqtrL3h74QWbXfKfAy2Xb1fX+s547FhQelck7bwIsfq\nRI2IRscRXsF4JYryNHlhjPNt8y/ZmLlyLB70q7WgnpM+EmVM6yvQ4zdWB1ZX\nTi6O2A/OyEVcgq4tfcl0piqS82SgTR/VRRvaeLD1h1jM77mcXluA0jcHMtR7\nOHORX2KHaXG+lKCnbtt032luXpGcEuYC0hfS7M/Dd0YVqIMScLZDYdnALZku\n9C/PYCQKt/7C6qEaQG4/8u8TrgBQdDHPA9RPOVAkrkeEvxbEXo0Y/7TYl3qH\nB3ucmF7GTyvLqdHVgHfcfZDZPeahgMwIHDZWBXG2qNv6gLX2IgpQ4i0q+5fT\nhgmXL6bq7jbxmnN0t3M/cDVwLDLp4WnRKlfWhBBjAcejX9YuCoe+cwXrYwfZ\nbmqUTO0b0UagRvlfOn8AKGeWyRnQkkg0Wg5Oat8edLA31UwjvDfTgYZquMGb\ncNxDxG0YWHpvNR9NjrM8Z1VAkbURmG63mNovwW9crZSRGDHadbKy7aCtlQrL\nxrYy\r\n=KhVB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICcAVMCcUpOI0FesupaQAGHE6KbkcornIudIgoi/8bxYAiEA3g6R6lreTYzvOFTaGJ+y04v8AM/zhcWoZemOCmPEMME="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610049394-72bf35f9.0_1610049533008_0.8250292562446573"},"_hasShrinkwrap":false},"2.37.3-next-1610054495-1a29e48a.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610054495-1a29e48a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610054495-1a29e48a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610054495-1a29e48a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8RtSTRvIo9Cd1VKx9jfQ9UxgqulTvZcvW8XEjn5hStOAK6aLc0G7ZnLHgq2kD3oZMXVz+c8U2j2//efoBRlSfA==","shasum":"ce3dc2604ae5ed61fd13e762fc300ed7df9d2e19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610054495-1a29e48a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf93v6CRA9TVsSAnZWagAAOZAP/2954HdbiFO6Ppbd0MPQ\nvaXGoVwotjy4IUqA3jtXVPMjSyaP51VyBvfQVs49/Ygn/KveN54q6rJPqkOG\nM9q6qA61jX+i/WMYzyoBtS7v+ELnOgEqd87UatuEKTXOFDTE+tXRMj9CPyLZ\n2bH+KBPSkSyUcQ59T96EYaWtU0Xajq/fV/UeqvMQGHpDkhcjcBabI9u6Hy6J\nSyeUV+xGY7SAvBgAoAM/Njax93NLiovFky7S/WDy2TVRdPzuYxB8eJYgeLMj\nNAb8I1CkQlSrCFihxrheSRsNHv0ZxCrxULbTHMXUWcMDyQKhdbIk49HPXy8u\nGsYx3LgVj1wDPe/3aFlfjVMXXTRtLC9RaJO/JerLWTgdyegOOc2LKA8+JMnC\nV+8mnzfXgc7d8b/BHOH5R85UxzbEWERvPGcnIb0Qd6wsIq9xiSq8ExpQ2c0x\nBMzXidTpCLp3QW0zmgPWqCQ0R9f+JgrpbATImRXXAvllLAmscgbVaWFRE0eu\n1cmBgmUzXJAqYtxWlm+hZNhNrav/azw9ZDeztetiRGGg4WROLb9bEsOnvRnV\n+t0Ea0q4gYxI2RdNa+5EUwsBYO3W48EmYjfbcEc1yB0l9qGAkPmqHE9/Pxmo\nubcJnd6BCwH/Ibr911DBOfC1ZaMEeiy0Zx3BnT0PowTh36UOTusEj6Fby9Tw\nUL+d\r\n=EIXn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBwUZwbboS8ZPcIXu3pKnNJbTHyUQu11IlMIPM9xqcu/AiAd62x2CcnzV9KEYoVG7AqAF3Ya97TPW0EFp8AbmaRWXA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610054495-1a29e48a.0_1610054649678_0.3716762572159138"},"_hasShrinkwrap":false},"2.37.3-next-1610054618-72bf35f9.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610054618-72bf35f9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610054618-72bf35f9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610054618-72bf35f9.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CSLqRFhdwiwi+zXYNHq5YowL/TG5lczdSXg6OTrixwH/kDI4jIUQkXNfqsWd+X3kYHBdDcNNlA5RPRFiQXXCCw==","shasum":"8ed91e2fa7203cba6dd39b7e5d1c044f69a6526f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610054618-72bf35f9.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf93yBCRA9TVsSAnZWagAAKIYP/jiXgxw13mw+jP2O/3d/\n6QKMcv0/0FrrKQ045W97ZXXO9D0y7m2VjySx8BzNDMCTs7trHwuRujdQQLQA\nK6s1XJvvKxiwjeU0YYtHJ05YZ4VGjtNrMcnu9CKTkdCBrq0sS95ZDznLeVLp\nNGetXgiE2oBQ2YbVIoVZaRH3VzpwG+0C/sNkezqbXTzjhDEYT/khODfM7CE6\ns7D2iBMyG98NxdNBUMxfLjrGVeubn22K0BgQYCg6/akmIoMR9gS/CSidYfB2\nOtvM2QAt3PJILt7fSVbJ4Cmz/JovIzXUx4hLdNEz8liEvajWwuIU4jSiUOA+\nbdgqssdqJRpkdcagHmaQQB2sLd9Vcbcj50g3sb8bU6tjIOoT6uED97dJ1taG\nDASfmubfd0ab7VqLAFdvavt073CKG/cnqGAWu1//nUv0sf5FIWf4zCmeTPQk\nqAhT+b9i2X4XxxJxDQDb3R30u6HB+3W4Od1CCa3Q0on41gD/q5nkvkoPKezZ\ncdZnlOal1pgSHC748aTye9tlRZXBbeiehfwSYpZHmphSrW09+/VUesMYk4YG\nEnMpbnbGRhEAdGTVMl8avxVsRq+xn4/N/dyn/i4oNi0XUkKdlEnRg4Yj20cd\nCET08cj52L2b6O9QGxoww+tTJZiLV5z2ok1tvVBkK5WQGLYOssBasZMjHNAt\n1NSB\r\n=Zup1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICCW8HSmf9GtZv3jXYh65Y61h5V9nNTOSYlZYQrLI8VBAiBQ4auXwIvBvq7xNYDVtlsglsUK9JXe2DAkF60QmT5xpg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610054618-72bf35f9.0_1610054785453_0.07897777997502642"},"_hasShrinkwrap":false},"2.37.3-next-1610097679-7e177d32.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610097679-7e177d32.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610097679-7e177d32.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610097679-7e177d32.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GWCqJZoZqOkNBz6WG08qBHcXsLvs8I5c1GS3K8wvmmKpzTAy2VS6wjQywUbNfT5zX0/w9XL0bmZadpDjgaPL5A==","shasum":"c1d28efea2a10f70e81d82864ab253f498b437f5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610097679-7e177d32.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+CTECRA9TVsSAnZWagAAEgkP/R9Fw32ml3eQlBORvbQa\nSRtEvPQcm9fRpFvpwqJLMmAnPmHPzmbfhKoN4FS1zZOSWFgi9Xpj5r95zaiP\nM0cP/5pW/WBKCajtWuPqaYaZOq1wvuK9g99ZHPmCKqeyJB/DB+XguwapIopx\nQEIVlPoVAIcdJP6XSUXyXa+/Lc5aDmaWpWregnX6xYMiYNX+MUkJ79SuP1qd\nZLflm64ArESh1YpPSzhjYCj0XwdWRco/4y5KnkCJhTx7PDaTDq8m9VaHZIMW\nWAPOWz67jTcDY3lOVKogJgd8CqbDO3dekIdDd9qKFtlTqx5cucG6QbGsTafx\nKUNlrcGJqQabuBqi84g9d2L6dP12a4ibsaWHuhJpFDA1yxUP8jOtbD3J/E/h\nOblYOVvrjaWl/yau31kSGdGkS4D07iUNUjVer25noOj6/0zULezxF6XwmGYg\nguazARwTV1yoC9Z1LgfHrZ9BeZUWouCdPboQPs0KWXMsDwLkOWrVvjI4nJYB\ncuNcresnrl6XcxI43J/sOEcoQNUZQCzFRYGzpC+S9bhKWVjpRXclOw7BUHJP\niJfDWBxciqvOsT3BZ5cMxsThBGbwaAWXpCYEAcm8JqksLlDOBTwCrqb3/4UL\nCrX0APY4F1SOYD3zTcTaQVC+xoxlOYyD3C9prxo5K8LM4cPoXst8nNMC/gvL\nTHXx\r\n=VSRG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNZOQ80/y83nzYWJwYkbQtEFX6uNXoVdmtT7dbwEoC1AIgJvFQny/+T0P2DxuKOZjU63dIdtB7ypMb/j1X9kn9Yt8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610097679-7e177d32.0_1610097859640_0.27680792486254013"},"_hasShrinkwrap":false},"2.37.3-next-1610101938-92f5851e.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610101938-92f5851e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610101938-92f5851e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610101938-92f5851e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0x8xN12bm1ZjHnjjRkLTmRLXd+D9roqZQYAixRCvAb3diFHEAEzX/qlRTXsrnoLkNXFxu1oKLTI5r+/nSVHGhw==","shasum":"ddf137a93b7d110ef6c456e6844e9529c2218492","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610101938-92f5851e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+DU7CRA9TVsSAnZWagAAdJEP/2Gv++oHyRikwiOBnrYh\nHA2U1mfa0mFML7cV/e7Y1kRGGpGqOLjK3/knoMf0Ao3vkrXkz5cY0oC6Xwbv\nXw2z+cEKn78TgXEZ8tkYiUL774BnDgORojY1ZRfpZFoD+DYeJDXufg+QrkyS\ngikGABqnPUMKmcRuFQ1DOB7fgE1iA6qLQXcDD7aXVUyyXTt3qW+Di6y+j/jM\nO5oChD22BKe37qRYHZNXo/LT4eGNvk0SbzAdsIc5Vd52SWyIoo7ldAkOHG54\nPaHJEixat2NDrsYuACcMHzBlR6sFGKqVyIKkFYB9CJgh68b6whnajkRwsF6H\nNA46EADumcR/zaN2B9Kxw5TV30lt7GRU4Xr0TUAFnz4paTINaV30Rf8ugaq5\naEpZuRF7szXQB/E4tLCfwaleTurCTagV+hAExiK/2f1oXiuT/9eogSJZR/vE\nKAPDwH3N8nVX5ti9H0RxWOlABcsvYbwf9J3LwvIzhcqlUyxfU+El/PhBK0Ds\nRzTltx49qmse9p388TrVE7bVuuh04oXrL4j9+CJg5U8VdBS4k0uPTJQ1Qdli\nWCflF588xTVHNrc83YoRoRSqSvCtt+Ctr2DysXutaW+SNt6VhICrt+so6pye\nSqOl4jX11ZNR0zHs7TPB5Y089MZiuZsNA2PoQpAiKw7XSJEQPzOQKHJ6OE5s\nRYHu\r\n=OHKM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCo0p15/4dL8MT/VIwqIGJR661ZhSn7Oa/dXZl38A28/AIhAOAjM0zRTtsWdp8wGEFpGQKOTQuURkWUTEv4+052GC3N"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610101938-92f5851e.0_1610102074248_0.02288249823817745"},"_hasShrinkwrap":false},"2.37.3-next-1610103239-5063b792.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610103239-5063b792.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610103239-5063b792.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610103239-5063b792.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PaWde2pIZLcZNRZk2L6U5aMDEPP8I0opRC+QzZHmdbAwVhevv113ZEBTi2vgbmff4bxDFG3U0mqzo9uzAorcnQ==","shasum":"ece2f2c7831e104b9ef7c523cd5ee6e3d6d54e95","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610103239-5063b792.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+DpyCRA9TVsSAnZWagAAT3IQAJ3uof7wYCTiEzr0e3eC\nHzDYNfD5dAr00untgvg775AsOg17EtQ0XWWaiCedewnLesrcrNUeaeGoZfsj\nAaAsSk1rSJBfSKAYXxdLnc26sZw+9xCjZFBd6ORX/vQEB4ptDo+vQp7ZdC+F\nEcAjbU/z54Ha5TYTFgQqaTZbWVw//Ewf/GpskDLeKdfZXZoshP88D3BlAuw6\na9yjrsh9+/85m4ISAcbk/oRYAk4DErjjnyzleY8m/oWe8gakJPgVoWHTo/l3\nN7fSr5FbVEV8iTvGkPsLkUFMzwIpBiuu+kCqZ6M7T6nfkF5i2yvTIR99CnrB\nfTfESac170XFmyzbAEv4nugB3TIwVC39mb5mRBzMtQCfDYMnlbYyWJ84lURF\nGaraNdpoeOiTj4hzH6RKAI1M7IK7stYwXRrZ0s8ApLvqntxQTGE+WNFjw/VQ\nbDt9lB297MnveZlbppV0+Kzro5DIoptkFD+3y4G9hk2uzge6YR6cmcEFX7P7\nCJaKgdtQHOC5wujRJylbS6eaBv1bWbiQKdYMSX5+46gAyN0VojeTBQ4Ltzzu\nEpm6tte+gz8ukLMVNwo87xfEr45ymfU6s6baSXIOWl3zNib0qrGSo8V7/G6V\nSX9Hwi33v3a0U2LDVZnUOT7GVdHyq+b6/vmkcbPor08mMPlfhRypruVej54Q\nCdTB\r\n=dclI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyMkVFOH/w9TiZaX8IDwN0AUlRSJIxZOYJt+iRiOxJkwIgdVQdQ9l0LtlD8XGzTbrp+Ygk7fcVSbQw6T9qL0c0iBQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610103239-5063b792.0_1610103410074_0.48746963648455144"},"_hasShrinkwrap":false},"2.37.3-next-1610106325-345f8c0a.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610106325-345f8c0a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610106325-345f8c0a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610106325-345f8c0a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wovrBjsBYZMIFpvSiKU6kPIt0eOmcJ5557IG3cE2RXhLdP+NV6nkN/bIO6v0e/hHu7jJ7V0onabK+NWlGbLbtQ==","shasum":"2e8bbedca89040f85a119f024f0b673c0ab52cdb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610106325-345f8c0a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+EZ4CRA9TVsSAnZWagAA32QP/jJBrJK6/YPNxUygNuhH\nilkYNsqnfNrGhS2dkVpyiD++Hohu+YHTlRH6vyrUD1LeladqVum4yiFsGnaq\nufYNZsbHPOADq26Ei3d4Ut84rEi4zQpzXgQx3d9SLnhNHHLWPC0eyU78LvMW\n7QI5k1tdvlic/yxjE/g1F1DCqKVUOmUGWmut3ktjQ3P8/uEdKkVq6WNGaCOC\nJAxXBZtDcqJwR9CxTD/L4+SDFJMB4UpDfFrklWZxVpF4n6/M/8nXuWRk3mAp\n9Cv2OHHdyra7lZn+91co1fQUxpKvGOUj/mOLHfKWe8VnTc5OrZ5dE/cE4yW9\n+p16ufqgyFjt3c1vStCch+rv3dPrRFmEZg+0QonC7f+xnSgrtO2Q+g99z1H2\n9CfgDA1Vybz81wRCYa93Y5Mxw31TxQrC52IMIIgwTb6F7ulgvWt+tCYuMN83\nM4E0mA061jA1jnLorbUh6d7276LsTmvBC2A9O9TpaLrv0cwU3tut4o8fU772\nRTiNvC2xd/H2mfNFs8zJHvHdLIOQ3GZl+oBqdS6snRQ4EnRXAQrBApXXf2sa\nGg8cR4+c2GNWUjs+ETeU9mqT0tGZOyF6pzjRkKjS5HVR0Kjs207jzdOgnURD\nh4N081ETTyf6v9tBcePTURxDLwhjsN4eML42Lp+IRtgzoTZxWAZKw0QNhV+F\nvZe4\r\n=dh+b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAyHTgG79vSb2AiHkqYleGXLrxkxtITqUteCmDqn626dAiAB6BhwP8vlsKt3GYjIuxpPgZvCtcEVzlTsENyVu+nP/A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610106325-345f8c0a.0_1610106487444_0.011835622450527161"},"_hasShrinkwrap":false},"2.37.3-next-1610108509-17db7ec5.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610108509-17db7ec5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610108509-17db7ec5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610108509-17db7ec5.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WPfRz94ZigxboeyVebcqPfUx1rtB4jek760i1LtVxecH+RWiGsi1fs6Od0D2Wl7DWJeMAQ1jSOj7T56sVct9HA==","shasum":"fc2e70c883722abf9a399121a8abea74eed5ca8a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610108509-17db7ec5.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+E8BCRA9TVsSAnZWagAAC4MQAKE4c9EUtmYAhTxxcFID\n3GP8LtMGZsNxXwqTBco4jWB+4Y+JWT+8NFPoEzEdXbuLWbQ1AFk6eClVCAN0\narxr60FCPz3lGAbt4OeAJ7xiC2FPJnuPaSg6zKPZCKCYShfK7t1IItQGWHNk\nGXZxH2oWZbguB/Xrbms3y/Cezot/iysIOVvTPw/ThgocQ16qQFWDxDB3jArQ\ng5cUovbCaBHBLrh0/BaQ4Gj1ytdGFBXq6rQXllZJEVp22zpmiplXB0JXCmBl\nwPFY0UxtDyyr8mWhqpwhlz6Zj3BMDaU2vmYw1FoRi86tdzeeYUUMvTaFsD3T\nlsyF3oEfGQOG3p+KN3LTJp2R2o0z07lhuAl0Gb63i4X7mHYWIVz2hWBpPXt/\np7PF+OPqgp053q70CaemGPK4oKmzVwSd9IW3n+5tD78aTQMxJO55WpngTphD\nykU5FwimN4wCkW87bXOudmRPRU6HzV9T6da/Xnt/DLFEWyTnTjM94blBhx1K\nG/K7m6jRTFrslwp9C9WW0lA0zWyxrLkvoEuFn55VWVNhOpSY62X6Igdj3SEj\nZmgKdb3eLo0/AJZqNcNlbYpYI6N1dlw7xcmxBi1tHMpGSVe/gFuenUg3WIY7\nNNN6NJHZLUZjWyZ/vFfLyI0ugjqeF/o8R4D4ik6Ju7iuvKX41DI1mdYGHrff\nsYK3\r\n=xGW2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAfcb9XWBfP6YQxUnh70Ze048Ip39CIsTYjWDnxm/YQmAiBfqUUg674rHJ92Qnw8gdRnhKFN2bQCeytcJXmP66Jomg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610108509-17db7ec5.0_1610108673220_0.7242576164486014"},"_hasShrinkwrap":false},"2.37.3-next-1610110107-b8b3c2e6.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610110107-b8b3c2e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610110107-b8b3c2e6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610110107-b8b3c2e6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8y8ZVdKkfhYTsj/L6MHGhzgEstQQWW3qEcwIYfBB1xA0xKNisFeVuz9egARQH2jLA/yYXb4u+4a3ICy06m/iDA==","shasum":"cfecc4e43d09ad155ac3bcfe3d12e0becdfeb2f6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610110107-b8b3c2e6.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+FVICRA9TVsSAnZWagAAcAUP/157/NETNUAELtE7PLLa\nX/X90aew5S+iO70yyrNm4GQVb0/R9OjZ0P4q2Pw44ZM1ZKUMaRjyFy9mSrxe\ncn91j2s9sdhWMv5LZzbrAn5MuwfGbVyqZN+jvnuusmulspGxPBbGqWc7J0gn\nvhLGYcxjHGBdqhXuNqbnhriYCaS29woJBUruAtMQMaqFlKQHo46kqnFxLr1N\nMzyis5P5vsDuZAlQIzbf3S8ujrVHwC1kt3tH7U2lXkzOJAtRh9dUAO/mhi6o\nnVibsNfMyU4IQG9HgMKLx1Dxm1KW6mmS1/ifATncbtBuC/SRGOE+TGk8KD5m\nitP18E4pOlu0OE2Yr0Obbl1csAYZG8SyiDc+EVyJxgGaU/IcbTvASw2HbMhl\nn1fnVoliV/8PcQPprmmsEFHPEfET80SBtkDQCOCcdilO6oi26dTj0BP4Z4ma\nxQkoaiPxf/7fdwmqFEs4vihWavJSqGX+LHEEeFUstJuA/ijBdhE/5OAbyF75\ncP0mMjiMotP0Bc/RQUsGMFU5U2allOwO8OyL10yDN0ZVidw9A1fTrmMusw0a\nVxnp/EYBjJtrAGZO39C9nITL/Ckg6Z0TSdNbGF0Eoduaj5UpVZOfvXLljlGv\nfsSDEmXSXCEyXhjxRI+CgtXu9xQoH5iQ1tOs2ym2bUX+pVMH3V7/jVUxacK1\ntYAZ\r\n=tV0U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1hSP0tCzaefTTzWlCCpmzn9xnZx12TbuTGTm99vfJYgIhAIh7b7myD2jtNHRLonbxX/c1cYjBnbY+S2N54w3o/9Kr"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610110107-b8b3c2e6.0_1610110280038_0.9903423282379624"},"_hasShrinkwrap":false},"2.37.3-next-1610110295-602dda2d.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610110295-602dda2d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610110295-602dda2d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610110295-602dda2d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zrJ10U40jIO3hCndQMbs7A59QbJD50z5b2Sfi1p8Ay97Wb5RgN4UF95YTJDVhGUnjk6HAbhG6FJegN5mK9yHWg==","shasum":"72fd6cc441ab4f0bd3867ed170758eb476f6c3ca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610110295-602dda2d.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+FYBCRA9TVsSAnZWagAAn6cP/0+qMuYOI1dRs93vmZJI\nftSbORCwTd3ZRczkC3f7bk+OitMLE4lheytHatlCjpSl82QLWRU/fMmmgZZ3\ntZvqQId3eVv/GwnkSuwYYCy18WEDt2gIJEQJTCGjGMoewLVkG/+u0oSZeIHR\n+SgnYfvkJy0pVp9Yx91e60hCm3R+eXCsFauxKDSyGIoS2FoESxKeWqDyZysz\nUPtxlFp6tJic9QzOaQhhQ86eUxOGGNFvSUAdKRdN1eMic57Km0zK3YOhtixe\nKqZB669JfJ87ejHG7NmWkE63LqifN5mxH+NRF3lWsX+WcP6gqh6sYqUPMTep\nZihMA037aoQHDnzBNZvhpaEX8n09wKY54Dc0frq8YQGHwubahnHB8r+ixZ4D\nc0F6EPbujqVzvVbmFnK8MypyEytzWc+hLz4veKogMuf/owm1ocyOqTgFeCYl\nhETbs5RB6QYTjAzIdBk8RMwRVO0PZfXvQzZOsulHw299JZ9x84DTsAskaQ7l\nNVKjNGJtRqlQLv8j98z8TyLOd1wQmj60aTsZvfAXobE6uwmNma4AxtBLezCT\nFxiYIhudcEGmp6wQ+b+asGK4Q10CCvy/d93JCxmMS52T14ayMQpYOVoMnD/F\nH0Coz7qI9XnTWUp0bg1mlAsIw5ppCd+fz0yTSoxJ5cDLvrUW1BSpbhRa99Sd\nY41D\r\n=ZIG9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXu3tKn+u2xlGWkUzIb44X3B5rf4o0mpXVM4EaMLQD8AiEA+JS+O9uyDfALlI8QuOJcPwL+T4aBbbb6jCtMSaJLJzo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610110295-602dda2d.0_1610110465029_0.8133961527183224"},"_hasShrinkwrap":false},"2.37.3-next-1610111677-114dd3b1.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610111677-114dd3b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610111677-114dd3b1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610111677-114dd3b1.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-60uglTtToFEDvr6wrHIO8in6DLYNjKIZohAhlv7NUApmDkTIx9GUV4CkZOErsvYyKL5Oefjtdr3ymc4W5jRsDw==","shasum":"cc387b06fb35b41d02487682c0cf9d353320a4a3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610111677-114dd3b1.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+Ft1CRA9TVsSAnZWagAAKe4QAKPgYRIN9hQuIKKRaGGl\nRgjd7dqpPE1+hvEwqX5cPecrkwTGHqXprfNK7vr1GS+r7EdAbPWHDQyAGXMM\nRq1ydHPpmEjgSfb6tlIQTQljzyB/fwTjg/lMQEclJvvnB/GwlEmqu0CbhZ6/\nutqoIFB1+C8QplWs92O0tAOH882sjdYiygbB0sCP+dmQSY+R0rzCxascFmrc\nQDB8CyRWULoJ6tPh3ndF9bmpg1ZxuXojud0RAME3wynNI9W/+M4ZQ1teulz+\nk3PEQtLioLaansEysmItMwONwVTnSPKxaUvumpBrmn/dVHdlbWrQe4CAMfRw\nUUKKg+DDdupW2kiDiVlahb4JTAIzsUr2q8VwNrPhmAvJK7HoA4TSMKUq+SYW\nGxY5bcGqksxavAgQMzGvTCd70dPpbRGCIRIo79Aae/7qD8Y7XwXTWdOuIsTt\nVZJxlU1KIzXJRE8izIheb71dfHABO2pJDJzjcBR0I80VF7G3PB0s0BYUqlBo\nJVPBf2IlKNYQRdfX4IqfOXu9gty1NYkrstlIBG0lyV2lLdW/NU+TH0sN2qBK\ndSAk2H99o3nEQnAfHoEl+jdoO3Aopb1vvrgHf6XmcUfG+2bqfsUgzcqfhdlq\n0N9M6+N6AKnGzjU/awYHamw79WfIAQXBf99cyWc2JNYvUhJuxIrncFjTxAw2\nLXZb\r\n=LqHZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBUx2A1eNX9fw83Y0HK2rE5y9B5lanGrKuSkt+KRuzQoAiBPEIn0HR4wWJc+nDiVMbrZLIuG+33r496DktL8OwVq7Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610111677-114dd3b1.0_1610111861344_0.005320851131348947"},"_hasShrinkwrap":false},"2.37.3-next-1610111788-7b69e5a7.0":{"name":"@xdn/prefetch","version":"2.37.3-next-1610111788-7b69e5a7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.37.3-next-1610111788-7b69e5a7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.37.3-next-1610111788-7b69e5a7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OSipzHvS/+jc54NUySLrV/FTfHkvwrSr9svEN6mKki7Mix19U0OfYUShVYjPh2vih5O/qj/6RmzitG5tHGLvHw==","shasum":"bdbb96c3fe137aef44a42683e594714751c21499","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.37.3-next-1610111788-7b69e5a7.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+FvVCRA9TVsSAnZWagAA+mUQAJVZyrI3VIRXMYgndJEX\n/18xtfnz3TOT6dBlkzlUdkglrGYWtDDrcEFaEy4I8JVQjrMYboOTKg1khg3T\nL6sp4gP4YIiOFdclZST676uz3yeqp9PS2u6topWfG2fQ40fhQMmcsfCW6xN4\nSNg2muS3g4i88LxQmemkai5XsNf5dXx2Smmp8j3jsgTlvyG0P09p2oSmOCZ6\nNrrUrrYbuhY6W2yo+6xtPkIRjmii7OQMnR5Wt4Ok8QPxnXKFSDzx1hKL4T7K\neJAeIR8iioG8508ZcyP02CkBu/L3loN5JLxYm2pkuWWJAQOFFURv4NNI7WQ7\nBM9PvQfJqCRs21Hfpxge9UuxodcOkaJlfvWcf1CIsX6N0geqaPHSN2tRK93M\nE6FI+O65fXl42d9eUpDbIsKeyqClDHEUXayXM+MTOG99/HSCl1yOVTRd3glM\ncy7BzkvWdTvs2rFo3Sw/eUwkpZfF8qXArTpAZwAXVlZ/xz0Zkxdld47tIFNw\nQQiR6AVgeWcndtJhmyM/AorE5mqoTgiMQ6Q+l4mHwo2iyHRvsVknaLAPe3sX\nvcJqNlIOIQbfMHyQYi7KY7qcByN1YhLSMKlUg8RmFOyJpWAo36Jlx4Joa9g3\nJE24xowqG+6nO7gXfJBx8TLqHMAT+uvWD4N12g2PPvjt4NXm/0yrxBxFjCBM\nPu79\r\n=at2R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhxYWE6StjIPdCkAfDBRwobO6nMooBxguVonshk8imxAiEAqu7b7gptsiI6ZFrdCJHtACQFhS8Uu8ONnsdlTBNrzN4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.37.3-next-1610111788-7b69e5a7.0_1610111957014_0.2261257475984877"},"_hasShrinkwrap":false},"2.38.1-next-1610114597-4a7664a7.0":{"name":"@xdn/prefetch","version":"2.38.1-next-1610114597-4a7664a7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.1-next-1610114597-4a7664a7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.1-next-1610114597-4a7664a7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zMYY6KezvFtUSKJ70bKRMzHOaenUCsl2GPsMXId5qCk1FgsLk5netAdTqh5zY0lJTZXZyofTIcH9xPi9cukoQw==","shasum":"318814d6979a29fba417fd69c32031f28ada63d4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.1-next-1610114597-4a7664a7.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+GbRCRA9TVsSAnZWagAAk8gP/162A8qJQLgdPUGmLYOK\nhV6kOWpojATBb7EqFnZte5LtCDH0njI3c6ABNbaLP80VIIkJ1YZ251exu9ZV\ni6DEjKAjxtXbTRlXR1YAmjqzEIam8O6T2L3eS7gePiVUK5YAXvtFdzAaguWT\np2HILr3LUJCK1GDcvxW7PyJnnvPLyOdLF8rQwxwwTf1UJxFj92+y8BoqfwFn\nxAFC8DIOrctX7aZNEpbVn39xxUmi0D0U8qQKRc2sQJbstFGlPV5qO4iiJkD8\n1LOHCnNKYj2tUX2MlOJovosgBRv9gaKazEvdqHwZ0tv9GCIQS601sJCIKj8y\nOWsBUbJsYORBWU15FTrMdMS+ERPtBN1L0K5AbCYCSduk6+U6ITfRFp/J9lbb\n0e31efISUaLKy+rHD96U3ev5Qya5tVgchp/+9m1f9hf3l28gGI0BkXf3GZl4\nkWWkoWzF3Nrjf2V13qUFMJTSPLCH7hhtbm779/U3At2m2DBZ3wp+hVd0KNBp\nuXqpYk4ztQ2sSLI+kE0PgpKssjWwvHqcIEX7Luxo58pOq2PibnZaJdSZshou\nKMMFjXP5saauNZOwcRGbqNdW30RhEF1CjwV7Hr+pfJlLvvp3MibLtr+xqdB4\ncU2ZD8pyncTqtl5lY/lyJmJZWxTQE1SCJfinur3LdiqCzAVtNaguYUjqKU6M\nlxf8\r\n=nIBg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjbQ9xZ0KG47Wb6XqvAUCT7EcV5uKGBTDL4ITiImWEGQIhAPFL12zGeP9dkIDOT0zmq2Cw0fXJkdaN/Jl0J1Lj22qU"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.1-next-1610114597-4a7664a7.0_1610114769076_0.2893931165706858"},"_hasShrinkwrap":false},"2.38.1-next-1610115336-83f84839.0":{"name":"@xdn/prefetch","version":"2.38.1-next-1610115336-83f84839.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.1-next-1610115336-83f84839.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.1-next-1610115336-83f84839.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-n8rRzbXAipRn1M5VscTRJhNbtm256OtvHawUI3KjQonk478JIeX4nX4tJVG4vBt2f/8SM9JeEoCpCqUcchtXBg==","shasum":"3efa8d600e44146a6150c3b3fa55eb3259e84a91","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.1-next-1610115336-83f84839.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+Gm3CRA9TVsSAnZWagAAxNkP/2ATAhOLnyF+NI4SC5Xh\nJ2lIxeNB/0mR3RN7p5mR84vzYg4wg3WTN/UEpjaA7RQ3UXIbxPaZ3x50Qp9o\n3XVTd5hjmDtjfkrdiarXnHjFMTYmIIk0Rs/uj8BQ4q2MHY3zGD1qCmTHxw7k\n+BJudhwMXs/wkr7v+qwrzASUxKWUMq+XzFlB0tRTtVR77vk0bfSRIPN4o7ia\nyv4319PjJYzteIyQZme3YqoWmsIGHakI6r9J8ne7w97qeWVGSSsS2+DFS0d6\ntdDdBJ4j79PghBOjrjVPK3YzHk1sO4bf3ajY1g8k446kFxqMdTXNkzbYLNQX\nXceUeSYYoCJtVtjFT977z4iixKtFOn4T83ztXVjOxJ3YHUw+jDkwQUrgxJqN\nB7HNz6kMDFoldjaHmk8wf+1H82w3oSX6R73rNtBGjd3Yen8/OHwwENwBH/BH\nNz2OTMcwePpkMu4sRXgV+r+fDx3kIqkdjDd3PTmmWF7euQruH504DMuliHe0\n3AwcRmdUbJnjnFKCGnnex/YHpFtvkRlA2sYImy/Gjg+ynTreGDgIOMSQMEGd\nAQm1g8fyMJnhQUziwK9yuE46TYTHnb8DJ+DjOD4/wMpW0VTHwIYeqQg1gaqq\nfGRntyTm8ceiNyJ8R9zMoRBqJZ6ccH+ktOTITsBTgo3uDIIEV9jpv/PS0Cj4\noJYA\r\n=M6AP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGkEes1mkVwXqHA5fFagTomq+ZYfdMizdVzoGT8/gtyQAiA7sDK/2QFdW9bw9VfXR1dj3bY9v9dCrVTax2hU7Wqitw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.1-next-1610115336-83f84839.0_1610115510580_0.025391080393317722"},"_hasShrinkwrap":false},"2.38.1-next-1610115776-abbe1397.0":{"name":"@xdn/prefetch","version":"2.38.1-next-1610115776-abbe1397.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.1-next-1610115776-abbe1397.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.1-next-1610115776-abbe1397.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xIPOjOwiJOitvrsqPpkZD8pB0afffbbM5HlPacI15XRWId+gGep0fA/Bq8TxfOGsupjhwmTiMF2JU6YvnSkg4A==","shasum":"b270309f49cd679128cd2bd6a0f9d2e3364e655a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.1-next-1610115776-abbe1397.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+GthCRA9TVsSAnZWagAAHIwQAJk1HE8q7lI3H+ms+sra\n8xS0ZFSDUQ4MGrhZ3u2brOgoN+UEPvxpR/6Vgn8MkbXLjfYvwJ5MPdW9cmfm\n1L6/SZc2mucMvppYr+ok4CIgQhKJDPhthNqJKp6XFSMBtWr9VBWZGh57bFFv\nkWx0izszJAddKY6Oi7bW7Bd61mpZgu8OYZ5DvBz8NnBNsKMbpbuO16h7wDHz\nDWAFjO/93uNqPKVQpuEN/VqprVR58ZvbyFm+RjuurCFbaED1ivpwTdRq2kWG\nM6fz34sUxfA4+DZNGA0dMXIJD60bz3H4X9cSMPNyc1EyLZHMolHn2GE9gskS\nF4B4IkgkWQ1EpDbJBpn779NzpiA27bQSmKDkQScHSXuuvL8sb3tIGQNo7bfI\nj/dfB9NwrE4Dh+6qV5CE1Pz9AvKFoGUke4lfgYakbTZQoXwCI0PZw5hVq861\nINYAZNj8GwfA8oo/orF1i9uYCPbB0fvUCBCKZc4NMasA3saSPC/6Tg3NyEWo\nGbLj7EAwrgZ2VjkNA0eM8l/dlWgbgYNK6q35srNdJnlJE0+YYiOieRDJQDfE\nVPIa3jop9J0yVwSheABWpHOjGLg7EwJT3weHOHsugSyU4mRI7Uin+8ShQgXm\n88iN8VEj3tFXSXkERwy1olubLyKrkg+cL5GKAWwkcyub+pxSEjJs+Bf4wSSd\n60V5\r\n=uqLk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5bJKjDm8l2O2D2U1Sw4TUzCrtXplrewdJDnvn2V4+WgIhAMmi8qlcz999GWXYhQXYxQIPmhMPMhRxtGcIYpCj9V/5"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.1-next-1610115776-abbe1397.0_1610115936688_0.4919788185802205"},"_hasShrinkwrap":false},"2.38.0":{"name":"@xdn/prefetch","version":"2.38.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.38.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-V0lhj9ry0/XqqFDm/3Rw9H/cyGZENPKIyFWY5+keF1EtYibCyiH24iuRo8BAobdtVDR+9VROXm+WG+B3OCJVYg==","shasum":"fbc2c38e2fbd14d9ae37b067fcad6c7bfa7f1de6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.0.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+G2nCRA9TVsSAnZWagAAynIP/3Le2Ceqm9P9Y2ytr9Y7\nO9nX9ZevpLM2XK6y2H4kuIgQPDOuug9MZ6WtahoopgnHmdMThqJDrBHynBH8\nyKVB9QDMAOzc7med8u/goLXN3Dr6rLt6AYNW55qVnvgFv7hQxfRgC/2awtMT\n4tg2gj4fgQL9laHikQ1fzYjmlFrxfdwTt72XWtv3igJkQv6+GTPBpWA+eBIK\nce9q2ndY3uqpnilD0X9V6g/TYUW8Woc3JsMa29Uqgb0pubTXcc4KdCsNaT38\nVWgb7fesCpLCSZwy8eqd//aHzk+Ty5WMiXGVAgLJIt4cK+h+aINRr6mlI1ze\nx3dUjlolfcpRo6enYstWOz5s+oBiH2h26yI7L1k6c3n11smlmUuXBOSEveX9\nDLCXyyVYD7Arh3JRtF4vPxAI3oeKe91zqw4js2qf8H8TH3wfrTrhVweWSH/C\nYC/lJEA4WOWVVk0bBLolf6v3aeNHfEsjU1olunK2160p4Lb4KOYNt21/qPnr\nN9uUHR4rolB0I/bDyqwQeHPgAEWov2ZeLplSS5WFyqFYbtk09kmCinu3XR6o\n8qhC5wsU26ZQgkBmpbDGvfDbkr9cD1OLdmIFAYFH2nS+V40un/rRcAEk4Sef\nbz7Jdi3zMvRyiGNwjW+DzANo7mhStWWkvZpSu7SCUd5SzwnZ7xKAhZi5Ssw3\nXJgA\r\n=f4fX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoBq7Jzg5NoKTYp4WXrmx+BL4prF1OM2xgf2pnHVtlZwIhAL/qtsSB6qXK3fL5i9uwNZXiyZLhxjExUm6c1MzyJdS8"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.0_1610116518783_0.0019951092956616012"},"_hasShrinkwrap":false},"2.38.2-next-1610116516-6aa33fa8.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610116516-6aa33fa8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610116516-6aa33fa8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610116516-6aa33fa8.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-miT982tDSuzQ0Wtbnq8A9MCg7D/lJ/bNQ6MVR+BkXu+/fIlbK51Cz/LSeaCORQoMpLKhgGOL11pxAQYD5W7mTg==","shasum":"85962806cf90deccdcbd3191b089afa8d1b21fb4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610116516-6aa33fa8.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+G5TCRA9TVsSAnZWagAA1aIP/juVz37utqwbRrauwFiG\nT9SzxeInl7q4hX6XTBvt9fhLI8fnyWZvLSGVkAUvpDy7yX+2qvHVYycCTMSx\n5JDOspns8hFaGTiFItmdfSaJosKZL6CYDnwSZcl13Xpf4vuCJybvw2ifIzEb\nD/zKeRQRQjk0/6OXjoZHemT1SYcds6L9A15ynFiwvbvZ0kerYwFLem5z3h69\nW6bJXZrEuvQzMztAdfqSgic3+o7AMHQEreDslP9iZsJDo8UMzuFr4zIHsd4E\nLX4Zu45DB6RQo3L6neqdypPEkQlb4mbwWlQgIIpRJnMqi1PzgqnGQ6YzIQmW\npBKuvBCKySmCgnjpb2u+QCZgpVC2Kpbt5xGxkR2DNM3QTR9xoL0l0tcJM2Y1\ng6SG1qLRXAsJU/KCHVNWwsFkZ3oce96IU7mROVH+9WPfxroDp9d+RwYyAN3O\nLQt7rpFLJ01dv/5XErKUgBUMH05EbgPpRASlG2VGaDM7wXu9LPnZcgGrthVh\ntKz32f/px7Vcs9v7mmPLhhR/0Otmm4FxAnjAiIWlx9hfBnpxxo96HL0rtK3Q\nyWddPKdRPw52PB4y8rlkdtFhOc+mP2iPrJQjbv1EofvCDmMhadqppnJUE7Y8\nFmef8A3nXXjA46PwTTU5iyQLSrnm9L9TGhtSEC+1k9MognSpwRH3u90dQP7g\nvCPV\r\n=a7JX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICiklnbL56bzsaZLmoC3vYLSSMPC2o3lP09agNttbq0oAiBCPv6BabA8/GeaE+WA7lFKg0Ai3nYfRjOBYLrVgI3+Tg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610116516-6aa33fa8.0_1610116691117_0.5598130236535148"},"_hasShrinkwrap":false},"2.38.2-next-1610117076-2d98ad2a.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610117076-2d98ad2a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610117076-2d98ad2a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610117076-2d98ad2a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3ZQbIU3AwJYclz3jJMjf+UjA7BEttev+G0eRO4ZFU8umhh9TJLgcYiMcLxLUJccXAgQhDgQMmEaioBu6hK9UPQ==","shasum":"bb40968427d17f4d85e1cf6295a31778d22cb833","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610117076-2d98ad2a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+HBoCRA9TVsSAnZWagAAuAsP/j1ecsXtqCPC58y9aoSQ\nwfdHJdJBsl3YYTP+Xo8SclirDhi72i5U8uNZ7AGAd1l+Cll4XPM8X3UI6yPO\nit1qO6pWk4uDxDINMuK/8d40E0AFCyA+0P+PBAn9KPnBgYLdtqrwTQK5ojvb\neoiATEv2kg8aB77zkw/l9DB89uU2nTp5MaLvd4L89+Ok0lPHBriGRaV4+8G9\nN2PDji+s8k0uykJkLexmiqYIWVtFPdCT2vWuVOXZ9u2bw0sLM9cuFk/pLJ8B\nBAWUUv0ErbHSOqCAffLtr4OCag5JRdnqC1jgyv2b+lStIYjU/6ezMKJigWNF\nEVTaKFTgsZMeDn2F0WTy2kTYGaqp91ytzdSqrsj3Ye/+92+OszuXf4Sil45E\nSGOIjpQb50kIwub+ATtoT5X/T1wVSTelID6A8wNNDV9r2kYYgdvneaRv+7K+\nP920XhN46KDIx+ZM4gIEG+IQ0AzvKe4Z/aV2jZSziwOEWrPdxAN7M7QnKeYm\n2s+erDSWr7D7V2pR3rxnjvqXxNCrgLSUpdvxziRF2JH3HRbrJ92OwAjwsosP\nj9VxYsMWTMQs1/X0lbDmZAFTiS1UqMTmL7QZoy8n7FUlQcwbs6fdIFJ98zB/\n3yZC8/vqCY+V91Np9e3GQubAI4Wi6Z3jb2svPMMjpjSB6PYGwtkgWbevZd0K\nb2bY\r\n=JLbh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHQhRbW7ErwOepJ0io3xZUjmhwiU29ss2v7rEWKZpwV5AiEAiwSA7mcv+bTPI48X6jxCS2nPcPDeVlOTnqz2Cq0IP6s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610117076-2d98ad2a.0_1610117224329_0.39198948937707434"},"_hasShrinkwrap":false},"2.38.1":{"name":"@xdn/prefetch","version":"2.38.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.38.1","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NcIlysYyPhM0ny0qFcgoV7qReumdcl9ZU3thKzTieQBAoMp9KESCaGQbU+1E+Ab52hutG9hEVRv/b7C3GfCwYw==","shasum":"b4e1a92b7a90a5997044bb544f964e8de79b5a40","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.1.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+HMaCRA9TVsSAnZWagAAMEsQAJ+acj7qJPsimFMFRBbY\nedvmzwUa0QXkgmigmg8J9s6otPOJ2t77GCBConEKj44/DIx/Q/gbrrZQYAPw\ng9xOlParpkWUKDWjlWHFzGplM9eejEwh1JKlFFyR5+iwD8Vu6MnATOfZGijR\n2MxHfLcW5FhPE4z3NbFMGQI3MhbuQyHjndF8uIJby/rj4YeM5gED1NnjuD95\nYGoooZJEtw09a1blQ8wQWlUTyjPvvGgef8GOx4oI3JK79MEbSGiwcJ62dBbK\nDWLIJsjU4fO0MzZBYr/ZKRO66h/PXd+4iLSXCAfSsA2CQ7JcQJNs43O2IOao\n3wDUHuKJaDtgTgjKbL0FzijrPf5kuEzFONiYaF+uJdRJ+RSRRw5i9Mp7njJn\nLzt5Aq8Ers62VIK0TfM0FiJNoLC4P3QRHgymVM54sQ3VFwD3Rm8SK7Tn3K3i\nPzBnVu4/Df65VQG3+3aeKVTuYXZN0n810/xvuj6A30G1gXsh+PYJKgqdzzXd\nr6xl5r95eookdPirjZ1gem5vBYszFeYb886Vd8NT6dmzOssoBzXO3D9fPhN8\nJvz4ogwULr1HC+pR7Uirz0Q5gkof1ZjdIHB03MxErYReckKFHKUjWUT9tVD+\ni7UWbguJQc+cIeL1rMVqQYwP0TM4WKGwQxig2GDyKj7gHjNPRTzhW/H3XX5H\nDo7a\r\n=5bPO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF4kEIGWiitu66gtjqrKbGoXm4m4jqQ8h84ckdIxToOcAiAIdekDs8ZGov1OIU/t8vx4JUDW8LA6iznEAQUGnOGQKQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.1_1610117914445_0.08863218755050628"},"_hasShrinkwrap":false},"2.38.2-next-1610118532-8be4ae4b.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610118532-8be4ae4b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610118532-8be4ae4b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610118532-8be4ae4b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xBGHhzYRGzgchl3P2G5XxmmYu1kzlPoLYCD3QIIWC/UjNnY+Enyn0KHgMuW5qBF5Gyznt/UdeXsEhm4RNUzuAw==","shasum":"eab4fe8c5e023bd561a06e58cde004f7fa9c8861","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610118532-8be4ae4b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+HYlCRA9TVsSAnZWagAA4ncQAKAczOVH8z6LH+d2i6Pk\nZhJmEXu1M6cC8cvkjErl0EiBatRyD0CvfaK3SSEh6eflrQ1U2x8vHfrT7iaT\np9NS8XDrg3P1j+LqluCDeRlShcMtGOl+bP3O+AclC3SX9M1ImZftg2Lf/2zC\n+0UkIGb3SZJte5VDGuQMa2kjgdLw2xpVa9YbmAUV+RowrVHoH9lJRYVJ0R4U\ng3FZJgk+wTE1ii1+p8sNGomoUmuWkkczbSeeXemZ4Mwgj8KxzBtwEdaB2CJC\nYmpGODHZAR2prqRFkMVUwqlDS+pKE3VzjNiPWnK/OEXojVXLzH7rrXL8HCpL\nVud62ySxXMmcfKSvbmdVFw47tmPJDX9vFnIjTqqbOeHvbFgJ+CD73IYVrA5E\n70DRqrqZj5rGfoszi06L7XBhxGzd8TFHj17pB42ycz1BBYJUynyLpxXSXYOP\ndMOSCorFlsE4SrjDCAcvI3olRKB3v7rzMcoTWJdfmD7RtDsvqpkk2Kw70LSw\nOnFXcrDUZKt4LWZ9dk34m2jn0UXaCGf9/kyQMHmrV8y+/5OsR+iTZ96hNmOW\nS8kYXs67uk+r+Ea2PNeQzpSw3VGNyazPn57q6Ocu8f+l5yh+7vYbAkBlIamE\nlq/y7RcHS3ZGfcygCIpDSZgISb4TXmH2dQnPP3VMV9YypO91fbZ2cQMpEf2Z\nMroq\r\n=W0qy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDy61vFSaXoRV3lXQjQITEXneAhlajVxHAj/jd96Cv/xAiEAiURYSW0IQDDNmWDdTGNeH4UuNM+hPBjBzESVPnienkc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610118532-8be4ae4b.0_1610118692472_0.20740957520649506"},"_hasShrinkwrap":false},"2.38.2-next-1610120295-1bbe5725.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610120295-1bbe5725.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610120295-1bbe5725.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610120295-1bbe5725.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yvv7CyuzYvVXpkvaWWmEemPlZN7GJ4Dpfjfalun32Dca/UDyi6zHVswW/86/Zl3LQwFISPPTqfOtzKFb3CmOgA==","shasum":"6b871a975c971cca86946ef55c70d5994bde5a68","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610120295-1bbe5725.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+H0CCRA9TVsSAnZWagAASHUQAIvCF7Fft/2CDa/T4lU+\nt7JX4OTZna7gm9AOgKclgxKnigOdSN3vsWAw7NqctNHbEmDCNf+m6AikFAB1\neU6F/IJeQABRks7nb4ZF4ytyjCkdsxZX1ZzdvLUhh2rY+fnGwjcyeREWVGEe\nzddfN8LAIgHSVrJQhufnN59CpZKEX4szJ0dC8wTVrW9P6BX0bw1URt/Mw5d9\nbjYORTMrL7KuWS9A7xcpgjxvCSofZCcW8IlwnBm7sYnXiN3IMkasVdxS5ywL\nH5yLgAEbA4hvMBnP6MnQEQRfuYYlM4Qti2p4TiDVrrq7//ULSMn4vjrIR0dc\n3x0lH8LlAEkazV66Xm7G07YKsMzvNrkyx99Du/aFo443UBjSNO0AL+daCJWD\nzbjgFJJmlrP602mJubpkizWPyAkWlxmmGj7Lkouv2DaPIfJBNc6wPKdEGYAa\nw2G+rm7iTMkV83FyLU8VprLJJDfBk/hK2rW14r3TljCMinxVJg2vqKYX5ynn\n1bWiVQIcgMlxCRpkOG/DW/ne13NeD82VKz5lISWfgI401QpH/F7oNG3brROY\nF4S0ju6HTOV7ENmyzTV+XEM+FvgYTdVNmCWbjAAkfw2fEIlIUiq6AzBhC3Vv\n8hXMEKTztM2yURxUFhFn6zxBnWaUXQnA9oUAAocIulaqjJY+dy2O0Xv1Sful\nBeHc\r\n=ek+8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEzdTx0pR7FOiCd+NRKlo8XVdz0w9+WdoAkdbrxhcwYgIhAJMYlJlqj7LLDAvLG7StR6/xUVIsTSPHoZxoqrZztAaq"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610120295-1bbe5725.0_1610120449253_0.19810592902984214"},"_hasShrinkwrap":false},"2.38.2-next-1610121100-0a999978.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610121100-0a999978.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610121100-0a999978.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610121100-0a999978.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AZXXQJb6kYlIxtWGkw+TmV5rw0Jx3ianzhdOQl6dL8bhPSqLhhc6yKGNbHRLEsPsFTEpcyzvIPCdi0yx9+eVaw==","shasum":"94748f9d90c95dc16e8acbe2b1bb2e56beebf551","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610121100-0a999978.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+IAvCRA9TVsSAnZWagAAVwYQAJ/6fBs2R4dKZ1gpScz2\n5vy0RScJCXZ1+x2qyYnKA7a8ziWNdggQ8b2PeR6Xj4pE/iIQJwMTZjEJGSHE\ncmXu/b2YbuOXVqbTzzSAkDROpdc1I2zAk8Ph/m79ptqmTwk/7fSvypw0vLwZ\nilMVA1jnhGzj8e0SHl/aq447p6lFQadVeV/LH7IQGMuBDftQWQv3DbNFwWy1\n+TX2m/HZ7LRxY8Co/cMUk3QcMNh2UapAN5AYYMOVCsIzLlBWVaGHnaws3Ue4\n5SksiitN3GkdyjLcVMdQlZAtEI2nNQtnGiPWfQ7+h1wMxSXIt0ktVc2K97Ez\nATgPOF0HtlQDDLw3qx/4yeI8OcITgCeLWkpYgmPKDhDRtdX0E77gGrJ4lyG1\nUEAwTeztbe81MaUdCo/+lmNrZ3d9VR31wLxgJBd9ejscX7CCEuriU5584f6U\nyYWHFIbo42BXeDeHgX1FHg3zORpK6vrF68XRT0zNGRzPHaAewaUaoaLrWe9b\nekb85GVAR92rkfkH2KhSfegN2LSjKLtyvIyGb6HMFe060GzXkVsnSHnyyLzE\nlg9YXI61Gbm9oVC2kRInI2S5QNfQxkAIMsuiih4XgogCfAKRJxK9eD+TXhud\ndQrv9VD+aWfu5SQRd+3V03onELmzs8BJqrsMORagBvB+BaxDPVsQHok+3tKW\nfZfh\r\n=qGLQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIASHbRCCHx2V6q3lJBOf+AWYsNgMCmfw2iRPNO3UM3dlAiEA5xFlctXU9gf81ShzLswMHgUhd/vx7sgB7yYmnJPzegU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610121100-0a999978.0_1610121263228_0.3662452984416653"},"_hasShrinkwrap":false},"2.38.2-next-1610121307-9e46fe6a.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610121307-9e46fe6a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610121307-9e46fe6a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610121307-9e46fe6a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5YqznR9z66g+cYo/lH92WxST+9eEfuS8eH/A17eP0+cN5CdhBhg4oqhRpPwmCku2+BpoFZwwFQ08WzKZFlz+7A==","shasum":"723a45a42a80f36cc0b16f8fb1d9c7166a928ed7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610121307-9e46fe6a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+ID/CRA9TVsSAnZWagAABnEP/1AvQ2gVYBltOtAVBPCb\nOMAfdJEg5G9bkFXZlFWSmnNdrX7F6yIIZLKaX6MqiS9gmqhMs0YHSl3kBFCq\nVBmFvTv6c06EtjZFY1oFxq2vfqQq9hPfvhvDBGVbhFl2WiCTCjJGu1Bqt79R\nx3Pxj5GHQJ8bCQW9M4WzmL92xQTnXJQNkFLq4P1VkXK5gSoW5zHcduvweVS+\n9QO92ShPR5Q8Bpgz5eiBfTUpmBw7Hzb4D+3yLMe+Q1Z8WhHs4UXO/p0am3fx\nHFo/tQAEV98xNG8+SHaOLGVDX1p9URYDs8Vyrmpp/jsDdNRaQDNJWMikMNDJ\nrlcpKyvqtfez7PJEoD0xIaZ+nFJAWth+1gITP7DwwowwuOCluVqhiQKZN1b8\npBbFZ6olxufiJk9RswQEb8Tnz2WKS3us2GkcuBwMNkwxTJgaYm3aotY1AXDe\n3ca+kT+4KorkojbnKMeq1LHloJLkwRHixEL00oV7j+Ix9yZtnut5lBY3lf4c\n3GfFmiIWDYZoiVylGLrieUEr8br9Vj9zMlN1Ovnc/FngvWyc1ajOXNOmwtas\nE9dKlO/93IyS8jw8GLcvwFE6jP/p6CDpjAlvySpbKbeBzjjMIeuOfK4lEtjL\nxvVspc9G6IXe56euN490UqWYS+bI2v/u+kG/adkmEU6kvBNB+IUUsoHbKXPC\nAUlb\r\n=xH1t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcQewfkyv6PqVXlaxQVaktmJu1oQhjw0B/of+ktuVtewIgS3dy9SLeNGTRNuOnRd6k4ZWYZ6NxVA3F5CCL1WgdKl4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610121307-9e46fe6a.0_1610121470786_0.5486667846729782"},"_hasShrinkwrap":false},"2.38.2-next-1610122542-a4a1292a.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610122542-a4a1292a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610122542-a4a1292a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610122542-a4a1292a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-p45Q+JcM0DnyPKVVtaQPIfx8vP+xLVKkTpF6F3XVC2xhntgIw8+w5iXXpypTxaUd1N0Hc0L9p94WDRHdbifVsg==","shasum":"3427296d48542098303ab8c931d5a04109c0f902","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610122542-a4a1292a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+IXfCRA9TVsSAnZWagAA5toP/1n8XvBLXa1XSb0WRU8x\nXiWGUoiLbc8600nXAnm4Yh4r88hB2B3U2Uhr82UeWG64W0WcxcBm+Uir52D4\n+ReXRQlqlx9+rog1ATQosrQEljJQvFm9vgMbhHJmqR3QC0jtGA0WMBSz5JcD\nqP/CR2DzySFH+Ohf+Brlmw/fX9NP1IffvX3C4cI/O8aJGZsAq8NqQ9o1sT/c\nmHCjORbLn/1FMiOwAXQD7H9FLZ+fWD4+2DQhWybAGX5VBF+R8lxTG8bonKqA\n3XuF6w4EsafM5e2iaAk0O72m0S4MCV5vjO6KTBnfRaUaL0XUBwGuQFnU7+uv\nG6UoBcjiLugkrS9kJENubJh4g0+2z6+9PgT5kCxHlYpjOF7Lh0P/JNLgffvl\nkP7pgxgln9VANa9cPpVC0RMjTgo513DmHvaP/PpW1xejrF5iPJjTRcDzQEGS\n0rJO//0VKXH1rD6c+CjZuBXpuGPYAt+SRCcjBexqIuQwHJsLPpNldM5zz6Yh\nwRmKjeOZlgT0UJdus1yPlt1Ns6GfVFgv4QobnBiONtSRxjGgT5pMqmhotifX\nMUwtjet21CmZNKJZMM9D+I/jzZgtYzEsK0ENfAFGR+wNLwEtB3D+/+xTs4sf\nEVk4uYOtGnzkmKlttf5iNKltmuWXoADC4YRZfrJPwyA6HA5THGznUvNqar3B\nX98Y\r\n=Q9b8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBc2rl4/7Zy1PAhvdsAb+WX2Uwp92Wn6O2OYDs2FwZGtAiABChNyMB3j4ejtcKfbaLx7YOJulX0VB4Cumx1rJ4yECA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610122542-a4a1292a.0_1610122718993_0.1776946755702955"},"_hasShrinkwrap":false},"2.38.2-next-1610124430-6b3d570d.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610124430-6b3d570d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610124430-6b3d570d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610124430-6b3d570d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jXCojpR5MvE0WjCuKwZPjRllsEheoxCZ8Sdnwl7tt1W0xlBPkg1k+oJ8DGB0kfTgWN8aaf8ou6cAkQirK/yrKA==","shasum":"701ea06c25e8b2ae486313fa7e5d1a78e22cd650","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610124430-6b3d570d.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+I0xCRA9TVsSAnZWagAAxJQQAIw7IB0nlQB6UTk3E6qP\n8AN0yEgyBGlftJ/C30P2qFGXyKJN48SYg/m2/AwkGpaCD33L29oD5yxU0mBr\n3kaJPKzS7LQDvTDHpLgoJxvkgyaJOqjW4/Q0ECSpldVxnz5SiDKG5t7N1zr+\nUbqX/ikvJ/aJQY9yk2D9Z039S5ZQAjIk7AtTd0M4ZeaRkPXhZ13ttmztwJdj\nMq7DVqbAxAFW1Fm00TmfUhalN99KF1wKcDbYKFOlfctrYvTQo6SEtzt8yq1o\nv6jxO23W+kAwBM6CHTkdSf3OyosZF5JGE/zU60EoW4AfOuiSdIC/ElcibNSf\no+qfwQDL/wX3I+5NHvV1o7beksaqYbY9DBy41NJhHr9Hms4JYB1gPnMRzbZh\nr7iCXaD6eIifAacGry6arNXS+yS1CfbN45Tx1btHdOIKPsSR4xBiGw1E0iT5\nulRYhsDhJ0ms9Z1tJuKdlpR5ch/dXAsMdgcl+jyzZ4bsJfU8ksyj8Iwn3rlS\nj6QGCsSbygKmRrlnZSWpm+QO+0pQ9YTJWG2RfKsYhyFNiuHZUdzPI5rHcknH\nGSSIj1La8cdRiBQGpqet0QjwYtZp0VEtfrMZSmNBWXPXz2CW+ILVXZghsIFb\ndhLSl+ieRU7xYJTiHJf8Vz+aIMi8bUzMGHvO3pQJOZM1WvwvrzKGLK9Ch91o\nQcbK\r\n=M875\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaAEI6axy4sHIkSFPstWEuHze7xfUp1FDHMZr3O6j5HAIgYEF6DtMfREFHXYzy5s1UDd9+kytSDZuZ0ZdiwIleTwc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610124430-6b3d570d.0_1610124593017_0.6642623820758793"},"_hasShrinkwrap":false},"2.38.2-next-1610127424-a449f5a3.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610127424-a449f5a3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610127424-a449f5a3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610127424-a449f5a3.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-e8ac47eJyan8QX4NTQCX4N+7NQ+YA9fdMMzW5ccY2dlNNzTFWdgywUcvNU8uOGnhqjRcauL6WJPnOWWIINCnyg==","shasum":"fd6bc0866c322a7c839d49f6321006f533a34b7f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610127424-a449f5a3.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+JjRCRA9TVsSAnZWagAAl7gP/jPiFM0KP1EFC/f2sfs/\n2N/P/WyHX0BQ3OyZGb1UVdn55b9bDAsuoschXaJvqBsLC408OUIqMoX9mg3W\nmpemY01oLCFtU4GLVwaWU7F24nQD3Hf5nq36IcrjAYH+6aIet5gnKxEtKrSI\n1oB09lZm2972NjBAejnT2LWcqAbedaYWCHccQNk2V14TTVZ399IuNmdH1332\nLkXo77JYejuH1j5TiyPoULjMFpCr02PZcIJi4VPHQnOOIAJvzM4iVeCQdvDE\nqHBHDM5QFyHiC8Xs3xKeCK4FH87N9U3TXVwSVVOMZJrvF19YcH6O+4/xAN/D\nPw9YxRaJSZdh/YYZl3PHC3BdGLWtNvyf0AvNkj6rV3Y6JcI5QooLRwFVVGwK\nKXvpFnPg3BjeOuttBJwgshSpXzvpuFgzERY/5tJXdu+jN4WDmXx8QtJpOEPw\nj6mepfk63uBcJJtt0JgdG7bVBbK+U/6Kfym/40NZ0VnbjibXl68Vy7pk3KCD\niUuVw2hZLElCVpKghW74BWf2v7Xss3OjtH6YXdVw0UxIvoLeU3Zjm39q5t4Y\ndWUvfu/xFcpwyeXqwztDzJOe+AR0aa6iHecJ5EU9hIVgwi/MjJMUt6ZGd43i\n8/HzgHJM6u5rp867QvfjEcSIADeG/fesnujVtOTwY4Wu2D2ffWMzVR/NUQIj\nB7kE\r\n=aaty\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyEqBtVKDlzSYjLEWyCmgm+K6oOSTsP+E026KoTGynxQIgNTH7ts4BRSbI9GsqpNreWluOfvcV0Npn9c1Iyerk3bo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610127424-a449f5a3.0_1610127569008_0.3483549915259625"},"_hasShrinkwrap":false},"2.38.2-next-1610129843-a449f5a3.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610129843-a449f5a3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610129843-a449f5a3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610129843-a449f5a3.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-66MYdBbifgcLifNVBanKi7DYX1tmS7PrZMLdFnf/WGdqwEM971cQ7cldjBL5/Jawc/mtdL9ip7YJo4eqNFYAtw==","shasum":"74a0c6c82eef03d50d0223c2f9732a5d1a0f6398","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610129843-a449f5a3.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+KJVCRA9TVsSAnZWagAAAQoP/1VdcDUpw5sdgF/FKhHS\n9rINZz2AKqjwiUjEarRD5QI8xbYb8SYStv/POhBhx8rRooWzG0rCkovLNvwg\nPaABFW4ta+uT+0+Z3+V85MkRMsQesnn/Xmm0QM46JU/lY/HpqJGIhnVWTuTP\nHsAOy6Dr1ZN4HMa1AcAvKJumi+z6SsncCq3r2Ts7Kb1PwvmsSLUSeh7Z4yRi\nXIuH70RnM1bbTJKF5wJmwPxFh9hwo8riiP/sjfaVemjyiYH1o9obGEBjZvOV\nnVSVF7nR0Z24E9IfGUmfKfhwvR89BjVnL2kd26tqb8RuRUstkEIxmOITqRKS\n7z3odIG02FlNQoPQ08uuBz4OS8CMVKj2ZeGpC4u4Qieq7v7ihLgyBYzVsCFF\n/ueUnsY91lKjm/hgmSjG/nFgUcbQogbEGTJ4YeUJdXaVNGS9QE8gHD2nPTGD\niNmMV3Ljrv4ZFYD+j6bzQTU388Ug00Bk6RRg+4s+gkaYk8FS6xkRtuH8rCTf\nr2urDquHSNoHypMp0BmxQkriElxLhy7JFDJGADUIGmfd4COEoPkFAOzFpTrN\niPmP7Y9wSOz6eS7Mbfq2bweO3xZYV9ljd1fO0RkoZZTeDPCa6jFVo/Fm4Lx4\nucvYO5eEJj4TVX2nhvSvZfAOtzp9pQJas06SJ0d0FgdLEQFbDhgo4wSi9Z6v\nAOSP\r\n=DKA9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+C57TJJq8TPZMwG0nPHiB1C5a/X9Vd3Zd/KWLeqs9SgIhAJEEGPL8avsfYMVCAYqnUfp/XqFMJcqeBlKH+wOPv0R7"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610129843-a449f5a3.0_1610130004825_0.2178134442092905"},"_hasShrinkwrap":false},"2.38.2-next-1610132867-037bb31c.0":{"name":"@xdn/prefetch","version":"2.38.2-next-1610132867-037bb31c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.38.2-next-1610132867-037bb31c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.38.2-next-1610132867-037bb31c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lo2Mn+llfZonJok+sJcKMvReKmyK69pibyxqIUBB+ou0e3rSvEsVG2ulgaVnGsH20Qg1L/5w/EFGLDnJvzxW2g==","shasum":"7b80bb9acbbd2e6c9e98e4b47518aa011ce2dee0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.38.2-next-1610132867-037bb31c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+K4bCRA9TVsSAnZWagAAzRQP/0J4r2MgukYwjrEe9/b4\nxuaE1U67af0bnllExdjx3px6DhDvbabLkuVwVjYc3PI91pD6z5k7LP53bu2A\nVvB0GXW8oJ/tHOfH65vWcUKSJQK3vAMirkYkKsawOJJQJ0o6/ToALqPFpPwc\nC5hnELwohso0yeG0Zut/Si43l1VdpvzzXGV/Om9hQQzqW61oabSIm8DFBXEO\n1vwEYSa5IytmizAiA3HNlyfpSs8AWd295xIE8UjpPmRqlJsXuH0NDimgfP42\nbuNXX2FnTYnCy4Wr8UINKfCWlplFPvjyk2HOkpxMI+1zBwUG8rrbtBNqHymc\n/4Df3keexq4pPq6o9xvhYgNrc8Wzu74gkWZ+4wy4LKzRjNM5o2fKmR3sFDmB\nMHMogl4iuZjxm1DDMEDP1oO0pIiZb4x8Lqmzv2KIBJmo5J8K0QapInpx7w76\nxCIgV43Lwd3f3X+l4w4ybWMFJfALXRYEFWoUxOklEIKDl74hfvsDCOfukt/t\nZ4huGIXTwpT3h7UiSUOV6d/dy0NW0wsloYVZAb99P67OCctmAjA1/k1eO/wl\nNdeogmQjuAQPcj5h1FbhOBaMGBW9RkKfOWzvbTo1xfr0JBq1FSZ8uVEWm8O9\nyzVU8Q696qzzirqJSdaxVD/wNWGd6Vys8d5GNNB6bq8sEvSpyqs9PCUTQ4/c\nBCKR\r\n=DeSk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0OOZq43RXiNuZtkQ/bBLYLFXSgENBcTgFCfi3u2/lzAiBTsbow/IelhYQgapGES/8hE9oA24WjthpwNGy1TcwfDg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.38.2-next-1610132867-037bb31c.0_1610133018451_0.8126569469373108"},"_hasShrinkwrap":false},"2.39.1-next-1610132984-05f88d31.0":{"name":"@xdn/prefetch","version":"2.39.1-next-1610132984-05f88d31.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.1-next-1610132984-05f88d31.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.1-next-1610132984-05f88d31.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/5ERh8znxjnkJid3IU/yhhd7Y4vfRmjoBrBPbiDwsCK/ZY2+DfNU+wIIw89SQ5oiFNyweMExcuEK40GRotHNrg==","shasum":"1e1d9dbe4405a12d7f86b810acf5391eff4b385a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.1-next-1610132984-05f88d31.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+K6HCRA9TVsSAnZWagAAf30P/R0jLE6FVh1w+kG8l/pp\ngRQhhhGOX7mYK7nIQLFmoUp9QbPsscogFvoDLak0QmezHDwD35EMKpLb8jn8\n6FWXY8Ot2wXtr4wR8wCOJp01RNMNEDo7TBP7Yqwc5F1yf0A/hW6HFNldN/nF\n92QtdMuirpkMblhBfEBhw9QMEUwJlgdCift7Sjn+bu3ktARGWScGKaLbRyQB\ntkMSrG984ZmgCN55PIytQFSbyQfqsiVOxn6YVUvvksSrMvyncIYROxc+D8gN\nFMvCkliWmi0XAXCKUWB5h4QJfkgDUKP6djvGKX91G006ZzDA7sgdDatefW3F\nBps4B7sGVmX0DeRyniRX1jSqZ+bEtY0pjsBplW48NCBQygsItvGhElMbhJtD\nMXwpq4BN5iNLD46boF/yIrQEsMJqRyjNNp3l0McM0MP6tX9sZw/Zv9FL9OKm\nJUFrV+lBF5qa2d/y3XISTdOwd5eWI+aNcF1K9sgbqf3/fyK8HUnz606z1f0p\nT3YghHYjrNNj8MLJ8xI4WpYw4pGEUF3nzbBmj3yXN91/Xwztwh1nXx3zOwS0\nZVZ1NfWURv/8uQqcHk9a9bwDo3tvLurVMndBO7K+4lbWJshUTGYJ0Oa5I2kn\n5zA1z3YCFHLsTz0dDVWIzE9gTgaubzHC2jA+8BKryjpZdDmCPJizSktlvXCU\ndD7W\r\n=HlYz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSbFJVfiWx9kqRz+kNNAhGG1a78BYBPigGR90dke4GuwIgNaykq5bqDuZah1HXs0ebEqtw4NNZKXntyo7RTv6UgDs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.1-next-1610132984-05f88d31.0_1610133126732_0.18172684932476124"},"_hasShrinkwrap":false},"2.39.0":{"name":"@xdn/prefetch","version":"2.39.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.39.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GwpcKHGc8nJeQT9BQAGIMuaKh+OONMRS/4I29MtyaMMyb/CJG0gjpenheh9QHusLv4g8DgD5c+Cb//13YhI3GA==","shasum":"ca3ed110e66aee0e8c1a22c9578651955f4f86a4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.0.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+K+4CRA9TVsSAnZWagAAbCwP/3uqxWkeXHzSwWxSbfB6\nTRwxrOE1L6ZJKwkMMxHxC65BBXFIeX8FX5sxz67Tr5+72BffMWhT/k/ce2Ax\n10zIUzN4xUy36G6Mv4a5ZdweYPdrg4M82w9n8oxVFGUmZMm548GusRpH5NTC\n0h5brNuHdgQNLksoEax8KJP/Vcocd26X1yewb8K+3gzJg5zsDhcffc4rrEXx\nfTjZ+PiWq2p+iDbmiwYgqZWrMsA0sYJHWrnbfGT9JgWqtj52m3I43/dqJrbM\nbNemnbnIiovdIAQJbkiyV+CY3HJgTu4EITP4CXiZYf2W4KiVwUior7SYA6sq\nww3YtL5rP9dcnLms93wCT6IBI/bPD7/X7i0OYQ02aoEIEpEHGyQlQMDFEbzp\na+10Cqp5Of1l0G8GiesKn1yC/Ikll9nFpTflWcmLgTsXRT5FuBKzZ6WrhU6x\nLMsaAgBZShP1ZzG6plor4zJRECdCotnloAbI07aVDl1weztXjO2Lsj2eqcPB\nBlKl0cmtEVEtZSbAwWOGxk/4CRKqxXDlYTzpOINV4vIzQ/ecpAxBRc7YPPzV\n3C/3HcxVr8xpzTaMOv+YaRrFuN5xEWBduNibv9Jh7Df61GB8BbO9srrMZ3rY\nilUqqNH83NzTOHlGiaJ/tjOL82HL0a96x2H+b0FIgDJakZMNQGABq4LuT/E+\neTXn\r\n=DxFl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIETmhcrQZJvqLPtWuLsipNJefv7s+ClSZMeKr2sTcfuiAiA05dwBic/frInkhADz3Oa+kdjs7wRRbFaQaxbiUYGakw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.0_1610133432238_0.9941555021133963"},"_hasShrinkwrap":false},"2.39.1-next-1610357692-716cc09b.0":{"name":"@xdn/prefetch","version":"2.39.1-next-1610357692-716cc09b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.1-next-1610357692-716cc09b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.1-next-1610357692-716cc09b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2dBr0hlmBZ1hLxV63sQe+4u9paUx8fxOVLSR9u6+3aMtPj+gLXQb9Y6lGu3XgX/lV/WQw0KBAEWu7583o+HLyg==","shasum":"33b3b88d5a6d05a7225da6df470ba8d9943d1118","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.1-next-1610357692-716cc09b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/BxSCRA9TVsSAnZWagAAfYYP/jYPJjQdqI6YO0UjOOYx\nYD9Bf4UGb/xSNGCuN/C/lwJj0wLmPM/o9/bB6IEU/oClsCetOo6dDIN1kzfW\nOCvZFDnS8Ax40b15pYJtIGHgeeNAuegETMfYIfzYOkFUHNWbB/PWUd/0LkLd\nP35iT5nJih8Mh318wGMp/vYEghjsyGGLD5rxoTcgigkvL8AaSzekckzj5Q3p\n1DHpiDpl5+hyZZkDrMx2I0wmQmVQBkcz3P7Fqb1UYBuHKWzZ0pmbZsNiRB3k\ng8OFIBb7U4M5evWHq4mYnw17XAXay6qyfiQeff3bvZlzpAbWUS67lhe8Wo1d\nqf1NT1y1z/LscOOjRzOD/PrX8SiE0BooyY5yGCBoBbA5T4wBGeUS+KRnCR95\nkYc9rneXgTqJqO8ceKG+4iVX9lbjnz/wPgGH2MWa7TK55P1/AA/OuF1xFinQ\nWFxQmG93/yQMNzW7+qVrhxmcqzg0hLu0RTyPxnqcKqJCkAeyXUSax0A/wyCw\nld5vZAXy2qIl4lIbwCO8H9+AAEqgUJCZyt5oPi+McVDaPc2gGEPvXIUJYAk5\noJab8so/BJbRr8MQ/YDfjkAvjzI1aT00ZpyMq+z9lssDSY8LddqEPwfigBuW\n18n6jxIImMAs9Ffxo6YdPVeevS/WErTJlS21fG8jJnU14+IHvBfPTYh217d8\n3h54\r\n=T2nw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBdwx1hih0hUkP1g1AoNVdGhRopozmqAiqvkwjEat2IHAiAZKSVPmcv47lwFzOo9EbBAq8cSDUBtCGF/FmGTAsIkfg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.1-next-1610357692-716cc09b.0_1610357842219_0.8375062738050862"},"_hasShrinkwrap":false},"2.39.1-next-1610365307-a8ee896b.0":{"name":"@xdn/prefetch","version":"2.39.1-next-1610365307-a8ee896b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.1-next-1610365307-a8ee896b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.1-next-1610365307-a8ee896b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DpA3J6NtRKHgnrxEwmK60KlO7Ql+i5tLY6mv610CUZQeRcXFl0PVTCqOtpSW5KZfz2aCqPaxdaSVVp7w2dkPEg==","shasum":"a3b010e511cc9a1fab7f4fa8ece7eff916cdb26c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.1-next-1610365307-a8ee896b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/DoOCRA9TVsSAnZWagAAAOUP/1CIIg6mVe82tgW8pcW8\nwYz3RO19j4zcMOeNqsguNe8yEhb2u09b6qi35roFRrfe+ERNCcMjqfsCI9m9\nxVV0OvXmUHeWfb8oeXben4zq727fXHZUt3oETjfJL4yhWmTpoHbXCs9GEHsZ\npTVMdZS1E863F+pb7y9FE3TXFedsJ50OipDjrbr97GGYbpRC9wwYk/zAl9kA\nxBXBpbQRhe47MChNScel/THl+LYDwVA1MTSBz4jzSv6tKr4FYZB9/xexVxlH\neykiQojC91BuTyNFwU8G5fBd/M6YmzU5PBZJClnpj/5VcuoZQFwSHmt9nsza\ndVrBmoqmIveoOIhuS+9wNM2t8h2baS8fNSUxv7Di2NYsynWqL9r5hlaJm4PO\neHsyVnEB/T44PTibW947M1miP7RmEcyL8nq2XB2r6YJMcoPvpkuyYCzNYgec\nEyQqFFZVLjte6cD1VBjQo5qnY1c2D+O86BlExRs5Q4jEyi3dRnQo0x2mxyoJ\n9OEALfRdfjZ+fMEE9DoQsT01NBtjh5rjYqUA7AbwOW5Ffj4ZQBcQ1F4eqtxy\np9hoe876orABKhQ4H/aiaQtGtfBd6GYwVEUi6phMtnk5/a+QjO4gyob73yEP\nNB1GHEJlHJrF8Wq227mQExWAg7cKzThtM+IrO53dvp214fURc8+NlTISLfX5\ne5hs\r\n=X5b4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGkf2F7+NrkQn5PEqev9D3awBB7AFp83zyqkeDgDo/BeAiB6kvL76r0yiiDYdKErWmcFeK/pAhcsu3aVi3HG/9oVXQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.1-next-1610365307-a8ee896b.0_1610365454012_0.6554970624732064"},"_hasShrinkwrap":false},"2.39.2-next-1610366040-85a1a6c6.0":{"name":"@xdn/prefetch","version":"2.39.2-next-1610366040-85a1a6c6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.2-next-1610366040-85a1a6c6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.2-next-1610366040-85a1a6c6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-F5xBuITSrIMNjVKa1BeXVg/N6EGMeX9zVTiq6j09qTU6/8PV07XsAgJa4W+8QMUfdq8qbrdg3nHGoFo56oYoZQ==","shasum":"7f7c8c2ac6818f9f7271f180a3335e8886a7422f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.2-next-1610366040-85a1a6c6.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/DzkCRA9TVsSAnZWagAA7xcP/1jmhDrm9xeP9J8mIoJh\n5V7Fhn/AFA5Ke3HAM2UPRoKHPgaIv/5DPD3U8Defz8g+8Ep5ZMjzhaoclo/T\nOMGvBn+UeHUkSWccceurfhMXkcWwNUhQ3ztLVQpB3Kb9+P5HE7KtkuqbVWpb\nBR65O8YISmI66A/FMPpQwAHsTZIRDFmP9nksUNlcaJjZsH54dn8YifWtyAxa\nd+T864ctX2hXXgdehONIZHCp4FQ/JIPHYcQkTLraaDAkGu2/LBFWa9HwWoGW\nvQKVlX6D54jzw6XNntkf0xId2prnpcxqf3Pv9Et9xcDdFq8qfUIiFEv69ILQ\n415wja68gfoEK57n4S3mQ0EEGsek2rXiPUA+w43vUAkfoVxQ7vllEOH0baNh\ncLhGCx+F29wnXdFoMAoNKdeXq8MfqIxSGyqqL2HZgf2FI5S56G5CYME9A6CL\nLZXdCufzUjyg4t+EZoq8uABTKtO/TeT4TyV+oYdr7QRVl2eAgmDzAsQHqjwp\njI/bAkfER1lSZRfPRi0EtlXOoUgQU8DQxzipXvsJdOX5sn6aqPdSFyMEds61\n0LxuWSAMoLlFUMLEfrCtjT0IJAbP0hJSlsTJEdsg0Q+6VVBO2J+pnt/0avAV\nKyE8FOFR1uFO9DxISE1kthtFTw70Ph8oGzth0gbfrPGriB24W54YFLKxDHSk\nLZvi\r\n=Eyiw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvE/vw5mrGCphaAL947koOxaOp5ktoxFKZJQadAkpOqAIhAKq5op+uFNM1+7fpZXclbx1hZYRrnCLa/+eUzTqJJCpN"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.2-next-1610366040-85a1a6c6.0_1610366180383_0.04366342549503033"},"_hasShrinkwrap":false},"2.39.1":{"name":"@xdn/prefetch","version":"2.39.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.39.1","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-z5GZDGnE18SpnJxrTXPoH0E1v60QW+oD7oNpIqjoJqHOgJDcFoT0CbDUJyqnGLHB/CxSNSwswsXsIhuxrNXL9g==","shasum":"69d276a6dd781c118f256b6566370a23db1489df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.1.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/D36CRA9TVsSAnZWagAAN/wP/0aD7bPoL1CbnTxpVW05\n1/UgYdp8gyCfDO6sLrG4mwDKwqGCbJOsYvOJsXd6Eeqkm9q+PrateWi1hgg9\nLbHpfuznMuWe9Rp61FsMGvYyM159mY41xKuaAubYjpa6m0jvae0gK2Vdpsla\nHnvhGZg8DkPrSaHVT8IJzdT94fZf7VXbO1WyMOHDtlMnfk8p03AgiYUNiX/q\nQcXDMlFK69AjKRw6kbMGEJ3sdgK17LsOY8w47RVlCd4hUYGwMFCwkvul1+Al\n8t+dWEGx+ZcW6JpoRRZNCaw9VeqMI2e89inLZWA6btbi76g3mWGXe5AOvLvO\n2db1fEYVQlLi/MYS9NyBDFbRCcwqMCYkyr1AMlzZ5Ge1V0DwC6gkKUT+bK3y\ncQZzXjsK/iEmrKxGHEyLnvZdBbYmQi3DPh0Pt4lqAgYGdGTEzExbliwz+mTN\nbfEwVvME77yV3vYl2z/Jw6N6feagnbFtKje+VioTpiM0MziEmV3CdLs3U/Us\nxCwNzwqoKWupgqOYa5OG7F7NrsfT6T8NDMSwzkPIFPFX4Q1a193+Ia1i6nJ1\nF81bSukyv1NOPOBKN1O2KGs2bMX/fkFcAorVphRlF6A7xaLqzryFELyvgZZi\nofK7OqsW6WB1hAK2W6CLCusMM1EhMjxWPn2gQwQAcuTcWc8giv9teBGt2btZ\ntbm0\r\n=ZUw2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2M7aMId6jLO0uTovogP9SajaIEAdN2BgbVIimpjm9EQIhALSjWVWDGCwkU5ZEWIBtw6wc8NQs9f1dKRiCK8IMZJxm"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.1_1610366458096_0.42456742854008866"},"_hasShrinkwrap":false},"2.39.2-next-1610367601-eb228fd6.0":{"name":"@xdn/prefetch","version":"2.39.2-next-1610367601-eb228fd6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.2-next-1610367601-eb228fd6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.2-next-1610367601-eb228fd6.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-w+1HYbnV8T6QDFMdSBNbtSrmJzaVV69RWQ338k4yzhhWFyhC7V0GTn4FBaJcmbJ+igbY/iy164d0gtreT+LnhA==","shasum":"4bd61075ef2eb2b804929544914e29810e39b70b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.2-next-1610367601-eb228fd6.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/EMFCRA9TVsSAnZWagAARmoQAKK8TAmEH0ep5dWH+ooP\nKgQL541Ocs6Emll6IG9FpdbfzD91Jo9uAFiA2OCd+0HCe3hFO5NhHQvICtVM\nrgXwEdXPOnb2SDYbjRSpkAn+GVBHTbiIJWpMxaW6zwNyv7y67beJLk585KV/\nE+2PIH02YVqTrDojDhqVzP+bVxYUlVbsXW8wX83FyOKsCF5sD3As3Y/dCBdN\nDA0df0zhXyKCogf1iPouHEtmZBWU6SWvxynPYN61iTEJjtrBGneBsvc1pruJ\nZL+bjlc4mvCb3l/2uSSR8hII17ynBGWomz1QyZ+xhdXMtvaxjpeBFN35GGvS\njH4YTC2Zlt7QuMPODZ+10z9eJfdMFn7XhDUFnUdT9OuYyRxz+s2pZDV+Te/S\nfWFYidbhJ8eaAgfrSndXPthA8k9s3hBh8xt3+3YYSH+BicSOWW5NKmi8YKVu\nD3SBS6Prlb7dNHJu89+O2fL8Hvjsxv+692mp4LFWP4QHMHEPDWDSETFTUXz0\nQEaOoygF5LuZbadJyrFB+OZ2f3WgEfb+QXG89lKdz+8sMgbh6RcodWAuP57+\nMXd4/ugOkTxh33GkGvaED+DwhrtnlfH35311+DjoO/f5q4/wZ522Zg/raToH\n55DtBq82EF4BWFEL9qW0Lg7v2xXcE+Y/mmCV8LE3IGElUO55BKbCOrVGiNtz\nHnVL\r\n=1W0z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHv2AHTWYMPuk7J95lhDJDnlHmyeabFcCxLVJCx4ujerAiEA/PEuem+PXYIj7vGcM94eVJxX9SluMDXAspV3zW6Yl0E="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.2-next-1610367601-eb228fd6.0_1610367749438_0.22609736401975855"},"_hasShrinkwrap":false},"2.39.2-next-1610368698-f25e1d08.0":{"name":"@xdn/prefetch","version":"2.39.2-next-1610368698-f25e1d08.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.2-next-1610368698-f25e1d08.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.2-next-1610368698-f25e1d08.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ejIIlpwxZXEfXrZar6gh5iGht+rCN2MHnw+FvLqTxtiXUcxpTxnwfqdYJWGoLkvu+UqdkT82Otd50PpJ6ffJ6g==","shasum":"0fa531badc5ebec9f1fcb378695672d5a16ee3fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.2-next-1610368698-f25e1d08.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/EdfCRA9TVsSAnZWagAA734QAJjAKzN9XlF6hnt7AanQ\nx231k/NQ6FOSgG6l3nKtqfzJuc+OwPD1sOrDyowDImwDsPaIa7a0p1xm/kYI\no6DvTb7lhXYEwU0adcCgvEZPME9N5LtXjl+wUwiNiLFs0KcyZa01TbR0qlA/\n0u0gwbfuouXrHfULil62dnyiIPyLwVBRmHa7Z2bEWqL6vzEP3W04W/m1K7Ye\nE1E6AnBe43YNXhXAswgvirRNhoEBCYYFg7BJcbaGk+Y4JVJN8qFBPrZhSWE8\nvAEVyjDMd98tuPFnWWAW6iA8AoPk9/8vhcuzxgce7TDYrr6NPZS9jIp5/NqY\nIHYSFYEvuEab45GTG1l9x9Dx3GArqJml40F7u8PpOnXKptsYJO+YD7dQRNk2\n9LF5elgijid3Uond2NQVnRzO7u0jTa/p45/4FiXZJEVo0DRTJKOS0RRZY6FZ\nA6I1obLRIYA+oP2qu1i3Sk9nA2PE63cgDtMoRypIIPIRcSECOGxwkfyFh/zd\n/zDoB1ktFV8+HZztiEo1j0NX80XB3CZd46Owd7Zowu+7LNzmVtDfXg/HTY0/\nNqUjhY1JiuRhb+lVMjVxDfI4VIHqjYonLsvAdj5xnWbjOVWobR42M0ch1bk+\nQ2+mK3N9QZcAwgafuWw81bzgstkF9ggj7eoMBGMUMdow2ADQXHa9+TFRQOOI\nj3Df\r\n=3VuB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEhqKWbJwfdCWBkD1snbgCSESEM3cEw3Fo6cooeLVr00AiBHWzakJJNSvCThyC43/d1wKygCGCzp5ajdjGzrUwTgzQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.2-next-1610368698-f25e1d08.0_1610368862781_0.6715462542800439"},"_hasShrinkwrap":false},"2.39.2-next-1610369344-08a510ec.0":{"name":"@xdn/prefetch","version":"2.39.2-next-1610369344-08a510ec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.2-next-1610369344-08a510ec.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.2-next-1610369344-08a510ec.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Q7zkEiivZgdBVyl64fjZn10zO3lxvmu6ET+9qsGDTFuWMRKJcNoJIEFxnoGSjr6vTVRJEHVAJHp2dX/X8xEH1A==","shasum":"657de4683f965e0ffac662e75d68f2da571cacf6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.2-next-1610369344-08a510ec.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/EncCRA9TVsSAnZWagAA1S8P+QHQz4oNno/75pcBz52N\nPk3e7PDSwOMlL8wjK3cKt4Z/3jRk8SKWO/hfeLBWLdWjpwlhRUeYdlUfJFee\nn3Zp8jw2ZFxibY2hTBZ/FUkBMmuuybowZp4zDmCAoBR0/CSqfkxQat6X9okN\nU2xjFyaAD+npbopzDg0tyLICqTbWEVMQtdbR5l8IoFbSUt06xcekO7z564h3\nAfPiIH/JZSp1Vp+W0WSbxco6p0eWVyb6JCxCeU+FkM96JC81CL3CQqCtzi41\nFG4xUnaFq0ux3T9u8JcSSgElIVMXZeO++WEerbQEFqMxxS0MmekefyPM7dUp\nonVL+niP7ZUvJWf5DbvzeDS1f0C0fFKjI4c8C3yfFb+4qxbQ7V2yxJimvkPQ\nRIYFWikpxev3bny559fAKqKmKe2aKM8LKVUKGdrhRAZ3aKR+yH80q0OVCeDB\nRYFw/FnK404xUf57mOd/cuI3csdv4NJxvThnVPnif+JBZ6si31KjH25RGrn+\nUOjl39m0I8YXllM9m4+GBGnPXxcW267VewpCKbnKRBiEMoUtPlsGXeCn53aJ\n9enwwMXwpSd8eYl9QZC0S68zSPZaQzuMgaJnI7/2+cKcTQ1D4iclDkoX3yV0\nLAd0iTI/deXcERBODhEFnLSMTYgQIxsJL+YXzz6wE5cQY4QRS2g+tMjLzUn3\nAHCv\r\n=QA5h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXWJhrRRkW+GWHE5ZoA93iybiVxOkNpOlIMEEVTRXKtgIgK6uN27iYGncmQJboGM2MAHprOGQqo+ChDA04mPlSnZo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.2-next-1610369344-08a510ec.0_1610369500151_0.6705849561689736"},"_hasShrinkwrap":false},"2.39.2-next-1610369583-1af7f612.0":{"name":"@xdn/prefetch","version":"2.39.2-next-1610369583-1af7f612.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.2-next-1610369583-1af7f612.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.2-next-1610369583-1af7f612.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lHQpoppYotOGGB1PyZY+k+ir06dwAlHsUP6w64I7asVomrDEMbkodDEcKLIY2k1WOhkgG+fdrs3l/zJUOU7UMw==","shasum":"66ccfcaa2b91ce52f2535f3260b589fee83afb8b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.2-next-1610369583-1af7f612.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/ErbCRA9TVsSAnZWagAAiB8P/jYf6eKppxTnqSaNIgje\nrjNYbX3BrSgWStc4TL91W+3r8Tgxcm28poP0u/iJ6jMu7y39vhsFtQmzGg2Q\nqzCl+UY+gyqsYgEWdycywFKXDrVIBeNHyeyuX1io5SNWwCI06sUyVSAkmfvf\nzWUXeqZCUU7lQhBKZCA5VVyKFgAQ70Rjw9PEsJQORRB1Jygl75zBgoGe9ryF\n0ajMbszWs6fsMtR9Sf/RnnUo5h0S1Paoc8AqcWHHlecCyCzp7QNTD+SecP8r\nJZ8felod3UofvMn5+LptEI0T5NWt75XY/tWBHdA+iRCPdctQLa/L66aPkn7r\n4YU6bzYHmgjwZcSpvTrNAZXoVlV4fM09qiQzYbIlOam7NvSrY9/jgmBhREqH\nWvXX6cwxMgDJL4IurRX8TgifrsE2XT9LWB4tEvwRwglD/OzJRP7LcWdtumZd\nBEDJHAI/cdbPyMxxL5amPdjmVrDJ0ndBXApfiFyUPYriOY2SN9VpFtwosr07\nVOp2cE9Z0muUlD/fZxx16TjKlBgZ3xV5cZ2pbrWAcm2sRnCDyZAmHTY1xHPC\nYtbZKPkLTIPygFvPNiuZuHdeAtDasr2h95sPvUkYSMiqkDdjlBnsggqVDgd2\nXFr2RSmq5QaIOysr+FPtaO8A7qQRS3k/0eOmg8ckgumF0r06QEDGVfpQjoED\n0nrD\r\n=Riut\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEbUzZIV9Rc8Bh0TF3jhebqOGTKkXAKtkL7S+c1t1E/gIhAIERsmJC8fuckQOgBj+/4y1VTdDcrC7vLB1w+vhLe842"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.2-next-1610369583-1af7f612.0_1610369755456_0.2133384386324766"},"_hasShrinkwrap":false},"2.39.2-next-1610369634-d80c51ab.0":{"name":"@xdn/prefetch","version":"2.39.2-next-1610369634-d80c51ab.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.2-next-1610369634-d80c51ab.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.2-next-1610369634-d80c51ab.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6MFptpB2fY8zVrCsRrsqxSy7WDT2PVfeAccdYBk9AJGp+ZAUFzIyQ9y1OO7gdpFT2+0pJ28N/IfSaXBzD8MohA==","shasum":"96b4121e075d2a52fbed1ab706a3f033d559e825","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.2-next-1610369634-d80c51ab.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/Er2CRA9TVsSAnZWagAA8/YQAIJwbEI0fTs5B0dNh6Xh\nTp0/aCdPN2ulchm3VN3D9NpaBFnZLP5kNLhVcwkHwbG/GR1X4hBAGzP64O75\nNowo1Dnpn5UvIh+V/50iWEAp+NqFGLK06N78ncAxvaJvSgGnoV4/Rx+G08Tf\nJtM3ozqm5aMv2Babts1DEJJruZ2DLKHvolnZe+3Xdhmj9hMPLTkmAO0dyNjD\n4wPjcwtBgjKqYF011/LNXghxndsgTMvPILpN8RN4jKzDoilM/X7UhhvuuTez\ndn+4TGjElxfcXE8gqdL27DiNFJXLrR5seasfbIvrbUgKVzHZDeE3TsSSqI4B\nlTdFG8JnlMXZ6OSde13Qr0mIyg2tb6mKWGQJPVx8hYL0wsHlFZsiIg4f1NzP\nq/dlQIq+bMjZSNEPb/5sjkEgG7Um5ihTWO3H4D8n0vBoQ+WpHPbJxqXUNoiI\nHswNi/Uf31BAloOnHf1tYejgMlZ/Df3w+GzsDaFkaIlJ+I57WxLE4dV/XNiF\nRltRc4eXm8rLrq819Jcw17SAYcO4iG9XZac8PGsHazLFrWPIJqewOC8YIg+x\nISxYqKM8bLZ3WJFfEDsJ2+WNU0uVMwQ6vm3iXZp90ccF/MrwLmqZgw+y0sky\ndZTngE1ZP+85K0R83tx0Clj5Wr3oG+UeTYo9n9zKnQUH6VbGU8xx0GG5VQuv\nJ3FN\r\n=/HZE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCz/Fu5x0KJdidAp7ZYCWzhb/2IWtHoajTvyWxNv8IzhwIgeXORngXNmNXZOEQONd0Z0pYnGWkyArMOtlxZzjMSOlE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.2-next-1610369634-d80c51ab.0_1610369781546_0.7594454259440813"},"_hasShrinkwrap":false},"2.39.2-next-1610372310-9d74c31e.0":{"name":"@xdn/prefetch","version":"2.39.2-next-1610372310-9d74c31e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.2-next-1610372310-9d74c31e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.2-next-1610372310-9d74c31e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zh22Ff3QvzUpt5yiAuO5rpOtwgiaOiMB3juFZjpSFqgiAx48n/eOGmicdxo4gWTCO8/sjVolwFgQ2b7bFYN80w==","shasum":"b12823b37739c52eb13bd5b87aa614032e488d8e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.2-next-1610372310-9d74c31e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/FWRCRA9TVsSAnZWagAAblUP/Rh8zNWIC0QN+JaB9f0f\ngPn4y9RrdjTcuV73DsD2duk/HmPq0PzowNvGMu3pc1lyuIWBUGLsxvDBu5FL\n5uWhqwCC7F+Y4M7hae89F8vrXqm0/aew5uRhiT4xPdo8n8/vbacfK/MvdU5O\nQtnvj+mm45Ksuw6cS930Zz0YRK3xHVyfk9qu+ZL1jVeeFO2x/BIvfUXKs/zz\nF1nBQFh8ye5CBY76+jEvgPD4e5FYiCenqa9R2MekOwMoU/3DLrKfFxMQrV3I\nnMrlWW+Zm8Lybmkteb2cIiN8rz51/GL62NdQDgSXB8SNPl1TQCegscVbm+mM\nwVtOvtF5IFcLP4aAntIeUtR+v7mrplfXJ0K+M14Ki+4XbTJLvY3qjOrh2TS5\n7rAxAcPPadXurZHqeTBsd9shwPYz4o2AjNn1AMt57MLyzb62osp3d/cmeyfy\n3qQHjrxy/VekBEadYDFKwcvOz7Lr1XciNKt9BhahVJvR7WhOxtq4EBglfbdm\nHdar/hF0SuiZpUshDuKAhDaEqU9ZeBrks4CoRpOxsbMcOVQkuVTN5mGI8iHl\nLpHRAk02UtE8HCob4TpYWa0/ke7r29LO+Ce6SbLmxJzQ6lNYAbXt0zO0FYHZ\nDR1PGKIk/LtwAsgRnIHTQkV/NJNIqKckgu5tmVLTtaMU0Cnh4y8AooeV6EnP\nB99M\r\n=G3z/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE2PxaoV8nWLTFrWlXIoLEtZWy2ckRGsdVmXRYPUBN1pAiAk5mB2icOCTGKW6AXfNvuD6cWoyHvdA+KM/4LyLu3/jQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.2-next-1610372310-9d74c31e.0_1610372497200_0.7885565296423815"},"_hasShrinkwrap":false},"2.39.3-next-1610372389-f2a20d9f.0":{"name":"@xdn/prefetch","version":"2.39.3-next-1610372389-f2a20d9f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.3-next-1610372389-f2a20d9f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.3-next-1610372389-f2a20d9f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aZ5zOH/9qZYxP2AFGjhLeUL6Fm7UnqbCT2W+wg0dIvqjZP/ac6ozizjEQoCYn+/drFcKLZB7VSkRnH9Ty1FYSQ==","shasum":"ebfb95191141f4b1ee878c18e11188f0a087164b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.3-next-1610372389-f2a20d9f.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/FXGCRA9TVsSAnZWagAAuf0P/iE5naUtUdiROh2I0EWN\nIO0lS+wAQ3/5zllPZkJVkwCqzb97QKYiFevog9t+gpZcn5J3zMWmUe3Gpnq3\nU7ZldzxzE60WJqHLa9M5fQlenAe59Jaqt12Cxh95R+5EXnFY8JSLLy0ZbaPn\nFwi0ffeatrZ2w5hc8ZTkOuJovlsiCgoDGMwL+qKXJ5PPEcm1LGRYFz7sulCw\nnjrOrp5vXN+P/VtdE1DHzDd2g0zH5QzhfBuL07r6GRolbEmtP/dsJ+SFbg2M\nnN4Dovx6bD8XL+1iHlQENhjtGas12o4oNyUQntRlpGRbTXppVVTsAWlPHjkW\nCvtnA98gDRIK8IqIo69LY+S7gMQpol0CWoMmKWbgwikFIclMkPZa2S3bD/Du\nTvo7jJy7ftnzx+9SOH1u4AJbq+8IKedguY9lb9OJm/G60qSegbI8bAwWtrNp\njBKrMUyapEaLSmzaP8lhW2lCGCS+PTmHrEHtOBsrDVrXGrbOlsC/KJiK9nqa\n7t4YexXgyDM/xGUyvHuLf4G57DJbY/Rwx2HPaLIxLMgs/obiJa6M9hokNRi6\nw9AWp46JHpPMnpJRZT8C5j048LOs+thMdQOuAtQyiprpNknQvrHM4tzJnBUs\n7fL9nu9rseJFvMeWyRfVx0ZRI/cDw7Kp9q4uptsYP08NwMD7YT1cocRwW85X\nWiNb\r\n=17Y0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9CdO9SdspGn9eY+IoI85ACR/oHWH3U4I5hdoHiaMfeAIgCu6S6y4iXHfoXIGF39Zg+y4+Whlxlz4eI/cgEJ4uPL8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.3-next-1610372389-f2a20d9f.0_1610372549452_0.5105915994981649"},"_hasShrinkwrap":false},"2.39.2":{"name":"@xdn/prefetch","version":"2.39.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.39.2","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-swwpZurOKAXv5Ay/Q8Cwb073kcxECI07wFViMH2wWVUXKQh7gItm4o82QGUGOWiCkX6w5W+U+ZebMlevpVv2jQ==","shasum":"506a444d4708417661d97415dbc3de40f7c4f919","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.2.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/FlECRA9TVsSAnZWagAATRgP/RDI5k1Kt6mGoS4NScmG\nEkq0vemIMdDNDGPWl/JLTKgU8hEHFo1k0x7tQQEDkZLfJAAiQGWPvYfZSqPK\nZtdzmEJnamNMe621w06I8v/KrqTL4b3iiqlQ8HdnbmhtkzMQKrIDl/9XTXgq\nz0JyZax6pd3VUaWw2dQYFiJUVf9o3KToq7t8r0bIkBdboCwteWIkw2CQLGpD\nXfbtm2RAaAyoHoLxfGKOIvFObr+LZi8kpmQDlo1rl09opIaFh+434e1oOHzQ\n97Vc1ugt65mdrT1drBLQJZZLOEu0T2M7Lm5AMp6lwkREtPyiotfgzmy/GXmp\nx3NZtqd5+6V5BCedLTnnfTxrzrrRWtfMx0FT4kTdUO8a57RuayFQdSgtGfaD\nxS+VncrUgHNXSsMzKGPc32Jd4RTFpJw4BH/510LJdKKBhrgU6iMVu8qfUHPb\nNHgym8qGRVnWhQ4fjJir8e4203WunSw41euyEltZQlvLX2XtXTdFgNrPgmHG\n4hqprknntd49iH0hflzHpqYLMqaoa5ciH8IcdYkAKyhvdKZ075AdvdZAhRxu\nDAAm1OVCapoJrTtPZpfm8YnrilB2ukpMEpR2Oc/Osv53RxawE1IvRvJ0rAs/\nuRxG6EW25fc3+P/k8n2lXU2yYoqGwokoHa6lBaN3hT6MCw6jZiT+N3I0VWgt\nGf46\r\n=I5Ec\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjMrAYJbGtUodTnv3Ncn5M4yaNLCo5Lbgm1gq65U4hvAIhAMIyHpx5u/jprFPEzs+f7i83PHf4Ms57GLHfiaKtYfV9"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.2_1610373443885_0.6540553236809465"},"_hasShrinkwrap":false},"2.39.3-next-1610373773-67de61b5.0":{"name":"@xdn/prefetch","version":"2.39.3-next-1610373773-67de61b5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.3-next-1610373773-67de61b5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.3-next-1610373773-67de61b5.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KnVGa81Db3VHZIDEagWnZ+27RvBxzZd9+q3jJybwJNOP4xncqFizR52ldRSbIesWSFKa46zeDe5nB2lsHBjaVA==","shasum":"285efaf46f379209f0d938157a96285e68c6cbee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.3-next-1610373773-67de61b5.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/FspCRA9TVsSAnZWagAAAPMP/0Wi7rIaZVSyodSLzH6/\nzcUr99woDw9J0FbutfPuGCcVpp8tqi89S1Isb/7sNOW/6ZBXgP96vAaR45K3\n2Zm9y7Mt2qnXa2nBX88+X/cpdaKFMYYw0MGCRNf/EjYnOdJNYayyNR2lUw8/\nDZZ/zy0xAIbIx+drgXJtXeBfdMJye6eV5mYXsC26pgIrVTCXYpb0ccbrddRh\nrAd5mVLp587g+zDJSQGVFsA3g3QRoVxSr/Nu7bmtofSzSnyQim73TJgrmGW3\nd1/b/4j9euVLa6hHoxurtNBIie+zY2Wydh6pDTJs91pfz8ZUcXKpjyLIiONy\n5+OgNb67ePM6xHs/suyh/zfBxojSP0VvMOjtWKUVzocPfPOqzhtnvMDrHhx0\nrWIpv3957RPg4mPITtKx8mxOZsI5hBRjt3r8KkvHPTX+UMj6K7jynJdurdUZ\nNmCmcypDHK/uhMiolaSRk2O650ZNX4siaWpr0h7MSC/tbXgFcqQd3WHude0r\nl+kwyWDi9bhUZjQkcD5kTFrNIT1iRS52IOXoh36X7Dmr1nTqbd3lguOUTpAj\nNLp/jm+8txyH6wZmy3eSVuCetBZWlmQGhaOyzc3WVGlxIKTxeKPigZYkksKd\nxrR4Ph78JSTvhnw85R66F2JQ0TX14zgTJf3A+a1dQMZpWcymARtYcd87t3hU\n6ZY3\r\n=D05t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmVEK7Gaj9+AEgDksxAfRvS1j3GYaU+djeUUkMDkFxZQIhAJewV52f0wV8YMxHJ8bkAGIcw1w50ExurBWzSfkidT7N"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.3-next-1610373773-67de61b5.0_1610373929214_0.9295076156379658"},"_hasShrinkwrap":false},"2.39.3-next-1610375533-e2371fe0.0":{"name":"@xdn/prefetch","version":"2.39.3-next-1610375533-e2371fe0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.3-next-1610375533-e2371fe0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.3-next-1610375533-e2371fe0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-heg6ooxOBcXuWwtun444SbQMYm9tnjTzseNE18fLdwCPk34LzEOwTmrygsT6aGr3q2BuDLngPeu8GzjiYCNL2Q==","shasum":"57cdde7562b322c6063cb64ba93d2df47b652156","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.3-next-1610375533-e2371fe0.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/GITCRA9TVsSAnZWagAAfk8P/11EhJPDUabvuUOa2lBh\nxIKnI9G0TYG8ee3Z1HM6RvycDGfwPGjQc0+JP2wUpbEHHdVKn3NHk3vOOkbE\nOted1qeiEZCEF0SUyMSInnujWhXNqg1teiPgSuuo07DVLoQLXtlEt3Da6PGK\nTh2eyhr6+FCJO9ZqSgAzI+D0jIkBks7kbNm419Clc0cmQQuAwjrkF3hSSiPJ\nnQ5DUMU419FRbuhAzlWju3Pn+Zdr3Xt2esKplbvuSimKPFx/MTYxDsfWyhsD\npQ+zBH5SCjJDRWU4KOYKaFBhhQkBp7Z7vU8eQz7bjCw1rWk27IJ+q+l58y0W\nOZmydBU1nd61zQ/fjJRhpAtCxqEkVCBHqWbHdp4Nljg0xyfo2QbEgYkvrwEz\nJKd77zcNaB9FXheqN9hxVJC6O01/GFK74SI4A2KVuZclGoqzPPvKsrXhrNC6\nZtE1kjVwYvbRVDHKu0pkqbGsn16OK9rQDEeJbpTDK0S2/cpqS994tJWQY/Yp\nXLKTQxds2PnSZxP7G1X4SzjS/N+Tq2d9rsdnGU53DHFmglFBjCPXNTCYwfSx\nfBlk+Zf6CmBsreD7wdtE/bML0+UOi+kHvrZTb2I+eL3HlqfAWT5AQvg0DenQ\n1nl2oSrRnQv7vfkZm+9s3nSW0xABnuHN8WaYqERxal03NrCa+TSnX91tG40r\n5/Yu\r\n=Le+J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICkAitkJjXT/dJHBS+zoiWHvxMNwJnH1ldaIPsNDyHigAiAhMBYWiVUfL6ZcYj1NQ4QBNTWDjhfn6RW3BWkSt6/l6g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.3-next-1610375533-e2371fe0.0_1610375698578_0.7335730699170668"},"_hasShrinkwrap":false},"2.39.3-next-1610376118-702f5aaf.0":{"name":"@xdn/prefetch","version":"2.39.3-next-1610376118-702f5aaf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.3-next-1610376118-702f5aaf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.3-next-1610376118-702f5aaf.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KyJrgjLKuhEt4ntx2olEQ4OaUnlEFjzqp53tPBS83AB6uO+AeJ1h1rC9trbAFmFEBBqACOX0PYnZUAnfsbXAGA==","shasum":"7bd092c7d2a7230c38b454ebf976c1e0e0ee5b47","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.3-next-1610376118-702f5aaf.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/GRHCRA9TVsSAnZWagAAkLEP/0cJllGwXQOlRm/lDhOm\n+GTPVAZ3oawu/TaZl87HaMSvvnSfniaQ2U4vq+U8iJfCTObnPCOxJUqraw/+\nIYfLeMyzTwBudtHAUAEKbvpA0HT5sPdqdoznOfbcCDfn/zN0813zRFlP7v7J\n0wxhRmquNq8DeZLDAD8lHbnwr1O2je8b8E4cbcSDw/S9BpIzetaRJzumdGZM\njZZ+6qATNJUHVHCCLLPThUn3HMWOOKhPNtIiTlMPQerzoRMnMdo2bkDOjZj0\nlNR5s1x+dOsLjbe+/9sHQmwELGha4uitkBEQfVSou8KBQDSRwKZSwoEAtDKe\noh/YFUfewTI6DzaDBYD/E8PmYkME63qJfVjZDyV1fIs7DC3J8PZiON+4CMmE\n3X/SRSHoMGx59+mE25vs5FR04xezoopC4uy1TK4J2SK4kVMGaGS1dgHl+QrO\nc9j8G93ODE1b29T0m/8/Q5070N1DH8ce1PmVHUCd0Y3quL6rBCHvrZx+iPLk\nOFlZhAvviYy2Yy4/R1BFS7ytAdVCTf0uBLSkdswOdn62ktR7rMYz0KzEBT6u\nIHU2C/jOI+3fu97vJYgLUy5+6vWa4RALlNpHm4G3m9N0XoaqOIJq2ibyhMKz\nBTBxo7fRl3BEhLBeJmQpESY6M0e+0cEUCj20uvl9SZe+tbzcb8KH02a335T3\n8p0n\r\n=LCfW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFZYm9RT1dUaGmQFySrhaW0GfkADk7CcePNeucYSyQmAiEAl0xq35g4ntxlR1qBk5vArkaCanedMvgoydRMzjodyhs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.3-next-1610376118-702f5aaf.0_1610376263338_0.24099384977931404"},"_hasShrinkwrap":false},"2.39.4-next-1610376834-75a39ea7.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610376834-75a39ea7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610376834-75a39ea7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610376834-75a39ea7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vMbUmA3xwn3Z+bIkePn08VW3jMciBC2A8AaqdAdDkKxca2vkkG4y8hgOOFVCEEUMmD3Q5XssaKQIYGmGcc+STQ==","shasum":"5e119f627c4d2e8eb7024335ec6eed682f478416","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610376834-75a39ea7.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/Gc1CRA9TVsSAnZWagAAmSkP/iMzQldFCsdQM5otN9HW\nXMgePYLtU3hLB3mKhWi0Uk26mVNFIfSC9BZfH0s5YHSI5jPgagG1pfPiwywF\nVaycc9cdmwW4DNkAiNLJdNcvLZka0jTzasf7aunGjQznJdQ1DJm9ksPYav2b\nkzYoa4DrLfru0gSnAfUQKmswTSspjJ+IzKnbm9UYabLuoroA7wvkBXz6qD5y\nNSHnpHly+8KreXZJzZllOJaC3mmbe+ZeSrvT4YU8x4iBK4L1FzA6435yDDoN\nLAIc/BE8Dkrg4bEMedxdfeeL9yvCdjV9PS+PSUnizAabqBSp4ThVoNDXPlvu\nyUEKBgmMpLu6X5R6X6B8ijhf3ctvDOJY26lqrdZybjWRzA+tAF/D2CusON/c\nk0oB/TZpy08rTga1orSFCrEnBTur89csR0VdSmCkklkSUlgsex4cvHfzVLo4\nwx+AWUQYsISiQ9dqcADDrN856i3VXjKn60EKJPc6dYullq0zEm8yBWvJLvzW\n8aM7yexcW0z+aNEzbK3m+kz70ItJnOhNljTUdz/VoJM2//nCJYInAj0kjofC\n8ctt/71ZAvH6nFIdQ5nmIDZmoBj6mTX1WXoYJn32F3ehA97xKXWHO4NAK/me\nIheMsVm5wy+HeXwA3P8YRIx0tZSFvLz8Uart7/7AtgNosBV7G6jtw9oduQAc\nDbq2\r\n=Fe7I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE/VzGUTYe6BQ1CXG4U+7dL3jIW4Bc5LE/FWYv2q4z8fAiAz8OiF67ZbrK3NbIpgz/WPeeqEBYk9+tNhptJOzhnHsw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610376834-75a39ea7.0_1610377012574_0.8940203200480579"},"_hasShrinkwrap":false},"2.39.4-next-1610377425-3d4ed63a.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610377425-3d4ed63a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610377425-3d4ed63a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610377425-3d4ed63a.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-1QVfoNKrA7Wjcy/9egWjUb8nyGA4YEL981maRfMOzEKVrA7RN3JIKFpxw28T2AXVuRY3VqfCf/OpVKTBVbSYQw==","shasum":"b64226470de7d74b6c1f5e5b6074b7757e315ceb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610377425-3d4ed63a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/GlxCRA9TVsSAnZWagAA1W0P/2ieTXZQTlrxBm/8/hMK\n0cH6H3UUlFRHkU1FJJrCq0WPIk5qnilGww7ThgXmaeRivbSYQViV2vojvHjo\ndycKfcgre/660WC+gaMBedlbQA+AFLmw0wWhsvloUUC9CI1SJXsdmSg8XmJP\nEv9GRJtsjH3ZrpKPtYYzHFm3NA3GqbkoY+kYfLUl1u3k/wMfOgpI7bX06s8H\n5UX4AkuwFDodtG/qyFk9j7gXmM5QzZltbOvNhbrSrKlDVNPGfIo5QoyScVDB\nH1yzlRKoW6n0ey6thyoY7lJpL503xMizpoGDx9d2NFd4iMnDRj4r61Qg6FG5\nbKsGzijr4fbYprcbDaltAt1ZpkSPfPae41r+3wc7Pq05cJ81ohqt9R/LqJnf\nri3m9TY9hk97yaZS9oXf6MJFU2FWKW3bQ7V2NrhRzZkImG0DkI1r5HI/gl89\ncBx3Zoa7wdeDvNQfelyhKJlxY+I/e9rnZZG87j6bdwMN/dAwmR4KaZeBGWac\njxh6TR54IPw2yWuo9drExrvmSnmCISlMhhsl77Usf/rgeiEB7uu6RmhmZojo\nDbX0g0g7Mu39ndHOPBYhFZ3XPvKQpi7zN3hv7Jt2wW6bcFAXv08r1XiyR6KV\nH9ToM3baZBCwhsM2RVWqMjzwoTGBZXw3ZYZLlwy7K5r0IUtLFMHVZTERw7Pr\nUflX\r\n=fwwW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBHWHyaVFgl0bit/ohtS6Ho4Y3jBVxbgamaqoJln19N9AiEA1T9a7VlN7nPzSC8Uh7s5y9gTLJKEEVV4PHrcXgKXE9I="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610377425-3d4ed63a.0_1610377584554_0.6207416923113453"},"_hasShrinkwrap":false},"2.39.3":{"name":"@xdn/prefetch","version":"2.39.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.3","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.39.3","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bi970nqOLLBv6g15WmJX/UN0hQWjB/pZc5Q3xC+BkcT5dtQL1OzlLqls7PRd/+9Ea8ZuXXASFJe/KX6sOPEyag==","shasum":"7460fefd109106d05d32bb31c53d1e66e2f08118","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.3.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/GqpCRA9TVsSAnZWagAAzj4QAJc63+wY2LLVhfLkqfwB\ngP6OVz+9PN+yH4E0WVFvPYEKoB90DC551hE0asqyD7JZflZvU9PvmvIQmB84\n+LTr67aJfI7aDylAjZ4lSY3PLlJK9JtZzUChMltmPIIhIpMVTXKgvs6NfQJo\nP8i4BxVQv1McgcNnSfc6CGoTVjsaiHl5ywUxyc5KWOaXimd6V47R6n9VaJMz\nBfpI4UQ6yPyWMn82tHfFXwQBzgi5vsJSWWGLoGfekQe5EWr4xnqutZgUaQKm\nqG9P4lM7I4Ifk3k9Wyu2F6Uq/cZ+mqENP1ozVYaAKqjChR/awEda0ng9tFBn\neiXvmT+n4eub1PpSTvtNxL8bSErpL5W6Ns6Xs9pOHbbGq5pDU4qxJUMm6FNQ\n8xQ589NAL2x5w6gdFXcNaBb5E7/ReLBtF7dVIZqc9AyFYb2+5DZcbT40W+8A\nwd18dQe49UZV+eB4/AqMHRAlyFJWctlHsdaXVLeXk2agXiSJ2QhKignNxTfE\nIcIZp+q7owr9EOedQV5ONxmeZcJeVpdaHMMPFcelL+tddVYgm5doeLZ7KFlb\n02yf2zIPDQuW4stj8jW+oyMsDPtDVnKNAwiPdfhiJuQitJI9J1xjnDOXa0GB\nA/OtuwH2sAM9Hq2wUKbzQI9b3pKZcqHMZFFsAPsmv7Q6di7VNgQBx64nh7Bp\naCsz\r\n=rL4p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDzPltoIcLFGyH0ijGK7sQJ6RF67yWLZkWS9BscIc21tAiAhNPNRLME8FNJjc7V5aU8KWJV+mg8efHJJd4pwl+Yp0A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.3_1610377896737_0.804167110202096"},"_hasShrinkwrap":false},"2.39.4-next-1610381328-f32db9ad.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610381328-f32db9ad.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610381328-f32db9ad.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610381328-f32db9ad.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gW5uFpN0qFmlJ3bKyCB9S2QE6Gp283e77Rg5t++rw294bIQEyOU9z+7rss+HbYr8vo2TfQ4BWGKXPPnjt1sSxg==","shasum":"a65ac93d02f7baa17dc43c30ec9c3dddf804e45c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610381328-f32db9ad.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/HimCRA9TVsSAnZWagAAmjsP/2QgJiXxv0Qo0z7DAWWQ\nGFysWrWU0XSHrfU4Z1PdhlS4dP4PNHu9u7pp+MPvLx5JWhk0fyUOWFYUPgpE\nXrFRoUcRVKxNfIeOphvIm0i7Lsk+zK/SiOhxoZILQyrXnDasf5p0ypM7QIOR\nIk+M8mdCP9RzDd4XYeigSmONaM9YJ7ZwYQ8E8mjbZZw0m+AS9S9J13AvUUYU\nIy+VDw+JUenNtWoGWwcOEgKsZUL6ep0vz6Sl88sIQMZDvTd+Q24h1dKaa8Ui\n3iq5FAttwGuZl/GeQHAf/ShM1/WgkkfCQrBc6VzrxNAeo7yv8bW2QEuig3gI\nZMFFqdPblhulYPCL+hWNvwaOg8rdFwUIQCJ2U+NaHgVOatG40/PK16aRspa1\nUfkgx1qale8P7YklrlnswMpF0pru2ldmodRS3II4AQzkt1MhGmaKC4aQhVbt\nf9AG6oxpS0xK7/7rbqgH/X9Kt7ks6V0QQ73SFavfsgPUXFJ9CA870rLC3oLu\nv76jkmlsCeSzuxeGKvdWPBgyhZMfoGcdm6nadLY/jbtIJeeZ6o9xcn1Vl4Tj\nNhm3AqDYvjDT14X960zwexN1kVEFmbnS1tlqdg/AxjdjHmDCNQJwYYH68o77\nYle1BzZXYeNRuKncWXt+tepPQJ07/n3sWiuMALKFOtxXzCHIJ/Qwpzk3tXMg\nnqpt\r\n=3PUw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGuvJzQz9i/cLh4QP3rj7wp/y/jCQopHi8Nq6xJRbt9EAiBO4u0lId0Iz53/PdeQlfraBP1rIDxS1VGIa5ydCG0ZMg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610381328-f32db9ad.0_1610381477501_0.39091469784444444"},"_hasShrinkwrap":false},"2.39.4-next-1610387919-d96b22fa.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610387919-d96b22fa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610387919-d96b22fa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610387919-d96b22fa.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZPdXtV60bhdwBVT+LRzAkJgvu/3UIWMPZK4kWPqqqm4ieihFGQa6d092mdCCNohj5YNz3iEpO7O/HqtNcqXTNg==","shasum":"5cae07cb9f03587c160ad34f019574729a969e21","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610387919-d96b22fa.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/JJqCRA9TVsSAnZWagAAwOkP/AvSoz0cR1Z/als3rG4Q\nf5hT6mOnBx1xwo+pEaDuphwvnwyd0nBtbgj6F1Wv1OSvArIvbQWcFq657OKc\n3uIkL6bjeC5gPsqcOL42MuDfrMX7Jm3+C4d85FO8hV1XaXHKoiJMJzUe/wYH\nxNUT8DZq6MJi2Aj57iDzyEoDc8tRPBx5xp9jT7BspMI8MmwUGuIkAKAJwuy6\nxeRNLH4WyP7bOYaGuRYpM/TxqMuaDdmWxyNeJ2Z0HhFoc3VNp3sW9eIwT1oL\nyEEI9Zl5BhRVP8V/TOSUMAO79gt8edMOBi0sPiOobGOqbz2Vq12Cep/F1nyn\n02GY581QmIzfOucU5TpY9yL13p9AISwlQVusNygAoy0q0Iirr50v9CQeqp+s\nrDC+KnkwcZg0HnmC5LawpgvD0m1sh7KuRp/PWEs/0MXD/B41jNb7f8/kXkzh\n/oXz4fvGJ9eavasgfVrp4S3ibgr2bumLj06xWIsXAf/KITyjGWuBshOS4d/n\nQne6fXyeLymbFsTzqIguQtigoEL2+XUS036Klw3OTpfFs83K3SJoymoInq3W\nwWNoXVy4F8bIqU8pzhkF60VYkt+8HirpDgKcHO4dsP6phuSo2Mq/19QhQ0dd\nkMGSmmB1Um602uAq6oJ41uimTrqnMGCkjbaAerxa7j/nYeME/bms7BLbLHu9\nN43T\r\n=oD4e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHc9FY63DV4gilAbDqaTOIFtBHFJJQIdR6T2dxnqW4unAiAEAeBPiEVIyV0HSkMww7JS++Vci+dvIafv6zmo2sgmwQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610387919-d96b22fa.0_1610388073977_0.01716692927414143"},"_hasShrinkwrap":false},"2.39.4-next-1610398806-cc080287.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610398806-cc080287.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610398806-cc080287.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610398806-cc080287.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Pk6HOye909U5s4my4342eAzPXAx1F/I7W1dumkz9FKzxav1ZdKrNHe6wXP2kSTYMK9dEkzoPaBspvQ832FQogg==","shasum":"ea062ac1e37ca07d95d10fb5300f6c7e8b46708a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610398806-cc080287.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/Lz3CRA9TVsSAnZWagAAJDoP/1LkRy5Z/D711GHbztiZ\nXZb3KaSOZKqJQXtBfAlc6PeFoSA8gUG+jQ9Ld077rNebozZF8uYDquoipMGL\nOAPIeRuUv0Bs3E1++tf1SDRjO+MqdAwk2gJh7mAEROEd/Btru2viWY+3bGXH\nCEpV/azbFlAyf2Ysbzu19yaj5NKDPYiqflc05Chl7xNna/rL3Dp4ap9JsA3F\nATcDRavxJf3w1cZXETpaP6gdGrXiOZMFH9pYEG8fuT3tSWU/1MVZTONVO+RP\nCGJ3x5e0ZJkXTh4Gw3d2p9JDaTmC+LWA8BPgPCsqsbotOrrm9nVA+P1RvVgf\n3Xviiyog2I33eNBAUbmXPHpUGjMYZB654XrEZqV8Uo9M325aAmJljvNMnOMV\nBqS4k07CnRa2BRnvmIw7HYRc+QTbDERU3MhmXELQjfKKKw1PNphVkJ2EbtjQ\n0hBtrp5bOGl6FQ7GZI8hP+10FfG4vwXkTkQ+O5OD5otakKXdqmaqDXhzy40X\nkb+i4FmRPaftmCc/CtNTlgb2bvoLaGf5Sr4Ga91AbeN5pMJB8uxZf96U5yVd\nwnhb3AE3vQCSu/e07oF8KV+CM2jLLUFTi2rRqlmr8QiCs3xR2+kxDTqihnGU\njPTuMigw4HaZEteb4OGoXtGE9yMznkbvBdj/Y/YiYBxskeeSRPpLrkLB143t\n98Ea\r\n=LWuy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCysXn0QRDC9oz5kf2oR/9Gh0MQFqQvMVS/WXSDQQKYuAIhAIuyllwXyNXBjk/S9Keo80PT6qV4TWPbDg2h3EtyuGys"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610398806-cc080287.0_1610398966662_0.9358781387629376"},"_hasShrinkwrap":false},"2.39.4-next-1610445230-0bac9898.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610445230-0bac9898.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610445230-0bac9898.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610445230-0bac9898.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-l8YZ0RLu9GRko0THTSeF7z8gl4dRw4lohk0s/9hNmSdgmJnYuzp5WZSUdgwUETe42E8JzlZRTaCmL1x1cO3RsQ==","shasum":"bdc2a65c568762de650307750e2600a56a8da767","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610445230-0bac9898.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/XJOCRA9TVsSAnZWagAArzMQAIvW/pA7KYFQ3OuNCKow\nIawfJZ+3OnwaK1LxZHNL4xRmTsSQvGdX/yYF8Lv0T+b9A2NdVJI6pzKV7p6U\n1RufhtnVg1ws2ymQ0wtEjP+laTK/v71u0LTl6zAh3KrrKNjJoTWGkqe7AF6A\nLM7z6mYwpeFNu6DfIn6rmw2bF0xnjpTuJlyScOmG43SximuN9geHnHrPiBcX\n5gDWJhRhd74Wr5xKvJELdLCNgEbi7JxJjuBKWMEl/24gEni2seDMllC0eAqo\naG9M1LAmGU5CqKMT0JEN7KFscOzP6+eqdR2iCSvAKxQr7xudpsrh1fq4XCiY\nBDjSddhDU5yFqiJ1sErLVYbqK2KErajSoEUUFoQjx0iu6TrOtGuvC85QbASZ\nWFZLPfay5j/4c3rOMBvlZGp7pbVdnKCE3agScH8IEvMYziAkX0nWCge4DBSd\nKhjUloGCml5D4eOoj/E4oOfArMYCdPyn8oDVuPI4U/9HvJVba9y4SFz9jSDu\nAHGdfkvTHeIAR8hKrJ59PZGNqZ/oqTkLn7+09a/thQin5uesY/A/1ESBaCFN\nkhpVqYV+x5Cc7DcK48J2Xogl01RdU1khB/SF1Y3plwMBpkCwYesorALotkA/\ne10bhNHouVlVbry4F3Ll/FY5+SPeaPk4+KoiGqVVr6l3CaS6pud8/bbMjewX\ndis2\r\n=5Hsv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBFWcwfJkPnctenh1Ip60fwBDJcXzFo7zVu94Wf+5YT3AiAuMJuxd2oP9IPqdSbadKNgdg8fm9B67r+89P7yzk2XHg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610445230-0bac9898.0_1610445389975_0.29934239082870495"},"_hasShrinkwrap":false},"2.39.4-next-1610446358-0bac9898.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610446358-0bac9898.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610446358-0bac9898.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610446358-0bac9898.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CjpQh5gcSsJcHE32W1vDnCkLH7kzZMbbWenZtq+7uIzLjSLxgOE48n/E8KZ1ugqr6hRTXHKpCS8RmGddoSkH2w==","shasum":"ff4f8db338632c593d26fdbb5cdfaaffd87717c7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610446358-0bac9898.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/XapCRA9TVsSAnZWagAAcIsP/jNqVU862OEKNrizDFKu\nu9ugTa/eaCWz+l8B7boQNqT4V1gseCbnHuky/ZNfyFu+3bsSES2VbzM/j6V0\nT5x0S+uTvM9NtI04GUxYjFnCII9LWgmscGNS3F/6afzak11552iLZLvN5O7y\noihmc3QHfSFQMkT9oL/ebx+354+EzvYi8fAV8jr7O/dwd+HCzODhyF/LRwWl\n9kEBwArV3nutlRzFcd1mlJi96P+rRel6gBM0jkEqvrEUPj1/GxmqE0ckO6vp\nA2RiNbxsSqs6mMAVRpAFW2c1P8jgvb3X+gzOIl2HvM/ay/ODUToKFEChyY/F\n2lrlBXUywtzVnEupprD+192SBcG5bIrNrGqa2eMehsO9Y/RWCCKlNUfe14K1\nXuzM/XwMJCFeHvLRmh7LNHsHzLoqqgGDgU2+b1kGZl+ifCwlux29Q22p2z2+\nGK4xulru+dg9mHBZyIgf+e0cOq6lI8GMx0Qp7OnprmLDUAh/fXkFaduSTwUY\nQWk4+9NvovdEnZ9BFF1kSU7GaULidi7/yqW5Luu5He4NFLQ9Pp9XOpvuHelK\nQfwP/R1DRpQld/rrz5NcUZAyzebRY5KjOWVooa4yS51UDIyXRZCGgbx0A3y0\neGlVo+d+BNnsXEhlGHCSGYbTz+qsZoRGf9DkHhbO1cR689q6P/iP14TSQrRz\neih6\r\n=Zub1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1DV9ApBxuHHNDTJ+N45BGTmbbR2as31eVvvu36JVV1wIhALjKGvcdKuR4ZDyoMa17kHIIVTtlDv6Ksbr3tPPSL9vv"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610446358-0bac9898.0_1610446504704_0.5604006498892604"},"_hasShrinkwrap":false},"2.39.4-next-1610454348-0bac9898.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610454348-0bac9898.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610454348-0bac9898.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610454348-0bac9898.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4i9nN9ZPvlmsLEgeFLmVAxhRbvgvwnr0Mq0U859DRAu9qwy2LgBZyNRhiOsYIScyojwmIoJJdyMES8a+Gb4gOw==","shasum":"eaef389fdd4cebe5fb8f6a3c3e1c1cfe1c5d70d9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610454348-0bac9898.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/ZXxCRA9TVsSAnZWagAAYjAP/jGX5lfClRsR60oS9kiO\nkdHChpOeZ3x8AwUHARcBon8vrhsMPO+w3Dmz3vEZzfFaTm9c6QttjF9tQaBp\n0Tp2OgosbhEKlgPYY/BghVqTx0XxG9bQNa/gPZUD7tnWde2WZf7LLeAorBIi\n3zbpupS4ywm2bWIrfQK1qVcs//YTzO2626i0ycAAtEeMM0aMIjDMQqKFcaru\nNxi7pP95o0bOLANI03JIg7ANld5AkDVNxwF/tIEsPSiZFpB/mD5yO0G5Czus\npExd/V9IJ9INSXrfMl8dsl+lO8L6MIPnFkavcEzYFiZTgWQKzGNZPtVc3Lc8\nyBpA8Kv37vEb78sSAGnZbWeU78KiFRpZKe099OZ+EUGAX6ppj2nnOfqyqQfl\nRQJfjnmd9WGJcJqkc6XNFKMeAr2+nOJ1O8zVs5MeaT1Td0C7uW9KSXodT2/o\n3yDMHaF1qFjdEiH3Ssl1YI8ZXXDcnjgp/2K0JJ/UimJKzUpYGaXTDdB3S4kD\nwDLe9rIwmts1JiyPWnBRLjh9gRiRaO/lV/og95ZimLT5nT0NZx74AfCgB3i/\nyeeF0LphuL25+Tz24wzT7m3CcvYlf8EuzSZ5vx3AGQiEqp5PRJ6kBKbfrkV4\nlIvbKMZ8o7sM2rFcuvinX0GoZM7qlIwkShtXbsLwEqMhPldVIscR/QeA4fg2\nnapq\r\n=eqYk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXtVwMtarI8stKhkRTheUn7pR/1BoPodk1zBuFAAPIdQIhAMKQMa+DzZveq32oyrvmsKPxFkrirCAjlH+ceGc3sAAZ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610454348-0bac9898.0_1610454512851_0.9060383888840158"},"_hasShrinkwrap":false},"2.39.4-next-1610458048-35730d9f.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610458048-35730d9f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610458048-35730d9f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610458048-35730d9f.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-R49ycyqDvAD48wspsBPNviYVVODLgMwJybNx6EokmDI7w70F1XtDknD5taAECFuv5LUwZ+61mbM9ZuamEjVHsQ==","shasum":"a4fa087da3e64751de3f8bf7352eef792e8a2ad9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610458048-35730d9f.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/aRsCRA9TVsSAnZWagAAz5oP/3kF5vJvCycgeYXAQvUI\nV8ni8b2vvlydTJLfZeVyinvH5LSNLMI3kmBRCb5PSjHmLqsT5bKB5DznjK5t\n6W+LJbwQEmrea41AqxHmiKTVTuQN0/A6E5qf9tGmX69mMHNL+nq15cVQ97OS\niH4ciJsptkFBHL1rTV7AbhVsj04xOeKClwM9qw+c+1UR2qnePqrjv/VPL2Yl\n4vmfkMH+F1zQ92TWw8g/Ry1hpcxW2prbT0yFpAieav+WOG7PKN8TB5UHxirV\nzJ1WLbylDCRp1aMt0WBXJIEOO/01R2QKCMnhBxABCMSqNc0UXNDsz8PK7liX\ngv771QJwf9JANmIXEqesL9BJ2d05fVkCE2aHx9SHWwAb7dtkGABbZ0htmk5l\nwinNvviU2iKNjfPFtPfmW/vZW1ib6+JTtql6xQLwpB8gUlBaThiLeNd8yzEK\nI/pu6ETLOeOksgxtOAdFpY+JMClUGIHaBUkWcG2yFGJPXQD171d5hX26Pv3A\nSZKCoMwk1i2ESHiyaPURst4beFK9m1Cf02eM3G2+j/IowH47RcyhmxEeg0Lu\n9SlME4+nXEXspDwf7h2z13v8dsfkDrei/FlyPWABCfW7+GnSkb3kDThXxd6Z\neTfuFp4Io6YwKOsumEFQu4ea6og1EaF96ylXfQMYuIbDzMhap9zKIfkzcyH9\nq6zh\r\n=kVKs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAsE7WoMaejdvme4wuu/HBlr39bhIXFLcY5vTQE+HdIXAiEAhorIPHBHGzbSw0eL4LWZrB2o75ZFuHaPkq71ZroOusw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610458048-35730d9f.0_1610458220166_0.03275892497543165"},"_hasShrinkwrap":false},"2.39.4-next-1610461943-ceff7603.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610461943-ceff7603.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610461943-ceff7603.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610461943-ceff7603.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yr3qDVFy8SgxTap0/kcDnUteYWVnF0akzaFE1kOXSwvJUvx7ROarNP7YCQ/kFPNdDAxfmZJbxn7+1oZv7fbl8A==","shasum":"5779dfe1ff1cfc36da38041ed5791ade00d80251","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610461943-ceff7603.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/bObCRA9TVsSAnZWagAAhi0P/2ZlYelssOHtz6S41JwT\nt1ZVnTxZ+rddAwqg08kx1KVvVw+rqOLLw+L9TqaZ4rMeV75K6Espwi11+a1j\nYDXdRraUQ+SzyiDdrlzF9o6IcP54l/vW1rDBzqnH+x0O50XzR2lBj+RZvpBU\nQrH6I4aA5oF4aEViNF3aJV4+lltBWRhqJLW7otYfk5xiTONqc1s0opwMuYS9\nbFWhCL82SM+mverf7BdJ7m2ksqJseA8YDQq2MADmKwsgBY4mb4AEvMa4KP56\nMw5JckZaXhMWKEocTwQYdAQpowqrKfQnDnrayykq+v2Jpiw7Fo5phTsLNRNK\n8Jfe0icsEhw3UhROZkutwWw0NYy+Pu5ZyTKTifK3CpwhTq5vaJR88q92KxQS\nv7D8F91b1n32SdAT+wmEdlzSQL52XUDiWNB1XE52Ir6Wo+9Nfb+ullKnn+nN\nNmOfWD5JgmqMuWh72vF+Vk0hSYgAlZDqL4vDKjpKFG7+EQr5dVW7vBO07TRM\n+vczel82V/Fn7VoJXKGuUsffZmqzrFDjVV64hFNQeVNY01KC7MBkPma3rJ2C\nTd17VgipBkilmzGmmhWWJYy3uXVGhkQH5waUQ3iIJchPLoTtM0FA4nz32KdZ\n0+CxbDzxP0rj2mki4AmLHY+mHsDCA/pSn5kZL5Osu8tljrIaQQl4ShlBH5a2\ncOje\r\n=hwD0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB0YttFmTlKPpZsNCTGqwYsSQVMTzk74wa+pHCVFfjlvAiB1LWJxxN2/vSeuqn7r91jDW80JsJyJ4CCGZACEXs+Uqw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610461943-ceff7603.0_1610462107280_0.057401846452666216"},"_hasShrinkwrap":false},"2.39.4-next-1610462423-4268d45c.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610462423-4268d45c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610462423-4268d45c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610462423-4268d45c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6LoB4icRvQMY7WifdIAklNo8XmTt+gFhte10MnyJPCV2gTZ4XTK4kU2bvcSLNrKTY6HYEto8be4UNh6SPtFxrQ==","shasum":"0e9b578f8e75a5f84a0beaa0cc6b8356f51bd011","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610462423-4268d45c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/bVrCRA9TVsSAnZWagAAf4AP/i9Zl5lIGxrGlKcfTOPp\nDIHic0bmEVJYAXWUCqyCKlbsYNazgSjefecizoJ+FkGj/54oef/i5umJOF8V\nUDt0rxer0iolzf4TO1PPYhskhTLWw5pluZROmexSmqJ+LHoNNwzPzOLEBy17\nPBRCU+qL4/k/G14VvMAiWWsCSlQzDhKlyZZSeDdBiJDXYqltHa401XesFEIa\nqXuDO8nzpmnqg8ekMEQdjT/9EYPxd7zn2AmGU7Alhp+/5BGJgmsUV01tjaIV\nOzjZcYsr7YNRJuwdhgfB1FrJUoTAhiOaRMO8TyRkYva6ILPCmW0gBx5Vsp2J\noFgEfP0ne4XOre4Rdo+Z6alp2tMd9T48dFM/EiIOQFnp/Mznz81ukE1A4CtE\n9Os3iOuSfaZOR8Uw7st0rSTqjRv+euPFmOqKa++5GqGGi5aA1TLh+Jw877ta\njjah0Nr5kUjojpDQhWT8lLtf13pwwSjwgAdWGwZuQoYn361PRgh7IqdlK9ly\n8Z3fdNpFj7BsYHRpIzwIqaDHfFdh9mpydQrDe+9nGKmxD5VXT2VGVKHsFUSY\ngHJ5DeaIlcOUURyGjIPIOOlgUeBQl1t9qD1MNqVPpcx4PXagJ0T+JwGb67XZ\ndX1awN0lQHk5FrEIhduYUwEkl6k0i1WifTogMrOG8vWM1qVTjZ6dEhsMMwAP\nalnZ\r\n=A2gZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmkLhyE28RK4CGzoJ1YTg7e3WGd90U2n5I3icFGQYC8QIgLQXWc9Od2Ttutlqhb8nAhHfVAQAZY9j7Y+9ZOd8gJUo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610462423-4268d45c.0_1610462570486_0.664344456693658"},"_hasShrinkwrap":false},"2.39.4-next-1610539074-999d50e0.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610539074-999d50e0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610539074-999d50e0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610539074-999d50e0.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-uknh8MM9ZjbSNJH9tmqkeDV4Z2ezML15ZFU2i0IZSYmSDfKG2p1qE1cLzjBQ/J2Qo7opeeOfsTGtdCnUyd3bDQ==","shasum":"37f9e1f802637be60b19b28a452ef495f4bea775","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610539074-999d50e0.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/uDUCRA9TVsSAnZWagAAqmwP/3QNRpngiWmkNd8qRORz\n3cpUzimVVLQXZ53Atx57/j3fZp03eJxtYCXahH6oOLwCBfkf4I4r4iQUiEny\nR5Z5WsGQ/aXEbt1NotHSm/FlOwdKE8mx/WbGQbeyw3HEDam/FyUKgmPBCOmm\nX3fEKyCV+xclfvWd5+RyGGG/dFkLXxCuetkVPeLn3X58jOFYwH75j0ypvtOt\n9ioKPkl1cVzXmhar8wuiTHqVh6f/dzJLhSp8WlUlKNFYxPiz5Em/lelShuZT\nNM6aVKJ0Eecc8jmiQO1hYV6YtZeRVl5tAB4MIr/DrPljAI7j9NaPYhGH8hCY\nYbyZc+NqQDQ0BFEHLVy68lf5DL4BfYoB7bANl3N9mBz0UHVI5gYbrrmHsBeM\ni2NSorFQRIigwPT09V+5BNb1Aout4CBBbcKGvpyw2wJNv4lerbV5wdGuY8zQ\nZLBsWgNt6c+1vgKFURWxeuyTOFIXbwvlrYZ3vFWoHgN9m3TqRhDyI6YR9RMC\ngEUJH8qqoCKX5mQZZectZNl7gPG+RmKAW3RR4rMYAboIA8WCcA2QJHGHN/uE\naQAE9ocCIsBzrDUK8zPQeDliIgY3bg7t9dWExlBzCHH6Vi3g/kUiHcw9jzBh\ns1vEDHbbOmqkfrvRO1Z8wccM6//QJSx4UUEjVl6dwRu7FvZ//hx69m341txG\nBDkF\r\n=/RSk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC8WX3EMqqe/udOf0xGRzaQHAU34pkKmGh1C8hQ7HwtVAiEAxxPDPrK7EE8Elo/yQQ39PaFZ7TDveZ2VpklMx7lr3SM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610539074-999d50e0.0_1610539219910_0.43166725784162496"},"_hasShrinkwrap":false},"2.39.4-next-1610540266-024b9151.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610540266-024b9151.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610540266-024b9151.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610540266-024b9151.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-loMF4RIqUDKGNlXPkYOBLdVEZtLLKyXA0UFLKZ6I5rkIp7Tjx4acFCISkiisXS5YSNPzzirP5vg+3nEnwApsng==","shasum":"cd1341c8b9666fc86d26daaa8776db39b9c9e657","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610540266-024b9151.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/uV+CRA9TVsSAnZWagAA/2MP/2Pt8I1d4xcL+dejN+rO\nXzgL6ILnya539KqLE+8D6IkCm4qNBIITANsjv+t0MNaAR5UGWx1CsoJ1pEgn\ns6NSDzYJV0F4UFqcGAo/aZ8lVJtrM1suSB+Bsi/R5ycF1BwSGjr3mven0vw0\nybHu1vid72G4XgpX8+GqkZmMQQczLf9hQGP/cQ6Oi91iUqjGRdVsXoMHNTCk\n7zFEOXAbrNNwaBE96x67r+Y2+ncze1pQ+IzA8eOFvP7Ezz+/k9Ri9KYgoDj6\nbaFNRl3JdbfzIWYS3DDXp3+xs+BWWfhTJbiRwgnHcdgHXDAxi67ogleZCnz4\nqWnKwI4XOcEO1P4JMDAvJGMCBpuCOX3DHIqe3kUU6CU8YSQZVItixZ7bstmw\noMQUIHjkjK0evXVCDzSS2Z6HyqYrzrHIC6AdMsj07n9LW8Alcpe/b3hYb0NY\nVrxEJcq9BrMUNHRYSDaVg/8B29BwigeFaD8lOQhTV97KgbTqmua5eif3fiBk\nwLdmaQopOmeUDYxDYhhWWr3MMfpobBSkVoWoKMDHgvqWALIMDgaIienZab39\nN/CqixkzB51lufhBSm68NjuNWbRrTSvraXwI4XOh5MnigkR0aQl6wXW4EPqD\nKu4AYrELe9OPZ/hQhm0McdVOrrXDkacb1UaMvKfvOormUjlPLMkapeVNYGZS\nmIoT\r\n=7l+U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1xs2AEAhdifU4d4OBJT5glOjrbHQtUZSZTA4qSimfpQIgSDDpkO5V56JjEG7qu5qPlGebgMFjAhua1lz8mtEKwMM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610540266-024b9151.0_1610540414011_0.3513966892512963"},"_hasShrinkwrap":false},"2.39.4-next-1610540359-5a18d3bc.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610540359-5a18d3bc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610540359-5a18d3bc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610540359-5a18d3bc.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-A0JRtYyE+9JXqeXerUeO9LUMEPa6eysqUC/U0O3KsSawHyztdutIVOuUm6ykwutrzMZgCDYGu/nkHyncefl88Q==","shasum":"32a7e5fe5d022476e497709e50806d0c3bfa4b61","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610540359-5a18d3bc.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/uXzCRA9TVsSAnZWagAAoM0P/27Rfs6Abh84oNgyAlLW\ndOG7zW9Ly4p9v4mZybCz6X4lxfGFrpXvacHJEUofM8EltAzcpsJ9z14alwId\nnntj/ffiGEWE5Nhf3zQOWRmouzrSVO+/DZ9toTx9ywEV/WhFSlhf4+gXBXw/\nsiKRCc7RBq70+k6n3X10wezk8dtLzo3pNiXxryRKklLI9vUbCmmh4zNzTh+J\ng+paKJ2tUqzcsMprPMhmjlbMzLvZRQ27089c6+dgvRWZf7WL/RBDTpMKNEqc\nV3HC7aS3vXcmIAaWJEWhIVX3EQINBNuGHJVPJr7uLACtaS3fGhV4qXoL8WOV\nToTiCZJWGJrZ6BrPOWJV+XjOagHCXnRBBb8SEpE76zwyK8j6IVTWEjHQzZ4y\nxqS4YzJ9fRsdNia9obBBs5GSa3mG+QpHo/KuzVh6kmGbtc0Di4yzVFjO4k0q\nxMxFpW4WfwbNv0WrKuybyqEeH47MS92jLsRHME7hZGDTiYTVfgBEc0WKlebk\nOGccs7QSKZuSs5zodcLSP/apVaJgAyRBrDtg641sR60Z3E1W9BOsyJGEFnZg\n2D+8QdMAe6eZ90F6tC6OcHmCoddHfCmqDMxdzgmEYjEec+I9VopADFHCLOY2\nDQAdJAzf8gBJsAjx0+djhv8xmlp/JPQPI0EOQrVCX+JZr61U6fn+67F8NWvw\nMRcJ\r\n=GsPR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFzeCH3eDz3TIT+ueV0sbhNxAp9zgvX7R5hVkrsf/LrEAiB4rXs2C3Rc89TDYDG5fbJqDf2qAH9tvgPdNpez38FhDg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610540359-5a18d3bc.0_1610540524314_0.423090558945761"},"_hasShrinkwrap":false},"2.39.4-next-1610540589-72385396.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610540589-72385396.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610540589-72385396.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610540589-72385396.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-gX9mMqwK9em2jOwcU8RX33d2w4ipcnwfKozYqbTl3KPK0qVTpeD033w3D8nkzQwNnk8IqjTUVTFZipS0kLUxnQ==","shasum":"e5f8704ebcee0fa8a7873290bcd4da51c8dd91a0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610540589-72385396.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/ua8CRA9TVsSAnZWagAADDQP/0dThN5sj0GvX6q8RIVq\n8xEU9+kl0vKF1k4rSEQybq+7d6Ljr97ABnUlVCNx0hnQ9QGO6DblbRRj9VKm\npLlPIp9+SwpQukE04d69bYuVWRIvtbcl3+QUyxeA50vQTERZogdzkDr6gQLW\nzclRxr8q8QguGbEA5dnfoLMD+7mmNBLM2jq5DFGxJpSIR+J2heY4UIjzaOFO\nemrtLI3a2gE+3N+iSvLi1U+M0RzGGuvcCeZHXczh5XT8lJwRQEPXtqqB5ZHj\n0EwLudxuU1WoeZzsq73YjjZOmd/Wc4HSdkbILR59iN/nZIcNke/zDY3Rf5jA\n/AasZ56PROZPgNdH0UVNw77MuC7oxrE59rDxGUw52lCXrHeVPqgHC4DmZJVz\nwSIKgBgusfgLhxWhCSKnQaQUi2yUcPgf+P8bqAwfEb3539add0otIpgblHRA\nw4D4drCs9tsN/XW3pTU3v6KBpqDRqqisoivSFhKI6NamTC8OWf78lmHOzXBo\nwTeGFY9xEvQayjPNEd6n9ML9Navt6L65DkpnvZCMeEgWXoxKdgKTws7ch457\n1kxBv+DL/Oll+d+Ul9dVxawKceuloL+UhQjYoD6Cl8D69RSUrXZ3JUTPiipg\nidIO0HW7tI/3MY9usZZCsjnpme9U6Ys9wLj16JNQBqI/Fr6CrrqbToPypt20\nEW6T\r\n=MzK5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAv2PmETe2a68oVU7/9bu+QLzZq+Iqj+KMsA7hQLjnRfAiB0s3EPXn2IGikmNdmy4r129Qkd9KueCYoKnPDJmCRohg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610540589-72385396.0_1610540731731_0.8429479545801448"},"_hasShrinkwrap":false},"2.39.4-next-1610541051-49dd6b9c.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610541051-49dd6b9c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610541051-49dd6b9c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610541051-49dd6b9c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-iclHEnRm+bc8FAy0BlKhG89jf0Hf2FtVOeA4yG4iWhw0ea+WvxYF5Wn2QVf90pVFayrt6s4xUCXZF5SIlA1/wA==","shasum":"5f5ea1e70438de8e059edee59acac9d00168358e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610541051-49dd6b9c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/uirCRA9TVsSAnZWagAACEwP/0FOSAakUR2afXlaPnqr\np5yqyk/gJ+pxMuP593llmf9BKs+hLEtEqUUUlwQO4JnN+f+2jpkNmg742mPg\nyBxzN7XevdemM0Zn8PMS0rCT471Xs9uRW4buaLLWcQmONclqMbpMha1HF8kt\nEtkp/TdwJWrpUmKPHjogCme/C4FzMnSEcdssAUJ9ySJM5zukB7ozpd6eP+JS\nKp6khycnm44Omv41mIZxqWfiKmrDF5k6hJ/UW5uqV531C4mO5oN4JPZM2lBU\nuC8Jxm25L1s50LZKOjk0rNtzZR5ukSQT6UJM3ceTjtOrzyP7g0xaEiZe8/yW\n1UWvEuxWh0iZNkJ9q5nY1JmITvCngXGfmj2IJPY00H4QaKtiBObCMB9zdI3G\nyJp/UmX563P9RiIoRQdc7UxeS2FMidHcuO6wRiiVWKFr8LNVuXyOCpt+8mOA\nYAkujB0cncABqGGBjQ/RHH/aXwyDC6Wi20K6mkgMVyZffbxUZYM0ERVmHsoR\ny1qYrKluCT2A+OM3+Bkf/rtYRpdfHIuFe0EVL2+ejt56EFMjl9fvWAVOO6yW\nuo4pk7oIsC28PNIzH+LtFuItgSIUpbCZUsFKlTAWmmj0O7cZ3HPPV6QKhv68\n+YaZZnTlBnxgHX537QqLH4g4/OLacwOMlApb56DsQW9Y5CAywpF3v8vWic5E\nhRtq\r\n=ytYa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiV8EE2J7oTG8IbQEzlyekm8O0jwPoCWv56ko/wJZ1twIgC0doz/aWOvA10xWnqgD/Shpv7Rd2ttJu1K8H92FP8Y4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610541051-49dd6b9c.0_1610541227001_0.4109533162893386"},"_hasShrinkwrap":false},"2.39.4-next-1610541612-1a90c150.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610541612-1a90c150.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610541612-1a90c150.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610541612-1a90c150.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-nUR/SPNCOx3R/sINJqFcoGBj4mpHuh4F+huoPLi6yaTjpHRj8ySD/OyJX0+z6R/eDNyXbWXQCeVP1CAeo42dLA==","shasum":"4d8dbee400647814986fb39c6ed36d92cfbdf98c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610541612-1a90c150.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/urUCRA9TVsSAnZWagAA/YsQAIg7hGhWSmYsC0VuOMTD\ncKF3cCnv6+1tggylD1e0Eqn5C0zy9xbI5obfaonufHdy/ZJre4bhhR+xIY7o\nQcnr9+WmF0hFKottKAJ/agE2E63fnueTKDNPBbXqe8E4/hFfUiZhlFhwzZBA\nU7K8LEKI3tn3RwZ2FZLQ1araUl51+kowlK6quZGwW+3U3pAM+QMFLhhxzq8s\n0Cmy5PPMmhRzX+i5WGBiG15tvFx23c6JgWoySQ+979YaORtFGGhAI5zbG/SV\n0lO8qoXaWbLNiG/exUyQAHgFesYWmMiby/FIx/0z92y1MJYb/MNTge+mbYhB\nCnLUcyra1Va1Vv9c4P1NoNF060d5Zjb9vP2b3Lbp8iYWUJQUcXqywTSZZFEi\nNGyLLoeQvznfDIYFw9XL482zxPpd5DMteBfVLnoJQPDspnrEc/XOjky0fIPQ\nuexj7/ldnw/SqJpmTgpqbQhqPd4LHSqsvoqezbOS46aYnrsfIZyRSN/RwZ2J\n0u90QH8HmH8qP2p9N9T2x7K64ovKpXY0nP1hEjFiq00fpBHfC/YnhyGY7Osx\nQ6eDifPM4TibjxxJqsvwYrHKfZlN5mGh+p0O9yDQJb0s6XYYmgzyjLDYAFUz\nqnPR6UE9tslGHyt5bvASx1di6vGx7kj1aT2uEwQTAto9ztIfE6htPEa2pA7n\nRKNX\r\n=QO2G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQgJffcpVJ6+VBL1LKyTJm7dypKL+v6gVEaQxdaFwVyQIgSf7ypAzaAo0Yt6yrkpiFaKqOnxIsRyVyZEI/kDAR10g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610541612-1a90c150.0_1610541780185_0.19015911295758525"},"_hasShrinkwrap":false},"2.39.4-next-1610542475-49dd6b9c.0":{"name":"@xdn/prefetch","version":"2.39.4-next-1610542475-49dd6b9c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.39.4-next-1610542475-49dd6b9c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.39.4-next-1610542475-49dd6b9c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-n353b/GlevzlqP2UOk2WfShuA3e2syQIM9G/VgCAgJq5FdzsUTe9WmAuYW580sK3OgSbS5Uni8K1z6L8fenEig==","shasum":"1fa5625a153ab36831afe301d8e7b85f814f824a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.39.4-next-1610542475-49dd6b9c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/u4hCRA9TVsSAnZWagAAt+UP/30gs0H8YC8Bhh8F3r2P\n76jhsf63ZtJUuBhSUTtazziunhzegru4jgeujpXeUXwjDSodARLivXY5n4pB\nStQp/qevwMo1XMu98mPkrN458A+OMs/vL5MJqgU9RPTQT24J4cDo/Xuk81pg\n9Vm53CbPpEDU/Q+HMzvj4sSAwRTJHb6ZxsTXAkwwRfvy/bDfn46HB6xYl/SV\n0fnEQSYD4fCLwL88LEv3BBEimYhO/YdgwHjLIGmC2GfB5GQQ7vhqu4dRJKGD\nMNc9eMgDpb1OFxE8a+SzlyQ4gzDaHlkcRCfW9Afz3rL6EjwIyFr+LC2e30w2\njpyStTM3QtGGJntbz1zRkHWGtnjNeKUFV+p2ijc1lDNrpk168dFs3ln4BVFb\nkXNB4crTmkm3R4C+FFFi/fJUjKRreP8V39uv3E4lFCGFcGbc7rqjmda34Pi/\ngk8eRlQMsijoVoY+L7IqTbCyoTn5OfamFa7OCOCurqjizQeN2DwyYlzwcxpo\nj4MVODbFUg03gO5zvK7IAcZPjRpa272YQUduKhrDnmhaFl9bppJTrFs+3OY8\n2xxpbFoQTn+d0ln6uZgigURh0IGFzK8E/bJN08WY7AvIdEnQ4usTnFgtt/bG\n61LJMy09WHE6PTCF7Dl7ouSJTgTPPvZFaq0oxnxdHcYuS9dUiD4Tj32ulqtD\nbm+J\r\n=2YRv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZAHY3KEHGDKQcJmiqKJMYRfIGZRTrRl+S18kRm0mpqQIhALxTV9vKyv+PU9fdCS2wb6q6XzWJFUZa5iWw83Y3wREb"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.39.4-next-1610542475-49dd6b9c.0_1610542625118_0.07389294481338382"},"_hasShrinkwrap":false},"2.40.1-next-1610542522-7fe21e49.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610542522-7fe21e49.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610542522-7fe21e49.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610542522-7fe21e49.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-cZQs27FRhfWQRMKZBMpz8bPc9QbcBgXZREH23qf3Lft9gnv/QTjsCHUWhde0D5LF42wEjWlpOuQvr3jgCQfvig==","shasum":"2cc7cd5564135bc61190ec4d95e73d95b9edaef1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610542522-7fe21e49.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/u5VCRA9TVsSAnZWagAA2zYP/3lR67QfzkCpchGpMMNu\nXpV/aMjLfqH3Q+dj7ENolXhON2X8UdznC8s4G4Qje3AyzEyA6eiZOyC5cHNm\nAVJWTqsuw4JJ0+1ND675fUrLAXnDnZuTfl/7eZCdFWo9OjxC6TFir7FR8hCV\ng+3tw3azVacb8WA77JC7058LxFTnV5UY4C3zwlmrHoXAxLgY+i/DO9K1Lgwf\nRUFeoX380S0S9vNThHks/JWWw5GoC9Eh58bZ+UerK9Zi+WA6clQeVEmTnr8u\nJ6M1ljeqL5jeDeaTw+3G0KwdRuwDQaDgafaNIlixAiLTxa+p1i4CBMDPmW8I\nUtJwYk9obywdJ710uzpYUws/+6BVn3z3Ylll3y8QJeA308/USqTPLaMjZZWQ\nPUl8+a3GGQXl0ikX/3vsbHtmzHP3fGRnESJXkdDpD+VLWIcgktjx9eUmFHEj\nYUv5cwUrCv5V2OP2jaa+xzKq4X38g0g6DAafAqM12xX37PSZPeTyii8/BpTy\nZubrHgeabytNyAdJKVX445Ou6+yh/GIaEqdAwkCJ0hwIFdwK8/jHQUoOesq5\nQoeycCkA2siNXf81zdDcJutDZIJT3Qvv2oJ6r1hxZpk0ofcYG2XqmCmjXV4g\n9kRWd/2bIBvUplO8IGFxaHl7ILUkn7w9xUupxXyk/7oOh6a3y70fJ6fK3FsL\noOTt\r\n=GFH8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGueOI8yE1cWjDFYzagOF92OrYfMEIb/1t3guPEOMiVXAiEAyogC8mxrjuJdlFM5LELWINhygKsMnMcEHR4+0yxb2Ow="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610542522-7fe21e49.0_1610542676801_0.4547437227745388"},"_hasShrinkwrap":false},"2.40.0":{"name":"@xdn/prefetch","version":"2.40.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.40.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-HiQ/lOXcIWMhwsTfgTranuIcyLem55GE31q4wXJ8NYRm7UiCHgpkNU/CHh+j+S2DR9WjHPpXZtZ+m/7s0BpTpw==","shasum":"3c044ecb96b1239784b1b0e9cbc6a3778c9f5e09","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.0.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/u8+CRA9TVsSAnZWagAAuvsQAJ8ozMAOXOTKgaNKjvNy\nr6GB3ylN+3qMTTfre3NvBgTXHSyNboAzytwWNvuDLnNYGcojwNBYP3EhfMTt\n5MDAfApnt3EWbzQKcSXb8vgDToI54DpTDsp2GIfSHCYKs4AEsBMWUnU3fVJ0\n+Y4OqbdwEuRufR83WxnaI+fwCq/nOZcPd+gNdDtwYiXReBf46qBmu8KUtpEt\nqLn8nSO0KvIznIVYY7g6sCHrSHGJecqSXGTBGAQ0t20aSLkhgAbgxvYMbwGL\n0PNCt6d5utVWmpZzMyWjEeq+D9W8oTt01m0JiDQq/123w5Twe+ryDZy2Xvxh\neIf8kA9UR6GB8aIS8AIlDhRMbG3NtL+9x5Z0H69FT+/mHpCCK2Zk40Q9+mxd\n/uVQ4xU/2GWUc8gnwsYTSVjhveJuxdqOAxWpOARteTfYNZ3bdtZ5LjxQqbqG\nEuV/SNvRq3Saj4wovUuflKrnXIw1Pm8lvDYj9UURGIJtF7FlCnwgyzDZ5Iwz\nIie3fvAjOzCDZtNnSMNBraByHiQH4NnLAISi8OK0I0d1YHZIYFTDBzPHR3M5\ngGUCVFEzTpWCzBg1Hj+MSonZubzjwjRV75+E/FGdUQQ2hvw1SaniIwXwL4Il\nitICFak/eowqbxfvm/kIYfffMtfo05mRDIp0ujbqzeLQBu2BxFKhCZ0JvM9f\naz/N\r\n=TYqY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLaXgwlzc5LtflexYbTdGbKBbhv5Q+ofJGFSxlSzHqGgIgUMozMDj6taSnF/bTlT4umSzT9mM5X1xJQScxVz4ecQQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.0_1610542909901_0.6077850412094308"},"_hasShrinkwrap":false},"2.40.1-next-1610543905-304a3166.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610543905-304a3166.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610543905-304a3166.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610543905-304a3166.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-nrh73OG6dSEMizVmOTPHhNOesZ9KEjB5eb/FchwjiUi5Qq/KMjOVX3ZJPDPE/aL3718eYO8bOqPg4amQtuhfqA==","shasum":"1a5574fb283b0bf5cf8a2c17dc13371eed7d6cee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610543905-304a3166.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/vO7CRA9TVsSAnZWagAA2ygP/3VxhTfrPSCee6PFiUF5\njoWEhynRK7BH7uS3vDKaykyPBUjWQleiW7Su317B5KrmWE8IoCrTZTK+2dtD\nlAObosYqVbBvfaPhNx3/FnQcroTBcENPTYGy5a6h0cScj4YfnbQhZk4sAXSI\nysUOMEpV57fdLmOzx3x7kMSHxYL6q2b2vhVAP8V2OnzEBtIhn7sCCod0eU7f\ncskZHL1nSu5zLeJg4PB9/U4RfPuirHRDbjGABRUJ3Iu+KH7g5SuW1tQn8W2A\nS0HUEJFiTGw5h8IzlfIg4JQ6NVWI5kqFyvKkbcxQ/SmC5tvGCjPQ0El1aO44\nb0fyr01w1Ku22K08SgQ0/dH/qozy4/P7zbc379+rAgGEAEzEOfjHneLFElke\nXUmajiBdm24vnPn3FK+GkLQXiIvGa0o8MpbW4QX5zVG8xr4STCdXBIFthAuA\nULFybPBqEEpmJ84zGKuure1fklkk9lQi0togpQ1kblNv1qSwXDC8LqoMnK3G\nQzIAEuUOdzPN2AT4fFOLo0rnYsIRljWzPdsGWfnAwnn23ayG4RSxhUjtCPBS\n1fwziIxGg2CBCZoRy9MC1LKR2KDxoHAZniDzZjmaZjoglZJDVO4RH1/Y21Pk\nd0NyCyLkV3n8eP4bmiisRe8vFYZvtQKjThRz5FuTOsYOCkAX8XUOksWmBoCJ\nZ5ia\r\n=gHXM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuuZIv409TcupEjA+9yRlkN4dSSTjcZKJBhTvw0LLDrAIgfz2rGhTzol9o86eaat7qo5a6MK+ryQiz6s3Mk+bv8FQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610543905-304a3166.0_1610544058965_0.10352711096134559"},"_hasShrinkwrap":false},"2.40.1-next-1610543937-89887a95.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610543937-89887a95.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610543937-89887a95.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610543937-89887a95.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-QLJZyzoRPpJPlf7uk7mctTBWKeAuaYZofc7Agyp1LL3FVxnc+ObOq1Hpu59wUpPjWw0JR79ZQ11APQcQT+MzbA==","shasum":"db9ee98fe7e8eac91663b545bae951e2b9e69a62","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610543937-89887a95.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/vPhCRA9TVsSAnZWagAAKyIP/jHNuBrwhQRl+L+7TPTF\nutsDuDzGHUfyw5D/tS0I9bDr5+d5lT1lCrVQr+QmoDZMexjAyoHUrMZqZjBn\njskZbFyamA+b0AbM1FEqlCHWQoxMk2cLqac/i/GT7cap7TE0STn6rdkbnCRF\n20blxDGMoXPCspQ9eGe65cHss64P2A1hBBbGObmH4IDdizDX5+gd9WxR3FMK\ntBc8ue2oSGb5xNn5HVlkjI97vY7DtUsSMYitW6d6T0HtP6xPFSzZ/EWrErrm\nRF9D+4hVtHuReh9M1DcR9sAq+PtrVDR3J4kFOSbo12U1pFoaOjPyNTpbKbCW\nGWheuBDC7lXzDYTN7bGp18ezXsNB4eNhMn1IjZQY5cWnJXAnq0FwotxrD2b/\nD0xiGzEN1HIfWJZ80qa/EnX+gnHN0ywnp4CU7l2xRFtBdFLXJimBkHbybRYx\nBdUQ+f5QMj0zgbE9o2VHlwSu0KVrbaJB4ELTSXTuvjcqASSpUWFl3sob2Eqt\nzyxSmvo68z5hHC78/l6kD4JQKfTXpklMV/17HwviP5J+c+t+RPZDI8+rR8uT\nJSmZEEICcYvu9wWcTqbBlHpwgRVvkHHcQ5Sde2dHrweFOqzol5LSwX+iPr4z\nKODoEXyE9B/EfYvdTCrWDQbZzM/hYUjzoHjp5kJA+/lXrki8uQlucBe5pdBx\n3bZJ\r\n=Iwjz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlZawjrpZJkKwLidPCqyfFbW2eRjfxZuNgX7FhGCdlYAiEAuYeC/jV1rrKYB7VKUDI6mXaq+DP7sXIsMtb5JOMEahE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610543937-89887a95.0_1610544097343_0.7919442748012111"},"_hasShrinkwrap":false},"2.40.1-next-1610548543-89887a95.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610548543-89887a95.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610548543-89887a95.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610548543-89887a95.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-gzH1/lynJ+pBEy+X5Nfgy/cIwEfihvPwEl27Q0J7Fut3jUxqhmrnXvIoY3k0C8Cy47oZkVs5pBjW7dtNMwDKQw==","shasum":"8d70228ab6c2df030409a06edb72d4fba384b797","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610548543-89887a95.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/wYACRA9TVsSAnZWagAApaAP/jbkU587F9dGMgNB2813\nlW4NgbbGJ5hY17qGGxx/Jk7gcguwBaTi26/eOmc6Ik359tnNQe5VvUmvQxmC\ncDuPBPtUVP1dAye6zR0OGCpWHodgYyqcD6RP7W6XO1rhOxW2WlOGFDI0Mh5N\n2pkGkJlkGGdfYKEqblAHZZs/eCvOoN3SNbTm7/7MaH6UiClp4dyja00uzNFl\nAXaqycgwxlmLm9KlgQVt/igkgKsKokOL2ae1QQnH1ZLRcSSAJ3gfHcGl123n\n9mRpIFu5p5RY55SVRcz4rQZEQYXGq2Udsl1t/Ni5Wvnsw/QMabOn/D5MhU7O\nqGOJzL+pPqdQFL493yoQ9LQmXBM+eiJdDfyLOtqa48Ba5nRjuL4DND58zBLh\nRq0/Xw8keKLT20t5067gwAC8WFVo2aw22EIXA2tCsIughxGvwyPUjh3/nABJ\nw343vfoHdTPHqsYYm1wxjazDjkJWA+bprv1xq7qLUuR9QaKFa64Q9ji9Nk7v\nlLjM626D7CnLai/FttGhAfJDSpjA6vFwwKDqRRjy05ul4XOFKG1CnLEPXjLo\ndSoJjFwnXiPagcs3qIbZUwJzyZicqssryXgARAJmVtQHQt/EmKAXHB1t+tzB\nqLcB+l1ooms4UGSuialXgTuS6TZL8e0ek+ROoJDpBj2P2ZGEQ8HQ9vQhjqzp\nd5L2\r\n=zIEA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKI7Ko8rry4XnADQjOsj3ZfCLMVAnMLl7HiIi5lPSYvgIhAN0a5LQQK6NNj4y0+VfFR9TK9qHrKCbxXVpnnYfAnSzN"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610548543-89887a95.0_1610548736046_0.7576923237114781"},"_hasShrinkwrap":false},"2.40.1-next-1610552674-304a3166.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610552674-304a3166.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610552674-304a3166.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610552674-304a3166.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-SHEEwluXrsjf5lhx33eZPVi2AcXvzMRziVl4P0FWkvf0uPm1F5oCokB0J/NxRBGEhjDE0gw5P2agls401hRebw==","shasum":"6d21b643516ae29e1787c31e8aa6581e35bb3121","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610552674-304a3166.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/xYgCRA9TVsSAnZWagAAud0P/jOSsOr3tS1frm+8950T\n/2UPJ+G58qODt6npg42qfxPXSV5hlhmrBwCJlvWQ67bws+pBfAxxT8LtbEb/\nIC1jM6+gbBb2xTZ4ZVadWZWHmRE1htjYD+ILoqgItVUbGF4FlkAtUKBxdHCO\n9HiPxwMmp3wyWb+P8N3RLc6lGrQonseaeLUcVKv8fnITtszLVFJiAkGIrgzP\njDvx4r8GPFSSMcWRvjQ6GsrFrqxEBd/FyhnFELPacyx4aF31t/mHr+0Zx4CQ\nxPY7Z900vwIKSv7vR1EauErO0U4GZSHrc73QKzdftXRxrn0ApCBf7cXssKlC\ngFwEIkm5I9jI3WWmBUOEWg1LBVEsqgXDKMKd29LmqjWCtU/qYUl4SSxht/fB\nP35iExc05F+1DXyM7KvbhYfnRESPOtXbb9453Ke868nAWdL0q21YUUgyM1vL\nhxwf1Hl5gR4U6+5U1ycZY9nVWfRh+ZMtuhU2CJRi6Z6pvO6BY+mE0BbcFVMp\nHWOQ8TDJTDDDmv3objEPopUJO4XoX+22L+P+vCmWwnHR/LjL9vLk23mB6SxX\nQCcA5GTkHczP/BD8AG3R33TJwGUt5Fpl/ztpjf1LnX0QMmhubS67pVq7Ilj0\n+dGKkSQa42b7Yq1b6UEWK+D7WciyieEQJiZo/Y0Hyk4WNX2WC9zNbD9/Hbrt\nynUj\r\n=6M9V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfSAZfd3dDgZgL47Au+GkAag2qiGhFC+aLQls9B/c8pgIhAPDWMq3HDBnY1W5YwdN7W6Xmf5vK6AF4FaCEFrM/1vtR"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610552674-304a3166.0_1610552864042_0.6914999242090749"},"_hasShrinkwrap":false},"2.40.1-next-1610644713-9618ddfc.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610644713-9618ddfc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610644713-9618ddfc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610644713-9618ddfc.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-TLtaTDV3SoXrKxPip6P5bip5Mor1iOhERIA6RiFdn/T7ERgJMMR4MtBQZ+NF/tiBOqzMgRBp6T/ugbWn1W+NYA==","shasum":"b7ba67f2ef7ab1acc3c68ab91b84d67ae4cbade0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610644713-9618ddfc.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAH2CCRA9TVsSAnZWagAAiCYP/RYUPH7sOYbdJs0py3MQ\nI3u+uTUaeqVt0F+sWUIm0JZ2CMdis0QjomLti5S5/RrE4OAemdrMLKgVJhK+\nosvUJUWbhv9DejuoA8gFsiAOyKyf1GTHIeYcDndWYremi5CEGTExCEn2AlUV\nmOXfT0M5dF8qfgJdwUHvtIiNp6FJ1aMtllHcE2NXvCMxpOl/W+KplfvY/Rnr\nbyb/1ZXsM5TcGKV1TJzZ3caf4/qwn4P+/9d7YCE2o1cmRo+lZVPRLCi6HKIA\nlJSq5YlZRRptoLExxhxbDXYfqk91nTQZlJtjIHLVfjR1iR6hjY65H1I6Iz4q\nleaQPeqlnOw23uyNIP/Ob0yIU8OTc5GBuGM09Cgob5htUDeJOj5HHvqaGeXJ\nB44HfMEJaVojiYvzVK2ho9w5mlkDPtPAvYWjWuZpijK579vbaT3YCY6DVPST\nC80AhSr9qHAMmFXK8MyFfg97oB6eO7DV4Pd9ZhJR/6SMi94jgc1AuOAfJvN+\nlRksaULH/dn1jATGm6Aw63QkRNBf+LCmEfefpOfJ8OcxxljbXz5bfupp/Dwi\nYNv/mFq+5WNgc5BKUc8T0O3vSnUmluziBJ0Ls0lUNn4KoYdYP+dn4yO5iAFJ\na+4/ZHNtT3e94FX8BKfpkf9bVvasbTp2NMXsjJJxVgNhdSGiGyNIaQSOqzL4\nL6xc\r\n=Rt+4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgQj6AR/QIiNFjG8i+8cpAk6xQvBBw8QV60c3s77CEhQIgJuKIxQuLpWihMB8qalmp5nd4/I5feDDjPCdfPk1c3nE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610644713-9618ddfc.0_1610644865985_0.0699460473371103"},"_hasShrinkwrap":false},"2.40.1-next-1610715401-7357d98e.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610715401-7357d98e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610715401-7357d98e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610715401-7357d98e.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-WXzB/ZovUygA0Bor0BzNqU5lXrcEbQVdC3gPhLJg6JnYn9sBgXpKSlt3F8zUwNHcZOhuWLpTPgLA639TryyHpQ==","shasum":"17de473889c2312654ed435adc1ad04489755908","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610715401-7357d98e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAZG6CRA9TVsSAnZWagAACV8QAJqauCyOTVvrLSVYJGOQ\nSx+ac/bB5Ye0c/xoiHbMJF7luNeCoHojoOWmoPFOE+9X151tc60GzafU1Lql\n9uz1drn2Jl/cu/ukrWaP4o1grCTTfeMCFhAGC8Dl6MrGpvsqH8iECzRnNZeb\n2gfaJVqo2QKlZXnfvDH8DKLQfMTuWNe8khpqXre7MmyyiLa+wP8EFy98LKx1\nVor95kJ5AqklhatET/ILA0zV7LbffSxvS0xI/stNdstbh3+UMJuNikXGYI9t\nGujxttDjdSxuZvdiiKUV4+O3w+nuQeGHU+k5E70Rjfi4p43mqQXyJfY3T22s\ncq/EF0wVIndsW+bjXwQLW+2os7NtQ0BigYhq/a7l/8mGGcJScxSApF/tC9vG\np2MT/cC8mjZtTJfzwUr581Ud4bl/gUousQ1kRlGcnnzODIJ+Z8CXi9DfST8e\nBuPju8RzDEPJ+RBCqjMiRHfaIwGO7C9zq8q8xKCRHjlUdCEJ/PjPLYbbX3V4\n3emquhpN+BAiyVO79/u5KjDCyKXwgLviRnURN9hp92jC5m98w6KL6SOrcBEx\n0evMQzrI66BIiyAq9Jkb5hEmbjnWtk7cECddUijl2hAL9psMJssHKf5eB5z+\ntkJcMHUFYKDY7wAzmwYcyP2FKL/h7tLyGq1WrQjBhgUzQMw/HitR4jMhgRyB\na/lO\r\n=OtPf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICiVaMUdk/MnKqhFzzE157iGJMGiuBsKXzKZpTyFqz1RAiEAowI+tpU3xkcBVsHw3W5KQ7B2CuhfnutAyCUqrtFrB48="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610715401-7357d98e.0_1610715577756_0.7052465515990749"},"_hasShrinkwrap":false},"2.40.1-next-1610716855-7357d98e.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610716855-7357d98e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610716855-7357d98e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610716855-7357d98e.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-sACh0HDhALknHlgEu2AymcYHY4E8SbjTDoB04yY9+hsdlK46KT/fxj2aJfoazuO97neW65UlBAKA52s0rSpqQQ==","shasum":"c434285c8bc8584eb0c34e88f0fd655245d447a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610716855-7357d98e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAZd6CRA9TVsSAnZWagAApWoQAICWQCK4b3n1PqS0KL7J\nMerKmR1MfMxVR6fFI9Pkx5hteulJfW827K4HSJeOm4bxFpYhslAiM8jGJ0uZ\nr4mlSa74XQsIVUlIOuYY3Kr+SYoTcbOYsUe0ih36Z6M5IB2YBBv/RyZf9VGF\n/3fVC6CTXqzpBH7QJsIT4/8zeV3y8rCkJay5lM63ED6UjxCwSvVBD2pNnZx9\nAyXb7DBmRzGqZB5AEixENN4Xxs/VjOcq0sNaPAPpwPru7uTJuEColepSuVRf\npCJ3EtEDcvn8up6Y5GPO+zxXZ7GAJCa2FD47kJmoX8v7MOwAizutvCwBlLc9\nb447CZjODZNWAFZ9M367UsbLPfXSCiGzzZr4Hq4/kVvTLUFBJaln62DitvPh\nUJmGeF4uWaF+n0dFdP4cfBH06vo/s11alHRGGAihSRov7woYM7e8qCjGS+y3\nrmWT+cK25pAf4TZhI02l2Izhdz+oiy6IDVJLe7+Q+haGr+sTd6RpvlIXfItO\n0ZmhO5mTENv3x6iv2du4xWZ42fVjIAB6O0St+59zOhX/ozff8vGVBAFBA8Ue\n45vI2QNSDiq0mUV5mHVT917Xh5kvK31Busil57VboQB/tiYuysIKS/OdYeFi\ncJ/2nHtK77nGNOsQ8VPIfe1E9xDU3W8j9DidFCuBWL644IKAAhLXYfM9l76Y\nlcAQ\r\n=Nbs8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHVfTlaCZ1UNx0EfQ/sRHwze3TIyEFfQ1RIJsgLtmGHDAiEA5R9bI4ZLtjD8kYoZCPpCAifZXWJClj/Fuu3xfxZI4UA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610716855-7357d98e.0_1610717049581_0.7237653282281629"},"_hasShrinkwrap":false},"2.40.1-next-1610718521-6b49f4e5.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610718521-6b49f4e5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610718521-6b49f4e5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610718521-6b49f4e5.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-THHVf8RpWxmJM5Q+rltCqN0phI4ACq5tV1HV59o/ng5bHJCeKbFddcCtoomt8TraxYK7tLRUWd/nxhpIdv5nCw==","shasum":"f0211b44e70374ca19c4b3e6e9c11ee99f9362a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610718521-6b49f4e5.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAZ3aCRA9TVsSAnZWagAA4RoP/A3i1IMjgJhLDza/qZoP\nrx+rvqchzAJQHKhiHysvP0Ji3D5Jx6GIW+qEg9fZDfYZDEkwU0+kXxt3Ts1R\nzhg9fwX3/VkO88sE5iizh4MPBv6cKlTFbaXhpus0rWmQGCx8f+7crLrqns88\niOReF+VGuhqeCye2iIWF/2kxyaUothacADw8VMfwBZeSWee9U9Vj52a8gvzD\nA2AIemxtVx7b6cH9TfMxBwaQhZwvKGwGlCFoP7Ry0FZ4Lqe2dD+Ljro+gtbZ\no/eglpOBc0EgNfMVd5NvOqXv4Qli/kgrtVZNAKNGmlRCzq/0GEtYR/2t1/Ub\nW63PtLDDPnnVC2+Aen7oNNNq+j3Q2nenQie07HZKO29nA1lGCafNb4fnpmW2\nxUl6H3UJvwzn9Aeq7znBcZcHX8BJLsmTwZSzQsAxcXiYEffJ4ktl3CgRy6NZ\nOSjY2TTMq/nUqJq86doBqSDrok026vxBtCdAg9jRymw6vLnBmMr3hSP+pW5Y\n3pMvfSTPhJf8j0GDCPbY/lpleMHDAsJWrW6fsShqXG2Go8g8gyu4wi7COd1D\nINEZEVcnsV8utNJYpF9jCHYtGsBnIN2DeUyYS9ElzqJbafgQ26nEzb26JEoT\ngt+xMLbAszYn0rUdHnkXFDvRQVhj+X7yTJI3tOV7iaf8dpEmsNe0zbdappE0\n0tXl\r\n=9V1k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8Fp0RQPYT9XIOC2ax0nNWwJzGIZyCEonQnRHVemXjjwIgCwAcCSKqs4JckHEqUfSfIMdEmAyB38KbhZwR4Vxks4Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610718521-6b49f4e5.0_1610718681681_0.8464045587484008"},"_hasShrinkwrap":false},"2.40.1-next-1610720143-6b49f4e5.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610720143-6b49f4e5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610720143-6b49f4e5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610720143-6b49f4e5.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-6HVApGv+TFtjy4of01UMQ0Ic3pJyXY0Aq3sUQGN7MxCFE9OlpqCUL8VswbeYdUOP2px55XWH0ey4vaukdgofBw==","shasum":"e6dd5e3ec2d9aded20666ca8bd47d0315980164d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610720143-6b49f4e5.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAaQmCRA9TVsSAnZWagAA9DsP/338CVRvbQJ+Y4X/PCRC\n7UikcRxZstkyFVBf1mMVlJjwK7SY6GtKv/hW7Xi7edJYDKDenSzhQXPMIHnP\nNh5/VIOUNGtkvLNvRfI2SAR/NyCdjPnPZO/Lr6h8suaIVQArw4Raw3zy1BD2\nU6sPLshHSfbvGGW9YyaUT0mbJXNRcB9m8pBk1z/y7bYaO/X7BeTHuXA+N56C\nllrcU/UJc7DRfbrUgaZ8ZQyC+vOetPl5dTLjxkaEjrv7HZjJxbUwe0lpazTp\ns7Kmu9dSQsXKai7jd3bTpzVXTuLF4YhDDAccO49Ht2OCVAHWe6xieXM4d5lG\nKM66FAvkI0eoPxGMHo1Uthcp8KzgYgRi0FKVdQbs5hXksp7TfapL1kVeVme4\n2Y2IF2GivpqGjvP94cQcpAq/L3XjFf+zKWTEHeGDPpV2SRGRFa2Wp5BRBVba\nScFkNzpGKGc1nx1dLoUxe2GFgkRYW33bIyb4Xm32Jp3vA2Va9AdnLVx8VfBP\nTI0Jpxxfvihsi5WkgHnBFJxT51LoCzzC3XJBg3CBsLAYKCyxx890s3X/83sL\nitaI1sziyGIZ7JX/g2TFbS5OKqxu3p/Lj5jiWpH7l1TJCeAN4Uhe31/HvexG\nIyGyXWdNCLLRwmrITNdd4kxbTmV3HAAvJ+oQ7fPXSgqaIA6eO7UeuXoc9kEk\nEL+n\r\n=6OBL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOV3MNHW+/GaBbjKecpjbIxO4uyNnd444aAuQpY9h4kAIgQOvJVAj7pDk5PiJwBiewIYlQp0kEFbu7gQxT8egpso0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610720143-6b49f4e5.0_1610720293870_0.6334623063342071"},"_hasShrinkwrap":false},"2.40.1-next-1610724444-6b49f4e5.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610724444-6b49f4e5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610724444-6b49f4e5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610724444-6b49f4e5.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-H/TkLzkQJ1x+Y4yB2WofwWJLEF2q/M4yAmdeBBe3T3URRErirOjmpCSeFRJQ2/VtzmYd+NOPf2ZTBALdrkfdpQ==","shasum":"9c541f2d57e79e380185fb08676b0448d4413a9c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610724444-6b49f4e5.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAbTwCRA9TVsSAnZWagAAF4oP/jIOkIPkMmUqYdF/rluc\nHHKTS4o1egcHrxG75nudgxwEQL42wnQBBcZUVayRYxM9iEr3LwlYtCqBJ3ry\n4qZr0y0ZmtnGB+haMiTTzxZiJ3rUYkw3SQebDCkzSiWPWMwQLN0C2Uqerz+E\ndofC3X6jRruLHoYfgAjfiXkeTULoCSpn4UPvXbos21oUQRqctUxwvw1OBQvD\n2ObZ6Pxh2/NgaIZSbn9yzHWYUPKzGJYT/eRmLXZ2JMMv3oRywtycL3UWs9SC\nlETLjAyRGT0BLTZyxaGfkQbWsLLtwHe8rIxt+vKnaFkGRLhczFGp62OqHD1V\nOvJE0qa7RlWjSrOC5M3rAYS93H9TBi3zxqyHymqGb5inIHrEXfSQDjfQXD2A\n9I73Ik6A3LVyRraAHhAds1WgY+wdYGefeFKG6UVQ07EfXbZjBrT8Ge5VeDl/\nRKoW0ztobZ6oFxrq3vybOokDQlo9ISGNTZu9uOmbSVgGALVxfoMgZkNEAcO+\noQK5MsFvPM/w3lReplpH22/E+VuyyqKmXslfhfiFpboUtxGim6SEbqObHrOS\nICtD3H9F/n93MazyZMcM19YzDqj/L9FimOMqC3g5grBXnIpG2MFCiIfBmVKl\n5SuCmwC502sG2khJPUkV24a9LumVzK3QWX2klDSzyPyLaV6VVtrLZkW0sMYn\nbag1\r\n=ZM5n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr5Bcygr84JxBJLglkY0l/ZzLoivvCIjE89iw13D7m1QIgRTVirIkr+jK+PIHYAjDC1NaVZe4q5QUKHTOhLb8lorE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610724444-6b49f4e5.0_1610724592404_0.8301056267747935"},"_hasShrinkwrap":false},"2.40.1-next-1610725487-f09db761.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610725487-f09db761.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610725487-f09db761.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610725487-f09db761.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-0qGVpvhgspV5njYIJLL0alvSs04EQLu0OjZ0Zchu6GgINPPZuwjlMsYKMF5sXSjGwR2GXoBX0LN7u9UJlJRWOQ==","shasum":"ac0bb9fa7070cdf8349efd6904b45a88aea065ff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610725487-f09db761.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAbkACRA9TVsSAnZWagAAPz0P+QA03BDRrZQz/zEJFflB\n76Hg4vM1KFDCiSNok5WSkGqCY0qfGTzA+Zxmza0T1BpWBsqf0lABbtIaXr8Z\nyPqjv7GLJIx+YvCXyy+J8VBtuZ3dpjymf3qXxlhvGGIACzwUjqz+sspW91Qz\n02iyStZm36vyCjIMD7pcBEtIqBdXo/x2mrGoBE9/M7Q5iVqGtJ1VCQLGpUjP\njNIyTMxgGG/N/ZrHv//JPVrr4Dsq+hvAWugfxIVlHUtf1mbKchJcRFoG3Tld\nFD9r3Cr0C7R5Xka1GBRg1KqIlPa1lhCzdmWlFnl9xgMXKgiroeYrsd1MbP1W\nAruJCvk1xtAd4zy061A6ssKl1HknZln9DZlNIEi8+Eyy4tAoewLvjSO2/2ax\ngyN/SwZ2qMp9wB9NKmPipLF0RMLycCvnxtYRCZhS6CypXfRLMovpl+ssP1dq\nnuIaVHc2/fVB4KFflFvDjOciXasTZ7YFbjFhHyrjxGx5BueY4MHT1mPY8ES3\nGRVF7DyXC/dQzxwOA0oQPu2TxYPfq/J3ShauCbz+e3b6ox1hNauBRJCTGN3Y\niefDtQeDqmF0frHch0V/WmD0VG98p7QSyu/y6//o7J9IoAW/Epdp+sigE/Y0\n1z1WiZElb+NOR8K6lPA7Tes9cxvz6wmHISH5BiTPYr2E1FcqQVlm3nEum38R\n6PuF\r\n=y2B1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDg03+z/2k3GHGEW0N5wdURCMR4k59R5DIbTxFtsnGKigIhAOGf8xe41uov+WDTzW6hRN+IBBBdY/FsCN4nJN3VMEGs"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610725487-f09db761.0_1610725632008_0.146153868213043"},"_hasShrinkwrap":false},"2.40.1-next-1610726420-f09db761.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610726420-f09db761.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610726420-f09db761.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610726420-f09db761.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-qcgNMuyFsIZooIs7KQ55LwHiUrNF9M6CCTchRQ5LUwDRv0dhPOzTsguMD69A4/0+rEQwchTDXy6NASJy5VoCCQ==","shasum":"903ff08a9e0f1fb23cfe36a9db8c10c11d9401a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610726420-f09db761.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAbypCRA9TVsSAnZWagAA2NYP/R/ZzkRBoJyhrrccTqJ2\nXSs9dZ2k0msDWHZBFHLqrPZtPaloD/EzBtukp3PAoi6Dmk48JejDx8tkORTb\n0sIVh+v3j58B91LbtYM0LjPG0/GNBnE64nX9OKr7FQ7lsMbeqZdwBSJ2cOEf\nHTw4DpTGDeY2r2akRXIf4beA5hy/SsyrdwSAttmzrE/k1OWMpDoPwS5Z967s\nfkZ25JGEv484sohaJy12Xk02p2vMsk8rVEn5rHy1arLtp/8CLpE8sIFU9Bza\nrui1wcrkwbdvpOhnkSnFVQMrQ7R+h4ZPwCuuV56qQwPSTZn380apdrgwUMtL\nAMvbBHe0meN+NjImF6kmR7af+pXnY5Eyzj998PH0AF3XyCNTItgoAO645EaU\npB3xmHwdzfpkxDTQiFhV04qE/AwsG8AFJv6d5linPDkQeFVYsHDroMC2yOXK\ndgUMYzLPWCH6L+smMi41XtNJ6vMo3lWyiLBZ6pZsnekW644ADqb7DCwvCmxS\n4eHBl2D1I1Ul/1KxJwd6FUoutJF+V/zhsHdC0tgMNomq2Q2Y2RSOFUwvSiBl\nDblx8KWxVNU6vJ/XrHb+vydx/T/Ylp8Ai82Xh9m/GCd0dWY9zZGuiZWa3toL\njXVH7sXUUiL1Gtlzs7GYZFpBFhQEogTY0sO26lYgfRNzc4k2EJwdkK0LMuVG\nBiwu\r\n=kT0g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIiM9Ym8LIVskTb48yPWwwBVx0stlBwLn00meZS7LRtAiB/FgLgnqfP3wNNewet5v+I/29HOg3RhiDVXGtC8R2i8Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610726420-f09db761.0_1610726568730_0.9953567649746344"},"_hasShrinkwrap":false},"2.40.1-next-1610969850-4e588064.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610969850-4e588064.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610969850-4e588064.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610969850-4e588064.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-DxTgXBPWsX72wtE2INQ7rtmas6nZ0n8ceqccCrG+jHVgDPl0nB1b88A8AZtfVa/QMmJ/oeMFJrIOcTBFBuZzTw==","shasum":"29a1f7ea6edc17296a04ded41139dabaa16b2331","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610969850-4e588064.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBXOMCRA9TVsSAnZWagAAO9oP/1uINunoEZVVR5iX0m+M\nAdkAGXjhK47D7D7XShFfuNpJQHm7vxkW4bMRKntWBrDqnrTAHMo/2gGkecfY\nWohv3+XEu94LgRQA9wsmaISFKFdQtHjy8pAx+DKB5y6+yHqp/xoZwEQXE0hg\nDV4cJvnb4o3ZFft2SHbnX3pzmtZEcp3MNmQaKSuNKlbQL0tpwCdFl2oJnwsr\nAugIdriGXJ5TrigZV7inSHnA+lRa0F0gI4ySTN8CXvRxNm91nt2sVDRpz5cj\nUqVVGITfi9nOOVCAJja9oXW5Ix7fISG/o/F8EEi9IuwtlOldmjAHKoKcNoPY\nL8n+sFhKfL7pE9G6mmfuNfroEIdAdp2VnklqtgoMDZV68YL7foFlRlkEjHNf\njJDOxYgj9jmsaey7wVQ/C4j4gJIQADpjzua88Q7coJchcKpuMDa1eW97dgFS\nmzAYnFEFVaXgbz/SnucD4sEPS65k0EgXKvtVDYjp/dEZ9lUhRfsZPaKCvy9x\nzj/GtO7H3yGlFgVR+TDMOgGEg0NOyNM0tmYEgJlbg7Udp2ln7Wfyms50SGoN\nWUA/Sq1ViXggg38QiIAz149GTKLsNo836/vemRC8+zUEWPgVG4ktxRk8IzRo\ndHEHeiBI3PQ/5rQ93RHkNZJvKXTEdhlDeH3RxJ1098MN7UJTghsakVH9Tpy0\nqv9c\r\n=y7c7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEcnpbMqDbEmx/N2IVAYvOWeFY8rYrQic3+Fs1TetkNFAiEA/drJeocb+nFT09pQspZkbZene73mLA8JjDRBgmqzsKE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610969850-4e588064.0_1610969996283_0.6878254700999251"},"_hasShrinkwrap":false},"2.40.1-next-1610974394-4ddf6baa.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610974394-4ddf6baa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610974394-4ddf6baa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610974394-4ddf6baa.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-y9oK3OpVVBQbz6R5Wt9QDjIAqgEVulohPe8IMO1+JGLPfnq72wcMQM5+ZhytTHUEV3XDZUEiczA+PRjgGTYlTA==","shasum":"b5224c0b7e6d19bb92a2834b006060c8cbba8187","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610974394-4ddf6baa.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBYVsCRA9TVsSAnZWagAAICgP/247xRg9qcUydAhhYgax\nHpUYuYCd60Wz8cQYJaIbsKfCnvo6T95TGkQH5WaV+ybiYKPwUXDDA4538LKW\nOkoG8OQNJJB40pslNacL5CH2RRlFvhQoZw/uYm+Cd1mhZn6XI2U8Aq55SqGZ\nImll1iSsj/Eo4W+FmvnWJqNVn1qVbBg3LCLArIDh+ZrXdRZWSWIZWZlPIdHL\nS4xMJuZXBrgxAKoi+nNEXzF+tnZNL/X1nwlBfjPZ+LKkoQgmYrvYOdLQ3tR8\nYGQ80gUAnIUScjWnH4aE1UiKbr6E/HZYSDhSBWOSZzLomG4u1msP2Grs+Dmk\nJT1ZEAFO/KHaePseddnIzHmgh3dB1Dx+FQtMVT6IhCYJbc8wSc1v3iloSk5u\ni/VpigdVVTeE6fewEPvp1kslRIDuW8L9ZedTCxOxZQYkHtETjgnZpSdt0pAa\nSQJRc7GMQ9XAkxGm+JFZkm4qlCFZHIxqB+JiSKUzXknWSKh/I9kdhO+U4iN4\nxHK5wzvP6IN3gM3nRVibEf1bOrQe7R1Y8nn5R+r0/3rcRk2ORPGT5VH/edJ8\nX9OBtwWyvarkxmaJgRqqEXv1rV8/kjAIoVpvnP6Q3JbK3ZR7qMXdWxtVrsdI\nvjJuoNTqHNsTwV8fucWctqhu8LmbuSw6FCgxFAJPvaQfGcI+VyUYbydOmk7A\nDkc2\r\n=qKH7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEabGxx8RxQHQg9Ow08Dfn96NukPiXbjpZ77N80RpjlsAiAEp95AeHC+iS5WfVOBgTloLNnKdjdpZ3neXoQWncY+3Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610974394-4ddf6baa.0_1610974571532_0.09132932511961611"},"_hasShrinkwrap":false},"2.40.1-next-1610974608-8234820c.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610974608-8234820c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610974608-8234820c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610974608-8234820c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-A4XEzyoGFC7Dsu9WgOgHTFMtczH/ey7makS8fzUw43OShG+dFh+VMrbZYb+NDGLNamyyK9547gregmCCTBL+iw==","shasum":"341c9ac2c7c76e14446fe8d550b67d9cee8b868d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610974608-8234820c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBYYsCRA9TVsSAnZWagAAUpYQAIdCDhmX1pHPY9gUxCCM\n8jQ2MrdKe0KBhgGl995+8fjxu16a/esC06goD6FLRpXWocN/oXtoWHbtZDEX\nJbmpvb/txt+WSrYx7QwWcjhPWZhEbORIbzuDin+SmRX4GQhJs97OzaiCIjjy\ngcKO2swW9mc8jPVKhWVN9v8rq0uE1Av0mj/G+CWNA6crkuFsPnO97HkdoPIT\nCokR2aiPO6zicuYQZS13qZ44haR9XbMYWlhc3oBTepPbUPWn7nb+DVdM0YWT\nYfTWX3xo+sikMndpdv2Id/7okQ1vM+8iMnGyrasT9QkrzsT00+9zCv0SG2zg\nxqKJPhPtOL6xpXRbZw0c9gxyeIepLrF7coF7/buvqGiiU2dnI1rJVMatDIfS\nu5oK+4O9lciVOeXuNMlPJPyiby6BCJW2PkRVI3e3JnpWF1z0MxUPUHIBArsS\nQ6C5PX0/m3CTWd/Nq073IJ9itSNaz536CfCoV6eOmdfQMWfj7zkGmKjhXKjE\nwvt2tL3SWMolGDS3o3SbIIFVA3uHIchCTrSsrEc6erTSbNql33W1aRrvCvaX\nJjeXZFUkuKpPwiDEXU+8aXY22n3Sewj7BqwVte2DeiZD5DairJVieDf+35Zo\npelX55qAxuoB1d3RLMRJmBM+X1Hc8JilWKS8US0aVd6SKW5Zm9dO0l35INZb\n2DR9\r\n=Fa6t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGvGox4Z/ET5cO23KU2rQ8TJt4/kxNkAsVdeEd9NXSwRAiEAo2aBdq8gTiPgDrMoWHkXwWFxkLK9vQogxymZ3q/M4rI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610974608-8234820c.0_1610974763597_0.655992196572283"},"_hasShrinkwrap":false},"2.40.1-next-1610980521-28d48dae.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610980521-28d48dae.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610980521-28d48dae.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610980521-28d48dae.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Qw2BwQqHZSue4Jt1EZR3O9MexMt+r5UFp7LUH4ZNR2RCF7DysXPI6DgNCg3otybmuf/Mokl6Q+RUxRe4EweCUQ==","shasum":"28070c961c7e4dd0e568ae6ad9f8f78e0b8cb984","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610980521-28d48dae.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBZ1JCRA9TVsSAnZWagAAVmwP/j6L+JpjSc0xKz/LIHNu\n33owyHdeSp6b5Uf/wpN6UYOyZFj0K8GrLq/lmChE4m+DkiNIXKQ+LuaCsAZM\n/5htJM34D/vL7SMRlW49snrwtPtECsWIHy5TVETayxuheUO4/QjLO7CZap11\n2YblvdWw2XNE8MELuGfZF+1HGyXezMkvmIeqJ1BNPeNaPv5jb+vSIy1UhNof\nFyh8TyUluamMuK3VVgJGWSwio0BFp5qPO69O5l3KHNBSJx/NljUewu02XoG1\nKnEAQb6mFghuNE3+sfJdbZI22vvT1MIB/owHOeJ2XDIlFWR/vnCxmFCjCder\nRb2RqVMTbuHTjopA1ODAyqKywsPvqTJ82dZaXFkTp7y0Dz9j61uXNe6r6yHD\nDviVPY+gQgvo82LBlA02crhOy3ET/8tB/ohBdZQrPSft81V4iWEgxnC5euj6\n91dpKnpmTGjMIBDNb/2nX3VHNen/ql9SESO8AYE5H6pZXKaYkliIotd/Riej\nvi3gifqV1AzCp2iPIy7oY99/JlwxD1sE4k3GaTF+ticNuka/G/3a8e+wO3/n\nkGy/jY+cxkCycsfOF/KWVsOa2ATgw+kpYqh7Lx4vGpLCeoPe0s0d7t135uxC\nKmQMGXehO6dbRVGJPIcQbR9bktg3JlO1u3Kx9mZjZUJ73PTKYg4KQVgSlsMb\nvm6j\r\n=Y3jI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJlJ13K7iCb+kGNJTF7u5bFGB9uy7diIy58d+kj/3VgAiB6FNJF2Z00QhqY31Dakmmm4IN8fAKwHLA5O+k2f/xqBw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610980521-28d48dae.0_1610980681263_0.08203395768567656"},"_hasShrinkwrap":false},"2.40.1-next-1610980568-4e588064.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610980568-4e588064.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610980568-4e588064.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610980568-4e588064.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-gqFDQ/g3APcTxnRs/nyW+4sTAjCq71XFknw/x043r8n/59n/eBmirvnIHnnF0T6gSKXTdIW+cWxvTbnMhTh7Mg==","shasum":"ceb323c6f4281b26c0af297f056f9639cee37c22","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610980568-4e588064.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBZ1uCRA9TVsSAnZWagAA+igP/jNZkWvdMZUMjhOviqa5\nNIJMCHXdHTJmse2Gtv6Nt5xrJ9nEu96AoB21yr/BZYgpGvFVzq2Mq55BOXDh\nfu3do3WZUsyaaFSGQ5BicA7JSG0+rpepN9qLyyC/nez9x3mFm2vzN6YAueFp\nNOBhvrN7w07+4aukT+Cf9Glm4aq0mtK4FCo9RxFM6oNMBnyM/w/M0vTNotTO\n0RyLa9zeGDoOjTiJGSC9mIFZ3Mzpu9RygS0IrCjYxUyMWMkbDzowyl4eJQhF\nnP595L8WphlaObsXXoa9RmHCej6HwfxsTTU4HIDujrrI1VbzHXonf1sr6Rh1\nBIRAQMiAZqKlOGcDEvMuGsHJHzdUhy1J+vKEVCJRQERsUTtnKskvnPWOcmEm\n6Mp76MVabbyRvJCdFG152XDlMAMR1va/YAS30GNhBLSkVDo0vTHU3MR9kV2A\np9/qN/ay8hpoLt4pqWWlYg1lIQfcWPr19+mffxwu6n1EDHmdMaUEUX+lhVFl\nFl7ZSSYE9L2I6E7T26giIPSFZpg8IUV934yMVjYHt6m7sJyhcOGkAnHTigP+\nRaxJU+8sBwiKPNzBo0ABjnMw49iRAyMfcRulmLH3BqHB7kKMzaKJCfbr9Bnm\nk8OssakkDkkH95i1UBAIhedainNMrZYmOE/aF+o4Y5pU2K5AEONOOQyMegVV\nbdte\r\n=VJcj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENUtb5matzSxpJpqqfVUhtpyqbbmNi8yox6qEROFYCwAiBbfskRjroEbgy2xy0Ybm5TQWZKS0uItm6nacOEwp8ZwA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610980568-4e588064.0_1610980717635_0.7132980724632334"},"_hasShrinkwrap":false},"2.40.1-next-1610981719-d6c11efc.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610981719-d6c11efc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610981719-d6c11efc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610981719-d6c11efc.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-LYpYXpwNPS2GHelg05WqpdOFXDzInvL9MilIR59qwGJ9I8cRmiPJL6XaLuWwYNzcCp/Lb8PrjZPdueosyWXFIg==","shasum":"ebad5e4d0ab333a1d4203a659d0c714c52daae5e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610981719-d6c11efc.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBaIGCRA9TVsSAnZWagAAYZIP/1ykbu0wI1xTNi+bSgc4\nFCINGdZANDgaYaCpkYuFXoYFl9FS3eCb+jUcUspM3505hbRTHlQSWgjIZ8hg\nkfut9pfq8z9sngz1IO2blyxzcInh3vQfgEqBUfRpRfH+DIBzo6wOOeRHQxjR\nDwDflv18BM9tr1L4zcZhA1LoWuPhFFa0azMUFo0K2h6KhVBggZUwjzGvgBPE\nS0omDf8sLT4foeLd6JC4cxmEe7QjdZ53XtZoMfubthLJJx+pQkBchmNRtWei\nti94FpBHGT3wT/6fdQZzfDMgC+MITnreu2nad0u9RPM4V6Iq6M6PJMB+VbTs\n3/3y0tDQmYy6bVe6e5ocTA7PBc5lwwxx3FvkMnb36BpVvrzR5yisWNj5KLb9\nInd3NaHjnnN1h1/D9SbQiJWC7KPnkbouT5ZmZqNgnwQiqtxVynEzIvbbXsHs\n/RAQdMsxspHWyTF3SYeriKkRCV7f588L68By0Wg+tXf4jx49c3Rwepo5EpvJ\n3KDlrfAiudvNxGy6pFMYwlBaOM5UJqsjGJzXwUeff7v5hbSrF3bzzmgkq939\nXsMyw61cynFBItyQhMNFvbxo1q2Zkt6aoMbH/M/yvE1md9iP2ISlqe8qhnMR\nI6WsdTonjA0Vs/88PJ7UsUu/vau2tYwWqr5f5e9AGHwMz0MpsfCv7GSLBazH\n2pbD\r\n=9Eyz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG0f1zV3B2PbQ+VGbhHb8045pgdvSHv1wKvHP+51JvfUAiAbdhypc1niJctbDJQbGYVxoBcCy7FhEB8ifQ3r0TbRhw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610981719-d6c11efc.0_1610981893654_0.6245586361838475"},"_hasShrinkwrap":false},"2.40.1-next-1610983103-1e81b81b.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610983103-1e81b81b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610983103-1e81b81b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610983103-1e81b81b.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-2EYJVuAduZ/3kF4OpfcTmjBqtYGnle3y72I1lRQVNfHG28wuhhH8godPInT3ZJM1RIGZzRIpBDzp6y8T1KGSmg==","shasum":"5fa057bab1f2828c809de3bdf84d2edd39caa25f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610983103-1e81b81b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBadoCRA9TVsSAnZWagAAX4IP/0WclXw+P+/ZC07XO2j5\nDpowWmVtOjX7naHB7OCwx7oiqIwoLUdIRoDuWRf8btz04ce5Z9/OTN84JVfh\nQ9gtw97PL8i4OeAXRS8eKbP0bPVrzxObOddJ13q3DKiuO9yN9PabC2rJYUXR\nb937CAKxjn3MdNBii+aJdokGpfEf8hcYqqN3MaOavQ1RJhnPCLsWLLtXyUtN\nVnB9L9CimTBT3DztjX/lvITUuMD7aISBp9Vffr0mXXtfeWF4uXC0XpTmyemX\nkg4zDDTO46z3asThCHZziBfKwnwNKKEX+2NomzAUwCPSIeTEk0BRQ18XlLWV\nDrtd7ewl2yV4bPCLSuVHiJ6ZQktwzs+/LOYo+/BU/w8aYW5WP/AG0B+ah5G/\nW/QnNANXfLqq6CpbEGLJ95nw4qEoFlsTYdRyN98SUrmWUU2LS956hxRab0Dk\nxaCyfGh+Nnqmq3dHninP/gSIpu4xTSw6DvjA0fd1BWa4Gl8S3l6vb+o9ZvKT\nqHreLl/SyM93O6fYB0uZCUVJ/W0TCb4XMB6a1qRupozavhyoN1d+XIxJvQHM\nLIT3290YBLsm/85YllQ6/8CRK/ietyWXYIneLTjmIbfmnkocx7kf2DjiXjCF\nfvi3FjY2rdWm/vU157JjJC/j7+EJPn4Dxv1v8wC+Qzih32IlY5KlKLC3nw0D\nCt09\r\n=Vpt8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFfBAaJpvqK80/itVcgmM6oc74qmbgt3fx6dj9ERgg5EAiBVSpovlu2msS6O4ThRT8cmGx0WgPTUVBgnXa7TbhyxUw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610983103-1e81b81b.0_1610983271224_0.0004657692913736522"},"_hasShrinkwrap":false},"2.40.1-next-1610983877-ecef63e8.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610983877-ecef63e8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610983877-ecef63e8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610983877-ecef63e8.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-6NUe3irBCzIuGcgYYLVbFkufsVsrrf6AL7hcOrslHidW/r/lFXmEEK2Ffhzc/8OXIztKxZvZabNrxMiST/fSFw==","shasum":"4eff3b89f1d0d68ae19f6e82df24f3398cc4f3d5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610983877-ecef63e8.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBapjCRA9TVsSAnZWagAAeGcP/RdvxVqKeU9uGGfrvmen\nae8bgMpGQqKE+6zCPl5ekN+fBhxgY3Q16lSOM9tIvqcYVby4berdlmiPIibh\n8I+qQ4gS0mYvdj0u8t7Nt0D0vft9YzRgq2mdjpT4iNg/RF5aJQXnGmNUY5Yp\nntZohPKLIu/XZ9ENz1pb3g8daKqQdQSzNFv3eNSKdL9QSjE6HGbdIpL9nNqd\nRHiaV9GB05U3jcXqAeDwaXANMsimWWvGw6czgpHj7npwg7oiKZk4SB6Y7+iG\nTvTYbQBdkYXdlyv5jylfk+W8HlFRukfGnrYXRbFdZhWWs0bXFCF1+5ZjGCcs\nevkFjFKzZ/uVLGiZPei9ULSABbI8tiwA7ayVp5rtpZ56VPBenfnqfSJp2T8P\ng0oyWdf8WS036X0wmel1SCBjeIGpIAcUyBvw1GtTFCZIOU2D8vgxXqvdn/rB\nLkvG+4UHuXbYDbhcPnANmr3WpY7YX5kbTqtoMp44ihR33WtTtrggL5LmUkL5\n2sVNwqhqcs6I15kVk9WSHfAPOgwb/evpYTXwMmFV5QlcICN8a1or3bdaYrFi\nvVUfYuNrvni1ILawI++JT8F0OtETR3FJ3G8036qriAMu94iP1HLrdH+Aro8B\ntp/JSKCPC2DJB+dgtaMwGK1NlcvCwauTNlXCPTkmL+89zzBOl/hpH3vTPqBu\nRKpW\r\n=0Ohk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH2ONILiHU6tXhIVy/c0iPI63F9Ema8fFfVz3TIdBsofAiAcbu1lMvI1p+kJbwB7uEiTglMryYdOJgm7dwydNeP0RQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610983877-ecef63e8.0_1610984035318_0.05754837061115681"},"_hasShrinkwrap":false},"2.40.1-next-1610984479-7f05b466.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1610984479-7f05b466.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1610984479-7f05b466.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1610984479-7f05b466.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-wempLyxg1qvu1QVQayaoKRixuqws6XxN12l2a7CMkE0Ti797WjgQOHU8gb5NnlRLsKMYl8HyK3EOBwCfPzwZVQ==","shasum":"0b3b6a81ca43da1a7f260cda0b49495a2c724c5b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1610984479-7f05b466.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBay7CRA9TVsSAnZWagAAqUsP/2HuufEapauHbIuw6iPp\n/RiCsJ+RFtlvvS/wNgBc/ORtMJ8p6BwQY01YDa/3z96zxdtDLcQldTNxgEwO\nntqUFoQiwXAirjZ8iQs8RKbYHTBA/Of21MMlVbhoz+R50aU6QvalPxZCUyPj\n0RulB0B0wGhBPwWdrycZQ0x+2renxXJXO2tQrd5Ef8UKA6E3VZ2crz/3yBkS\nq8RDlVSVry6U/VAbzexP/SCYtouPfdpDjE2yk/tGyXaXOu6CfteEMwH1DHop\nmokEuCU1oCXmtdxX3O3srn3yu5Zch9S0YQCG1Jk06uSDblFiguJredLQ94NR\n4voLejAvtvu/O0sIB/DT7JaF86/fzKQmfU/O33im+1jf58xACYN2CK0adpMC\nORNXep6FY0N6E2iY9NUetBA1NCdaSVbuymhY/lzOiupq9uH6JQz5mzZyOJTj\nk+AKkKsO4Bj+8NOlogxK/A/S8MtJFEC+a3g8SoDPjr9bZU3E6LN2DyIEwtqf\n4N6riTl8i7amGjIT4JoMz03P51jlgjTkPK7pWbm6KCLyYnh7A6NO+nadIxgs\nkBhK/KrEz7HBIgwyCTTRZC+YlNVZ41Zwll8Hi4LsxaXnbC2Slb/mTVKY+xrs\n5lBAAGvNTInbfRF+v2SO78Ny0FApzWSo5uDL9l39oVpNnNP2dg5NZR2675+a\nZ8F/\r\n=/acf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHwyEldy+RLwaBqwP8dWRiL1az6RJGR7XKqd22oHtWtZAiB/jZLYRD75NccgRBjzVWdcPYafjf+FnJCyNwhKH1wqhA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1610984479-7f05b466.0_1610984634235_0.11300278811009168"},"_hasShrinkwrap":false},"2.40.2-next-1610985752-243dfbfb.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1610985752-243dfbfb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1610985752-243dfbfb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1610985752-243dfbfb.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-U1CNwccMUd5QCL26aidsb0s4Ar3/lPZuLFeWRuWWDvF6bCm131mRaJLKUjQQ82oXHxRyZ3J32gfssj281dxvWw==","shasum":"a3f491ab03356eb4afee726956d261a2e5b839b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1610985752-243dfbfb.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBbGrCRA9TVsSAnZWagAAFqYP/2fbN03JEXhtdExVDXFc\nAB5H/RkaZeXQ/nhyEUCB6dFNxc+PGyy+x3lqcZN/hhfR6alCQoyUJeabZbSJ\n/rfgUozZVZ+snCR0xNrWuKmYqCmnv8ehwvRmVEJF2Tn0QFlzn/UKbjuYrOfg\nk6CyU/Jol01OiJqnAeZOPaDyGpDNUkJqJCMTpj/6mxbH65V9oFtfixwQ1xPh\nPFOxSmZnyDgAHCAkedwxwWziDam8hBNf31y/3cbhTSqw4kzufjyp7twyXacr\nrIH9MUuzwpCpt0NAxEvVtTmHC5hovYJvCRsXQNp/FRUYZ+yb3/uHkIadYMm9\nx+DD5be3XMjlnZBtZKoohff6DuspZHlmz0l1vxjE8Zp7mDRqrJfTcG7/WSRb\nt/1a1sS8+HmRmRoOizi/Y3utZwzv1y5WaRI6dGNrllsOfGeFkRR8rnR25EY1\n1ZQDudRMEaElxfx7E2MUfX/p2lkZ35MFw3qH2nkH7dZ8Jv/X38BvaPucMnJz\nS45a55ARwn3zE1EyPuZl2tMLsNhdQ9TRymZ/CH2r/ICuFOXMgoW0eyvuCehD\nm56FlWjqKJimlqu0a1XOLnp6UYbOqDu3vM3hW/wSH/tlaPTOnjDa06oGwsgq\nCE7GAmpXG1VMRtu8Od6FgHbq/OWOXqc14rv0wnYBzFSs+UXwbdiESyfjVEbQ\nQe5H\r\n=Nkzb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGatss+GYcIzyr4Gern4uMA4FCbWKD91kxoabza2cloZAiB4SHYCOweXltfiRnIl/feYsC12l5SvA3NrXO0Q6oSWaQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1610985752-243dfbfb.0_1610985898926_0.5745972927886922"},"_hasShrinkwrap":false},"2.40.1":{"name":"@xdn/prefetch","version":"2.40.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.40.1","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-r7yHiwWs2NyBLseKMjVZsIjlgn2pgy9pi7lDAi3ry4Pb10CzgGqOCOyq1hIM45+GGdi4ICXwcJl5chLAUNPyuw==","shasum":"8285f2024bb85a1d0d00a1282fe838491cf40a47","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBcYuCRA9TVsSAnZWagAAxjIP/3XZxmVAjBkTNzqp9KPX\nHsLkuYC8xHyRptqD3ldDVsoxEQsPwSpMfl/CaOF71LQdq/ZKFuExFzErvsvx\nCpYB65+xl7rQtBDYJDxfsxRt/SFrMCc+7L/b8838p712ec4SHy1aB3zqLKup\nRDF33kN0eGRRC+3BD1TsBTZchoN65XtgpCRzSaINJtl25C5CdKZWAnEAI4LZ\nRPMGYNv+cTJbYWbl5mcHnL46IZC9N2Qox+bMioqfHNefnBs8Qc0A7OOKGmVI\nqRskqKE6QHXLH5qk/u2QCNZhOAstyw/6t8TL1NPEp9L7Bt8mDYZidXaHJya1\n1xFVTBKGWikpx1mOUJ4ymITwig+hohJNTcHPu2D7fw1JviZgXi6dTI0gKaVA\ns+4Byv3Zy4ApQ5kWH1dLBi2cyypVDkiFdli4t8Hn+aN43r1A0AjS1avglqc1\n+u3a2OAjqiSH0uhrzfBXOOy9JCBv+DJl73Q7D3/ZX6+36VRqcuC51Vwro4yj\neHl6OeAyKxrutLaqCrwBaqlBCLS4bYXPL4zvCvqgUi4FwaZLHOVgyf97Nl3b\n+0QxmOmmRtBauO9KByfXXrtgxuFk3zsahEJ62Hdn5fku89eSh2M3EJ3zuHZa\nZB9tdW0VntaiQz2litN3mnsYMc6tlfngxHyYHJidBmMDNAy7BMcBES/8RpAG\nTnse\r\n=1Oj+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGr9fJ6z1ld/1OEyYKRnRWNv2H3Lhk/QokMgUHUoAn+xAiEArmFH6L+YnICO/y+dzHBGA3AXEtS+gWvpOQ0mw+Duyac="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1_1610991150048_0.37100718260336296"},"_hasShrinkwrap":false},"2.40.2-next-1611061883-632a8662.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611061883-632a8662.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611061883-632a8662.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611061883-632a8662.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-udbRLxwWEm0dlj1NC1s4Z9f0MsXmH/dmKxgQliP6O9WIn0+jwB6Qe+phaowWA3rxhD04cMTI9vEWRdcKMcscAA==","shasum":"aef0beb41a83ec7c3d72f176b53bfe0acacf513c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611061883-632a8662.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBtsgCRA9TVsSAnZWagAABG0P+gN5Ud67n7Qj3ctltGED\nKZoVN4Vlrhe2kNCR05F78YEQAHpD6BXGTh1LtucVbWcPX2MKM7i/RFpKaJwW\n4cP5fAf9LneY7yftD7U6Ml+czBlLJY7sUfBpI1bHwLLby7un26VSTYiVK3ZH\nTTsk1/s7eTo5G0BGe95tlgWTkuotDqk4OvpTW6ekzEwjZN0aUG6XjNyqjhuM\nr9mHUZqw8WcNi1PXEnpx4d54ZMMpUMSym1fHPB+Row8MIw6Yr1kw4sm4cfY+\nOpiLukmlFYQWWLCBFtLAKXYhSI3l9JumgIQlrqUORJH6LfY6WuiSey8JPNHY\nqEh8eKh8FgfT6z6Ac7XEl4EoYTqgY3PPyug9v9PLYveN+R7pScFnNeqxlX2o\n8I87ueWng2xv2XDkg03ZcGi0DTFep3T7Nlqy+68rf5bXLZ3wzGhKVzROjqEb\n+gXOBD4DjPv/w6PDU2i5HIpn+DzX4P2wVN0qKAXp0v1l2vClN6P6Sclx4YV2\ncOBMx6dQu8k+bG6xwAxQtVzbHZNYMyRl+hNxJkoKWbUoMXgTLfnMC/qdTuJg\nBK7Jc1K23c5QZlirXUMBfLR2FYG685NEYzF1CQNflXAlfaAFfqsa5yuffw4/\nJlrms4G9icdZaBbCzYWAyztM3D5kjyiI+nQZoSWJem5A/30IwGQoWAhkdydN\nyVB0\r\n=3Ye9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4pILlvgYGhB0p3XvcnFqs/K6O6M/QrQjLje3DPxFc9AIgH+TvFymzLqyPLhDUipCUsk4U+JAFRfHHIZr9VfC1rIQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611061883-632a8662.0_1611062042724_0.8664623990643225"},"_hasShrinkwrap":false},"2.40.2-next-1611064902-632a8662.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611064902-632a8662.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611064902-632a8662.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611064902-632a8662.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-iHUAdVuRU909BtH9PzseWu+3n167vWhTuGjF7HUa+Ok22m+lDHNfjOwtQw9m8eXPohFt6iX7MtW5/AHu4+n86w==","shasum":"08fff9b2c8e56a165e08c3fc28bc7519fa73cab1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611064902-632a8662.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBubdCRA9TVsSAnZWagAA2e4P/1MJbd+S24W82vis1E58\nsTKuDBqMWbSSgYGLesgGrWv80X5LgOaT4YvMceQM6w4xKEefx/lkYG0N6dmt\n0B8ad9E74xRS74gtUEqytneh1inWk3Avn+7gLR/NYPMJvHetaDUEKpeZ0B2u\nzlnrgFY/OpCygdwadk4pojcyJPz6Zue0lBe23dEmpkBCHx09Ks6vcgk3OidA\nFH4peH7dtSJRdfwf9/ZxrgHWzD9MWBLMTpy62Ruakm57kpvOPjHGdl1pmgsw\nbfEy0fL1ZcgIKBigDOzRKQG8xJ/RTN2vgTNmhAyuJL0z9w9+KGUqQiuFImov\ngDNPl0SRC9JTdErR/Qfg32I7fJCSdBONrciKQ2jJZSlnk0d+1PWp44s9mdcK\nMCeIaolgBtwv6lkax7+lS5+Hzcn1j1Cx7YastxZBePavDqJaADNR5hm82Zxu\nIkPgS6HMmr7V3JXd4C3tCzgEfCDjCADw20uN9L02m8IKN8mO9wOOiRLJ8rl7\nvlXN16XBZZqOVjr/SBvFCqR5yYu0TfCbqlSunT5Qq2N0d1MiL7CnMbRpCwiD\nIY3oS03wrc5EXdifMWsxKzYaonps6ttNG2c9QrSopu/u6+Odclsgz9OxOonz\n5XrlDuQlM4K2hs+GIXX7LO9PsY7W86A6lDVgKFHPpMgFjjopQSwmxYDuPyd+\ngbjM\r\n=6Y2l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtaWIaVRBKqLU0vYV10e8nBuWDoIpdECabclC3jyKbmwIgXRzXlwEc4PcFcs6TzqrJyDSGbChqMAaOtyE/Enq+YSs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611064902-632a8662.0_1611065052817_0.26948006579544037"},"_hasShrinkwrap":false},"2.40.2-next-1611066255-8dc0e884.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611066255-8dc0e884.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611066255-8dc0e884.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611066255-8dc0e884.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-+6W15O1xuzeCagHyENJtqruN1lVbYzETvi4ashxx+59oBpEK5IqpnKbB0wKPskisjEK1f4JZetpb6gtXNvRHTQ==","shasum":"a94cb7e245067c60a32ac17451e0fb904051d532","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611066255-8dc0e884.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBuxPCRA9TVsSAnZWagAAf5IP/jCSsFcvrXm4+3lSC3Aj\nNPL7AtqR8iT1GTQtiNeip4nI8Yr1oYfZ7XgdHKOd9F9BRO3nziuXu13VKppW\nyeQQQqD9bfAYtLEJsu02fv3BQdi9QmTLAgTcJbM9CJyNWOMVwOHblwztKzCi\nXk59hnnHW8RRDCeidrIcWql42cY659pIsuF9uEY5RKFQry0SgfRgw9JvdnGW\ns7bnKE11L8BtOM5vgkEPeLkigc65StnCndBo4ubJXIfHmM+DxMQjgwf1elWU\nzWIo9sN40/7ozBaX6AI9JQJLHOPZ3pqz1BWFCjxLcLTj4xOoa6tH6qpAZx+6\n8SqxJVKxc2Ht5xwXQY7nmaseMryabFCp3PLc63OgelXyhCacrGL4z4xJ+wKp\nzc58j1Vq/77jIbtq9oOMw3CcTJXSuUcXFWNkthhEKTTJ7++jOuVnV5eAyJGL\nLGWuohhZucAvpWbNc7ZSiPCmkR50ernOOKCzOALa+YmB539b5UNC2Inx3bYn\nswgaPPt0xl3PArKOAzK7Opf3+O3bCnAMeyx4Xl9wL6B29gqI4vauQHYtfm9r\nXHX5/ocUb7TyR9sARbVxKdHzMUFoKf/PiR91LDM/ri5cUq4WA4Wl5mQ3V00k\n++IF5NWQ6ZqzsPypShlLf2bw9LB2kD1U4rMHHEcpZOsIm4BpqwHSnS0hXwcj\n5o9/\r\n=lXzF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICBa2mocVK6l/nBMTcsc6J1hbIIlcK5IdnfTlZhWUy5DAiBBNU16iH6TrIoaLNHfQBujGj3rkcESMHwvDeGRjJxenA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611066255-8dc0e884.0_1611066447271_0.11435360104896963"},"_hasShrinkwrap":false},"2.40.1-next-1611144510-f09db761.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1611144510-f09db761.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1611144510-f09db761.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1611144510-f09db761.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-AaOR+Y48e3nRP13oNUzFUC6vBqNlTKTaMXp+QC0Mjuf1XdrIdHKfPP0jBjkOi8SAVvn/ZELNLi5wLio8bZklRw==","shasum":"abd2f7fdc8f8e36ce13aa2c0cdd30fafed33f12f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1611144510-f09db761.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCB3bCRA9TVsSAnZWagAAIaAQAJ2/U26vGiCC/yFuXs8c\nDv6fcxrlFaQ++XJytprCds5Dmi2KcsK/XV8mb1jBramjedgpwpaeNwzTa5zF\nj6dYwbId4chUldaiVTL+EHTzrT7IwQ1FSxCwX8usFVxiB+cMmAIgWEAx2F35\nw176WLjRr7LXpRZQVh2T3g9hvmQp48DGkDmKiVtLO43Rmdk9ZE0/dy3grZui\nT3pbss2Fr1IOi+FzdmsVFC54ufA4+JeNbn+tkeq7c2ReHAZ1O6B5ObWtdiZq\n4CmWMTHj2Gxlr7fSD60seyf9beZhmNjd3qjRnqHM9fO1UuruvzHIDdVAVbgU\nt/gpScLHnH3gDwipA7hEXlsfYc+4tj5WyuARtijygjRG3TpQRAHBLtRyxn6E\nykfVsBtX9BWkFvVzKCxKLJWLslH17UTNu4AP3PPsmDO0M+Z6kb975F4wYMBS\nBViLKib3SuZg6RajtIpVspol/mi+UfEotUXBIuXZHcBaObU/dvcWzKXUIt9O\nO6i5vnL/0t/NSDzV43EPjn16mAQ4aGRQBcF6HD2gmGPlMpjwy0bnUhTCHiU+\nu2jHcWFme6Q2AM89inNzlhdK8Cuz8nqZiTOY847VpdRPnFHvhvYaYNPq03QJ\nSHqs41Luy19rnD2gcY8veBUmRIMr8S/4GbqOAC4ZOwL1bIW9kCOr872h7sxD\nrSjB\r\n=5JPN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCopL55y1rLZ7f3ebudH46ds9Pc6lHZ4DkKdm/Ufz0RxwIgSBXKSBSb+rf6qdd6MFOEuuglBgCIv8+bJdmiiMvXyP8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1611144510-f09db761.0_1611144666328_0.41460703923961906"},"_hasShrinkwrap":false},"2.40.2-next-1611146337-5f2c3b54.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611146337-5f2c3b54.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611146337-5f2c3b54.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611146337-5f2c3b54.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-eq4cu5MwkBCNXvrCpdAxyddCgy+PUim9QqvuKi5z3vhBkqF6uQQGj5TIomk5p0YJF8cKQX1pCwx06BeH2JSxNg==","shasum":"cff362e415d1c892ad47ae1c8d3fd57df95dd19e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611146337-5f2c3b54.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCCT4CRA9TVsSAnZWagAASjwP/1H023pM6mGT/XLm6IMo\nyCn0sRDYqxAACyFDXMkS44LXzFwD/7govAd50cyIG87PEW7gfOFw3QpqMlvN\nh8aos95WouvJ1z9d0FgExOzUz5jLr5lMea6EknwM4zmXouB3WF6+7A2xIRHt\njcrDZATSa1jVMJKTyZl2rpEO1Ub4zPWf33ghjlz6eDSeaJfgROGf5z66+SOy\nhEarEBFSX/6sz9IjxtKW5JaCASxT4Q6XRGpHSpFRVpjxqiRSwYlP6mWuPdsU\nQoj53sYwjeylGRW+LG5lzGdpCAnLSnKRnFPe8PgJMDEhknHGQZ2qly6P7Rco\nuj0dUQlyhXLsWUOYN6n9szPG6Rso3TqM5Rhf1rCtDv5RPNrCl4JTX9lhBx/R\nyVIVHv8SrDjs6RPda8sL65rhjqgR0DsuckDviCaIIlwN0BoxtTZ0IOeqm426\nGdw9FB+OsgQemi/sHWYDXHC++WtzFaue4MTuJZtSO9BOjr4lEqD8iFUeuN0B\n8Ld57+ld+kopSiocY5hh4c0ubL4Nwdj/JTWm/Tbu4+Ow6FN21jBfhLJghbBU\nwXpxL5tRARx0WC/4+UGq5KYM0VLvBbvu8JmlxxpjVExlfghS3mYWPFMh6yDO\nS8M2bSZlJi4rW5eMNx6lXMJY1gwrtBRiVFAq3QHKt4rHQOiz6UkIJ2ZVtHRk\n4Eia\r\n=njUL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFkwb5wO2dpeKzF8JjsOLhFkCuohkroTFc84p9LnQq71AiEAxLBMwWCCi0xfyqoJ6cllsoUmT03cstgz0mjra8fWuVA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611146337-5f2c3b54.0_1611146487958_0.6322279566483937"},"_hasShrinkwrap":false},"2.40.2-next-1611146576-7e313222.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611146576-7e313222.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611146576-7e313222.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611146576-7e313222.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-B+6zzTN7IlPFCpGeY+SfrXl8Emo33F3jfnX1upvIov459LWm2le2Ewzr+vv8zKpv32GyML+mWYAB2Kgoc8H/Rg==","shasum":"606f77a2edd4d861219ca9cd250db8e1dc518eab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611146576-7e313222.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCCXhCRA9TVsSAnZWagAA338P/R69T7RAEqAT0nM7tAUH\nBex47no+FQZlF37+caRtkVoXou2ZS02FMY10+RMwy1saAh9KMTJoxALP/PE0\nDVeRVL0/kvE7Fjr3YuqUfrKMBaeYHOFmKmdHfhRBEWmgGwIcrLZ6WIk3BHhl\ne8jSuoYBrNG9hjkZm52pUR35PHLn/zq/DmLNBhgWvPpw1YqDCc/n/DGfyw8A\nbqW1+eSchkH4N9j1TNOHkBGF9trcorHdPa6opGJu0veT+ztcCVH231/LHqao\np+Eok8DNX0qmUl98rx0k78OxX8ElVT+Rkb2AH6eR/1C5m3YC8rge+pviNkRe\nzSvHjRdgW/x9sdrD73JFUe1uHJg/JKuM4o1WcjLGfQQQqO4aqtBg/oCt2RTM\nv9VV3uOppWwCWW7HNsTGZhvwjxm1nwa2H/VRc0W5dxeVQZBMoeMzaqvpZXNC\nnEZaiA8DmviIpwCHQy8TLjt1VwaK+pcHmgIdH7t53DsS6YsXWf16RRJdbT/I\neECZ1Q2bVOJEmKisSUH6UBA+IUCwgpcOFQwhuRWjL1GM9A5UjN+3XeXX8bRi\nLoIENv39AdTmkqyOfqwVeayMH6ur2BsKFaW0+fOCw1lQVHQR7lb8t3sQ/Ci+\ninF14ZSqEM+O194PCt5Wz4KnbbQH9V8jTNlHXVr1jU/Bp1mmYBKQQI5MWFkb\ndYol\r\n=fUZH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDF/x0ehByYFfrEEUWik8BK/IMC6RGUfMbSv8ACkQRdwAiBiinAKxvDfa05zOsPj9TmwT0gIGZWaya8C5eaLCjUBcA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611146576-7e313222.0_1611146720495_0.3795618686083293"},"_hasShrinkwrap":false},"2.40.2-next-1611146603-34453e00.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611146603-34453e00.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611146603-34453e00.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611146603-34453e00.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-6oUdFaBZGEj30+Tmxq57B7Lm6VshI9oDRMIu+88KlXNkVNLSHJe6TUNZBGfmX/QZfrZXrQCfzr/+J1uz7+DxUg==","shasum":"46de7c49c7ae9bbba94c58ebe0fa8e085a022de8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611146603-34453e00.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCCYUCRA9TVsSAnZWagAAf9EP/1ooHwRG+Q3CpeU29L5D\n5F3XvB13vCpGC63TCpmL2uqokTNigGRLN0ZxWnv2Mkh3RgVGMZsy7R50j3M2\nUzuhJlhc4Y9W2o7ahcsp1txKsy3mObs4+npEa9maIufgi7wbp5fRBrx0j7AR\nMp906fvnUOwlYz39SmY38Gm/nK3OvhjnF/4QBlvq5rzuYTZtTjd3H1sBranP\n3EuD9waUhJziHXzpqnmxOQCAe674LhORbMU9GCIC192PPqnehkDG5JIuYSSo\nGfgX6SynrVwO4AfyUSIPd5wGhrf8HTH3ClpVUtPVKXwoGxcmj1FPQc9CRcSQ\nuArAFMtqzpLVG4VJLvIuObg5BAQzuyMelAd7ywdcs9AYNcVnSzzkI8rv0UxN\n88S80fnrVhHjHAvbb5WqixyZ+4Z9to4/aGMSeyLp9j7PVQLP8T3cD7QMayop\ntPjUL+gd4Pz1DO/uj7R5wHzLCL05oG086hhBktwFgViAojhSRsXH+RO240+U\nxD+YSKYFSZZF3qvohynpWVkLkDexO03Cfhs9lfhoNSGiNtRya8SoE121hMfq\n4vo11pj9rumvYE7nRHixgiUQd2cXV4tXKBGkE6OY3Nop692mZg7ttsu2qeNe\nb0LiAElIdL3txLFG19AO/xDnp83p7ucT16iA4MJqxRjKs2FzKvs59sWPk782\n9g3K\r\n=k2nE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqJYWzNHWgjnL6HkRFK6LGaoPquIwNj1zjERGmlPIqtQIhALEB5I80DNwG5BiInBGZS72Cbl7dx1hLzhMkq9d1c417"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611146603-34453e00.0_1611146772007_0.26748198486100794"},"_hasShrinkwrap":false},"2.40.2-next-1611146947-fdf3916b.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611146947-fdf3916b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611146947-fdf3916b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611146947-fdf3916b.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-xPv7u/P+8GikLGu3nx2oqCJQKiciR6+FA4q01p/4O9OI9iZWL7sANBRnuQjeyK494K+aksmic7u1Od3nQ4Udxw==","shasum":"fdd9011a23662e2fba5ac85061c108842afbbdb9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611146947-fdf3916b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCCdpCRA9TVsSAnZWagAA2xQQAJT3XnHQSEARQNDquxbt\nvS5mjpgtZ31P6ru+Flq0kBI0uoUI1UWF/BZur1MRxAccnEgbhTj+L3a3SLwE\nvBLfFttNZXtlBloW6j2n9HEnus7H3EDaG2lw1hn1ijxFh+wByDX0JDZsdskk\nWOnKafdkTmQ0VIS0w64PU3vwFCWFHpr+eSsmdHEDpYyTXh1NokoTli948Vmv\nxa8abA/trp9kkGHHXtnU/OPUE8I5skmDRT12ct0Qkz4aELQ6AQR+9smXZc1v\nfx6l3k8kwNPVi5dcjLM8Pc0XPLD9EYo6flgx2kl6UAdLPzsJMNIfkME+nsC0\n3NNoDVm1iVyEt+dozsUdi/V4B982v9Xi0x5wOi3d2rDN86/mOsTd3nJ6nwpX\nwZMprFQBDItEezO6iLNLxi/vO3xbAvjSk6akb3ya38Q2333Cc8PHCbOSPOq5\nEDwysKa89haooLe5cVd16XOd4TB68XD+s3UOWVrypTPBodz5lSkjF3J2fD6o\nO8iveZ01SQtbV762Yoz0UeK83PAFJC0Ev2AvPW8xk3SldBCWbvpoEGUUAH3Q\njEOcVA0hT3c4C6P/umMnsWcraS16DjjLGR02vju35KPYTL2Wyg/sFN0CqCHT\nmvvlcqQfxzcCs2670CZGuwYKgCBPNBPumS8P72vqLFhO7aSmCjgmN25Vyzqm\n7yFh\r\n=a+QA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICddNQLf3rxkvQSzch31wuzngoKEakWH1gcbEUE5H+M8AiAsAyn0KBDeVoiW2ryAcUOKwI3TO+LgD/nhR/eSa/fgBg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611146947-fdf3916b.0_1611147113094_0.8717959570889924"},"_hasShrinkwrap":false},"2.40.1-next-1611147700-f09db761.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1611147700-f09db761.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1611147700-f09db761.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1611147700-f09db761.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-YUDl+zmVNmoLmEHI4lXXLnFOX6pWitmhC8+1HrnUmovHaSIvYbSevvZsQa+1cpP/U5R9f4JUZrsMVolPOT6UYg==","shasum":"4acee14f656d4669a08624aa6427aee1c5d46e84","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1611147700-f09db761.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCCpJCRA9TVsSAnZWagAAm1QP/j97ny6CtuN47mws3nDa\nedzEMWLHHSkWGr9CbFCfewcqp1SdG23DmFzsf7+AhDu7GBylkvAKwxExo7VR\n92lmm0oNAL9+5KCiYfyIRFaNoKdWDpTAXUtNInl4SgY1yDd50y0ZCv+152F9\ntfxIKr91/DpIQ4ihlKjn9l8u+yVdgENbo/tQi0wNUXJedFfA1F4pVWV24Evf\ncfa8C6asWPwc6MU629synw71qLJGXVgYdo21jHtzNmzeXJP958jFZwD/YW+N\nAQMXLuOuPWNeQaK2OA2zcb/ol97HnJw68NwmDbaKcxiFAgBsnVIdw14tdh/+\nkLLwoZfvveiefE0I2CRZSnB/g4ZzlOUMDPMFRYMM+0mVx+QPSsOVvVC+hYlU\nUnOIcrjVZzsO5Vsoy+Em5I0bhj9NpDNRU8y1SPB2N7AHA+fNK333j/y3iwWk\nqtupl3K/9cPYJdxXWcROUuuaMb+DaIRIDkr+QNCuj7/+qlAlPqOWMcIgUdJV\ngDBTUxj2eRwoboeTI0L0g869wjZF3nqQs/D4txazXAMvM7lAKGJ2+DIzmiIw\nOSRNhTmWruIxJQ3tCHL8Pg9L3He3+GQbNlrxTc+h+pNfkYvd68UzAF0POXBJ\naUtJGB1RaWMkwEkFauZ+AmrMAez121jApr/DHTmAj2TvCdp7BgxLXZwfDQ3T\nnFQD\r\n=5+Xv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH8ZHwcGMJ4el1tQweI8G+0y87J1SkbK413CLX0ZSRSJAiBnEImU3JNw+06wMtGhWrnXv9U+m0vkGiBvmFtBUVEjIg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1611147700-f09db761.0_1611147848884_0.21746862423326196"},"_hasShrinkwrap":false},"2.40.1-next-1611148807-f09db761.0":{"name":"@xdn/prefetch","version":"2.40.1-next-1611148807-f09db761.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.1-next-1611148807-f09db761.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.1-next-1611148807-f09db761.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-UZv+wrfBK5I6Dji6WlADDe7uAph2pq1W1Uoxion/jY4kjufHjT+0Z32rnwXuXpBVLhqwvCW9JloSNRdJ6v6LQA==","shasum":"b2fc9e7b578e67a8b55ef90e68d6f9e1dfa727cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.1-next-1611148807-f09db761.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCC6lCRA9TVsSAnZWagAAHiMP/0hbhaIrsvkUv1H7mDvc\nSJoxBbNzr3cUxX4s5sorSpVc8G9u/s9sMk3xWIQUc3G55jviSHhi0YevzUIz\nzCyyXSvBhUuvyHuOh2Dz/4OEHvpIUPS0chYNakSU43Y1BLXCasfBKhw/g8Bo\nHRLfyvK2RPXzGRpo0M8qVJfZ1mGqMd54zL0V78r2g/H4nffgSgesQ4OV+V4G\nzHK+8BwZ/QoPvXMaFhaeNjnTNin8DP9SnJwpvNhSaDHzxx4uTffJlgomdWLU\nJSwYR9r/MAmR3ZWI2KBobkA1Sbfl/3enI+TqVRj/ywfNKpmMLJvAJqBPFH/w\nIDNkLtrUEtWpTvcL/w45q3TPYzpX/dtyf+ebZX4t1kN1LKHdLvu87m3CnrfS\ndAN3aztbbQacNspu5j/uIt85xwnRkwU5dPYsanARwuGC+GVWfI7v04jB8DrH\n8LNYELpTXfCvd6a8hvVwayh6RyMV8cFiRomvt9mA/p00hn4zOto2AhrD1vWe\n15fH+10W/EKxrDMs5GB+E0L3jTZpV1pkd3U92QnWCr41PTwxVyRVUJD2KuDL\nda+RxDXKhe+V0GcRX1iU4kFAlKi3fG/o9fmMYI1v1MwlEkOT7z5Y1xnjv8Ys\nnK5FYBKVxnMm7PtE2XULllCu8b92u/fkUKIkLHP33UAUP1BCY0KCjkzErtih\nnfr+\r\n=2Vsa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsD17z07FHWI8VKHvsJvzI5pO1E0YdecsOyuzqc6bKNwIgYI9XErXG1IC+fhleYRn/43TXs3Hx2NSf+LwX9jjOuu0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.1-next-1611148807-f09db761.0_1611148964891_0.10211061601690918"},"_hasShrinkwrap":false},"2.40.2-next-1611149840-20639dac.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611149840-20639dac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611149840-20639dac.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611149840-20639dac.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-BW2nCTV/QeCwuNK8l7wHmX+qv1nHKYF/MtD/hfF57jeKdem7LfrE79qcmbLGnyJ8Up3vqcE8ANnbWjcPWf8nTg==","shasum":"e7b45703d3125cb86bce7f1030833c50fc804e9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611149840-20639dac.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCDKrCRA9TVsSAnZWagAAH+oP+wei3rOsVs4yV7fj+kj8\nObtBRdt7kXXxLeuvBDJ0YfKhA9Zj1Qp6Jq2Hhh6SrJoPsDfENGxcYl7hOfxs\nlIaQaPIgNZNYnj4ONzWXjsOGo61rwlbdgplCP5UYLhK3PwI6FhUNFSmF0XNl\nhtQ6BRunIJzkiZm2U8MKp1uwjR7in08twKwwHcKMpB19eEDFzk8oIj4ai+Us\nPFzolWSEPYcCIBlF/QhNwupf77BCi+Pb7Bt8PwWVsYxxGH9+/9k+y55S1EYJ\nk8IyNjJj1oAWlMloT9MOAaWu8k2oPvVZrLnX085bu7cQWjG9m0T7AX9Z0SGV\n7xP+3/5pX7pYX7orrkzgrK+mfHvhzUw2OVxxd31IMbI2znj3zBYnpuOAEezS\niJG86uaTMGU/UvWS+sU4O0gFdpG7ONMIGkHdVTvNRDpLeAhTnHOtpvGKRw3N\nVlJta9LMas19rAS2wkqr5T7S4lPWkOo9zZkcdOd2d0gb/wy5AZVDEfB5oIPo\nNJo2MkDIWgioU4aON674M39AFc/dxH2JAQ4063XqRHVkMFqOwTAVsXQavFyM\ndHBYBzt4geOBhWkYUpfef+qRRu7NK5rDaQg2T2vj6DB17/nPlxsm8cQI01/l\n3fYJFCfOeIRd7l6VZpaSNR9Tbu9nnvIt9DNVlHUYkWCyz//GW7wF4Wd5w+Os\njLv2\r\n=TuPs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFTtmZ8aQmBtyIGU7RFk/xwGqs5NTcVGgBtpVd0YdLxiAiBHDgVjjkMATPqc/KJYkTIH8vMMo1EiDm5pJGRwVrgVgw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611149840-20639dac.0_1611149995041_0.9093047698273633"},"_hasShrinkwrap":false},"2.40.2-next-1611150078-7e313222.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611150078-7e313222.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611150078-7e313222.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611150078-7e313222.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-GFfF99gtuSS6X76NezAcoMTVpYa2VcDrSKvqPJKGWRdRbYQPafR5k9Fb2Cu6ZnR8EDjZ4o8F71AvWptqNZSBZg==","shasum":"ccabad578823802eeaa125f5641258f51ca6290c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611150078-7e313222.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCDOlCRA9TVsSAnZWagAAuakP/0F1Cv2lH2ViOudu+SGH\nEPh6hCjaXtzspKB8a3ovDRhsrb04dYLCqfF3aAvk2LHBq2OO9m6EkcKFkhC/\n0BlxVFSxwDl3P0iEf0CWkhS5EHIeFn3v/cyp4XD5K6XiwJ4rDUYqtBqNDnbM\nSy67He6G5rS0OJvkgAetCi62Mchwkpxx089+FaIwGv/0XaSbHb6HmPst9wAc\nrbPcGARaQgO8qDqqKwwBy8Hd/y7FwdJaUSEmcrzuOLX5Gt2SgvUYiRLRF4n6\nrJnLCYOtADyMQsPiF1zveUypkcdxXhxib6xfe52Q2n+8GrZgHH0howqpZtFg\nInds+RBgVyk1vEsXBhH9RDzUXqlUSgg7kf0vFEFnlObgx1uVbvOBX98dSKRz\nEFHQHhFBm28ZH897PlfaQ6lBuLLe9mb1VIMVk+6vAXnmc/Q4nkBuSspEHgP8\nhJAc20oiAVIa8tfYwd6/gd7F0Ksl3ZY5dP6ihAvdE3zVF5NfLI/EHaT4yWE2\n1XXcImffu9Ah1sa/rl7q7HBNIjg2gQOqnZ5t6GnxhfBFEhh8+D7lOC0HRlae\nsYeQqbA8nTUXlx6+0FKospzTq16xuAehCXq92sy0B0LbSpKDCzmZGTzPaNkQ\nMI3JyY3GWmT/SnQImLE/H8NGRS8wDtkeKEsyW6GYDILv7YnYtjOynsy05PpY\nPDZd\r\n=VYBk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGXpBzWtCN/RInMvslb5CwL5dnsg5mV0laG0qqgvHObbAiEAhB92c9DM7uzFCqdw29X7SiVd7mImrT1KcqR7V69lkDQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611150078-7e313222.0_1611150244628_0.8192001503868167"},"_hasShrinkwrap":false},"2.40.2-next-1611152142-20639dac.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611152142-20639dac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611152142-20639dac.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611152142-20639dac.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Wc5EYCGvHV5umPemp2ZW8MLNsPx55xc81kx9Y8WfugG/DfNHmOq6p+sMryOg9WkWiSGe7OyhyxpbliSq3KKMsg==","shasum":"61baae145c2e950891f4041366fa4e5178c754cc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611152142-20639dac.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCDvACRA9TVsSAnZWagAAdFgP/iXYV89r7C9jLiaLQQO9\nUxyXQi8uHGlHbdZ76KNKXh8Kl3ZCndMMUEgA5EypgQP91ubJ1IrTBx0ZmdLY\nyFM+qFHOzGGlAgIukBY7ooIchj129y74AQZiM3vHIdrJTKU1uMUjUTY+b06t\nLM/Z+DnQUMmrquIIqG1NsDVZMjUagcYVNbbNZ0QZM1SW0JnTMzvyEfJ7Q8tK\n3I4ubBLm9z+bpuv93d+ITIFVSkDxO8P6bMWRUShYgawkJJ8LOxiOWGaa/Edw\nD5pRjGFvKaI6KuaFWVeTtLz0XxiyEAswzpV7nqjk+sZdEF+L56FOP6oLXi8+\nHI8/wSdwup1ijYVSiEQ1nnFAUQIfe3SDDh652PoK6UiTThLzEsHVIuLkEXoj\n6WR8JlBlF47LuuSDxbSjLPBC7xEzremjtMhBLrET87Skvk9k/0iE4vfYqirD\nRwrSJuqixsYIhZRDem8L1TphPUHWGNjlLE6h1/72fOfPZo78pR409BXmlttl\ntE/ou4nBvlsEf573Say/K32wwxx5J3wR+HRl0UyMuoFGWkna1aay7ulAlrlK\nqfJsKFS5gmkARS9P4GbnN0iTkOb53jjCtcQrLjlSiWop8qYjrlsj1SDvtcLu\nYSl+ySRtBM6kJQ17lzpBw4eDGc0LTMDTbQ7wl0t6kCIoAULaPWTVu7AVSDje\nvTvO\r\n=Vfc/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIERqpEiujlxI7bHJnUqdDMlEfGDfNn0rVe25++wQKUszAiBz6k5sZQJQhMLWeiHgqhvKhKF9m4VBVnZ+f7P70pXCSg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611152142-20639dac.0_1611152320208_0.5378043840540463"},"_hasShrinkwrap":false},"2.40.2-next-1611154267-7a34a45c.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611154267-7a34a45c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611154267-7a34a45c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611154267-7a34a45c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-+5kEi4amAHMP28qC5YvZt+wPjreTjHXWUCeEOADSbhnjMVd6NG2rFY1dnNhAjQZ/8lIIY1/S2Aa+qeQ1SPpuRw==","shasum":"db3e286b839fd1e4ee38949e9ed722fad736b14c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611154267-7a34a45c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCEP6CRA9TVsSAnZWagAAGCcP/0P49z7PDMxFYo+htxhx\n/SaCb/TwUDXGFvLYIe50eZAG8iYzbTQsBIwVziGCJd+IyM4MEzQIkZWsgeMj\nkQbxBSSOBt+KbOPB343Ux9m4SmzhL7fgNcBVcEMQzcdCYxvrRWFoNcR4F0J1\neeWedaDSahImNyU30gzmtNILUiXrk1vZAoEZ+crjduLYTDZ8zapUKyj4uScD\nPgFdhOUeZIsV375VFCdFt8JTzU6GDAp/Lvzi9UO9rZto61N7Y7LJqQZsrj2i\nI4i33Ib6wDt5nWzmyDa7wVHZiGdMZ+n2MsDsP+nQ+R7pI7lXSrUj2U3L12sM\nSTSU3dlQSHL8C4TnJ+Es4gvEiVUXCi0o00YTlx3l9y3mMHzb/ZY/tQ8u3ATq\nswVV50z2QQ/u3nqU6MQ3srx1NGvzdGLOmQ45O2tClDX3vULZKMzElKRd0gcG\nTkT0ExCaMV0rt5kjfpiFUB+Q+DDO3hsTDKo0lUmyq0pFRfxl4mCdsPQyMbVG\nZKoC7iGplyNt97LL8Rhhy/+G1UL/Cw7iAuDHItwltqJtTvrb1GwsPVVwbhio\n8lvEptTJps0Bq+49bHR8z+PVXYKAutHj/ZkeakaXomOBOLx5x55V6rpDZcfB\nesQe7GxVZMzxXlrlQ1rkUQXkZ5sOd2rcbCXJJZYgKYg4O8MrxkiGVNgwW/Ut\n6IF9\r\n=fYaT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3rwq2ymPcywFC/z3yKMXy6VJozJPLuuD8CsoQNgQagAiEA0//jEMCP/bW7V228KR2uWwLZx1WhR3ADcNsCxvPz+P0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611154267-7a34a45c.0_1611154425535_0.007101427923470682"},"_hasShrinkwrap":false},"2.40.2-next-1611154703-20639dac.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611154703-20639dac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611154703-20639dac.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611154703-20639dac.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-SIh+uKUHQ+UrUfzf7v2g5C0T03GT7CzNolyV+dTZEJEj0sgroAKsaX1uqF6W8jQ1UOlhdqe8FciMwl+k+WtAug==","shasum":"44c22f49d9e2a1e893fcc15f0869980af85aeaca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611154703-20639dac.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCEWlCRA9TVsSAnZWagAAYfoP+wS48kXM/jjCx3PlP/Bj\nM4s7bRXs0W3/PaMzoxRARMFHXlywRh/h9Vrn2RWtE8U5xUqXGjCJGmA1rLDX\nUKiQQSTq26yw5AAZHvnJnEyfaWrEe1Zjg3ni3dk6CQvERX6YhX8pwQ0qk3FZ\nXd2WGlXu2kVEKVckmdV6ASaJPfHFB9GwoDypWrn1+4ItO4WBaPjhOR0JTbaq\n3pzQ74hWU8ODFRiUZCIeOADFydOxjRKv1mdLfVfUgLJ/Rrog+7h/+h4+4Voy\ndyDMurqwvKUGk0P7eX04zj/FcYWXvs3J0RxHwWabSAuV3RuqQykR4aniKD1U\nJX8F5paKsCS6fsHdTJ+tzCvpPmbSCMtZJT9TCIjgKkO0s0tPCVBwkk+LlkHJ\nc0IXLB1oqNAAa7s2av0woB2xZZ/gG8MwfuEn81mJSoU//shtCKLyU0cCbHTB\nzWbjwR2Ty4hiWkP/IMt6z7re5cSmkXCTH7hUJGLyJU89eoKQa2PBmV+ao3BM\nGN0iTx5DoMqZ3riEmbTryyWYngkXPcoU3gzbgS0rx0TbZGFsD5KhWxB3/sXj\nnZhyRdWm3T/JIStbbxllSH4MjWWPJZyB4kUYDcQtb4RxI7WqLxmMCoTlBpAn\nYiEXj2QtMeM83ouAw7NRwOlrHun+Vlmf69Ib+6r4xdQJDQ8S3jQlJH7OX4Ql\noB/5\r\n=uG3P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHsdWzrbpfbrXFCTtswCbbedytXeesLA9BJ3VqHtV/CwAiB1WszB8c8Kmn9viKB40sQQQmnHlojjEdNF0arWLM849Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611154703-20639dac.0_1611154852770_0.004240356851073379"},"_hasShrinkwrap":false},"2.40.2-next-1611158294-c45d3039.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611158294-c45d3039.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611158294-c45d3039.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611158294-c45d3039.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-L3zrBYRHT8rLJiap8ah46jRJVSV3CmDkpFEsj01Vk/jrvOmwQJ5xmvm1rRVBMbN4GwpP2XeN9qWMkEJcMAzSgw==","shasum":"8888c2796630a9394582a315706cbbcd165fc00e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611158294-c45d3039.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCFOuCRA9TVsSAnZWagAAAYIQAJIYO5fOnVCanExYMO2T\neKxBrSNoimfCWhAuJX33vaCLvK0lj1r8UsC7e6c2WJkrLgBqeGanF4gHjlIc\nFev6BwCyVO4FwxyKUOKtQgKvsq76/IlGiHmmYiPsNy1551CFl9Qv29VdoOfl\nTDMs68joHNq3T5J1ERcxmsgZ+s0JDcc/FDFMilvWsdOoqwx/K+KiwDCvnnu3\nO2MovGv3S+AgYnQPvdi6mpkT8CwL49Yo6Z4sHDblApRIzd6OHo0MpE3kJAwi\nG+dFJs/906UrvHfsbOFpK6mgph8TPsSoa05x14/Y51XZTIdyoy6H3cStLuWW\nnCb3KO8TbZT5Txzhi2MHM2KZbJ4pQaDzL7l5yvUINjdjlJqt9Oz8U8nkUxqu\n4sXRrw/YnXNxdWdQHaa+ssnIfvCYDEz63h6/LHoVPB1jYgPQElctmF7x7hXK\nAr+TaJhZcM1Qxy0sjwpzwDKfQXid6mXKVy91L69nHyNsimsVrMaPBjvDOmCn\nO80z0aoR59DmqNn+LaXs1SqOZa+S2zRI9E9zfnWusnEU3Zdif0yDci/B0wKA\nw0MlztRcZZNjHYNNC3/M8BCwNp9FOJ5JdYJ8k4ZsQ9kU4X0En+llddm4AlqW\nQbuMuXVfVroX3q9GEhZxCRNZSA06zEyhd5eJBFVyGTp8EZAcHlMfNcUDR8lQ\nobDQ\r\n=+jUB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFYy4mj52xLkibFIa9eziJpv+MdsssZtEMw/kjmMPsU+AiAFdgM703mkvl9IaDMD6ZJujUL/w8OPG/H1TQ48/rfzug=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611158294-c45d3039.0_1611158445549_0.867465178237691"},"_hasShrinkwrap":false},"2.40.2-next-1611159195-f52a71ce.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611159195-f52a71ce.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611159195-f52a71ce.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611159195-f52a71ce.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Vj9Vmn8Wuge9kmyiWfdJsgz9G1cep235ZZU51M8Y6f0KhkmvsOAj5WOdw3+apX4fztDfORL5vee23jAZDbl6vQ==","shasum":"9d650e33724eea76c408d7bd032c27787817620e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611159195-f52a71ce.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCFdOCRA9TVsSAnZWagAAwh4P+QB5FaeG6yrAkJ3xEvwz\nAPPSqEp8TN7VoBa3AH4JapacoTHxdmZNpDqchcHBbqOonkXxltLKpGuX3Je9\n4nQbLwYhClkrVLcWmqImfjoIAt5cNPt9fq5zEIpR6UV4xqpIe/i5UmQf7Pkk\nKQg53h/lMiv5Qfd7NVNmwUet1vJJFVuk9zzLs0ozFKgevOcshhssLm2ddiQ+\nVFVctQv6yH9DXwrqP6+0yWaSGWkWL0rbB1fsXyO7X8WtoES1R9DNkgTjX5IW\ncFlRMH6TClWfBvmUj+2U6x8lpWEV6zeIcaaCI+/AoHg4sEPPBQcBnl5cduWn\nIhscAHQ73zQTMJVq6mEjey5ZidXK7NboxghM5cBi7cXn+1MTdV6WjzPuAMOx\nSsQir31lwXwMGhwa3/to9XoWnkHOANfycPNtOuwiwLbf0ry3UbNeXjaQ9z/6\nma/+An6epEjybMfJ0eqdy2G0oMI+1UH9gXMoQXBxOzq4AnMvC/q+Nnq+uje5\nD2MygmUf0YO+pzQQBmYn+VVinnI42DGrJls27rDASRw58GwawKjQBto34kGv\nfcwE6oZ483zoZQmGvAs9P1gDIn7zAGLqtiGjRFBrNd+DfbxczHm9fHRNOLbb\n3vPLZKll8w7z5Fu2AxQtw6hQgKz50MD2W/sarrcRUyHT0cnRFegzvHXg7V8h\nnmBC\r\n=cn+M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAbHzaX0CcFeSIFiIUssXhRUUB1ZjNA5J0/47P4yCY4OAiEAxCUbPIObQSZbd1joLB5TZ6wTfQxwm2MZN4qBqJu59Q4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611159195-f52a71ce.0_1611159374290_0.6833703651038352"},"_hasShrinkwrap":false},"2.40.2-next-1611162369-d4c92ee4.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611162369-d4c92ee4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611162369-d4c92ee4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611162369-d4c92ee4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BdUkk+kaLGyyruu6rKWzyEglDnZ1lmaMQB8zvrmQNxj8sE8gJ1ZcRFEEEw//7xk1Zd2Ob3a/2Crj0AoDYFbUCw==","shasum":"5a02da79e5c8ec234eb3c6c3082110575b375591","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611162369-d4c92ee4.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCGOmCRA9TVsSAnZWagAAF+wP/RQihcXt7+jhU8WLmcKo\nFpHw2MR1yha+C0SqRsaFD65ZXCP3nhtIbs7Ck17hePvphR80NhAn+qaZxQ83\n8sFX2wLlDnjGXy92INA0nBhgbooQ/Dd9PcLzFde6Z/8j8kaJmuU9y82Z/COI\nWBeG2um6v3XUjIDsTnjLiVIyjRG5+hVUd1wC30oSaFHF9xzGtPlBb+9PCGPU\n8OgisX5Y3Kv1cwFOEYYdC3SYPZdOZPmpm8eXaOhogoDFkrfzUkHsuv2ve7yw\n0ljnjT7w9ONhlWNtdZFoXw9snNp6k5Boprid/PpnnAcPGeTBYs4/APEu17xM\nsL7tKRpSDsVARHzlhRSOeOmJkCoWaX8GHKIcruU8tg4mxUEVGdF6fbVkWkn/\nwab7kC+BpWL56JvY5zirLAQMAHFZXTRa2tYRWpw7+vp8oJmVjmltRs68LFJN\nrlJYXGRT7uPmF5h4zB2LDVLWhJ3gdaC49ggZIH1uCEVQKBaXy9KIgQd3c8Yx\nE4J4rfn6KfuDCXb60CVfJxPmpZMVGp348/PuxXEF0wHwTUGDjNxpU6U5+lPd\nh+OrVIjNX7OyXhzs7Zsqn0FqZBCgyIA5XAW+ZUqxRgyXI80IKuvdHXdGVWwc\nbxx2cjI70jBl+ySsbz2vSFF4e9OEIGhm74IpMRPs6MhWIGvv+cCOeC7reIq5\nrBc9\r\n=2RbI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfh9mTIjch0oHHUgS/fyqkYorj7ddDMyNTsUcfvTxTnAIhAPibhmwP9uxTzL/6uUcFVA9hhY66NC7qS1QNQopesUs2"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611162369-d4c92ee4.0_1611162533659_0.16787165209455224"},"_hasShrinkwrap":false},"2.40.2-next-1611174352-d4c92ee4.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611174352-d4c92ee4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611174352-d4c92ee4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611174352-d4c92ee4.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-f01c6dxWvxxffWP4SNfiJj3huBBp+PRJ2M/JVgwS1DFhstgKWh8EajXARZ/ylXkPO3iDfjWa9v0SAcmT3vFHTA==","shasum":"9190d0825bf3d1e680789af0663bf40e19746a5e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611174352-d4c92ee4.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCJJzCRA9TVsSAnZWagAA9QEP/2r3woP+fG7G5e/U+Z14\ntVXpJR9S27139tUPiK2Fco1QdBJAZFIz0RZHohTE3p/3k5B9KxUKladudohM\nnI3rSbeYkqFKCsB445csMGwyqN6d6pyGLm68nSTm18g/GjNqrokuq9PfldMS\nHo0MPx0Mm4s/3RQOn5MB6tO2QOlLUXyhGLMgoUCxvVVfj9SkZZ6gXAIhjGFc\n+36VmSO0PAPzeXT2VdHKdg4z07VtIftCwaNDUJJyxB7qrsfWi/Fy0/f5Vec6\ntWWYxv4Qx0S3RT28gXcTZvK06ydlNuPC5i1Tn6R0gUS/4l8CjldDs61dEfnE\nVi/ZiXMDHgrYAe2RcTHcXljz4SkK10V8QlJ92tsiklgIYr4fD0DBJWMPJ/iJ\nBlNwAg6ROynBUMYiCQ3nE6u/TLL/YTtZL2/hbGbrWZF8favFoQ2NDIe3pJ3I\n6+8cbusxyhQzutWnqg8fpHFhXGvzXcL9cMqMgbALIHM1o9IF5GayS8wPEnxv\n4CEyZvJzbo6h0bD/4UlMA7a/m4EgcKT1bFlt3iOaqU/4JscWpzipXn/mrHpf\ndRnnJTB5v3AcRbJw3FzcdQBeZOB/lWrZvHfoGfPquMOP+KB5fu1Ksrcr1z1r\naEdghTQQD3ngjKOJ0lLcyCNNnRHO/J1oWbd9kRozsAwuiXFy1fgYBlf7D9y1\n3BP0\r\n=spfQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFYs0SZMrAKdacCxgD3mWWqvmbVdyxl8icamcN9pJp9AiEA0bisCHpLNefxS7vZ6amb5V4azzNOwPGs/7Xm9qUVUv0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611174352-d4c92ee4.0_1611174514573_0.1504048478284663"},"_hasShrinkwrap":false},"2.40.2-next-1611175950-5e654544.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611175950-5e654544.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611175950-5e654544.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611175950-5e654544.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pyUxknRrslFhg+MPiAS7fvbNovkDGwEhoqai8Jz+KlwfXQC5UbL8IXasefgs8NzLsaxhfkhRsdysnWAe+ESnfA==","shasum":"d3a588aef0e4cc2716fa1fa3ec3776e8a6c39ad3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611175950-5e654544.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCJi1CRA9TVsSAnZWagAAJ48QAJQAdj3n2rDbfzvIbmM1\nqBnNFE7J6yQuzraHLv5BPbI1O9NxZKnzSUW8a72A3R5Ec4l27c7K/hQmHr7N\njcySD64Ya90AyM2aaPz2GqKPt3PSOtUF99IhcTSUpgpHbmvEkQYYH33rJLsl\natY4By5Z5l58WABPIzFAy6vQNAblQoGrhBXsWVhmkQQ6BQmGq/mP4VIvzUDB\nDEE7CMy8AoaVbBIx9OUBx5kuXXfXneTYVokmeo0vXXXcbtXds7mgeb2GxJ+4\n7BOZVNwnor80UCtIF872ajdZLjKhgOY/41gRuJR47ah+ulz3BG4l7lIlTrWj\nCWO7Spb9UQUb2zkqWV1U4wM3eqglppsL/YBBYyMlZ3AE4QzY5xvMeK7iO4UL\nNOvxiXiXH5vswW2mm0lfAwlckAswnfUNSdJjiv9neTvSGxNNunDTqjMaVQH4\ni3Houg+ysnmiMt36RX6X+wPDZZEeiNnvb9qghdf+08pOOUWqGSR+lVO0g7ja\namatWGnVKV/WwbhUCMRNkOqMu2oAbDwKPLzUhQGUyE9leLeSsGRM8l6nEt/q\n0vkrqtP6kfufG+Pq3Pf+mEU0/iH99Rn1laHITv/z5WR9A+JJbqP2T7I/STBu\nZotg8RfGLZ3O0v2LhVf0jgCgDf25rpbr7PM7RMeael20XtHlt5LhomhgrinU\nVCMW\r\n=+mOX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcv2Nzs31VQ8jv+a36XfZgbOTaNfcP3r8DzFHZ2imnowIhAMJK67Q0ac+Aemj705P3lF8ouT5x6xnf8K1hQWhDgKWr"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611175950-5e654544.0_1611176116208_0.5664365419118704"},"_hasShrinkwrap":false},"2.40.2-next-1611177481-fa11de7c.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611177481-fa11de7c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611177481-fa11de7c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611177481-fa11de7c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tQejLOqNryZkEVbYNsg4nJayNhrVkd9nZqGTawSBojkM1l+LSs6M5EWiuAhYIlgH6zm7xOyYIEIt9Tzx0xj8tA==","shasum":"ad1a00744d7eaf8037837595bd624481802dbd3b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611177481-fa11de7c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCJ60CRA9TVsSAnZWagAAfh0P/i/UHoohhcvJ6fHKmL86\nN4xjo+De5BEidQF33AlqjBISxf1Q3ocApKJRrpQVla+HrhU+HeZgqjRtcYQ6\nmQrilmGAUJpvxNUD7IGdECYThPh7VL6R5mr0Yqj5MsdxY4Qx6A6gYQ2FwlKk\n3mJkZ5sOuJAC5RJ42LadAl+1mOBF/3wMUpp0L621sZu2W15E54mGdspEYHp/\n48T+Sn1jw/QclpmLu0it6ioOddRK3xPNo5Ki2LX7GqaT7DuXVS7a/q22vr/G\n+6PFRavyq5I8oWccOnEs7mWuzXMF5THX/0VK43aEODDuGXSwuleJV/WZ5LIm\nj0aQnIQZmK06Sw9/tuNjQq8+jkWl4ysjgX6RqPTKL4mWNpjJQ0CiJxgICuzV\neOBExlfC84ASJRBRQU73YL3ZKx5Ir01a0L58vRBOKcpoDEMZ3QsQumaiP6BV\nNTC6gVCcE7F2bPL5XBrpqpJz/ByTm0H+FNK7MKTMkH5z3jZ1O++BfeWDu4k9\neHs2oYIbca1x9Zu02wlaNIvK1GmLIG3iAFqmEtr7alOHEx38IdYCvmsdFLw/\nDWteiAk4b7cccJ8eWtQcYgoKnofMS4py+3IuS/glXj8tN9F0a44PEILMWd7g\n0mbpT/5kOraQTK75dOV1wt33nq3lfTCDQCTnNwiMvmdT52mbF+snHqdKOZKN\nmKhT\r\n=qIf9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFSCMyPxqN7FuWu6HZF+ptgy4pO3wKv2gWtRTsyqTiFdAiANU1R9puHz5yesOMEESNyu1P/v4xL2RKFt8PESD5wI+g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611177481-fa11de7c.0_1611177651634_0.9002659128613781"},"_hasShrinkwrap":false},"2.40.2-next-1611227928-fa11de7c.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611227928-fa11de7c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611227928-fa11de7c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611227928-fa11de7c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ASdHQ2pQ+zWOEPaVz4AxGqFfvZGbVP9C0+JG3/LlrUoLxyW307DZv7zLe7AFFwRfuU7vR8m+RfdeHVz8i9SANQ==","shasum":"9a20ee3435b05f8090d917dee4c9e93f53f3ce19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611227928-fa11de7c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCWPICRA9TVsSAnZWagAAhdsP/R68DfRqwbUR1jh8y6lU\naUrzMuSFOw1IHBaaYiAyB23oCC89ovVoAEIBB5WsvDwB81hAE8G9Qxnin+VF\n8mbzNp1HJD6sWDTG2qClycResxzlwZs/aJcdIbEb1SUpcEtK4pDJGkAQpC8U\n6APc7BEfPnK5idrXKvo68VPCXX9AcQRXL1y7fkFryVtoY5rE9HWnYdip42le\nmqNCFjfl/ry8Z8vUYh4TJKkNdpLKIa6R1njBIiZrtf3qoq22HIWHToHaiud9\nAl4vzLzZAjCZI3vuzCJKhMyxygi0CT/T5AQ9NYQfoBrBuv5idaHC5uV5BjbN\nntE3b8oB8t4aAjIEihs0i1L0L67kKM1NIwDN9jVaX8sJtn+GRq6WYuVWSRjd\nTxODyv0+J+cJ40qwgwXB64e7FNra+YgF8o+YVFVVKpyVYdrUNKiRcqccxELu\nuhPWAdudqNRrsZaYyCkpqlO0Dg7V2iC7FVTdQA7ujEUL7mmGkHAbfPx+2uyS\nqjZLkW4lDMMJVqdQ39+lrdJwACJqwVjw/Gu7qgS0cjF5Q48Uff4hxsJxiEJB\nYgi0gOE3Jl+J8eUYjUHvxl4cmN66uKSD6QMRxKVadgOCWpi+nHPDN/TG/Eor\nrAPu6lslPNFb72M8QQcOZQbQMuJJtPuq5aSu51r6JnuBcko7YkL33Yy2Y5vF\ngGqe\r\n=hcwn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkvsr/P8HdWGLC6wHSkmen8yjwxaiKunRl8oYBXO/ptgIhAMzZ3T2tJF5RR8eVajrr4KFU3RLtuRGkoseRR/WdzL7i"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611227928-fa11de7c.0_1611228104047_0.19580206497767216"},"_hasShrinkwrap":false},"2.40.2-next-1611231566-68356b1b.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611231566-68356b1b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611231566-68356b1b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611231566-68356b1b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TnrIqtei81vGGeKTJqZX2+Z/3ABGPQzFpKvTJpJqdfCiAsGCrIECpxNK6vW1AVp3QasmDO0hKVwv8jz/EvUfHw==","shasum":"aaa20b7745d03f179d79484d5a0d849c59337542","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611231566-68356b1b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCXHoCRA9TVsSAnZWagAADAsP/3AxbfgKa8gC/+MpgrIQ\n957IGkge8ehZ6LB5CcEw+g8oENZvmLvYLurJ1Q66L2937Uv3OskTKD4e6a1c\nsvWSe8hatJWSkRyWmWnvOTXaf+miHt7zaxnb0yYNy80iOUtl+1zQ6GOrkDuf\nu1E8puOd3/kAciWwWz24BApG4un5gMXDfjhztOBthBY3JiC0l4lVaDgvvbE/\nEAXmXKKaHNkdT4DNr/Jl5tfeQt9lNN4CFe8qXyCmACDcgXLAWRuU/y7YN+x0\ntd16HJg1wlA65+lMlZjb4JlEK+m3bcXFoHKnAOlvFcao6Y8UmnIeKa9VNAzu\nabn5AFjw1SoHA6JJzj3A59zpa6nN2Br4LfaLl//2fPMmkwFxkb7Udgim3uT3\n2wnn6OhWzTRsznRZXg/a80+S/ATgg1HLB/uIL8POdo+OBxH604F15aYY8RAx\neRB4tSaQS0s15Ymi8WweKOskCjhwhlOAB/eb4QIlauEAZdIl/OGIM/qys89n\n3MLXmKnvNBlwzLbgqbrpOZmTE4jfdhZPU95P4HQonC/mBLSx9AJTOCxY4TNK\ntvRy9Y9zbDj9eEfajXpmwuSs2oX0U74yt1Le/Anp8g4vfjESuPiWGFNSkf+w\nz4uHeZ/LVOfVaBeAzqdV2QP4hV3Bo+ac7jxAP2+1sZknRlloK+EQWHSGXyKy\nEc3N\r\n=izEA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBf3fdDcSHL1CbbtdtlJyHDTnLe0FEhYBk1fCtbKKyrFAiBPqQPc3hxBRvzMgG36sCfNsVDlhtCJGpCvzUq4VBpUxg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611231566-68356b1b.0_1611231720196_0.9665583344790747"},"_hasShrinkwrap":false},"2.40.2-next-1611232803-7160b394.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611232803-7160b394.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611232803-7160b394.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611232803-7160b394.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7FiMluu8BsFrAqfY0T2Hl5BmHBLqBdTy4SXY/+8B6DHcFsfCthQSmfj+CVQixaHvJlBAhI/8N2Ij8DeY9IuaKA==","shasum":"5a77821404e4a7e90c3b710382fd53559d8dcd35","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611232803-7160b394.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCXa1CRA9TVsSAnZWagAAE0wQAI2suUkIOgmApEROR0vZ\n6TnFMBtH1NGNDMdr/JMTLGoMYyx2LT0DtzN+aZNHQjW2W4KKNhvs/t9abdUS\niGWLqul09Nqf717nt2Lrtg44vaItUI94ZNt3YjrAqOacbL5pmx2zN+Isn/ty\nYOBTtAHx5S5XHeiRsM0QGnNo+RU2EfMtCcGSYxr446Wc3xwfNNzCt/T713k6\n+f/o4CbIqypZlh2k0tH0H5jNBDoThPtqtJUGpzo5RtlY4mW+7oCGM9iASE3F\ns5dNXQBa0nnOwEAGEPlWmkLbZOr9E4d9ggwvklWdsx21YcZtjsRBqxQnyQD4\nhKPig0VfKyXQtsXUwWslY13C83SvMJgCqtUg7qb1wgsBhYYP/bAC8aaBw2el\nd1Yqfo15ygysVlynSrk2F4xxGOxtJ3ulokJdQrEegYURf07Uz31Rz+OmSUSI\nHypTDcudsbmAb9VZJiCjqDCUBWL8pYZqbnpl/0xDjgnBQRCcMpRkXUDWgKqH\nTYt1bWkFWublvwhXFOkSY1E+q2ooRzA1YBu74Q/liHTPUy08KGnMPqiJOQiX\nWyotmyefvHd15TRZEcRW10T9gjLVP4a6FBV1BW87BOGTxVDgw5lNh+3ZRY69\nAwXUBbLb72KC0zkSkA5e6N6ON0Xr/DgPuC+VL5t6Gjz6uUYIGlGuIiaUOOzI\nneiT\r\n=RALW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCc6y6CBCvMV4D6pV2KgsnNkyTd7C+QtsVU8ZCyWqYajQIgPAbJYMUMuMa4L8rprImw7YherbNk6PoYktpUxuUrF4w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611232803-7160b394.0_1611232948565_0.812492923182188"},"_hasShrinkwrap":false},"2.40.2-next-1611240510-9baa9c6c.0":{"name":"@xdn/prefetch","version":"2.40.2-next-1611240510-9baa9c6c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2-next-1611240510-9baa9c6c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.2-next-1611240510-9baa9c6c.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4xWWs2+73MROHgAjrLfnvHS/aIyeFoyl8qkQMPIWogTqA+2mRbJ19ZCe+gN9vc1SbvD/8INaLxV6tqD9LCTjdw==","shasum":"284ef7b8cbb51156ff89c6c672a884829325b514","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2-next-1611240510-9baa9c6c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCZTcCRA9TVsSAnZWagAAjC8P/1uey7CvcxooDNStsrGi\nIhDdBA5gGa1juZutUVrF78/V14iBGXLPD1p1gdZg5RUFNO4BktT6Vnjajl35\n7BRKyzJulGviFRwwRSgxZ0hQHI+aKCqczcCGjnR937k8MAXqSri9UdQTZyKX\nel4GAr6IZmJdv1DkNmmHKKGId2JNyQcgEB2e+QXaIqTNQI2Mr7ofAdpJx/qz\nk99kbmdFVuI1pwg0udAJi7gsQHA6uvEouZT7JhFTGa47OKhAD4Og+AjmqqiE\n20tA1CBmanKwQE8JiNyBNFxv+8tnWsbbRMruQDvwJ21g5hKGrdPD6lDx1uJL\noGFf/6XzuoAkOz7b5FUVB++AvvRWOVseWe7KSO9Oh09Q2+zUtqRiWCgV1Lkz\nBOx9oQzjeIdXTIxaB/6ZBLK5asaghgPXKvRPtiJ4Lmm+5/wXybzVWmn5OY2w\nLusBA72mKelfaTuo0tg4bUMv6jyp5/S+XR889ZyBv89L6d6unhGO6jV6tVNk\nDm2+LTzc4sTI2osOjXtnDzzct9y3Glm/4u5dr4NmX/iVFWukxPRvnnocUMjK\nnxMQiVoeUpO+V6re6WdPYoXXAsBc+W3efOpgl17QGpkVDJVuuUri6JsaenbJ\nwjLtOeRwC/K1gimqXI3cPyGcOoTLR2Br+k7MNtZXkkaOiuJeqPs7esFPTFoQ\n7bVf\r\n=I7Yz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBobwlRuTAlJVqwJEqEpl1O/jPTy0+1cptEqywUylJERAiEAwUiTiQMOwehzxPMOwZdPQdm+ZpHe2/OkLjVePNpF5Fk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2-next-1611240510-9baa9c6c.0_1611240668484_0.22359729063264"},"_hasShrinkwrap":false},"2.40.3-next-1611240591-9f1f9596.0":{"name":"@xdn/prefetch","version":"2.40.3-next-1611240591-9f1f9596.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.3-next-1611240591-9f1f9596.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.3-next-1611240591-9f1f9596.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-grk7NHE/718NhnfzZje1kAV835sRoniVdUdmL3CWuD5WHG85KJyPIB5ZOVOiLtmoOvSNsXi3kQQJFP1iVgndyw==","shasum":"298e79ddd1ec60432e44b146387520856abaaa2f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.3-next-1611240591-9f1f9596.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCZU5CRA9TVsSAnZWagAAHo0P+wZEU4DDBdSYWmzITO1c\n+Y11Da0h5TkFWuu3jSYMWnxMHXpIuN8WriQDqoG84Cma1IEtY/MiWh3U25lk\n6vvcJ69Nz/JuLhAL+E1eNp5r1+Ci6bKyypPAYI2FG46HG/zDGR1WJUGdPUwP\n5oVGfhEyB940dydEn+xc2zGzg/nOy4Z15tFB9YmLqZjBHSFd6aebzkz3PaO0\ni90H7hlWgVmQZQ2xWxv02omTErzZcy+6F07aAmD4K+23K9zlRjk49OBh3czJ\neD9vInhWP/VztZR4WajKyYwx+pBMRcLY2QltJFTWMMf6piekJHngNXUFMgHr\n0YiwRJAgy8AJClDAP92AAuOGAtm76kP+BpNLxgwJ6mupWDnDZV983ZddDyLV\nzr2RHmflYiDTmIE2d68q3qPyLeaItPSFymbgD9zL2ouNcmYgIcCMyCj2uf/S\nP1LMPFHVyuodsArlm3enOgEkb9ud+2+gSd6SDtNP9tz9kfnvNZBejC5BPal2\npI2TfP+vewuJc6rA+lH3NGxXdz+wt+mQuAVIjeXft7lG7HSbooZbZJK/LgbV\nV1jXWgJ2DH0wGAo3i4ChQodEoscXloZeWImT11KjApt8Oi8qY5YK9xUbcWtB\nLiYCxKQ5j4GxM1mB2wnjP3x9vSvxCoOjL+ekz9Bzy+sW6rn6rkWxuB3ZO4Oi\nIZtn\r\n=AHPW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdaRZzgcGSzmvq9inFOqmBTH8IFFFvCi/qVgS/6+adiQIgLPUMaex3rd0VoLw0WlReq0YJTUQBqWRxSrhn5/I3eWY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.3-next-1611240591-9f1f9596.0_1611240760301_0.8811351894061847"},"_hasShrinkwrap":false},"2.40.2":{"name":"@xdn/prefetch","version":"2.40.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.40.2","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-R1AacUQpEz58KggmstBkvIPoTl8055tVWpu/2jDfVSx8u0R4ZGLVU5HDbfhejRWBX1L6T8xH53Ju7V0nSQWutQ==","shasum":"afceffa9c276512ceb1c90d98ce8b7b90f9ee8fb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.2.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCZZOCRA9TVsSAnZWagAAWWkP/iSqdCOWDISYsZlxILL2\n1h6ftH2IahtL/lFehLh9LGUGPnpbOD3V3uMLY3ohHKz6pjBlGmLlKC6Txv8v\nBreC9WnBCRt5JNdeDhwbpyZEY8ssdt2J6QRII+Y7NAhaFJfyFdgQhRFYQVrv\nxhD8srhfGHIXwTxFSfwvl+JF+bHo9Dc+MZPucaxGn7nzoI+1L61aGawvbtVy\nBBjCYVznYzwFul8U3Cp6IrEP68b3q4POT3nFuS8LD0oCX/Vnvnyr0EL5fsu8\nPrUmBVhC5wHtPRcidWb62/+1npJ5gZ9oXgDdGQmrCytC/5AUGlbvj9+7Quwa\nkZeE4jU22zNEfC5Y7EhB6IDdxAnFgiZPp1r/fUWEPtyJDCaowC60Qq3JwzwY\n2iaU/AY2G4+pQkSQE1hXBu1aMdfw3IG78bUZDCud0ve9L6dcuUknpQ7h+jBp\niR8ly9CGi8vJmeEr+rSO7dvs2PEUCNCkogv48yYaHZvCXTopBKC29n9ffhNl\nxXHKZsJ/vujjvGWUu4MiLydDEux8QOoc8Os0lJj7H1ORgOa6Ub5FTL+Pg6O4\nZcU3a7I+PWtc0oxHprEueX8jXDHibmVvvQRrjGH2IY/pwpIIRbFNYyvAuX3A\nMeiLuzIKJhqghk2Nopi/ymzQE/rIgDyL6ARu1AwaJasVU3IP+d17HVx6OlAC\nBN9B\r\n=u4nG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCR2IIRc8nf0lpIZp71AiFXUCifkEiZ2q056Y219AtuwIhAON927iq5f9hsEG8EskdszI6GarrzEe5iysodc+XfXFt"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.2_1611241037685_0.04151460139812557"},"_hasShrinkwrap":false},"2.40.3-next-1611320177-b8db6c58.0":{"name":"@xdn/prefetch","version":"2.40.3-next-1611320177-b8db6c58.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.3-next-1611320177-b8db6c58.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.3-next-1611320177-b8db6c58.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ctb2mmAdFFRHzRr66QMVyUOoBmuDukNZl6h/V4Yu2X1HcQPt7ohKkS95yI6K9e3fLvcQrKPxHZ9SaqtFLu3PAQ==","shasum":"81e91dcb2b325ad8c5652d4a6d11c62f69c3ab55","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.3-next-1611320177-b8db6c58.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCswFCRA9TVsSAnZWagAA+JAQAJg7Knc2GpYXd/+GJNuk\nWG9vI7x9t5vuQbxpoPdPMCJdze02W/DnMKN6lnjWPeWgO+Op8VvaEKyD4L4g\nTXCSt1AFOEJWNh4/eC54Lk2zeRYaY46z1LUVb+TdKZilhIi74wlV7GEWEjEz\ne+I9A+0TqbBJBucI0lXMv+OLfFjmAlcNBV5uQl+xAiQQ6tEAdWJFp+R0eNNw\n7xlIrvH0KbM9+Tc41d+l2GrqqkSbPUSMgysGxzsoISoptgHaHu2DRCT9LF2Q\nhmxCuSLJc3xsc5hnKqgilLofWakXVOd6sxVImfCDKtGGv6WLbojBggsBRICa\nDUwI0ytO1l+WJTo9LK430CgYAA2tMJ+tJNJhDV3M7gzL91El0JWglcCdjEBp\naK5RGjZX5L1XtOtuByjcuTOAPabF9ZTUreuB6jO3N4JlzI9WANfwgJgtXEXM\n3gLWKnSN08mB0wOTEp/N+svtOa8aLvuEGePlCZRztRBytomIeEJmcu0oIC8O\no+iruGwoI9p/emcmqqGMLPM3DL0wkq49yJtFCVCv4rG+M7McdBuupUOtDtbh\ncFzfxFeOo9esk8AidvyzoIo6b73LHqdPOt8lsKnrOirZxh7LjTsPXvueM2yH\nFvwt4ZXUim2HUvPyARRVsdcuFma2XPR4O/HbNTGZiBvCElcVKTzndzn58rNc\njNFu\r\n=XLa8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXoKNjaeoxueRxNLTEQ0mH10KkhliaZwxhpMFD+eKrhgIgcGB6Ki795qtDxj/tOnZFNX81YPFzqUiN6j3jNFPYy+8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.3-next-1611320177-b8db6c58.0_1611320325112_0.4770993320866681"},"_hasShrinkwrap":false},"2.40.3-next-1611320473-ca01cbc0.0":{"name":"@xdn/prefetch","version":"2.40.3-next-1611320473-ca01cbc0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.3-next-1611320473-ca01cbc0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.3-next-1611320473-ca01cbc0.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xmEL/C06MTHWZ8HdNjVhmhz/j/uAFkJtb5ScicaH0ixNCCq2Me8oeuG1b+doIogWwxmVItVZSaJWSEgbsSfSKQ==","shasum":"40f20ec922d53d32c0eb5682e1873581e0c120e7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.3-next-1611320473-ca01cbc0.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCs07CRA9TVsSAnZWagAARjEP/RyaTLqUkStxGjSJ1wnK\n4/xQZpVspwqtLXsJ3xMU1stg1ceXLLpwVWqXgJbgq/V0yw3WG7xpQxCOBK1C\nxaKOJLaQxCIRvU/UNJVmOPrChDErbsxcn1m3kyS3ddYrsE2ziypTeHxV3Bce\n1vxePPpzQsGeXOB/QT7hhOh/nIIfszMLdteKt2kSUrZszOfUqld88u6g3kvj\n/F7Yyx9rPHefIHBCKTJs7RZ8Q86lZ1F0v+QvqKQ7MJd6NKLhD0qhE6Y5YmDf\n4RLRTQENhEPT1472X+BWKP+RA26r9ZPdVaIws7usjFoDW1UATuIKpdaQs2Ft\nMPd4I9697Srd9SLiodbhkJGC1EKE/QfZrexDkbOUVyrClZlbMsi3D0Rcle+n\nARx8nSUqgY2HQb7vNsQn45yn9qp7dUlJWhZ2ut0SXg7kUM/hAE+uD20Q9Qyw\nGcJbnLIOIUS4zyHzaOwUyY+LQ4e0vcumv/7YQrssHSPRvjlQ6R35i5r6txYn\nJyqgFuJu7TeYi9xlh/klJo02RMwwvA7zNGS6SgV9EDiEG8lFr8adArUBUN8b\nKe1O6w+vrkRLRL09u/F7trLHkkJcuJg0MDtTQpZLhGH0OzIvh+SHLV5tnqDk\no1n/hXAtclVwL2wsXCsXc+uQi102Jv9zDicpmXZuWR2gGqJfPbMa8HUFL07t\ncroE\r\n=CFX7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJsgYikPbAKCrEYAedvBdb7P292tvWrVndHUOaCwAgVAiA1pthpJgqA+E0C/mx/XCpTm/+GUnqQL4mAZRUj6COAqA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.3-next-1611320473-ca01cbc0.0_1611320634935_0.9546169962989202"},"_hasShrinkwrap":false},"2.40.3-next-1611323008-819f5cc7.0":{"name":"@xdn/prefetch","version":"2.40.3-next-1611323008-819f5cc7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.3-next-1611323008-819f5cc7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.3-next-1611323008-819f5cc7.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WB2SlGdT0rqe/iB2qXfUQE7wyL9ZmhZG8hC5cBX8kttrvEi9Z/wrmu4S5RMCbNZQ/uN83+aJjBJfTcTjz4qVJg==","shasum":"9047ffb7411db95934531d8d7ed3206123e2cc9b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.3-next-1611323008-819f5cc7.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCtccCRA9TVsSAnZWagAA0T0P/2oyWOVChiYVpiZQmqkk\nZMNukVGk6jtvDiKHua5WsGZYcY6Vhq8SQTWLg3xn4jLRfwAlDCL+GecNdBsN\nKyQ6/YSMj+siI5pTRytIcHSPCpmnP3DWe3scMLzR6KfTGmbHOGZnOQP7l9g+\nHd9oXFiJ+VARas2DCRDdbwzXGuuQPAkOvJhoz2VPSRVAyYcaLhqaUQ0cYZxl\nVHm7zksyOlEQqDGuvuZyPZdkba10neoiwR3BSfrNismVIF3j4ks9yoyWo1lK\nV5lG8pL9psNeTHPM5ewIvH1zFs2L4gOHIB9zCdeb5FKLqJPbhNacaYQfsdP+\nwro0mLTfC7S5dV76IJoj5LvezObglDZG7/JPC8C+62bvchVF223faImBp6HX\nFKs2GLTt7PDAqoTwiGSGYRoEBKpX8XRuHM+rfRAJtsXlXLCoauGsvbjDzwPd\nJJ3GuT+Rj0N6BtfT5/1QprfzFOyvU8xI7JcL43YVDn41mAhbY9DKgt/mNn6Y\nGBxLzgSdHBtyGWY5FgbaYuasFRVr1bXDX+rcVb6LzwDl0uQMvn0RqVmooVn+\nInv5YAwe/EbUVHdnKU0Blor2LgEfPE7wcVEEs0l0zuTaRITwS1ufhqrXzMdW\nawQFz6vTPLnjR5pCoQI99nCIgf0sL/4qu3YIlIXMtyLAEuB2watcRDAPa2KG\nyFWz\r\n=8iqb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0X3iF/T9L+qylZ6//mMqJ2oRP1qB/z2yTnAgYPhX8SwIgAMS6s05iPaATFeg/UH+lDeuMsJkGPjdhGFbj1GsQJ80="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.3-next-1611323008-819f5cc7.0_1611323163720_0.2235702252063292"},"_hasShrinkwrap":false},"2.40.3-next-1611343469-8ae5672b.0":{"name":"@xdn/prefetch","version":"2.40.3-next-1611343469-8ae5672b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.3-next-1611343469-8ae5672b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.3-next-1611343469-8ae5672b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LXWmpq2lEvt4TIdnYh1rjO2rLJDUwUGxatHHWdzpM0EMataUEpYQy52E0pa9N6SjJQnRQUOq1WNu5+8Xyn+img==","shasum":"4e1421c3515e89195eca1ee4cc936f13de07b2ef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.3-next-1611343469-8ae5672b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCyb/CRA9TVsSAnZWagAAMBUP/2T2SJ56X4mrvPrXUwJa\nu7AfARTkTOr5dX+Ak2LjCfysiszjUfZfWkIBHaejMALpgMP6mk+40ydkRrNp\nworIOJc1zBGOmZDVuZ2U8NJl05FHmbb7ABexwv8y0EGbUoTeuPZlmssocdWr\nJQjqI+NuywHkHT0VLOmlHqI+yK7bgylw+Vu3TYHQ+wVEuXvPm0VOVZ4WRT9N\nQzWPtoCcaOa8n5TPx7Fceazz5cIchhRkigGzmiH3xV6DR5cApXv455ekPd1T\nglBY0QAIVe5TjUiBUlvXz+o70H6n8mTYtk77rh3Qx4JDKJ8cgxqgjotAIhUi\nj5dQtflzTuE7y8pWBitHQIA9mHWoA/A0V/IEKIkIPf3soKoynFaQaspIaMLc\nD8BMRTZiGN4yWXu6FOb/b6eRGW6ill2KGjEoiXpoTd33Kj9Qx3HAdeDM8kKr\nt2U89bsWnSUVF5PJjVMG2YNmjbUUOa2D9NQyQ7EYX/1q1nuQh9GX6sQsrAs2\n0aYz0n6liErUr9CRBj3aJLvFYEBf1Wsz5mq4wzxITd3VnfusabqRZNIkQa2j\nEGZgwI5uClJFg4+uw2poskHF8mruNlrYsyKSWUChMfJshBPo2N+Q1Arub1J7\nk+J28NYU+zCC588W7ETKazmY1OuA4UrveEdGK95YM/hjRgW1QWUJ7AafEAPF\nhcLG\r\n=tMya\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFClM6xNWbksanCyEnuoaZJWqVI9Kt0025FicLr04ZwXAiAUIjxmMChM0YkaiUiE2JBMItiYVHRadZ6cCQKls9BMNg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.3-next-1611343469-8ae5672b.0_1611343614966_0.10362842528420746"},"_hasShrinkwrap":false},"2.40.3-next-1611345209-8ae5672b.0":{"name":"@xdn/prefetch","version":"2.40.3-next-1611345209-8ae5672b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.3-next-1611345209-8ae5672b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.3-next-1611345209-8ae5672b.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8McMw0vaW7ujhmPlSSXiPpZ5StqwjtrkmjbUYkpfFnlF8Y6XkaYrrM/sgyhmrSrbZuKBceA2DAhQS4PiHDz6fw==","shasum":"5ddc8a6aeaa8e65d74dac7f663dcca84984d1de7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.3-next-1611345209-8ae5672b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCy3UCRA9TVsSAnZWagAA0jAP/ibNduKmJWoG80yntSQU\nM2t6VW5VGNcOTFHcIhceZqjYiotIGK7x2Q2CQuKJDqHxP9QI8Tds2zKC5b/H\nDH70xmmPCHSx2eaW032O2TazwVPE+NwqomYEWDY+5aqrJKPcHNyNqD6C6FGa\nqtimLhlMUF4zeYXgPrCa7cwdL7ueOOAIMRCX8uvm7WTKzP9+aBQSKOln5M8F\nPc7misK0ARc/RM4Z/fdvkyr8gD+DLufzbEaxC4IjYzenF+pNzwLKBujcWThn\nrV3OWvWI2RQqsBkkb1O7tYvzQbEGh9gagUGsBtJ0debIroMBXbuIy5kf3jU7\nwm9V+gORmT3AVOXptO4cUtVwETAwqbXb4bsLw8ghf+UVLskaV32vX21qh3uD\n9psdKGLPYO7wJKL7Mex2u4jZcINLfuv9QY+N9cND1bLhQY8TjzAAmC+ua2uC\nR0s/dPHYrv7jGVS/qBjhT44v1AxkHB6CTw0EVZ0FGYBXXkMTTidsTzVvllDS\nBQEgB9iZsy18WOl7NJ8QNfPE70LXn6yTrUqCQ3lqRZwaOHOySrEA2ROt3EK2\nCm8IqusW+hG3SLTCdUWFiYK4+JPCck2nvIQigSxhTarBTGdoTqWA/VENqs74\nOoi3aaypwkbf1OTQU5K6jtPfIjQkaxYwqq9OqAwUTdhT/YPdqBriO/wyDV5S\ngyvI\r\n=9IZu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJ3A/sT+7fpJWbjLJqIFbz1e/RN2pTBqFY2WhJn6kqUwIhANTO2Lu0eYPCjDOzq8+pY/6cDk7klr9OmCae/GhVd/Pn"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.3-next-1611345209-8ae5672b.0_1611345363637_0.6687147072205311"},"_hasShrinkwrap":false},"2.40.3-next-1611576532-2bdc4227.0":{"name":"@xdn/prefetch","version":"2.40.3-next-1611576532-2bdc4227.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.3-next-1611576532-2bdc4227.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.3-next-1611576532-2bdc4227.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9lwZB52nmqTiLhnMwFOkzM+FGfEotcdzjROjyHuKIROqS6ETJ6CMO0Kr+EVscCOb1OCwNozwuAAq1u+1hvE52w==","shasum":"d88061ce678094c6c0b4ff1006af9191306f2348","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.3-next-1611576532-2bdc4227.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDrV9CRA9TVsSAnZWagAApx8QAIHupXJupA5jIzP9l5od\nRwCZSxlmtYQ9hsXiT8XiSyQ58C5JdufNA8jbh0fnyH7BFty9CKa4+eiyke/L\nvmQCbu+sBNS3sGE7qapuddMg9/Ql1c764C/F09wiwPMg46f/JJ7RUWIiTxoQ\nXf8BbKOmFL7SmM4MKT4huWFEZRX5rNpP/ncG45acA8HciZd1SOEr3NjmrTJn\nOACBWSrTh+KCwrAfIwoSh15ARrJ0YlV5B5e/Xig0bFmEZtXMyNHrbj/+8Ydf\ngIqTdha3Jw7qBnkq4JgZAKV/YIyjevRqmSbL+tMN9QFgiSLXWrR9Nn8Kvz53\n/c2tXue4C/mgnNqgoQizN4D118Fj0HKjK4Iwx+pyuvjoUs38uJJk4ThbBV37\nfCy9ZleUOgrAEJhabxhqecj2CrRWXv2FapLxqK95D3zkMsxdbnRyqcblGonc\njLYaYfssnJ+2TxrdL+MvAF7Mod9IMSuO8mzPgX6Iaswya5CsJXzKGPHgM4cl\na11pLFV6ScRYbGdP8G4KT2BStCOw9WbwrFq7wS2YFDTnnRecx/otK9IEzwX6\nBPGW8z2ygvEd3Z4nhpOCwzLwnKhTcmS0BYXrHM5oMJsWaSqeL11KeHJ5EcP2\nYxBLZUZEKkOn0NzdEZfcTEZPEVDxpsUsZJJNO3gYe/riYI/Bsi4/4Et74L2F\nC6vc\r\n=5vbf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEeXs4+jIqIIbnjuEIoLOpoEsn2LrIp/TQoq4N5lkAW2AiEAtgYaGj0WDdrWx9d/YOK1s1N1E6PXyYBb0LoK9u/g57k="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.3-next-1611576532-2bdc4227.0_1611576700284_0.9450941571097708"},"_hasShrinkwrap":false},"2.40.3-next-1611576922-b8b34a3e.0":{"name":"@xdn/prefetch","version":"2.40.3-next-1611576922-b8b34a3e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.3-next-1611576922-b8b34a3e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.3-next-1611576922-b8b34a3e.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-m1FhowAp53Ebq014DMNIO2V/1myMz9IMrSoSzhnItIy+JyU57HJ18zSxhuZB2n9A+dL6GgSnuz5/7BQ5t9Pn+A==","shasum":"96f51a5003a8cade755c38230b72da9fcd6f2c04","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.3-next-1611576922-b8b34a3e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDrb7CRA9TVsSAnZWagAAjIEP/R/urz5PP8tmSw3+E5Ef\nzOZsAwY+SnWrehPCv3Tvdp2QQ2JpgxS+pP50wfeAYZNXoMH1U4++C3Zls5Vr\nBIeWZFUFchgqwlqWDgL9KhxYCJjO8bAZMvSHsDRGCUh+2SlEIveV6Uuur5EG\nNR0fwaq5x+GYSL/KpvzG/ZjCMIqbP/9R5dW6A8PUgTw7IQf7groQfnIxWvol\nV4MzQKs1JGIT9vGVsxXLoNgw3HbRwrRgzqOz+eE0rvhKvgRoBlJ29QOvdZfF\nBad91lEBC0IsnRp52SaCvsa0gCwwmJ9I4gMbaGFBQygJAddr10r5Gm1PgEyW\nbJSmoOsB5aTw+zEqcmMvPc5TkNJ7mzQF2M/zf3dfuR8e0XCkkW6K8eyDmeWi\n96ILG7Kz6iUK8rSRfAqPJWfUxAq/NqEJZhOFt1yAYrpOz/kxC82iRWeF3sF3\nxxjPKR8wgOqgz2qCtHWmlbPQ50bB1jiEsqEjJSQkTjZmJL/8zC+yL+0HqanI\nAd4uLravqTBYxLIP5kGS6FGR00nkIAXNu47pb9oiTpvlNchbA2XUdv/U9Bj5\ne4OZtMHMHVjfNwXZv/qeYo8aLY+9a+PAPAHA2ow7VxHSUZKIVbnkmCImRoOQ\n9fG2T7HuaNxU3aH4Kp5IBSwiI1AimAKqp76268kLbjbSpk4FjzY4POooCM57\ndHhK\r\n=8BRo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFm03ylV5Z4jJTrftcd77NfzUq43CuvV3E/WFxeaYvIVAiEA2NjmdETZ+AmXAUIH49zgVfK1WntGjPkrLkKlOS12Lbc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.3-next-1611576922-b8b34a3e.0_1611577083062_0.3415751102860365"},"_hasShrinkwrap":false},"2.40.3-next-1611581069-38f31a92.0":{"name":"@xdn/prefetch","version":"2.40.3-next-1611581069-38f31a92.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.40.3-next-1611581069-38f31a92.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.40.3-next-1611581069-38f31a92.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Y/l49cs+DHRP2pN8xqbO0VdkHlVkKD6GAUoNpIPCaYcbViMD05y5hxvEzqye5xo1l6C8xTthfiqyunbJtW/4sA==","shasum":"3c10867c8c09d22fb6bbc44e04ddd80cb1bd3f06","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.40.3-next-1611581069-38f31a92.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDsc5CRA9TVsSAnZWagAACXwQAIMin+hq7TZVlSdN6tB0\nA+2rzAhijV5Am3C1YL3AKfnKBurrFCGPwykUEfYtqpLZmemgLr78556seePh\nfzzv2/64OwBlc7M0vMYYznCWSq0/1oX/lSp7DC6Js3G7IUublgjaInpGlHV8\nM0GgrX693j3rsChtorHrzIywENEyvU/0WRa3wufzSosKafOXmupB0AwVksbn\n3TUIs98xX+NTh6H2FnxFMr8Vnu5Fz5B7IYysOb9lOdHjvSVyeOWnTVTOmWb8\nqL4JtsXZunQeH/Db1eVcJfVOyIAVD11o/7AR9ioJWfuNXYeBAOFmNH4cM2Es\n+whNfqcGLOlYmGdWO4p6v49kUUrVRoL3o8Z1HSv5vuxm+2EPUQ0ByCnv5ynj\nm0RgzNmybzHzHCWK51Kndgihnhu13N8lWONmPqQcvDApibWBQNEyHpwnpU+a\noN6IjaGG5hnu/ONCzoictEYtAAmr/qTipmDEEHAiwU8nvK3hXrK5pFNPdZN6\ni9k11R+NJmlE+5MAyaPq3tyskPm+obKE6QKiAWea7yb8J9yfVb9Nnju22iDi\nfN516llo0nK0u+wvcX3T0SuUyAxDH5ZYzyNfrnevv3R0+NrqFRNmVphyIiEr\nDqummy2WTU+pqecYezOEwB/HdtV5jYLGH29bEUGf8ECKsgBwEHhKdDw+jfv1\n2vQB\r\n=a5Z3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF7AeNeNXscPdtKCyqW0p9dar1+Afj+tAbVg9YbMdoePAiEA4sl1NQkxq+D9+dnZNShgMmB1dAbl/UGPDWOww6qJH9k="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.40.3-next-1611581069-38f31a92.0_1611581241246_0.5488424158765168"},"_hasShrinkwrap":false},"2.41.1-next-1611583271-16c9273d.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611583271-16c9273d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611583271-16c9273d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611583271-16c9273d.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aGAS5xxX7zFbEOpDKMk8Wvx4KZVL193DQr0nBHnXUXcM74mvhB609qEScmsGeNBnfZ2YqHAiGePRs0FPiLfVJg==","shasum":"1b65947bbb9a50f3f765036013bef43a1fb3db6e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611583271-16c9273d.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDs/HCRA9TVsSAnZWagAAJuEP+gMFzBLYef9XkaR+Nq73\nissUQJRuqZq5i+zN29s0WFLZ/v3fTf3gCRAiaq6FEUvTCoyYBmY9DfwIgk0e\nMkBmkYc5VJrpDHPC/7HY/tUjXSXPDkee3kxo78AjizMmqKFJg4dTa2qWnbNK\nsEsxSrkHxAcRURjkezOjuqgzezQKXLjVOoIfL2kq+vRl28EkaY2PE//Sjbfb\nQ/FAwzk2+P3AXsMNi1MFNDIaahvXO7D5uJa6EwCIdUMXQKKj1gY7+LiPTW0i\nF8dvWmuB/AYfvYQUhDsPO7vimb7wfKs+avKeD9aBlwi9xGo3JgX4EmgFtXDM\ntm/ov76G0K5Nd8NAHynCPFi8n2QbMnA0pnm95rjjkE3oEMU8Hhq1w8qrojzC\n+ISEU73BjVqiMGjJ50LOWytlaAHoS6G9ieutenaKKNMbTOuA/PzIhx4ScrXS\ns0rMYcG4BDXjm73x4CeZFoi63t6kZxya/tr/bUdWc3ZsR7+e+GMRrXO6aeTj\nhmOcf+m90vQNa9sEvJQvEZ3yyF0qSiyXhj0IGQaDt9y0zddjToRbnWuuN4MS\n4X5DWllU/JrKVaE7Hgiild1Koi03ttaUe27Iem7RhFiB1GL5mWypQRhq448M\nIrjHGVUqoUMvtMXfOgeAMEnfhU14YlIF1d2XmUkEPFajVNJpJ3fR5FW5FEIB\nLdTp\r\n=PLX/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDcYkDBQb74uJEwks5mGk75jMx7LWq+0xFcZ2SYsQxHAiAmCITrp6V2MmQlVqeY5t1z4et2SO0a0FXcutHyt4YfUg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611583271-16c9273d.0_1611583431287_0.9617185001407778"},"_hasShrinkwrap":false},"2.41.0":{"name":"@xdn/prefetch","version":"2.41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.41.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oRLjWIEX6ONMVFtcHQTBonjNBnkYjsGLYiXerm7Gy+JPLeUVmLjyYw+pUycvC7sqKayRGBtv2+B88ny/LMoFDA==","shasum":"9dc92af93edc97380969d007314f4ab01d508a1b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.0.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDtjbCRA9TVsSAnZWagAADLcP/2AeH/4PtTp1rP4XNGyd\nwGRemBYC/wXeuIbJ58iG13XYhGTuWaj8LkDiwkNBDYQM0FTJFcy6voRlSZ1V\nOGjpIJGPIGUH0dIynERy5b8jJNgI1qKUU9/1V0M7mrfsjaPl7Yw21gm+UucY\nIry+mFPXQG/RvT0jmUbU2yljf8ha1rEgdOCtp6Oj0urYiO0U+rNw9fbFzMnZ\neLGV/OpMytWmHZfvWxAX4kjG5KooV1nHw1MwoH7oeL7yXoSfZd3Dfutk2HXT\naJN9hcwuoe4QnSshImDfixu7pKYh8+EfUYiqpJrJ4RwUWcUC4or1qYpMOCFf\nNcP8dgu59r0yfq7i8LICksKOe4/hAWmgTtexpEs557dk3JUpQmPG7BeYJu/w\ny6jJQKdHCeGdHDcUb/vTqu7DgaINNJPE4nBFDQuAYSnbY4CxhtpmKJCa9Jd2\nNAKWlcb3yQnWQ243YtGeoBrOKZ8tXQkiDhbKSEsOie+gNrKQC2BmD2YZ24+m\nhbcLet+LckAfiQBHJXZg0Pm9At2zRBRbKNLRl/fhxqkEYMTVZBgTulwAjt/b\ncOvb5ABzJMZRSTplNc67z2Xe2HbuKIXRcPh6QuYbyrcVUTeXQk5oHo/m1vP/\naRxGETPvBYQb16ibxg67canvQm2FJ6pUiQFvdsTuqMasLWgwFmVJQuJKa7Is\nh7We\r\n=VWAJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLnIVW5SPTV/+a5jNo4jaJSIMAlmA28jTi4YkmAlxFgAIhANlUKShJfYBhtP0HaqYPtAXyH1olGGZ6Z+Eiddfgi3wb"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.0_1611585754819_0.08678515229910388"},"_hasShrinkwrap":false},"2.41.1-next-1611657751-e6b92987.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611657751-e6b92987.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611657751-e6b92987.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611657751-e6b92987.0","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GDQ7Gd3yvuMh1YGdfMNc61sAsWwHUEVgn/BFHjotMgJZK+F/PxxgKs2nTamG0wUmublaSoHcTVwhp2xPOG2gLQ==","shasum":"5ef8766d0507c1ad37c512c82b6a2ac20ebeae21","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611657751-e6b92987.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD/LCCRA9TVsSAnZWagAA6MwQAJt8NFDP7+EE4ZelLr+M\ndN++NdvO/+DKj7TEW6uW+iYBXJDvHWBM4m+txpl7jnwnz9AQqFn33b8+jyBN\nZ1l3qxfrLE7P9VmwZcrVGHOw0NakW0QlY2ZnKdPM36rKtQod2SiXYEJGxUqS\nVESbDFg2DBkafBrDvt/BQMs/6LuC5UBIsqTj0f1TCFXgvSJgE3CIUhNS4Hlo\ncmgz/nYxKkW8kyOm26LVLoax7b+m9iPn1u2bwuAgc8rtoZ6ZWDx/hlkMmZjt\n+y1rUUG4azhguqixbgbIjp6vUq1AMQ5g2ZL5Pd6lek81AP7mxeJ9vUnysbsH\n6dj34YgCxUMj1ukKGIYkVqyHz3RY3KtanRL2DcgoG5nibn5p7Kfhifirjn+H\nEqSEn5Ei+n1hVSu/T5j2q9xXvNbTeeVk4Xg4ljFowA+fjRYSPy0JRYSTzY3f\n1A8FJlhWZiU3r5IBwHTnVyuRr4MP3m8GoRplr47YZeTFE/GgmEjAhnkdnIeu\nUGEgvJOv+6wJVnuAenQi4VYnBsiXSp/WhQttpOug9i/9DMY7h92qwZLNmm7r\nEKC0juUC3V2x5MoI34V5RvsGba4q6Rf/xrBSXkDWBupEzw+WjsiqZeaO7raP\npg2yghKYE4diLAuqWDi2yhqZ4KfNMQzWwl5/TqqVPnVAsgxmIWNL9CAoNe1v\naYYA\r\n=6ZHb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEBJHh5CzMXYmOZd0avqQV7PNOyOR3kEcZAEDsuQeA0xAiA7c5DsAnw0pybyZhGXyAlBKJsLVTVRnby2eNo7JGGABg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611657751-e6b92987.0_1611657922194_0.1801037221903401"},"_hasShrinkwrap":false},"2.41.1-next-1611750444-e6b92987.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611750444-e6b92987.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611750444-e6b92987.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611750444-e6b92987.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-dBw74winq/Fmwe5CkEmyGnP0smMNeXTve+BBRo6cFenVN3HhW97sm7NKCA0eipYSJAQHRK/cjCCXEUwepBGSKw==","shasum":"fe346f95dbb7df9f0de3ee1b25b169f8488c9f4a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611750444-e6b92987.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEVzKCRA9TVsSAnZWagAA6XAP/RZcSJDng4oGD3lYfrlb\n0RYu8mizOlYofB1RWviB+eBCgsUFGesSQIyfSVCCIpCYBJRJLNYFRSBGurgm\nFXAsvtVxeZ+l+J/EZX5Q6hJTCMFLtCdFJGsgFUJf6KcRiHVxiWDfYZNdeLe1\n0bKRm2jPRVitdKPR1rxmyA7h8eiRozmbFs6efBFnmeGCdgHF05ks936IBxK6\newT625M2I4k8iBpGnqnpqXp5VqYfo8L7cbGS4SJ7K0GOP5TVFo3yuIdgX77y\n12CN1yKqCVTImfk4gAec9Taz7MmB1ScvljdZyEkg5EX00kZTFFiVRxtoY2b6\nieGlYcIAfeFlmTetZrnLQINX/lW5UyNDCcXbWWDmREuzHGpIgNqNJugYAmmW\nJimtqvFMbjqrVOhujjI0XEcYNhEPnUC/p80CumDQEg44Hi9+QyoJ1hQIhPvw\nnaoL2xqkx8Iw3VzjTjQiot8CW54vY/8qEWgGzm/ZFfLbPtjIUIqpi/nE1DkJ\ngmZBqPRPAWd9UiSvWwzu2a6BqWwF05HoAzf/KOBZYctjXfrsWJ7wwla/ji2c\nsTX2FXlSLLnvecBJL2ex34i/f1yaELdxs0aK/YG/+9MKqKXtiHYa009e2aKY\nrf8xFyzUDYjo/TNVw0se4inMZdxQxTqLwFWq1xIdmzxKaNHeheYo1MyVJRbd\ne4KK\r\n=AdjB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDZWsWQFYgjxbQ8KgYRfC/trIOvHwaEnpIolRx5m72XBAiEA9BPg1HYHc8Qy2jZ5tHTZAsU4FB1Juje4rVEDX1BCMNM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611750444-e6b92987.0_1611750602209_0.12039034611446486"},"_hasShrinkwrap":false},"2.41.1-next-1611755596-87b809b2.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611755596-87b809b2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611755596-87b809b2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611755596-87b809b2.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-6i2B3+SeBXjp047FvDIgIKBkuMbfoQTzHFVmJSagCf55xRv+cJdze4NqS5eM0oJtYG9IFkuhPFmpmnfukLb+ig==","shasum":"d656f47e9a8d3ed38821c761397c57970a081c49","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611755596-87b809b2.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEXDnCRA9TVsSAnZWagAAJOwP/Ao3t9c/D7JzeRnSsOe3\ngxJFpSrCiOOEmMO/MvbNpuz+s2XNn9W94a5Ct6PPohUFNdcuthOYEKxZ6cVL\nnSUpV8TobFHUSxNVz6hZpiPeKqQwZWN2cubTKXRjXM/6CZGzFV1sCo3qtF87\nqpGlQxhV0Cdoz3Hbve50Lwd46hnTK8XrVEqz95d1uGrJgPfqfYC1rG7ZWhYL\nieV7FVmYqQSOgJtItCoJaJEbszTZdJ4IoFlZgmG48K2C9VoBudjSM2bNhleo\n+mOuAyiJdpZVvAJ0kFwNmoxUlVWKzSTnVoJR2cBYvMFcjcBSbTe+xw9NRogJ\nhotRVDJdrn5olVT28w3LhfxE3uJtGjh+vq+xnm6Gt6aNkAeKf+vxzRzGErqR\niNsjq9G8PsUsnLyrmJKwYjNwLECPQ61j1dGMmvm4WcAW1gTvoYkp/vtjs1P7\nI6GvNJPmzvzBoAsJRMFEHzanAc2W1+DqpRK+0Xux6Qlk6F4MDPnlFBgp3j/b\n0YomiGyDrmAnFgI51/NFzXgyFpbLNHepVNXBaSWeWuev+UKBqaLTOkuMxWAz\nu6Gag+OYpm+VVvRyodcVJ9FLU9RzqPKbcQjHM2zpO6meDG2IYiBxip5s/GAI\nBuEnGIJd9lkO96arP5Luo/lCCpkBINca7lflYTKm684ysQBm7qfIJLUlv3sI\nOaBL\r\n=fPqn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0XDSDeNTRvSY1+8yo9gybWYC4dNnuy13eKovNmzU3mAIgYJJOF/HlaQtQDEyWCY1uj9Pbfci+k8GDWCDaiEtfPzM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611755596-87b809b2.0_1611755750510_0.9348338954952737"},"_hasShrinkwrap":false},"2.41.1-next-1611757088-9943cab3.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611757088-9943cab3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611757088-9943cab3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611757088-9943cab3.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-KE0MYYgsmwkO8utAkgTlFpACTG01RQSotcE+LV2m2b0Lui3sfuym1V9rWudc0Li6wj/t5ZwkdC0RFD+St/8g2A==","shasum":"280aa67755f3c94ec023f26f40bd8a62b27fe762","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611757088-9943cab3.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEXbICRA9TVsSAnZWagAAxHAP/ij9Mzs00G+iy083Zg5W\ntd8lugmRY1FzB8WXO4luyhcW9/AcmzjrSo1oZtyU8+iKoOkiBL2oV/3I9P7P\nZFetDm4Gjn0KOFX9mzlo8CEAbylAf1wYFpLOSdCBHC2SMjzRCOGFt7Q8ry4o\neIdJjUYQZw0erEjngMM5g+kodOwTw4bOXDtx4SWDkRRd04U/3aS7d6j/h3mU\nrekqh2yTy0akpKLvB956j+8K96eU5fvMQszOOdIkryvQbZaSOb/7cfsYtCSN\nqnBPYJ4cvxQqjsl1CuTljgA62fEMI3j9nGQTjZ158A5o/xFG8mSQJykS2XT7\nGmz9r2xykPD6QtPHMvL13JZXuwbfU72IrGWDr8H8KuOhHr2qN4QLKvOeDN6h\nPv6dbMyx+FEdBlEZd/MBt1XD3he8vjNntkAeA1iHKIYgD5Y/moXPNsE5H/D5\nOHo+tTCmbW1aD0xJNFlLtprcDpXsDtpcKKBUPHwfD1ycjap53Ymiyprgrgmj\n0weryLQefOsBDkLC8BRjAODnFofknPdd9gqmBlo3f8eDlv/+GMakoUPYhjJc\nmNnNh9Ti+rxy4+OnT18ebVHCR+gCHKB4juDWrcsIbsvq1Ntl8S8VagvpLDb6\nomwlo3gnynunETP+nE/X1oKHAUQw27LIfcROkPD3bWNjr44lvTVz6u8WLZgu\nG6Pk\r\n=2NFb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDt/6kPwnwEzE74+COB1F/o31qeanzKNtOK65s8lOqgEAIhAPIxq/m+pQD6ezOgMUF30FG59pdbULY0rWZmX2n2wC4e"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611757088-9943cab3.0_1611757255904_0.8154969894089044"},"_hasShrinkwrap":false},"2.41.1-next-1611783054-0c4f0e03.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611783054-0c4f0e03.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611783054-0c4f0e03.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611783054-0c4f0e03.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-+63Y5H1sqSqTO/Zc/KHVSenSlp7v5kVvZ6BKQnsF0to0YXMDXw2wC50MDPZfTkIHRPoFqFpBSpJwTP7+Y6b6Cg==","shasum":"813e9b126e3974e4c2833549e3d2e943aba642a4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611783054-0c4f0e03.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEdw5CRA9TVsSAnZWagAAK4IP/RPHBZraz+fyA6Eqs7fE\noK33f87T8FaNMpmwYCx5/6QGYtuSkpMDXkHfppSgHum8SWl7ol8wInNdsem1\nXZG5h+zSHTJxz96XuRBm0gU+4z594ZNmtrJqk5zDzf6tCK5EbGboJQhP/iI9\nKQSzWUcWV9Yh9PzaeLED/2aelZYmqBZG/X6snUKk20SeWFJ0ParVdwLriPIo\nhct1v0cxw74r+kYJYFZBN65bSSW6l7JceYGn1jOMFUtwOMzai5AHx7BiM0Vn\nbWtOomtSZEMI4OV5f/bFa7Sx6VuL07P+mJz1YWKlxKN/kzPoYxsXkpjgntzG\nZLQWQSlInsrGrPTQ77Co2cyefyiucbJfVSPQcVGKPX3rQHoMuZ3cS/Rr7hsw\n3gbERNI/sj1VYQ3cqNKck2Ch/p1SNQPRL8TLH6iSZZTlVq7waHh2n5Gxe/uy\nTS3HR62rTGZQaJZ4WasZwh2WEG7L1c0uE9ML9HhzhUTDkwxKGdeC/nUUJDMu\n141ygLQ0WHA9HrPLnGra8uHuOvcykxnc4/NcHXCx6SjZ66pxL6wkvXDPRxUO\nj3/GS3ST9EXfw5V6srrOqiVR/92KxFgysJuIE9u1NIGxJY2kS+q4ZMjfQepV\n1ZTOHeXOTP4ZWRoaH7KQcjoKDLaRijZh6wgQ4u3RdpT4l9k4BM8ITJVAGcBU\n38AL\r\n=KOqk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHO6ZHxBEtUauI09OabGgRV9wE3/JKwMP7w21c2IJpEOAiEAmX0JbnaiIqGi3k9KTN4pR0uWz0FOloVOckS504UI/No="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611783054-0c4f0e03.0_1611783224821_0.9901602420589295"},"_hasShrinkwrap":false},"2.41.1-next-1611787262-fb6ec9b9.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611787262-fb6ec9b9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611787262-fb6ec9b9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611787262-fb6ec9b9.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-DFLkukgmXKlNaBUgiK9Ker1qvR34piOHW5j4CEfKh/GVYXuLltRG6YAXv/01g1STZnEvP8m73cIUg67nrG60og==","shasum":"baf1dd3dd390a1f2fa17ef7629958f7867c72969","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611787262-fb6ec9b9.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEeyRCRA9TVsSAnZWagAAc/UP/igHIxertSFaek9ryF3/\nsOjCVDOutWiXdjq68DH9UApyVgCv+1SDhUHrCLpcqwioTQXPg8qNONCrCq11\nEaxb7bBPrhAr6RC4JgAniX3FvnrOdDnMzC2wZ5ctIV9JmO7JsgryH5jRGzwY\nAeob1byI8Mf8Kmr53/2cLmGdO+oVMsnj/ZfMm4l97n35fLtxVTwnVgI4wBgF\nk7iQBi+yXCMKlyEJD2e6fRBtpEOWlQGhb3VAgmn2Z5UJWXe6jc+0d2Mbz7TF\nQ8jhcqR69ar4ZWJMka+6kwW5bmmphZh8DXE/gduyRYHO7CL7XdMspN9oOXpH\nkWWzv33Bexs1LCT03Se4ofy6WMcv33uFye+VfqCdPQU8mpfAHn7CC4ydLE+U\nq6AJVAgl4XQCuDX9GV492OcjTyaFrjF/6BK+qTf/2zp4UgGVp+El8soPGGmf\n6U6DzB0JhjhjDpEIz3E3HljFn80P03GBn0cXhWYNi98X7mKN4H8iaHE1y4Nx\n2laBQWWVjASg3ePbF+WLxGyeoo0QGe9VbCx2+mWIqDwh5OZZArkPvH/+kdtj\nKqZ6odECGOaoIRPQ84ah2HIty6wY2YkLPn2EjGenN+LweH5xppqzi4ECXMIc\naGH1J5qTNYxmhg1m/Vk5Lq3O5BSsKaMXTBJ6MnS3/tnjWZ9cCPvBkDE6iy47\nO4ts\r\n=oAbE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBSkVfbCCyyRHfExufvzJ+4OYX+SCGLmANx3D3FZ9JkmAiEAz3LWssoYTk4InBPFeCJYV7T9PfdebMqwNTeiWduUyrk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611787262-fb6ec9b9.0_1611787409163_0.6178908536150247"},"_hasShrinkwrap":false},"2.41.1-next-1611789678-5b248d7e.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611789678-5b248d7e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611789678-5b248d7e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611789678-5b248d7e.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-SvS8+I4KRq9ewNGHDHJe6kJvcAEEYpAKp9EyRQOTVBskmBCdYr5/mqjbc9MAHcUyO6g/caXjWYMcgHk26/fR6g==","shasum":"1c487f97769c1d209d8ddfa420769ee34a3b97be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611789678-5b248d7e.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEfYECRA9TVsSAnZWagAAI6wP/0ZTg0/Ui6uD8LzbYlBL\nMgiBHMjD6JbRSkWEjYvUylQfDSRFyvn9PBCj1Z8fHegCWuVKnFZgP31+qzgN\nFdyI82moEdRLqNsuN6kb0vTEJ0tEqeuXIIodKOxzZUC3YkLosyzZBK2iqzR0\nNrY5uDLnxJD8pyZnjO8P5Td1fth3bM0+HBSEDRhcz7hWBry8CTfPpS8WRc71\nWJ8i9zM/twSIe8WxK5coMOs4ropPDbqMfYoiYNkI82JV0eWV9rZWmMD1WIFu\nIugnnlgosnvgiqH+3F9JBiGVoP5MzlFZXTpeJttAELO9d3QgnLhnn7HDApFG\nPrKvHgxw0IHPaTX43WfBSg9xt3w5OIUxYVz1EBvWq5NdhEZZhWRRr8KhmSf+\nGYPygOLE9L0iwbbmwaLEtV+h980Tz6rTs2RJOnm3hflnQ6RILWEKA7G/VzUH\nD+k2yFj5gz3Jaa29sqMfFct6KF0GaBXMtCBb8tGOWMFdvr6Vq0IZ1RyF/Xqu\nGFCMCDTe7ZebR91wNSFTLh9rKze09e9WyrT0fIQG2QC+Jxj0oHSMj44s2JbT\nZLfQEEDM8OiL6ksgCxdQzevHkDxh8Ib+EEiKD4EngPzDdbzUguy0rGvOqoPf\nVrFcs5yVXRCDUCkbqFpvUxQZTCWNmn5bPAot6+O88XjzzWUKwO91nMhb6KOv\nsIp2\r\n=9ShO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAGDtiQQizdpGrodD2GMU5ALHBVq6blcNUCh+XmHn2teAiEAsO/puupiggEXs34nvzA0OAvRK3pwhNNFexpyfTmemlA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611789678-5b248d7e.0_1611789827554_0.8873442025782077"},"_hasShrinkwrap":false},"2.41.1-next-1611790562-a40852b9.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611790562-a40852b9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611790562-a40852b9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611790562-a40852b9.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Pzs+uKbZWOEaiCeHq8uvOlwxVR+AZ+8guVSzlPDGsfmDmSn3Ek4PLs5LuufroOZ5AbSUi/abkLkd85Kj5+JBRw==","shasum":"29831beb865123ed23b5acad53ca16f503b96707","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611790562-a40852b9.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEfl3CRA9TVsSAnZWagAAPrIQAJffePF0QR/mvMrpeN8U\ntnkpbgHCJsp4Jrd2r1/KclUoKtLTKK4ZGU25/xAYgFBMpK1sbVRj0DSpiBEk\nqhbBgWKfEMrmwJ94WJD7tDbB8FNATDN3jNcbGjUki9LymG0t3IUV2UxQ6E/8\nEGgHeJlDKezEMAdC0GFJg7cvhy7biRTgtrVHKa41wRn+qMkmlSroQGj79RMn\nx/xtL0RHxkVDAPaxC4cDu4XuNWbyYDxUrG/BFysHiianVqz76+mzwyr9RfY8\nU9tq/MAinJEqH8CGZG5FBMY3at4Of/pK9BG+MGqWZ2aF3eeIhL11BGMGARZL\nBGpCgMk5WvDrBUwXfndnKhRYOlD/6wE6vKw7OBRcmqkzmyfIWKaYxTvqA+R6\npzgaJJ6G2eBtnwVrguOo9kEd/A52CF4tJlHGdY1Xyxh6fZctqMSEPGfdGxM3\nozJZTcGcI+czXQhH1hYKqn55l1FTxR1rJ37xq+8AbsWejGwOaL0GgmzQRL0z\n8Kf5V5FHsanUNam+OQ4ezFf3gotdcwDWL2Iy2nn+ti2138ZdTSJWdGowRlu1\n8EAZN8TlFa/ZjVriueVK2TTYG+598E/RGsD91uED9zk4zHE3SZCOH9jO2Lxj\nvYDEAUlJ06/5DA03nYUG23bk8zylda0vJLgdvQgl3UJOeAT4mV+NrVPzv1s5\nIyOX\r\n=JwN1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCC2J5xpQtCmgl0k6MSJzLLLHIbAcDaewHtfKiXiJL3xgIhANqmnrCV4VAlsueSGQw4+FuZbdoBKw0qI1raH9z/N0KV"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611790562-a40852b9.0_1611790710834_0.0034793324929451863"},"_hasShrinkwrap":false},"2.41.1-next-1611794089-34cb79ca.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611794089-34cb79ca.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611794089-34cb79ca.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611794089-34cb79ca.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-MXD1HiePjFxbcI2VXcWZJ5ae8csmuFljOBuxXek5hPKbCCOwbnUscnorqlY6uXkrFVI9q9rYOvPOMWeT2dQ6zw==","shasum":"ef9f7a606dfa4e47f78d2358e4e3e3388744f705","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611794089-34cb79ca.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEgdBCRA9TVsSAnZWagAAFXMP/1Xpis99NcGBbm+eDpLW\ncPIWCctFgnhYOxL0rTBh+33GbvDCdzopQGMTv/8vzPJFmlC4S4x20vRflop3\nWfI0/g/oMvCJSmQBHoqx1wuaszCyiMeexfr4lIEVq4FGVoI/VwtZ16KQ7Cry\nKDjx5cFFZYqEWn9lYpZn0Jgdc1py1+gBDGa24iF4CF/nOfNmL1xH/R2ySs48\nz7X/sYLrsY7+R2DhqaQJvYvM56GJUd4IT9FPt0WaGZZKakf0P0nfqW2GiYRN\nq3o2Kwy3HtsQ0L8isAuGJ7UYvYldnUIpXyPMgCQmNPp8zUXlMR6HSX1Bn6Gj\nu11Ab9MBzv4w0yhnEyGt4r0RekQFBRqkdd607Ig7dechyGSHb55fNHYjGpA3\nozCpwlM3QXDtegUSOmo20qIuVLn7K8bJwVGh9JWUzmoSlca3K6ZfDnCnuHc/\n0ziDO7woy3/ngfJF5ZJaglpNiVlVS3DGeEgPz4e5IDVJUqdRa8UHcklPuTRO\nLzlZCE/51zC3Z0mDvWTtsrOaELuIlyuIxcBZSFV4wN9qBOUAUP17mIPV+0Lm\ncbc94wE9Bo5SFKcvzUL0B1jNyweGJFDkd4L+XpmGBvGu/XeSLe28r3bCLDfz\nv+KaC5gWE0Sjs6GtXHqBvaErZ6SQc0Oh9BxMLDGNGowTT6gBPk8x4tgdPoQ9\nC3Gj\r\n=GKbh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBmtXyZ8ryav3Qevp+ozBmkAhitnGUn16lEKrThFMsZmAiAfm274u0cP1jmcQNad4hhR1Mj0s9eIIDSVH/8mryKL6Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611794089-34cb79ca.0_1611794241383_0.3751479799592834"},"_hasShrinkwrap":false},"2.41.1-next-1611829606-fb6ec9b9.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611829606-fb6ec9b9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611829606-fb6ec9b9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611829606-fb6ec9b9.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-lABoQ68AD6UJcnm2mmt8q1CPkYXuoQEkpWFvHwx3+22t5gJkfcNskRZk+777TpibM9md2NP71e0m9MNk1gzMpQ==","shasum":"b854a7deef41ea6cb2afc7b95e762c0f57b75ea9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611829606-fb6ec9b9.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEpH1CRA9TVsSAnZWagAAhroP/0XTgrgvqEted2oXHc5Q\nfqaT0sJUk3WTyt/qLFkBTI61EYoG+BUVPHTUII6TwdbDQ9EOUNNl4WBj4K18\nIFNAuL51HXeUUybRULnl0E/h39mZpxwII9nHUHzupQo9y29Wp2DTIPxjIwdG\ngpzeZJEV0lq5zZLeZO9ZcoXE5Ptsu6uLcoDK8FYX6xQlxNskc0x2gsPvBBd9\noTh9o8LwZd+ItTma6ebW4xS58E1yEpPUoI25NYUpS0NuGXFcIe03UbuA5ani\nNCYfTWwy1kCslHGoSAMMXEvZmBDITg11oQbewcxFXJuSp1/2JtHah+5Mv0jD\nOnlU/S1QA+cSReNjBIXgSfAj4JsmIkK7HX0aHrqVrvSYt+6GwYG25udn5Y6g\n6MFY8dFKHkE5hG5i9IHUGwkgQBVL+MkaKvtEDdbVzHdDWzUsfIEb1Lm8WXAd\nrkTsJWam857gut1dx5orBU0LaZ4ylsxQLCjRTuwXueJxnv7J31LNVot6AKaP\nIhqg6/Y/yEPkT7bgqLyMETFIAPgpX+sLJvRrnld0RwXok1rLZiJUZibtIan/\nEik1GDmJgKU3EZWIlqlqnIOCB43MUgsiy/GSdTbamuPjnFHrtwFV2ExZaPVM\nntUMAzYbXBXImFInEh7WiK7edUi3O/AuE3ckYQm1cxfRtaFrXIFmHNgKhrhc\nOVTe\r\n=gKYH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDPKq8H3cWGpL1VlqQKYZPtf3EPt6Dt/pgzzHwgj9tPgIgQSdwpDps3MAVXEzlgVU10lvxsOxHeaAuT6xpcDadhz4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611829606-fb6ec9b9.0_1611829749214_0.16289442815538013"},"_hasShrinkwrap":false},"2.41.1-next-1611843432-13e74421.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611843432-13e74421.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611843432-13e74421.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611843432-13e74421.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-/WhMdL1UlA27XdEclPagSn4dvJJJB3PV2+g/ATzLKt4ft5FEpE0BQJL58iT2n135d/OJL7zlcS+7vaQRzHBmdA==","shasum":"d32b271e896f9591849ef931dcbb91e99c05d812","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611843432-13e74421.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEsgYCRA9TVsSAnZWagAAD2MP/3TLTcyCWDDyvv8D64dD\nutMjm/DqJKNHnrikseHA37BGnxXiR/DqwFxNOW6JzODJwA35sUMMt8HPfZjh\n3xLg/QG4T0dKcu0hRpCRSMiUXrCtABNTzffeJo5m9RUO2I1q1m79TrpRNe3T\n0Y68AoCuO9BHpZnrrYi1C/A7TphF1iTdMOxT/1HuNBr4UBbMbKZU7Rd+mKl4\nOdK7fIbiFyB+CBFjHVTgTXPemjrVJINT/27NkZQ2XBOfhdCb+S/xUmEv+r/C\noctkydHpxUUznMW/RE5mmYq4Bpf6q4jOy4in0aQsw+qLiiHVVwJpMQ7WrUw0\n2fuE7lIcePxrky+QKENOhFhATOO9+TBOMRE5hfgrcL6tA3W22rD224HdOGad\nM6UfrLECLcbJtkyduOhKETsnitjUUpy9mhWjlTYwPnb0UIQT2uzdOHz87PIB\n2PcjLlSaJViMFmJCJiybjTjr4rDifVuQMzoV3zyCU2B8R2v9JHmrKkCC6fQz\n1YDgFMlRuIvYo3rzgt7VJpIw0Zlie3tv6cZF8kWe/Kn07xjVkQoRqgZyQ2zs\nkyL0WXMLBBSrVChYV5BhOHH9UsV6EtVzTE1kay/kYer3WfsSdVnORdMAcouY\n+vkHpIjc9BaWec8SwTugAUSLcrR73M/S4759/Jw/NJTgNjLZroO94dKQ7lUL\naSaM\r\n=I38c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVHizoo246Vfta+a/n8dJBgBag52NepnOfoSIH1/YVxAIhAPVjX9tri6Vs5OOWrmutkNOEzXHysgAO2giMeuUOfo2T"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611843432-13e74421.0_1611843607561_0.15936873529014783"},"_hasShrinkwrap":false},"2.41.1-next-1611845563-d86e5de9.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611845563-d86e5de9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611845563-d86e5de9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611845563-d86e5de9.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-sgAG09Cc0KLt5r/lXy1T26syB10PrYkfvN5+ygBSHwQXN172Fq7myoCG7zb2kYNAO33g6Uaf6wdUsPABbjQ2rQ==","shasum":"74b8d60604490c974b68977884546c63263cad59","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611845563-d86e5de9.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEtBjCRA9TVsSAnZWagAAuDUP/jrVkb2rb2PQlZOfriHH\n5ycEmPd6FEYTeSbt0Pd5bVbExpaYRITBFt6UiETnfv8PTL0rx3zLejfYyTpD\nTorgj2vk7keYHwTkS9vDTQ4NSetbWpWpKtm6EY4128ZF0P6TgaHtnsstKLn2\nDtyIgYILiP7aUnUNABSMmcYWBCQ+iCacO7ix2TwKpa8ajOp77exS+Gaf222m\n0NdnnmBeLTNWivgC8nKeIe8XiLD57+PbA3WABfJiNTiiXqbK4bTiByQWHenY\nR6dF0Er99orFlWObPkqTG32kWlEH1L7N926hOdLNjFlyp/8CbzaEjjGGNeae\nnH0OwropQV+NywixMe8/lrr5aHmQHo4MInKV8RxEvF/S55CE3/lapEbWWzfy\naEebjBXaCjdbnX5lhKXUt4I+mPHAxyWYv8HDnE9c7AIQAz05ZqldEDhWeFq1\nXzxv6HkH3MXITErSA/qwQCKv8pNnOvX3Qny4/XccSP0CVUi2j1s/CYTnxdjX\nQ0KqRhDFRJHDvd4nWvIPn+fiV/yzGipKprOn5H/uLHgRf0AmiOXYnEjowhLM\nqagtaBvdhlU7+b+ht9nKHk1CltjNiOqVjDuOc/BW3BmMDSciyXcQL4wRqTP8\ndWYn0FjzYuTVykWRP/5g8BkjJwDph+0JQvWaeviMLDzCuEHi6Scbb5PMVa+5\ngyCq\r\n=51LC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC+/AJkWLv9aCXLT3nX0E62h3nRTRIgIhGt9f+0ncvBNAiAy+0ytXaoIUdZxVp76QM7zVSN50yLXq8JUcLDAIZSxog=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611845563-d86e5de9.0_1611845730799_0.34295100601639295"},"_hasShrinkwrap":false},"2.41.1-next-1611848320-129049b1.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611848320-129049b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611848320-129049b1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611848320-129049b1.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ek4Rki60mqNlgH+QHhDeYMhpm145cFAD32lz/DCUOpvjZ5sUAs9HNl7ZvPFOl96tJZzfy9LR2DfnRQLcXJ2k2A==","shasum":"be79011205d14ec919aa5b633cf73b2eaff4ccd4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611848320-129049b1.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEts8CRA9TVsSAnZWagAASP4P/iqKaxwKbReSMp63DF7y\n1Qkj5Is4dFK4C2riW3qknl6PoMijt2ZKAy0c0VAxIFUPC7EYlzVafqnGC1Rc\nuDoyYroTODUCmo5lcHFkRMlbmv/u4M+uisx8Xb/1klxQZMigdnFZIG0hAKBr\n/URcvT/etERjVg63lPxeTE3eWa9RUApjKEtMnWu38VSP5znAFx57ifuxmgkb\nzWwaIJYTFKkvNWmtc+9xKrdtFpeX2rdrCzmOK2VfURpk12KFt/sS4GvIDtw9\nx8+sshjEC2C60Lb/u8LuxOm5Ru5X47kwOUOUar6rIazqqZ+CjnuP3N/LfgBy\noUg0NQI1GCU+9YnzUP+lD5qE98iVEz3ur9mGMxkvtRzcfaItWld8HnKi6zrw\nss35x2ck2RkmLCq+V4o8BsTP+8OHJjh5gWfev2xvbN3hpU+VaybjF82caSD4\nTT7W2fqcxLH5tb+IBoMxzT97r292sPKzjrPsZbc81k+hV0KwXsdRAeA388Y2\nWwrF+Fm86BxoNzohysvZCjZpj5RJN5FUBPqQHUDv5qzBMB2l9buasNubMpH/\nOAGImSwh4eJzaAktdFlZF4jSUBZK+O2rlnmgPAz4iVImkMXuWY1OHzcwXqlz\nfaaUYN7UhakLnsoxVlL8Nrpk0pDRAa5ZY7jPR7VuzzJYRnpsyhmVIIfmK05x\n1RoQ\r\n=3Df4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBe3r2kL18QcCAPTvDbutxRDtSEHlrM1FwXrTNOQRRZ5AiB3ibiTvrYfjW5aJKKH9MUUtJOwLksLZQwcZWc6aN5BtQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611848320-129049b1.0_1611848508351_0.5356991434146057"},"_hasShrinkwrap":false},"2.41.1-next-1611848480-2d556237.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611848480-2d556237.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611848480-2d556237.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611848480-2d556237.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-KkLj+KPuvR9NGJpcyC0QQdESTlqSiqX/CAuKX27zbQbgobIbOTeu8sZhsc6qMoDXR/X+elhRsu7HnFXBELCypg==","shasum":"ef43c006fd64efe20205de14843a2b99557e350c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611848480-2d556237.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEtvQCRA9TVsSAnZWagAAcKYP/jXvSjAzeBoxvIk7MMU/\n4wBV07KWjCssMLeW8jZCI2wcpV9z60VJUg9HDq9SW1ZC9PvcY24OCISVoyLT\n+4EaJKbJsX0nV41KiLCfywhchrt8GgFgbiYosm8hJUWShivYxWqTm+qXrEGf\n6MOdN9wENspNVSJiabfzisDhdZ5C6FnSgSOoqxkRw85RL/6kq546+ZvSvxs/\n/UHgxCGLgJ2FDxtcqbReL6wpI1XoNLd6FmVlnIS7b4c8sTq1QoZ+5Ogca0/K\nFjIcV/9tN/O4wXC9KPAKrIHj/CmEk3TZi5pzIDppqYcooyA7y2q7bS/kk+mW\nxpMK9FekS2Cqs+5xTMgM4xqe2zYnPj7UStlaNvKCDdsc7rw/Zo6MtI0SUZcT\nH9z4QD1NTyNzpkBpGruoCauQfEKsnPx7pRo6n+Z6fy38YQ7qRSPf4ZgMng+s\nJy+gMHtdVDkbJIrZwvfCAbroDhf4FSXYOikA6buAWZQ3yMpRVDX4jDTtoDt3\nu4Gq8t+xxKC/J+VAXun8udqF/aTvo6sRSuzylppu0pBEuObMYdVPHV5gDbCY\nTvSpqkh/8AsdAEU3334NdYvfcLnwWm0HpIUKUg4WpMT75TgSocVraoejlvxR\nz334qUwPQWdFm1xwXSuVX1J5uT4pHUH/qSdKIOHUupw3Hqn01vtGf/IdNQ3P\nMbN2\r\n=PHp+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAW8RYWL6OF1Lw5rOCQ/dlDjIC9ln4Z1u9CuEM8RnrM4AiEAhCp/LQwpyWgQ0kr5oaA8LCB+urF4Wvr3fh/YHO9z3Dg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611848480-2d556237.0_1611848656043_0.4124709826117474"},"_hasShrinkwrap":false},"2.41.1-next-1611848860-346d6daf.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611848860-346d6daf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611848860-346d6daf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611848860-346d6daf.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-g3cOiTjRCUf04wPbys9ejzuTnF2/9NKLs4YUIU5kJphHFvqXCNCZVZ9ILmv/8IJlgo5pvxkQyCX2v40lmeRSAQ==","shasum":"c1cf06744d949d8fcc8b355e10f9258cae4b04e5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611848860-346d6daf.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEt1aCRA9TVsSAnZWagAA/N0QAJdfdzD4ukl6P+9c5J70\nBbWy1d3G4sGDGKwfyV7tBZC0i1FDF+wYwN8bQEVlMipUH6NcQ/alj4XTXiNL\nj4QG0Hc8o+/fHpX40XIb1aeyL4QHVhQlLazA3ytLV077YPY/LRcnCkjILSS9\n6FTYViBigM0e0KI5L4yb+2tC9I3A6b6TR2HjKcodOWNleXDSLJ7e6bfzD16e\nL+zjxf/rYjHBCYDbuYbNXjU93U+rIj9Eh+gkJIpN8rSa3wst51hEX3UdSjhB\nV2KUZOu35b2Cu25i3yveAd7QEQdaLfFjm/jUnoy9NeMIilX2yo6A9bqDWfUe\navG2olAPEY3hH6sBs8RWIAbC6bd87YJWy+BtEfAVNsRIWETldFxbQF6wSlwD\n40lGLTuUVr7hXFBd/J0kKtT5bG0FYQfyGYVkFQP0O9KaavhQnqhXY+zWEONh\n4RqrjwIgKasInxwaDBcmzo9rUSL1CjN6381GfRRlWy29vGlUT1ateqsBLzJ4\ntCNPwcQ+OL15ta0CsMIfNdw7msqSZ7coId3kP5ImtSYEhTM8iz1hzpTCCsmk\nqueJAGPGZthEQzbWEO/oODvaDgQrxyRHc+UVlS2QV7nqbQTZHNECU3+MB1nf\nL+bKFVAq5nt7WToHS5TxpREfcdtzXY5mHThhUbv4SmaZMZApyasTRyH+hQOd\nwT/4\r\n=tG2A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlCOCyJ0jeFhI3W0zFNbqmLk4O1lyXxiKkRY1EMeKPywIhAPXc8DvYCk9jiWCZ0T0yFEfuJPKbHn/L+sMSuiw9iB3N"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611848860-346d6daf.0_1611849049697_0.2860945542918767"},"_hasShrinkwrap":false},"2.41.1-next-1611854398-4aea7e11.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611854398-4aea7e11.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611854398-4aea7e11.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611854398-4aea7e11.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-cb2oVDi3IFnntiIBcOVh+8yx9tiveV/K1wnKbetQy1hCEELjTpOLvB9tz4+oPdzTMOgUd/gUjHnehj3Ty+AFIw==","shasum":"12c4f25995302516e6c1d4f13007a6798c4308f3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611854398-4aea7e11.0.tgz","fileCount":58,"unpackedSize":143540,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEvLVCRA9TVsSAnZWagAAuPwP+gLe8QPJjVBy2fGmGQ/P\nVlFyJC5TGS4LQdFt7e3/5XpzsI4Q3IMdgjmvjBRPP45xx1SstnHZC6Pgl/2E\nyp5uDb19caYznpp9/JDKZxUJ/imbMBOeHUUP+zd69z6hDxGMRhIaB0nIo605\n5D98yQ0cJg9y1pnWaQG2G+9BcChn5YcnFSE8s9bn90rtwqIiTicryRJxb4KN\nFOTxYupGDy7/oQgVv5p3GYRbs/YsdM6vAWhit+YSQiCLtwndVx+VzI6jk4xv\ndREsNRFYH8GK311kGHnfLWjCCsjrjMPiF7cIMOUTkXsBYQbZEUSkvPstQ0fz\njOkuHt5s2jHUWoGjEp7YfpX0TBqGgsyPvS7XZ+ZsWc60XzXo/bYIK6iDVDXH\n1doc4OpBANHN07u+yhclsMCt1C5rLhIsSf4JEvmSskWWwsuJgldX+eklUYfR\nWYn8csxSfO1hXoubUXUSBXKhsiQV1ySz19c/iYTFq1icuGGf5itNmf2Le9zw\nuYswpHsLULfHw3gKDa5k4aCXmy3FmM9hpYF0EistRSG7tkEMYb5wWpDLp42Q\n10mGKgtTmw7O3M9fRu/4ZyTb35NFmOTfLxKUZP6rJCtLjB1ZpT2fwWWpgIDh\ns7TNswrGl2C1aPghEsFYb9oQAeQ7g5lubBQB0/UvFW1AdhVW9aSSZYwWp7Wi\nSKCX\r\n=XeKF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOF/N9rrjE0DEsmSb1pa9cEFGH2uS0sKerRhwWxOKQhgIgToI8dr1BB0SiEsGKjIOwN4ikr1Q5TvL2IbUPmNtkpAY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611854398-4aea7e11.0_1611854549276_0.7097328586889016"},"_hasShrinkwrap":false},"2.41.1-next-1611862709-29a6519a.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611862709-29a6519a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611862709-29a6519a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611862709-29a6519a.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-7zEQCbHI7iDVIRXB99PXcAsfAqGMbc7BXf+Vmvl3gn/Qwvwo1wM1UULW7qL6vexb3Y0IpWqEXyax6u6MufV83A==","shasum":"ed920aba4c9afdb555473f4c90628ece284e2629","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611862709-29a6519a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgExNhCRA9TVsSAnZWagAAzVsP/jQxVTgRSZ11k4ef3leG\nPNK6m1YeVpCTb63l28WijjG514cTLxK418fpSbmorCksSuq9nO/p7vbfX0pQ\nEDgBHPZkihJyMuog+uPhTKGlTuo+RpLhF2q41qkJhvs6vZtcwSgb8YEYxD4u\n/TApMIw7/VueRyNcrDXCFdc6Ccly4Fr65JE00epVyY9EcIOOpw6ZqbwxX0mS\nNYJYKjYpvxCfdFzjGFBR1bXG2EZhBWIPvl8AnT9dz8Pz7UFRJXA/VFZ93626\ncXIZ8AKI/2RNgRQoKjn2mg7ExH64vCVg76oD2jiy1DdzqKtn4YYPHX9amqxN\nZX1G4Es+Rznkeg2sILf9P3nWV6zj3dV7zvYJ0Pwbz/g7r/CQ+ndfqPLf/bK4\nUgY/Wa8x2tAPEOGH2Ph/OyMa43KdUK2cP5JzRpqbR73GmTLpzgLyUlJS0/6Z\n+YnN2msdq5pPYqfTxciDIk/mlUzbgojAeUMDvV5icKtISWjuV3oZ7bSfIcdM\nTrcjEFJF46exYK1gNY1zPPkzXAldgz+JUrpqu+LRo3sM31ns1NHomYYo4XWv\nDgdNwZaV8idQDAo3T1x+mMMwePlNEitA7SPflRzKpa69Ysn6tAkHSOjBfUPC\nG32PiyNqlVX8Y8n1SxjYdDLh59qFkO6zlXPXETyKORTYVLr4ODxAINSb8Jvd\nDglh\r\n=9e4G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZabI4pZoM2CiRPF2DjMlIlruD5PUMwO+r0pByPVUWcAIhANpQdniKsaQo0kedlZXf9gHKxCymc8plZrgd/Q2QXBj9"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611862709-29a6519a.0_1611862880999_0.33819934830792153"},"_hasShrinkwrap":false},"2.41.1-next-1611911942-39183f2a.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611911942-39183f2a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611911942-39183f2a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611911942-39183f2a.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-vsPxjUy1ciSqgiPWKl0i3XTXVoKiIGUgqE6dX10G0e0VTxWMh7mgPq0y18oSbgo/Oq/lBhVaidHY8JZtaPLnmw==","shasum":"60e54033899f8bc8d907b192533f660bcb1dfbab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611911942-39183f2a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE9O7CRA9TVsSAnZWagAA8zkQAJhZcS9M0iaB93CxqUFr\nQpNZZJDIto+B4dOu46gkRYRPcxKPnmsJNmDE6r4WgfTSJFf1/M2jgJeAtMKS\nl72avXSt8CRR3hpQ6AuQIbwTTQ6Mz9t4EXt2ZeH3dPxDMOlyQXssutypp9CM\nIe/Bdq4HzuZyW3x5WzyEsMEQXtBWm/zW/+lT5yJJVe+cuyyBchCiMHfY/BJB\nMTcRhTtdxdZXzhSf6gaOHQg3F+2v8P4ovSyXSe0NEYiZlp0yDZyug7BbWVjb\nRpqa1iQMGBIZIUj3W8linuMLRh7xFgP5CLY9fHApq6SMmRC8c+BF1qXJATzD\ngoaFnGPtJjUaY1IiWu5k2mBuRv/Tm8S18Dbj+2MT0FRQS8qOKSntfh6S3h/t\nJYlI+dfjEyO0zGIGCjQOv5KzeW6JvvxVGca4zZ87rFC16Ag3WoEGTdXo76rB\nqVUONlxtdcggcZYVBaTFUbVx856I3T6zfVpK94Ebq6DUnpxTidApZ8quOVUC\nInaekfWZtZAznZkziZoeHsEACtE3J4P3t/zPM77iDgi4F69QhJquXBIdSi1R\ngOROHgWoBELvsrUFqeSHQSdoq/WyFvXlUeIuTIY+Ziru6bddSZHavqPx5JzK\nfL4zFRIfiE0bFj5tjPvBzevF0Is3hPZuQR26scrD7L4j+IzlFpOnFU0qPDp1\nEtbf\r\n=7yYC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHv8X6EoskXOHtYVpu9eA/b3gRGYH9ewzmOeyRxVJcWAiAittzwrlhuk2AwltkVNAUSUv0s3RXs7wckgTH9fetr4g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611911942-39183f2a.0_1611912122610_0.608106644799856"},"_hasShrinkwrap":false},"2.41.1-next-1611919529-5dc24d81.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611919529-5dc24d81.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611919529-5dc24d81.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611919529-5dc24d81.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-eKUyDtbBDHTwHiGbN7t2q2rDm9UTcYWfF2BwP6dc7qYz58oD5zDv8sL6et7N9Xi6qFwhPYxn7XNnnAoQDP8+RA==","shasum":"9de0e44ee1b9194ebfe03151594143a91b64418c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611919529-5dc24d81.0.tgz","fileCount":58,"unpackedSize":143551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE/FNCRA9TVsSAnZWagAA9TYP/2SuSpjitDbY0p2Te60o\n82UXJelOwErlX1ofovfZvtDBP15lzypND7utueJTVSmx4PN0n44KnXkYJc2h\nayLVXH8IqNOITUvBl78eD/dIBXrhXNUueCicJfNeBW7Sww3DVf07jCXHNqbw\nnGbeCIxjCWHh+YBJSHP7vUYWHEoa65AKGRUylh6JeJRuP8RuzHwhn5xX6WGq\nBVQoSSuvps3lTEf7Izy0OPY7hlaCBEmWmrqJu4kk1BXXs+3AgkQec4zhSnAA\nt/D/qM7y+OUu5CUdyVk9jk+lx8ZUMLuv76nd5MEFWugVa0Syou5Y56vK41E2\ntmXiyLdP99CuXKmgrL+Uf2AKF8k7IdxdB2V5LjPck5g5gpJwKaaLiOUtN7Se\naDErQd303N2mZMfqxJi1yB9jjNrUHS6WmZD45f4bvd6TknufOLKmD9FcdsbE\nynqOxm2haiG3bl+MMFz2FAdv78TGm6dx2MmzRzsAPTKiqj0V8yYHQvdhi6TB\n2QszAsvb6Hwd06kifXhwkS82VZZveQ/5sTOVJFofPcf5Rv7KrbJzKvsuwFSZ\nG2E0sFBY8EhInSqV9LN1afrDMpq+zDZfQ5FTGGvky8Pm8qlzPgjKIMHem+G4\nR65X7BMhLFmJUia3ocrXeKGYx3uIRne3o6RXQo4a8EPD3+D8Fl1B4PV3slFE\nFUKM\r\n=Sn8i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB2B9XqcHmZDS0Nu6a7ow0x2At8offCVh8WhUR46iPaDAiAyWixiI0Kix+xVdFeoSK1tjlu95GxNknnVsDaL3I3v3A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611919529-5dc24d81.0_1611919692770_0.41001518828254846"},"_hasShrinkwrap":false},"2.41.1-next-1611927661-23a8bfd0.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611927661-23a8bfd0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611927661-23a8bfd0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611927661-23a8bfd0.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Gj5B0FkEChkWZQ+MoT7pwtb2WdBpRpkQ2fmSn3vfqYdbhfjdVAUOEg2hfzlDTPVQsvxqu32Lctj/HaU+W2f4gQ==","shasum":"b9dd5d7429016c6b840f198c95f0c080496c4e87","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611927661-23a8bfd0.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFBEbCRA9TVsSAnZWagAAsA8P/iiVrK3JzT1KlmB3F8/Z\nOXg/EfdwdhjCJITu70Dk1HLuB+Z49yuNs9zeIo4uDg0q0g0gYz8iVWgf//aN\na5w2++0ZQ53H6aT6f2x4kxXtvSgtuFvJX1d0nimo0+v4OLAmYAOuyGjtBMQZ\nR/evN948AfPzO+w1XCknSi7rgHgwFHN5PsQEE0p5hXZoJsOR41CsCQisvUY/\nqF5vHh2VnaXPb87xAhkf8WNJusK5vkTmkaaJcF+HapdW/kyGdoVHQWqBvEKL\nBFervc49Nwd8qeZF3ib7EOyWjIA21oTTtkunBPkbEXFLqryjIVnEgp+I3sZN\nI2W6NuGu1yhyFjaqmXkusef1srZ4FHdn7U/KyMUn8QWeXUjr4bPvCVuxAsxD\n+MQeIY7bO4bWbMcqfUV4f386ubtczBm0o5AYk82zHRIxbXPN5dJPfGmfWEoB\ndgkT4SXA6NZe5eZeVCGXHIY7c6yi7DBTJhV/G613//XPfWZynRUnDK1PUBla\nW2dQKbH6gm79HRHSTxAdzq/6Djt2HYQv0B25SrcWl6xwHm/93HnSQB1j5os9\nq8KC65OxanWGNWyAQi9fcljDcDRYHpCLgXaWwExGc9ydcDqHeZeqx+g1CKra\nBT/3QjsS1oBV7iE0YTK5cO9O9UvMNOq7mw2pGmcCpdELASLafvUo5sFXochl\nREg0\r\n=phzd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEKoe3Izp96ZiawCfDikTRMtPa1fR1AUQt1uUWUZJg9QAiEA/gTqA80wvs58ICDMdjLvaOYB7e8c+Hk575pesw8YMvQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611927661-23a8bfd0.0_1611927835067_0.9081855684661821"},"_hasShrinkwrap":false},"2.41.1-next-1611928258-a7ec2bed.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611928258-a7ec2bed.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611928258-a7ec2bed.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611928258-a7ec2bed.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-qHVTwiXGR1tLtcL+h1zb6i/jm6aLOAL0VT/b7zMsSYidp9BKe4SawoKuVMICJhw/WASk1zt5RXUWEnceGq0Kdg==","shasum":"c858f51c148e0b4d7d0c37c38fe0f8ac14561c11","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611928258-a7ec2bed.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFBN0CRA9TVsSAnZWagAA4hoP/1IaH5QlNV9dKqR5bp6H\n97RSr7E5c3c+s8WfB+zg2lOtawnO0EzGuBluYNwjUOxpCMU9gcpIAIJIIyeJ\nHHoevxyv0QKy4cxIxZ4nohMSqkoOcNksZikpzv1qkR0VjSARsmLjgEsoVYnb\npAP+gSqMejxeDsUrIh+My5ccytuPAtxUmz2KgkCsxxoqXCFG1XZp0Rmk8Qyo\n2N4aMESSKWlWESyZqBIu68BuWIVmNhuBp7aqKXHlT3pRmPFLaHXa9zyA7n81\nOkKyk/wdtaxSkkfpxFaRkMgeU9xARDOgcmgc4m4E2PCNXkDbFTG1tWgCWGqE\nR3h2OjEdqTZVLe08FkCGm6tgCKfZ3jpuyuj5h9K4BXuR+NOuIi8bLy7xkmrS\nwWmzONotBvAzc3wysHgesGaAU94i0EMOKCp0QPswIJXzGWL35pPSh7/ZgtD8\n1wZn93Pb6E5/qBHwOMNUs1vNnDwgEjdoGJ5dCuxlP/iHTssQ+IBKar/mx0G1\nhLX3hyqxWAadm5KXjgVNLB2NkWxTsij13Id91Q7gp195EiODaz+ud0WzwLG+\ngRkhKULb1X5wvh6yNq/g9pzcyaUiuzOkfc5SHQhN3nTjMTG9L6Sj+cpc9IeE\nWChFMRsumyROFntaj4yQgZrUZbYOLPOiB38YW/eiNdUdYEihlea7uCIhymTT\n9gzF\r\n=x8qn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDvc27Iv4f/O0FJu/RBLkDMsKHqnCrcW/4BGtVbDwFxaAiAfk9Fya/Wl4HGsFhtRC6EC3ECX7b8qP3JPRF5fon/fTQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611928258-a7ec2bed.0_1611928435751_0.9179425894260156"},"_hasShrinkwrap":false},"2.41.2-next-1611928539-648c6030.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1611928539-648c6030.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1611928539-648c6030.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1611928539-648c6030.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-XYpboxi2UgGiJmBLSE2gk6L+cWBrqIOTvO9nKg8ldOf1wd0CTKbrUomFwLrOTpo/C8vcXXUSN62YiLnogw4TZQ==","shasum":"da409e5ce3ee489e4670d6b7a10563a875238caa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1611928539-648c6030.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFBSBCRA9TVsSAnZWagAAdCQP/RG6+iehXlHYkSrN8NQn\nMkMPPN4sS3YCYBdcJWI2Q3RiMCcOOG0z/0tpoe8hs2r1j3Qdhfrz8KpmOr8s\n1blCUTyjUa0DzgAtXT+5IFC+/nDYF1nrt1Zw4fsJJ65G8w2kCy3OABTuqvYF\nw5vwryGX64lQRMnqOZHjNYBNaPqVW1zgzqOIdSPh6EGQAVCw4eNkBa7NSGgV\nQYdsqaLtinK7dq05kjzvyeJF/JhiGSQ48QPP5mVXtWk3+O486rWjU2RqVv1K\nFzxkMgFT9gjPKCCseTunXgfux2yPMsZrv+41SD8iV/lz14ePcG00O92WznWU\n/56I3FmR2Mmb22pTOb872/KVSOIuzOFCVZKgPWYdGQGoDoFlTH2Rz4s+wIhM\nWqo/s3zyE1uReATkC1BqMn6nMw2POAORYch8/aICzO7/aXZNFjy2fMrViCB7\noHqTxuyZASdVXr8wTZO8ImZBRuCW2aVg00JjHy8DYjCpUP1d4TlBONJXcDsc\nMatiuwJTYVkhDSUiknliYbLhsd4CJAzZXxOpnxIGX4tC2TSqwzIKtOu823qZ\nIwGbwBpMu3eIBbuaLwAMhme56v/XteihMOpv6j35Jg5YPZFStrBz/CpQB/kB\nqk1FeKwbCzGzKlDnSpIxopKOs7jRsA5qi4/qC442Ojw2jkxfIP9juz7dFcvY\nvwIc\r\n=kJap\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCB53FMVxNiR2h/XfX0q5Wh2ScVYS8s6o+eCW4KUk1wngIhAIVQZBsC3jEPswghfl5NUkLT3tcfFugq2NfwpUlmKO56"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1611928539-648c6030.0_1611928704746_0.6667930213079487"},"_hasShrinkwrap":false},"2.41.2-next-1611930008-fc8ab03d.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1611930008-fc8ab03d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1611930008-fc8ab03d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1611930008-fc8ab03d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-jGyMZbnoiVeX+7IaSz6YqQgoLQjRvuG6Ow1nO22Zr/RSF5jfWbcPL/vSttgtMPPVuaoCYLoiYrlIwI6+n39TeA==","shasum":"d0fc5c6dab6e9fd30c4b392b56524bb4b8cd91be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1611930008-fc8ab03d.0.tgz","fileCount":58,"unpackedSize":143539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFBo4CRA9TVsSAnZWagAAOzQP/j1n2CYjQixNCWhAVScK\nCmYRNVPSAc7vmrbYEBDcZFvUBZRI0HZoiBiOUXhHSNAA/0Tdohl8SSjAiZmi\nwQEND+OpBk1ec1f8nVLBU013eEy2TwxjECvyd/ky4m5WyztpPV31EzH+8TcH\nIrDwDq3BWOrei/jAfn5ad2N5IYg7imgCr3Q7fKDtw7VAooMUlSSQ/NWtcHDI\nmSi6ak17nSgIWm9ZUjfgMiQIS328guWoPOXKbpaBPj49LScriwYICPD+7Zvs\nlgfs0nHvT2VvDlb/dyeiBX4HZh6N9LenXBRLj56XYcF4Dr033QO3CMxf+WWh\nUfvZvqwcqAS1zHP2ltg5ULOuYPAYR39Bm0/AoObIgCngQ+6jnpkNjkQDhdH0\ngc+brPtnkIzKm/A7RSSVtE4aDUU27uEIVlwJQByQus96uVFH2rdc7hSUPcot\nFGBbxW11Ff2Hxuw9rIUf+3lfc0WoJJdIkEMBexEqNM5UW41ybTuzc3aPe8/v\nUzkXumuIWxlzt6Ru8mcoD/srAgFPNWbBVYQXnkFBnxObztSBTG4BJCF1shSE\nRBXaeSlmeMcSAQN9eEcRa6AZrU93MZapSd3qsAokQhSWGAoiNwKJEx8PifK6\nm1BcpmuJll5brlzt0l3jlOFb8VAvMfLxRtQ0DKmFQk68mwatRCH4CYCbncsQ\n++VI\r\n=sYLG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICm0wYcbhoE0ErWk8awLPtgPDjx8X8LzHHZZw1or50pmAiEA5bXYiRIIl0s9FuFSQV2yOsa+Pj+suTFOY0JfSagR0wg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1611930008-fc8ab03d.0_1611930167886_0.4489728234650672"},"_hasShrinkwrap":false},"2.41.1":{"name":"@xdn/prefetch","version":"2.41.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.41.1","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-sA2UnsJmSWsntVOUSaGdOP/k57dz7pHHUAVjRkM+XvZ44tvxR/9rdTYEIBYwZtnAAN+wh8RK99i5H/0/FQFpYA==","shasum":"cca38fcf795515980fe5b5eb5762c056fa7781c1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1.tgz","fileCount":58,"unpackedSize":143315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFB+3CRA9TVsSAnZWagAAARMP/0Yv7Egx0EqTX8Z8cZVI\nI712LkYKDQ9wrwt8SgZui4akBJ/c8XRzoqyLR63GhcvgZDWPjcNwqelYyQ57\nxxjn1h7hO/ptNLQ5xwPvVZ16kFBGsqxBuO7wKTuiCutYn9w0pZ9EwYkFiT07\n7p7ZI3TQlpqmtLnEjyrRFLYwK+gHkk04+Kd02Ozcv3yHLfcmSg2b/ahn+jG2\nvSXfcnGF2148wOSs/G5S9NcSaonRNMizk6IRS2VncxlGIufNNmYoMP0bpYTH\noiJX5r05ddvTwrQhByXFLnX8UiERlLGMAlPPhClaxbNiVUCKCBDasPyFD3Tu\nwWehKZm/z4KnTaTYh/UDuxnkev4zynnt9+O/rchdiSNGr2zlditCkYYriZwj\nbHfkEobaYQT5Fg6MJWnE50bB8KffqX3XJjigAaYR7abDW79LzQSV8HwrHY7c\nkk9fvL6c5pKXuvtxxEoFhfVckYBnAV3eXzq9FOJMmPvp5jKsNBqUpOzj08ZI\n/3hbTFAeOfw9Ip1mBtRtmOSXU3kB1sjGTIYVA+8hEvWPHX3qkc4uXyLfK9I2\nUvblNeDDeWJfXCUAeFlBPWbRCUPuYsZRCFPjO+BxB7uw7H0wpufUCo7Cx5kc\nGlGA9XKdH/UPmBy9vigutXewnBIFYmLt1zcE90wSUt2lNkbWoZrmXa7eKK/K\nuyTo\r\n=MpB4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHv0VE5JP+wNJ3Za6x/eRzjXHtDn+5Hoza8Vfj+VeohSAiBvy0IaanLDVg6tXyG9pmvkgIlYxBjda6VCGKkJJRtEQQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1_1611931574688_0.848113975956988"},"_hasShrinkwrap":false},"2.41.2-next-1611932601-ff67f74f.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1611932601-ff67f74f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1611932601-ff67f74f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1611932601-ff67f74f.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-GmaS74S1vay+w90JA522+G6oz7rNBxzysSLyX10YD0XHBvPvLPk5tDkAS8ElCXuSrBL9PJBfu/zHgF+Xbt5kTQ==","shasum":"393ae8766ccf34c758673eaa3e4e41928225cca3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1611932601-ff67f74f.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFCRLCRA9TVsSAnZWagAAo3sP/jkZaL3IeIaQsV7g5NwF\nyN4dSszPRqB2ILJWQHvZXw00DWHVozwsTWLdpbuv7GKM108pj7ENxV3jti6j\nTHMXtMp/0bsJCCo0OQhJzHPXE0k6l0/B24oqgdiY0Ntf9In7oIE3dYV8Mxjk\nHMMftBxYaQEO4FwwipvynX/+n1cAmfcjoat/Q8aGg1VUuTUuHGMnd2MsOzfl\nA5NlKQuTcjb9icnQVzs6uaQl2FVLe0EEB2l7bUZtN/Vlli22ak0X+zmX2Vkx\novTvmC/cpkm/YmbAavzJN1Eo5SebXrvtU36mAZSvjy1mNzPOGectRM4kyVuO\n7OoMW+mXOpr9+xgQgsn3gIliPKAqGaUCQAkqEy5311aBwrupjC31hiuiNrA5\n969Mr56UPBHzCNbmM5tSLzRXs8SIIqtClxqv4fRMlSVALgiDDAOrcz3cAGO2\ni8NeWw8XKTC4s/O3Ze1nIGFpoEGud41ryAtcGld6ism+yT1rPUo+U0bB/5IH\nBwRFOVc7LLN3WZg2cAQm+xP8gf3t7en0gROueUCoTc7Jw7JTW4ZapsWig/Ij\noVc5jgXA4MZ1qGA4oU1bpAIu1r2WNNXgbpr4t6ePKdlAoXcecw5yRYuVDp+J\nUsYJG9hzEIdbmioWCWtUbmCAOlFcb8UCIOpAITGE3HigtEN4HrxcMSkT+xr0\nwDpH\r\n=FI3L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICAZphKOsyKVT6CBCI0qpNVQ6TYOZ93B5NWq9O+bg8yEAiAyNDalr2RhVoPOeYhHfAxma5K3F1QbMDIuNjVesOiKBQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1611932601-ff67f74f.0_1611932747292_0.10912517251525733"},"_hasShrinkwrap":false},"2.41.2-next-1611933701-ff67f74f.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1611933701-ff67f74f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1611933701-ff67f74f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1611933701-ff67f74f.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-NrDBhgABxgKt+cGOLEy3yvdVcCZCDi06UwUztOxIcdTSSGFUKvjNsz5H1DZvC+SjEWJnjWEjs3xFhe6GkSxu/A==","shasum":"89f4ac120760d1e1f24b4f60ecdb403fe02afd05","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1611933701-ff67f74f.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFCieCRA9TVsSAnZWagAAImUP/A747oTgbawCSRvWZoT+\n1AeZq9rlcXMshvsDM9njjCh+Z8aaGFET1HEi+Jfdzo/1X2zW/agkaiEshMEJ\nIouQeUucv9qvQgulED+GJ51fcU2XRexY/vHDinL3Q6/ZCHfxOwIHTPzH/AN5\nWxS9oTnPhvWzZ3dMHgeCM5gI87iMnPsCHMjsOb3zo1TkXLKHITCCVvd7QXsP\nv3gHcrZ13GRJ0j7tGsf73jlUhEmWOwm6yprZVHu2mn5tG1CJxzSRTaOQs9dT\nOooumJ2GzwPRO2cJ16CmmPCdiqrbmaeZgLVefnS3ssYRdK0KkL4IeYGs0iNF\nIHTCVrFSJveBFOV2SLD/UfaHHpCvyxT0a0I98EsQN/gCAW8CGCjSvB/lVo55\nI6983b9CbRIOg47qu5eZr9z0Iz6P0RLnsiLsYQFkmEA2NsDeQimxTPcuPCXA\n61nBU6AGcxaPteue4y8hMT79NP+B0I3oZMe15UjaX+TvndMXptK4c8FCKAl5\nHcRqcJcWopod6VMP8/dtYFNiuA21xWo0cehblVxTQhE6gif/H15wNR1WpChi\n/40lE+lb8OQCyCrarE2IJi8CrEw45bA1UrskAz3JTpKs/qVHIZ2oJWJEdiij\nRu8mkgkDXYZs1AQjUDzRZVW6X8OAhPHkYqb+GH7DnAoE1HE9TEpwLZvbLZXq\nN8aO\r\n=sQkt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmtrmjizRpg42qs+jC2o4qD25bnhdAutfGPq8bpfYigAIhAIPL8Tz/FkHovnGI8rExboupoRPg+r5qVVsi9dgG4jK1"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1611933701-ff67f74f.0_1611933853938_0.4522934900444333"},"_hasShrinkwrap":false},"2.41.2-next-1611934904-b01ac067.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1611934904-b01ac067.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1611934904-b01ac067.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1611934904-b01ac067.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-SI8efxD9+M2WyKtwCVZkEwtMo+ofjiv0lZpK5xg919bnSKH56Qa4x0OMfYlwwGcrF0nRujYeBnAa0e0AWI1ItQ==","shasum":"1703d81e84ae816101305440690ce651524c0c88","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1611934904-b01ac067.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFC1YCRA9TVsSAnZWagAA+KsP/A2zykGhTSrn7tVB2XDK\n8DJZExL8wmEDPSBnuK8LTzxcXSvxdezd6RNAq6ZZ+lShXsHjpQnd1Lguimmt\npgHDT2ziecF4qe3Nd7+sAhv2u5jboTVerIk0BBETS1LlEc+MBnJ8LFkIGjrK\nTbaQHTujs5SJrMrBA8bHVxM/MGyanoXQLdS8+W7GNzoJdJxiUqn5EKchq5zi\nwtNql61axWTV00mTydh3oFUMnqL7yKLXxrHvX79H3RvsvScVplo8ErYS/+9l\nzN9aaU1hsHKLtpHjaFKzwu36TifA249TKM6gOCxfoi86onYIhXra9WthkzKj\nf7UYtroYoO2ya3zDtfVZssQ3bzHik9bjACcfRTlovyAu8GDncaCLDoyi/leT\n/NapwV3QwsMX85hewv4tSdqNaJP1+1QT18VoDCuV3hIFAtPGw+62CFJdGfEo\n0W8Ah9GoTj5V+weaitTDtJQKphsuExYtAri+8Uv+k1YBbLiCtJOWYtFvTKqG\nO1zdBtBvGDgI+I9X2LyMkihWsqI7V4+mC+bE5KVkiYiNEW4IgoSVRUo0F5cM\nwXCRudKMs13JWMYux2Ht0Y1ircGLllLANjENdtiPF4MVACJhp4NCwjcfZtho\n+vBJSoOPEY3s1bdPt6jlRe7MrIY40OgckxoORKSo8nMQK0ea/BMTQEe+IsgM\nUtw+\r\n=Rzj/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNSFe/RivbGNl+ifUki6O1S6HNDudWD/DYBHx+xCfBJwIhAMRmqSYr91sgpfYKD3xJMZPjxvy8sdTmHByKGF7jKT0i"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1611934904-b01ac067.0_1611935063962_0.8559561817289589"},"_hasShrinkwrap":false},"2.41.1-next-1611935169-4a9be922.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611935169-4a9be922.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611935169-4a9be922.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611935169-4a9be922.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-lnB77Rj11HTpaf6jXsk+POBArNssFYgkLsTl++4aBptxbwXMX5IGxBVodwcEtM7PUSeJ8K/DTrSw9b/b5Fju/w==","shasum":"1994d5152c1d907ebcdea1498e201b9933209841","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611935169-4a9be922.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFC5UCRA9TVsSAnZWagAArdYP/0BPd7nNBIy8Ad3PL3X6\nXuK0rT8Mm90gN7Lrge/F6S+yr4ccHIxLA59u/n4/IEMdN1YMMvlVf2nxXdrS\noYuzOH7VTYcHWi9XH1pab7cT+cFqNwBDRlhXYdL5DgSOLaHwLVLS8GqpfIUT\nSG1l2jkspNRyNPrUqX2kjWIMVg0T2cItZfp/LaDg+KLYSTSD7JtnxNyLSr+Z\naBbvXAm8rL5d2GlJUTnztfVjZF3S0AlmKPv4m8t4+XZuernfxDQECrC6JqNO\nmHi2qExTr4ZfjhwSgntPpBAL8sdXiSEqMGjeTXFwxlr1gUFZUAO+fMWAuUJ9\nZKZ0yPM/WmVqaPG4trReLpbfEToFFANuh0IztK2TY7JhHQuUntIokq0YLIgY\n6GSDf62+Mn/pBwtKV2BofPIDI3maCnB4fjbx1U+1ei/H9HoQlk+uAZXoBODr\nEyDABrfINDpKk+RTxcdwj967vvOHzgW3iwLzEK84rYtLRGTdEUuel/k6zy/b\nIcH6fp1vIRFGwFCckhvAWB89y+LEGYdtFBjBRWyhcbzcl97qxR+4nK11ksPk\nCL7RGLCcdo8lyUNNZ31ZlfOML7UEAbqm2TSE19ab5Tl4CRIVkEJ+9oRe3l1Q\n+GiqC/+ppLeUfTQvuWfrYwdTul/c2syU1/BJ3EZQ7YLcd/8BXfsuSMf9P70u\nStFo\r\n=LIaB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBkqopz+bAfGUE9DNHkH0gJAkuqNlF74d4wZLdqFVmnTAiAqDK2AMO4+VnlLkvyFYZ/NYvUohnqnwyafJezueBVQRA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611935169-4a9be922.0_1611935315689_0.6977806955084123"},"_hasShrinkwrap":false},"2.41.1-next-1611936603-c826a871.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611936603-c826a871.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611936603-c826a871.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611936603-c826a871.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-seayaNnmf31AFAoJ2WTMB1Gbaxmf0D48hLIUZYcdZ4raGRJGqzoOT96KcC8VzZdYzKMCCknT5Wxy9zmKhVZoKA==","shasum":"f895ca1ef48bc91fafddf4f7bf94fe2060f42ab2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611936603-c826a871.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFDP+CRA9TVsSAnZWagAAvcgP/3HphdQZSYa1sb2PTUyH\n4NXga5FEaY7gcaal7NA4SQwtl/X0m+RZT9hQuHsQIPZp9Svm1DDi12wkwLkU\n+oHJacvhfrROi8kaKEwvdvrl52rdHjxBbvn2DqmP2IhYxAtd1+95kwPUMh5D\ndugx/l9TIsl5wigBlyCGT6Xuews5tP7gImkuPJn67ebbDGpfYZM8GOEyQUI9\nzz6V0NNVBANIIX7DTZjnzV0ceruEg6Jr6COWwokjypCzUdQI+btkILYqlY3Y\nA0ouHFQn3pSH0Dhhp9lKB2UONZDOMRNy8Q9IW2laKJlatujTlqvNSoOgdkYz\no3s5CK8mFMi+3i2JIeTeNDzbWBY+HfcEZUEKc3SMKUcXu2GGoK2jsJ3I7QHt\nkUWbHOvTxtny1ffKUxu1LfCWFUVefRt7GemQkSuGxxHgNfvirhXimdRCZoL3\nYN+ZiEWot7bai9v02eZEimsbtpAokuRr3oYyLAIJtsIpdcuPz3ZbEy+2LtE2\nSUb7ZeHswjomgRt/X9CBxGxbT2A2XkH2q863K9ZgAytt7wL0tgf+BD5CW+bB\nInY+GKbJT6sHkWRrPLMj+PizROLO8+lUoKo3L9+7tFsphlwbIeLofc8AoYc5\nPo92I15JIdQ8T2B9pnOz6kUQMDLAp3QCrVwo56JUZ304abykqeffrgd14SVd\nxNhw\r\n=wGen\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAC16e327uyknlsak4zzrvJSiP8AU5AfX9R0CEnjdAykAiEA8lGJKOoI0cW5/+77/hAtuXAS3ZWbZW8ZmXhclFc08Oo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611936603-c826a871.0_1611936765566_0.6760929241059241"},"_hasShrinkwrap":false},"2.41.1-next-1611938712-ce2accc7.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611938712-ce2accc7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611938712-ce2accc7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611938712-ce2accc7.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-+LUytxwfxlqEdJQQ6J7GwpecxgFlHFKCzH6Xyktd9033yj5LYw0bYyL8OpkT88G3rzE8QStTyRJArctwEbmCLw==","shasum":"a0f4319812538755db3e7fec90b37a3782570b0d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611938712-ce2accc7.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFDxKCRA9TVsSAnZWagAA0m4P/jtu2CvKJu6bGRKCJxJI\nxtsbciVuk9+AiNkHoBSFvU4KYgh6YTSwW01L44zZkOiS2rQ+HQr77C+J24AX\nWysfdhNj9avZgHlYZ3fEoQVIXsfBwjOUs+35qqoOh5uutjjsym5iM8zdGsDa\nBStrZWLZMzLQT4wdEKFhPuYyRwV2Q2dBMQIjsVRIl9WdtDk8l6zXNfzeCzVV\niguBvBYuckDDa5o2PL4bO2yzyA1CgsyaKzKvDZS7dcnZcXrFJqAe4jZ2H0K/\nmteNxes7lD2zajGF1UijQyzCteiXFd0heHT5ar4iPO4assfoTYclHnoSEWm/\njeLFw0U/2/ZbO7bkK9nnZZm+k6xjscOgP0B7Dm/dn4LwxkN3flueB9ztv3vI\nDBOwrk/vEg2/yMeemvv8wDjl5BXcoDyGVDGmPpuN+XOFyS7S0uKSkPdhVGGD\nFL3xP2jL0vb5O7nLyo0pViNK8VV/FN/9U2T92cvn9aRuvnoR0WbAVnCC3JQH\noGJ2IsD2LTAK8H7LoXTk0kf3Sya02C3VjWScxp1HFVY13N9L7j8Fc/+mAS2j\nSY50ThSGV2PfGWm5uEWR2BRASlUmIzUYl1Nu8oA3xAvOOzPQKKaCm+RU1YPL\ndVllxz88z2807IkLm5WHBvbv1JigAqUH3MermWEJWiaiXQ7+a53ydLgW1I0J\naAtz\r\n=156y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICMSQbgc1CJdU+LPJ2Ns6/KodSgVmM6TS0Fj83NDWYBfAiEA1SDb+6wGiNHC0gSfSa7SZrZ2CG6B4PcmTsXfWg+vqIY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611938712-ce2accc7.0_1611938889852_0.26768493585453146"},"_hasShrinkwrap":false},"2.41.1-next-1611941496-dfc95ffb.0":{"name":"@xdn/prefetch","version":"2.41.1-next-1611941496-dfc95ffb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.1-next-1611941496-dfc95ffb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.1-next-1611941496-dfc95ffb.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-/L5sfSfLoBq88djzI1XXHOrkcX9vCxE9AMMJrSiKn9qqTJ/cl9PonzqnHyjLM9NvSG88V5IZ+sNMGwADcyTIzA==","shasum":"79fdc7cdae3aec1c33ccac248ad0681d7c63b5f5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.1-next-1611941496-dfc95ffb.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFEctCRA9TVsSAnZWagAAnCAP/3m3Cqz+EP5Z/QBK17jL\nJHfaERqAIAa87d/LCbFaAY3+321IScoBHZPyqaqqzLyu7eX2J0HkhUyFos05\nH6I4or02Km4N35RrAVDVgUWTQRBLNhy0afpgQvkbeMgoMKYricK7ZlvbRTtJ\n07nPsrzgVPCDBlajApaOC9jJ9oH9bwFKWITaojTfZikR3I8Hpv7bhSjFgO1V\n2Os4DfepZHdfcpMCV0HYqTwmDZ0qSlqZAreEBPUTArehG1/rEz1xYhV5hF6g\nZLMAA/6R7TPp0GO1Hr1LaFPfRuLF65zzeSgeBc3OjSznvcynIKJYqdLC8S6s\nvhgHIm6/Vty1LiuNB4gSOT50YtWlCy68rakH/l890yw+w3PEjbDjtDEW133z\nZdvfnAvFKj1iZzhAhPxrr7s03wiXSM4opvJi1X5cGVyBPHmh/UztPVMq1l2Q\nWRNYXFJvqEplgyUcT+q43Fs84GHnSIUay91opM47KJ80g9d2NFC2CeUbBKtf\nHzlwtEDRZ2fPgi5JEqNOeZPdi/byKYXDgExvuIFkNqmUuoeT0RJDAuS3uutY\nnE8yuE7ElLFbReUEEFRPWDuCvLINva+EpWL2OebNnrDcwu7Sc+5KUeuapSuX\nOCNh6QwG3PU5Sap3NIgz0Dg5aHsIQhiO9ynimBnOcFIelPbMIWdOMw6IgBG0\npGGU\r\n=QBsk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAJZYiBbABE5YgDnCR88wck1pOZ0vNKYC+ZC9I9uxmrAIhANgn2vY5wKWwxr36/VHlqDqLcdfty9qeXjr/xgzLJ5Uz"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.1-next-1611941496-dfc95ffb.0_1611941676525_0.9189953407870028"},"_hasShrinkwrap":false},"2.41.2-next-1612173624-263ecdec.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612173624-263ecdec.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612173624-263ecdec.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612173624-263ecdec.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-JKaetEhVgjJTajE0cMqCFqCaImLJ9Aw9p99h/hOpg/t79oaBOWFsG03WT4xhRbRbRI49xZLXCmkHjfOBOrZv+g==","shasum":"4372dc7e6aa916dec7ba633db1a7c06d926bbb5d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612173624-263ecdec.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF9HQCRA9TVsSAnZWagAAU+EP/2HRpJjig3aNVILPBTRf\n6eOG0okP1zeHkYNSEnHDTuQ18JXi68tGk407Mt97LMDl4Ttrn5YQahNTD/GT\nHG5uqghQSBIPOggsHCdIZZmn1ZNS33gnercaZ8KU0In16Yo3gKErLKaloamw\nPDO0i8j2UGS1zZgphY06L70VFsLYSSzB+Vtqdfo6UsHky7nD///Vy8NRIhlA\nrGuAXScXhN29F93rPBYk/TBzAdpzck0RzU89pP1aBjBZ25FN+PauPJLRkZdf\nDGnzleJEkNUrNuTNvF+l5U1lwaV1zyNPgqTkKTV7lPPQfiH9gYB4AmRU4rh5\nhsHPumAwtsZfQRI0TwgN54FZctHG8OvH5V1zmJgMkcbLiYyc5ivIZYUuyeQP\nTQjmQiJbyAYnPwxZuVV6Ppi4p/Y6F4KD0HwZE6jJulZIDAKWXpPEQOIeCURC\nKiNQGWfch5hR3N6PKAwemB5KnRP4hAk5OyqLE0eVKJGRdr+6ekeOmAiTnM7w\nZjGcwLimIhIte/qAY0EoxGRtsuQJ6DT01EFae3GSzrtiuX/zuw/9Sc6xrWfE\nOk0SguJCltIsPYhA/EfyzN4Bvq3Ih9Zu+qaDKePyl4vUy/IoRQv3T9Xb8bTN\n1XdLYxc9xii3P67kjBbxaZ6ZYGBZL37XSOT13voxSWp5Le3hETAqwak2PiBn\nbbAl\r\n=lmF4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAXZ/PDulvrpXYG23Fm839DulDoH9qP/eT2kdUo5DLu6AiEAnpqiYS4nun4SUrkhVHUqx27cilHae0BeeFl2KMOrx+g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612173624-263ecdec.0_1612173775762_0.36736457322419347"},"_hasShrinkwrap":false},"2.41.2-next-1612179540-0b25a8b2.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612179540-0b25a8b2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612179540-0b25a8b2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612179540-0b25a8b2.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-y0eEMzBaNzSEaEFTsQOPFkSc32TcQft49oXt4KVKXrxVcP/LgtfbkCqsGJt6Fh2hD8jVMoa4ny5VbgeCuThkfQ==","shasum":"d371b572dbc7cbff15c6a30fcad05d53f9ee38df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612179540-0b25a8b2.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF+jnCRA9TVsSAnZWagAACpAP/jK+hCj1BlNsxNU83UFZ\nht8FyBpKM9t6V9OMDBsSd0HEku+oFfUGgqg4d0xWnjBUnxt36h67i5kPvzNI\n9G0jg77CnFNw5A+NhxGrA4bvXuPbTNvELmhGTQYlDKheDzp5LEfF9vjGlBB9\nc0wQjHsaaO+pSqGkJUHr0cfiFhU9wzbtF1NFWuKgxh/kDAvobBesN64ld0tF\nwshEKdY719Cr+/5NQoKa9E+vjD8SyQ8Y+lI/UOFGlBf76yXyOd9ApR3KX/MJ\nxZTgF9uUoftP7+S0T3ohG/xfxgim/Bta0LAJ3tA+Y+PbjbGlDI7Jd5XPSrrP\np79M7BjR3kKjurlfKXGe5XCeT2n77Z3dpF/CQZWEO3QxomYuNfdV6Qe0QguT\ni7PQ8ULR4u3Ukk+m4vHWYRP/qxK/58m8d0aJgrDJvpNwptA29e9mQJd+Cjda\nrQETPfrwNB3w/3l3SPUwql0G32dBoWmiV7K3pIQK+ZJCoofj9IITeNaYZohx\n/76bsuQ4BbpDg2UkwqDPGPagLXpx5y8j5ZWbQhU3jvdZUENTNlKv5nazTOtq\nF/xo8AtcjOE4TpPqpZYYEbysH82a4Zam+xOx+8rURrBtYnbwfnkVSKDIscCc\na7YD+xkV7FtYJPu1palNO/OUgGxJky4ZAy3jtIvzZ9FSZbbRLlytF+kzi6bj\nnM5s\r\n=4CYe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGHBalJ84yNBwO3wYYlPS7kH8hHXnIPW7sze8XFcdPWgIhAMxBi433Tt81m4rgtM5pwLZvqw1AEySRQR0+6EC5nANg"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612179540-0b25a8b2.0_1612179687042_0.9359544459052331"},"_hasShrinkwrap":false},"2.41.2-next-1612179635-85b3932b.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612179635-85b3932b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612179635-85b3932b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612179635-85b3932b.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-rpRidwIsW0kx59ZWe00lZNwoMGrRMr4+RmTJ4EQDEnn2U4qT+cZotzRSbC+yO7nsbHpXiODYxK4FU+VylMcuqw==","shasum":"0ec4b57c26ee89ec11a3196d6c8848c59ef2be2c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612179635-85b3932b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF+lYCRA9TVsSAnZWagAATncQAKR9KwSSp3vWL3fY1Ad6\nKpaiTwT78ISJg5Y4VLlKujJ+RsOkB03lgokmIwNbWE5jVnkc6EXLDTYvmxnd\nCevYU4nN7maIZcKwRIF0CJpAMlUUp9PDbtw/jsR2d0o9RPZSrYXuelSjNIRz\n+5jb8GuMLWPxMPRkMvv4Kuq8G4zb3ln985PGeurrKWa/Z8bhuPxteNrYptIM\nYHVBZuuIzmUxtqqMeltJlkZymM7ytIBvCx7yEZbdn+z2Jep8YX1Zs0i6weyH\nYA1bWmu6+R6YQLAPZFvWO6m29ycyJO0j5FADjLjgZ8eI0vq43NVLzXxTRsEX\nFauZxZhEP7/t2o8Z8m1eONB6xsL7Qqg7qsqmAGhX567pfuQSlB4o1aP6ZwWK\n/JUNMUUqY6pyGH3atiSzT0y39IdKMZKtS/FB1eteUfEZxDg+2m110o675vWQ\nyAL/dRbRxtWVhH21rERZOp2YeeRfq8+v0bPK+kG6/wSfctjzFGC3F+b73uIg\nXmj4+5/iFmhCIPGY1F9SHvS2bsAWr4GAp4jP7mFNdwgIgTnaMbH0YuTn0PNy\nxrisq/mRPIrDpY8mfBEaIVbRMY/Rstpz1+GDzIWIL9YZuLIZOrBfPZlHdZnR\nXC/R5ueBF2cihNB5xH3T/EVX6MS4S5FK+kup+zVjFFqzfk/RyO+RsWWo7lWc\nd+8I\r\n=PvaK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeR1rP6i/MbZSotzFczXiyThQH/P2NB77IhV9O8Wah0AIgdFxJdBaaQ9iVubuYwmoa5OgF70/DvHiV4K9Hio44FaM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612179635-85b3932b.0_1612179799867_0.07635427163954134"},"_hasShrinkwrap":false},"2.41.2-next-1612231460-025bc5f8.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612231460-025bc5f8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612231460-025bc5f8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612231460-025bc5f8.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-+JUY9IOUEppAO8hNbAMkA4GVllth21VoJDksg6+3fgk049VjvMz+IlgOmq808VDzKlmP2ESU+E9xvMzsHn4qFg==","shasum":"07a4b4da2fe0fbaa0b1704d80703dd642150f71d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612231460-025bc5f8.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGLPVCRA9TVsSAnZWagAAQJIQAJc/HzNJq3Z9XmhiavSN\nAsAdgqIzYwHOYB7/i25fOntUY8yznM4tPYoZl8uH017ZBGyl3wDIPpMSHkNH\nBq+iMXvQoQDqGPoqIqetoB7nhZYlmKrqdIv9J7KcJaDcpukP6yPi3Qi64R0Z\nVVWUIX9My5PeXZ/PtXB0RPlKuj885ma5tjkYWxClc7xsLIDAG52cFfY29ms7\nh3g4kkBZK/O3VXB31sIBfVBHpeh1mpAZKTnTERazkUd2B/FONCw4HgkA5vIu\nPHaC+wEglVyCdSq2Q/lieZM/FzjxSBc16hLfGWetWmmL/UVCmdNBZhwQZP9q\nBeIY3i85EOpKfE/8DOeV/OfWxYH4/yOxlhoX/Ua3xxi4cf1BVtfXP0F9OAOX\niEE3f05BL5hQhYATMSztphW0yfnC0AW9HVKjDvih/G0Hw8mOa4LBIZx6Uq0i\n0aJWZes0WIsMJ2SmIpCdMRL3UXfVGUahlK3dkzNavQ4nqu5j+0P9oKV9Xvxs\n4byIwcbKI9bud9QAy3ZM51Sy3nISlPB1QObOymaNRL82jW76OrdFmqK+qrZq\nSxtw/EWHapAN2kDTg5A+70Y29+uEqY7Euk9Nz2cRqAZYLgXVmuBC8lc91jqQ\nA+ublirOHfxXlv8L1tDx51txHV+LnIuBoZyr0vQj9WcwfWOnZfa5IiX0ilkJ\nhIbI\r\n=HWjn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFO+re/x0r64cNQ88/xE1c05dVAKN9rsoTd/AZDXZdK6AiEAysfaNby/mrL/2Fc1GfGncVcfEPW7IJ2NgI4mYtOPIF4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612231460-025bc5f8.0_1612231637227_0.0404412593404031"},"_hasShrinkwrap":false},"2.41.2-next-1612267894-025bc5f8.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612267894-025bc5f8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612267894-025bc5f8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612267894-025bc5f8.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-NP4zjusOyFOSxjjLn5BjAqZRrTBSa3ojRbR3PpexmhKnzdfBmhiu7PnqGX4EnAwBXvE31Dux+gCUjuWTOfRVLA==","shasum":"e67c8335eeab3501be096b474c09ebeaabf46462","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612267894-025bc5f8.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGUIgCRA9TVsSAnZWagAA77kP/i4PyZpvPBYr3nBRUV4/\n1U5sCAnXthmPtlAilH7agZL82xHi5dT7GWLHWBnipmK4uHoOBHc60OSrhS9a\nUFYfN2+pFDxCevrnHb8bO63ciBbMYcp8nFY2l96SfuAVXF4zyPWsL8HSYVPO\nctniJ9Wki704J0aBDs3Eyh67Tb+c+CjUU6Us5YLakL1ojWzeT+vZzHrFotpC\nedw3RatYsVW3gTVIM+953HXBoky6/oOX3e64sOWLoAFQf+zX2rbs3PlKnGxO\nuPi3lQ89D8rhkYvwm8sOzWiJ33Qn/OujO9YnzdOAXN+8RVU+OxkXG4ujJR6z\nJLfeWNWaFtxYlQPRIecSGfAFzy0JehcQDSEawJVyMgyMMe2HZYc01N4uP+QG\nUeIixwBex5QAx0eYyw9XUoK/x/dRioBZuSHi6Ss+eljj8KglmIzkAZfm+6e3\ncHG1qP0cXwpGBse2IiBL84ZWmjjYbKfgIl3b+3wJqarbDCLHYr+QFCFCt+EE\nU91AU5CybKi4iUE/8kfcUGgnAgrS8lZFyAuAAYJPUuy61knhM4HEzyKhVmdl\npPhifAmM6+uRp/6OGaOYgblgXoNPrTICPstRlDSe3W10OkUhOS8de3QW5DHv\numo9aa0z+8A77pG4SVUMrW0gcuo2YVfRhJG1eda4vZ+3GHowZpfZQ2fMiKQA\nKmia\r\n=AapO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzZj9FmVuvnkrtIU/Vy0NThDXWQuSlfdiqUtWdjHTjaAiBnyuPbjFNBUQVAlpITq+qtddqFchEebX9OKXE5qHIk9A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612267894-025bc5f8.0_1612268063664_0.5913686541043011"},"_hasShrinkwrap":false},"2.41.2-next-1612268805-85b3932b.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612268805-85b3932b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612268805-85b3932b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612268805-85b3932b.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-iQztmtx8+7YfT55k6zzazXISdwnHWjPS510+x3xfCxi5Qf6yb8OeuOXe/+vIt6UV95XJNzCPhkHO1paZHyEe/Q==","shasum":"7549b50ea51d5e7ef3b021f11fefb5408f214d76","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612268805-85b3932b.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGUWtCRA9TVsSAnZWagAA6yUQAKHVhaokRA4Fb+Rvusbk\n/a6V4M8jWgai3nLpqM2cAFypi/BAHvQepPp1MRzroBws/QaPKUmOSe4tehfi\nqlvDeI+YfkSZk08V//9Xt/eG+D2rIU3ocktXBnJbSdUUFfS1Jzl57mzSnnSx\nNQzHS0kIDC+dFGYcooY7Inn8LSmjkTgDcdFMtAaeCUfps5iNZETdFBIaulVS\n3JUQfoZB2Nz3MOrrQYaUPL8GsYS2x2uWD1Y6pCYS1bSl1KhM99xRG8NZg2je\nAGKOZ9YKS3m2tlN/ZmKQxoimG7t2uor+MOLHypxnx6QUIhhRkv4pGIk8fBsW\n+sFDCu0WyXhq0i5daKqNo3U7V3bDum0F8gQZKomSHmiuZLcAPYnKUyigokdJ\n9nISpHgT2lJJg+ZbcjmE3qJtAMGl+IoPOrRGdNN6XjvHS2U7gqo+m+AzszPz\nG9mry5EFtvKz0B6KdDf87XIELyN/S3AfG1vRRTgaNDBOe08ijyV3sQCmM07t\nUXt5Jh024xk+4WeGmksZASXNzEODvJRNfkhqebn1jxcl/bUGXh7usWrbiHCv\nNMUangPjyTV+CjzNdVZqmQRuhTNUBAGg/llkOSuxREwoRWs9ipAkxCsciH8v\nk3MhXyspqrvz6oFtgFupAthlO9yLvkXxKzfs4Ch+0haf3h/vAqFPOfKp9uSl\n6NEz\r\n=gzdV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfTOp06kHQCseHOM5XXcS1G1v+/xFKs0yPUnhqJgc9SwIgOQUvQ7ah3xzcmn5rbEjYIOgR7ixXDWhmTNLfPbYFLkw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612268805-85b3932b.0_1612268973161_0.5068337194147094"},"_hasShrinkwrap":false},"2.41.2-next-1612270071-9d683d24.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612270071-9d683d24.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612270071-9d683d24.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612270071-9d683d24.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-P+ERKGX+OC2pp9RqR8is/jusupKGdirjXkO6ziUDKsO+iSdHiuhrGnrWLfdj8Qk5RamQxoQBWF0bWdO7a5+f7g==","shasum":"2912860a2ae57fc073341d79a810faf4aa940533","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612270071-9d683d24.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGUrACRA9TVsSAnZWagAAbtgP/0YHikiuI6HkYDurUUHD\nbvTkT1kG+EnDLMooGU32LjoG20bRZt2Uz4imqNFrVG6BfskImmhYTe28i8Vd\nuo9Z/Nf9WoOWtU5tZM7fHBa1BOIUsab4Sdit3Zt7mZ/cGOILwy7ZkzqDr3q7\nvVm+hwxz6mpEegPZpI4EneXoD47r99SBp3xhNlcadQRpwH6NfHxNm54biiUq\n7mbDTdWypUAV7/QV/x9FdRmGhdM2ksRUyN2x27kYEyADMrJapu8NrOFPl6xW\nVLV4vEw6wmSugqHVv1Q6FkjmtezJUCHowE0StT0pGswNxcfF1lcgWloz2D6V\nqth7pVb5R07hm6FUet613D2BIJXlcNXI9cvb9Z/F9sly1qWFSEjEWaxYFVWu\n3ltwSNnpdOTAAQxPbNQWKiA4CWqg9dInFwcXpp42AomvQA+Xj5Wb6/5Lsm8q\ngWejM3E4aDuRU5wsG3CA4StDFjYgQ0UV0oFXOUhkcQatonBsPE+B4Cc+gzQN\nJwHssA1qHa7vht/kCCGDWwIwSonFuyHpM0k9xuyw/HXq62mAid+0e5FZnvXu\nGTqQMEOuzlkXzj3NFnKHYwNauRbktskfO/vuBaJRKCEB71QIz+B39MUJv6sR\nqaJwBzQjYI8swy4FyFIYHJYmNOiqtt3uvNC+P9YmivimP5C5PKuneQRZqYwX\nBhcs\r\n=/Uer\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkz7hPXzfjAcvJI1S+TCK796eOzuWM7J7qZo9aS0q29gIhAKg2pGx51cAhpPfTDQArHqK9nxu3MDJ55lwumepMOLzh"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612270071-9d683d24.0_1612270271596_0.7731793113050212"},"_hasShrinkwrap":false},"2.41.2-next-1612270317-50f72cbd.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612270317-50f72cbd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612270317-50f72cbd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612270317-50f72cbd.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-HSCHciXnJ4iynp1r2NLPGGpsOapSLFA6ZCkR6sjz/JpmqiXo67/tsM3ZW7zTKsV44UFwspDjGKYduVrr7n2lNg==","shasum":"d8a35656e53738cf6255e5e33f64364235881d03","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612270317-50f72cbd.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGUuPCRA9TVsSAnZWagAAKa8P+QBxqvXC4rtUOP7PA1LR\ntrpmzMv12JVZSTERQNy+75C5UlKT50OibsgeIZD3m+TV14/rAaiYu1nIV/Cm\nUmKQiJU4LTz4SVcQ6owoBhcJ4MvuyJso3GXkH1QnJfNynieox2wPxSX9gQMS\nKze2cyP+f+PXP1wxRfzXqHEI4Q7q6P1Ag4MYi9NMHtdneyXrmClFX/eGgmG7\nhp8l9S9kNYll8pCGi53Xw2RUt8GqLrSY432Q4rGCTHp98obGTLzRMXmKmWCE\nb6V603eOcQ4FG0y01Lp42v3krHJA21EtkFr+Oje4YMJI4MQ3yAmoyrFXvoka\npTp3FgdRoGxX7Lj+yaITlJVOfgOeYdNw2CNA6O6huy36fO6s8fBsx8eRCIRu\nrcSzL6CHgJ3kZBUNFHDCF+0PV+ZJkAHF1aFK/icF0/ZMt1ogZwCFIGXi52+d\nc8KITyQcCDwLdQpEvkL8PmYQYeDQqRvZIkz6CTmQJg4QeHB+CkPnbR6gA36v\n5cW4hk+Y6ijH/30We+/C36hYRwbMlsQnCILPox6RM/iA7PnAYy9gUxnGO2Al\nv8l5szeJVXzdy8IZLILNVXG0I7G+u8pXyXcIM45U8jBcf4mxRx0dPMTIZaV2\nh/GmXwhGhVlJZwAWVvdkmbMnHR8/ab7N0EO0WZ1/6BF/pL/9XlEVh1KN7HSk\njiqZ\r\n=tcui\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBPH7NCbOzsbDUcnvV0KJfT3N4RYPsFk2pX/L7ALhilEAiBR9dA3ZT0lZdjP4GGJV9x3W2NOSWx5mHgWsYNrskYFtQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612270317-50f72cbd.0_1612270479429_0.126286193292648"},"_hasShrinkwrap":false},"2.41.2-next-1612273953-0cef40a8.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612273953-0cef40a8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612273953-0cef40a8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612273953-0cef40a8.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-np0rvEVkDLp50HSfgBW2LipTZhmQDUTYLG78xARHV62rV6DaxrLPuH3Yuyt26GTZaUDLyNRn0wmaNhZHRmex5w==","shasum":"b1636c0d454cd28a7dc1996394d44fba442be77b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612273953-0cef40a8.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGVnMCRA9TVsSAnZWagAA4bAP/iOFX2SXy4+qJGqGtxAr\nBrUfxdRMYhxmKzz75HzakKBJp2qbJeaYSohelW5pWlE+xVRVnhZ77aZItsi8\n5Kq2/1u5Tlale1tn6vqnuMqdoCDVgd370SVv0UUPJPn2iRA/f+xXRqlEzsi6\noFSTIypkhZgh8vzkfDMUQByv9pfnspK/AzH07qqMq1nD84Fpj8OlhkW8NDTE\nJiEheSzRF+/9cBKIvYWRo0mewPVqLOvfT7i7yxohwpH7lVlITQupO72kHIqz\nbwvV3xUaLi3ahPz1tShyW9fFTGnBMEYnLZBt7BFxpoGsq8F2SVr95aDcjSKr\ngXrZf8EPFcWr0LcFUNtRKtnu2Lk3LnT5bpVvmsodSHqOigcYXEeGoE8DoO0t\n8dmWULBg2gVicKhUB/6/SyL3coeAki4Ta8l7LGNRocKkXAWqnp6C3kKdOaI1\nHYASHYM2dGukfIOnQsvOj9ZlCigm8jwbX5i6dlBVOwPBRqWPYDpag4W5SSRd\nSlF/V6Tym5RPfLVQYDP9tV6zuUYwkFUffwQolkc5cdfHw37DIm7cQI7xXDvO\nChJvoYVUpQ8+m8C4AySd7YT1x7Ivh0jcMJvsKGwHeWsalj9I5m0uPXJWfrb7\nJ3M9+crD/B3NSMLxjx1/8jr/gnTSNFYoGSAr+FolMk2ZEDPDUfldO1BqIvlS\n4dv4\r\n=pvlz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgR/rMMiGhISWS7EmjwdTyeMQ2IbMGhxbNEa1CUuqZpwIgJja7a9hi4TSJuywS4Et41QSQPQWBTbPWN0A68z8OMWY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612273953-0cef40a8.0_1612274124067_0.25286339079568787"},"_hasShrinkwrap":false},"2.41.2-next-1612276423-a82ca504.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612276423-a82ca504.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612276423-a82ca504.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612276423-a82ca504.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-YaH9itz3E8QBFrTWGj6RHpYRiUW2OroaEVuoUAE3weXDQpA5u84WxKKS2/E15VDflmAyIczI3bNyLZDxeCFZdg==","shasum":"749457c407b65d0aae2b85d874ab7fd89e776edc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612276423-a82ca504.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGWNwCRA9TVsSAnZWagAArpkP/0RzXbjy2sX97w8LTGYz\nBfPDbcB/8gFpN4nAsu5mbtlkZIRvzTJLBHrK5pvRKAsygbUa98rRYVLgRF5W\nWOzd68Q5MHxlqNxy0MAYWYjmvqyG4rrwrFJyqAUWGDH6YANsp9Gnz2OiSjx3\nIr6RX655xNYvJZJSBqY2wUL5vA5F12smEHTRG+632kDtMMp2EYu1JNJdnt82\nqFCKX4XXIinXavHxJEegkqvB02CRBKv384MQLa4VThsMp2N/Ek8BuoRnDRaK\n6atv2m3mplxqCg/kyaTCr15+97NSf5bnlp2HFDBS6+djMV3jyhT2rJNuu+8s\nkiwmfcltvCdgDnYSPuqdFzMO5Psfe4NDHRcbtu9FtXRn5f3xe62xzkfjlb31\nJhfevcqOuxmSeS3d5cUo7JKmXmhqiY7k1p5xoyNpqEwFiY4nAHbt5+FvN7hG\nqgydp1Zoz6m7l+01VgxoS9xtNPGg09mFEZOk95ufJrKJJBmFBAzR5FVGPJEg\n+QWqTCeGSDNA1IQXOGq/JWnpaJahCINvrzPbnGwQ0dlMe13EV8l3Staj5bJ7\nr2oGmcuHuo9MpgzWpEd2FWEfp9l02DUUfGg/55y8Sty4SddeJCO1NHi9t2XF\nRWDmh87SskPZL+xR4EILImc9H/eDeZ3lUZJ1Frq5lx8Azi5lrdDMD3/rZMHP\nhWZH\r\n=GBrC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1ikOT8qtgZAShIXTPskbOFIGJk3k5rkdXCBg7/Ap7qAiEA/HeojxnZ5Z4OSoMuPC+bJQCiFtHYTN3jXrwMD10cbGU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612276423-a82ca504.0_1612276591397_0.7511217351369748"},"_hasShrinkwrap":false},"2.41.2-next-1612277875-ef40374a.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612277875-ef40374a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612277875-ef40374a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612277875-ef40374a.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-cLAyEN2VpPnlO0drj7cldlAIxjXHrfMqVUf8f9RBpTc+9vwOAiFEQWo5UIuridoTl7GlxsNJmaEqTV6GxgGghg==","shasum":"14009bc0c9c1a50bfe47a7e228b46b2cca5c1ef0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612277875-ef40374a.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGWkgCRA9TVsSAnZWagAAjh0P/2KgV9OxQI5AIytIaqph\n8FZ6ipeiJEkZ5dYiH705+crd1j+ZhPas6LaxvUOZ1o8Yon9FbdYuZyv1VORl\n/SiDxGYSvOxQalPAW4oxqv/DCR/dZxSCxw39YdRn5VW3rPeUul/k+4tPsaT2\n7VDVbLNyDvyDr0deRSAWAz7rHKbkdWHzIBubbrm9Lhxy12RxiJWcvRPK9JWV\nlMMdBX938NFprpbpcQ1e7ZfNJuezT8imaZSBZFs04/6kSifnDECH5U4z3fN3\noJyQ6fCv2I21JZT6sMsgBbDH2Z36N9axzf+p2SQPUOKM42SpdedjxYOnpwfi\nxI6rpECc2XTMBwcTvnOP9FEj/Amrlw/9eLM09o9Wp6fsdcO6jxBy+cFkB00e\nnW9K12FAGObVO3e6q+8M4wpeQyYNOf9Q90w2dX0ij1fcsijSo75+vA6cATYQ\nGIILkanljFM5iZEfoBsUgcjv0kDYO5HN31q9S67xuDsbjnwNxVwDSucu5xik\nJHJr8wyKGP9nqbMrZTGAzzBtwGCG7LrjiGCDC3UQxZN5/RcY8bbXWHj2+nAh\ndZt3PgnCP0Nb7TfS6JOE7/75ZbHmaVIEZG1SW2idXXxO+5/kYyGGbjdOtNLb\nJ5F/Q0nnxvGKl6d/D0JGd+DIbNvl1dWgcVsLGBJfbREmdJpkxWcDbvi7rgh3\nPaTY\r\n=X97q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICSRa2lj7hMgYi6CkphlALDtRvb1/+zAHpvq04NnAtS0AiBTxuhIBu8FwSIv/lAI3dO3J1UgWku4+/o1zzpIe+jUMQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612277875-ef40374a.0_1612278048014_0.5298014734225422"},"_hasShrinkwrap":false},"2.41.2-next-1612286102-bff19572.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612286102-bff19572.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612286102-bff19572.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612286102-bff19572.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-vbX/bX88/wpZ1pDc/YdaRQvHQ/iftaMPhZ9FT2icQwU7cA8bmgldnvlzD5JVz/ndTh2QpCW4fecQihIwYAuFdg==","shasum":"8905f22693e0fd9bcdce42de85e6950b117b41be","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612286102-bff19572.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGYlPCRA9TVsSAnZWagAAR0oQAInNIn5eawxE8Wfqc8oy\nezVzoSu3py2c5ZoaiGJV0fghmF9DiAalo407AbZR3ZBhmXVIbO6Bi032FaMi\nvzaDY6QR27Gv4I9QDXv2VfjZ3jW0NZK+Om34jlfJzXMxgKBlx6mN3HVA5xL1\nEflnW8eJJz378u3eqUBS3NRHstXvmnP+iOtmXCGyPW8HJzgstteKGhVJHBMQ\n188MNg7M+G5MT3oARHNxJIHZe11v91nQr4n+p9GKoVi0AQWOpj52vRT2mcuw\nW9pV8zjJKdxp5Gtt31axA8MZmE+CH1n3j2QhNms/BudCXzDlibSF1Mo6JusE\nadSyJTwcsxfEQlHhBWu+55jE4pl1n9JaYHzzmn7LGoElQ+almDE2XGR+4dPr\n16A0F8f8cRoed8NbADs6YU4x2rYpQt1yRKVHQ3/ECfsChnJqkJL1lbq65rAy\ngkwJVLhXFAVhTi1e/m3we5TyXpPVGF8Hg+a8LaHfPDsFvqLRuFmBTc5VrV4Q\nyz2FxVXo6sQ6btPFCUE9w/qGx/ZFZmtCNGumDzh4ClnfBvXFqx9koGpSxEZi\nczGwWbm0mWvgqdrts9eM9+fqVbPfrk/ViCz089uMrUkPP917z9gYiklhRkBS\njow8VbGSUbc3HPqLsRWhpPoufPhhU7KVz8/Tm1zUbUJzqLNQmr1ddh1Vn97c\nWURa\r\n=iEJB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEmFi4p5xsafD3FUar9hKsO8ji1651MgMW66AypsJI3IAiEAyH5MNsZGTXivZdqoSnVzoz/6Ybz7jqnV0qPhx60BH8c="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612286102-bff19572.0_1612286286943_0.6354265807346502"},"_hasShrinkwrap":false},"2.41.2-next-1612289218-28ceaf36.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612289218-28ceaf36.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612289218-28ceaf36.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612289218-28ceaf36.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-hanmcYY5TuwPa7UfnsTFM+1ak0ppYGKFyYZVax2al+VIRz0KYRFsH4vTGFqq35kJw3j1GUBv0jDDVXijf0XzAw==","shasum":"3d5f116a79f221cecdd3c646ceb457dd56edb04c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612289218-28ceaf36.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGZVjCRA9TVsSAnZWagAAkIEQAJzRKAvtRooipf2m+5mY\ngxqPiPvajGwitewhvZ/nB/9Y8YHVhH5RiDa+wuFk5kzpHJoMvNkVbBic9rKN\nquofIQdOtGCwl9zb4DpcbUARY3Hld+RnOCcTPX2E56fj/ADUjZFBjQABTTkP\nSEDbALkRTJF0Mj6zFDOgl1z8CM4PxqhsSZFFHK1ZMAB9wDqdfoSAD2ycGWby\nCPU5D+C35hE9EY4/iibwdgt54OLMWwlc8adWNNxDoLMaMM4yPzl9R5815Rq5\ngE21llCQGVFOtgiiZxd0ij3PAzers8XCqycN5FpisoF12HGNuoNuQpG+kVrP\nfQddXbQ3NdLsSvIuiBrpk79oC5TuXUqI1bLHvwqSmNlNP96OUGnS6l6LW4du\nJazBarfaMRusGLTARDGtEzZ51E49UxRDFOF39wBQa42aPNdlB/wt9up05Zat\nTq7KqsTu6BAMFuqIvhuP67RD7QppTDOAJnbrdlPkUIpL4iXFkKhYpJ/5klmf\nEs+5sLkZkjMMLXdGi6KVct2VOH710GFRMUIOYFxJtkfE1RSlpm3u6Z1sKzmL\nrLuR8I5Zxqxavw0u9U793PfRAGvp/Utssr8rYJTpGQONd7+t2/KC7vJIw7qN\nQ37isptxF/x3qaEBzGAApuJmlPs65h8s9nC0abEuyP3ccCXCN4BMil5Kd4oJ\nQ4CQ\r\n=s0xG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6m52qkBMtnOIrv0ZB2KW53+EWksFRW4/OZ4PlNptEcwIgGmy+3BZcx5hDgDWebhErJl2/uQrXmgDeZ7I8e58XDf4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612289218-28ceaf36.0_1612289379034_0.7155556888905465"},"_hasShrinkwrap":false},"2.41.2-next-1612290377-28ceaf36.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612290377-28ceaf36.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612290377-28ceaf36.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612290377-28ceaf36.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-kHMIPAc+18lLXNxxw7R810GZUT0m4i4cnckkmT5DA2k3Dxsr/h1eTDBlIVebX8GUPF8wVGPcKpyrlQwdP9E/OA==","shasum":"2ecc444c98cdfb600895b5fcafe1542ac213868d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612290377-28ceaf36.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGZnZCRA9TVsSAnZWagAABy0P/jkPP6iDu4rttpC3+JTB\n/BDoYz9UsU0dHnsCSQyuHTcVva4/iQ9jDklcJn8i833+GVE7IV6FJyJMoUbF\nOqe219azoWVPb3HzipIm/JviuyVpDabv6/35FQ2CH+BlV/Hc39xsrJmTBxfH\nXA1gmjhzSUXAfjj55HSYUBvTVWpz8PPMNP2dNP8XnJglTRx3PJz0tvUYATHc\n1RPVFbT7TvCY1KZl9D10HVCRCeMK9m3KWSYtovsKrxsQ0wGHlLRGqgr54igv\nn1zil0arF1I0MYq9uQkoONRYG5D99cAMBzBchTwuNLl2GRjlgo7LP1LrGjFg\nKmxbn5TACHbjiKTZZ51xOLq3qfR3tnqGCyfsgvDbf2+5kYTvTb9WQyUx02/D\n8vxDEm3jS+GMytCGCgqOk7SJ8SGYMkJtYdi6tOZgGihVpuqTvE8Sem05KD7b\ncm4vDJ5UrA/5ZS8Dj/gprFHpS9wV1PW9OMhNZXsvNzKTZ3u3+0A038Df54Np\nPZfgbHXQrU9eE0yCe5wUOv7qaWOEBPFpLsYphhOHQicH4jVGYPkOiak+NwjE\n3aS5GCTW9sIsAkJw1mCoNz2QjmaGty0O5KaIxW3N8VhYs/DQrLbnYIcICOZF\nIXhqig9JvEDpTDTwfoESBnJR2DNRqCUOpXnzI03TT7HDoWyivb43NH64/Itg\ndlFd\r\n=uYdr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDy4jlW6GDpd+3/fipxGwVxRsblzMXCAolK45R4rOEqcwIhAO7Js+AhDaen35U4bQYEYXkhhLVKmJ/cDvlx4AXUjVDu"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612290377-28ceaf36.0_1612290521420_0.6176169684162554"},"_hasShrinkwrap":false},"2.41.2-next-1612290457-f327860c.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612290457-f327860c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612290457-f327860c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612290457-f327860c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-P+t0aPlcQYSaY2/JKGDpslGhQA/gAqotkmkaWp1yOFXzm5WzvcLWzEzizXR1cu/kvZTrojGoL1hAlM2UgzH3BA==","shasum":"8a43dbbea4b8d7711c3ec4dca892d2192d06a567","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612290457-f327860c.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGZouCRA9TVsSAnZWagAACYQP/RUi5+6bc4MslAI5Jn3E\ni8n9g0DNHmRGZu9VuXvI7gWkTfpVxA9uXoJTGR3gTdD4Ik1QGwTRzaslBM2v\nIs0PX6zMxOUA1NHGR0CFrTwniDIiKl7W3G3Oj9ZbmHj94XZunDGJb3xvnT/F\nt1pROXZZ4OrGbJ3iUBExoLgXi1eGdKEMmggcOvM9NMR8lzoTYvc80VvoPruy\nQD3n5ThnR4eSgdS6i8SlCXUNzJkadRVi3ViwUs1Ce+hFjlHrCgVuZH1PDpI9\nQlcSAzWHieYLwsL5zbg5D1jb157dcTeSSP4TBx83whaqoCuvgQ/WyGNXM9Cj\nPK9YIobG4GZMEuPm80FGfYmXqWscxclz8QVbdPsogkSlzlOjst3KjTLuh+M+\ns77K+mRLvCwafyDWjZA3HUCATL463DNVAWAnjJEP5X0TisrlgMfCpQe1uzH3\nn828Uz2NEy1Muy4r1tWZuoabDXeJVmLvacSsAhapOJ/ZhafvzG4dknJoCzh0\nknxgjVzy7VP0thaAOxGDhL+LheZZtentWxNwljGnY3WCqksPcA+xIrgB10cn\ngtHmhtgROxVoOG0j+SW8RWDFPp9ILn0pz5/7k41GigjgGJjyf8RUDVGfIh5W\nAnDrAN98xx9iS9xuYQCGQz9Xtij4UO6kESnLzF7K1uDNq/EueDnll6VaKmI2\n4hnt\r\n=Uj4v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7jx6338bbLyrchwY16nM9KWTxLbDgaiDuqKt2wyjliwIhAP1hVziMAjXozM+ye7taUsWnbz50yAmFNjb+M5lZvU8Q"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612290457-f327860c.0_1612290606242_0.599953137009785"},"_hasShrinkwrap":false},"2.41.2-next-1612290604-8ef9162d.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612290604-8ef9162d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612290604-8ef9162d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612290604-8ef9162d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-UIGEMBXtNocRedJ7a/TR+RXHWo1YZ54oxpio7WS2qPKicqTjr7MKR4vxIvd731eqqi09fN2bBQwpFmazQNR9YA==","shasum":"53d5298955fa55c4e33dc38ed2729ed0322b88a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612290604-8ef9162d.0.tgz","fileCount":56,"unpackedSize":139893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGZrWCRA9TVsSAnZWagAAn0cQAISf5CsEnBR26cHdbFNu\n/mjUQe8qAvDpIx9koCgz6KAOjCZ1d1WgxI996Uq6+PXPqJf2xxrW2nOnmPcg\nBKbtLIMpca3xs+5x45ZOYSc9X/DAglvKmvNk+HZsvAUVo84P6agWl89IN/ij\nUEcm/SUKhx5lo9rYQN8KcBVmPvStbePhEwdpzZr0G4ElvIKAAAruCkLDvTEK\nlAmoNnm3ZEVERvjt1ke92sm+YE22PA20GUzuT1tMQvKS19ovt8pwE3Ncv6NU\nsDEPa8sKKgbZoTKDm3Oogegr358r8RcArme+NehLldCFqkLh2iRWctBUQgul\n2+/lXPRH6YKa8XCk8N5iNldeSZii2kw4bwilz0WPmfb8MLRKti6n/l+pumrT\nNtR2cVvZYZkoD/HQAGOvFrXSLXD1HqFKLrSb//gBnkbxiFXVOOa/erq6vrez\nyTvuViJmiqX5v35r3ipIG4L+Au4rCtyTSJXQsQUsUmMwipyNWHEeH7UDsKJP\n/ZpKkzm4rwDuEgLG7YcQWB9JSF/ZYCZxL2L/pmrNkm3LtgsTl+yOpX3JNmgG\ng6TeCj+tPJNnYnA5TCdoxKqoVpBZIALxyEziRbmyOOctgAjxI35PbrdtyjmY\nFRCHjcXnnyNRDcu+UqYJw+HSEIRWw5oMNlqZ2gLKd0AEwErNNcJq+SjLQYYt\nuaMa\r\n=HpO0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA4svqHwt59urDb85tpEtyW+KjCQDzVyoUgoXX/6nfzuAiAiw6qEcxN0vVGPiK9yG85kpQGdEQ2PKRYq5YhSpQWqMw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612290604-8ef9162d.0_1612290773190_0.69739100707635"},"_hasShrinkwrap":false},"2.41.2-next-1612291569-8776ec30.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612291569-8776ec30.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612291569-8776ec30.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612291569-8776ec30.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-opy4zfhys6YoSK19xCtBdYKqc+mV/9Up/9V6BXIPnLY9mSa+aNxabnC06984UemBrJF3ZKQ/l5p7f+lcADMhZQ==","shasum":"9cfb59307beeb4140eba1520d6b719dadeb9edb3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612291569-8776ec30.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGZ6gCRA9TVsSAnZWagAAEbsP/0NoJjXlmwTDC5xvcGvQ\najl6yGZbwosHEUbH2pNYFzdMafRblPD3UgJb8TmnWVnFwv+0AgdK+/fKodi4\npyPlR2K6CiUADIE0UNiTY/TImoPAIz+ZVOHKCpFtgPYs+v5GAdQAhys0Pi7u\nGPBAvi9+wIc3uFLXCUIvxu5G7bO0+iwB8Nr1niW/PSfVAqcHgm0xbSo7LNpa\nrzuFJzBPgqw/cHiryN4BQzx9/pfWuW1X0dHt7pbIY1Dgbgci8/aNHAaM40oR\nly5Y/p68EvQB0ThACsfoA0zh0q3kYOCNmqEMzi/iOxSGyyHCU8Mf5WzvOYjf\nQ3Wihu2e9DkGDFg0GUA00kUxA8Xelwu09lxZBDpe+0CvyLZhEPmWCyeHG67c\nPDMYbVz9oQ5F+CvmaMsKdqi9rsFhiQO8Ew1lcA02I38Lzka5A1s74H/qY6cQ\nCcCDQp05cUQ5rpuAOj9MAte3CRt1ngJLJIPNalTwytWg2x605riiMT+XdJnP\ngyRcSlkm/pSwGo4a0rIWO06bzgxH4UiPC2kpP4Dnt8txVbjSwX5TxbnnTbAS\nwI1boWz9MI9FzaRtbXsHRScScbH4MaMyAv+HS42nbj43NL9PNQA4K8jDVTIr\nPPWZ/RGn+7h4RA+oM8RE4dI2Wn7zWZoMLgLGiUMLQ0jB2l3AyYlo4wectXER\nJoci\r\n=86Co\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZe9SUa49MAFU7R4mqQRI1sS1PJKfmbpkaaSQRC9d91QIgD8B2hOPtg2uDdGRhWDaeh2CVGCwI81DXF2b32SNGS8c="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612291569-8776ec30.0_1612291743548_0.7664189461533377"},"_hasShrinkwrap":false},"2.41.2-next-1612351532-0ee4dd00.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612351532-0ee4dd00.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612351532-0ee4dd00.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612351532-0ee4dd00.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ypDAMfTGszj8FzP2jjeQlJ0nTuoTkcGQtDkWkUT3vFet+rmGV49WabbX3zLU4EzrXigmJ2w+AcXKILoUciJFsw==","shasum":"53b10f31e17bf28c0bc9fa2f11be57a3bb2414e4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612351532-0ee4dd00.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGojbCRA9TVsSAnZWagAAOeAP/39V/onwuxm4SnNKL/ap\nkZ2M2eI49lncw82gC+QsaP8mWUyOdI2LuG2hI/ElBDPsuTP38Di//AV7nDPP\nYq5wi3pZNRHS88DUyrr30Z9tS//TfuMCO0mE584/6N5ajpXJVCk1FW065739\nxzOfDZPc0GgTyGImktFSmqQoG/ZRuAu4IZyrcEpuEyvQGM4nDxaBaAZ7A1JR\nsO4rqBa0E7QP+RAH6dDhjo8fILolcxVb/n6tFha7GkaNkbugs3sWJgAZXaKx\nu/zW93C9z6sLjXrXMF+rchknTQGs/2OiS+wRBjKe/8OqhlpFNCUKgzqA/opv\nZHWyS/DuZ86B0rtX/hpNpoqVFQiJTPtNzjKkvK5a0PwpQOltsKwUUvLSRXqm\nHTqbaRe02B8dI5fkQzBykhxuHqqpCXl524dckpT89UxFQOWI/KRJw/LDQLp3\nr556zHvM+jfOknWk0IdWpl6n2xXKMujrVSftoWdzkv1YhY0kvfUH765f4YlI\nEXgXNev7VzVXufV12NMaV5lhJJGl/q0Upa7M3ZOnQG2G3ppvH/HF08uYDG8W\n4y/GL0b8f33aI77HRK/bO3sQlbMsTw+zf5qaipjKsll55FZDH+ZMyuJ/m3eq\nFjVIgO+NqK7/C+KQAHhyyGKqufHvqm3Zij2wg1Eunk3DuFgw6akBXR/SlJH7\nXkJE\r\n=3OeR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIERzEx7Q0DUkFKzyu/Q8m0D4+Fu/HcN5d0qybLDfCJyCAiEA9eTPzqIFBojJD2hj4MjSJwrOTTySG8FPVqaPgdHRIwY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612351532-0ee4dd00.0_1612351706861_0.5615998312763346"},"_hasShrinkwrap":false},"2.41.2-next-1612351607-64b27ba5.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612351607-64b27ba5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612351607-64b27ba5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\n## Caching Routes\n\nTo make a response prefetchable, it needs to cache the response both at the edge and in the service worker.  You can do this using `cache`:\n\n```js\n// routes.js\nimport { Router } from '@xdn/core/router'\n\nnew Router()\n  .match('/some/path', ({ cache }) => {\n    cache({\n      edge: {\n        maxAgeSeconds: 60 * 60 * 24 // one day\n      },\n      browser: {\n        serviceWorkerSeconds: 60 * 60 // one hour\n      }\n    })\n  })\n```\n\n## Prefetching Content\n\nTo prefetch a URL, call the following from JavaScript running in the browser window:\n\n```js\nimport { prefetch } from '@xdn/prefetch/window'\n\nprefetch('/some/path')\n```\n\nThis will send a request with the following header:\n\n* `x-xdn-prefetch: 1`\n\nTo minimize the load on your origin servers, the XDN will only serve prefetch requests from the edge cache.  If a prefetch request cannot be fulfilled from the edge cache, the XDN will respond with http status `412 PRECONDITION FAILED`.\n\n## Configuring your Service Worker using Workbox\n\nWe recommend using Workbox's [InjectManifest webpack plugin](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.InjectManifest) to create your service worker.  To enable prefetching, simply create an instance of `Prefetcher` and call its `route()` method.  Here's an example\nservice worker:\n\n```js\nimport { skipWaiting, clientsClaim } from 'workbox-core'\nimport { precacheAndRoute } from 'workbox-precaching'\nimport { Prefetcher } from '@xdn/prefetch/sw'\n\nskipWaiting()\nclientsClaim()\nprecacheAndRoute(self.__WB_MANIFEST || [])\n\nnew Prefetcher().route()\n```\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612351607-64b27ba5.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-tzGayiiou5bJVJicZOKyRw9yJnUbToAhJ/9tXTGvk9F7ci69JZlvg7gGYdH3iQNL7Io5QoHMK8oBoJmbbh7KCA==","shasum":"295a44d283f5f9236a2ddd2615e58f788bfafd12","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612351607-64b27ba5.0.tgz","fileCount":58,"unpackedSize":143369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGokWCRA9TVsSAnZWagAAtjgP/1MmmbWT2E6mAv+zCwDR\n19FTYpw40POc5kxIvrEGSzjZ39XlqWat/wKeT0goIPV7A3kSQ9V2iSMZ4PJR\nTXIV0gwAJu+skXKnIDCQMln6dr4jObmJedKgIjuN66omPGXg30KddOlMxmRS\nklpbJgvygc6j0YeA2TQNWgK3DwgK78bSzE6iy3pqtQUxLjtTg56tlndMfztW\njPQztVNvil+5XlzwvDMv3WJwYgjGSyHzOMoyyix0KiFLlKlpvknhm0v5dDnW\ndKm0caerpoxS0yshnrtgP2+Ws8DNFn6FBknyrb3BKkRIgwJih+1aAmaEHdMf\nQSu0YB0rEMe8iCRQQtbPMFxCmUSjvsfWWYfb/Ergj+bH/pQEWwLr1o8WA/ul\nb4uejWcjnDBzbe4NLGdzSYFBpEwvLi7S7rvieiF+vztodvv70UqBJ+aMg9yY\neFpqgmV7L/k7n4ZuxFAC0nKls291pj12l505H87jpmvegeVN148hYf1/Q2dx\nEhkXm0YMcIvdDA568CLiTd+SXgoFL/396gARDZAXobv4yGxwQA/2O7KBdGyH\nH+pj8wYlvkJ0J1cG4f2WsEqF/8kCP8gBwz1KcXepc2f+DvbkexsCP56wQTsh\nWAc4hwXfjwWHG60MZ3YkpQIl0u0O1cXlUjf2No/uM3ZkNClEE2siyjp7pPYa\nhQtE\r\n=MhEw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlI/cT5EkdQL+0BfU64Og5El1Goiw06zshfTNPAPYlSAiEAtbVOnbqWSs4Y5NxIvSMzHxw0JQOSD9yX8FXmREeXHdA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612351607-64b27ba5.0_1612351766231_0.39036938751954775"},"_hasShrinkwrap":false},"2.41.2-next-1612354766-23faeba8.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612354766-23faeba8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612354766-23faeba8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612354766-23faeba8.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-JqmXwd7s0PVIIqmu17J24CAsbsRtKRorwQA6Ndqwn9jpTuLrvnykwSiUMFrJZeZz2YshlwClLrnBAfX9iG9UAA==","shasum":"d31261382c0e54758cb9eec3b11d87e7b91bd66a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612354766-23faeba8.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGpV9CRA9TVsSAnZWagAAOusP/iQoj2WuGXS6x5t7n3Fd\nzdYtILHs5mof4Yi1S5QHWGxg2y30Qf/r+ZFowjltkamAYbPx0OTErjrL6qhU\nMc3KHR3QSqMMdyGt1lpJZWueKn60+mzpomIHEbCZ0dvUaVQmm4Oy3y2ETMpE\nxK9Q+FWKXowalVCJ+Zbu7YYqhxuXdnZF6ZsNsOm7Jlgag6DyOfvpefP3W3Gk\nJR21z3RMC18RK4334KY4uqTK/9KD92cj8sAzOfEvWusIB2BE2op4BgcawUTr\nsarbu2bVHZjjH99ieWX6uauYAM3WriB2d4I8gDhVdpm/RpkvHjwvcy2bzsfS\n7o2iv+1fe/snqZ8iKBq1TYC/IeooxIY3WvJ3mGAAn7TkzNCidTvhwdePm09N\nBKwZjemt041X4wzWE2MY0m9BFL2gFdZE8CAmCFDD6sitZs7BNp4DHyOtZgep\npvvg1KcOjSUMr2DV/JIcP3hdknR/LGIcRN4eAvoyNt/2TUR6xNFmJaxGwx56\nDrPFvXjhuFC+mi6D603CfVLvZNHodHL7R1ufDRG8sDDxzCyX68vPANocbD99\nC1JjM/wJ45GRCFA2SVC2QRjS6z+qJJRT6psOuwGRD2V4q19ZzFa/rWJSCkhr\nwQKHO4Z4e9akZmTHoHQ8nnMVCimOf5Gv+mCOkeFrxdgjuotnbRBRV5YBSOss\n2ekY\r\n=LV2d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCADFnbsXtEfZdhAfPMsvRw8wxfjgIGUCHrssReJdffXQIgDEpOKe/5wvlkqxG77D5javY0keqbUiVR34Ui2O9v3Sk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612354766-23faeba8.0_1612354940871_0.1004024867129516"},"_hasShrinkwrap":false},"2.41.2-next-1612356339-9a9b1b23.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612356339-9a9b1b23.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612356339-9a9b1b23.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612356339-9a9b1b23.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-wGpXlYSS6mIl7G+UnDT0HRrnJvw9T3U7g9Vm75oJpkJtZyme0070qIJRbR5RRvFmVwIHOgW/Kp9mWnziiDHJ/Q==","shasum":"e5e2de82202ba17924e4bbca014cc55d05be8c54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612356339-9a9b1b23.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGpuaCRA9TVsSAnZWagAA4eIQAIxxWTYf/guPCjOg/UoG\ns2H8MRTEvsigS6trh5q1sRXCqXLXKB+gKYfp1YmU6B829hlPC0ydVN/1y5Ze\nzZIsmhtHk9JxL/RcE3mk10QX9951j+2RJv0UFuNioTOTdrY3F8bT7U6KYXcv\npd0TQ33oa7ZKdK4z5kVSFGekbfy3Q93atTIQ3nctEW6ePEDQMABdE1BmLFGu\n3rf7n+yLCo2ZaL54C8m4Wt5kw7xjbHqQ2KqeCZnHyfSg2bXWA/WvS1p0SeVJ\n/ZZ9zOS89f5rDQmp8vWf8drc0w9uhtwe4OYzo2gj7jXh1g9d7hbT6+jn6ivA\n0GLzfEdUwJzgVXCfQiLeQFw+DAZMuGlTfvXwxNZZCShfXii5YaqAI+lygDp6\nBAMZYr2zRSocZaAVEK+R4xlyfg+zs8+5QqfUa5MBMF9Txh3liSshit3hKfEV\ne5XHRU7PCkhi1BaDef/du9guNjtR8+8PoZQq7ycY5c8Ty3y21YD6YBAL5KYN\n4iNVsxqOdPt+gu6W/tXuU5rS7swCRTUsbGzX7vbqsD+Yo2RIdD3MjzUIiSel\nfgDUeHeiHOzzT1UgOtZYAffAcsw75/anj0dIDpAKNWdEtzWiK0sc3WyNlGFc\njAiPxF3QzzMG08TTfvwfP0mAC4WhiWgz85hbB0Nu43FYRz7p5kcUMFrPvQv9\nBItA\r\n=hBwm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiVLFDaBvMBgXwmEN1hSlaFW5wjy/8O+IR1h/mHmjzeQIgCPpitbgoI4qI0DhjPtQsEqDkOrXxvV3/YH+vrQUKets="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612356339-9a9b1b23.0_1612356504905_0.49703458795635536"},"_hasShrinkwrap":false},"2.41.2-next-1612356417-70d102fb.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612356417-70d102fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612356417-70d102fb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612356417-70d102fb.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-sCbO66hBk3/0Iu6fAClDyyt8hZ6VioKctAh4jjyu9Ii4PZ7qUPCj4e2eMQjkfG/8j0SUZ2sGn/NBXq4tEzIRYg==","shasum":"2971a8795b7dae6fc7f0a547244d22bd27e909a7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612356417-70d102fb.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGpv1CRA9TVsSAnZWagAAW+4QAILHNjkSM0abN1OF/iGl\nTvMF2p0hH5UK/eStQmlrbsrzdaIRTsA+OQ8Obp5irTt41EhX2lLewUYksQAD\n0OxqsJ+3iZ5VPtjVurcW3edRQUHuUn56A+ewQPfj3FTggjYQzU3fJPOWKUm4\nftIBryWr8SoAdCn667uqJfhltTVlCbm4dB8PRgySzerNFFPn2vMD7V0tESu+\n09y/3QX9LgNGroC6Nkyige2xWdg++kjqol0CL2oWGdpkgBeVOIrm5xcs1YJJ\nVlCSLYII/3o2E7cJK/cLsBLQdSO58On860gEwWm44uJR3lkcmRRrSmNJ+Hrg\nnX/WK8O/9r3auEhALBBcyv+OcIY75LS/NR+6CuC2sYwc4XmfOz9PQzh0A1UR\nsPtb30hFEy9sKCcOOkSXStQeHNRz7K6tqEjx6dHeM7te8exQTP48iDCufC6M\n2Jx3TgoviVRn56bfw8WmGJdeTvh2/j40r0iOx4FlUFEjV6Gb980xW7RLFv0j\naZIn5i+ZASmyaFwAK25TR4zIqwEMwAjzzx2VGpu1i6qfrBFHUXSjTStIlnmj\nQ+hBjVoxPu3Rz/abmfj0T67LAXzSI9AU6ErsbnZOi/bepGgZOst+0dxdFSgf\ncJ6fuXPSMvd6Tv3RZxTh94DX7cnf05J02UFCHLJgyPqxAr3wrNrrRtIw9mge\nZ1jK\r\n=VmpI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICkvW83vamUHjjcxJYzkqQ1e40kc8lwyae4NuzI/JxEKAiAxoi3+tgK6CLW1DWghIH1vxrHLaay8L8vXFsS40XZ3yw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612356417-70d102fb.0_1612356596590_0.8224245972764981"},"_hasShrinkwrap":false},"2.41.2-next-1612359260-a3c6e28c.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612359260-a3c6e28c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612359260-a3c6e28c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612359260-a3c6e28c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-J3SJ2d4dI8Kzv7ETNpNF8T/SJt/rDUVUz2/IYOKhs1wqo8Ghn+UvbvTqUpMXypP4kOs9xZUPnU/rtd5W3Oe+OQ==","shasum":"4a3047a23144ab8005432d78dcb7c9ed5da06e71","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612359260-a3c6e28c.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGqcTCRA9TVsSAnZWagAA0cMP/2cek6HfDkoOLhJ8TVJ+\n3DtwGfZZr+0ReCiziXq90vkA4kmmyIzto78Z/kUyspJuofta4SFbA66mDW8B\n3AyyrE0LKlegqMz4dT5xeDDq1LrGFvuaz8Hp5SbDvKjt3XuJ+gF2s76YzDAk\n8D/kyBXo9ulJ46NtommPw7BSu7QhTcChiWO04tI6DnxpYN7Qjd3L29XKE+fY\n8eMz8r76NF0LCHygzctxfMPl3wFWCCyPiSklbG6tpFmcWpnRb7uCmyLjqYbh\nYfvpEh3NXP3Z574idlHBF5MxE6afQvCeOajtAyz0yPENsffhJALBegGS1G3k\n1QrBkdWk8za39xg8dy09nNyAQDyPQu+V93q3DPkBU4r2sFW+7Fer7kx9ChIT\n6TuHT1Lo66THyiMp3f9Z/GJlIWjQ8ozdUNdW/xD+Z57x0dNUvCCpF1w73zlJ\nsbqP0R0cBWzWmn9b16OMSg2ow25/txlC6zqu9dc+VZT2V4YMcaFuwM+geH2W\nddKxEBb5qSlV1I3eNchxQZcXdBeDNDnxUK3hADBHXcGM+BpK4vKhNMQpPIrS\nLFn76hUU65Phvyj0x/9WM77vWjn7t+MtOHrFwllgsemgF/Zyv6iUggHpjOQq\npYP3PJw5aly8JNRjEoBfqrKQumD/9zoZMjz00459vU93lPbH8U50lnURXySg\nOhv+\r\n=D3lx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGN/2OS8mwbIEgiCzkvDfP8Q2JjefeXWxRMdkjsuwsOAiA8m3KSYWm8ehZuSwQgL5Y1AixGmBp8kuFz84rAZw2m3Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612359260-a3c6e28c.0_1612359442569_0.7810866111221662"},"_hasShrinkwrap":false},"2.41.2-next-1612359443-27fa1a57.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612359443-27fa1a57.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612359443-27fa1a57.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612359443-27fa1a57.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-NAAqcAoPhKmISM7+Gz9YpwPiR0ZCYdnEE4VepKUbA+DDSEERMdD5XQEMGLadjId7bFgKQycIgCf8bcWNMUnYig==","shasum":"57951f05adceca881bb0a9be074482be68726ca7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612359443-27fa1a57.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGqeuCRA9TVsSAnZWagAAIigP/R+r9OpFnukVEGhvRiuV\nBmsVpu8JhzBiSj8bzq59vRv9A3jCpuFwKbb446J2MciRxyS2ZiprBcU86q0e\nmFQoFnrNgM1LjRoihPeCuEqq29vPWis+ztEc5VtJCjj2MhYTaumgDtKWvejC\nmrtCL1wH1vwDMMawIOpzqp2m/QE1M7af6/sOjVmoF2fGOcoX1e1ulSY6FHPT\nzue9zGhBGRO0+fTfqkTREi6CAoTnW80foL0adxPXt4ogXYNppo2+Ij80+rC5\nmAMVJzs19GqgvuNEok7wsMvQ6xLpybRGtEGVqN9tmaavllcevdYdA+phZWuI\nYUK6kBtmSaPWVG8YlYZ1jP4WFsgDZc9c1krROxf7dmIOyqTbc+6f+58Npa5/\nxF0v3D43Pkry/wVCn8m1OGAnl2xckAwmk/cCg1I2+nUBDY3WzoHYaBo0FiBO\nl9/V0FiMgGKpWgKHq6UtIjO42JlYxVXU5a5mn/YA8DLBUPTHnJCFQVNX15MN\nDtOm5iyMfGbw+YOBl96TBZ5q2p6PRLEibsaeb+FpUh2LlFWblBcw2+wW+RgH\n2DfUblkLxn444KZ6E0cz4nMtQh0h6dGIxqSoh5YUrwrMkXZ8lRbMqEQ2S+KM\nfKa5WuJMf+3o53Yd5k0QGRRwXmGgmL+jNUUhbxxAZX2FTo+LfjGiYp8sXHNZ\nC3Im\r\n=aQMj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQ5+EQhv3zvhtOI+NMg9sObhRbzLobJa+nftyjAl/TDwIgZ/Q47oA5MH+zeDKREeIu0lOReH44YCl+7CyobOAcqYU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612359443-27fa1a57.0_1612359597467_0.8489415901000932"},"_hasShrinkwrap":false},"2.41.2-next-1612361322-a3c6e28c.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612361322-a3c6e28c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612361322-a3c6e28c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612361322-a3c6e28c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ybnW1Kj59TGzx65BoohsT7BD3gW/i80LZTg9nBCeCnu8AMtsrubP0KjLeh0ES6YBtBUxmGN2zFHVZP8ob66wgQ==","shasum":"2c2e945a86f37100b1ebf060a0c56b125f16a53c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612361322-a3c6e28c.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGq8VCRA9TVsSAnZWagAAibEP/0vM8ZYtCwhWgC/S5jlp\n9zI/axTuZrKaA9cZgFOhNPJIe7vwy4ra+84ART5JkCaHh6huO7YF8SKDeUfX\nuDvRcFWGzj6RE23EAzFGJIYI2uS0ReUP/mn3pjJ88mPo47t3e7hJNtJmYbhg\nxuo/FurqG3HBTxzCPsKqIkHSXG91OijqpeJzciCxMp9/boB76ELNFPEkx/kJ\n2vwB4icHmlHsSpuI+58f7PPGttLGchS7EsWWqlVGu4RaaaZnTBrd56NOn+Tj\nPd7W1CAm3QHQ8/pDFAOepz4anB+C/xDymERc8fpaRVCTAlargZpxBZrSbcSt\n8zgt2XnLysDDEkABfXYjv9E5ZpzM4PuOlz+qWVBST6MG+FuZOs3bmanb8fUF\nT1jgaMddrzC3LHxju7Safrs39O5XkeZeDGvCbuiOqy+fBCx0zzehmxjwUctu\newJIbsidBdjMaoSmgTr18dGDQknbQm5vHa054Q7ybtdTS6ovaF9Qqf+F0SC3\nx24XwDxuSp2KF960DijfcgYUwCW70tHAY2wfeKKz+FRNJoMFI2UFebFsB0/C\nolMdnBrOyyegzwWzrcU6qaaGzUTUGLqJ33idrnKslD5/juGFrFy6IcMxhcfC\nwBh0W5J7ANkobxjOhacpKmVcEXxT7VIXCKpCu6RUjbSIl5Ubh0jovg2qwLbx\nTvzH\r\n=viO0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDw3Hcnd83+K6n65aCPoRtlW4V20GG+R6RIvYCOQq2qUgIhALtUoa6RKtzVvao44zkvTOwuU7b4nipauSCOEdZ7HmYX"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612361322-a3c6e28c.0_1612361493052_0.7830467811846411"},"_hasShrinkwrap":false},"2.41.2-next-1612363251-80de88fc.0":{"name":"@xdn/prefetch","version":"2.41.2-next-1612363251-80de88fc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.41.2-next-1612363251-80de88fc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.41.2-next-1612363251-80de88fc.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-JH+ymZVROd/Qeglyc8nl6EQ2a3qqAucR6r6+agKaHwDvzVShpd6GNuwhHsgmfoor1UkuJvee86jxG3+Ixq718Q==","shasum":"1eeed837ea766e27f62e80bb76c3c352c2167e94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.41.2-next-1612363251-80de88fc.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGralCRA9TVsSAnZWagAAL8wP/RozqcVcM9ci/sYKXFyr\nCKE2Gt8WI46aO+wvJ9tI/UreazYZge3odAqwzJUy6cc3VLUyeqIOX9iWVeTk\nM17wwWn63OLfu2aeutyb4P2/0NOUrmoJMtBuuCjKFGT4Wl0s7s0LeQBCHDuX\nGGC5ryOc1lKVq01/UMGFp1GFwFbO8icAkA9aho4V/qsa+A+EYMQYINtZnlte\nyLDw5wKkMAtLB/ptohjqzJOSvHGpIaH9jzgylXvzpDethNlWAHExXTi16xE1\nyLoDILE6xknkzT/kKW2wpCQcOyqluunQA/Mw9Bfc1EB0kM3DnKTxITOgChZN\nI+S/GXjmwyKheCvAmAjtmWQVzRzrdd3Yrhwoksb+LOKYqAfQp4ZFkZxTDU7V\nJNI/aAp3KcOY+khDhw1l660a3l9Gbg96upYmmdCE2nztbWEFo6c1hkpFUBbj\nsfCFJ6yIRtdwAAdWKHQjUWfdrNB1XSqPPkxcoHSMN4dbDno/81FKekj4vUmA\nmVg0uNk+LpCpNytvlIuLnBsGOTtwe3GIxUnBohPcfW8gOHfgyT/Ow8fY5Jaz\nDsJiAPQl2MyzJujWQDZYGmh60huJ+v3G1rJP1faIY1YfH9XTVofL5SK/rcWs\nidg7XyNdI1DA9ulOojCvWiIXWnoA2B8y1PpJ6b95+DDavdHc3ryGaFAUYiU4\nRvdq\r\n=n81+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEkBo6lK8QhWlBZnHy3ZCQCvMIZcGMq0VBWJtKZao+HYAiACasm33NLAvhG7ayw1bFA+w0zrtpMgZiSH/wQ0xP4/GA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.41.2-next-1612363251-80de88fc.0_1612363429108_0.27230621883375195"},"_hasShrinkwrap":false},"2.42.1-next-1612364611-e263ef8d.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612364611-e263ef8d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612364611-e263ef8d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612364611-e263ef8d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-hB1v7zEp+xqOpUYw/i2K7qNJwKIuq8CPOAxn/nAjmaEqZCxVUjf5S9HcfURO74otrKvSa+7lEUhGs9Y9QH4tUA==","shasum":"ebfd72e9df20e1c167d4b8851384ffbb9f3b979b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612364611-e263ef8d.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGrv0CRA9TVsSAnZWagAA1XwP/R7KWztOPgGzRCOfxwS+\n2EElmRUn4V4GNnwJCrpHeDafnPHiQ0+RAo9BLl+RCpqK7xrcCQhexLpFaYX2\nAe8x4B19nN9d4gPyjDExjZKSlZMd+F5cbgQp6/+ngyroQbSQey/M1b6ZwrQR\n1vJAmIEN/9PFINprQK/qzPfmVKwWGDH6jnzi5KxC+i6edo969j2MqdGVgD66\nENIVHza9+OMWeprWXDkTrmcUyTu7ER/Ny0ZBboTqew80Zo5Pemb8+G4fDDCa\nkoqhhB5STCO/Ag9VJO4gRmtNtbkB9r/MKER4A3HKIo1vJgCDyZ+VajynebnE\nTYw1jaVT60gVZL6bNcee3Ue/Zu4cByirAvx92bLfUb0XXDXCfy9cdAqu0IRi\nDRzfNW512zCv6rlpDMdCXIEbhPKFA4FrV9WJTim0IZFcGcsqv+ZSzU5XW+WI\n6Qr3g1rxZIj7yPzU0edfsbcD6PUnjuAFsxpgfysQV2Nr0VMkS2grFNHxTH4Q\nd2tdypGgD4kygtp67m5BZIibfSbyL/PP2AMDaWQqktrNJ5vmle79L9LMcbjs\nG5ti+rhGERkg/FLLMX9KBG7EhYNdPp2jsdHTedA84BTxB7hBarJrIbjAUKro\nHADnw0hda6eVq9DzVMae5oUQ7KSvJgwC9Zggm8Y4BPtFy9iml153XE0aBFN+\n48T6\r\n=aIVM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEN54oc7fWnYokjNgAvNd/nAfE8SMKLopAp2pCpe5g4IAiEA+qzITLkOGNOtt3dP2xhfVwxAHVI0y65L8emZ0Y3cXQQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612364611-e263ef8d.0_1612364787933_0.7735084818714277"},"_hasShrinkwrap":false},"2.42.1-next-1612364768-cc897ed9.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612364768-cc897ed9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612364768-cc897ed9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612364768-cc897ed9.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-k7KKGmCb4rV92sKpcg5gWUBpSHUvqPsif98YxSPbxqVOj+ohJ3OXWYiH18Y2GIGZoIxSX2FWbteGH3vW2kW2Xw==","shasum":"88167b64c44c5d23d1941ffd5d9852e45d1c18aa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612364768-cc897ed9.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGryMCRA9TVsSAnZWagAAswkP/1sm6kW3pLVHFJdvMu0j\nB7ys9S65I/5s0lPXtV7SqZmV5ZXeKmQtyXAsE8zaUsIVUiFQL0OKpxnxWhgq\nvfGEU4nDax2gDROPB1iuQSuhDMWsQgeSj+p8bZMOjwpRXnVMYTlvKnRHbNOk\nn9ryC/iXADUXeOnr4zMf5W+FN8RzqOVjqx3x0lldYi0CmTasBb2UWHFh4WIK\nYEUZXGX15ym2D9TXhGAW7dBXoZ8QdhCMomhglfv/abfdmyj1P9ugtMkPrvYD\nLUoX54HQkd/W7sL7vn/dJjI2bll/SjjRYDlYPr4DStHAygeao8e+U0+kfJgu\n1cpagsr+L/r0ky4yDBRnAMJRlGsHnZovOXCPcVNKGHAGcxjqgwsb7a6FYe30\n+44Ymf+Xy2OeN8L3s8QWuwFwAVpFfYL7suZNYEYlD90RwHS7V1Ln4TjAL0NF\n4BL5OY5l/pR3BhwG0HI1oFabc1xIrvzUFSBDdaWUKFb82mc76Gv53FB+TaWo\nx2iPxcAWarG1x0tySlP9J4fpw9nxAh7ngbzTxZFIUdxQ1K5lj0uRFccKjadm\nYnZcoOWcODhXdLlbx+EMzhnmGEYmcvUxXja1785Y79XPqiktmvPtqntwQSaa\ndrYzS/X5Pvjrh6X1lsA8LnHMXjcj6YOblPXRA1qwj7ViAU6C5tKlgRrVbF34\nFHI/\r\n=E3bk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDJ66BrTsEYUqlMlCfBIwfVvEdWkDXP5ffricA3jh/cKAiEAjonzREv/YGoVegIntryohnI/Q1k5a+mPO+K3jvdG2qg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612364768-cc897ed9.0_1612364939959_0.2855033470404471"},"_hasShrinkwrap":false},"2.42.1-next-1612374953-cc897ed9.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612374953-cc897ed9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612374953-cc897ed9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612374953-cc897ed9.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-gh3mmIO6dAkHLHNw2bl2+JguyOjThVpB5LqnTyq0T6fSovznKy7XnM/8CVUlvxswL9nvRLasNkAn0PAYRir9JQ==","shasum":"b3bb4c95ae935df8b0723e342030c45b06120afb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612374953-cc897ed9.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGuReCRA9TVsSAnZWagAAL30P/3u6LkjyUFaBapqn4T5P\n4ER62qNL8IRVMiMKJbfkxESCZ4YNp24ETrhkx7N1J8NrertD3KrvO9msBYCN\n5kRIFACgVChUauFI4LDgfmh79zY4FEYLXslwExp30lCRKszyRAuQXm8INOee\njqEcvH9nuq5Ngj8f03N8L2h754Wp8d0SOUNocw8Xfrjdd6kYRdOSA/yEmePO\nv4QzSVByCuVtoECCCdKIXl5BZzC7r8z5tFTU9cCJc8Aprw/4sbuh709y3hGj\ngkmKHZi1cKTkXGEVyYOM4zqh30fRLXRrWon2Pl0YHAFGNsMDgrlRD3GGOlIX\nAW00M+I8NwLyLc47sBdqj8JYFKjWx7U/kt9BIjWU/8tu5dEdSsBqGzIwLQdU\nHqMAQiR3J7Cyqt53F4o/d+nUhi/V8IFPvs/HMu85L7jA+a9jgw2At4uCpqVH\noWKsp/tYupWBZCyFuzNHyOhqTeLLG/Aq3z+A2+7P0AMInwShWjepAygfBGSf\nvEw+VLn15v8Na4CeHS0/eCPBT6LCXhCoRtWmuOMWXzp0QiZhKzEwvhQa3hc2\n+2Qe9XasMbLoNaQEu4oJbEYfgsGxm9uQ5hc/h0yoXodnI7RJ3jyVb/xLIw7f\nfELw5mGVZqGmKRUMfYL+mU8utV2Xo8cQ1RAkKzhcB82Jw5YvnZwrQJqA82Fg\n01M/\r\n=OQaH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAwxHFJg4I8sxnUS/ykaBBDJUmu66Z1DINc91h8l9LpnAiEAnlTRE3p3C7snYDc9oyTVSf0JhtF7gt0FMi1jR6P8fIs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612374953-cc897ed9.0_1612375133732_0.18890733009213156"},"_hasShrinkwrap":false},"2.42.1-next-1612375734-9e6f1b0d.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612375734-9e6f1b0d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612375734-9e6f1b0d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612375734-9e6f1b0d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-fYWNIAhiDCrRH7fs9EWAV4px+uLQOlV1KvUfAZ/3ueDPuJz8ouIFfYoCgHEMc97qN5YYbglQMdJqGoc3JdFwOw==","shasum":"7b282efe5b64e613b5dc436e6356dcd9ebe8760f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612375734-9e6f1b0d.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGudnCRA9TVsSAnZWagAAR+MP/jtbSsWeEb9IBvc2u3xE\n/IWDYjB8hc94upwTpmIEbnYspOFI/2fC5B2lre9q9TBsb6Vnr172m5o1alUF\nvJ/CcOP5AxOfOojLrHEPWW9tP4+BUEFpnnOguHoEX+uUbSwRomWyL0pm29Yi\nruGEIxL2P8/bKHaJMKopaw6BTtGAPRsB+NV/ZyYG/1mh6kjelEMHo9TgNDE8\nz7vXrdkiHHyNJA89oRQqn0E4TFr8/pa0nF5QKnd9c0JVfk4NMs2Bxt0L+z0i\nGYsghi9AO0Jku4MG7Jg1r+vS31vKyLEP64wy+UvEm6lgcUuJqS2pGyB2RaAt\n2PMoSK34DCGYmZjRwMbaU9rSZ76rRwN+A7wBtAbTfdhB9FIoUdIcN9Z38bD1\nvK9/JIUIuR39x0EE6n5oq6oMFHmsRrSmb44oXnohw+x9ix4JNxbU5rnmRwKe\nbnnNZdWKEvib7yxt1K0CGVDbNUjA2XtX6KFAqMbL3BrTqzDfjjVw8S8NFoXh\nnCeNAKDqie794sErj1ppAb1idEIgQUwnhE44DGx5IbsuUKe81bA4673GBNbq\nnhb+GFrM06eIeH7FEgmkn6G53d+320XIHWKTE+zS9rA6Wdmp3riDuDXQ8i1p\nJPs419PnniBAO9PwGJSCDEbrelYFKBIsQcpJU9J+EV1dt59HTjo+aGtGtjvV\n4SuW\r\n=ysT0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn97YnZ8IYfqFyYsI385ZCGj3Il4uNVEGOUAgSt2JijAIgK4l5PXZ9p/fx6EQKCWXsO6wfc/uZZIKTdzyhh8o5tPc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612375734-9e6f1b0d.0_1612375911372_0.14782876390846456"},"_hasShrinkwrap":false},"2.42.1-next-1612375968-5ac963f0.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612375968-5ac963f0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612375968-5ac963f0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612375968-5ac963f0.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-2jGGzXEP0fTS6VBwe09J1zIERHDcDcdw4OZZ9Fpx9Xa4ltKmvXw3/TjVsPrf/8HhwakxbapxUSN+Ml/6iHtl0g==","shasum":"e83a3b90b3b62847e9687e507e6b8609da009470","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612375968-5ac963f0.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGug5CRA9TVsSAnZWagAAy5cP/jWPcLHWoitAyTMRuIAh\nE/cSEYhLP0WVX8ZwLazf7uV55TmOpt3KwUmwgYSGsntOsGDrA1b/Wm+HFm+H\nGSTG+VO0bGjXfWOFQE//kc2B26epDcAm5lqAHJbuhMTC9dqNYYipiAs8k57N\nMy2qHnU9T+qPl/5IHVDyTM2YRxq/tiMl4Sw1v63hCNd3/kT9aRJVdFYQFxhF\nmLyPhMS+Ho+MvpVL9xwuWJ5JLetnohKf0ma6OlBYdNtU2pNfONvPCgGy0CdG\nCBD9znlH3iBSFnVtXhk0/2dOrn19CLtldvnixcUGAW9/4aFuynkYbCNu0rUF\nOzgvpXymuZgs6lHM6jZ5qwudbKfgW0GqMJH+kDSQLGtwyo6MrKtNh89E+/VT\n7Jj//Xf6HgFPBVrBAgw4sRJx+WDGWBPmZSX2zydfful5KIKdfoJ03kC7Gd1T\ntplV2MW6DgcxhJVWfB2ud+g9dCbkAb510T/mETjLqHsYJeSBRjtV/gjE2ylu\nWVWE040QJhN1jflRJ0sxTzQUQYBuoViWZl2bpKzQ1T4J8ZwTFNT3HX0m+oad\nYzv+quvHjiP39BMAkhtP/pcFp8/AuadYLig5Tc3I6TKJQ9Y3LwjWn4HuEL8m\nDG7f+J7agJibnMs7BvnOxWo/tcL5HZaUmDfyFd50uCaITk87KDWFoj7s8+D6\ntEOs\r\n=iSGF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLdTnLTMaStZNgFXNVnXbLv0lx5HlpbQR82JSvl4yoYQIgZWeKZDpCkKnYWapFayEiMDB51vHsYlkQLIyIPKmMAJg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612375968-5ac963f0.0_1612376121076_0.6970061168396688"},"_hasShrinkwrap":false},"2.42.0":{"name":"@xdn/prefetch","version":"2.42.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.42.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-MTmZRksR9jNme5RJuaYM3SVFk7/EAvz8KXXxt0IW5VJUnCsMUeqkPZo31t8XbDKWRcZbL9H0khxG0qF8kkAsXw==","shasum":"720efeb756278a4217777ea8b5d00b0206d72f44","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.0.tgz","fileCount":58,"unpackedSize":141806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGvC/CRA9TVsSAnZWagAATfQP/2WK/cp3AHt8M9frFgUG\ni1joshYbrSeBAP8yC8H/r1MuCS7Al2EEdO4RKZzppN1t9JFurNLpWH0NrGD7\nddC7fV/PhUrilbP7eeDGe5UAdw99T2ElGTWB1a5f7XCKXWNZ/tdQTrDLjKpE\n7zPC9orfGtWWCEGeWN1quq6YODF1H38Hjk3GH0fJjL3qhWakk/lMlB5eolHN\naP1MMrTaN6sAVWIy0WY3RA6IXjdSD0t7Y50u7vEINgaRIsMXbVcIGgfOpv0v\nenZWSln2AMTfsqNOFLMpA3mUS/IMtuRSrSjXyBEFTxdF5cuVBj0VsSftFN1J\nDHtNwXF5m6DaRLdwtvgdO3ru9fK0zBAKsSd+JzUL1IeZTjPCssp3ZuedTrGe\nIWsBWulFJAXmdwPrnI7YmzpIkSWT+p9bXQTbYgEYY1nX9lBD4lGi0/8bUKml\nOs+fEYkjQNKk19KaH+EgJb93/mLbLgAII6OAWhV5pCK7qCL6bcx2eFMqxUFY\nsh8T8Ljn08B2kJyOTPnR8dI6XkyzzKNo5k2+2KYGp6zoYRnX1X1pOHaZ5DCp\nKNToxvLph7Bnqn5wSzUPePq1BKSO2ZylfiOBu0FwjBvxWQV0ldeNRPybTUBP\nbgTIoJv25vCbU+fd4ZKV02vibF3fArFxaYLUUfgO6FkQqFYQozr4p7C29YSI\nN0Rl\r\n=qW30\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGnO04S47PZI3m+2iymvAHsSAUMiLwJm7Oyxfi1KajCuAiEAv0KZmr0OTY4aTBOzEaPtjs/E6HyXdTtes9Gc0upi5vw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.0_1612378303030_0.2753768786580093"},"_hasShrinkwrap":false},"2.42.1-next-1612394810-d380b62c.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612394810-d380b62c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612394810-d380b62c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612394810-d380b62c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-/c9lHfCvzdNbHZGCJQ9gNxZBaUDL3SEYeMYja/5PBvqZwZ3aJ3P8j2n/bY/wgACxteiUhRvvfnAixSg0Y4cwiA==","shasum":"2ec28b0b7a51a01993451f6f7ec350c0a5bd0c1e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612394810-d380b62c.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGzH4CRA9TVsSAnZWagAAL6cQAI89kmGJy0/bQLJ4FSxY\n3WgvUXQYd1bZkMPWpoewEAJnPly/F1IPVAF5XNQEArvtAqmqwoQy5Pq3i45W\nhpiaNsZVmOQHmIXRb1eUhzkKs7Onkf3wVf0X2huSdBOyxcaONdJaBofLdH8n\nl+9F932+ipN6izYz3EeJZSIGVPUAIMTK9ILpXgo4RexBDJnKQKfyTuaAbqME\nRhwCTojTVM3yrO2q/2pPu32Pkh+8MqD2CvFpOr/tCw+KuKDVKcHIqPpiQ6Rv\nI+sfN6KLWnxoAVbyp49BpU2SVbF0f7tZZ32uXrAzgTCTpA6wBtVbDL3mhG5K\nrAQ9g4uiWgxbhP4jErTAJrAiUK33+97TSCnJNZC8ku4SUnl+i9judvVKDJXQ\nXqf3u7g/oqzNDhH5QNS4is/dgzROqVDwjSebJsZ9B0P1Md3j2aB+hZ0+lRCF\nh9DSPpGoj1nsvMCrZSEHGg+KADIZXQQFJU6ACrhMIOT+mlR0zyefxZFNboNy\nSKzpjF9BVlAmqLrLve3EHQqblMlj/Erz6UT5V/btxvUUv2fMw8h6srNGYB37\neItKkLsqOgqEyvcAzEGSpserf0uKswnnKSU5/U2GUzdJqbvxoIj0Bxuxc13w\nwRuaVUUwsX5If4vn384DjTRjNgz5HLDEqmOLI3ffu5r4Kow+PpsEu3YiKAlx\n3OQA\r\n=3nNp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGbm62FAeVUUsYx0KeZU67SMKp/HzDilqJCDGdmjX1ZHAiEA2lxxIezAI+U6EynhzFDRlTdPpDYsqznkNlnhX3paXf8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612394810-d380b62c.0_1612395000156_0.08022819046903651"},"_hasShrinkwrap":false},"2.42.1-next-1612437293-5ac963f0.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612437293-5ac963f0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612437293-5ac963f0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612437293-5ac963f0.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-wJVOxhN9a7uCUtePRGWcCtDNxiBnq1yhXscpt5fesVQVCfr1IgVrLJdJpKRZHc/W92rfrDRT9joP/3HVARUc3w==","shasum":"05c4628748a075237ec6be58dd233bef1ed4df46","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612437293-5ac963f0.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG9fiCRA9TVsSAnZWagAAK24P/jGBRvbMdBgb6N5zrEPJ\nRyaCcYFnOnKmOYKZxXw0kwLfkUSBDOxKSIob+0mjuVopY/1sEMlJ2LndPswM\nVS/J0t3fE2HFRQjoyVxGAh37AheFiyRs5CTfHmxa8DvifvNGG3PEOgYjfpTV\nzB354FBn3fADOwTlii9uBLGRxbUKEjG9l6byQgamVelltfIrX5tbjv954aZ8\noxNbGX/O1VvjDpC1x+8kYJgFkcRvumqnM8PJdEaRjd23GTF4EKw0uFrgL8Vc\ndEAMVUq+nqk9vubr0pDe3WWq1B1HwNrI+r2uxOP/jb9r1gnEVC2/coLCJj6y\nRy9fmXw4HzGYZUepSvTC+OoAljme6hmoTDCJtZ+nFJSGVi0Sj0Trit8d20cz\nK6mtvk5M2hC81vwmEsV4jwb9TXRmIpCiUbtxoOce/nJOqJZeQP0ovO1PqeL+\nD+0SxkGgyisonikvuKz0gtFk3EygOEUMVpZ3VkCZ+blOg2+xYmiNxkxzF41G\nWgGrGAPbdbVmouKxOI/HeTWK9nfQNMD9NACzGSN/iVBaCjroKUJswfgVI9DG\nZlIpZF5NZA5UDZcBjiOJBFPSfubvpmyT2N4ZrG95+QJRF1e/EdOdREssITDY\n5GetNPSPXqAdygM5hLUhdVhVOnXqZoBjbU7TMa6t0AIXpZTr4Qh/fAkx35OT\nXBj8\r\n=iPe1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpEipaCrro1CiYSndH1u84synvIPeGh3iLKzlvgrvI3gIhALJG7eNKYgVQ0pHWcds1b1cT8wTRXdfedy0bJ8FD7NCs"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612437293-5ac963f0.0_1612437473846_0.5006158930650861"},"_hasShrinkwrap":false},"2.42.1-next-1612437819-8fd5f5a3.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612437819-8fd5f5a3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612437819-8fd5f5a3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612437819-8fd5f5a3.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-EkLcCrPsVdCIELyJDGdRAmBbio8n1ASJ+3LajuTqoCFm4TocKo5U91W1EfykK5Nix0xW0lXjFpU8E/vU+gKIUQ==","shasum":"c74999f27aaaf805b69eddc14b0775e53e756817","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612437819-8fd5f5a3.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG9oMCRA9TVsSAnZWagAAY6sP/0+/mMXbhD2BL1Dl50/M\nzIbMTxrx3Coy9xVQDOwrG2tHTU5zCb1z1d3o108Etiz/4/1gtRND97jQfKh1\nkYqjKfxuIj3BiL50omsoRhyd1d6zfUARmoH3bO9zEyw5oHAFWCqxNk30i52h\nxvQM7ITv+FUom/MIWI8qfck/PJkf11tCQAj89OsJywveJWXRs95ZWDJQj7xf\nr3csHf9jSJBZDMIyflkYKcP0HdszUFvMxLtEFQ1+wmVbjQ6n2Zue6tWSEsO8\nSQxfxn+PAau74e6eG92x96MvCVFEyYcTa4xLhSmpqrABh/l3gukikB0kUR45\ntku9q/dnr7cN3gTNPDMAC7R8U2BjdzCxLVxjN9wvd87yTdaIlhVp9hqG4EMK\n6rD0vs37GEh/KtqMLalnTltsNzwc7JKtBJPvcUrK4GbApAqesUtML+HNEX9b\nWFWXoaAFujiCicJL6e7l7bi++aXUK/i15fGN3sNh9S2SvSuuMYt9jeZw+aBV\nh4x2qfmPbOF5dH5MToWbUu7Nz+lGeXfaHTm+exS6ipFekG0M7ZNtJZvn9bj3\nIQ538rLK3og5e0hTqjaO1HSP2mf+4fsmm+bIQ7tWUGLEuHj7RrlVY/crVGOi\nuySdIgOQ3mDY3A2P6edLeDfzJtQCtdJH66087lzok2T92SIWCnNDNT1dmwGc\n62SQ\r\n=exkm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8a/sD4o0ccn/WYZ2RZl2MthdEtvjf9Zb/G3aAq2P+qwIgdbmwekzCC6b1hKTTHsmbBy2PEqGG/daUT6zxjLisIvE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612437819-8fd5f5a3.0_1612438027908_0.11898776876553252"},"_hasShrinkwrap":false},"2.42.1-next-1612438697-23541602.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612438697-23541602.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612438697-23541602.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612438697-23541602.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-n8pF6m603i3HEbEEBM6vUDIEqbCsCBR5lC1003lgRCDoua1L7rCvUJA8Yon4gekyO+st+b/IJIKXSeUdogvcdg==","shasum":"28b90273c7d2d7c77ac573c0a7b2c74604e44a78","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612438697-23541602.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG91eCRA9TVsSAnZWagAA3vcP/jZtGSjdNW+bzW3j/To/\nws17iN/xlxPTxQw+3WRGZaHRDlHkX4c77Am/LZFy1xNKsnsijfZmWcb+fJVz\n6axGuyuPA+rXwCJ+Fw+zY1qYXw4wxR+d5mVTLQkMmOUbVHMAxtmBiFWb2wOh\ny5A6r7JgiVQkvyP8/Vcz/loP+SxbDupsWsPqzWQA0lHkpQ93YlUF6J1bitE5\nUg01q3b3YPQERiPbmWnB+wmVrGxby7Q9bhm7UEVGPPilyM9JeG6pOKys912I\nRSPtQg9D0JGScBORFTPZbJJBgCf6C7vnS3ZZGuMEVqKnWpT7ckXAHjy0czDK\nUMeDmFiUGl9xi1ITPLm5ye5WCRZwUlelS/OHyaVJOnC6eQKrIt85uoWE8p+N\nfzzX2ChWKOVUGzGYhmerhZKZHmZ4aIbSgvzPc0ovDm6GT0bmBgRgJ/XdEBrr\n3wRHvYvszqbfLkmuVY72kNjL7ZsSe+asSFnrzTRqvJ48se5UUueGSKH1T/Lo\nEhC4QYs8q+71yVVe0fQz+3ha/8/sieJyVDWtkyMcUhKlFTUqlH1/1uTKBKFn\ngZNuJukTYGJoKKtPnAw8uuayH3yEwU0Zxa8p1RExiwvj9P2GTmYjK8K71TRE\ngzfPpDaNtx44wly/OUow2ik0UCiGyjB926s9CyHW4UO7pgmBX1mDpweSS1JD\nU5yd\r\n=UyVb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDfUHSI/GJSIG72YZEUcFX5Qo0c6SovLKOhMk9YlxsV4AiEAo3xB1NTZFIFmPzF9R57mnzQUJ9ONBvX8khte86YIgtE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612438697-23541602.0_1612438877988_0.09705259006604128"},"_hasShrinkwrap":false},"2.42.1-next-1612441950-e0f0fc1c.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612441950-e0f0fc1c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612441950-e0f0fc1c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612441950-e0f0fc1c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-wxta9UEPo5P0KJs3zjpY5/zubA6lOYLYAxw4ebGT4pOC0aLXcjnydrH0e5+7ql0fvWtIb8almZsiqC/JYSJGlQ==","shasum":"3914c8a8a8926f86d0107c52ef219ee0802b5a11","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612441950-e0f0fc1c.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG+n4CRA9TVsSAnZWagAAvsYP+gODqZP1JdOh2HsJ1RVo\nk9/G4yc9FrtwZ4k+QYGJYCjTztYXUB205/kK7M+N+2WQ5CxZW9Voj9+02eMw\nGegSB0jS6WBjIwnSb7GhiGqPY4MbgsYoa99nKtY26nvE0ovZez8IXzP0nWDJ\n/nMOCcTJaSBYATK/yz8a0Oe1MIqfiZkJYWFsOoptaATViiLuyvix1pGql6MT\nbXACR6Wsfgh3ex766uhQ+woVP1T6sdQ/dJ9Ec19Zjv/nmyzChDfsDUWRNLtn\n99lhH/IRwjS/rwAp1LqOxg675VW8CCZKDegi3wyjocpmuWiQKeLZmFbfbSCD\nNcRRLKg5jpAgEfwxmQeAiLPn6l1N+EBdkqQF5TbmyYrQzzlSTubn4Ylxo3zf\nbiryHBqa1mFOPB4yFvh2ND9mRT5rQlpCKLl5XStbP8AqTems/um01FbhpMAn\nxHgSrg6V60eg6ndw7hG59gv2c9CIjZHz615ZMtMrK14deBHEfnMxnIm3FqFl\nFJONqW8Z5vrWuJ8S+DIgs877QB4oLO4TblgQo8tav4KCmdAJe1f5Xx2vhFGh\ntkblWAyEroNew2qtlZxp4oEnxg4hZD820JYnHKwf8bS5b1F6Hp0mO7YKJpqy\nJtaN7yZMF5qNdAiVPNGkmIT2MmGxooNqziG7uLnypQBe+/Qi8VynCI4veh5X\nQTzI\r\n=08aS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7j8Xy/pbu/43MseAIXmDiW+2Z7rxeflo9QcVmA/4QBAIhANVzSPVTXgECcBTmgKqKepsmcH/53sqR3eyRl2T3I+hM"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612441950-e0f0fc1c.0_1612442104376_0.3138348152482988"},"_hasShrinkwrap":false},"2.42.1-next-1612444959-92f162f7.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612444959-92f162f7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612444959-92f162f7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612444959-92f162f7.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-3Dd0O6uATZVxGMl1oN4jeiiZbg9Ci1GgZORF5+vmejAKftlRyXqIQLWnRHEVE/uzGrsqDx9maUhamPN5zNITUQ==","shasum":"36cf7aa7b6d45a6e8da873f02830c7549eb5bcd6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612444959-92f162f7.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG/W1CRA9TVsSAnZWagAAO7wP/2pM0cmNd2l/UJ2LynbT\nThHB3MwNAPJ5dcZjwzgDnepT6R8P8cWXykl8k+VsGk7aeBWSwe1m1ZHINJNE\njLJ39w36cKFF1x58VbtFOafh2VOr2Jrb/NOZSN36Z+OrgGw9ChrVAZFuUztJ\nOu4jz0eTnhpSNtrutUJigWiXuECbPWJb1N6krrM6SFWseFu66bi6g+/R24K4\nnp/Hc14wQXz42gPrbWBiV5yf+7EMCYZ0Nz5ciZiWKIhiyXCROV/KUM5z9/+0\nLNOuqDYzhrPGOoukmE0xbTy7BofkGy9odkDsnp98BnhvfmS64JQUZsuVCZuU\nS94bJBknSaUD6JfM0Otv7+aJmaHbUd1LngAtkB84wtXRde0H5JxLUqyxcdWJ\nJiuGXLjEYLji6Yo7vYJ3EVBZ+SumilYJHBUk9v8k+WdW+sWCVF5CIPba7zGO\nay/SnUsM4BHmigIrnyQO9OWeURU5yD16q6w/Ikv3uHX3ReNUYFlpcmtjfARh\nN5bS5gPoDk1nLwAl98TVS4JbbFPFfauKw1yD5Ar0lUUJJDKGHRRVyczmAZdJ\nOmyYZpj8Zp3VXOmFm73EQ4rVfplvOBZXSlxEwNSWytfPFVmYTnqE4+GWkSsb\nFPxmkqoRCljHVAhJPA7TRQfdnPdzP9PfxD3qpPItmiXjCNHG4aeD8ylTOau4\nq3I3\r\n=wxRQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBuchw/b5ciZvPKqKWvUKSapEonqgsjrybvTd7A2KnMLAiB2MasqMXp73hXH/9Cb1S7O0L1Uwi8A5B+CWR5kCiDc3Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612444959-92f162f7.0_1612445108947_0.4180306904139486"},"_hasShrinkwrap":false},"2.42.1-next-1612445371-e5cbb15e.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612445371-e5cbb15e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612445371-e5cbb15e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612445371-e5cbb15e.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Go4aJXOE+dKdxfA/zwS9H5YNAw12tLPTPFhHuD9KVqYAxu+/oMsgZWiEGkplb73h3Wmx6DKVf32ZXt3BQRB6ag==","shasum":"3b5af53d138c054cdda4999e47369009eba640e1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612445371-e5cbb15e.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG/doCRA9TVsSAnZWagAAFYkP/04LL3+SRwuNcl/UEyqp\nV/Vz5MO2lG60+uxjuGHR5TDFGWpk6ajjOh5MoaLrHQGCMC6nTZ2bVgK3abnZ\nEK2X4wyTsS+OjLQ1EC+HvLyeFxaJ1lOe3ppyOPZB7rfsbGWBr0fN6bYkGTI3\nlA+qzHlg+0JX49ZQiDk7jL/npHbZUEE77imoOi/ADD4pEPD+MOrFM+DvNrFg\nhOaxWgW0WLfpQpHWN9S+3nBbrl9aY8123ZFEp5BXTx/0qFrfefSI0BAbynCk\nQ/tUdGCXErjMMd0IPKHCZiImBpy96PcLWNxyOMOz37I+6TZ1xIH3TciUt3Od\nAoOrHN8M5mrVH4UuBtKE86henzSTiY6NpnqLyKwEmYEoD5r4Kqq9mPsGPinp\n8Yi/vEaolMCM69J0aOPaKVIfvxr3G92PhUXoOkw3HmY+9TlCrV9ZmlDL5leU\njuJYAOroQJaNLiY0nWlvkFOuTe280/aZBxYswT4FjRxjgqgig2hW1mESQFup\ndfmCUa2lRnzq+htrallz+lCUM/2CXMXhCiOLmMj/Fjpde6Ml6DV5Bp5DGKbd\nM1SnULmDH5ZmIdQ8Wwv6m0JrI9bX1uTd21yAo4juMmAXFZJ6iwgFradTg0qt\nld2dnV5XD5GcqzNUExqJgmqe31IYIBtCOpcsv7C03ELbMnHgShSKBxkznkRZ\nH71c\r\n=smhb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDN+Ak1cFprzvhRxUd/74PUeFuT0CqPoZrkRIQ+VgQNowIhANW+Uv1TjEfZ9ojI6n4sbHKsH7b51PURKeJa5Jc2oqzH"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612445371-e5cbb15e.0_1612445544037_0.9666480374443209"},"_hasShrinkwrap":false},"2.42.1-next-1612445648-1fc3b936.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612445648-1fc3b936.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612445648-1fc3b936.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612445648-1fc3b936.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-6m9JtBmmdBRnRQtS7nxjyPz3QLCwPFzqHyR24Qi3ic+xMifzLBWq2+aMV2wTkRG3FqsxkNdc2WQDJ8PQ9GFJ8A==","shasum":"d4b75309f222fe578812c5c5dded1b6e1c58037a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612445648-1fc3b936.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG/iHCRA9TVsSAnZWagAAAoQP/isEmyt+KWQsjK80ZPwa\nGi739qLJ4mh5akKCuaqNyM13Z4AY0xoCAiRPEC1wWZcgTd/TCqPvXSSZxiGV\nvfr/sjS6MJvbClDFE10LoadAS16ecd0gexBR8UkXeaa2OpB59utDs15xylQd\nytBtEoxR8zDqWhRQJjldqgnH9QFSe9wetd6VDQBIZFW0Bi8ASBdCiWykTvKC\nrvsl2zst1j93IrM+q8u8bzkWb/0Tam2LYeAXVJ1oY9+65wqhaszZq4ffWf+2\nj0/Muh6JkvIdE3COIpVrc7q92kFO+7+5scmvnWEtFLq7ZDkqNKv1m3COFoJz\nzLqiDfaJDgyWSIOlq2s2sHC0/MbGYsMNlk4jEkJWcXfaKh0bzHmD3qog3FyC\nU8ogcqWRN0om9HiO3ibKiVjhYJHZoSznDCoOPdFWzXefTK2s52k2UhjRPxs9\n6FeizH5hRB1+bV1/GrA1lupx+5NlccknImXYxwmsFos3m7N3F1jPT+ttP7RE\nF61or3J10uJ0hToh7EZx2allQ7g8Dfll+dP1k0GfkCth1gU3cRO4bWgiK87p\ng5T53JVg6QBcQ+QJlH1wJtUo/zwwbFRfnvn4WGeHkfncrcanQTzPQVIM3CuF\n+x/21wbHPLjT/9YMOIN8BXiA1zsNjN/PTmZ3E5ngaQd3ylmyVeMqtDPeFfVd\nhmJm\r\n=9gCN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+G0jlUfEp/povbB69AQ90OMPHTBLk3xmufO9aDNR60gIhAONP/FGdPkRdh3P2uePEvCxxiuVmoM4Vr+KAU3GNfcgR"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612445648-1fc3b936.0_1612445831138_0.5810456523058478"},"_hasShrinkwrap":false},"2.42.1-next-1612446878-5a7562c7.0":{"name":"@xdn/prefetch","version":"2.42.1-next-1612446878-5a7562c7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1-next-1612446878-5a7562c7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.1-next-1612446878-5a7562c7.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ryVbTRS+95XNqPrYHjvoIXjAArSpV/DvVpQdJ3dP3TohEyg/yl3EiMVW9zteNDdDg0aWleY/nuWdY6L++M8PpQ==","shasum":"638c0f89ec6a8166f442f52bde98b25bf2f8bda5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1-next-1612446878-5a7562c7.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG/1FCRA9TVsSAnZWagAATeQP/3QXuIk+tfpipvzfbrep\nBLGcdx4MQKRM9t/hIkfJEaGmLRFmOylatmX3BLtDmArUOO3sbkwwIrbJ4vZb\nlI4qm0pWk/anQqCI6bTYGCFH2xXx9JpmarM3DC5xPSgkLV31nZUp9aiV6Q8h\n7nb+03n9ikaAzBMy/lSZQm5iIsmAUAbsMqdsyoB5JizTWngBV+jZrlvb96Zx\ndn5iP2DxiIA9duKUZ9jFWtug9kYJEALifVxTEfHbcSfLGV0W+UO5K6RDyFQf\nXzIHJUhtrqHWnwOhLNbN9SaQ38Rk81nYU4RrimnobQdTK5n2z/6TaKPoUKbH\nlVAOVp9R3Cv/3Gse+/XHEXrPU/iK3aE7Ek0/RuRLB+M4YHsGow7WoZExbeoU\nlCaHLrOf5abZtKoWwjiYVHsdNn06RuqLB6FmQi3JPs06bvGdV5Wo4E7Fw7kx\nePkXEXu8JCCCWzyvgIZ/MBgbghBMyhgwQd5bLUYXQzO6go8XTUDtq9t0bDxn\nqU+70QqCRAbbBoUuKN5HbWawLs7Ptv4du5b9BEYii6++pYP7X9hyGAOb2N2y\nL+HhW+LYJE+9QNEfzp21k8y8OjHRjwa6bsxuFajjUsfAlxIeKnMZDsskKDbI\nPVWWE3NO0fBBDqlzXU5z2CkAtXobHuJQxGYnsYdOL51Mnqt/P930rj61TLun\n4Y36\r\n=6tvf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIApIigshhQWOKiOHmWnlwJvjm3Hgyj7vS5T6q/H6vvuLAiEAxnSAK6TdJ2hKF7QwHjRWaenx8miQW8BTXPq4gh49jPE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1-next-1612446878-5a7562c7.0_1612447045308_0.7647841451764432"},"_hasShrinkwrap":false},"2.42.2-next-1612447260-a2ba8aa2.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612447260-a2ba8aa2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612447260-a2ba8aa2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612447260-a2ba8aa2.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-VE+bnsGp15AVsK5/WwV9FNCmiS+pWLPRrxOKb4ndtnDvyiqhhyCS1eQZr7/TSVmM5TicAreN9A6T+UOs8Y5KUg==","shasum":"e9c4980c15ea1c1bd503cf19edbbe9ac57c5b2fe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612447260-a2ba8aa2.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG/7NCRA9TVsSAnZWagAAjHAP/RgW1uaH6Cg8tgxEf7HY\nqdg/G2M4iwcgjcgUGIKO3vrSbXhBwgLrT+IcvnBfBsTin9izPtv6WS2zVjfC\nylk8JwtRrr8ioocO5H97GMW0RW/g3g7Z2hb4dNEjy0wEwDKUNZ/RFQtCLOD6\n9HqwbAlOjxxxDOe+JgX/ualAzSzBFoPG9dB1keDjeRgYWtsde0yi2lD6pBFl\niA43bFkDe56gvWHyY3SltWrDWIYMrNljNySOfy71mgEytOF88jdfkV898qC5\n5gl5Rkgjnr7he3nXPNtc6Rs8PZa4/ogT0zs+2VQYG2xNOCHYAX211WXeqCMe\nPB/4KXJjCkQix/xFkn9gKAeLReZ1w/1XyxACg375ERz9XHIWOmIrX/Hi1pOr\nzWMgFgPnsO52HJ/JeNQQQ4v0Aidv7SOqBiPOl+uwhHgL4G2javs69cEodNMy\nWVUpOXWVNHsVv3NWzsoFN7ScFwNx87WQQJXTEvKCL8xkoaZQwLzqw1dfOGMz\nI1fJtFxr/DM9GtVqAI4PbGoxXcVTmG8LMLmGjLU2sd8XcSRSofCZblXb1OIm\nzIJkrCNPT76bdz1KvrbAQVEyxlwJ/N0CBs4CSUxc5qyuXWRloblU09aZqsFL\npuxPRdMR/vLiFleMVutDKLcnusl2vtbvgRUupi3d5rP+fmb4jWuPurqBeuxr\nKssr\r\n=UIXm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGDhW7AoWISax/VyMkv+hCbzpxJmNpblfXLV/THdSWyYAiEAmcL5HbQUvqk9ZCxbgfH8/9CqxJC9MB91V032UOTn6f8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612447260-a2ba8aa2.0_1612447436482_0.40211001783349687"},"_hasShrinkwrap":false},"2.42.1":{"name":"@xdn/prefetch","version":"2.42.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.42.1","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-eF1CqwVitN9OTxh/FPvyhe0m8+G8N/Cu8TWTnI6VkWJZn2Pmnm+dK5CE6x8eG34b5iJ/OwaANwItnBDCUVAgFQ==","shasum":"f6e800d4bef312844057a823545db3b2d124f9a8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.1.tgz","fileCount":58,"unpackedSize":141806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG/+0CRA9TVsSAnZWagAAEZQP/1TiEJU9Vacj/Qa1TSGa\nTscEekwo6FEiv/OaDEVOaJhdMN8nXL93xN97genT30U7ciLXFY0JIBIxMpC9\nGiWhOAklFein9nze7xnYoidwviQlsiBMdZzF4FzpRCLucnigaPCm+qIorRuR\n1PVqDqqij4Zvb2A2S+OhiBGmnyZo9Q4mb4fdBc3FbwiOD5eP1weJbogeBoo7\nM4Z31Xoy/41ZhC3Cv/hBXUj3JleWMY84++aSGkQS6VlPBj3Q72885NtONGTu\nDWRS3kDROiD6NHDtF+v3K5SPgtqZ1QxfTxoKsZ0zq7q9aOt0nXaOKCwpU9EH\nMUKSgwhacPqsa6eAbdvsQKB+6mmyuLNBDtcKhSGXehPP8Wr3P0pGXkb9cv4h\n8ruAyERcZNo38BZUFygH4frXBo5SwEkrcedutXBdDAjguHG7XrjP8sQWHIWy\nmmAry54wiDLaarX+ALpnlAcNPbfZjV6bpQK8QvL59DdZ6WwVNXRCvH36wjGb\nlS8BsPJZyM+lCYwp3zNRp9L3x2s7Ct9NrJeXdUskYLMA9+BECg9ZwutDfzSJ\nBdp0UXJ7q5YAxF1gQq3tsNTDZuTFAWLNQWINmfxTeR25AcO5bU5rz9DaQzWx\nVNY3SI2IwbOGfguWPcZHzNPBtsO+sVg6H7tc/HzA7xdKBxz9WZ/lQzPIRFSX\nN4b1\r\n=AUCF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDh1kI//k1k2dmDgBkQ2I8i5w4xBO6LmFwyPhKByyPKewIgfisBjzvJkM7mcSxw/jhgjj8AYVzGsDnvghbrpEHk7HE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.1_1612447667465_0.24498589213116873"},"_hasShrinkwrap":false},"2.42.2-next-1612447843-e0354e82.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612447843-e0354e82.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612447843-e0354e82.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612447843-e0354e82.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-r7DiZBJKli8UM24Xhs8m9XriBg0Io2SZjhU2SmfrUgMyNOfswLMWRgYId5jp70ofW9O26pmR6XZH9Dd++Ahjjw==","shasum":"8222f2dfbac1b1a4ca184a760ee68f6cb8bfd22a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612447843-e0354e82.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHAEYCRA9TVsSAnZWagAA42UP/RNhFWVUQa2JBWujxyCM\nBwYqwEPfUB4GioSwOrTitQRuFOYSp4fHCUoL8Amc1g3Xv0op1h8TOZwm2wyt\nDLJ+uvB5mbbs/cyN1Hsq7DlQymMp35DTrQbx8LzpcChgHn+bUJ13WzKX62nC\nAdN70ADVksXEdekI3r7qp3Cqa7RSS8XbUS35Nb004BPUDJmHhNheIIYVXLDH\n3aQjDQDrUkw6uYUPa/4GQeLM8AmVacyjQXLL3hyh/H9D1EB24F1l1oRP9/L5\nQxy+NLliuox0cxZQKHYNMI4B0cbHcoMas3OnScAFtRgZazHPCedO0lWqiJ0e\nDOR91Kt7K6epNgMFrPoBtj78nqO3hbY5rY2o30byKey4Fg3PS+rwzGg7k4a8\nBsE0h8aYPjzdmSpBoH3a2LnzkmMz/zrMFIu5a19nuSnCezKEvZAQeefmhDbf\nRXj50cGNHt7quZrdaZJ5ORXcx8s9MKn+uSw6372Ko2lBJkWi3yJM7tFc6dNP\nDcPcFqGsd5jHjemGbDyeeZj0XHVIqp7ZsEsPnpx7JvYM8ClBty4MiqDkNMWT\nM9BO3eZM03CDJhF/Z+c5i0kY4KsFk+rGG2HVOXfkmGe4Cc2wLWm8XT3SWJnR\ncxhkCPG58SAyeYzBYy91ZuYeg2PpeETK1tIy4vItgPCi5AKDs3kaio/g5WqZ\nRqbD\r\n=EzUe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/03SjwxZqWCkA0tyhNNOkP35sIngcMIpYw1Im0xA59gIhAJoxB6vqPKrlVKN2wHck3qyPlGLFa43cKp/3OOucQnP/"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612447843-e0354e82.0_1612448023644_0.5186395092913341"},"_hasShrinkwrap":false},"2.42.2-next-1612462405-e13b7e97.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612462405-e13b7e97.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612462405-e13b7e97.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612462405-e13b7e97.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-WOqJQa+xSWj3ROPMt9DpWNuQtbOj7i0WWltCPs/DVx3RCQWadu50RrKJzOCEsNdmtlHRceBaZI+FzqkdQkw/Yw==","shasum":"0fbe853f201e64675ad693d1a42fa8509288ff65","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612462405-e13b7e97.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHDnxCRA9TVsSAnZWagAA7aMP/A/CQxaAHmDC9mlXbVpE\nMvcFv+VQ+ZpwvxZKXVkuNT53Pex6oZySv5gpmiVDrLtMeI8SUDkkqD+7xRJl\nQSMO50Jfh04lZv2EZQ4ED7t8FYE6myn1UiHB3T6/OfnZks+mf1NL0SGKer07\nBkwXxPgPFxdPtMRE/F/A/2A2OarA4eoK/igQ+n8J9+AKE59oyVZzuKVC/qBq\nw/H4ycU6poEMcqq7R2qkUn93kGqyCICP+iNt/zxAzAKUcf1dl/9YUhSqkGCe\n+Hr4/YmZEjHOb9hhro3hnuN30kkuziPERSI5UGekBeJuqVsBQaHO++Oc3jUd\nT27XLPzoPCrp3JTvyeqe/nEwYh9geYP0uI4zthJqt9gaVtV/vZWmQmQKIKEr\ncPjJf72PXzzJI6JIthUQUbeGPMRviu+B7XrN2WuMXEHqZJ4uXJ1MZxzs7DAa\nTiubkwnvzkljuvRRALVwkOJrhLmmp/yT/vqJqGbd1qDFwN8aR/+9EflPXGk6\nAMeOH/dtB5FqvwynBk9cIrmUopsJBS7302Mtt+OLRfGjOV29CFuiardTXaJf\nn4vB6W48kayrQIkm/uFtFSEGQ0KStVmKNjZ5PGqF09m7jnWqnCtDDtGz3RWr\nhSj6/9CahYH87K7zFEmpeHWZluvCjYaQcUgxwlhSOJx/xZmJ4pd9fW59KUUs\nfhgK\r\n=lsjw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBB5bT8rrf0Gahgr+NwXd5EniBv68vLY7S4tgkzVle8ZAiAnOtV3e/0VGPDDcEmupQjLURRapSW8RCNWr4L+hvP4Ng=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612462405-e13b7e97.0_1612462576773_0.8375242486103522"},"_hasShrinkwrap":false},"2.42.2-next-1612520980-6d1dd81d.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612520980-6d1dd81d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612520980-6d1dd81d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612520980-6d1dd81d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-2MvLbxeXVXx3AH5TWevx2h9Xj/BCwdnKuGMZrpjPiM36/FXmJGOskGdkPJRlksZ5KB8oAVkFFzfOLEAzZbT6Ig==","shasum":"9868924747888a52309985832896dcd5318397df","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612520980-6d1dd81d.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHR62CRA9TVsSAnZWagAAXPYP/3hqcstNO6yhj3paEsNc\nVEIQcwcIFUkzZUa4ccnpIvTJLsDQC6pFL+QyzgHBgB+pVi+6NU9LN8FFN8oJ\nb6Q4g94KJ2XkzHJdSfNbnU77B5B/QE1saR8WRRAVxalM/GoA8vQUhOQLa0/z\nb1iBjXr0dYI7/+5jpusj2uUtbVCaKaDPKv/vPJS8BgVElpAwmci2gSvdCavN\nfHY0BJXtDg1iUkamh7cKhStmxxAbgcG9shBdu6N3OYkha/bcOKj5KXIRuKsr\nFmKzmE/fJvoNxsV6x5V/L0UIxbV78EANmHw4WE6LJTMBU7jE0DEVEOYq3fju\n9lk3ZVyKhvVy4bZhisYKRhJY7UCe4zBe8il6Qx0UK2Lwkl/8ZwJkXhdpvHRO\nEvZH8h3Q/P2Tq+VHc2sWDBvMK9V+A0TSjE9yFKv6lpN9joRUyfvybwpRz5fO\nhGlKOPvNW/JL1a2lvi/f/nJ8rz1NZWmiHzBujyfUUQbD3y8t8yM+byMTZyin\nuhbF+DQlIztz/z1c8KJkBGcTc7QIBfnCfmDjAGD6JB49UwKH16IruzGuS1GF\n8R4N9FoNmT46GA2TjX89yRNQfQmEmBPeYn+JzCBmjcYdeJDSHAgNOfEDvNnk\nv2tNkrMuGnEvBVISxv3q1Q/81AGhtCHlpfXuXelRIcZqTRVabyWeH1WTdoXb\ngJjH\r\n=G2mu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKXrArliRKAmoHOaPOPmjZvYGjYy9obR77+OKMBAVeSwIhAMy/ueIPk7ETycyfmTtaaVD0nSE4+uBJMBdfVYHITGrQ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612520980-6d1dd81d.0_1612521141500_0.9536438869447283"},"_hasShrinkwrap":false},"2.42.2-next-1612522696-9d0b610f.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612522696-9d0b610f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612522696-9d0b610f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612522696-9d0b610f.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-GgF/y/RExDsqAG97ZQGP455Z4T9ch9TUs3uvdasK5xBUNXCPgQpI0YwM2qU8QxqbhYHPEcih5iwGTfZG81K+rA==","shasum":"9c45980246a675845c854091caa1150a850fea90","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612522696-9d0b610f.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHSVmCRA9TVsSAnZWagAAQVoP/io9JpBPtWiNr4UsdmY8\niXv/H2+uJyo7DsDbDe1Djhkf4BwLmIYDRtrw4EBZgKBgE1oCXlMZYf38iv5D\nobyUzSJhkH11D3XS4X0PRrulTdmrjBCPdnJq4KdVYW+5rTcAnxh1w8DmyDS9\naGjGBi4aeF7wSr7WdgpK3+RaOm8g2AD15bXeEwfC5TDLoaqOBmCj4zu91WbY\n+PoBqnR/BEWqTE/MFKe5vBOR5/kVux4mZrBbNcKC7tQKj0DA6T+uKec6nINl\n3zkfhXpy2148w8fGegvnDp+8ybOjVQ9VPXrYSjgFzhwzdHwFiQpBHxTUA5VP\n8yiAQ82/y4zIVboOhpBHtyBpzYZNeyymmy6p5aamtI7dFq8bZyUra7V/+yfp\nFyrw7pG661cTf/ClR8HNN+i871dkaGjnZ6Wpd6nEcvvJ4fK8vPcZknu4O9dN\nkgYGwr5bOLPKuoLW2+5kGIF26fRkuqIhs9yis9dUVfQ3TGM0vNLyBNSAEPes\nM+xHdx1ZjC9SefqUDRkNuWNB/wDIdQEKPlzmOMcscR5LsZ4wbN81vbal6692\nR/oRPwTIqj5I6waxU8mktH9GY30mX2A1B2rm+2ADdGdMKV4DLo2rL02+cy8t\n+ZgBMj0j2GaafyE8o/6lWLQWlPUVhD+5aON5HHLmVX7YXwGDeIo8SPUZytg2\n2B2u\r\n=w6hk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTMDEXYV8zcjHibD2+0SSQ0g+/LBb6jcnPH3gFwWS/+gIhAJ5HhebtHdNfxHf5Dk/0sUEzfTnV4Jmv/bBznmfp5/du"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612522696-9d0b610f.0_1612522854079_0.5402276744343311"},"_hasShrinkwrap":false},"2.42.2-next-1612524895-c9d3d2e2.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612524895-c9d3d2e2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612524895-c9d3d2e2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612524895-c9d3d2e2.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-XbkCajeYPt5IkxKgs21so+bTmTgScj5SIGBGaKzQcH8SRZREQOvK6BqSj+9R6lNaXXp3ZF68QNywTzeeWE+NVA==","shasum":"d0cb9d26c71b74a5165eb5ec921a34d2287c742a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612524895-c9d3d2e2.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHS4GCRA9TVsSAnZWagAAZaoQAJIexlRp64BXz83rT4me\ndRMqX/t4l+Z0HsMie3nwV5qkOWyMx50rA9z/UEpksu36J5lhtFqXtOeGjJ0D\ndT2SWCIF87Cj22dxvyz+HG5vpt8rut9SGNiAzkxn/YV6QYcAdHp92+BgAjGo\nVGGrKceohZr0mIBAhSNI0sjz1b5divuyeHqsTiDlFF4uMNu81/6k0mIgdz0G\n9JvMO8+twl0l+Mv5qq/rn7iTDFuNuzRs3HLpNw1KnnqDlEt+jPiZSRnVouNS\nw0/GmTywJx0Jni2R8QErOAwS+0JU90CI34oKGXkll93UB+zK3GHm2uWNma5g\nxS2w/Jrs9FkeFLuiyappg6oCi9Xwj1IWAs2df5PQillDQoHaqyViJi6svJf/\n3Aw3Lh2eT4zeFkRw4UHNRQjXAePc+jXdFqtf1eJLvk0K3oy+xM0ZEdRVGdLD\ntUByuKMyt4nMHcMygoBlhR+Ft0fCEes8mDBKxegNho7Pi0QkDCIHTor9F7nx\navI/s+YJQaA59bzH9kfanbd2JL4vuFwk3+48ae+vGDhWpuZ4zwKqQzYwRniE\nfsMAycPgu2k88omiHhGPY4Z3YXpZutA7AKsA54MX+O/V9cv/oRJ42mqaL3Qw\nxCuKQW9t7xllhynzg7QJG/OYYAjXWI6lGKMCPQaY3lPc77CZF+GilivPDRKr\n18Fy\r\n=3ISM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBp5/KPnX7ctyqqCEf8WG6OxR5OjxRr+74cocviyLQDQAiAI8O/jLogpsWv6b1+eA77JELTeHXhEQItBbOWWvoGE+w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612524895-c9d3d2e2.0_1612525061962_0.8407381263607938"},"_hasShrinkwrap":false},"2.42.2-next-1612525547-63b8049f.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612525547-63b8049f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612525547-63b8049f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612525547-63b8049f.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ZZ8heaBoj9b5uHm3SQqc38Kz2qJbY/zVs/64iZIcI+tezdbGmbLlMhy+Iy5Dwuj2F6AVhSVusp9u8kfm+550Rg==","shasum":"0201a7b756680801699fa5a6b2c0db94fa6e09af","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612525547-63b8049f.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHTCICRA9TVsSAnZWagAADBUP/RFPhzXj17q+cXUVi5eR\nnebw2U48bKucX60V6/xnkZ8dWrAJ44g9xh9+rTyuj3DOwi8tJgxFpTwgzQ6X\nLv1K4QDgEN265Xu/+tp/BmRQFGU/+hyfsMmUlgyUhfKHdaqJtV1XVsgtHQfK\nqttIukd9PRjmkVAtFMdAaets6D7eLdpyg7dBJglwZJIEdv8ZP6eG6S4l1SWQ\nX8KkKsursg9esdARj1ufBO2PpiwFTDwZ3JqkYBjNlhRE4gWOEVUkYsD2Slz1\ngxeWHM7zWlXgKNc/k2NexeTK+j4gGBAnmSju8Hkl3opzl4ce9uwjvz2ueunp\n9o5tzsyNVWTh/DgwHWwAFFzdq8BW5YHAS4vQTqep5nl3mwSPfhuATOjEyjdk\nyYUOwmele1nuS2Pt64gYsFFHcSJnLuznM7i2Xs3aKjf+XtlIEp5lNmU/d1Zr\ngB1Pr0g2mEqIoNaEzXCiDJ4VdfD8QlmjysmFhMf26gjFN235XUN9JclrmlJ5\nBlrk6yAhsg1U40Tgk4TEXPfHZAXtPkACLQyx+6h0jqgqlbIbKfChJJ4VI4T1\n63djfrAPqdDVj9WSxh8LP1h/71QcSmN2bhMkeC+eQxaCX5HA8nXRVC2sUNfY\nuRoL6UHHrCXp/VprJ4RVsWQuU+Fh+0J3uQ3HScYZTS25FprxJIeZ8+SyasBN\n0vgf\r\n=FZ0R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtZvKaeX94vzC2f8lZC7wlzHYYvQIzhcOk6sIxzT7NOAIgIzret82y7KgwrWyC0AJyu7JtcACRpjmg6UYq074oEas="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612525547-63b8049f.0_1612525703901_0.9062715198592695"},"_hasShrinkwrap":false},"2.42.2-next-1612526159-fad91765.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612526159-fad91765.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612526159-fad91765.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612526159-fad91765.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-IIB/mkNna6zxklIBtsO/VKmftmcxOKglgm174Cmj6CHzT8i+kCs7IVc23DmjcXatmRdIWWmaUvA89qbfCmWkIA==","shasum":"e70f2c12fd5c04ce6b99b0424e40b542d6d97c37","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612526159-fad91765.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHTLvCRA9TVsSAnZWagAA5uMP/1xoXyVzvf/HlNj2eEHA\nt3UGQ1a9fBSPT4rqzccdxpnAmu6f/TZTSvPRY02N0Dj6yii9xYcPmpIop5Fq\n9SFIJJAG4deAkmWtubrP9nsuhajaAJUKL/JLyGt8/4+5h0LTPfLEq//hsqv2\nfoouovboERbRvFl9lisgp3SgIjDmadQFLbnqKY1lauH+lxPx/NAK+1Fb1F3x\nmNbYc/OW7DSR0xwruSCEVzlje89DzZ3bRcv1sCZZ6daUpcKwUXU5UTEsJ4RC\nBJQuub1Exg6AGgn66WbfgC5SxM78as/4U+RtivRFKpH6QmLi93GQ4xiijNHi\n1fotnjSpzBbh07g2Re5JzGETq9yvmRgAn5H4gGQcgdg3GDVYrXkIonm+1LSj\nPMGeUiSyT87IeK+cFcARhiZq08YtvVvebUEiNA0iy36CNzA2S5GnqNbI/W4w\n4m4DtazciNUleAbwk9uJAift/RCPqLJI2ZfKlr1BdO/P9WXLrla77aPExV5x\nJJVF3vjZmSETggQ2PrSRWqGB78V7zj5CRBYlwdpohwJLteTJN+zOm6bazhi2\nrV/7Bry8e9KGxL8ruQKWLL6z9Zd2IPyC+bki2L92Qe3CTIyI/WFSRDCe0MGd\nWKDo0I5NzbVuLLepO7C+B1GwRb3G3y0pxLdWEFCpDzEUUGsB51FLP4FTb0EQ\ni8MI\r\n=fwMS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICoVp1nnwVI0gAxkdP1RwnVs3wL/j6bCgdI2XrN8lSpcAiBy056G17XzxCfBnoKPx3ltodhU+NLvPsrNcJ/y/Wd9DQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612526159-fad91765.0_1612526319274_0.8534017410102335"},"_hasShrinkwrap":false},"2.42.2-next-1612528078-02cc36ae.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612528078-02cc36ae.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612528078-02cc36ae.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612528078-02cc36ae.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Usy1ZJwdPot87SVB3pcOzUHETkPYbNEv/QJN8sirkSE1bhZGREOjLdyaL3xy0mbjgrZb0NqThZxPEipQ071PSw==","shasum":"1d64e4f296d2c90ea639a22120f5af486b715c94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612528078-02cc36ae.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHTptCRA9TVsSAnZWagAAo68P/jECSQNc0AcKK5OKJnI5\nEbHhZ6uWx7mgLKsioy5Sbyc0XZayOUjDcAw0UrdIUTaaA/q/bWhwoBpBb/t7\nQrXXny4y3flqsDvlTA7AxlFk2Qwt/BqkcqoHOpC+tOoz+A3m1eM6kLCAb9Xb\nONXnHwG18vcGuE0+7ZLK+UuqAJWsx4RupbBFoPwXpBjNEf8oPoNleAO1N5hi\n50cml1+aEZKcmbqFvOBAKDZ4hWQ/gsIN2sy2+ChZK4pHFcLtJ/o5QEDLgNFy\n4Te+Zyfzw0WfG3+xIBhqcSIpZ2yMwyLFyJINxoQ3Sa/Asd9dIItx3mGYk+Je\nq/ZcSN6acVXFzqaqezuOC05etrco0gdiOJ1JEUVOELLjCuQJfasi37TtiYue\nkfjRAV3mG5/0j6hOpTjHEbi8qtqh6WOwWl72uaeuf+X2g7AMyfEvjUspypfP\nWIKYU8QCoVrIbaFuvjudqqaX0VH55Uh47aPs2JistsI6fCBPiUN5Ls04OkcB\niYgHRVPrV2vxAiFwxxRSuap25ikgMu14Mvx7G348JzVTJcqAE3bti0Ky4ypW\n9AAu1lIA2ZiBVxr42kSLq6teDoP7j/m4YwL0m//WU4MnZld0ewijYMSi2NB2\nBmbHZ19/gO9cwp1isrUvPrPEu2Vn/4sIbQ06C6hVDV2bQyODh0IjHeBKXYqK\ncTZb\r\n=1Rtc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0SvPMdG/SthjHijWHAgvKhnCYJBYehTcBTVlnF4cdzgIhAMcqI8E6RqaeWZixWa9p3cO9AId+1qLnLfGx7TPpZZyX"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612528078-02cc36ae.0_1612528236685_0.35956488728794356"},"_hasShrinkwrap":false},"2.42.2-next-1612531092-91442273.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612531092-91442273.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612531092-91442273.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612531092-91442273.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-cCJXeUH09lp/Q4AEBI9WpbXpji9/b82aoSCh6GA2K9+OBriqcS61ioFa910iOsmoJ7YrvhN7rPaCNHhSaLGVcA==","shasum":"3129f6a8287303319ee5fd5df41360e68977e68d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612531092-91442273.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHUYqCRA9TVsSAnZWagAAwcAP/0Ox3nOIyPItjn8ccw6i\nXeMXgXCuXUyxLbf1M4ctuO9NElGsEVTWiYrB9cbmUkwP7+Cq9vMb3nnL0OrD\nIZ0jBlJ6gEku9L9ZOuptm7ZvBW41kWv8LlNPaRMJf82MUkYQxv33klxYO31N\nH5Yktj9W7NQNkQ8sz48gEHugp5uUj0v+lUBXYyVYj9RiXdof1TliOJnFwz/j\njTNPR/xGQFOnkTp5bLAATstl1qtdxgxTsR77STdwKLguMMLiqmJLl8pqeGWI\neqvR+HcnGb2jZes8hR6ITyaRMZQU0sMZoKMsRbHjJJ7d/4/LvW3QB+cyF4u5\n4Vhc09jUst9L1UHl3X10kGOJV+b4DwCN1H0eYcZ3aJtu5pKdUaAK4IeXtZqx\nQb51s+JmRcqqpX9UzUZUwic6j+Nv/hvXOjBPLGJW8dQD1ZQfljd4HKE4TCKN\nM4FlO3l9XZKiEIZoaOlea3LaYxa+BX0dIAbJKMXZV/mLOgpuzjlocyy9LWa6\nzIYmxQmQY1ofA14lg9kLfZtejid/YPYPFcV135sG3in+r4HOYRz5HxB3+s3J\neqVnx6XBhsoAakuLHmgSjiPw/a5R5nlqoukjH55hFFX2KpRQFwe8b2/akpoF\nton3J77ZDVmiqmEigKthjq2RtQWUs4PxwoARCmdZAzX9nK1F7mRxAfuUpu8U\nu2HN\r\n=RWI/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD28QPnxxNjbys+IdDZumMW2+w5T0bK4cRbGiDRYYb3ZgIgGSKrjX3gp6r84IUgiOpO2S5pwprloIVep6WNxHTjgLQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612531092-91442273.0_1612531241997_0.4962242154888785"},"_hasShrinkwrap":false},"2.42.2-next-1612542066-c79b6c97.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612542066-c79b6c97.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612542066-c79b6c97.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612542066-c79b6c97.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ixzMsEmNLr93tVjYL0XLpZGpQsJ1yKHBUnJHZFLp+8rzFbarLl8hJ9d4mSSDkX2Jsa9y0AhVEpuFV1uCMf3e2g==","shasum":"c2f9da7078a0592a04d8e31afbdb3ae4ad06f0f6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612542066-c79b6c97.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHXEWCRA9TVsSAnZWagAAZTQP/jrt7uAJ1Wr7eCC+4wZd\nXXGBSk3pIEZ9gOWJKqSgDLsphALJENkwL779HifHwen8E8qDTI/cG11xfZ9d\nhLLbwEHQvGz9bzjo/Im/GyNr/DWiYryB+A+eHTJUQ/uHirXm5GLqLTYsOa57\nL1UZ1Xw4STHJWCbT4pN3OVY5znTC8i6ir3aCbygYs6q5Rhw65sLKA6PkzpTs\nrFxt032oF/CXxOGQK+8KsPWgiU3oAHDDZeAPhtAoDtW9GwxyKy4xBEAHOnws\nnoCIrUNhtkTmu3hw+r2m/ZJoajlgXzzcwAEtvbembZOC6Dq5x4E8mApxIVGK\nFvBeGp3B3p4UeuJ3jJmXjclalVQXQW6+xYCqSGHYH5JY11G4DgsofcFC88V0\ng4TG4nb2vjvJDNdVrhv9OnNb28wcXV3Kc6sdw5VqA+Z9bAc7ZoKRX2titEN5\n/TFfSnygST8NJVwUf49XFLMwZx8rWcKb5Aey4BWGkN7YJslheym473TB9Raw\n21bNQz1d1P5EaQGxM4Bv4MlFkoHvyJ9MbHRc2D4SthET67yiosmD9dtW53Uk\nsw38/vDb9XvZ57MIHLDATYMX3Qf+7yAo4TtkHafkpaIcptQrOd4uYfu22Wsh\nQnyvX8KmM/JEazwp5bW5VqTRa2zKPmfCZrTxAai2g+m4FIKWlJ2HFC5ip01J\nMdnf\r\n=rfH1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTbvSX09B6L1loFl0AaPumm4BEi0Sm4uwbLtERFp3J/QIhAM751gbFIHdPQukYGTxUY/T4HLo/ejc9BE1IKmeyO09w"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612542066-c79b6c97.0_1612542230145_0.3647281444590229"},"_hasShrinkwrap":false},"2.42.2-next-1612546129-c79b6c97.0":{"name":"@xdn/prefetch","version":"2.42.2-next-1612546129-c79b6c97.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.42.2-next-1612546129-c79b6c97.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.42.2-next-1612546129-c79b6c97.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-huh8vXyEJoCAM457ZhyeJ2NlXLKoAA0lm9e5NhXbxybFZqdI4zhWAseHjIxMbJuMKv3DXmTlvJZcdzYtT4Q12Q==","shasum":"e2853f3fe3cc387eef26975df3105c358629d287","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.42.2-next-1612546129-c79b6c97.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHYD1CRA9TVsSAnZWagAAwBAP/RjyZeEDTyl92hSbb+6a\nPhn3owxQG60Xu7CqqSWpwldwxDRnI8JFhO4UA12DUjt9Yqfg9J8kw0orxom8\nPp7FmAvlArGkM3FFh+yoJbU6Sa55CDcsFe0Xqhy080Piy2MxlaeLWB6sIyih\n8VIXL9nPW72GsE7dGQ6dREKRr5Dr0viA60vOjhRPA8BvRM3jep5oUQqWhbxA\n1MMeWW65al9rOqcfz8WCVvG5IR5hB78uh2Q30hU3nJ86RaOsI0PqyLWKRmw6\nM0388DyRXmZulO5gqXvYU7y6yXDU4dlJ7hvMJRug1o38YIz4MLUsXwB+kQYW\nbynp5UyI/HatGtSs+nz19a7Zlw2Nqtsgstdh/My8KoKcyYmkd+7CCmm4E4ev\n1yZzRsas0cZBwzu3sLP2WIfB2W+e0Uw534jViinaaZ+Cc7rcDa02UtZMHgRR\nzV24N7jLHY/Vz69WgUwQyqVhNDPRukxLMJnkIf8BW3hR2iIJvVoJvepOqfQv\nS5n/Vz8ZIASzgq9xpKBRLDsqD1zLDsPpMZpNqoeg38F0y3jmoKxX88Z8TkaO\nYmkbZRZ+D7PfoHNylV/Jr25Gg/JWkx6T4EuK4JiZDLbSPJMutQywfODkKIKI\nYbm/nlQOy4OsDrRIy907FlhSuDMP99JqxS+k4rRlR9PB9gAhTEUNcDVIXirg\nYooF\r\n=H3Jx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE/4IT0C9U8F4E5KrOlIXPpbQvoHq3+U9GYlMm36LNcRAiBn/liTlg+eFsn1iwwGlpO74JNOB4e74J67xxrUq0/XIw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.42.2-next-1612546129-c79b6c97.0_1612546292719_0.12642375647362747"},"_hasShrinkwrap":false},"2.43.1-next-1612547925-3537e3b3.0":{"name":"@xdn/prefetch","version":"2.43.1-next-1612547925-3537e3b3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.43.1-next-1612547925-3537e3b3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.43.1-next-1612547925-3537e3b3.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-sQ1CPWmZbG9cR4fVzvpuM16MnG8Pxir3Sq//lqs9jrlwv0GnZkAUcJOgU5NWEovSz3F83LMiopMZO+nhW2MMCA==","shasum":"0c4daf04360727994558abb0a2d26312a770f776","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.43.1-next-1612547925-3537e3b3.0.tgz","fileCount":58,"unpackedSize":141860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHYffCRA9TVsSAnZWagAA6JYP/iPxBwM/jcbJylnvm4Ci\nAffRwfziEQUwGL3wLQ5BPr1NA91r8fpdVhkWdG3PKkRhqsVdymKWfM1b62cg\n17/sELMnSwTRtn0saEtSG9qqzpRgQZHBmmFZuXQNXcQVuMI8i+VfxrePcPNN\nxF2jB6/fW2hODqT1/G1lDa4srnWPfUcQGnokM01l7QHO7wST8nCo4ngmj0rn\nxSbhnQWFPFVrAU4DrxfBOm6q/hnXevLWE/mHEzUydTACtPczQ8o7o2HzLA2q\nwuFZOXbcKZniIPfOJtWSfeeWQut0UuPPcQa0KVrK/Ligagr3YTjeDoXD8qsP\nkGQuHQVnszQYy9P1s4j4CeStpyQQlxeIevCqMx/jrPZl57pbKu9g9EBQe0ZJ\nDA54rcQDFLwZzWa1rls5uPnVFCJSkXI5r7RiaigeF6d7FawJwMaJORr5etAz\n3z6HcR7P0PDb359wtD5V67QgI/R6XDyOjAnKE3nuagCB/Yg5p+Djz1kK6Lgn\nHAvIe42yyGO8F479TJ+MLgmY0MLURxA07U+WqJu5wkEBqkaSODzhr3CfqjZj\nDBQQBbEPD9/gL+bEjCcV+ecxBOJDdLQQhICYq1fLZ7tIKQj0iXY7OTKxHf/K\ne/GaaCyRdca+pbKrXIiXIjpNLVvyn5otdocnAhkB0XgPEPyxmL2EbhqCNfG3\nzKs4\r\n=Yr5S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB/aCxse0DhSxSHuFK4EvoT7SFAcJ0vb86h4G8s6nmDQAiAmueXPd+3Kw18eHbLywl/Cq5DUv1zSiz57uVPdmum+zQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.43.1-next-1612547925-3537e3b3.0_1612548062739_0.3166642485013844"},"_hasShrinkwrap":false},"2.43.0":{"name":"@xdn/prefetch","version":"2.43.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.43.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.43.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-OWf5xmsMXtR9V0PSi82+1Qp5S2ilbGLNociod282E8sGuc6EKWQKSItLLPrgIP3mBdPBRomcTx6hhlneI3FNnA==","shasum":"d05cf73f68a6cc019be40e721206d0220170088f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.43.0.tgz","fileCount":58,"unpackedSize":141806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHY59CRA9TVsSAnZWagAA8DQQAIW3dEulJYxD0tLJRnDD\n94J9Y/xwRZ6NMjVQ7Fk3rSERaVzZ49G8w4MT29e6U5LN19mMhuaEXGX5QjXU\nfYDGo5kk8TA8dQAyPmY1TWFfvVygwzxwZ/0/2HTZXi62XOgc0txWNPYI5t1d\nvULQXUeVtRcHHG2WIhZwvDT738I65o8U5V99c4rxhfsuukQkqe0ri61td816\nfVKYnI699spcHDbAjzC950khr/ojDJO9ibqr3utNmfpQGpzxpDDyzNr7I9wQ\nT7IN5j1IYpVhTWyckro5U9Ywy/mVn5g0dLtrkVJ5oSj0X8CIDfamcsSQ+AFv\n2kkQvDphluLFs7OfEKShDTph2mETP8NyibnklpecyrbI5BF1FZMEZPllgmWE\n8uhwUMA5nhIPwvz1sss7bqbb3IJAEHEL7uB+OlxAGctbuGQx4i5XEiiv1qKB\nbn3U4HkGtbyDPGegeE0JYm7A4qcWCbFy6tq11eA0zzphprD40Ic09Jo5eZzw\n8ZFlvL3IB7T6z/B1mNNtAWK2jiMpPHcdjFQGZ9BhUmpyNQHbA3RrDVRl29sK\nVcl52G9hgidUIsQMBd52odrupnaw52nld/jVETI16EL0tC3FPPeZh3c6laSD\n/PR3INWyc9padbzF56do+XYZizaKSRNbbljQWyh2R19iO6xJgIzUDUD7Tgln\n1vLs\r\n=CyWe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFeXyzBOTpvtSNKjxoaD0mXEEoAmcshJIftC7HQBuJ/AIgM3TNMN6eiekh2Ye699WFayGtdMJhL7+8wYE5lnOWxqg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.43.0_1612549756620_0.47511332236113146"},"_hasShrinkwrap":false},"2.43.1-next-1612792570-6d12ac9a.0":{"name":"@xdn/prefetch","version":"2.43.1-next-1612792570-6d12ac9a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.43.1-next-1612792570-6d12ac9a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.43.1-next-1612792570-6d12ac9a.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-b/u3j8J+XR16MQ8V76TOOaNkmjEIj8qqoBf+zyUrULy7NWiFiHHFnq0sJ3It90witz3aW2k65f+M6jiRzysKFQ==","shasum":"c937aa711b90c20c1fe2b06228e61b6867476797","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.43.1-next-1612792570-6d12ac9a.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIUQxCRA9TVsSAnZWagAALkMP/iKxIjkQDAjo4pZ1HXmd\nyvGA14X6vU5+AZF9UjlME4s6MCS0GsAnGCXrrp931pjfMGQdT/n68aPMVERZ\ndgYbUtrwCAM0+MipKXxF3QyBIbec+Rbb2qa33xMCVC2wQSd6S1211nFacIXZ\nNTiJ+6twr2kCH2XASCrItz61soXwLCcXUqAdhVVbkT4mI1JRJ7jtVE6nbRjh\nMdeKYPJIx9bq54Ufk735EfrMLIcHIJIAW0hgg7y03HqspIzL3oi01KFp0sUe\nSp1vaAm9iksFYNqydTAjussKgvTWW4e0Pt5s18zPNLaZTASjaR6uDUnG++iW\nDft9YfHOYhgnLpqij879x1+4wVGRT4dYUJw3W0npaKBL/4a7MBMOzdz41bYe\nWPLFVDhTkA4PzfhZ8ol48gYBAdxShwEDJFRTpskAcCIPY33LOLtsx5pjqAU4\nSOI0oP/i5Z7sgnDJbtbCsRYjJ0j9JOGdvUdrHZFB55LWR1SkVWnXGnSW+Lvb\nnk6zLcSltGqURXrrxqxJLGMgzCGd3c+0g633kheMQ4yW1a2jHQS0tpH7t2q9\n2EAsPQ034VWHYTfRdicaVx9vvEJyIow5SBHn77OgOgQijYU4I4XCkS4ps6P/\nhGgNWEAKn9nc3hbRxOMjX0IwjHYba6gP4P5RksTajW82bDZNU6LABhM9ni2h\ngwEg\r\n=J9AL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZNE+Ky+yFhvdDGshgM27jGmuxwfrLefx0uOTBAjHNsAiEAkDAlffzys6y7pbbC9L471yQ4YxTwkce9ZgSg+NQq9nY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.43.1-next-1612792570-6d12ac9a.0_1612792880648_0.2906099273991969"},"_hasShrinkwrap":false},"2.43.1-next-1612793310-5c370ae6.0":{"name":"@xdn/prefetch","version":"2.43.1-next-1612793310-5c370ae6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.43.1-next-1612793310-5c370ae6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.43.1-next-1612793310-5c370ae6.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ldCkmWFwLhaE/P9VCuQUQjcUEKPanNDkuMvPfvzuF/krHE5rfyRP8BAxbWYF4e/s5wzceshSPoQuJ/YTUCfwLQ==","shasum":"aa6d0c7f2f607cf2028aac45544290d6748d426c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.43.1-next-1612793310-5c370ae6.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIUcGCRA9TVsSAnZWagAACt0P/2nIVA8BzJd6P/M1IndQ\nX1Pn0oBGvjFamXbuzJ4h1IojJ77AJEKHQ9J3JseILjd1OtcAi3x1Hq0HN/39\nT4MayYe5t/ci8XZsotcTxZtZ61jrHsfq93RiA+xVy4VrOKYYp6emPZJIffYG\n4RncdMux3CUWnXdUOdbGbZnjKqhjYIGECtqh7k4uqnG8oSIN/faYHOJ74cpi\njoI/lYpqlWVtucloJnJYTT99SXC3tADiJOvyVtIAtt/mTqiCpExo9JAKenVG\nm5Mbi6WpOhO/RMhebCQCNF7/qMq+aHYVtLLaiNgRl+FanZWziLZupNp1C5mE\nP11klOLwBggIB80zbzxdSKEKuNiXU60VwqX6KaofMRJTeG8KVXf4/0oZqyYI\nQVGFkI7PWagWhwUyzAscvD8MEYpTiIbHLSoxHAltoCxQpks8CyJEnUCElMXq\n3be2Q413BxGJWBD7aJP253IE5N+FUF0jHyi6/eqivXuAlWqDohNf6iuJNpm2\nNLtZYdWDZdfN7jsznPgSK5mWOMJsk064PL2JzNRYbLWeexbysVUETGO22SWW\nGxuw/G47TvAoiTw3E2BD51xsVK5zjWdLYyFuhiBYYGtSN3uiHdgLR/xNaX5k\nrOZZT1bsL5YdfVhrwqSOAtkW3k4ZpxFRAfmsf6p7Gg0E+ZfCrcYi2/Z46TVp\ngAHZ\r\n=cjDX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCg9EGqpdtvtvXX0BUedGkK0warsbQlMxA1Qdrt+SyV+QIgTWXX5CfJIKp6McLzY8kw9hxSFlj0MF28NrJd8IrwpPI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.43.1-next-1612793310-5c370ae6.0_1612793605635_0.10282924166840735"},"_hasShrinkwrap":false},"2.43.1-next-1612809227-e3305425.0":{"name":"@xdn/prefetch","version":"2.43.1-next-1612809227-e3305425.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.43.1-next-1612809227-e3305425.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.43.1-next-1612809227-e3305425.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-UXyo5aA9H4AaZ8KQ548fhm0SILFQagD7KRqhu0GkFQZUsAf8/ItTycraxWPwmQAppW0Ps1saxIGFhGroyHVZVw==","shasum":"4e0060212d2fb5715f346397da5bd0005b26afc7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.43.1-next-1612809227-e3305425.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIYUVCRA9TVsSAnZWagAAngkP/1LVN/nsyTEm+sRp/kiC\nl736OcQRoY3zLrqxOMeAzyDzNpEe6ZjZjCuVc8Fxq6+g7TBYwUdMFQdL+JME\nvw7kppzybQDvDhkoasvjepow7HapzDr3R5GxLdBrxrizcUYVPiFeyStEe8BH\nIzeWBxdULUbqnSTILtKcKfNH2IzImNwnOj060iyNXKd4lQ38+0lHe/BbZqMt\n2KhE66Y9qiX+keGfs3ZUTX06YDzehIg7EUBB9CYhxdeghMrAw8V2z8ZrxqGu\n/5g+3dEoE9B5//A2Idyo9tVjOy0HjVFSz0wGANjuXMDaVJv55JqgbErHoL96\nOlUYwIWpcWY3h6HTtJUEX0WU78qnzpg83oPZA44q8KkNRmn4WTV7qaIovusM\n4pHxvlrpElXVNX3KdJpAGakn8q9ZdPFuzhtQXnj2M3VGgp0WcrzlVMzX3qFO\njjPZ0rRJJ6kfxjdk/UjUcKYUpZV2Tn7MZdvknO5b0jw5sK0qZdsRdKBkIlP8\nRjUmMYgSP9bua2FXVidnrDH0uuwJ8ppUw6L8ecPpjgtBziomJjZC//W9MlQ5\nlzunfareAc+R/bC7Ac4herN/G0adJtnfgJSpaD1mNb6cmROr+xmndD5au9V0\nyY57W0Rdf6rVy4cw7M9HBIzxxXFfeXlkSMJhwiY86A8ADxGyUkYsTpd5jXRS\na4A+\r\n=v5RR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGwzHh1P/kvIEFPRaO0jgzTZr2BCkjgLyl+0H/msychUAiEA0zZDubyb6n3bbG9QxcUx30RzFjAtXxMECThWiLdfPTU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.43.1-next-1612809227-e3305425.0_1612809492001_0.46573378116436603"},"_hasShrinkwrap":false},"2.43.1-next-1612813218-711acd5c.0":{"name":"@xdn/prefetch","version":"2.43.1-next-1612813218-711acd5c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.43.1-next-1612813218-711acd5c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.43.1-next-1612813218-711acd5c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-VIHXaC5h/R0XP2SXZUQm5h4oqHOs5UNBzMffEfmBdy1CpD+zF7CVRAeK6TxafINMnilIL1Re5pGVCN7n2EVIxA==","shasum":"c47b49d9ac7d0d31e418b22e18b24b743f8771dd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.43.1-next-1612813218-711acd5c.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIZT2CRA9TVsSAnZWagAAgD8P/A2NzJHKAhYzkANO/L0u\nYZYS9PxG4okWjsr0HmhoWFPa+zK9WmTnwHOrWtWu0SmTqyGtGGQWi2ofYDM6\ntQDlAzSHZSMotB0ohY9RVndmAVhI9CP+NQXx0LwfVWj8f2b4Dp0b0yFz7pPI\nY52zQjewr3okDkI4DQfGnr5wCeL42vh35SY3Qn9x4YuUohcpY8YEd62gD91C\nLohimbqykrkdw2leS9aze8x/tYlDjTuqI4RH8tPrGa6JMoXnTCmhat+sYzky\nwwXQ4qQ2B4Uih+M4tnUCT5YGAYF/4hw4DGEL0frL0pVaCBeIRx314BTHFHm1\n08oBU2Ev3qfvJwdK4hxU3CaVLgc+GOUPV0mOEosbgePWGuyf1EyURyGNSb/t\nsfs/xzV4I4hhwTH6RpsYxfxKGK5X2l9zCHrpZ8PiQ+1bncMC8tZR60rwA0BI\n7XRAq4VqoE2cyCMy03nPxXC2dSbdgft07wrqEqkyJhNKGTGghuLqiOdUzB8I\n0VPTRrLRTxK4SODx+0nHH13jBFqSbK7x/m+tK9rcy6tsMnrImCryZn8xVYLZ\nQST9gNr541drbukPyhHyL1JA0EqMQw3KNUyx/6Sj16WnOnccNyY1oy4QQvyr\nvSQ1xHcLMPPtLW2dIHlXSE5bB6QGpM6pPCHUb/48HaxrnWEz+Jr7nvcBTYaR\nt5nj\r\n=sDhp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1La1sYetrvrKdkRTUUcScV7iPUeKXiNbPq6s9q9qx0AiEA5nI5ju3Zue9XD57/hxGV104jCqf2RsBgdluTIEhiAE8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.43.1-next-1612813218-711acd5c.0_1612813557812_0.6625847609404782"},"_hasShrinkwrap":false},"2.43.1-next-1612815592-805d2d41.0":{"name":"@xdn/prefetch","version":"2.43.1-next-1612815592-805d2d41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.43.1-next-1612815592-805d2d41.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.43.1-next-1612815592-805d2d41.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-gqfEuDVLl67PrlMk+hDoNsxzeoQFwJGDxp235hQhAX6BA0hQRPq2+bTi9XCiioPS32aAxkFJoSf36dqzLjyKUw==","shasum":"248b74190cac4a480400f79009eb824a29497f2d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.43.1-next-1612815592-805d2d41.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIZ4jCRA9TVsSAnZWagAAESQP/RG9lTML1JDQw/XEjTK/\niafZOg2HK1wWx8FkXpbLXaYhKvSC8V1yOnTExPLIgyIcH7ZdQDO0m2rgt8eB\n6cJv55iozDPzuauXZTA7wGogH/MNrKUOvTV/ZVbduORR4CIuPvkuXK/ADbZS\nnXchwtmGzhw1AoO6uxnmodBEjGSNK2Gpbx7sQ7b53AiEOIR0N3c7JVuM07rJ\nMk4pC0jTR3uksTY2aAwiOL1yMvfmKxtegZchjeq+8CMGF3p5GDG1PSr8mA9v\nsmKEO5R9napg/8wwAKlxv0HrjkljeOUqxKXk5UgLqJmGQI/okWZvDpF5kLKv\nbpQe7rUli8bixd6v3YPgs2klwaNzwgrhEckdY7iOBdVAJkwAsZjc4LEROIaR\nMORQoiJr8Y0QVRrQ1IDq3m9LLD+4y5BbH4HDDrh/1g1pQ7jT4n5Qg7aTgTkL\nw5haiSPtlKetjs9Qb34NBIYo4bM1bN+arOggJhhu+otU61m1sblOjTP11Ps6\nSThypOyDNR6Go92BqxnY3LklmKDgTVvo8p6bwDh4TPg3m1WZBZXLSE29h2S9\ncd2ed+Hp/p9MPBiqUE3dN3AQFvuFAhSm7Q5BCY57/Rsyh2CXBYiLHMnRdc/v\nKQxT4ENzh/n5Y6HZkga5j3HqfIgS77BHJlM6JbAEjis3/LbvTKYfP/XS428s\nbkij\r\n=pgOQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC73j+Ckhzzlce9W6YVjTgvUs97YQXcbahwBudv+1P1zQIgP8RkXLrGLXoQGO/iohXZFhzbExxDgSrJVq7W4UqQPmw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.43.1-next-1612815592-805d2d41.0_1612815906451_0.7382615538994428"},"_hasShrinkwrap":false},"2.44.1-next-1612815628-a277571f.0":{"name":"@xdn/prefetch","version":"2.44.1-next-1612815628-a277571f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.1-next-1612815628-a277571f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.1-next-1612815628-a277571f.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-aORcMRwlSXb8H0tIoeH5QRksJ6rpD6Hp67TjwBV6On4YdAtbmVzucrqfaYiL4kmSCiyASj/LeTh5nMaH76lVVA==","shasum":"39ded5d79db03a6de62d8a14617417656879cef8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.1-next-1612815628-a277571f.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIZ5FCRA9TVsSAnZWagAATJcP/AwtPGym5FAzTKnEzG+4\nOgdxLEyfdxklUJ/baqKbcc4vUDxxVOPbkJO3Fdfg/0kKU0S+s+NsW4V2ib11\nENxBeo3yFWETlO81Co6i7QhLrESugadySEZduScqdp0SEtswksxHjf5+xRAO\n/WBjVVA8K98Ku2oEj1wEGb73XUEzKkJ799CJVT8hBmRemhgGZVCFEhr4UEdi\nZ11KhMjCPArnYSLGod3TmofDQwptFisd7LLU655nPmvaDeHqKN1vAS1EnDMc\neTNSv0TPv7i5JakSD2YesPsqkScyI+gi6hTiiQLQAcpnN/SnmrJf7RTK7blt\nIfikuxnFNp8P9jtwgV6TBoNJSxNTx4kbPtecCbIW8GEGF3Up1Yh3F1GhFqTF\nsRcYr6afHhVeg+VJhmFAcJplcLorjQCVBV2BtWSmU90qMhJvPLeJyB6hofUc\nnXuiopMLqA0w3ucwiSAiwBHcv5W4z+AZ8KLmsJJj68tGoITrhv18Q8iIHK+h\nclo7vDkldGGZXXeMJikqOzeWrIkr1HyPyp+9Z+0ePwdRSNobHZ+dU7jZmr6z\nSSx720Bopy2BK5v6j+sFamLkesgCDHTm57sODqt4I+93VHARNOpn2TFYyyuO\nVKIwrKMHziTEWYLBdw+C0bx0sKPHXIIMOXtDHwS/70ZNyAwH1A7QM79mwS71\nuQdp\r\n=38tv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2UIz1dC/Zi9Lon9IeoHjue9q6RSBts0n6/pHQ6i/aJwIgPVj5jeARTHSPEe14ToWvku4eeiwrbidbyq/3MJoFEtE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.1-next-1612815628-a277571f.0_1612815941145_0.4382341099569722"},"_hasShrinkwrap":false},"2.44.0":{"name":"@xdn/prefetch","version":"2.44.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.44.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-pZe0IlatVZTXWk2ue1UdF02M/soLP9CxrlLB9vp9SY37wyW8nBk9WCfNRSo5mqL19U2eUZHPLx3dqbjF5yOFIQ==","shasum":"3923d553807bec80b83964c318a842fa70ac2634","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.0.tgz","fileCount":56,"unpackedSize":138330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIam4CRA9TVsSAnZWagAAeYgP/3lyttDSK7ktvHeWPM9H\nTnbtZ+zsYbHRA4OR07KzEceHkN9KjQlsaFlS0SH//QDpSHN1v8GYY9WlEHKO\nGeBqUz9V3qOYN3bJ6ahO4/h+wX0/m2QY2l2enCxxLhWuARRvPN2YbWRDA2wK\ngUUHEu/3PNJ3cIjThXt62dWC8/8VhL56ciCF10cY2Vl7gB8rpib5CxB2ZcPL\nYbL7cMPrI9Qy/PyHbRbAXl44EG9eDmJAU/mQ+E3Gfht1aKsgLz7NZyq0dMBn\nQtpB4rupTvHdqDO9J7GB8B3nc6GfX8Q/46i4dTxLiqCUBpBivXjOFJEHjxqf\nk4IILfKZzuH2eORmlVSm4sbQmtqTVY+jZ+nHlioJpcaCpljiEao+3m/BvJH2\n+iyLZgMawu/nVCQ6vat0V6WFAw8xXLSdy3QDLS6PsyDg8EZg/fWNanFqKCDR\nu6JjUrqmTDuO3Nls1lYAL3IazknrvwIVeDQuBFCV7S+BgLTpTL01IRF2enZo\nj8kDss5/OP8Q/Eo/X7vQ2s+mQpbTJOpQy4gvTCy2nchO7ujcKiLmM4fPh5Kq\nI6H5qCMGhx6xJA7+urGEu1cifX8+pGp+7eyUDoKn8Iza1aDtgKiL+LBpjkQw\nCbvTNiiGlN4YYncMWb3inRHXBl/FU+c/6+spKf34GsYJJrHMnTSHQqOZ4rIz\n2DS+\r\n=Ifiu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQPE/mHTpWOfzKzY1w9Y4Dr6iGdpN3ZMOpuY9DxbcdagIhAJHgZqOH8kvb2qNNuzcU5lty1cv9+T4HOYJnvg5p2XQz"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.0_1612818871739_0.273117010315437"},"_hasShrinkwrap":false},"2.44.1-next-1612875287-515a915b.0":{"name":"@xdn/prefetch","version":"2.44.1-next-1612875287-515a915b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.1-next-1612875287-515a915b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.1-next-1612875287-515a915b.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-sD0XwchtfwKwBYATyeOahBJvmRDlyBpZ0bF0RLaHRhLJrNaSjaZ/h9Hx+KKCejJZai/y9kXljy5JC0hfrU3V8w==","shasum":"4334f1d1d183477e6c7084d5083d2259734bdde8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.1-next-1612875287-515a915b.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIodGCRA9TVsSAnZWagAAVrsQAJNHCpX3WYjIrME/641C\nIsYsN0m+IgEdOHQNQ13aBdvk7J/lF8tRrdZzjvP+uHzrv5djRspKJIsWHoDs\nXk3Oz5N9UhmhL24itjPY5Ge7rmFr403ZCicHnKohsLOLELZ6YEx9XNFRlSA4\nRJcMyXxzVRAsQvf7D3CVdC6N8EZ5pctGK7zZ5nvkp1yUkQyTS4U+/HS2Gi/3\nQXAAkVTprYorl7hrD0E3oY9UaPt6o5+/mTsYeE5y58I+sZWxnHUK90jKboFU\nuwn5Q1qO//g7VWL0TdOzIbWpYP1FUdJmEa3s+rmXim4Tr3Wj3gjusZZ+EKu/\ncK5W1CAUMptToQrlvdXifgmrM0uqfwP6ccEOvfzj3VnBYGt4GKKkn/eCpLYY\nW1ItvlWZE9HWCZyc+pKMCiIeUDg7SRWJFaYsc+jWc9LkuqhURi2ntDoBVD73\nSospxNuHRwQSbaS2/Blc/y11AFAPHdaJbnmpd9pKZNVyH7RgVCv1ylNd3TQc\nak0BSCtUKbUqPnfDwEVvhu6gJQid9QYiGqKLlj8riiztYqR+PPTWuu6pEpJT\nF1EUXC3r54DcMa56pFGzXDAB16WZrxH0RU9C1x/PMZ9wjUkpsO6QElLe1FpA\nd/y+etOO6pMUtsfBDcEMk3x/5d1QkzyVF7U6BGc2ziJMVHHsnN8XF/gp8USj\n+Vf9\r\n=BdKg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHofQkHtVko6hcVh0FGyk8jyDgU5U7k2q0Tx5dbd8JO1AiBv504zILc/NdrfQ2HWD2aixgAL44p+HWtxwqgFMx4K8Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.1-next-1612875287-515a915b.0_1612875589593_0.19264879728487694"},"_hasShrinkwrap":false},"2.44.1-next-1612881360-87a0c00d.0":{"name":"@xdn/prefetch","version":"2.44.1-next-1612881360-87a0c00d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.1-next-1612881360-87a0c00d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.1-next-1612881360-87a0c00d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Yne0fjeQJWJQlPzPDeIedRz1LANDaT6Wfh1SGZ85XvZRLGWBgJh8mg+onJ6AeegsOh4V2/cIAb2zw2dZVzmmHw==","shasum":"4fbe67d7243fdac27322a9d6bdc99287e3a62827","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.1-next-1612881360-87a0c00d.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIp7kCRA9TVsSAnZWagAAtM4P/R3A8qXVP5ceql4T6PdR\n4Gk54PLe6jhRtsBNJt+tx/jB/T1G1eYlm5NgJgXCo/ZnjfXdW/kO/9xS3CuA\nv8z+D7+JV56IASqofK9HnNpODqZKuT0YZiOVl6KV6pIuXOksB+r4qLe8c9Ia\nY/Y+uVQ+6q8orBydJbf6VTajhaOeKZ/RL0KEr5QJfT4YL+pnUhbwhVYwZkAX\nf02ICl3j4erHqSkwvfae8kzvk8V72qOrcnp1QLS5HxPi8Ipis247r/NlCJzB\nb20IOE4KJAe69r/X8UcM7EE++wpV71O5ijOTppY98lqpleIjAF1OxVh7OSff\nmMnPaCmFBxqa0tjiD346hqX52k2rcMd6c9K47DzYfcMYioRBw5h3w/IYdsq8\n5TqdSMMBdDJgoqPRroa3Wvy1hoeUpEf3vDcA5lUaj17XqNJHdXYhlbtAyuMs\nMSFOfUiB1XhU6XjKIHSRcyngK56pwScA3NV1eui7Q6i3MzL70VMEvw5IQCUg\na1Bbnaf16p/wrQsbO46eN+PZz4MGA4P5R26rvurChy+wKtoif7ulNcm/en4q\nLvy/RTGPA7YJL3hn0MkBNPBRNAKnKanvEa8zFwLSVP7c5oFJkYqSmtuDyg3Y\n5yG5VlM1l4a7TBztMkpEXARIYx3ozhe+wglZFt7JejrIVpRiNcGPpF4nZ3wA\nubeH\r\n=k+2t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpHQXh+D2W7UxieJ3BOMkV52y0irqMme71RuP7Nl5qtQIhAKoM8C82T5DVwekRJKwVyZbVJILfrsCwSTA1kpI9GvV5"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.1-next-1612881360-87a0c00d.0_1612881635518_0.047193878810613876"},"_hasShrinkwrap":false},"2.44.1-next-1612881814-d5dd2e0c.0":{"name":"@xdn/prefetch","version":"2.44.1-next-1612881814-d5dd2e0c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.1-next-1612881814-d5dd2e0c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.1-next-1612881814-d5dd2e0c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-d2tr/E6OIcv6DTcmJVbYsFI/A4qRAO42j5lgFqHotCeiKVcDbyyLLlZoEdR90NjeVHecG/yY+HA/F54HJLi0Dg==","shasum":"82f4eda5b79194bb4158a4287166f0c245238899","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.1-next-1612881814-d5dd2e0c.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIqCkCRA9TVsSAnZWagAACL8P/3A10FFrLlQKZISecExB\nag6IA8W9FRx14fO/GYZaiFcqOfk8a1eoAGWSIug4uGLiqiJQTGl1NMD3/ZUn\ncngRA3SzNRR/MEKdkN1cvCwYr6l13PlNxp7eVV5WJNS7xnGD1wSnYZ5cZoiq\ndJUjum+2xoOodIhbfR72rHV0pgl6J8KXWbDZy0LWURaOfo5Zys0FQ/6tBjSr\nZr3cqoysLngoDYIHd6QCegM4r1B/8zcQahs+RnkDEL7gO+hMThHSUK/eRlGS\nwb1FKzpETw+m01/HUFzJqAuzcENKYaCwJU4V+zKdlPID4ZCc/QpRJHSpVQak\nRH0+osyE2gRVDUyLMfbkXxKnNezAtZ54pECVZbyfa7SD64Md1uYekvjMV8Up\nDkr6YegumEVnd9RKgDTS2oYM65G6Fx0smChqFtVslRcrjikG5Ln+E9ZIjPHr\n9a9yU7CUmWldCaoH4LIzv2DOzXXvy4/ALG1gxaeLDU/72mLSLBqTnJrhcXgt\nILbr3OrsD/03GZlbK/LUQkQtCtXVKUOPTDyBKhyNMmMKioxHvjqWHrU1oET3\nOfbUtkXOrrPPxtbMVaP8CZgvA2O1mIwwwX+7j7CzYa5vGOyOE969ouHRrobW\naZUKEc9C52eVh/BHCpgWnebgSZ+OnK4PJkLXaI9bXuQBfSGzBXajSlBO9ZYm\nfRc6\r\n=XEGn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEUdLsosFrFlk17+x+o5Z0OsO5xR/WGfD9Y2keWIXDuOAiEA0MydbfMvBw6HkNJWqdQOrurPIweO1T23pERkgaf4AWo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.1-next-1612881814-d5dd2e0c.0_1612882084257_0.05333955929492862"},"_hasShrinkwrap":false},"2.44.1-next-1612895131-4361e71d.0":{"name":"@xdn/prefetch","version":"2.44.1-next-1612895131-4361e71d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.1-next-1612895131-4361e71d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.1-next-1612895131-4361e71d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-4PtbAIvtPDzXBr1wZFd5Zdc7lC0xnaBd33XKak2fUGU4aYZBYJNrQ93SA6VvdPPBA/OHWWrlg74Z0ny8J1f60w==","shasum":"c1e3927e5b35cd6529ba9aa0fc2157622f248b14","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.1-next-1612895131-4361e71d.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgItS6CRA9TVsSAnZWagAABsYP/AlyLlMRVLquFU1IpTrh\n/oqFNbGnKG1IDFXb3nId/s2K2pomk8Af3NbZrMIwjBkgBVEJzG8mWvIV016I\nQHC0VOK8wQeO20sUtDrgDzeXycRXiyAgX5rvfT4tTtzs6YJ3yRrAi9mzitW5\nt5Jg5faLMCl0+naM5++aejiipE+dCBEQE2igcBZ0IjEtlxYkQjIqauCRoeF7\nW3XU5R9UcKwd1EuRx2rdwmIb5Tdygz6yLwBPTOTtPNUp/fiHRS/ILRjqUzhL\nqseGsOuCMIfRnC6Az18eqc5a9yvBzhcFLHcOsvTTVjkS10+OtHJrCQA+ee0M\n8mOR15PnjsnYXZ1jmLMniGhJKiduXAm72HpUvXyeyPrX6xOt1Yk/ZEqJW7ui\nus7lItCZ72hAjpYk8wbmrXGh/Z1JHbV4cnA7AZcMGHWObODtS1hZW7Y2bIP3\nk9w/8dnMsz8XjmvKnORroc+bbCnuJXkbAPFuMLxx9MjWQxwH4W8kLpbzWVwy\n0p8TUUhyTXrB3AYXkkAUPyQM9Z97H9NO/ylZm7pP0+Nv+iRIAqAemSqY+0T5\neI8jGo06nxv3lf5qNgU30IS3FqmJ3LKjkDEvlZbCHc1AiUq0En4jjqAUxo4b\nZJqaN1lEnOcGiWaYYIcjpq2pjED2Do4xnac0jYyt5qbbwhPAUzuF1cp/qCDt\nPGQ+\r\n=ws6R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHXEdM5pioZ1JeKev30uuYeVx5CBdMsFopjHUTlZt9HlAiBGcq160ZDRbrhS/LpTDdP4RkCKBhlXxlnc5PYqeIBPcg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.1-next-1612895131-4361e71d.0_1612895418214_0.24839244524059922"},"_hasShrinkwrap":false},"2.44.1-next-1612898947-7a0a2a47.0":{"name":"@xdn/prefetch","version":"2.44.1-next-1612898947-7a0a2a47.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.1-next-1612898947-7a0a2a47.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.1-next-1612898947-7a0a2a47.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-w4HsDA3xRY67NY87IIjguvWUUa7AoxlEcqODjYO987e6fFRKc3Blt9MOKglTdqqkXWGa4MmMF4D7mj31qm/scg==","shasum":"a12f829728d4666b32bc9304d7d0c687f0b69446","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.1-next-1612898947-7a0a2a47.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIuN6CRA9TVsSAnZWagAAQJIP/jeJJJW7LGlW5UOTviso\nqdNlsiLKGn0c6y6TkrHOIZxLTlnqHlTPElr4/S/aCu4lwHB8mXjdue+Fa3nQ\nP2OUSU8PeDuK3wWQ9GKPM2QIz7Zn98tTvz1JniiQDPkSmo5RRT7uTkjJte9l\nOy+Xy57e3sKIn6X9IK0P8dU84w/SCmJDIjQUN1aSHm9PsYGHp6qHhg7Wbpxk\nDDMxeXUzaZ2yU4wDoBpwNjybFNh9DcazeTAxHxC6w/R0CdqQ2rQvKF1fT45h\nAcnwfMqi8+pkP5ii4Ksy3qBrIyxymeMZUTbS38jSp56VCcNXhKYq6qSRDmhS\n2ubehhUqXgvls4DHLUb2eHQgfHg8mDWIkaAHiszYKS0D+TAlVp2AQWzpbYVy\nJdAAo9Vn/f59t+tYLZJ4cDd+e+E8gzA6gjlTfwY4oIsoelmo8VG3da60tEmd\nzpuIzFNFtw0onUtJv0zM4ZVh5vZX4zS3Is/ZnUYxAKpgNQzyl8sb+d1SH0vf\nXqIqeM4PuoDLTSVRCZaeLAgrfVqnZCu8oT5Z7R5R4+FR7IHC50JEDcYPUGib\nUhU7FaOJ50NgCapXDQK+pb41titdwtjty3B4Ab2ovBRoRNsxzBaiU5nRQ+Yj\n1npz8EagX+gRJ1PKaqBTRXjY2P5POwmONtO5SZUZ/n0uwSxRxva759kYLCko\nqRde\r\n=WMlp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICXkq/zA/CWY5YELJkx9/IUuEEhC+G0Rix4eLoyUJgUxAiEA2tU88ZKp/MG+W2aS3Ls9dR2umdNIWqF1ZvKCeQn1xVU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.1-next-1612898947-7a0a2a47.0_1612899193774_0.3703944487011894"},"_hasShrinkwrap":false},"2.44.1-next-1612901435-07e59e1b.0":{"name":"@xdn/prefetch","version":"2.44.1-next-1612901435-07e59e1b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.1-next-1612901435-07e59e1b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.1-next-1612901435-07e59e1b.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-RBcnr9ehhkjgBxQ2BbyW1U+4JUXlg8R3KCJ4oNM1zaK3rIqA8KhEMoRvqOEI/DbyEPSNK0zyLF8pge5/+kxgRA==","shasum":"dc5377e49567d54592f04e9cc80b7c78b13abfdf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.1-next-1612901435-07e59e1b.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIu1ICRA9TVsSAnZWagAAwGwP/RlZnJNdgrF5xNbs2s9g\n1ENltCvKImmKdC+F7coMIbQnL70S9PjEcpyYGYnNK+kBrdugec+gzB9Tywge\nRMd9mwQBDDekkUB6WcHmfu+ePiUEsgp6k/haB7GRlZPWz/OUf/FcTCpaby46\nqb2YKsaIdcqXRcHyWpVNUn54wMzZm2fSNLEv7I67kbCAhWUBbFSJOuzOPg41\ngo77TKrek4jc9dWMv+sFuY18LiCRHOGIYsmZL3t93dQ/GHOqukdengD5V8dp\nlNMYm9lADlMbqi+7tMa7/o6twQd2SMW3cVHw22CW6d+uV0Ytoycsrci2KlK5\njT3mEcbFT66A3Q2QVdXZGjGoaKnv2fIbAoS6tc/878g5lQ8Wus6d9/JnQTnc\nFOzVXH0TrQgZzG9tH33hYrKASwJzP+BHOEscGUCtTtrddrd8dDCrXs3IeIfW\nl+nHSHk9pTerzEg97VbHWKd1IA36fLx1IMpcnet03OlowIxmM7WO9hgX7QZ/\nnSr3wWDWx69rYTZR5lzrDm7Bntfl0ktV4sUNneI2BqiFF3cOonZzQf0krNnA\niF4j+zdds+ak+WvEy0lPmMABEzb1HtJ4nia/QnF1+NqE7bFc0mf9xYzBg1AF\n/z5zCBfO7OpZ65hg8Bch7/fUr20lP6dn/IEf4X0pUPQW5YcXxqe0Lhb8HYfM\nafWr\r\n=vaLd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkcU7yKX9WVk4IBlFBpHO+/Z9Mqkm+7PTtyqyR2sxPuAIhAJRZAHN8MiFBo2WCVTE0B4ZrTPOm95hPTUXbExKbdm/j"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.1-next-1612901435-07e59e1b.0_1612901704282_0.08771613329820283"},"_hasShrinkwrap":false},"2.44.1":{"name":"@xdn/prefetch","version":"2.44.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.44.1","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-os4GGdO9QSFvM8s8d+InEIbRIrYrBpC4a5wvfK6hjrXz0bUExVNXbFXY69VtxacDYTWN9kAVKgO0tCasdsKKjw==","shasum":"4a933210fe4d6a5f677137d6b1a38ded2db30b9c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.1.tgz","fileCount":56,"unpackedSize":138330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIu1nCRA9TVsSAnZWagAA7LEP/A+83EZoC7w/y+cOyUVk\nPnuMTSCFYzQXCYIvoksvo2Pq3d8mUOE4jW4f8fGvQndYTgrPtJySXhWt+Bxo\naNstsbzeLDOfC3GVNwrnK5MjgJRS3avid17A6sXGbA4dBcF0/EoW1/8m7V+T\nJzLAOdB+D+EcsR4hZh3OxD17lNqN1LtgbaQ/oFuMfUGgT8zKVrp8kLPOxp2G\nUrg84g/vwINt4ILmu8HYlX94N9c2rxoX/3w8Orv4GEZEz01aNeLQlU20oCRy\nqBjDU51IX2Y79H5jxORy1o77WGcIsrVq+6G05pcGaGHqWVixaglQq0FKgwj5\nqLc4NJm6z5rGk7Eqw8S5ViyKUKvqkjPM7si1wVGGXen7UKpnBenlb3dnyp5y\nVFeuCRFZQ5WKWrCiYXZ0j9efifkKhFFxoNF+5q/152c7gC83gP6r9AiZYuX0\n470JhVSksLwgE46X5HshSue1QW1zCS7eKo6jDeEATopmGQ8DRqg0FzN+gcjY\niIR68aRA44ulNRTyeJGS7y+cZYjrUehO24ydpfm729sRXPPV5bguzeMP2dK3\njxXlRL7l+dcTH5aAc7W9+K08nEc41CcDVLv4ZU/i9FjT75a57ZxTDdMQ3lwM\nv1LvMzXvTeMM6LriX/H8f80hwhJDTL9mzqVF2fB+OV1I1MZzC7NiVxTGNAgu\nsYUW\r\n=q8q3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeNnWfE7LjdOQGQCUMj2lF9u/q3SzNise3vGNWapE5egIgH66pAM630XkcRrUnrGH5ScWobHlvwbrGerMc0wSftgU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.1_1612901735039_0.029035337824944607"},"_hasShrinkwrap":false},"2.44.2-next-1612901535-ab64c39d.0":{"name":"@xdn/prefetch","version":"2.44.2-next-1612901535-ab64c39d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.2-next-1612901535-ab64c39d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.2-next-1612901535-ab64c39d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-mNIPtN79vnQK7g3vSYAMu4diwZefrjIxYbjYOvEviuCECc0DoSh9m4tYMiCPDtne1nakm6gvxm9JXZvhnuKlLw==","shasum":"a4170c5842ca32ddd05348be89706894a1055033","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.2-next-1612901535-ab64c39d.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIu3QCRA9TVsSAnZWagAAu5IP/jyRxlfrBUQgEodAuS5E\nlrMhu2diILWSCvJH/66Rdti+STO7hToaN/Y5ENjICe71r/kAkJCtZW0VRM9C\nO+5LvAgYcMh6B18maBnk0IC7x0+A3yVpBzCRE9kJTL86ZMuEqiojFW/dlEIL\n20hvaoEZQNl/ec8cVVt1w8D8AkBwjtEDXsedEXVI7QowGCW1M/7FThF9mcJ4\nF11/x97U9v+nNn4G6rReqoYeH4cc/seeckGabms6G58jxuE3ElhqzMRTOL7B\nLUFNqwzZtZO0SrUK7cajbyU3hOvzeAtBnXAfKsMiSHEoLgLdX2AZe+bdJLMO\nlSS/CkXMcOWIxXHFXtEuXqmcHAqu+gmJX49lUp9bMujmwvDA+gg+5F0gNJf7\na85lXDj++heT0475AtohLTWFkGxT7uz5coFBzin7nFNC3UDOvwkYIabh057d\nFir19kFNoeE6VPzqja5JzZz6vGCfdNx5vPNUn4YRrK21P2xzegwEGZkMM/6G\nOuvWiHV5E5raSQdGsxu0kBHo4JII+GCWBs+jvgDltNsAU/gTcyUbWO2TJ6I/\nbv0Ew0D/7kGO9BFrHswFZshengSAWsOXSTy66JQyiakIp5ovPU3AQx4BDR6u\npGa7mbKko7bkbj47pyL21EGUBMDltYD6xBnVF4Krm56dp1zbGbqgjh0OLFNB\nwO4P\r\n=h4bc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDBQIFfNnWObzM4tJ4L4+/3r2dsbykGD/+eI7a80X8oaAiAaACJsAFPh+jfxFWuQUdkR4wr7nBYEYkgcKD+uuVOUGA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.2-next-1612901535-ab64c39d.0_1612901840351_0.5879003926767705"},"_hasShrinkwrap":false},"2.44.2-next-1612903048-f77b7138.0":{"name":"@xdn/prefetch","version":"2.44.2-next-1612903048-f77b7138.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.2-next-1612903048-f77b7138.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.2-next-1612903048-f77b7138.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-03nPmD/NifzZizLLdzRohGG6p8Fa/tPGDwiymvcp5H8Dwk7O/jLH/oSWF24SiZjALA4/OFKy6/XZ78g/jmHyuw==","shasum":"02d93d5018e707671d9a0ef380c6bc648fabe06d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.2-next-1612903048-f77b7138.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIvN7CRA9TVsSAnZWagAAfCAP/iU1WwYJcf7a/bKoh51h\n5gf49xEs/BCyTttz15Jacf17+dEMVYOV7+uAanpR22CfOjQKnGEJz6DwTOkK\nMs+SD25dN4aHTIUmWTOu423Eu3peQRM3bPHLwM3vBnjQLGXZEKtNN7rrFtjl\niru0TC8OnEekTKQwc+uDiHSp0KU9LqK+PtPlms2KRHFncDJ7oIVLzOTNE/lc\nV60pIdzlkHnV42O9mrMr/wmLjZd+ceNMlMg5IOwSxHib7OTma9vkyDY6bplC\nSYjv8HQyPPham76hmsT1ZaaHFnllohV8YlqHFv9DP/Li0y3eaAMVakBDjTz5\nFNuA9Dto9uW4Dk1N1iDK5fuhsF9tzcL0Sd/yt8EQyEGBe/omAJP3655f/cNb\ncjp92chhaH2ZFA0XmkMxQzJHEhLm6ZY5CZOY2xsTkwBtT+fJTVNOp5DhRw/n\nzOqG6dr9VVMXHvb9MumZZV7uPccp/Dc4bSsdeP/SPqbL80pRAYaGvX38QFOd\nvFYdEITjevZyj7EBx9ww8CS7XXdGsNLO07Gt1p/wfz78qmCxfSDmCTnxTkV/\njwvdHddcHpRpxYCGC+npfH67rsC3j/O0wsIec+2WAImiEOKKWkGQ1cRybcAR\nV30BKQgITOUvR2jNNOroZNCPcI3PHG5KB3Ghgpp42feTYZcNjZo6DmgEs1Jn\nODlM\r\n=HQ/c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFMpEX4WYprh7Kq03KghzK/4bDzSiSeM8db1Ca1lt2K3AiEAvdLfBCI/ouQuLAmclifhTAbemKARTCEsJ95MVYsTWTQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.2-next-1612903048-f77b7138.0_1612903290551_0.7621421838416593"},"_hasShrinkwrap":false},"2.44.2-next-1612905654-a921d501.0":{"name":"@xdn/prefetch","version":"2.44.2-next-1612905654-a921d501.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.2-next-1612905654-a921d501.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.2-next-1612905654-a921d501.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-7MaD4HMTx640gRrA4uTcgqNbRB+m9ou9m77JhOZgC1YHfn4zi9pKRhjd3hdugtYOF6n1rDS0ROCZBOmgpYtULg==","shasum":"a156d3629d8c77e209d013cd06a611f775cda892","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.2-next-1612905654-a921d501.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIv3jCRA9TVsSAnZWagAAEvcP/RsdI1vZqzKB0hVNZiUg\ntPal+jJdczXfEGY2BEGbFgAOmcc3/McLZA9ST4x5jMOxzXRQKz6iBZqboHbB\nAB5hCj23v1/UipNVLVdd35t8bpxKZh7eU2QkGWTsbWRCEODMkyXlilgrmvKq\n6GATvyj8ibEpBN19NlZZONEcPJDrBFi7qfOgfrmbReiG+tSKxEufW5cCa/Li\nuYvztpI/wCK/cxQxD5gICyAzCFShNkDpf6lNgj3OEOjxTwUfZhUNE8/FAt2b\ncCjDDpHdRr2i6XhaYfTUuz2jYoig1ckJuheLDZFeObvX9dchiRJC0BQHWuxw\n5a/b6eNVBw+Omn06Hm5zd60POFqSITsEDeD/CKVXNxE95lyuQgG24y+Tjvgr\nN1NZBdWP64oHLg7FFghx6uPyAWna3bgbTtwDLrG2PV4/nw/9/WFju1/tKjvE\nO+hSK5HIrcKH3XRvrhEx4BTT6+SMcxKVtn/YVU9So86nFlUHtr0EBGPwpu5G\nfFZTPRcLEIQhBo8H0P3d3QMeT6u2QvtpuCsONspeouSj3Cxe3w7RfJ2jzlGU\n+YVkC66nihuWNSxY6PyX2CPQD9fIvWxF16VYyVprPypzvm+mAc3zYnV5zVV8\nyZazLB6WjtgA2TZM7rWajRBa0Syz/QVgZ4Ftl7Df2R5V8Z1X4L4Cycy3Grdh\nfRsB\r\n=CMAO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBCmvzTU7elr/Rx03VkO2ariGA2i+npSd8rMVO2KbVPxAiB8YCCr7TWvaey5jk29DLrD87nVQMbB9insBWfk/2CoWA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.2-next-1612905654-a921d501.0_1612905955375_0.17435084151633795"},"_hasShrinkwrap":false},"2.44.2-next-1612907156-be16a678.0":{"name":"@xdn/prefetch","version":"2.44.2-next-1612907156-be16a678.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.2-next-1612907156-be16a678.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.2-next-1612907156-be16a678.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-HC5oew6jyDlh4HprcC7WkbMvv9sgkxITi6LE1K+1fhLpmWatpFMbg+b8nBa13SW9eilZ966zLrRKXWITfAv0pQ==","shasum":"e5ba06cde86e9d064d82ef52cd7cf10051560b8f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.2-next-1612907156-be16a678.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIwOsCRA9TVsSAnZWagAA1z0QAJTebWfey4x/+olc0srb\nh9eeYVaspTM23fWhjpTyZ2BaiG+jNF8laqvCd0tGo4W9e2dcNF3K9LlB7sYe\nalimf9PC4JPDQuL0G9H2EwASgzHiQDCuBO26DOmVrYxE3fx/ShPaKzXOIGeL\nYQlnXe3W/MlO730ycW5KOUOmiVmyOmLpjNtnJD2M5fn3pvkeCK9Q8noW5Y/H\njEcOeiRqmX9y5Emlnk6g1gSwTD4X2pbYrvHuyR9Yf4iQlfuXDdAVrqU0+y67\nVBBrMnBBoXX54ITKvKwTUpY2z7xgfmC0gbS8LsrQ/ZuVxMJDrhLXunZY1l4S\nBlzN+saT9cQum1AxeAHWminwLwH6D1fn3wU1n4OxKHe433slXdIbMFyQbYVX\nSSR1VEX32Rhl4Kbk5WiG7xy3dUO5M3NggiFXxzGkZll42VyTBpx2TSuSDo4W\nxGoWwhtFtzMHMbqHfcOiuS8qJiN6vV4r+7RCWAdwcDWr5iKmcdnezQ43pPLR\nNopLMjmojl8nE8/Xab7/Q+8y+fhe/sbBrS6TOBvgQ/WKIE7vosKBa1CYoFz2\nyFNajqdjbBWCdZ/0rs5LnH3E7wLVwLbBgianIVUtfQuh94n5WXcPDjLGGtVS\nH2OFcZXw20+sUrNs5R4KLeqXhTNwjCV3b24pXyfX5g3D6VCyc9FLG6T9GC6+\nqTrz\r\n=GLPk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWZPyTruq7Kl8SjXqlDnAwMqIuEo5QmSNyYXkeoNQQ5AIhANEAav+Xf1mfDbqanWMfJIXYHtUOmpveIZbl6X2RhPsV"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.2-next-1612907156-be16a678.0_1612907435721_0.3258177588429565"},"_hasShrinkwrap":false},"2.44.3-next-1612907227-4c9be7bd.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1612907227-4c9be7bd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1612907227-4c9be7bd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1612907227-4c9be7bd.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-0oVKRKiBArd6j3G2Z70PaTu1afnfKsZ73dZJrqFJfTfel3Qz7SiQpJPIYRnFQLjGJ5LktWVXl5Wf9vBWzeQF/w==","shasum":"d03cd36935006223af3113a405e05f1d5f22459d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1612907227-4c9be7bd.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIwPwCRA9TVsSAnZWagAAmsAP/1wmkgqfC/J+EDu/0c4n\nxnbUm06a0yE3Fl4jF78HwTLC+9X6o4CsZi5du2BuhqpHxX4P6Rl/rMBNb2ll\nFuvj0mma1JW9SpsFspTTrBKT84MRXnWv6hf7cdX5z32UwHh5PCLAeI9+Qc72\n5wKig2WEYeCQ7aJTioprZ8aj/Xa8JhiUnO5WtTj0HsXcFejGPywNzcyqGTZn\nj554FA0qJRVx5bYRHxr6VpLQONCMzvmWJcy++81OnliSpvOmj4mnF5oXKhxC\nM+vCZ2o1cYGpBdOc5hSHXX9OEFeiZjLAUPIikXImlfoTY5t2dfYG+0etLdQn\n7EL/nNAgbpWTf04huDLvXLr9LJVaRJtDzlHvDHs+WzbTiR2VfoId5qTMyM6r\nylGE8JnbkCFoWc2N5DoA1U0vDwkhKTdDrG1WRoHYAYR5LqWKzqOWJ0bmWmqB\nvD14Xx/36hDhlc1TJ321dbpZLfTEzqXgWHbnQp2NbnleZk9sH/gvXU11BGgb\nRVzuwWlyaKq8howgYzszIE0687GVU6vfflyyieLkkRiKa6Gr4yq0Cf2wxyD2\nze3azpeKIDVh9gWLWnNhQXcnzzY/Hi4jt+o5QqqybOWHnqTwgiWqttFw0o24\nl2RtECm/2pSBA9C7/p5S4V5fIZMXi+BDergSMpwugnmeGgWWZQGHK9FWlCNf\nfjZw\r\n=MF6M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEmeZI7xF3bLF1li8u0LEiKICe9JML6lHfepOShflfCOAiBFsxlIsojEaOUSBccyy9CcSA1ITzk1r8fqrvItDLURcg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1612907227-4c9be7bd.0_1612907503844_0.4864502488502951"},"_hasShrinkwrap":false},"2.44.2":{"name":"@xdn/prefetch","version":"2.44.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.44.2","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-3pRckckICellDyow4mY+4+24OXKO4Jgl5XEC594dyXXM4Ky8jAuu5jI0i4Et4iF/9dy0FUCNYkmToWkUJijaIw==","shasum":"6afd66461334303f11ca879be346c546d3a38465","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.2.tgz","fileCount":56,"unpackedSize":138330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIwSGCRA9TVsSAnZWagAAvnYP/3gDSqd71POiJP26sawR\nrBlOeBkHNRg1yJtCxsGZ3R6wy9gn2P7oCCmdrk3W/oIXvOfgkvSXwY5UEHMm\n6VNjt1V8AbFvs4Cf2LapGrZ6EReaQkkW0f6iSHTm6jNOlPKSJjMyW/MDjmkg\nQkvXZV5ayf5hegXWdc6jjcSOLvlzfrsiBR2XCqNAQ1PB27WxyipyTYs63N89\n8F0vWA4S5y7MMJoEKKWpImlaNfVzOvX5mEAbgCMZ2Z4E/mXhpzG52laYLsWi\nh31G0l4/jwSZPA3p4vCWrTR2M6chn3A1EWZyM7R1R+pPxx9SQIEJMhsYYXJF\nSf1ttjGhTV2dHVYQVu6O9MIP+fGQYAxWHYgP/GR0a79oV4vBPMB90bq6sh7p\nutchGye9rNSg7AA0dwAVBypa4a3Ew1NPoUCQq+Pg4AnEOZIYUBdq3y6oDnPj\na1R2s5C1PmzT+5oBq1Maie77orxTZgWYIiyL7ciDYBoF1emd4aYNLIL4vvaZ\n2ZKmyugjybbjy+iWTCtfiUtqwbJqEaWcG/OcuQOIb2oaiFevg/No5pN/7SSP\n4DUGviIVz5RDWJT0FTu6IigIAy8v0MmNZuuEEnwGbNxytMqYmJ/LL60YM2wx\nZGQY8sJ35W0eVqetLkCq7XWco37vFOQiz7mKGrARpNbIO7LdBs4xbyQWdZOM\nxxdb\r\n=3q71\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG92WascpoOjhNhbbOTR0SSwZAPZKjyg9evzy82R/RotAiEArLeYInm+G3EBC5t8fggyYUoHfvlEOiXIcuKXFKX8rb4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.2_1612907653473_0.5472063554659232"},"_hasShrinkwrap":false},"2.44.3-next-1612916720-f7c12971.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1612916720-f7c12971.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1612916720-f7c12971.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1612916720-f7c12971.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-V8FDD0CIU8ydLk7XLFTjWLmilHvUAaRSwc+T14prhZfSbZxKRLQNx9b+1BVg+HQ9Jl8zF5+ASNAb5v8N+SKn6A==","shasum":"514c0283805a52360256230a509045953acfbaf0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1612916720-f7c12971.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIykcCRA9TVsSAnZWagAArdUQAJJ+UrpHe2tXOMMVuLxe\nmmto7HwqS45v41riofc6NUMk6kEKp3dFWOiVNaXDlpNEWMuWgrfc82lZkjhh\nrr4+AitmwG/+Z07gFA1tdYo86r++TK/yJpgtfB3nHhs6wytvMVeUIwjAosbv\n6Y1SSNwaRsrhpKXRmUfrjYSfGwscETkL/Wrcr1sgbpNzxzlvw+PZ8dcg9xpv\nx6tcp/jKUuCwPL0Em2augLc04GIXdjgY0mGFGYCHuAWr+nOqTq4e5umvPZKt\nXUG//89x0fKqlArja/LCuAEYo6serkogv/XFLa+YMzptBiosJVNJG7ltTPCL\n+MfDOc3bd545vHIdMhLAmLQdujJ6MIjzxgVUE0WtVTBSvndDhIgJjN99oM1f\nC6Tchnko0emJ47e6LCQw018VuumuyHhphkudicRd1P4TAC39Fzk8vX/k0UDV\nvu2cRIbuhfIsNuEKY5SzM4cISGnZT6qP8z4u7MT/y05kPQy4txfasdRvSo3/\nDGAwp79POytjUrUj0QPJHaSUPXNCp7kY5zhjnk3quNx2H5LVDKpAyzwREM1r\nBWFonhGT/j5DdmJ4iuZrrNcExUrbOWcs3cnk0iSIU55cdV6Sc9V4WIoatliw\nbz2PcLKmu42z02MED7FTTCcvJlCj0WC4cjxgxuSsq0hIH47A8+hhH0H1sES5\nuJgr\r\n=Q4j6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCgMgKtkrVWDro8kyy9PGuP0WgP7+5ZgRJBQ9zox2MVgIgFIfOd3grziTjKkq2rx5EsLHH2fUoA7WTbUHxCphiRSY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1612916720-f7c12971.0_1612917020027_0.5550983851893001"},"_hasShrinkwrap":false},"2.44.3-next-1612924869-1b9499db.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1612924869-1b9499db.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1612924869-1b9499db.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1612924869-1b9499db.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-BPUkbj+0/KazCzV6bHQTSQz5MxBulsJH6nxCdFyMnB18DKcXY5OCjjxSWdxkMfrF6lAQP1uSP6O+pspV4oGylQ==","shasum":"073f9c1d391056bd006d9c0404a66fb88227b538","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1612924869-1b9499db.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI0jYCRA9TVsSAnZWagAAV2sP/jBXNj+9b5x8O1EDmrmP\n08Hz1X2hjw6+y4aSudBvNDng/QBR7PTqgtYl7fmXegVfIReHxC2fx0XHtEaH\nyn+sl4cSMCJ0+R8t3nKEdXsHZwN5X9/iqJRMGD535RcOTGd7VnkYKQ1A7etw\ndWJ/sjCtR4HccRlvsGZrIDi4d+HncRmbMMnOSVHWAK7EbGMwoTS0f5gTLQCx\nsepSwHbMbKzwo0IfOukvuLiFgoEe7RVz8FLy5kCWa7kXi/sHsUocY35X++b0\n0oJaV9kVY6NCH+eZyj/SXgP5IDIqcEy78bcr9+soW+RooW17IAC55cLWaSyr\nzoygVcxc+FFt4PIexwrB+D7+uJNWd1yioNm3fPyefFl+773lIGxWaJSTiO5D\nDl1tYXR8Kv/BeuWhmGw03hVmH+ttTCRZoIttCirfETTaGKM3/ew06xEx5lC2\nrCD1dVx9hYYGlbaC+dmgBxMMT+vY8V5LuV3rRa1mTZNCBLWfeXyBUsHjYk1Y\nVtRc7IJ9cSI57Xij8F4OADPsy2+T6kprbxRZoD9lmgmkD0lKhlHYXhb8pest\n50fQbCU2bofsIwgBLAYa3NZTiEVbrl6mz7uh3KHe0qwVqP2cW2Lz2ZM08PPI\nxl2hhOi8mrMILLj2eWol5bJm84Leoho82P7EFkeidmO5LGNUJjTlyvBeJOcq\nVqru\r\n=gsOp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeJBmx190wDIZh9jwBRSttX27TtEff3SRToV5Za+qnUAIgJJEFsNaGSDc/aPCK70RYZzGCxoIxh+hKkzCE/kicSz4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1612924869-1b9499db.0_1612925143671_0.7664888773624847"},"_hasShrinkwrap":false},"2.44.3-next-1612958717-c9c30dbc.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1612958717-c9c30dbc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1612958717-c9c30dbc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1612958717-c9c30dbc.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Nf5trOWJS3Xin/xdPzEonrTROxV/q/voiwKR96ayQZCBKaLU/DpGZS/+f4P9lCUNLi8iy/CUZPjo8XeMNTTJHw==","shasum":"e7f817c59ca7597207487829b2d558c42c6320d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1612958717-c9c30dbc.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI80pCRA9TVsSAnZWagAAyKcP/0fnHrwZalYCEagzUAlU\nIWXtOPXESWDAGEqUFhRsoCNx4m/6wd2vGSUt6Lk8rdAHryYDsRSSh7yEA6RC\nmjKnO7FqReKox5i1Zw5sQDZY6zUiYzqQ3BxJT/R9++9Kc8l3xDzju5H1frSR\nuGkiz6u5fzk3a+0PmdxbjijY6LIdLUge2o/IqOd0TGczas1oZ9VtiJZP7Gjj\noHxq+GX41zdhDgAhdfqk6LQuyPwHReQlWkC8S4xlGbHjLKYPKNWmzwBM83BH\nJhUzdk3B5OCBWUMGk9dj6Phphuj21Vt4KFX2Pg0k8iUNwUCD8VLYd1XtTU4G\nepakf9dDvy6NAg2TOd88kfDX3xGuBAkj5oMe210pbg3FYTszDyzojUkbS/xg\nJR4PmYCWTHY1M98lmPR5GBZBCyKgUQ8D+ZoUyiaFNH5jP7NjkOjY5k3uizRv\nFwZYjomMRV0vreV0JiUniGMG+UTUsafA/vKklQgD9V3hFTr/eg/PX6I7LN4g\nBOqUnp2bs3M9JK8/yXisY/cOByzCaH1syA6983y6I+CCi+MqUc0xZ7z5d0L7\n2lOvkHnJ4SH2qdoFSfuMpkcEFKx00fakRFnbAYUaZvuQJJdWYSf/CtbRMadS\n2GhOh6wrz7xo2D97sYde6jX39VTVVRGhhkm97kQiBZlKoa+i5zwgb33aWroU\na5ob\r\n=ZhKK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeqsds6SBogxjZXUMnpwHLhjGNFe6oILMBYGhQ9ONy5wIhAMzl4+JxlGgFZlzG03P4ZwApLkEvtPFQ9ELZVZy/V53a"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1612958717-c9c30dbc.0_1612959017335_0.16218405264478997"},"_hasShrinkwrap":false},"2.44.3-next-1612964528-20c04862.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1612964528-20c04862.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1612964528-20c04862.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1612964528-20c04862.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-e3JpvuJ5HxSSh0EGviA+o2SfataRt/66kefo1jq3htIo3q62K/fsfFYxgLXsBNOMx008c0c/TOdTVIcxKoOD8A==","shasum":"a793913c94ea6de86aeeaf5e27b831242d9d3a8a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1612964528-20c04862.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI+PSCRA9TVsSAnZWagAAqV8QAIEmnPrPFuDvu1rCULg0\nAhaiXf+livJebyGWDC7lI38tcxkEglgk4CR59MPDjLKeqMvd/0LLDwgZxpr6\nz4ey08u/bvKs/xg/8znLu4e+UNPP7KM0xfR5xLhcHkkz6zS8NVbTaNMzhoME\n1umDYNPDcJ7ZsgibQruYffP91I8w9rXZJfWwEBrHzLhnIZTw7TMSQ4xKLxeS\nwhc21Xz1FtOuflOLVtMbMGhscAD3bLWQ99jvfSvRemZsplYVyWw2vLNewdgH\nuq+Av55DCDpd/jEs0/72VLD3bNm2rfm96IFQP7EyT1Wrh2g9uRhuDYwR2EKz\nysqFzs16rZ/j1UjvwC39UhhQBAvW9AEo66GrV03CHDWkJugXMAtEhA+nMtNj\nz9PTrgGabKtYgOqZ0XS3cVfxY+Oc1C8JUjvHV/IiYHYcbU47rxgkFFowLJSh\ny/qry/xJzEHQPjHwTo0fEqEIV33lTmEsi9CnDBgWRmQrLy5YQBXfc2+fLVi2\nqB1oUUa65qZVYF1QrwXMpngA+QEWfi1Zy5dWXqJuwOltdlxrFa10Xz/fWAi+\nCKwOOlbGzmjC8ltniNLdAzkUjJwrIY2HjiHrh4sXjfw+60XCdEu0WcvhRzyR\nNNplQk+H6Dj8VpEoo81y8T7j4C7oOrljiyKGvdWpO9eLCuG4lRPmr5gh++Ds\nhnYo\r\n=cY04\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOVDc530omhCqMx0XACtQBtQQKMfP65VkLcom3g6FhLgIgQO92F5pI+P9qoPMfAus9uKSaPDNkeXakLI7sMIcF85A="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1612964528-20c04862.0_1612964817653_0.08651672171700509"},"_hasShrinkwrap":false},"2.44.3-next-1612967921-9a80b78c.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1612967921-9a80b78c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1612967921-9a80b78c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1612967921-9a80b78c.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-86F75TWOlJI+RbUGj2mB/8xicXYHRXB2D4LDO/eaeOV5J9hC5sQbF2nmuRGFdXlgFpjdB963uxtGwBDp2R1Z8Q==","shasum":"a2de050b432767e11994e80bcda83878b14f2d98","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1612967921-9a80b78c.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI/E8CRA9TVsSAnZWagAAtkYP+gMPn/1s9HDOQny7bNjf\nBjZA+o8WKF45BwXcBBK8TQlzqVaEywZ849iPXUdD9+ntdjvyGoXExEMXsqA6\nranZL/uowtkV5ejOTVz3XRZ5wmIJTJ3cRfGFBqbI+0UQuAQUx7TQe8/JcO4q\nkIKdAeoMZzHHhR9sbSgRfbfEOguPiGQ4UJBW/CVQRxeF4v71FdrpxGX52TaW\nfcX46joALMS+xu/rF1nkeJ3DDzTdrWalI9A88RFtl7WXNnNi6dO9xSj/t6Qe\n6lwOS/jEPNPd5aR8Z5uTAzy9qFQOIZPOOZYaA6jBoTmelD+ug2DaRE9qlpl3\nBrEOSxS/QrH15jy06K0gErIIYXWUhdd3eK/BC896ssJVx+WFSPk0Rcdg6srA\nRH28a8jv/H2GDaoNiSRw+muxfLbFvujWt+kbmB7hjPDfN2q0oECaM+0QaJYn\nMEM2IRgB6gXqIyIe4cic3p0RV8xRawe7zZ9SUxnUsD84i+tW1KClgb8QdB/F\njNX7o7g0zsbX5xdjWyXX9HZkrtVUE42n6YlK2Mi4Osgsp6W+HzMMupMiLNj5\nMrDO9mDQ4xKmXQxEGns26dFSDXGyGIUt+21t5jHj2S1YQHNc5iMEecwtU6bN\n4/mRM0JkqINoAfEQ/BHitgrJ64108Wirky3EVVtHfw8ILiTEfpI89DLb1Bu1\ntd7L\r\n=JCbr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwfxX2YPEC+Pcf/BZ3iROBomwqnWwI09MWmIqjLo/LYAIhAKuY4beDyGZKZzgwsT1u/qxE18Xn3os7R6M6srSbepuo"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1612967921-9a80b78c.0_1612968252142_0.0039361063294021115"},"_hasShrinkwrap":false},"2.44.3-next-1612984049-554f2cf5.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1612984049-554f2cf5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1612984049-554f2cf5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1612984049-554f2cf5.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-OTyMOszAfekpnvKkB43VcnRSqAaBwFD9RzgqtJFNHndjddY/KhC435klQHYb/LUP0MEah84J+oS3D3ps+MPKZA==","shasum":"be74278ed6134be75f778188d2058fb96a49f4f5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1612984049-554f2cf5.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJC/0CRA9TVsSAnZWagAAxEgP/2B5+z5YSLWwrGq1W7Ge\nWTys/dTIVI6gLuClgVEB+OW1OMy04aAlVgd8Xl0ytivcHddYB/UnpXKkaaUP\nlqPIuqkbf3NBLWrofvS5gVi2DWbWgNwVof0zbwLi28NrNdTfBe2ZLxcqHQiK\nxW/yzPLbRgqe/n7211E4QRDpuYU47a7K+sviJ+gDig2MUPTTIH3kxKQ4/MsT\nD1nEmlo99jzp4FUH9AE9bCJCaMhkdRpjXVkPH2C/W4xO8L6zv60SHIs9kcoh\n5Gcu3dMVnRaRejzOmUVK/1hbAbh91S/1WyQ03ijtMxTBubob3pc7vPyerOJR\neptd9f9DklZeDRz3icI2fh33Ybtlz90A3dx9pLCtS5Ntn8Sr7ChRWnBqgR72\nMpiphteCi73C/pgLu+jBGW6VGlkfpy+OqUE764nMKEJN3jzEKmobntXbH9ad\nsjahXGj5MuCLFn0qIi/Yg1ecAKn3DSQNlKL+OgSXzNDe/Y4mDDKVTGqQKEVL\nSqhlvZEUSN943uOVplv+rIRIepA2wjz12KXHqcXoYRLr5DrXHDYiURnsJ9Mm\n9K9OZNah+v+DThJNhxjQLDeW2yKBDvimRvZ1hdyVBlKQw2pebUehJYidmjqn\nV/oAJGGoaLLlgTCY4kKvvP5AbZUYwzx8z4qULsTnI2bF/NCM6+0bJy48iPZT\ns8KK\r\n=mBNU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9AVKZUOWSLjcM35jGDc2+fQU9Z9q0hjN2zmQ8VkcSTQIhAInmigAW7MfluneFO8+zUR67eGh1v6U58f+9QvQSFtIk"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1612984049-554f2cf5.0_1612984307975_0.44139431852906497"},"_hasShrinkwrap":false},"2.44.3-next-1612985799-fb4cef45.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1612985799-fb4cef45.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1612985799-fb4cef45.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1612985799-fb4cef45.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-3QseBMYLp5yO+OA5UD3w0WoZFOXN8n11CZGBJvG5zXG0RiAxafi/9v/VqBsgkQi7sYQBeQXMqrgIt2B2KJfIXw==","shasum":"a1c3eef3fc3013cc1658fc02e20101f3771a5e38","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1612985799-fb4cef45.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJDcDCRA9TVsSAnZWagAAt40P/iStXkbjm516bfBSexHZ\nAAisy2RdZjmSMRHKR2LJJQJu7fvE+AaKjZck7SWzZKj1Q+019RLrE7+Dq9e2\n/UC01igwfZYk2YoQq1J1Ui/m8UW/xOIO2ynLncDORfT1Q/FVXLCxk3e/HRvy\ngkleMjE/aLnB/OWvtTGJnZYGnzW7c7ERZ4ESiCCL4YGvxfIV2lT7rmu8WLOA\ngXVvKvrJWt2uEVicFTXtp89j9bdJJcNvUK540QUTul/pMM77qfNuzHAtBwmo\n0vxlMaIEUTP3LkaiHAqcaPhOUCDgis/PMCIkJv/cawGqnO2qb3itaf7wdiKM\nVRcTT3MlosNswkLugSzFlI+1n3fQisTdUTBjmQWJ4M1gzdUnW6utu74rGgpX\nYH48h/ZRsIpzK9Yf7+ebJlK4xjkBjxlSGi2jTShDcFvr74nd61eW3imG07dZ\nEZkhEv6D8HmAfkVPAWRVRufadLfpRqVmreAXSXOUuT3sdeRi+vgl8okzMw15\nQzzhjcmuwrY5en6Okf09EeAq3GuPDEbTOqqOYu3voW7C/cqKlDSafn0cFW2l\na6XvxnFOEpwj8ogmZroynVgSpXrUDzqFq6tMtjBbrbwQ3xxEE/mQ4Vh/OYBN\npB2F7rK/0R9HhpCeQCkb9sv2+099eQEDvpQB4DXO9mowBe+jlLtsRvArb8PC\nXve1\r\n=w2g1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2glDksryMkOCuqN/0EojBGAVMO3rt/ef9ey8Qb0BDOAiEAq9I1mJDfqzuBm3A8d3iIG1hYo8c0Ljbn7FLIQZDXLag="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1612985799-fb4cef45.0_1612986114816_0.8713988022217152"},"_hasShrinkwrap":false},"2.44.3-next-1613052238-fa2d1e58.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613052238-fa2d1e58.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613052238-fa2d1e58.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613052238-fa2d1e58.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-KGTxiTXJKhCS63vNCB+TPVQ1og697m3UAnwdoAISrofCcKu41J9kSCVUrekOqm4EryjgIn9+9CsEkkX2pux45w==","shasum":"e237d05457eb86357d7e2ecb6422ddfd0fc7c8eb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613052238-fa2d1e58.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJTp0CRA9TVsSAnZWagAAWXgP/RxG3+dU2eSGlR/ENXKA\nlTbaKmsr4tpsh7seherqh2CQLkYk+nsyyB+OLD6zCyoud8u7Vj41g9wlAJa4\ngftmz501C8UXTvCxvyn9lqjqU5puUo4ffyPwgbVcGpYpe+NbTDM3LdK/OpZ1\nEOl3UgCwBSK54nL3OykX4wMRel2qwsC4WtoQexNDsU2C/pRHJaIvTnVYvjpF\nHGB12uFawDC0M5CgnEJMHogkE8RehEFtggLg7ICHAPl8VlK4tKVaozTVshx5\nGvNZegEb3TYj6yaNYDika9d4944fTPnLi0TfR+W28VdIQ5jLBLdcX2JfGytm\niewVoSO14TohNIVlZ+vF8pGPBLQjlGZbGZLetn4INxLFb7ah7i7Byo4ttTiG\nLz2NZ/adFYufoo1GKYJkqLgE8IAV3JX7IlWW22Q1y/bzUTFRwMlhcZL60hND\nyAD1gIuazZ/pfrNMMwTEfwn6zYxUaTLK7YeZjcVEY4eHZF1MxDUyVqeY7G7b\n1UASltoNx2KvhK8Xwq6XqwfHsreQlDFbw1hPk1rx+G3voQEirbNGj30ntPrx\nR5okrlx2IyGMsIF4jNID9ewKlv1eNQiGJO00IfXnX81IFOVFcQ/Eq3SA2AKV\nkH6uEb2Qf0pNWvEKtceMNUr1hgAfeHEz7ULnc59774eGQoM/7SbhoYbMpcUf\nNN8l\r\n=zSMK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1lsOhz2NZGFcrp9zSaP4CqC+6X7b6z1OGDgXXTPGNVAIgFSTL7OXdIkGeMc1S5kapUJJUV38rVS0dbmFPQtQmTlg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613052238-fa2d1e58.0_1613052531505_0.9573565642767903"},"_hasShrinkwrap":false},"2.44.3-next-1613055429-6a8ff165.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613055429-6a8ff165.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613055429-6a8ff165.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613055429-6a8ff165.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-XfsP3KI/r0KVJGpn+3ybBHk9XM0Js3FXytuzFhWQLuF51SvZ/29MWWQVJTkBcNX1sOSdMxrRLXtQxi4rz43xkA==","shasum":"9939fc21fcf959a54540a7cf118f877e64941e25","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613055429-6a8ff165.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJUcFCRA9TVsSAnZWagAAXN8P/jI9JSe3ywYl7Pch6ALu\nIhBll/fFsHeMi33pZHNW8Yk7Z/JR8qbsq/J8x5HtzwoLvfcgbS3X3VxT1c4v\n/xTwRL2bdbsiW2ZNB/76d04jk0NpQ0qx1lt4folUiiOV9o3RdZsmndT825q7\nL+2sHhwmcg2R3HIrbeA4lCzFYleNJGOoilyHix2YOLPwPMejynr0n2zK2P0g\nZx3yGRYAaq47gJp3mRS/25aWrEV62/sqd+wLC2+VSljKK15mQ2fpc/Ue0+Xg\nao8y+oRoFHKSAAjtLnQTE63ls8g2tBNDcyQfC8QF08rIIC1d5PiAzY2NScVU\nHLjtDcUFNeDcENL7tT1UChN9zjlq0a1qciI772GnKzMQwfvnNTjSNY7OT+hL\nJOwyElCI+8PmzttnbnyrfPQeXN8qTbYasPPuoV5bWY6YjF3m97Qnp6xdHVHb\nAO80X9ha2Ci25dTjWpGwHgfVOE3mAAOhyzOEmYr2xq1Uvkr8mc7vq8xuCAp9\nhYZGeEMECXBKvrq4PiOKy/x0YnAJMgNlBYjNCYZlmrE8wmCdBe/QjHycObRG\nT8yXMqvinna9Lq1BpbXYJL4M/EP2AY0ARk9LMhsMS97zWpf1OOohzog4VlPE\neSV/PCmO25dM58KzhRq4LS3Xj0v1B9ND7rS4pKD2UI2c2i+64hs4d9Ctwd14\nOQwk\r\n=2AYQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/zkqW8+f9Dqj6ObCKzlzLbVlpwo4KRwaYOt/e+nj9SQIhAILXXrXFVRek8J/fMWuXuSHum8Aq22NkhF6VbJDpXUuD"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613055429-6a8ff165.0_1613055748878_0.9615161722253902"},"_hasShrinkwrap":false},"2.44.3-next-1613057150-08014fda.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613057150-08014fda.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613057150-08014fda.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613057150-08014fda.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ZLKcHmGQJtxq7AkFfg0AOOz9HtRhwvx4WYcfmkoLIM10aIZxQHdgyRrTLkM4bfa5Hww0RKUifHtDUTloINc8hg==","shasum":"852f6180d8d9c34cb3396f8da8da48564e41fc04","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613057150-08014fda.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJU2KCRA9TVsSAnZWagAADLEQAKIxEwvGWw+W16JnNGNW\nt7DugOyPULf2v3TYVbCDCfx++Y9Mm3BkZWyvucSlZGh9CXYIPWRQ1rxOocSy\n9U/Ud6Yf8sGpBCxxlnI7tP6BhAsiKITKbFcZer3JJMcc7dk7AFrw4A1QBalF\nhprsJCJXWp9O3HQvU3yPPIqrzN5Bb8Ey8vIlF3wG+MzxhCZf5r40vWoJ8Y1P\nY77don3a6S2i4mND+vlwsAx38OFZaKZor6ZTWxJtH0c+u7BqYYWWMQ3/e26J\nbcaCrNJmFwXAnka1yo3TpgABFg+Ll89ENSUrKYWhsH7m3DoiIUA37pH7zzBL\nTFnEEjSMBX1DA5JTDNYj2dc6bYXpK/6niOk4VNCCs8T65rhk1JnrmXirw4pq\nMpKFBtLBkaqt6caIktlnMZ2H5gFZzgdvSRwwxG0W330Wt8RjnJZYgOG4EkvB\ncjSjrNnQOOwsFw+nOJEht8hTPZa3yA9uCPKuIyF0Hc9i9sBbCElZDvZ2qqL+\nK75zSQo2DMK5K0KqYsoyiGtwGrv7WxyC6BpdgNTKc0O/xt3fJ9C0Zg4fK2vQ\nh1zWy67uhiuLs/MRjdztMxljFal3UN7YvCQwwvbWJ1Fc2QyFYcGlZ+skqqaO\nbm/QZB0Szvkrkk2TptuvRSvxT7FLTUrNAYpcpZDKxEtKbNQvRLakbETu987u\nA1u5\r\n=OHoP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFVp2/Aw2/OSIWb84HQl0go40eHkuWR76OIErJNpCdUsAiBsOZ4R96ZKoZq30kAlVaqdwL6d4vnhezaqAZqey4bTkA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613057150-08014fda.0_1613057417656_0.3041813213231004"},"_hasShrinkwrap":false},"2.44.3-next-1613057192-bb30ef56.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613057192-bb30ef56.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613057192-bb30ef56.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613057192-bb30ef56.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-1YciCOGr9zUuK8CyZyVLYz18QgyhhrP/S1bPErz4BLys8MjwrJY+l/EXpJ753rnwFRzUSVqNpvoRysI9w0qlmQ==","shasum":"4ad43cf8ba7fe1dd7b1b63ace7ec8f90941e3645","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613057192-bb30ef56.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJU3fCRA9TVsSAnZWagAApoMP/3iGbwkSfwaAXfLZhOu3\nXZQKBl/MR39V7n5sV2bTYVueyhEZx8xsZOxRTbF+Kyp6fimF2ckwUrYTQrxZ\nuKe5RkYmBq5gaAfWdVZY3OAaZiiE5OChpJz9eqysymeL9z3CkXnvbqk0vJb1\nnDEjGuZ7Mmd2ywo9BAg8lEQerVw7qWkI9E+EV0PAUknCOv1DQ6PYt8sSKQA7\njyIvv4AyJO+N+0AFGufKqrt1mmfndPDZwGPIYicb7q8QcymWiVfhzu5mzViW\naqZ+nKPP2dpxQQQYp9pxaJQAi52udErN0r/0DLEvO0YH3dqzEbUlGIGLJDOc\ndMtJCbXUtYDvabctOdqrm1mematZ12Sj3PP8ODnNWKqJd8hs4hKyLzG2xnWs\nLIeThL/wTlDd/ZlrzvVhCQPkwA48jKODBq6XYtaVXLsczKm7VjE5/EkMqYn1\nXn8+3+UNC7fiX7E6nrEwNcLAyA2yNA3kJe6+owIJpq+LPcFuuI6xXgrMnpJf\n6CunzOC7pxnSY9UpUD7LF0iItS1QPO3XyY490tNDXbfry8tkwPFvDCCcKgWk\nGE//c6D21y4eN23sBNSIvSVJBlyzJDfpJEW0A9s0T1vL8Cf8vXuO8gFNIwB8\n1m/tkBqVOWpAiyNW6B9RoSaeFrwpBdjibsUFyiUNNWHpq2Hrf5EHfUV5xoep\nWdRu\r\n=p/SX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0p7yEOEoGWJW2qXE5e3fVovOtZRLDYQCvTVvcgw/eoQIgR0mSFEE24cDmFybSo0vr4CPYOp+W+SUllmmc6+DK6sg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613057192-bb30ef56.0_1613057503156_0.9546907608991346"},"_hasShrinkwrap":false},"2.44.3-next-1613064038-08014fda.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613064038-08014fda.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613064038-08014fda.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613064038-08014fda.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-UXKBhRErTGIFqR6cTKfeCoKC5RK4bVVxAI4DnMqolDMV9P3UklGSUci4JckweOBCuN213SfJJGECKtllsaZRjw==","shasum":"5bcfb50db1d925b13632139f8bf5d63fbf5244b8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613064038-08014fda.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJWiFCRA9TVsSAnZWagAA9McP/j28089p1Ed1vLGZTY3W\nuVCOfZrIfsT69ClSrDA5CkL5Zpybyrpa9xhZuKdIK6uHEQaaPwPfBWpqfOcT\nnZt939TaXZmlGjoYTj9jlCQJVWN+/reh/EQe9t62fQ6dcujXIM+WTYqEuMLK\n2W3uCI/Kopj42DpKeoxD8pBBUnu5FO6NwTC6RdkOnTLtjLScBK6xdfCsxKnS\nF8G+K0OXqbbag6cFEnYaKWXXLOOOXPpYdxMG1xdDtpa0fB+6jOZ/gkKab11r\nOYYqZZdLiY/jzgsdPcllC7hd8JOBTRPTz1jV65oM8/StyLYT1phIOzagghz3\nMCf6fbf1l8uhIRwIQq8HUAHou9g63KVgwrQwvKHJsYqGPG6ybEgtjjuNZplL\n4umOOsYCLWBWo4uLa990rYiAm5+ZAlahY7IYcpVXg3Jwdknt+HOiE2P8/iuN\nRa9t75rX5WY2MCrwnCItMY2VbX9wX/sxnRtrhl0a3a8mAy9Lrow1EiR13VJ5\nCb9Z1GWLxDvZeuwLyYd+49xvskpP2H3C3FizLeePLWvzMyEmOLFrs2qOJdlH\ng46GvNYT4VYRo8qNuV7BwEapp0nnrb4xjoON7ZSyeIyahSzshm70bPJZt/92\nG/VNd3EITIlzL8i2/2jTSjkNhjXq25wKdK0u1jUmWPDW/aBT8WiZwgIuLXyc\n9enk\r\n=hWHU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCKXIlyo/eDBw9UUn+ZfXke/x/ZjGdXMLFTsy8xNbrswIhAICN/T+IHui54JquFbVloYlfW39/M7DttfvxQmUzgp5u"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613064038-08014fda.0_1613064324450_0.5956572285173467"},"_hasShrinkwrap":false},"2.44.3-next-1613066991-b0df6b52.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613066991-b0df6b52.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613066991-b0df6b52.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613066991-b0df6b52.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-wjLV1yGf2qwwKu6l5TKJR7L4PIKNMBJ5GjmmVvfD3f3TMW6l0Xs6YNfmiv6mg/STx9+2b+lRDM5PytbA5WP5uA==","shasum":"4a1172797a9934fcefb7f8ab1ad591f4870a590f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613066991-b0df6b52.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJXQACRA9TVsSAnZWagAASGEQAIZJmVMgJjGCI8dOaWJw\nbV4pYY36R3a5QgZP88WaUJtV7hdz1VSEAV1RXu8aODAc9G/wQ44tvDf1fj29\n304pdoTP4Fqk5/omdLRqbN0fM8P7uJAiqxENNYXJJ+TQU+E5g4OvdgZfZS8c\nhYrBq6BxKppInxCkBacPQU2o1LyYobp4UQp1Pv5INMmX+Chfm1AOu0vAUCqC\n1Er7dSY+0HAcE5IgF4WtdtxZbYTINLoWv1S9+BME4LZ8pPnrZZUzwwT+stXP\nB8UbilpgnX0+C0I1FRZc4Avm1ilUeCj4fSZEhaCRPdI0e7C6AyLFUZ9D7SM6\ntG2y1ZR75Nv5/nrg9hpmZOUtT9z0p1fsFhZSstrH2Cl8DMcytxx6uldDucCl\n1BvN/4ZsEMJXvrweYxKwxz+FIraM8lu4zmXg9y49ZQhpd+EMcNYq1eghBvkW\n8+1gmY+OA3Z+ODS6uYaxAoKh4vLtr6x3BI5zjkMhsWaaN0sbtYgEJUeIQKwh\nbD4bBUuzHlqtLl1FuzhvuurypnTYiEK3VMe0XNFnl3Wl6PkiyGMPbXorB6J7\n4dulis1yhTK+Fih3fWFPQV9xInr+K5b5n3CV9l4a45MnMlLGqZGy7oKusVao\nD9l12KyrsI1Gd3urNErNti0ljcWLowIWzkDaIB+gx8YO50dI2EbtoQBLgnGq\n10Zb\r\n=TRc+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpcRrMcLNjF4NYkzcO0mGkSFFUdZ56E+7qT3H8wiLnhQIgRq71+m0UGayCXwiyBQKi3xsFYH0fEPzs5QIp0XqZGms="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613066991-b0df6b52.0_1613067264064_0.8218227852578637"},"_hasShrinkwrap":false},"2.44.3-next-1613067087-ff2dc9e5.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613067087-ff2dc9e5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613067087-ff2dc9e5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613067087-ff2dc9e5.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-vq45foNqx8+VH0CE+NH0hLaeb55EdnRNUTR0CCKYBbo5UIQDq/z4LTVYJolGeBymaLXSvpl463MWQvI61kA8VQ==","shasum":"6452b2d177be058a6971ed52ac4d8df10d4c6d67","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613067087-ff2dc9e5.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJXRiCRA9TVsSAnZWagAAOqsQAIbsHdO4WeSRe6FAavMV\nk/+VBLVQRiotzCOCFXwwq61G+HXKIg7G5khBh2WsZ0uV+xRdlPzvTuHowV/2\n8cuNIfHh0V4m4FEZBydkbwaCzgbmM7eidoPfYmR1TdeTcThID2qcULrhGp4d\nFMvOB2Le7yy69Zxv3xFb4yXtWbT49XLP8yM8hg+8yPG/B5N/msvikKttgY2T\nRlUxlsns9ExlmySOWMJqBhidzpbOlkHg3VNN5KtANMnk5lOmmfgkpx+nOPzB\nYMwAXr9gKI1cFmprkm1cY7YcG7+POvZ3ZFpEHaUtd9UQ9VaDsDFeZIDRDZO3\nkds9UL3vceLOrcmY+tm3Bv5qoY1q69IrU6crNTkNoO/bDYZn7DYuKLJpfJqY\n/Z9XBdSqA51Az1aIAZG3WV34FR9O4QDUwIdNx7Az5s4beFADuAqlzGGLGvUG\nGBM6VG0Rv6LclubN7uqk7MCSoAMpt5SjmZl3fKRGIVX5suh+2bH8N7JKfzTs\nJzHVhe6jRGLrGR6Qa6iwbVmNeHbPZt3dpFVQGwywMDDPydghr0t5Gi/csKHs\ncaIVkiUVbd9+m6bKi5Lb8ehSvs4S22Q/GK3wd1nYXvIAFY5OBd0Ldj16Sj+d\nS4/XUKhXssXEBu7okkDGogFyNU5HgotU8b4gZb+MrdoQ33wDKCajgTm7fxwH\nFJnC\r\n=NoML\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD52bfTkJrFnjo2SHAx7LJ0ccz8LuiShiI5LUa7B1HwuwIgQbnciSCZ8rQg2T6bTbhv36UyxUX4YnehBd3e+CuIfuk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613067087-ff2dc9e5.0_1613067362345_0.3256335747142949"},"_hasShrinkwrap":false},"2.44.3-next-1613067142-06cb6d53.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613067142-06cb6d53.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613067142-06cb6d53.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613067142-06cb6d53.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-kMqdbxAxiaMKx2/egNQ8r79uiqpmtE9vfZZ6S2MS6C0oy+QuDPP8jphT995g+74MxrofiA5JAdf6pXEtBKMb+g==","shasum":"057137c58529cd2ad4b3455bbb2346de49968d14","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613067142-06cb6d53.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJXSyCRA9TVsSAnZWagAAh+4P/2AFPjeJFIYQO97MnrPu\ncfo186i3z/x6Y8pc/YBFRj0R02CkGF+mjhjHHy6NLbo+S8odV4O7dZv2oTxs\nkhhCH90fPOLYS1NAmO/CnCbo8vz0K2164BTXgipRVyezutuBjALWg2s3ZV0w\nue10bIRBOfnlra1nwjew497FeCaEDzX4c+1wjRH+V79cU8FwigvT2pHGU2cK\ns1ZEHiX6w3iSkdeBzioyWOIqUhEFyQh2zZnX4bt4Q3FFdwUE3ADemHNtpEH/\nZ3v3+Devy0/SY9O/CnZMque3ge58kA970DmxteN9cu5Oy+zFJTgstD+UA3Dr\nQqA4LVtHBnjL7LwQRLSzT3gbjGgONn/23rIs/RH2nYXIGMoOsGII8UCXp4iG\n0qPtTpBmppsAGgFxwuh8/qQhM8/aXvBT5xQjae4j9XB63MesPKV1eizugCjI\njbMK9Lfj8Ek8bfnHdp6p5o1yKlCJGZgzKn5YzPziJFtG+ywqAKN1m8AGSXvK\nf3y3sCMcoXjJp1HH9rkA3gavZDHGelfyWxJ9sINfefAjtfwTFPH+awipF1qs\nKuApQLlTVhpb1rVLdFH4j6P/D0ccn9Z4t5p6sGvG225WmOtxKPjEz5q7Hf8f\nrUx9KE3GHSy6TXnC+Wcus/nNAJe0GVfiutmfsRy4OqFp0+e5Xe5Ih6JsDCst\nR29X\r\n=nMCX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDD0Ca87Jze6cntz8+BI2sK5+VR9AU/m4886ZQRnMIYlAIhAJxdReRcH29gAaVW6HE3wpnwF5DJSNx0rf+MyuFbehDO"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613067142-06cb6d53.0_1613067442183_0.28082657989685655"},"_hasShrinkwrap":false},"2.44.3-next-1613078877-3a886cd0.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613078877-3a886cd0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613078877-3a886cd0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613078877-3a886cd0.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-eHfJyIDc9ig0FCn1ZElQU68/4c9dWqEZl9/n3ZbdfzbIUQ1YyUCV5tlJtoZbR8pOxi1GGDwK3gawMovHCLY4NQ==","shasum":"3c419ea2ef6a8fb177b4220e0d296d1a5370cfef","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613078877-3a886cd0.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJaKQCRA9TVsSAnZWagAABsIQAIeLEx2Gcf7VCOqrST7k\nPoKmPzk3nyFMtjnauLyrS/wvbFzNBdo+AULcIX540zEIrXVESgGFCBwoI/X5\nnYe17Wk8n/r7ZhIKPOQnCtC5UMgf24IqcO3JgKBhZBux3V+rO7vix6iNPM/A\nHrdU0drwfVbTgqMgjGRWeKfRXgpCxgytzZzjGRXMQq0PVbFngiwCAkW2hGcj\nqVeI+kmtIQJQLwFaSBr03TVTkqEbMu2JGDgTe13uLbh3AHWrstjYDKox3vHK\n9DDWEFL0prTgT7VnJAn+vwZTqly37R4HHn99Ymn6DwDgEazj/tMYRbrA7YEr\no04Cflh14CHW5emEYggSUL8Bs/a0AH5Au/0GG+iOh1RiTDv8SNJ495kcgcg0\nZapbnwfHhj4oGtEyV9RqjIgaoOx0LRVXTa8F1zyZtAqpcyT/WTH696+yWyRF\nabyYrA4jqyXOEal/BivghhwI9D1zz+4By/2VfjDzn+PuVUvXc/SuIl116cLG\nfihn+rJewJlfrmiAZ6TDRcN9F3HSo+mQ0ftccstrHPpEhCaGl2A3ELmBoCIt\nVZ8j7KghBh8NX+VsAYQYK+SEIO+LjaopnEOvzU0+xIMgOcz+lh0ol40M2W47\nF8C5aDRfuG00E2tF2MDIsrfnCwxJTKm7UYw2gRsSjoK/rBZJfONkJqbS+Bm3\nc96x\r\n=iHww\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5yhtZc/dDaDn3yfZMHljLwzW0tbQjIbeX0La1MzvZAAIhAMsuV1EYFxDowFurAnvhLwpZZYpDfdbij7tBVJnaq5LZ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613078877-3a886cd0.0_1613079183316_0.703959176491987"},"_hasShrinkwrap":false},"2.44.3-next-1613081613-6b553f39.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613081613-6b553f39.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613081613-6b553f39.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613081613-6b553f39.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-YPoGRwfGQG3Ox1aal1/b+LaNWhFJlXKv+CxzfC0PCfAHHvYzXHgxqQd83T20I1ZdTML7pCwkfeMDpSZy38uPxg==","shasum":"6d184766cfac7e399604439fbd9e09295242928e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613081613-6b553f39.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJa1aCRA9TVsSAnZWagAAA7wP/ieJz43qwJr0+c0xr8pt\nMql/coJ6sTePNOddMQTbBZpWsZZNo+Je8I+RpHjnjsFK/LpH9H9a0QF9ohKN\nr48SMSOdbz08mbeivyHUo4Nid1cYrWiNyBprUyOZwROjmNPhT6ud5J+CezYR\no5IgvFUBM+rUxeqzbeS6TUcgZyxx7pgv90qKbUTwpxgU3BHuiRS3V86maS6z\n76xWbx+xFSSdzWeF3qaaUD7CZSIxHiETL4TcDcD0wFO84zrWNEKOP0wENDCR\n8xoXUn6+nnThTgsjAVV0gvVrKLWhxxe0jnMqB8ZFPjJkvynoDlk9iL4BNWOT\ngcMRzDpHTjO3OoH+QS5uMDxSNY3B+zYgOzaHdQJm5G86nMLUWQOxeWTLXMBH\nn4QHosEkNyX5HRoDCgS82AzMk+dhl9vbokRq+qa5CWkOi50oYSizipkoAaC9\n4YzaiFu35kKA3ifKy4I0ZIScPXvy/pmBzRVRzxIOWbt1HRTuMF6GPnEYKrVn\ng6KD36Ap0sHfzFjECGU8er8awrlrTYlEA1q7yvkM8Rje4qZqBWQglh/mlEjf\ndE1CXiwxW5O2WkbFQxYJr6IXB9CASuNyPAufVVVchDBEDLVIlbIuVRkMiNdy\nDOcNJ+hnYy8bDzLAh8HDRO9gB2aXGJb7YJSsNhP2EjXEjCIOg0rKisG3Xmv1\nr6s8\r\n=Hjp7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIByhOXX/eyRB5vwKdLBzXqXFLdm+oOpkXpyqZhXdYvgcAiBZlvSKgr+2kelp0RN8P1fcAPaQpJJKEXeo+VoDTcNrRw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613081613-6b553f39.0_1613081945710_0.6140224771435188"},"_hasShrinkwrap":false},"2.44.3-next-1613081745-5c8b4e67.0":{"name":"@xdn/prefetch","version":"2.44.3-next-1613081745-5c8b4e67.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.44.3-next-1613081745-5c8b4e67.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.44.3-next-1613081745-5c8b4e67.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ZM0W5p6JlUfEHeuTrUhj7c4ef2onLK07lY5hvWzL17dV1oLpzxn/ouCbTbNMqMCt5ooXBiTPXo5eET4Zl7FQDA==","shasum":"8a379e4157f85359dec11cd14136885715001d72","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.44.3-next-1613081745-5c8b4e67.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJa22CRA9TVsSAnZWagAAdSEP/3Cl0D/esFKJf9BpfWyg\nK551xTb09CZVJ8UJ00B8qn22tZCWlC9ZCW4PdKBKF44dVUBrd0dpmMyWVkYw\nvqmJ//yd2ltsSVBZ9JN2x/SOTMzMvWN6LnvfLe1oz09xwoyzmV5BmUvU4XAk\niRO2SVS/QacPNJtNGEes1qRc3DDh7zA0H09z8+fBjLFloWUwnTlebwG64N87\nwQMdbt1Ya0qwtrRRdTqjdxcXahozOXI6Wp1GGL3LIc2Djc9HkpWnH2X/qfbx\n9a5twMsdK+WQK0nfoQvBY9tS4UqQSETwnhTHljmr6mddJU8H5eN0/9BTF5+A\nD/wed/vUKwbpeYGCLuU5wTuYGCT4zEvfH3OAm0WrekkClP5QFrwUA+WpUAbR\nkzzCy8yGjXYsp+S3hYUzvmXbnyRIThCw+8DrQcVzjgGxB12rFMXZXgh6zSGh\n6sM2s/N4DVzN6LFTzV3BUY/VpiaZr7aVJkSvAkaYkbX7RjdjI7ClSgKzVn1J\nf1RYLKpZeiE+jCmB5fGRE7RfemoX+jmQpX/T+eFLS8YTc5ebM8Xd6o2t9IEx\nhXrSTwIterKA7fEFHoXZJuBNWFTGqflNn3nF0H91qg3xA/ZaZ4gNhHDuGdzk\nQe6AChnfql4LVZYzQKYIoITH31g89mIN0tauRSxRtPW+iLBvggMzwTxPQ22K\nE52c\r\n=aQWh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEUcqT0l2hkgX7Q6+ifGWhS+FbBra0HVfH9344Dhkm8tAiBtsy6P0xw3AAUkhjqrRqHb6LBp7udPXp4jXkmWBIVsJg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.44.3-next-1613081745-5c8b4e67.0_1613082037401_0.5577222321617898"},"_hasShrinkwrap":false},"2.45.1-next-1613085564-b8188f71.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613085564-b8188f71.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613085564-b8188f71.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613085564-b8188f71.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-tzU3SUX88SpkNuFeDWqlq6Z+wVlP1gY4jW0jP0qwRHk6K2Tvb0fQprwQoZjgPQ4ul9a6CPloE1gpLCF+XrPCrg==","shasum":"3d2767ed98812fbaf00c64762412940be1fe5ce6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613085564-b8188f71.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJbynCRA9TVsSAnZWagAAXi4P/0NnX8C0EkHwseYLfeth\nK9CAmTUeH0E3OAdC4i/m3XVQ5ObbXJLNOgf7ZP5ixFgPFJpFtFf12qRbLWyp\nr3ei+x6S5P/Cp9uDz3TA70L90QUv7B1BUl3onfAv46xlmgKWXSXVjur8eefJ\n8TZ1lS1juDVQIYYFfR+pA05U5xY1j/28RedY6btjtDclVsQ1zpNQ5vsl+jB/\nAkTVKFqz12ft70x+GDMZ2aFoRGRvElYoePdMHG+rMvVdq9YyJWgtKfCIrAkZ\nrYIzCg8+M8p4MxKOZTC63CYOBDyErQrH+wLWWAOSLg2oPHVeHIfu7Ap7kdO2\nhD1zgToviBd/zX12rA7Z5P34ccwxf6RXhZ2SP+5X7a+UpaWiYFvG3PzAJPex\nuxxoPWCTn0EAfm9aMzwltZqthz/85wI+S3Y1wXUMsYyMd4fGOYsdJOZt5rE/\nsj3MrqkCge2i84q2+67lIMiw8Yd8gstWl2sw6Sgh1f7lT35z6lAx7D0/DZuw\nuFqB8Jy8br8oW+navPEgYfUYraxSPDv2/wInu5Z//yIklwOhYI53qISIb3zp\ntt9pDs5FYgbp3RsRMZaIAlDRi/y76nRAJ+5JOMa2pf2VNfcHARX2aMD1i0we\nJ9oxarmk1pc8FkKALCYM0sxVtp0Pbtx79RC2U2lti13lgUN962ERR6YT+/rm\nJzsa\r\n=pDWi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICZEmr+q1tXQg0lREx0ajzW0/g2f6TfBD0K4qnwGwOJ9AiAIr7LOyUVFh0wFsgHkaG0e49fjPPp4u7as8llE5v8sHQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613085564-b8188f71.0_1613085862989_0.8721440169014016"},"_hasShrinkwrap":false},"2.45.0":{"name":"@xdn/prefetch","version":"2.45.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.45.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-GOg5Xg7F2U0JPUaGLZGLhCCxfyYLbT94FaA1q8NCBH2C24E4gbyiOCxGX+AOVZklwm+nrLQd00ZBGN1L/dZryg==","shasum":"cc53c36fd78f95f6e3a03f7b2749937edb3eb551","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.0.tgz","fileCount":56,"unpackedSize":138330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJcIvCRA9TVsSAnZWagAA2W4P/jOEapXLk99L/1lybI0d\nWUk8AzEZX1JT0YgE6KELGeopwpYvLHlAFLks8F/biz1GZwHgjnYyEAa3j5js\nADufnyF+oOHH4pGQ0ZLYn8du4Xf+HwtoBecnOoSN0BQ4MTrf6skNIAitqTRM\nV/wE2aJQrRb98sTeEJ0hQAqdBL7JErQtIh8Mf73EY9KjnK1IlwACJJe7Ke5Y\nQR3Dvgud87Ep6+E59dRSwovudR02VigJq8v6quwThJMaRtsqLkNj+m7TbrZu\nmnpctedVzjShbO5nVtJCWunZCqw1FS0Plgxnb/Aibz1LfGwc+biSjVZi6pyy\n9AEmQCOHn49s4Q3UiSPqYZxUnM4a7+e/zHati3XKssnAeWvDc/PQk9OrIWxv\nUxH/yi+7hzXS1h62CqiEb/aE6OZ5m/ZJzVjT3q5WF439oyPOC/pMLldrL5u6\nzL56Cj67jJ+H4jFQU4HNq+WxaAFVxAEvK4jw+aoE1UHLJFWb+Lvs6/pOYeKu\n6uG1OKwbgaaOi7IUHK8sCzOrtQii6iPp2qe0S+Y5HbaYsSWoEreJVInCZ3ZX\nlDgiDK7W1NF8jP4Acv842KVCE42VkHTRbcwcjni6yqDyAEFAHlsAvg9R3lmV\nQwqVqfHdEPd0+T1cI9cT8ENiCozEyTlXXOPhXid4EZ3HqzVvaj0naLN0gM0T\nds1K\r\n=Bvh8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIChaAwNjiueu0I3u4MEuTb8+0FA8Q7tuSki7U8Yp+PoEAiAMcgWBj2cCDooR1w02HNCS0rPEmyNhjIkN7jLN/VdEmA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.0_1613087279421_0.7850579417728087"},"_hasShrinkwrap":false},"2.45.1-next-1613129416-327325b1.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613129416-327325b1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613129416-327325b1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613129416-327325b1.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-7wzuGWBcOsZTkueBZZT+Hw5mzlRJPm13+dOwlXb5ugjmNS4qGtlLFKnz1JX+VQU2NSTdJXXukXO6NvSOKZVQaQ==","shasum":"e6f26a19b30949baa3dbc59b1d3c9bdb16d75687","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613129416-327325b1.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJmgCCRA9TVsSAnZWagAAKvQP/0OHXYxSvMI1viWWAmIF\nROu/jeM9BNpudLhuJBY857KQKlmRM6htU76h+AgtWsboLru4Ey3E7bh83p2D\nIWgYr1uMB42HniDID8K3bq2ojg+Bs4S45pWEnGAWMhwhXU1055XQXIoVOru/\n5QDO0WLpGVuXDqjFueM/4H8SxLQpF77jt6xWt+OVVV/g6Kr1uHAjwkKiuDiu\n+BCbIDilPMQqdZsHHn+4xUQJGtmzxjYmgdEfIOxprTmbKHctdZmFUKDjWDfN\n3/8wQhUfV7Gmslj/TIUleTbJHRrB/hPCqK3ET2rXEpPob8cRMbrzU3ODzgI5\nnRbDcKU8tgShxaLX4+1uoqy9CAlN4LXJrf/Z6zwjabQFe1BRmrWXciZJPzse\nIkH2eikIw5gLg8z9Qx9+RvtGCTCQdrTnNu+fCCmLijt/MfIk4uOfOC6HGXY+\nylJ/mHV3C9CF74Acl+5p/sv/06GY5u2alzA8UN5DewwsqhrompLpR2G/S+5L\n4sfJh691A4UY1Iu08PvlVh5z4ApFQXzx3skSpn8utRi5hrcXgowhCrtFc65U\n6sXWWY9SeHQWGotxA0VRUpMppwojjqIG3aa9YKIfz1XLgJ4zRsBRUBL12lxt\nxMSkPQvYvGbWMPqI+RvJo9F6X+AQlbq1NbZlghtquwP7KIZqElBc1eQSvaSN\nDVib\r\n=zCtU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9S8xwMbUoUBx/gIpNa6l5551sFYY1/0Y6W1MtjCR6MQIhAIPKEbiWAic22fDac9QPx6KE+InuSWoBEJSREXxUr0JE"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613129416-327325b1.0_1613129729391_0.7728775325248809"},"_hasShrinkwrap":false},"2.45.1-next-1613130108-f576c2dc.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613130108-f576c2dc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613130108-f576c2dc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613130108-f576c2dc.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-MZAn70L9FiGLLUJB2f18A2qe3I2S8S4mUqk9Ybvi8KSVN0SrWRgkoWHrvdlkur1qAix0mnD5FZzazHolJt33aQ==","shasum":"d6cc5376de41f4c2ba14ae0f94bf55fafb51fa04","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613130108-f576c2dc.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJmqTCRA9TVsSAnZWagAAy1AP/RPWcoG/FR2LgxJk0Pjv\n4lLsJLwxzfz+7oyP5qJUtxNn5ZHri3YofQV5fLLOSWBAIzP1Xja0SKJz1Ifh\nqvoiFznzdN3AdEgaCzWMuoWfg1dzbUy0o+DtfRy/DEY2LzMzxGTTII9S2U9f\nC3EkZxFOl9ylS9BrSjFWa/ZoFTcf32dMhMREhVcARrH2a4jxeTDUdh2BZfPS\nx44HwFhIu4GVXq6/O10dr7ECdIDQUhOzHJoAU5k416izmezE0zBumOhGvtfU\nILTKZtNQYxGfQ2Iv7MxUg3+23q7yDyWBxd63HOu58FTHi3pndKmOqU+uWyUu\nqIzeQd9zGgavBoGkB4eYuEzKmxWe55Of+5hN+2nI571lWETEoX3g2yglgM0v\nrVtssqDFVqUADm0eb6Fozt6mZxQN1YQe1zeyVXuahLO31Oc7cYw9EqhFMZls\nlVeTh6zkkrYL990Iml0HY7BTX0kYW/GLJBGkIZ6Ssem1CRJVvjL4ejfxFOHf\noBHt0hMmD9HXQSNg0yV9UxPi4Uki9r8nV67vGTD5l6OdEq5biC2BzTxDVwux\ngvLCiL//wCwR69hFfahbMzF2PybexnaXOPYn/XszQqd1O2jGtM8J9FeFhpPB\nAbSpDxlPRjJslWz1Zej2G2rY/hUafVXXuSs6wNdYcccE5OLEpV76Nbdnp9Ht\na/gl\r\n=uStq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDBwgyDLXjbLd2VWnMMGHzu+PfnC/nl+G2PbWaDEUm8wIhAPZDa/SLlblLiUKKeoyCvp6TBJkNOPkedjen75MsxcYf"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613130108-f576c2dc.0_1613130386522_0.3027662674515441"},"_hasShrinkwrap":false},"2.45.1-next-1613131797-23e16f46.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613131797-23e16f46.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613131797-23e16f46.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613131797-23e16f46.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-rPnil2XsnTa96CzMCkwQVxIwosMQui8U5o5PZRtuEeEgk8JEzhY1aDXXP4hkgKfPdiNoPNyo+0C/AqNe09QI2Q==","shasum":"68f81d4b9f599f1c4927a58b0316f8817b870d42","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613131797-23e16f46.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJnEVCRA9TVsSAnZWagAAbkoP/18+kMg7y32GGxhusM7G\nCXVQCAaSR3Vc8np3cIDOeEK4M2r//C24I8OwtUVQhbA5Dy2G938xGdR7PTgs\nWBGkTJdqj276kiR/1GDocM7vqCBxyotG2wW8wGDrUIE+1zY9Vsod4dCwdrnE\nn80qLPPdQO5huQVGGUzsC3Jqz4AV+fJWl6Sek2pZcsFFYVQr522xZc3lemUU\ncPRxmHB5IMawjmkuTp2A1nT/7ptF34zz95MSj6l6VdXLsUDPaRVeKQE1+TzP\nZSE30tnjcsXIeqGrHe8R+OBpa1F2NsrwfIp9hNKEWqEeHfAJ3hgUIPPYMEuW\n6HNUnWlyDkOzgTCqjVwM3rCcOitQn+UpWWfmzYhiQrd/pAiSbIdkWSTVjjka\nG6yHre1taAmONSWizE+VtHBOT4xmOz978ntUqdXJkBaChrLZrzZkUFAMPQrp\nDL11xaFQZi6W/t04aTiI0WWxq87LM2t1JcOt4kCtW6PVpsGSqLS67ceqtZ1c\n7EK+2PgtnWuTzHQxYlsE28Nugg9MrsINsRAQDIMt6jI0XCUJzu/olSrBjAD4\n8FwNQcNh45dAy1FYsPxiPbdLzW7u2fYtYrxOoYfLutfJSpdW8KVA3X4ipipC\nt8EcptyAtAdVwarU3eUnvXgtzbKTf9AWuWdp3ONhVu8I510qdKoyae6YPhPk\nWP4s\r\n=jChh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIANT/gj4BguvsDHCmqEY7EdCRds3PXFIZ0chbtKhWZSAAiEA9D/he6fxcrsZcVI4Pqc+MHukiRQQtt0Q66kFejxaMv4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613131797-23e16f46.0_1613132052814_0.41462941446879853"},"_hasShrinkwrap":false},"2.45.1-next-1613131853-50ba0438.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613131853-50ba0438.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613131853-50ba0438.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613131853-50ba0438.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-kWgiNXJ+wu2+yZjQTdcg9mK1s7vvem492faVWKGWH2IX/aNETsauvD6objeX7hL++SYV8vduYEb08/+6ZAZbtQ==","shasum":"e8692ba0b0f37f733baa92ab938c8de52bc61081","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613131853-50ba0438.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJnF7CRA9TVsSAnZWagAA5AsP/1b7jE+XOAt1W7FveXmx\nrJIYtko+CUzVaMHakAgR6YAzNwCShFvIdCqA/XkvJ28Zz9wo4t4FFE5QQLpe\nPKDRBvvDgle8zV9BVGI0/LQpMrY+srvIdmZfYREi/udW5XEBJLn0UG9rMvk8\nBnoIyxGu/+M2trsnGgrPNFdWtWnwJylmK/h8fZvS0ha6ZFMscqqaYSFYBO5g\ngD5PidXeFsIQgA5qMSuLOjTZ8Ht/PYi+GV8Vy7jCNKT7wSumxhelZ0hiVNMJ\n1Xnv1oUw5PZawOgx2p925G0fLExk6YdVbqCH2nI8+NxSbicj8PYvmal9pfaT\ntBIztmHvrHi1ZYXNgNnQ69URn/GbASXqVYPA1aq6KjG5FbjBg4kDstMk05pK\nM8RE2za8Dm7Oyv0SZAlKwXfnX44ptP4FepNTb4UkS/8Ilvri8x6FX8yj/k7g\n50eDB8N9DQDi7VRd5GAPjqCMZWguelYGb0iBEY+dJpB3XDJVv2aSvAS6iHrw\nEXrekKglS3550H+6d0Odqk1HCkHnHlFgy3JSJFIus8W3p/LXo9Ea1a/Ih+og\nmqMNE9BiQsRylNXLAmX1FLsHystUjDMuvbloXZ3bJSHDPckT3EO13PBdJ3gD\nhviuQIKCPJq4D+uNJ2G+qAFrigf9UnwUtCwZet2qiV6O6BR+nMsy4iUg95aD\nPDQp\r\n=6e2W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDwWdh+boIH6ozpUA9y8gFm5CNeywRBgL36N5w38FCkjAiEA++I57EtlRk9FOqBV/IeUXlEneN+cuhUH8wAgEgRR6co="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613131853-50ba0438.0_1613132154527_0.1248213572910486"},"_hasShrinkwrap":false},"2.45.1-next-1613132676-78ddbd7d.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613132676-78ddbd7d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613132676-78ddbd7d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613132676-78ddbd7d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-jIFG5HIIwEMZ2qwKPu/1iRS98WCX1+IIpVf+HJ6uVFlHLVfMTxUgqRYLYK0dhRCa4q0+kSqHpo2MCAnIH8Efsw==","shasum":"f0208faef9f3f84fc00277f287b38688d9f5197e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613132676-78ddbd7d.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJnS6CRA9TVsSAnZWagAA1DEP/32Szs5blgtst8j6F+EV\n69dSen2SaOjgBavyS335RB6Ss/4spShViBJHvukLDZOzPVzTnyYHz/zOHt1o\n2PObYXeQhWlGRK5sXg8rxDCrVJD8Zsh/wS2SHkBKY4KJ1tpeDqcOeAq3r+du\n3lp+FLAMcJD+7+H/udzG2SvrUer6/488lC/LYsAh8XQjcuajej8f625PXjY/\npDYRsvxy5wgsdeoLtUJmTRNzRlPbLnLrGNRN4g3kkmDc9ODz5ocZs02IgSql\n9SGYcn5N9WQLLYNDKMDQyjKw5X+ndeRPXXgQea5Hot3ekDJMsNX2AKmD8z4l\nqPJ6SAyWp7t+tteYM9Zj+E80pfK5wsYgHEcZveBxpzopCo6In4r0BwEXVMci\ntszbRcUAS7+P2yznvoJEEwW6cU3b/zSH3QJwAfvxBlnPzrmnWpz2aj0RT3M2\nuQ811hJq/5PYuiOQjefGkZcGpGCkD+qstAuBs/qplPLYLwuPXWMFv0t0M9xW\nI+nv6FDQQZ3rnOt0DFVQf76NMsIWOX7xYghl0Ni/yGBuKWXaV7zFzAkxq6Ly\nEw6SXS8kx+v5XbDsXL8+SuV1sMpLLirIcd/D9UKNjhpJKR/XVHet8ENkciwd\ncj1igbizXDmWHVOruFuZ9U0vgGYbwZ9OTtF5sjTaU0x3fLacxPTktZQoSrhx\ncJGK\r\n=tAcJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHU1KAry2Qnw1OtiueetqIHhV/fq8QrK3OP4yh2h7JnvAiBV+YoyxCcrsn9BN0YLgd1lkyBLbyio+dY/otfFHXWILg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613132676-78ddbd7d.0_1613132986185_0.6546850710126828"},"_hasShrinkwrap":false},"2.45.1-next-1613132850-bb59023a.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613132850-bb59023a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613132850-bb59023a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613132850-bb59023a.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-J0PP3nSA2kSZjtKBKs6qIY+kEUixpUV6+asg90lf8ZAcTxwGuoS28H+jjYgX7Rp38GwlR8Owda9HazIoG7W4kQ==","shasum":"0af4655f2baecb5810845d3cbc3e46dc4bb51a94","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613132850-bb59023a.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJnUsCRA9TVsSAnZWagAABfkP/1PxU0hEevV0icbGcLcc\noMm5j4CIGdU7M1vj/ChahaRVyPwOk42AATRtkkF6iG9xnRbR4Q+4whVobepJ\n+fkuac123z+M0S+eHAPQjer2ED4wGLaTy85vVz1VwbQhfLP4spVYDkhNRTa3\nvX1KfUWrTL2vfrB1G0+B/KQ2q6r+hzd6BzY7kgtaWA6u5XtBFUd3PVo+Jl4a\n4gAkKpEpQi13F0VXeF2rGLJbBsnOiFv495sDPMAS/wP4ziEH8uhcgw5F/GLY\n1tOM0jahPHGsWAq4BspE3/eOGP3lqcmIo2TJtEXLGjUOV3hTI+sVRv/sCuG1\n1uaL1lHsDbijBgTR5LC9+xDc4e33g9bkQ/gtBfTqypjmxCX1Foh8UzoBiycg\ntaar+/PApp7bxKY2Fm/bpU6VsJB8As6IqWxC0FGgX2Niye7zoQH4QEHERuxA\nJolq2SCRtGK/tYvmtOHIsnrOGVlj7ePNYOSgWozi7oyU39KyH3b7S4s5jopC\noX1LU5br9J4YKw9WIuhDzA8GldCeUjGJhXwyAKFGmU7rvb1AV7MmUkmCE8yg\nEOnwCd7ZEM9ZydM/JMQ/uyKAgYDOMGPB4UNJnYOQVXrKiCyrYWUWs7uaebe5\ni1DpX+5udYbYw9sBznC1OR9WLsV9WSl9H/sKbBwnBUXnckWeRI69fiOMDBle\nxj+6\r\n=pG+W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGOGtt3PtXBLT+TREtZTGwOtWtNPc5V4EyonuXa0k6oUAiEAz7uSy8t2i21RW6C8ZmFmRAwXuqnC/pm8ZQqXmKn1kuA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613132850-bb59023a.0_1613133100133_0.5279585615158693"},"_hasShrinkwrap":false},"2.45.1-next-1613136284-bf45f952.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613136284-bf45f952.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613136284-bf45f952.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613136284-bf45f952.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-cd+wwywLfyOnB52JEgWcrrD5E7Tem4vIHGO0f/JdYRUJ76AYNEDMNKze0g6G6i0oTWMECxBGl3VOpofXyLNtYA==","shasum":"db705ab6d90b6f2f70543eaab23dd0e3fa836d22","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613136284-bf45f952.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJoLMCRA9TVsSAnZWagAAfpAP/0mOiVIRiFsqVP3l0ifh\nxy85IDeuxYwDsC9G6XTH4Ck0Qvn1axY0XD/YHaUlrAp4e+2vI6iM6aYUdy38\na3GNWzT1NTdvFpDJmVqqfQJz3ZfH1km0toGvrmr0JPNZRAOI0y0AWZKaGXv2\nFFER5W/nwaBQyZGbKPVgXpF27ZpEolVGZOUn6rV/E+TAqMTfHHIeHzF5GEur\nowjuFYzbpcNWRdxdmsuKPwZWoVu5Ja3cwWgUfYJT38Bm17MwdLkNP0HMlPAD\nYoj5KKX3nu1DUi/Kh8Kl93OEqLKjRNzK2nU2uwykHdPcSVsxIlf3apJAg+Iw\nx03u/cd7mWyhtMaHN/F8HxiG+oXq3u5da0VUBW5TzChX3Hrl0jF88gp2pQ1k\n5HoUaOlohwUqbFk2l1NM+rXpNlFU+26iYBo4Ox4ei0vzkbEhi6IJqOUzAgbw\nthloaFni6qcSPHgq9Kn215g6pavOx7Kq56/lsERcMbxqT6h2XnHKvnVet3Yj\n/WT0EaoI/KiJuMrHwFgGyFSzvXpxbHl2Gwn2oSG3u+oro7M8X8/7QWzqTXIh\nfFme4Q7ySNIHj2tZQG5AyjPCsZ0aH4xUS7umhY/le1EeyLO3x5+DiTTucB15\npPMBjyQm+QxcaNbK6XrNcQ+OkRoN0g/2k1NulKnVcuE79jSTnRC23ikOZdnh\nZT7v\r\n=hyDs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB8OhRiWcrDiFeiqmT6cTypi8jw8pzgXUzQfT30cGSoTAiAnp/BwMdo+nPgfuQrhBvUdg3It2LWWnfjpuWM2dVTl7A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613136284-bf45f952.0_1613136587857_0.9424668783457366"},"_hasShrinkwrap":false},"2.45.1-next-1613140344-096c11c2.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613140344-096c11c2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613140344-096c11c2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613140344-096c11c2.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-32lCtdnKZd5VYuCnmX4cOCKwHSR6Lp61KkZTcVDWRMtV2bjqPDgZY4FHQ+2b2oiEtY10bhO7rIWcu+Ts/BM3jA==","shasum":"be3b8665127afb3e4f77e1b7841dce39bd8b93ff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613140344-096c11c2.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJpK4CRA9TVsSAnZWagAAEjEP/jXmFB23ankB11VG67/W\nlZzHi9VmOMwz418qmRIVQ+c/GJklNbHB3i/UgsnamgK4vnInPqbjOlV9VTSD\nnmn1Kt4Po/+K4sMSzeXikYnc5ZgYyiZfyHlKaKsUOb+5sLdgNp6tQTp0RAV7\nuuzSR33lrzWL1l994X/ivtR0kJ2hSeSBfEWvpB5G+vErmedhbt5utUczi2zu\nqw3gfbjRcX/VPFq15ET1xmKz2acVVOyfiHWk6bKNTUcx2BrNpE8FYqe3ytef\nYusDkkoFauaUDBcGpOQlPOYqj1TR4ljEEknoA8pVTR8LOOnbglB7pMaTcUAO\nyidOBmnmoUH8cRQWMgXPLC6JHBTtP7RaduvAbwrRDuZBVbd8BzwgttTJ01QA\natiFLR3Znhh/TLuHWZe31i15YfPCdKJijPMTFYeCJnO9Zc87Cc0NnFHe0aB/\nLjPKE/qxTqlY8oIBvlfrrtCQ4ukzuUFSdJJFmhxTGKXIoUSU4lGXEf1B/It2\nxT5J4ES3Ar8vnvaIpn53pKIalYNMFyouvMLdrSEhmqedGEE85H4dEf8LT0n/\nj4Jq+XT7Xt+W0rUsrl2C3k5XdECngHGQz7lKxMlfscrO+IZAvLAnH9+AV48/\n45UAPpY4cmPzFHqCXzBAZsqgSzg7pFIlMuwD3jXy/QVGB4XcPnCauf1LNhky\ndghI\r\n=vgvC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCD/NMvgIV5/1pBH459MorcP1Pajy4xF32A2vtPAa8LVQIhAJc55cHh5DPlAharIYGruRRsdf9/ooyzMZxFGJtrz5ud"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613140344-096c11c2.0_1613140663569_0.12113702844522534"},"_hasShrinkwrap":false},"2.45.1-next-1613153741-ee225705.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613153741-ee225705.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613153741-ee225705.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613153741-ee225705.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-56oWTrTtzEdDJhOOGNBp0ifLZVkZ+l0yaKMkyMz2YTWLTTy90NlhMECqgx+qn4MNKvcPgRG5DbU/hls+b5hqFQ==","shasum":"23d3c272e0fb7761cfd2e7d8317607affc1fcbfa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613153741-ee225705.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJsbyCRA9TVsSAnZWagAAugsQAI6dyUDQKIee8/DnVXN6\nKz+gvui6RRncz6x5dqbDmvCENditEkFZ8H32XS2J2hBeUDY6nU60TmA89PPu\nSydVswrB4PLeaD9fUTDZwfNr4xzEIdHDI8s9ioPwAwPODiWCUIJKRWDb+AIX\nlt2S+uy9gnOA8WNQrOQh9rEFxpLYI1aYaeT9bnhlxDRhub1y75H5OJALigEz\nlKPaTHDx2a6or6KyD3KXu40DQTFEWHJQKDJqwoIG+SEuedRNRAbnZ702z6N1\nxhkPSG0NLdoCLPCk9K3c7Ivf4sq41iPYQWkmgi59GlfvLZuibrwtuEvrrU84\nAuw7YpNyglEdwSQvF1KVy53O3g79d/W3BnKYBT55d0DMGtzUZbUsZRn1gG/F\n+9p4emSmGcCoxEwMTturhCbJ2ptRtdTAnJgziPy+76FPsXbXedmX/FsnqAg/\n8K+LkLzVSgNFmuljz5kLHTut/q1wzbn1j+agKUnIJkHp8SOFVDsK8DovTB93\nGZs8Wq30yEupcSNfiyfZ6WbtjHY79Irxp28Cu1wa3Ti9b6z0SGXQ/uhHP4fx\nmym3ecfekZdVqWjovxMOOwA4gIzuXIiBvpRtTgnAUucnYTQVCobPsZsmXwVE\nbpmUJwC2Yhg6aTd+yy5Y7+n5na8s1Flvu1swLQsgkQmes+foubFvME+QzUMP\n4KAI\r\n=57PV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8jpWlWBWeE913OTVNBf18JYKwtAr3yhMbmGEwqSHeLwIgJSJqNWkp12XDNt6P0QvoFds+scZeGxHr9/772lGGQ5w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613153741-ee225705.0_1613154033901_0.8578463526789761"},"_hasShrinkwrap":false},"2.45.1-next-1613159387-57e31741.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613159387-57e31741.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613159387-57e31741.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613159387-57e31741.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-g/VbyPPFmgVAcSFKdCraq1BPCKe1uUNv77vM3P4AN5+eOYX/XDd7kx5CNd2AAO+iu5q708sSPUxYyE1Ox/9iQw==","shasum":"a430519988598f931a8459216f0c5a734c4d3d2b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613159387-57e31741.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJt0ACRA9TVsSAnZWagAADMQP/RWtUsGhJZ8kZ6h3+YJR\nVjARcjdHrMbICVLlvpYF8vZ4JBN4IKBBBSjGi9OW5UFRQGCAKP6cujp5g0bY\nalqe9/x8LoNLGfCwN2fU9lMJzXhhPFNOwKw7whfZvd3V2rg9boBK7GgxsJdq\nzUGNuiBZhTV39dOmMbrBbhax+6Y4cT2AQHuDo/hPm8b9hFj0aL8QpA2Mh2AO\nsaibQZQVMRSpX0vba0Ug8sDN2yYScYwWSmohD+L8zrb81GwSD4EKtJ8yQcMy\nWV/6fuNXOG7CeCc0Nof8FNi0GziJV1vxgZnkffwdHiLAOxOL4L8SeiK1eFQd\ngoSfEF0cbusQcTOIEWPNafXEhp1b+Eae9CRh9k2Ek8VmptQ1daLCBNTuYxfy\nTmTyv1P0B4d9mLpR75meUpCXC2/Uj9y6NEiK6gzbJUCoNePhl8kcHoUV4fND\nN1/eEsa+t4nHcFhC7d8BriNmHkx6fldDqHy6HK4NK4TSmhICVVmddyTFo/uS\n6eSnpr3qpPMSuuHvbMd5t2T+GmWusdfN1NgwTXKwYNrTs5tqhM/XZv6QpA1C\nzXwrKZQoEa+eamOu4TIftm9vZc5sY3gNnNrbQ/9r2LIgIP9jOXGXgZApzMTK\nO9U93PRhuEl77l8bYlGG8HhYsBXdkqVTB22fK0Y1J4RjbwTDXQFc8MZ/XbQk\nJCiy\r\n=Pbno\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFckWsmZeEdIw5ZVZ8BKlZUQmCuhyhgxJ6BzM9+WD3V0AiEAkrGnoiM566qgIV9HdyrgPloNoEcStRqGZVFf+lnbXV8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613159387-57e31741.0_1613159679909_0.7991683516331518"},"_hasShrinkwrap":false},"2.45.1-next-1613164441-3bef0dee.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613164441-3bef0dee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613164441-3bef0dee.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613164441-3bef0dee.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-bBFxkkzZQJnh5y5GoZf8MX/xMuQ3U+7TgXNg48uP3aoaQ4/Hbrq11AD0BAFzEC3U+pvt2aGkSd8NcCGoV3TpJw==","shasum":"1783ff86e45fbd8b0d05f87fbe41facc4e879b2b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613164441-3bef0dee.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJvC2CRA9TVsSAnZWagAAmzwQAKBPAXXtTI+sxKEjJMOh\nx4oJqX+a0rDcjQmkHeNCPG7TXXa1hOpo/40Bqigy+S66h/YH4iFPRSjYr7Iy\nrxCdL7UMFbXiifG/cmFkZLPrUzC5PSa6WrzA7WjhoCW1jBKdwqZy81rom239\n1/IYkhDuBit+O9T8m6QBmUslJNSN+swdfJmynM7uppqzxwMgJs1b4Cg+vdkw\nPtGtJQ89qFsPQ9OxUPFpyM8niuIlNRIQbd9kGVc6H2GfZFF6CncUzwLgj/0F\nirBByEvdQnS9rUlrbrAd8ouTC184hJQQA7GSAzlQcFvVlQhgt7KfJxqe4atL\nSR52fXyzU+P3mA33cM10mzUsIuZnw0Nm00l0ymjQjAb9gJLztkVSIV8qmSe/\ny3dqH69gZPsAsCEc6ZHsGbBJTC4Tnm6L36Qc/8K76/LosNtwPhtgefxWW94p\nAcNkcp7bs+K8XpyqcSYLJGFsX7QOmnw92LXFGcswLC8BOYraNBSdaWi/EtbA\nFHZBr7j/hjysMdGQpL+EVZpFZtHkUAuqtqOMsvsqnefdoyS1tW4aeWS4eFKM\nKV3QiFLMNOSItPk8Noak/CAj43qvU1H3O2+PDbiUyjm0s3Nj9KqMdIcBDgKE\ni0fCCXFg/l1ztmw1M8NX7MaO2+mepysl47Oex0pe8DoD7Utorj/tGIiAdXcK\n8KAv\r\n=Yzxa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBH6DeLWrnhIlPLyQNvlHCUCXJEzfZdjvUGEP/RY01R3AiEAlsnje2Psa/5Uvgp4j+xofAag97SrDaYLGyZGDsUWgPQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613164441-3bef0dee.0_1613164725936_0.7507544808444342"},"_hasShrinkwrap":false},"2.45.1-next-1613164562-c3da7def.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613164562-c3da7def.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613164562-c3da7def.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613164562-c3da7def.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-RtKeE/67XLuoABaEs+DBG3JCyHwUsfrmYmPYNyFZHJoEOdsG+ETC/XaNXAC/c8yUCSZ1EiLz8UXCJBsZH8HFQQ==","shasum":"b6910ff00eb00f934c84d9da1df39b8db6693391","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613164562-c3da7def.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJvFKCRA9TVsSAnZWagAA+ncQAIZL9K8lP0Hx0KNK+4jt\nKkxgWr8CCUZ2tNmL0t+r4q5pvAOs8wubHRjaiRz263j7HwbiQqvNdfpA8Htq\nO7TJkt0NzXKsGeB1LmAp2d+32aTUh2APC95l7fL9rw2tn13ScmLjn8UCwhV5\nnFt5ljHlO7qKea0zkAZBnXnbUYJwOuKNiB/fvXVldpQThIUGuehMlvUQ11bh\nignLz16ynNaDF/yGSWuJukWaaO+FaKSFb9aniS0RYQUuQz0amDmYacxvtCFB\nYK/bHunvgl93snkMriYQXIWTIYUbzx0Rgmcbqnmt/ydU+neWiV9iywhyCI8n\n3150VY+Hk7U8zxt9iFN/j9LB0+57+Te4VamB0iezd6G+ZMEPh7W/mMDy3FD6\n096c6/2aeebTP0j1rxZe/N4pWIMs8aNRVOQ/cqKHWKansHtA9are29JD0hKq\nKX8vXWsAPZxXJSLs3CY6112CCoPC7YJsGyLYPOH4tTWLw40pCg1YqkvDtHxx\nJJqeTarKdl7tzU3FnHNTgrr8frS35JM1Q6zmnRghjG7cpY97/8T/0nMmN6PM\nJVS22VFIMzzXSeMwu+G7urKU2w/ObrrTFrfxbyz0r3kNjSHUDhmN2yziskUv\ndd3RnrFo3WFidLlCR5YG+wPNNMXhXPL3EQZRNH/nyCyUcQmLKii13XjOYL/B\nOfNM\r\n=QWEX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCM73kDl4TTxagISfI01sylzI1sAGfKe0w9eIUS91daNwIgKW2zRwezYir5lAWHEwcRNVpLT1O2bodGbZQ5qx7OvAY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613164562-c3da7def.0_1613164873994_0.8729587380227486"},"_hasShrinkwrap":false},"2.45.2-next-1613385527-02cdbd15.0":{"name":"@xdn/prefetch","version":"2.45.2-next-1613385527-02cdbd15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.2-next-1613385527-02cdbd15.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.2-next-1613385527-02cdbd15.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-rFvHw3kfbbxdsZdq/sKqXJLInt584+6ZmNSC8uUykhXud9I4OjP4bF26JSPCRRWCWCs9WY1FZKgUg4mVFPgrdA==","shasum":"0637e698a569e346c339e4f5f658ceb2f033f981","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.2-next-1613385527-02cdbd15.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKlBqCRA9TVsSAnZWagAAtIMP/2u85ZQI5yElKn9SwwFK\njLIlP9TPYq5FkvISfjgkDmTQ1N0Hc+Kmwm7qdEcYWRSU6Xg1ZtDfG1fXNDa9\nQIK4cXrvpnDcDJE4KN4rnRQI7SHqUKo5DFrs/+MftIv3vGbbRIvVFtEtAwfm\njK37NI62FS5BPnHbLy44P3+CXsE+kYw4+LtuQ02NZtlTP8PUPKLFwrp7F/6a\nYB6h6wO+3/AfypLypxcuyTBIVdo48jHsKKt7yegTQlgMndWTMTTwJ4k0cfEs\n+SF5l1c9s7ixEXLlEXyEqfokSO0RZq9/k1NDoED6wPjZrgZtqXfZPZwgqcTY\nyMjSn9RiS/CRTG6j5ZkXoUx8NBPIQMotKWd5cXGNue7eKT3eulTGTkzr+7Xf\nWIJMe40LQINNlzVVhV75qneJg4kYlLOllEmW71Jo39JtAcNIbj7cEONegPxE\ne9C6VDlHICxn0Pscuc4j3xGSKLyQzQWbSEir0hQ/iLh6t/Bv2LHHN9cc5OAg\n82OhPeWOJ4wzFvrLBpRQegjToBacvI24f/OnFRm6qH5BRGS/DgBuB/xsCh4t\n1pjC1ErMNaVqOXr5dJNEtLaZ8MZCls5GyX1+Fu6hDhCNAQB/70x1kPK9aCfv\n1ukpymTtB+aQJqacb3cAvMXF9Jx9fzmgmAOwB4yRK0wef0MH4tVkngM3jbQI\n9a+C\r\n=AU2J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAuFXWeZn2TaHrk8+t1dVNg1+BzsMfzMi6oU2AjZdFEoAiAzeCWhWDxTEdsCiOlDPzfry42O/XyV+HVokI7EmxaXAQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.2-next-1613385527-02cdbd15.0_1613385833565_0.08776600383018018"},"_hasShrinkwrap":false},"2.45.2-next-1613387061-d69a83e4.0":{"name":"@xdn/prefetch","version":"2.45.2-next-1613387061-d69a83e4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.2-next-1613387061-d69a83e4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.2-next-1613387061-d69a83e4.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-onoH/dwc6AZ5E44XTV1nrYGJam6qUWDWhC3oZHPaNKoiU3GSK2I9WbiJyInWPrKIUMREE8KONdk6wy7u9dp+KQ==","shasum":"7d21f2776aaa5264800f3d6060e6ada3db024b4e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.2-next-1613387061-d69a83e4.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKlZ6CRA9TVsSAnZWagAAvmwP/jXkQxKM1bLXpz1Q6i2R\n5C/zLYW81zuNsKyTh7r42t53e1KQxNZAO20Nm3GxnjYma7H33wLakV1sUg6L\nZbhdDEEslSkJGpLq4K09lEcbzWhuFtY0JD/ZmedEtWvRjxrElrtcuiHO2LSQ\nj1n7Ia6Q/jDSJ2CYU5AM2AlWXhyEeIyyPPYV4CjBY8YU98cyUco2tMiUTqRT\nnZ4uGV4+UsYatFYb0huH27dqPY/6nfzIhCNE7+U4msArTHEJLfZHUKXf/bKO\nYYd44A5O7/5GZXumZ40t4h7fVf063sxVrMzdwrQIvUbNI60JNcJselJwZG23\nit21LnH4PXrQd9kuk3uacOtdMZRkwrrR8qwez/6eZVSFX/xMT0MXuHrkkDhE\nw8ac1+Wv+jNzXrETu61El5uOD71MpZIb3t/m+Ty0pzyx10CTrA0QcW8QKAX9\nYNZbxmSQ6vv1cWxJknny4GWrji+z+32Skd/rrmm+7xitrPXq4ygNepLBAHLa\nSRM0GMfsYN/FMOqjkTlLaC+/c8hTfNe6vwIosSp/gPCNoGrp8fnP40iobCQY\nmMvYxuW3IE1zv1zw9hqf1sCDi64QKebm727vBrSN1rne6/J781Gt/9vxIGNy\nBzSkMkf3IiS5V002wWxiHPQ5X/vBATKSvnvWjWk7xP8RPnXVtTbEecdWTEJL\nWptN\r\n=B9uQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCM/o4ikAnSb9mzClek8PDRwxJg6PEQ2ykiZQ7114rDlwIhAP8pxfWhODGejJtZMnh1v3jCsnEQNqd3pUGnyGE+NVhs"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.2-next-1613387061-d69a83e4.0_1613387385644_0.4520449987625108"},"_hasShrinkwrap":false},"2.45.1-next-1613402185-af936873.0":{"name":"@xdn/prefetch","version":"2.45.1-next-1613402185-af936873.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.1-next-1613402185-af936873.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.1-next-1613402185-af936873.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-pVp43mXz9Vf9uHWZzp146pLh/Li7WRokDROn9sXmEpjgHDrzic5MI0zdWL89D1fcka27RKDBECaLlWskiHqglw==","shasum":"6c5f0b09aa530aa599c14bec3ca28ffadaf7eae7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.1-next-1613402185-af936873.0.tgz","fileCount":56,"unpackedSize":138384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKpGTCRA9TVsSAnZWagAAsLcP/2h5tbJIO1Vj1gw9g2ln\nCAaQFcJxkLD4hLBGBV++wWPX0vwdv+jS7oxemCljKhGkgUQZNBfeFKwptTA+\nm0oP10fs21dmuu9SIC6H6thA0EhEOYQvgx+DeHZV6bCGZHVVXcwhb9C3E2MK\nJPB3uZU8yigqbHGXhFyGYYmVQxqXL0yjHSzXkLNIMPwmTdZjhkvGV5htk7kv\nFZjd7PMzjn61v+BprpIXvgK2F1dLMrpk5l8/vFaer2gQZfBLk2fHR6tOOHbL\nIdrJ4g5ODWm4spB19V47rh83V71EeTCt/rbEgDHPPNF6RGGklI7jOWrxx35w\n4ws526OWtmU3MQykrKin+aYUOxTbvgDMBU+C0tZ4IX+1rVLgnSR/eRzcKrA+\nGl/EsMBsYTtW/Gyp+GTP2Pqa2y7JXWiyzV7iDqERru+kLbVfpvZSwwZAZkmr\nbJD9NrowTkSEJ9lSkW893jEzo4r4iw3uvpFvPSaeWLr2UY9ZKgMyOP+tEvvY\nG2IQslB43/S/V2QU0+352RGAGe2bBSdP445LcnGUx7IW6NRs0muMaTAy07O9\n2Gwcbpwsu4Q/6nVEj4RZWURgO+RFHmohKo2RadyFeU3bolAVXGeCNB39ntIS\nM/nzop+S23f5xTVPp9fwbanaWvwCjCx3M0SjFjrJO5QhOr6hqQbtkbTkKbrE\nANW/\r\n=OPpT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCllBpngzli2FUeGEKJzgqS840RFNZmDUI8dKltPZl7iAIgdIN45APjl4YZi7ddx44EPH6LmzsxG7iD/sl8MJ1f/Zk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.1-next-1613402185-af936873.0_1613402514427_0.5732785265707407"},"_hasShrinkwrap":false},"2.45.2-next-1613467763-b282e2e6.0":{"name":"@xdn/prefetch","version":"2.45.2-next-1613467763-b282e2e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.2-next-1613467763-b282e2e6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.2-next-1613467763-b282e2e6.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-H50F5clCpFAhZUqLiSStyJIgNQ33Khuejwmb70pAkIUjbN7jt9y+vCCcmwTOv8T/xID9+vKNHI16lkIk3oeKQg==","shasum":"e6e3e364460d3261e60f34d2057e78731c790e2c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.2-next-1613467763-b282e2e6.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK5FnCRA9TVsSAnZWagAAXa0P/RMfu61Il2TIn3F2aOPr\nw07tv/NCfKwYHFTsaeMqUbpe1IYJKo8bnToEzjzpkEfrIv17kCU4z3ovFi2V\nQg1ktHceOmdp0s/nuq+mCFpvL/8SpC/le37lYqQDayGEx6xw+iHQ+ytS3Qei\nDNMDEz8aOnhU5FRmho29vbdXkmoGPhCy4NhyswImmPpsqjyRRQsrd2RS9t6V\n4SuP32j6yiaR+GjRlIPBkyRNeFl2L4L7WVTYknv863NMdwyFHniAlbDmzfHF\neDU2ZcGqnzBm5oQR8vfoNuLNSSl54/AveFI85lh7aJd3wLgjjjU/klL/Xwvp\nLYWYUSwGTOMHRemI1BhjDvcksboMjkECl0IjSW5VJAKKvLbkgRiZYowVglNg\nLFMLu+OSmqVGfbyWQEFbb8yH+Rc6KBKjqb8Yu1RkdPkS/vfcO3+hxYa0YFwp\nwE/B0Sq1pSdK4LZsLOwYkxVR1x0xaRsnnOKx1s50Roq3oWkFZmB0yv8AtKoS\n9gd1dbNxWqFd15q76YhUiXW+sGtnt8xo9m8j6QY62VEp85DZUmRHDYCUUuzk\nT8NgE45AO8azBylDGyvJJ5FvsKRPn6K2bKYQZl7dRKw+chAOJqruk7xUrvri\n5sUePvMHRXJvxXnUqX2DbJDprid+He2EOOL/h8XrKIyX4RvtD5RQCn4OX2VC\nE57j\r\n=Ilb9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA+Dr789mqgrvT2Zk/RlzJxsgdLKAFIbe3lWpv4S07qKAiBm3JCG/4GiMa8O+IrvInixFj51yMW2XHdt+owNCPme2g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.2-next-1613467763-b282e2e6.0_1613468006900_0.6416894368452062"},"_hasShrinkwrap":false},"2.45.2-next-1613467730-1cd50a04.0":{"name":"@xdn/prefetch","version":"2.45.2-next-1613467730-1cd50a04.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.2-next-1613467730-1cd50a04.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.2-next-1613467730-1cd50a04.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-uRK4tc7DMRGMM/w3LBvlNYW7ddb2s8Oqxqy9dczBp3qPYOh6dW4lXX6AJ0BQXicAiX9VvlYuN02G8zWaiOlRjg==","shasum":"9f2fbf4ca29f2c69283b3a162b8b48f8c8c0d450","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.2-next-1613467730-1cd50a04.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK5F/CRA9TVsSAnZWagAAHZ0P/ijDBiAO5BJj2kgEZBd/\nDQi7lLKIcHbahxhXlIcv7+mt+eCKY6sJW7GIXJSfB+6NR75Zo70NTiMQe3ML\nZJ/OSDGIVV+Z9dNjiBZG7+GKajukT5kaBHllz1D1IiCnF02MYYmH5qvVsDWr\n1G9o7Kj0tS0dcvETLkeQCf/2e/fqtGiLYFRXwFowiy6XuN3txbiH6eUFQNkG\nvLo5hChYQLIyv3KEMPHCeJX5astRIg1LeokYbIivJoQraAuFzP5xTer6UY+a\npjEr9kbOge1GSmorkpGwBwgCJhiodaHtxvGHWHVrto9tqlwSMzwOnGUdn6LN\nwLqVMKNWTUwNw4TyA7esCv6eBTh0dS4AEmI80widxH/ln5B2CSmDPkLrp1E7\noHWYO1FznAlxLbFULG3jzOulHJ6IVVXISBb2+ZiGZiR6p5U4R4ihSmPe1ZOr\nwCcCQ6lBfj6vsWnntRl/Wv52B29VZ6FMKeND7ZLtKhysRpdzXkiMVqQpl9Fd\nEhIoA2d2CStS5e5Bxm6cnrSKjb1kYnODeXldZRU0tQfc2lHyGmkFy9XBRMAv\n85WSsKE9TAcyJMG93p3WBvK9kAfOCTB98/+Qv1UbaJq37FHWAxoceLbGQ2ds\ntiKPUvAB9lV31Ws0sI5cLjJd+NzM0EXA1KiOkZigwyjPMMIL8uULCiGnVRTU\nzOB8\r\n=Ay5e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGul4gacmy6aO7yk2+wxLiFONZKCD9YsXwGCCWK7QUPQAiEA1FXIhb8iXi9/vDyLcVQH3IZ+mkH0NocCqz1Eznzissw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.2-next-1613467730-1cd50a04.0_1613468031120_0.5720837246722241"},"_hasShrinkwrap":false},"2.45.2-next-1613467867-7700b787.0":{"name":"@xdn/prefetch","version":"2.45.2-next-1613467867-7700b787.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.2-next-1613467867-7700b787.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.2-next-1613467867-7700b787.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-P0WwXQEJdMXXcw2MhZpNHZ91PRYp3rsWzWTmLuOCaOqPdce3wPY2x1uAAvgdBHdADNbz8BpWijjfTVFdeBsZkw==","shasum":"8a5663d1b6aa926300bf8b7e7525ccb3c293ca03","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.2-next-1613467867-7700b787.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK5IGCRA9TVsSAnZWagAA9g4P/2TZ+6PzCD3n0IulN8At\n4tIsGtSTcGoPS9bej7P8kSqeBLXci+nYNcWDhMbHK0OvAtTq5nirYDkOI/5X\nso1cKsLVKZlYOu2NiarultGxV2bqZD3p9l9qnCMmh8q69zTuCgWMY9K0bG+o\nzFx3DM3qT9NDnrRO5EpjzqrR74uPIxyYQ6Vhr7C+Pd5UtAE09euSGtkRKBww\nlPnApe+yIxIJflxGVAJmmuZ2rxT+sOzmqaTixX4Z2zmbQ0xlyr+vRRVGJAo6\nxHlejbOJHcitMoEhbFYyjOXRNvGZWG2jKK+0lBCD/odoJGRFu0y+MuwaJGa6\nWdxpI4t/xTJjGdL0bNKwXOGNlITDtZg7XJI+EElz+VS5E3B9Za0xUTqLuP3q\n612v9egJEzJr/QTRcwaBsw/dHA2iGnA3yGdVlOXpZdMJwxd5/6NfDaTpWiJa\nxvNBnfPqFKxLmWYOFukT3MU48sY3mEFNt9s4B7dTYvUuJOCJhAUZlqnDHnOn\njxk4ky3wM6OGvwicE2VFHH8F1uCHKh01CMDzAQKqpJUTe5/WD0DqqPY29S/K\nH3CFVfxlwHgoQ4uaJjlYuqaeBwC9GvEoSIWMvOC2Js8y9L6Uw/FkIy9xeo1z\n0/UhJ+n1xAkMrScsqz9vsJlbX+ah4mxsNvRwQoXUNyFdnKBywGgHmZ2s7dB6\nlCVS\r\n=iMV6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUDw3qdqK3oguEy04h3OccTHHOqmdwEeKw3sx70vQM/wIgYllL7afrGveaMoQl/njGQBvRaZdea1EQuNcMCStC2kc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.2-next-1613467867-7700b787.0_1613468165824_0.8724378707270495"},"_hasShrinkwrap":false},"2.45.2-next-1613470044-4d9a689d.0":{"name":"@xdn/prefetch","version":"2.45.2-next-1613470044-4d9a689d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.2-next-1613470044-4d9a689d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.2-next-1613470044-4d9a689d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-iDlqui3me1vWgzsKUDwwD6CQvMOTqa2GUEIBufGXs5sBfzW0mAuwJEJ82rYN1luINScQxvmbA/00vwrJYfnMtg==","shasum":"a24be87d84b5b094218e30bad1f6d38ff58f868d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.2-next-1613470044-4d9a689d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK5qMCRA9TVsSAnZWagAAeMgP/2snQZompAqji/quOPPk\nOTY9jwVKc7vPdCX9rS7MtOVC/6y3FuKNzAtEeMISF9vj53Td3Eo/cQX2Ls9X\nTrSoVkWljyogKMzAA3o1zUemV6N5DCxVOw/2iN96lGffHmyCT5Tf6Kv14iVu\ne+2m/c4mtKyFKHL/PahHVAJnm+N9jqwXS0BuFFkCuRwjZtKWC8j+fO8DMzxg\nfDgagXIOUFGiTjqobXWwt1lDVifGMkSAjTOAFAmk2cQayLuCm+/oeWgjEzTR\nNLz98DXk65mnZ8L88KJUCrNobJ5DtdRCnTnUbrzMNKnbmdl2XB+lVQvUI2vJ\nv91oZ/4yDWZQquAoNnd0EzW26o3XxiXcjjaYWveOy4NvASRX3zMaRVUCDDR2\nb5NN4yux08+tfguQuSSKrlSbXRme/w/8vXdpu9YBGr0eIGQ9lK5PXpAFTHOK\nrS81rq21D13FPGlH+F+J1pUN/Nv1A3AXDiosQf1HIcRZnSTXmwRwu+EVlmFi\navLAIz0tavpaVAwYKYJurxkM4Kufq2MSbcP0XAjkJ+Xou7rfYWvNEBn5EA1j\n80F3DMyj2329PGaHQVTW8audr7xzI/sEhpW5ak/R4JxSTckipCrhTdpfokD/\nB8l0cfFOunf+1HwghZm5yO9VPqL0qHKWRg8Mdzm/TGCfeaeUfTdOpeA8rtpU\nDTEI\r\n=J3sB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9snuGb6L2Zn4Hrl6V739qQZnXwsq+JJuDnvkyH8JdcwIhAL06J2lMJRQ1WQ9DEQpXXhMjB/gk/jOBUQtcwBNWm0xi"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.2-next-1613470044-4d9a689d.0_1613470347960_0.8057188933149309"},"_hasShrinkwrap":false},"2.45.2-next-1613470717-77c0509d.0":{"name":"@xdn/prefetch","version":"2.45.2-next-1613470717-77c0509d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.2-next-1613470717-77c0509d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.2-next-1613470717-77c0509d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-7Dva5QKosRTp/kBkAN9MYPgXnR2NmHYShZyXzs3GJ3t+ED3oFvGajZ6Z7g81dIuqaxg0j1V9ANaKW1NY1aOUHg==","shasum":"eb7a8564d80bc01fabf36d7b8390cdb0a973bd29","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.2-next-1613470717-77c0509d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK50PCRA9TVsSAnZWagAAOycP/2w7QZ1OixSWd+uWp/96\nR2a85QbjCeHS8n13nSncSt10gIE6zLhRAzssYp7D1pUvWbTrUBV5EfhLfBdT\ngmFzxsPRspY9VVGHr5dqwpaaR87VczgB+ri5qnMIrHgEKhqE5cbGuYpVZCms\ngdEdsR+xpXG2X7CNAGsYlMyX+VXg7B7skxAXfJAnY3R7MsAVQzavf60EhUj9\nOzr7/AhlJOU/oFcfAIJxfmIYm1jSaz0/HWDVIrwFBYZWFhOK1L541lLbbbkt\nN0ztp/MNm5BCQILt1wy9WtqEcv/hAPpln2nZKw0xuo1YATLWqYnLeAfqU211\n6rbft530eXfuGoPix0RyfY3HxoOxbVVci7OT6LwOCA0i8t6chdGVFXU6PDzU\nFrVuKCMAlNH21qjbR/k9bAbQOBRA3WGjRfIWeg5aVYYHe6narfUpTx62eGrN\nCMhbE9nfiPtLVqJYLMl+R3coaOirFoBwI4xVih5AdNX9viDTUZ2EVop4YGtN\nOOjmW7uZylX2k/jC7teJjZSgDqbpcFaWUVOw4eOWGVqhLcFQrjQotId8hbvz\n6T9CSos0GZHvSADXHXNGqWvBO1+GlyTWZ4vd7TWWMN9FhrkhqUJK6IfkCHh6\nMwF+BC518BsfQ/nKbtvAffuUsYThaRYLOSSFbaC5Kjq6n5BEigXAyGEzdZhE\ncjvS\r\n=yroy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIESyumwz9oPUmoIecy8PixG/oOphCdkpsKKxPdxQfVywAiAi12GCwJGS0zAb/uBogRT5+T/CVd+ezEz15wzK2vHZcw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.2-next-1613470717-77c0509d.0_1613470991433_0.8829276604507983"},"_hasShrinkwrap":false},"2.45.2-next-1613472288-82892ed3.0":{"name":"@xdn/prefetch","version":"2.45.2-next-1613472288-82892ed3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.45.2-next-1613472288-82892ed3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.45.2-next-1613472288-82892ed3.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ziLwVbSnd4U9s+55IyBcPOp3DorMULBhbPM700GOK56IVZ0zoXWVlCDr+xkL2mT/viZD7HKUNm8llsQhZFYKhQ==","shasum":"84ab41c9482435a6c8b30fb4b93d30aef0470607","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.45.2-next-1613472288-82892ed3.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK6NpCRA9TVsSAnZWagAAXvkP/2F3jbE97i+9+mihYl7L\nAYkxKi7T1yRmiGA0orgG0tI8mIPm2C6STr3iapwZkCladH8ayZa+89M5kJz5\nvSS3rQehZ986CTkAv0/5LDjQ81jRs3j+htsCY9yja7/vjB9YXUkTZ9N8sW+9\nvXf+Cz+UZu8jbyTzoZotyaLi1+uFV8MduIPertbJTgLCqFvF3PAmUBuiSZot\nCvGq8P1dhss/Yw3myL8sax3osCRJlKt4MBWGqCJEIjYdVAZtSI5BpSHw6fPv\nfR+sOgkP9I6ncVqajgteKoUQKKDhwwI/m9+eniW0o3LtW/E/0wLutuDRiavf\nJoEuXnn6B7rCpZb5MQxtqdPewZE1bPXP/JzvUPbgJTGukbYx6nSmdm5zWgt5\n8orxJQF4XWU5CcXWPK/JUeQSZXrmXThUx7NfK5wum5lEgAKjON4L35rRjAi6\nZuPV1oZ7NytsfOaohMhqhtoxv188vEuZ3zOgXZQEn6cLJ5ebSv86bKXYIsAG\nUQRXI5OhD9sV4QpLVjcNwojH3/7kA+qBJtapDFWKxBPeeQq1rcLvvrMn6mnw\n2pHdMYzp4TnZYFBXT71CRqpXaCjJCOelVmxSIu814eN0KDqRbE0G5bc9nBHu\n9z1aIzz+5UkH9k18BV6AURloOkNCADCY9b98/YWtslKnoNvo9Zq5fqvtTwRw\nYxpy\r\n=ZEuA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICrHPcRj+evAvm73+nic0N2twJnYI2polRcGjIOQh9juAiA9OlgUIh44En3tMYdFF7i2u8inQjWqwPyAlzba85kluQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.45.2-next-1613472288-82892ed3.0_1613472616674_0.9971784366442087"},"_hasShrinkwrap":false},"2.46.0":{"name":"@xdn/prefetch","version":"2.46.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-aNXIsWQOlmiL9oZat1vvKtKBM5RGaczGB5aU5DUjQEmTHiV0UOhTIAQTJrRjZccMgPb+rQzClCvEFo+h23HqKA==","shasum":"432eefd50528e9628b7c03b3cf1c67f3e3abc00c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.0.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK6OXCRA9TVsSAnZWagAApasQAIdVfGxymgoDlpW+R7Yv\nrnAHto6OAGudiWVsFzZkjSa4MC7NeXxgVTXXdewPytQlOeZxgFWw6IXXeAwN\nM5oOBdBTHg4Di3MCJqGUx8XdZkflnjmmQVGnEGfsdYXYYXI8kr59NX2HlMtq\nTjNHSPbl6kemiINposZReX8TMgMGD1kiVuSZXtZOSxvGycldpSqRj+9wBhIN\nxjaE3Q/oPe5gB65Xu2KML19UO4va9J3pcydjLsmB/3Nc9F7WB0U0lTlI8kOn\njJow3vawf0z1NOMkpXhAgWJP9l3sjobXzVaQVr7sKCNMPZcWFcz8b57FEexi\nFDpiQunCmDuKZiAKFnbmnHrXH0rflfPh6HHIdoJmdO+yLb7Nw62TunSMaAnA\nnG7WUrhQgNv8p6OQhnPHfXolqwW3otpP2VrNYExBLjeFxsANOc668aESl6Qh\nlWqoCDehVTDQF8JJVNwKyLsHz56RvqaYp8XgbO86KMeAZoHgBUAMCUXvexE7\nLlIWd1z/M375Mh1aGSdL5tR3GbMYAh+wSU2cUREUmRPYWgtipcW9UIrBr+85\naqSW18EOfX0X6XQP8NH2HWr2LzM86YYojS+OhZcyhMrLhS9mGZYleXslr0fq\nm5dUESCHxYXnKnHrkwu5lQRavXUWBlnoscTJr11+ZuKROlmyLRfV7cipoOAc\nu4nF\r\n=AiEm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDauUuS1Hnn3O/i9PVwNV3rq6AptvRtyR3/W3GgF59aBQIgdMJY21/tTUqBZP422qrP0sDmAGAK0M2JgXAdO3JyA9E="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.0_1613472662545_0.6968428178583805"},"_hasShrinkwrap":false},"2.46.1-next-1613472397-454a94d2.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613472397-454a94d2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613472397-454a94d2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613472397-454a94d2.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-PRA1suVlqH3wybHnIHYuEVgPSoLyVHILsrO3hKhs/H03TOYRpfqoAbCcxKrOpgWR1HSTbH+7eRr53sel79IeyA==","shasum":"08c05f18ca4164d6055f201f930ce84a7f33bff1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613472397-454a94d2.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK6PECRA9TVsSAnZWagAAnzYP/2hMurLpg7EOT+LYamM5\n6Lh2VPPraaHTmWpuR+4YlGMLNeH8YjzNJL5+ZGSSXp/Bb8booq328JYOq7Z3\nfbeZGWv/o+xuSoPb3LhwJhy1LXgZ5msoka5EMBTtDIbtYEid+2XPanok74Og\npqqK0nyh8UYSAvzHxZHK3r1/KQnKmBXdH45kuqMISHZikIQ8QHFZtelfcjED\nRFZa6FGp/r69EV5WULu6GZo5ReFPXNNNtPqEh4qNLhCvgo9nA9APEm9p1TMx\nBY8ojq174FQHHNID6tG0066K2XXxR+bI9HfSjqV2vJXAuVMKyljMP5KZ7V9S\nhk7R0DeO4FqgjTARfszdKpOw1dqreP/499Lnng3eiO0oq20RsyRg6w4UYEna\nGWRQQ5KSlySQlLgiqDw9EHxf9rSbjDiegz8u+WtgIQELuj9o7aXzWHxM6bU+\nKHTQVQaZ8tB4dIXKwfNbOuWuG9M1Qt3YTdN8hYHB1AEpkWdmSe6hcjvivj36\noUA3ra5tksnr2Ctm4xF5hnskmJ9F0aLFqaMJh99hLdUOiLOFBTX3QlkvgYEy\nHMNoIMYwbcjdT8foiwrIlY6Lc7nAwgrx6BYRWbDecqVg+onPoYA+J0e55XuT\n7CrkYkNuXL9NYjp/QAMVQCNDqQwLbNjoyDUOgJ82IO4e7DhAcSl/LvPPNv0R\niH7Y\r\n=jZ2D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0n1nQ5+sFjMz3zSOIstoiULEuxiui29yyc1tQdGhhnwIgXVQSJ+U/bsgJ2LeUvDOK2siZaMRDk3RwUCJsz/fX2K0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613472397-454a94d2.0_1613472708133_0.7359946607999865"},"_hasShrinkwrap":false},"2.46.1-next-1613475842-0623136a.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613475842-0623136a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613475842-0623136a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613475842-0623136a.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-q+0UriM79K0/+Z6JNqxVcHJb4DWPzOxOUGA5cRSsciBPE9Tm1NBzX2wtZV/C0GjIEYc+hhaa3MeKzNVKnPG5tA==","shasum":"f93abc2da3d9d80d528256df9f7cdcc5cbe3d54d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613475842-0623136a.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK7EwCRA9TVsSAnZWagAAn1YP/1efhkSt8a+FgkTZJtHd\nmXJlpMy0veiIa3WsVl1XbJto+4RdJxuzl9NMub00jacAekcx1/WnndD9JdA1\nP693pKeupJfxxH1+SSilFXopS1LZVsYzvt0cd9AvkDsSeTM4R5BjL+/yDABQ\nUP486WWoVIrTWio22sh9Kz76z82u1wYKvldx3hfJxx4LGOX7lBcUiApEtbcA\nN46S6MmIE3ICM+uc4K5St5tYHZzUt7q3to2+7Tg2UTa1alKdOwhArXIZEoiX\nERak5wLmXQJIiMsq8Cml9Wu990ntwzjCqTBhTu8uHQFwEkgVALJWfIXJNDFe\nH3ZuzI4odAhBUydixL9ntDpOEN7IvaR3U2VK0U+QaZr9WHofUurnX/P5+BEk\nrfWOtqjNU37adWGjk8g/lF+V83LZEWLpL81muZDPexZoVKHn62mh+KlYUFfc\nDN56L/gJrjDSN6gmqiM1G1tOLlam5EJoWJe4qEPmDmJ2OuxqFiRbshrI+IvM\n37Zqikj/1uPszeAZ9lz7/P7Z2zpyMk/PB1NVRcUoGr55vxuoigfA5lTAIjk3\n8fms10j4XQFw3V7K/n4L6qgOBWoNyJsKnFGmB7DMRM4BlXhfje75AcTWLqAO\nhJ/0u34wHKN6DXqzeUjnjfmInxrE8yob40yHA+to4wW1Q4IgfqljOfWWJ0sF\n2a6z\r\n=ozeq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB9aEwQ2VSbfjFlIkwx0DamHO2rt1BiFpQSFHaeeYWL/AiBMsYmhtingAevw1QodHos43GqY868c7kpGkP0fp1ch0w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613475842-0623136a.0_1613476143742_0.7963847226928824"},"_hasShrinkwrap":false},"2.46.1-next-1613476294-f7be9b0b.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613476294-f7be9b0b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613476294-f7be9b0b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613476294-f7be9b0b.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-8z7T3ChA1ZpGZr1E1DT13jSt69EMfzYch1cXWKdt0Xv1L6aItMFP4kKcyD8xp0iLMOlfVJ8WeoqZYpEb5CM0zA==","shasum":"ea4bbd4037816446ce3717c67c015e2579c4ef66","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613476294-f7be9b0b.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK7LzCRA9TVsSAnZWagAAYiUP/A2SMP7MUkdIrhPYEMuV\neJKrxijzofp+l6R9yrkWnCkQVhoGuaBTJzb62omuurirh2Up9WseODZ8rSHT\nz1GA5FhulRSbrOLoOVB5kWWQ/DQsWHxTmIpOoMhK47dUWJN/PRIGA97AENGK\nQr8RpEcYcPP3g3zl1mFeLR/7i24B6LtuLwmr76+R3C8pfu34fbeOgKEhA/uZ\nO7FFxKiTRY6YDH3OeCC56gFRqzIWox0zGpFuCOxDYuajjllt14UpNVDhSBmC\ngfsu8Gl/KY14R9+NCzvr7RTyScdLReb1GMy7Fo6LQwf20dMFvYkVkq/G4+L5\ncemVRC9vHRDt7srtG0GAZKpHDkS5r4rP6T0jUYTsfnbZ+dEsHldU/Y+qXKzj\ng+vSS7V74Ok88iOfg/BzzHnA+O1rAJus5+R29BAJGn96d2vpqYH8m0W8rcT3\nEfU+VpNuttgGIQ4qM8qm0dLZd5PphR+Nvb1/RFC8P8VgcvSn7ZlQC1boUU91\nmHRuyEIPf1P5YchetVm7WyIocXoS7dC2U/D4u5pdggUCaHvvbiegeXkijyaB\nFWuH050TuGXOECjkqgM+g/gzW2VC61jR03r6MGGHqHvODVLTSd56lN5VMWzY\n3P26oAL5aFNHU2fjHZl8AH8doh77MuAY4K/O5RNtuCsdfL7FxUQ4vIjsricn\nqiAG\r\n=oXxX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYja+xBUA4dZa/8B/zjF66m0SZr4XLmfzWbHyBvae9IgIhAL9v8iSc6WqIRGXfxasC8Iweib4PZ2zwO3Qwjw/9Ub0f"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613476294-f7be9b0b.0_1613476594938_0.23064804088863755"},"_hasShrinkwrap":false},"2.46.1-next-1613476613-81172a7d.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613476613-81172a7d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613476613-81172a7d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613476613-81172a7d.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-0zcb76Kr25sfVB5KfzYr/FLI1gpPHdA1jD8uBQ0go8pkSlcCDzLit1ZlM+QSUx/bSl4HZhfp+6NVm26/iduMGw==","shasum":"6c955179a9a428a6ee3701c47e43e154fb93bc76","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613476613-81172a7d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK7Q1CRA9TVsSAnZWagAAXXQP/01q8K3fMIzsrFPiKhBw\n87cInWqzj1RDDSyUy+m2LhZvUvXGTAiiRVf2o5m5/SLBbC9709hKdvQKwIPf\n52hIr2O+7Yg1KVlvKscLdPPeTBmfwfYohvGIouFOb3hWf/g+Hvak8Bmm9BDY\ncQjr3x60lnft+UcU/zSZoiRZ+bxhnVNPA5TsoUhY9dzwCOcYJuzFFDAQGtJ0\nFyW5tO7EtbplL62kyxOPFuV8/qXOVKtXq1lNByxdDJrnI2+hdbkA8oGzQyKW\n/khUWkJkxc/bwKk7nztzixuC9+gDKsI91cq1cH0ggEsBLd9JIH386qu6BXN9\n+2Nv1w8tcTgcYka+NgRiv/BqXj7fIDi/ANjYDHWiSBUQD/YbNUJTGpqzZVGx\nPRZyzGw1wpNlyPv/bst63ODLH0wliFanAzoaqCZuw08G3Pk4IGzksJJgN/at\ny9rWmNsqy13CfNNV20Z6jYBycL+5U0+u3NRvyekZMqt5HDkw39NbyYEjWwxF\nL5UL+DPLM79P55Javmd9mwP/II91A7sMscLD8YLA4N2A20uQdmfdeTm+A/ML\nDyFLilxiaFvzugUBS+47nJrg1jyvW/LqUxsdpUEWRY0cii+UU8si1O7X11wu\nOY1lLRFLuc3l+IDiUiMsXVfKOAqUp5aF6M91ft6CZdRFCkP8ggF3LVXMX+ai\nFro2\r\n=IfFV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwb+XxbPPUO3SJef9mDKaMK+BbvFGMVpSFVmkCtIzBkAIhAKux5/jPNticOIbR36iUanqbnVTlb0X0BOs42fZ0pHIH"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613476613-81172a7d.0_1613476917301_0.11490659401058911"},"_hasShrinkwrap":false},"2.46.1-next-1613477308-a4091daf.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613477308-a4091daf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613477308-a4091daf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613477308-a4091daf.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-3kRj1lQJNM39hq8RZn1dbfgZR0Jws3c++caolTa5r+vinpASfrUntlLfKKJgjSouHPmV5coSeDsx9ReaHofRww==","shasum":"7bbbb0c007eb7784f0d1150203a6d67979b1692e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613477308-a4091daf.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK7cDCRA9TVsSAnZWagAADRMP/1Vyq70DWxB69mMB3UC7\nHmbIoEeQbWtRomE9A0dZMKBjxgodAj5paJQ2UlM18RUut4MizQOU/c/+7IzQ\nzWtnl6L1E7bZloiatriG5gjPak4yxJEnnDddRP4scEaZY3OJsvGhVH9UzqE6\n00yM2/fJnJR3tvEHEtS22dHiDrrzBE1TykNrHtwDfWW+tCB9cyH6N8Y5rYSr\nbdkvZR1pJeyTpKUUfOqVi8j1bnXUopc/CvaHNwkTuCd047Qd0e+muY1lRGHj\njpVNIkHziL9lJg1HxxIdQpY8B5IhbpHGMtwwWmuO7KqIsEgfSCOlIiNW4LOQ\nd9EMGWGQ5lliWCPWKAd7a27yuiIhJRQpfr474tjbpPhr66PKs16MtVrXGlcY\nNnasZMry3EM6zgpbIljiWbogD2LwUn2nXvsJpfGy4KW48Y+514EeR0IpH2ZG\nzHWiosTMs4nMNOvVO7iru7Q4vrWO7clGh19ZQl70HiBZPIUmnQT5XFpa1CIc\nqt9/snDLk9I4B/BFdJYqo082M/8rVUGkHaPlND2WY771xjszOA6oetK7M44k\n2lIoiCiQnvHIxhn2ugK+LmANVuwYrXomkqfLOCTxaLHnXCOk8dKEVhQyLHHd\nzz+sy88mz3cLR4BBZnOgP3sLQwG9m2/0Wjc3IFY+hv8AAx+KexSjSo8Al1JB\nTe6q\r\n=IutK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXLpD5pS5M7W/w2uOA5wQZYR7XLCfnqpqxBFHUs1B7YQIgF5bFT/yr9EUOE/4vGbAGzqg8n5FHQxG3IGsoh+lkW2E="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613477308-a4091daf.0_1613477634691_0.18904866683684607"},"_hasShrinkwrap":false},"2.46.1-next-1613478956-dd392162.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613478956-dd392162.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613478956-dd392162.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613478956-dd392162.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-wbJe2yzqi/zzJjrQqyrOIy6vou/6NgPaScDGTPdS70K4gueym1T9zcJru/mE5nfxFL0Jp6veOaSK/9e+XUdNSg==","shasum":"5af8834c77677350411490d1820f87596a5053ee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613478956-dd392162.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK72CCRA9TVsSAnZWagAAHsoP/0GcPscZpdgWCH6SQ6I4\nJZifFiLF0usr6z1JnKNnOJWtn2szzPr4rlv2gKaoE7KO3QqhGSpCb2fov88a\nAwz+FC/D6DKJta2o37rxWJgBROr1wu0LDFC69HtJ9Lb9JsrwgqIZU4/J/BSX\nWZXz1Ucq6Sn/tlx4SL/kwdDgTWJx7GBqwq7DKFPKPzkQqpCXbXDb3/AQ2Qz0\nQ8QlH1ANMqgXaSZxzZ1xsYMe41ZmHS3xKqly806OcgYZb85jvMY0FxhUArl2\nCL/VDSJEO7/rw3/1BY+TGshHUmO5PH9oTIcwkE0Lf7hGReh5i4jEoRZSXET2\nXtlI1RUlkTYo5J9SBuhk8of4veBCxft7eDvHI3lI+qDSOkQYjGW1U+neIVJM\nrPgSq3W9neUw/lrMPeJjBh7dEfnvZfEwM/KtaLY9tEOLiAO5k1oz2Le4NefY\nuCZtxnCGhV367uXK+iMZYVNk/OmL8chHQ5/tj3ccMN1OsMmhPegmB/379cBK\nV91WxZAuwW2SU+Crn4gG8Z5NcJ1bCQrHayViV3ec7fadZrJ2jUbR+ool6RXk\nKnf4+zjE7g/4jsGTBjQSK41DY5KEMMi+dFVGlCRBT6qBcB52IZf0X6ArwzUi\nl8c0W0s73O9Pa/lQpSoniC0CT/qb0iGwNtDtYKOUbVSf+wj/UcKZVeb9NUOT\ngAFS\r\n=ezjs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDu26VCORJFjCnyO5VINwHH6LuADY8+7+HCn1v7ninprAiEA2owNGfZ3CkwI5cOG4nXoqZgmPM8ue9XPmAjnLTVlPfI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613478956-dd392162.0_1613479298415_0.34387014490250767"},"_hasShrinkwrap":false},"2.46.1-next-1613480292-fc16df83.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613480292-fc16df83.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613480292-fc16df83.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613480292-fc16df83.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-lX/YmFDohiHthfhU17vpxxl1MiSimoTx34xe88D6BkZOWOpCVBAHfkXZ/THc4sCKl2P/EIrOGTFRftttZH7lfQ==","shasum":"9213c23ddb34ebbfe6307606577253d059e984e1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613480292-fc16df83.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK8K5CRA9TVsSAnZWagAAm1oP/1S3U3R7dFG7Pd6q1JBB\n2CDlVaxA9usPXpkpGgNXxTpAbao28Ok1BVEwOtdUtWfR3tioVX6gPvd7+Enn\n1BK9SuF9fdv+p3BGQb+RFL4ppkNtnURDa7Lud66M5zQZoODlBVzHE05iXhhz\nhCqpW+VaLZJY3B0E/05kp0XmOw6zxIw2SEGedwTfY8LKjc3oOYnRWEz7LCyQ\nVRbOotof5UppWRwjxctGoZJkm48vHriEthjNfYFmdyH9RQQ9LFDeh9uH4RtS\n5aPblMqkEsOPo2+gezGBiPuYI8vNI0Vh38Y8sFuF0NaFWQ5CcVtPkGJTAi2q\nPgg+a7x0NNXLKvGOAfwpuH/3W72btUu5uVdpzJd5W+n+X7ZxNSYtwqJr2xXU\nhuxR9TEAHtPDG2IGpgZkKTT5iF5mpR9FZI8YF8ls/q37L1E6g3gA2at4gsMn\nVlRk79HWpt5UHf8UykV4EmQhOl6+yzc85xV8wQVw/pWUBuuW+sGfEEEqgSf0\n46Y1RsRUmXYgU/gsWBfrGF/bQGRLOUo7vIGSNCDu6J60vVtJlMEhzmPaTXaY\n8HoGOxk3ImK/QnstrmPbem6AJ1Ckng+mPXgKiKDgtBYY8GTY+coeSKBHRHys\nGjVaP02EthFd8eikceeRyUzwphwdXL9o95ZSAl56F/Zgp3BQRIy7jRH7jv7i\nw8iP\r\n=bkd7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOVacvCDfiv5KkH3fnsxObywBXZ9uzbiSya3H9VzckVgIhALdWRnupV1k+QARfrxE74aqIOtXefGHsPu1ccWRMvNm0"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613480292-fc16df83.0_1613480632476_0.8132662295292548"},"_hasShrinkwrap":false},"2.46.1-next-1613482488-10d65dfb.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613482488-10d65dfb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613482488-10d65dfb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613482488-10d65dfb.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-2/eb0fGyBl8mCHt9ZzkXTTRHTXz6iEDp9x0ma5a/Ly7lYRqQs69TAFfI7VrOQ6/QFw1gV5j3icunH/MfI4dyFw==","shasum":"027c7c2ead59977fc837f25bcf695a805f332c87","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613482488-10d65dfb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK8sCCRA9TVsSAnZWagAA+HsP/A5Np1F+XQQ3kkr+UKP2\nWiUH7bIpTWtPlHsvuiHQgGRWVeNYYINX77OnYm3IfNmi6teR8jVn/85sWWR+\n1hDpbuI20E4ivG5nyn8lHAaxwOgkkyLSAuk/O5v4dVUFhHEoG+u+aP1FBu6Q\nkVtZxzbv2I3bFNQ4rkCwWOlH8k4stdho28uzpNuz8vO+6IO2tjH57EANsg7o\nEjD9Xj7+sme3tD1n3gDQWE8KWCRzSYvsWSNR9eLAn8jWEFORciUTOkDpFWUY\ndgE11QsvDD6B6vRfmDGS72oKz06HrovnlDOFfI2ItJA58SUE9PUCiGNMaW5t\nGWFdGSmmWbSiclhHtOXjtKe9qUipZqvmC5CqDr3FSzLBIlAFvAjIb+jfIgnU\nQKsLWI3k3zhy//Hko8MsjLKdAtb9dYvn2ZSMIgE2D1VsvUxcyug5WFvi9ZBM\nu4WJKQltjNEb/egpmBdK5wF25hmvBlOrFPiwPB0l9NW7zR3AlQQ29YHUQBRv\nwWGCoXokS4W1D1dKUUwG9jgSn495p+DamickVpDMnUzxzoawGuSSlVgMj0OT\nkHFOVs9W6Fjx2XedYQevnWELftg3IcdUdyyTqDnxQarpkr20cxBxQInhHzYS\nCOPNqNKcBmS6F08wCcoFwbHn53c6TSbnXZT2lPVwIIxw8T5f7UCZYyf4Z4kh\n6fu7\r\n=nZS7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIERECRIjPNFvRsMi9lYOg+nw9c6+OEREQtJdILGt73LNAiEAkPXs3z/plfTS7k8YDReGhZ1vfpJFLczYWj2yAy2UdZ8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613482488-10d65dfb.0_1613482754318_0.344891600399833"},"_hasShrinkwrap":false},"2.46.1-next-1613484858-66a1b714.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613484858-66a1b714.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613484858-66a1b714.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613484858-66a1b714.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Eb2AbPhRI60jk2EA7GV6xB0MldnwmPK1XOSGabfVhC0gcdqsunijhDy0yJ/KTno/3bKEMNtuAk7/sji8cP5FIw==","shasum":"e2230ec00177b77eda58d409d8ba5ae6c4362f72","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613484858-66a1b714.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK9R3CRA9TVsSAnZWagAA34MP/2AEpQ4nWI9ay4yBBhfJ\n/hia5DH47/OG0uv24wjMuQvbnBouH7awrjrC4MyIAMpgB6WtZ84tfeIswDu6\nlaMyvYs5H7jaF7lsjwnw3V4UyR7QnO+Q9WLICBVBLWtjOd58bP1orveO5zYT\nKVIN84YTBCjMP0U7NESCwDp+MmM2ZuMb1OtQxZ1ZegADfHxQVizmhmJDutnQ\nxtPKAS7LTl/ii3fJNocux9BwdYgvNiFmbP/z21MFSX9ll4zApSHe9WxNGLJr\nZIo25IMq8gYHr9DtMmFL9XED3soluFE6W8Gs23BEp/3AgyL13OVCitiFGtoR\n2dHITOetwe64e6KwUhFzVIbsF7JZe07pxy5DsV61ekNvoitlo9wmckdAoePs\nLiTv9e/NDULTlI9FYIbnV+ZDXbrsT7G6nP7QvpU7YbddZ85bGCYj/vSGrQdP\nzVqLY3Ym+Ruktx6U+ZMoPxXJkuVKZyXKwDorveXlQmACDnbk8p91NAN3a/lT\n6sZxkedcg+7BTXFAsvU/YLZrZR9IxiojLX0N5TOx5rTCFC9MpDQXidx2sY8t\nHLM/UA7akZfZGEIomfKaJSsbod9wck1e2ylZ8EGOMDSCySxuZXEdcmA/YAKU\no2SNU6bB7bET4ctcMWW/n93WNptXiBGrTWUVnugq/2Ph2e1c9eqZF09GuV9O\n/EPK\r\n=1AYT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBxsW5EuXnBY8hRMkxUzcupMQ6PiV98GnEcLCqITJWC2AiEAyS575CwslYsBMs79o3H+4jWivsgwr1O3U5kBZh1q5j0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613484858-66a1b714.0_1613485174608_0.1411336010881703"},"_hasShrinkwrap":false},"2.46.1-next-1613502013-3a8591bb.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613502013-3a8591bb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613502013-3a8591bb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613502013-3a8591bb.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-DOaN4AOfNPLGditONEvMAxIRDUFVQITYkHlCeCj9eIfjHD9ncnImdcvNJw4+439xozKxIbvbCBzqblEizQdSlg==","shasum":"642b0635d181f309078722aca1c910ba1107b4cb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613502013-3a8591bb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLBeBCRA9TVsSAnZWagAA5rAQAJcOeQ8D0X0A4I3QdMaB\n2echDFa9CFGy5dHL/JJfFgeMpTuJjhRS5jCNmVJTrcKx8cajSC2QNyyiFk2I\nz7iByiKkBOWullNRiwDlpCwyYGdlB7eu+oa7OpAVwt1te61u7pNoCmVdTaMd\npLgYCXFRdBtN4lCQVhpamC8ApWISjX2TW7OcMvSUWaSn7wg5MdWzSZc8LX4+\nAaDY8zy5QQ+Y5LlD7p97lB3pDuwv39ZFwJu89Pjovbj1n5br4kyaokOK2h85\ntyjte4VyiYoxsUqRO8N0tIJnkATR6kTAaR2OwWjcDcjnb4jGVXRbqDtcUbel\nEXAJN0xGuh9yoFT7qnFYZdLIEeuTXct8jWWJO0PTxg1Usq4+hEDDgjlgwusH\nK40gsJjkX3vnB00zgVV7XqfFV6roEsbNiQK4Wqb58P/V//EeQHoDiV/Yd1DP\ne6YiQDJOtv3y/IQi/aeQuVEyRIS0G/0u+qQXwNc5zUt7DQbMHcl8LxtwYcdt\nPJidrnIr/TgOyFBllmsZFtr45zqz6RgMvkECV3zLvU8fE9ZsXLtLZZBPmO2W\n9/ysLpr81vGK3pByeDDHPs5HAhzI9PcYlmM7JEnpjMxTke5wGIRdV83YuVyI\nNUERxP017XQlnvZ1L0DGo6ACWfRKUoncr2ZLnopiC7u2iNWj2+5mJm1x8cAE\nV3fl\r\n=0AeN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRMtMrP2wsH43BKf96J2V4uDJHtCxAVf53OhixmEmlJgIgE2ew7bbAjcB25YX3gFcTAwvLNA5Fb49Yg7aNM2c7vW8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613502013-3a8591bb.0_1613502335764_0.44081430987973014"},"_hasShrinkwrap":false},"2.46.1-next-1613502365-d8742f9f.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613502365-d8742f9f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613502365-d8742f9f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613502365-d8742f9f.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-kHoQ3ERNr/CSrKqtnBfNax9DInBTwaH42/mSYEavtBd5MgbZj/2gVSoMB7kic+iIEGEnC2QtnjH77VZOOeUlyQ==","shasum":"fbe015d36d5e4e82915719d01062aa711d259615","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613502365-d8742f9f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLBj0CRA9TVsSAnZWagAARHwP/iHw6iKSIQP3pgYoytc7\ndH4FEq4G08krV2y+0jro19ZgFBbwkVTEgbfP58YJYxrxfI8QClHJ6FDuel7+\ntiflskcKzLbyriYNUhUoZjt0DghoxgMjW2tXCPbmADHxUdi1hs/llBLmNxho\n9RwDyGrg0erEL6BbEVn6SduWnt+HJPrqW23FplSrzs9CvWs35scZOzgQ5u/R\ns2A+XjPH2XW88FHa6gzOizmG7Pde+28WABKvJOIZq5CNmekUY7prGNiqZQuj\nY/sCmKGuj5s+dLw5dRnkrWaheucwizWmJqWdl2SQSA0TzEQiyBtivCF7ikSS\nWaUFqV5dYXZWCdtllO86xJTgBaI9n+67Z5tVjiTW1rrPHl3ZL9x/V3IT0S+C\n/MHsdA/Y95SxGatBWvk1z7YbMliOx/NnAmXxDjlA1gyqE/fXcFpR22hwu+RP\nB2yXRI13PKxMrj0R6UDkEUZNNn7ONI6AbVgci2sbjgawEWm7O/tUSfX0CQBm\n7a8KhrjkY41uXUaZjRPxnUzRM1Y9m7/x/y5qkgfqfJmUuVJvevkIjmDvCCzh\nuaCdAkw5N3sBOaPaiq87BJ1A9TazwxgF4Cnr32Ya0I+8bEC4XtXSzAGb9BEt\nAOl0oclXu1q59A71YMDBKK9rgKZvBmCQI7OXmtV4bGWU3D8e76nP3njpJiVT\n+Y82\r\n=WGdJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICjvJ7LoI5n8oW/di+jcBCOlsSDjDNr2BL891wmcgGZDAiEA6MR9z8y03c/iuNmeH2Jx6Bg7w4L77eI0E2qpKuc0i9s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613502365-d8742f9f.0_1613502707632_0.8592205729228233"},"_hasShrinkwrap":false},"2.46.1-next-1613503630-e51a1984.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613503630-e51a1984.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613503630-e51a1984.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613503630-e51a1984.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-cNY2vpA0M98Tqz74GKmK5eG05ds9z9nAeg2xuqHGCzS51VLtNV5eH7KyI1fQh+fqoxwiq8PJsT7KVME8Km4j3Q==","shasum":"a60f5b8de9ec77ec563087852ed45945f7746bc9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613503630-e51a1984.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLB3JCRA9TVsSAnZWagAAnCoP/3paE16bE/++OWmkprcy\nFYedL6DGr1cgMqx7VJ34IRKGCHxe88ZVWCOf6Q5cit+goDz5i0MXcySEnxY4\nDN4ytviZXdGOEmAs4udO4UL1d80t2T3C6hMBO8w4Y19Gq+PkDMOMMEXGuhLo\n9lRc5giFrpzo45aRxPEVfmrImmIuB7IYCuD7bRpUuoh+OoCDRD8cHStZAyyi\nVxwTGEmQvGNL3GPy+WBE04XNxyXMufm9/VRMdZH/qVA6ekRerwZIaNhKV4oI\niMlbLy6M0zjiEC2JeYXYGVTv3csA0LER1viSy5H0n1cmloZ0RQkCYA/GmxUG\n8w7Z+02AfPvi3zaMlkP45InYb/qeATjS3Df1Ho3wUzxqPALva1vE3XPYCxzl\n1s9E49QrLnRemxB5VidTWC7j46/ZHzrKejlDnFidvFJBHv5LFjnFelanYqql\nWG7ViJVRZzTzuM/GbD/ddoyStnpVKxzRUVJajqWZ4869R1GJgmGQqE8Kp17Q\nslGIrupKDjJhN9xXKsKGwCiOb20oo+AhFMMmFeOrvUcGWTALnLivZh5f13Xi\nazwwwleBsp28g/udnvyeJ5VF7TcyqckR7gAaaFcXN2x27f9Xy7WM+70KWkal\ncFnOznZjlwLf+cEk45h0O80ZlMtdUhrxR7TFjyOGWUwwPrVOlUr2jBPCezut\nNiu0\r\n=WrDm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWEe6KCIkOzD9Er+GDxrTxh5iN7tQLrjPILXEONVaL3gIgSFSpK6Ryy+af74wwYV4O8ABkn7NlQZnHtoQ1V5XPs+4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613503630-e51a1984.0_1613503944819_0.1606252316632395"},"_hasShrinkwrap":false},"2.46.1-next-1613506597-099e089e.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613506597-099e089e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613506597-099e089e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613506597-099e089e.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-yO9W/OEe/lG3iWIAkZXMn6eXK+nj0tMAzrI23BCM2PD0t96zV9NnlaiGm5P49QruJJmX0NOc0OCaDHnov6xKoA==","shasum":"27398db98b12b352c45583c5bfcfbc7b24acf0ca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613506597-099e089e.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLClUCRA9TVsSAnZWagAAG0kP/ish1cO2cgXt3WnERVmu\n3Rr0cwTGsMfv6bLL64eQ+gzUP+WPs1aRPTE7dBizzl61+zWGD2rJRvUEdl+o\niu3xHalRb6JjGprJh3IKYot5rbMHLXcinyGRG72VwXIKdLvDBzEZqhfLv670\nitWitJl/a8PQk3tdkP5EB64yIwSAAbDk5NYMWHfnOMZL86MpZpZAuVmvXr/6\nMFwkVeyU5rOtu7YT5Ll961dOY/gIxaij9PqdNh2sXy209mSU2hSYosGDoZaW\n6V2AaZoTXpJuY3gdZP9H+BWWWzHtHZykZvwWXEJWWJ9fywrS3wJDRNlIFtWn\nZzGDC5sbaiRdPXUUskt3nXW/yKvetJDHXphd/COyFvYF34lJrdjfM7VSyIgR\n2AL8xq2x+1qKQby8J754e5+grFLp0qC20/xiwzW4tDVnPk+nF41T4BaXpp6n\ngSKf34z+7X+N8SycqnMHPyAj/9fq/nlCFm72a9cWFmSPcTkduJ8UUCvuy3id\nlP/SfTwUPC0T5O0+U2FIJNxaZpc4DR8LmTVOBtMP2knNMoQKBblGYdHNd3mb\ng6bJpLzUUolkVdYOV9RTIhoH61HkBKc3TyNvVnMIDM5RXYaW+rNywJ7t3HXn\n9mfkQcV/5DXpPCkYgDixGa+4PiJNPFLVPN43CFDSPBKcaYoLknoOWIzqcCDX\nNv4o\r\n=2ZPt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCODr3fw8RVMFpBMsHohYFtgNRbTkgECwkACuG2ctGbXAIgBYCJQaQQx2NX3YFw4T5VJxtLbg01kY7+Ke2eFRqjKCc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613506597-099e089e.0_1613506900048_0.9230925050579777"},"_hasShrinkwrap":false},"2.46.1":{"name":"@xdn/prefetch","version":"2.46.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.1","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-j563rE2ctz7wCnh1mEEBKqJdnQMhnDyaPOn3jkg0Hb8uCpeWrEHgOEvAD/6bUX+rxPbxZOdvN7jheiO0JmExTw==","shasum":"fa6a069965b12ee9612868bcfc5fa636a8e9dc0e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLCryCRA9TVsSAnZWagAA//oP/1wkYqhZEhIk7Tz70HMc\nyE7nwsFxcFsSzgarblOIzR1/Vu/j7tCxahC4nhiTs+zTGthmXUX0PH6/WGL3\nI7j6NB9fP92K8FnNvcA8UWqKWzQCIW1irYKapHDC0ZMTvHcM8pmzNQXhUIzP\nQ6GlUf7gzZgabD6KoJTvYuOgCnfGTGa/EtnJzX9Ae4uP7pxdsFCtXSL/ybXj\nCctjwgLU6EOZsDFW/e2OCYyGw/1gY58hgQxaf28IFwD1nwBmJ/pkSX8mU37a\n2r3V1TY8YzCiqjWDjLbedCT26qYl0fKnifu8ZyNprjabjH82dXXlEa0Nxhln\nv98ccNg9j7Cs0E8EpdvWJbFyoywukyi/o16LGeHynGPzVwFLKk/VIlSMY1k/\n5FwetHG15t8qnloihh9gXmEy0alugo9kIh468uAKt+9kVHk4D0Iss6PCR5oA\nvTy3MBxLCWY8v66e9konaRVlcpjBXMuxOh74nWbJBFhf2BCMgQStL4GX1u7W\nFdAEq/4ms+e3X+8hw57Qm9F63fI1I2EJCPMUyLD834WUmLCdnJCEBwtdeHbM\nTfnmvqeNbSBVWM9Fz2eDCCUuRxpB2zV8UIG7t9unAGS3m1qcHGjoK3Y5K06k\ngPHZ0apBdupeset0sV2dhvK4hFBRFEIaBrRhJqYSaAviKSqOKmFOffWsOVU0\nv7iB\r\n=TAwU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFsR04SY2uAOq4Kh46TFTfRROPQojvy7YA3aw/0brToYAiEA5s0barwuUjOdDLnghApIQnWFqtSFvWjJ+GkSrNdaJPg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1_1613507313763_0.1576997539027183"},"_hasShrinkwrap":false},"2.46.2-next-1613507121-2f83578b.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613507121-2f83578b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613507121-2f83578b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613507121-2f83578b.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-A8eU+80sxBaJar40TaczlHTSI+Dex3gPtB9iDtnO/jIcAZrruHNf3ejikQU963Kuk5Z8Zoj9n+3Yc3QHiwtVlQ==","shasum":"1aa138e168a74115a7e86df7d0a0e9446f318ee5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613507121-2f83578b.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLCtkCRA9TVsSAnZWagAA4GUP/1rFuH97MEWQQM8TWGZe\nyIbx26tHGZvQScAKO32he0eny7LRjsvBYL1LyGUs+r79Rl8W+b/5+f9aY/IU\n3ZiTv/VkP24l+bpRZXKZasibe6JNQl/g2PdeCgqSgVeOODh2W1Fi/bBpy+XB\nbkhdOLsMe1OiZTske6Q27fqgGw+4tSP3HTSEEUL50jIgWGTr5TOYKn4Rkn6F\nFfmh0oJGidQTCMyxgiPoeKorRMKqivhK+evW2dvwPUknOT+rLtP6vKVDqNDy\nmdsFYHWGvVtw3Z6ewQULkBDROLj/wvngZeCvqYDLNNPYFH+p+1QRzk2vmZTq\n8vU7ftHRmjrlVMm58STAVj49Fmye6NkVLoBa/cAVHt5EukAULZDWecoYQ98I\nZAfEQikv6FVNB9jHNoB/CAsiOxpCWmjrqdr1D8yL3hPhuaWT6tsCedXlJXEf\nhIlCGK9oQvGUN8jh7qTGCsttb2lcvPLG4BuqrcO9kpITRC56oTrv0+4vYhaf\nur1qqAkjNQPD/9Z3D5K54WCO/5rwO1cdL9/StCP7A3Z/1l2jTKUAOZItvHsY\nWWTbQdTSCLoJkRtgF7ksg37vtzvyP2QhcZmQwTUkFIWZpY62s8yVKVV8FIQ6\nlIrmjhMf14rEmbViuBWSxtHwHwfcbD1Tf89gi67CnT7eN35x7G0UV7KamzfP\nIOq+\r\n=xuQ1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFfWv1rO626KchysZG4z58jL+GXLYhzjlkPp2xmbLYWGAiEA10rrgR4ENsrvxshjDrEXDjU2AGmnabiCfxfqL4j0Qq0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613507121-2f83578b.0_1613507427575_0.6228141406449543"},"_hasShrinkwrap":false},"2.46.1-next-1613548642-d8742f9f.0":{"name":"@xdn/prefetch","version":"2.46.1-next-1613548642-d8742f9f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.1-next-1613548642-d8742f9f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.1-next-1613548642-d8742f9f.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ONaUXGCH8iK5Hh+0gIac6TjlIHbuyXiei1Pn1tBpr//LWT10Yn0lpn//HA6e3TBqpdL9Whjc6Ag91yllLCZ9cg==","shasum":"494cb98e732c9761098aa44816c53201a25517ad","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.1-next-1613548642-d8742f9f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLM2UCRA9TVsSAnZWagAA2SMP/jsfYD+mglDpQugYCSAn\nVGG2H4LGU3A4f5+ytFHptdMgdw1twt0Rc2iZp7jS4uNJKp79cfic+PT+gXZF\nflkB/ieJj0HqiYNTt+IH/xDFEt2MixsOzVNlhwQP4wAYw3OSMACvuNxMLOiN\nkg7OQwGc/IGAVJDHKPn90RUoRdm8WFhv3/nLV3Qg94EblD6iBp8na40V5gSI\nTXPaqVb/ERXcj2HrYgXPkP5KQR2TW+UrMMLlN3N+QBMmIZcnuxgvINGWuHDZ\nGjT98KNMWcbQlWzWwbmuQumnu0a1BPw0o9ONbEFrur9dd3jcrFsrVsyVO/bz\nlREYWEXfDraaeX4hRZrlka8Htw591Mp7zHGhS+fV9OH0yMEwBKbsfMWZaGDZ\nvJJpAmDi6/VNQ13seOpKMsZzYFzVvfr2gEUJenWvxguPypUH/JNHHsmZxHnX\n+CZ3c7hHY1pXx1FYAiQ+Hj1wIVvzTUSSAuDZS9VKmRW+TdpG7BASjda8w3dJ\nWggbF7+cL+IeJgmwrVRaax8EYxBH8Bd+/pS/tpfmOGBxr5M9WOahqlnMpQMF\n3lpWIY9MERss54xx6tETcW6lIfahZLGhPodfYv4dCz8YryMufsxkQdPtmxFk\nBRU1SYv1G5XlmVEZ9ymOo8IwHhlSFboDiOGwXu3H8JybSsPRNP5T0KCRu2yj\nmH6D\r\n=z6Ph\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCi4vDzwEq/eIcweqgAN8ZWGsnvZOYyhX/8Td1rdXS62gIhALIZ6AZ0gzNQRZm71lSL1fzVLOrvLd5sL30ZA7zS5FBX"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.1-next-1613548642-d8742f9f.0_1613548947851_0.34460129562066233"},"_hasShrinkwrap":false},"2.46.2-next-1613555470-5000ac99.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613555470-5000ac99.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613555470-5000ac99.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613555470-5000ac99.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-lsMbyLjEmbuKZwZWnH1yukWiHNi/zIbJX4KqJ4L6Kyu+mri/YAdhCgNagvcUkY+z6Ho9wI/MXlwYWGJYL3XcbA==","shasum":"581052a69090918efc6719e6ef316581e0c1657c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613555470-5000ac99.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLOhBCRA9TVsSAnZWagAAjLsP+wXWXUllyqPWopZqEsdY\n1IuRhwwyUzbyFSzmQCh373J5ZY3FUNsIwCeOCgntjxDYbcFCd2fyPc2YObLv\nDveTluqjM8/VEVevwXF8fzZaLbUeGLgy+dmF8YcxC8fqcj2XKUMqv3N6KtLv\nZFnYUfW61WNJbd3JhBbFZSn37ARveAx3WRfw/fhBjo/TVdFBJdWDBtFAym5S\nc0lK/LXAferdYldXY9P0mFG1L3iM1FQf5Q5NJcZ3449+UoYXbu9xMiPLpa27\nlDURvZsHPTDPhtq2HZa988/dQ+lfRiYDAFYuAQ4Rq3aF0WfOz/vOHZCw2FZ2\n4iFzaOxTjmsEt8yEXkZ60Da6H8E92GHu9nuXPUal62xnrfx5FFDwn+pLfOXa\nzq6OYdSEv+y64GvC0Alr2JA4t9rsEZJb6Lh74mWU9dT9b+X5yd+4OMwOYWYm\nWp0rMAcY90ICO1/AIDA6sjwulEoop57zCp4wFc2Mm30MkDGI37Vc22YPPqEh\nXFr9cRs9DI4bh+SmZIISPNE78n/5hrvEv2v45yFHzLLiluYMdEWTuzW4qYRV\nLuUNXe3teFqDnqQqG67t0EzWfAQdYLajjUAwtbKGosdD4xrpaNbXTUD0kyLA\nakeapwWRgFt913ma0ZONUr+mqDf+w6g/8dzAgqPSi2u3lX0YJiy8C/GNIyYy\nmB1A\r\n=jSLa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGD+LFtrD59sF7PP2INRi4NGux/Ovd9dzOxKoT21+b+QIgd+2NKip8nYkoMwMAHIhEEhQdoAqFnTl41PaYfkQnlv8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613555470-5000ac99.0_1613555776566_0.34976842516408646"},"_hasShrinkwrap":false},"2.46.2-next-1613555722-1d542a18.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613555722-1d542a18.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613555722-1d542a18.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613555722-1d542a18.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-uaYWTMRrMuEae4DHvyCbE1hEXK7rDSCGiT/L0Njdqx+xuGNY3RcpBf4LUEKBT0o1Msh1WgpiW+FbC8MN1wKD3A==","shasum":"d94e6fd38b3223550b734d1b0d354a77485c707d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613555722-1d542a18.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLOk+CRA9TVsSAnZWagAAC3kP/1+J/mnPZptYJ1sW1g58\n6gOoHmkW7cTHJyUuOjVBf3odnzsEGrzYKcVUxwBzFNovslFgcms+8z2tDYkR\nJVmhA8oougWUII/CeE3xZTllwo0bBNPywbysMLzLuWtP9OS4Vxb07FvZPCHC\nMdxlbXLgKbRcdZx8uqLWE2WE/v+E4/gjfRa808JA8I/QnL6f8abOFGyu4K1e\neXxK8+yQfmXgFWoJ2JxX9svPooZ3hEf/VijIjqmOKA2eJScacScp0B0Uleoh\nzMQ02suQSwoRR8nIT69Fy8d7YSV7ycxQN0zylwc9oumIWQfH06QPMtPzbkzY\nlzTn3gATKxDQO6oddNyZKn4GrOJCcZRPzR0xMMOP4YjG5eZ9t1Y/1j9Vs2GL\ny/Z7oPo4MOSquwAXERqGzq7j0zEtH6gLRS5gLan8Fd6nKO9cBtrBZ0SsTGNg\njNrVh0UEtAcAkfYgxz+HHROx079RR1eIPkRSMMIMGbjJGivzEoIRRjt44nz3\nOL40Ux4X/2v28z8EZWlwm/gYIy2qba/qIXkLlcJ13EH7PoCdcOHtXmzdPMWV\nNP7WPznvo5LhMSX/uakxpwV7OxxpX7E1GmeNlNqnoC2z5MPeaMaQYboHBM+N\nP83tqQ4r9/Y6WRu6iNw3mRMAIUCf+FGOowkjfWfvYRZuHQOB20aU+DAGFwxG\nIMd3\r\n=4cJp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5MHv153h6cAAkG6mZswNFX0sRwWEMwxwlTlLu586PuQIgNLJ3OgBRV4U67VhDo6Y1rTn+j0FBmWHopy6w4Z+QuPU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613555722-1d542a18.0_1613556029505_0.4498362799844777"},"_hasShrinkwrap":false},"2.46.2-next-1613556851-49b4f1f1.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613556851-49b4f1f1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613556851-49b4f1f1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613556851-49b4f1f1.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-C8sUNp5n9LNy+cAAsKPQUla+c6i0mQIKY1BdE0bMic6qm78RcLPzYPtaUCTymMHzY0aeXC6mxscCBfLt1kSc7w==","shasum":"99fa12f700912c81aa8730d01f16f4885f2ac472","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613556851-49b4f1f1.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLO2ZCRA9TVsSAnZWagAAIfMP+wah6VR1XfFLbEcdQXXK\n7peGnmu1Nj+fXoV7VA6ypLSIzdhcBlx1mFjFJZc4Z7H7oKOG31d1qGOAg8bD\nQ7xVvoaHuylScRfhuFxRJkyPRpiwkE/DwqXoU6sZTDcD5YPtFKyYtsP4pPK5\n9iddDMwf+aGZZkBXLijRKXKbEgW1txVBdAcR9sulBQ9IWGx9PgzH5kqDfxnV\nGOQruZpU/ID9TXNXAU8oEFWPAMqsdTEenL30R+cP5UF3iAsT3K+5npAJwwJ3\nXCYaaF7QHTC05rLho28gf1Xlice3HaHM5UmRwnxEiKQegi/P26xoLN3TrJkS\nZZaFIIb3n9KH+OKwWIha8nhkyO0Ebpe2+kGge2DTJVup6KRWkASkstzv2s5d\nCKUzsaKAbOaRiSwDoeo7xmsGRtyMymzHqgH5iWKqJ/QX6Fx7iJFkNhOjs6vD\nTMN/ziJa50fRiydforPUSyE2I7C9e+4krhsRH2ssgb0BNiP+BpK7riTH0sZQ\n7NpWNWYfxid4QwLpiU7h/ji7iUXNuCg5YNAkM4PUaif/cEfD9ZfJ9G7O3atJ\nnziX2JWNWRWc5yRrdVZ+mmWuvTIKL4cLlFG3A9+SGczjLycNMWEOXAPzAvfa\nNlrs7j96nw7gj5kE2VV0ku6hCclthV3HUd2BeXvzb4na6p2fNAwuJhYDiBVs\nPvPo\r\n=HfxL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDgCHdACpjWUf8/ygn2DSPghIDsRv3MGz02qpuHH02pCAiEA/P9s19JsS/gSy3C15onXQKaHehRQBAyLFDYZ807IBuc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613556851-49b4f1f1.0_1613557145350_0.46130338716393204"},"_hasShrinkwrap":false},"2.46.2-next-1613558736-7caf1ada.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613558736-7caf1ada.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613558736-7caf1ada.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613558736-7caf1ada.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-APdf+YgXLtovNWysFFvt3pdCTc1/Q5jT16taHDAaVngYQq5YG00nwOr/FmYWp8LANOBQUzihaQpuJIZI/00Dpw==","shasum":"adbcc4102380ee4f915e1730de5e164564b53f34","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613558736-7caf1ada.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLPUcCRA9TVsSAnZWagAAuuEP/2CV488Sq4tBTjOvaDNY\nvCfMplJ4OowfTYoYYx+zRTmCdjFymuWyujAU8O8jBzVPJgwhRuI6Ien1221q\nBp/vgvReuGvvSS8yrMsOtcdSOGGRev5cX/V8WX7Y1KwgAqk9KCqr36oBXvS5\nwycUoRsPVNia28RVq1uki3PprPPruPE5ZR48oopJXrjViVOC06B+RYZ3BU5y\nDFw2Zhc+sabWUwHMER1m19M54XKFWlzvjXkT8YQsCw9JrWoY1a18vuNw4UqF\n2Nuf8wR/M6FtRH4g83MADO/fKhbU30enJTxqTJJNu7S+U0ko89ghFzWbcyf8\nRC4H30cxAih945o6RUeLe7m90ErVvGR5XTfSeVlBPF+QZ+QlJnTKg9XlNwGB\n4faYpmgmExmCnaLhG0tKflun3EGRd1Q5bxF6RgJatl7BEQrC2IQg435s7NF+\nZlHp0ZqXozwr5JN6Ls34JLuSm7/TWTOd560wSBVGo+d77tssgy15vL2W8nAV\nqFNR1FADs4E4jBQ1+/KjOu+3l9WhFWQLfuTGnpdfPiV1smPCD7xU8vAZYnNs\nKzHzv36QcfofGjb5JksP4zkWrtmNC5INWr1ur/X6rZEjP3cgPXfeqRaKglmK\npPm5XMKbnXMBGEfR2EpCDtpJAx4UaxEGqnYpftz0GL9RhTmKc2t3atheOh71\nvRIQ\r\n=oGc3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdtVvQxJhWc71ej8DzfTNmzyw2cVHMvjmT41B/w5p1uAIgeTbl1V14Avkp5I+xV6blWJYMl6XxfNrIcnld2j8154o="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613558736-7caf1ada.0_1613559067738_0.7092103982808398"},"_hasShrinkwrap":false},"2.46.2-next-1613561160-1071c8d7.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613561160-1071c8d7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613561160-1071c8d7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613561160-1071c8d7.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-xEjY3vvejr89ZL9WBaAPtIwQ8guLVozxO6JszIYih2QUrQ2VJNUNj0fns4qo9Vc8DqsW+TvEt8oA1RGNDw8h2A==","shasum":"cb7b902873a3256088656304f8cd556cd4085a62","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613561160-1071c8d7.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLP5kCRA9TVsSAnZWagAA2MYQAIiZAvyiTQx7KpofbeGs\nesZ3Afuawiv6UsUEQrC6YVzPY1suEbwebZuqJ/YeAlJ8wFYOAT1JieWnR+rS\nMBC0qNSTipunVyXBZWjsbHO0UpSjuflyQEsu/h+dbMcDix7EPoHomoD6gqQ4\nmvzU9G6qy8qlk2dlg/OzuUWEf1Hxmgjcyif4OUWq9+O4vp3hu1hqZjWtd1TI\nUk4jr6y8aeSW6t6/he+4hPSzw+ijZn+lX3krK6PhIhQhUFffTp/vXhg5z7px\n5IeA/+ncM4G3fiDuFS9M/R7KyCQDWS4xj7FZnJWeOZ+UAgwZXAkv2FajMaIq\nA6x1cISggyP9imO1bX72V1N3ykgMtLeUsL3s4G/CpFdwlcpb0/oU5jWPHo3R\n3B9tzZ+FY7QCkDNB+oBMyr31FSfCoPadFLlZXtdaKh7UM7UO6KYJZCZR5Vk4\nFomJCZEOnFJ0hiYhOFay1dYI778eprT6ISSqoaXjxLlWu0ta5MqJO97gqUDI\n0JVkCgodgBlzV545uSjkxatnPr/HpgWJTPqCyJOMhNcW6KttbeP7a+EOeiG/\nClGlhGyUQbPpzWl/50GTQ8iXVRGbxsAGD7qL+RD2eejLZASBEZ8J7Uwz2nLc\n0WgvExTsXVrv06ijhHrKpR83vrVKxGWDvuPIjWkI/mEsKvHMD47fE7YPWJj9\nJBCk\r\n=Q4Pg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrf9LvGr6O64Jo0YCiNaYXhu0Ml7438H9OF/kFOt/quwIhAIiRzmka4u4Fb1M5B8oHjVfaDNhknwHH3d563zpF+7v1"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613561160-1071c8d7.0_1613561443479_0.5300739426204111"},"_hasShrinkwrap":false},"2.46.2-next-1613563334-a5cc700f.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613563334-a5cc700f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613563334-a5cc700f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613563334-a5cc700f.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZBqK+AvvdzoDhvfkzPrWyUNxl67ylmQtbUtXWSuLriY6j/2klKJ2SthjbhTluyLf7rY309ayKA99ntO9rOtgXg==","shasum":"cb3f4f183a7df7d93164cc471261c86b4cfe3cbd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613563334-a5cc700f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLQcDCRA9TVsSAnZWagAALtUP/j+Wl9aMiYVlnX2Ff1qH\nsBQzPwvdbIISsIedR/xaI5YSy5oifOb7mDxLPdOaFCAnZv3J9Bjmcu0T4vEa\nysW6zOewDpm6GgIbkWRxnI7aUZ6/vqg7joEeHr97R5GaqccZbc6/sQueRTvi\nJRh97p20/osfJKJHpPEMW9K4a/sLHCcp43N2snP+Svv2FMp76swlv+JxR4vD\n1RHCmCB9VTuDr13O8zZ5d4OmDk976zj/hOLCPUKrJCgrEAjesXFLPlcr7Z5a\nNGWPw6bDdafT0kanxyPJkec2hK8vMr49tNYEG8fFWA8PpLN2+ejm3PYJKh3W\nX1wGZGxim7CLxfHcNt70oGUraHXBaFuXf8oSalhuhTan4qL8Z3xtFWfAjNvd\njJIxIJqPLi//85/q9p5CdjpvVFCtAJ1gmX8N4WNjLEDQaB/fahaR0T73EJen\nEsCPY+KvRLB6307JSt4I1Hmn/meE9XQDKwaFHC9/H7Exp7ax5ctW7UpFBKEi\nYO0ibuiu0tf/Yb3k0BkbPFhugWUq7ALzVMPtmJYPCW7W3Rweww5fWHjyBrRq\nZaF9gm2UP2dRcWsNFsRIWbVHXulQVcnel3jhU27PvXWUTs9a9fdBZhYsgQLo\nJLDpqY3A58RDAsNIWwwVa2fR7Mk15W2S2KpiUzcDKUhmiRjsSP5L3mg93lPo\nDyEn\r\n=BJfQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8xNARwDZIyczMmIczuDIfREQDcBZ45P66+2f6UJgAEgIgWkyydsj9mxyRMWEhDtNcFjInX//kZdmFILBqlaaBDmw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613563334-a5cc700f.0_1613563650922_0.36538053872339904"},"_hasShrinkwrap":false},"2.46.2-next-1613563536-db2e3509.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613563536-db2e3509.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613563536-db2e3509.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613563536-db2e3509.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-YG0D/pTJ+zgk+wlR8D299VZS7afH4WflQZgvemrj3NN8c4xwZ5cl90q+44gm1hsvEEGBqa+iuO2WvyxMpXAswg==","shasum":"22b15a95ce8f36bd221c2229c18187ed0e9d5230","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613563536-db2e3509.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLQfeCRA9TVsSAnZWagAAm2IP/2J6yvcMBXdtyVGH5EAB\nfniMtBP0Cs5+FOEVW6PCkzgMF1ilr8iM91K4PXGZkpRKnklNnYJPEba06pcf\nEraVHkZIxFGqriik5fJClRs253wbhm1iAXE4jEY6itow2f26m6YnEFrImZKa\n1YVyuzK6hspakpt6bVWu3pSvEvPA4A7EX3f4aCjbvwXL4JFvQkCAF5yBVq5r\ncTiGow+y4koR/G8fac3/Te3MCwqJJ7SYDsFHPIwHTqahVvoygf4iPw74RkYn\niWFUMpUdAYQ4ayT2gDznM+7VHIET5xraSjkDDUyw1Zt8nrY2E+wkDswm7wEA\n+n/3fllN7APjnlQkZQtqqdQfStzO/09kjq+5suvwcvtF0WRX7fqoNQAzd5Jf\n5nu5SAbd7sDCHizJhif8OjROvTS3Vjd+kKR9gu82PVbgdmPUxqRs7SIuRXfH\nf7757TYjxKUfigsMBze+6VSKvvlidS0KOhEkuzxraVodXIxZ0ssFv+srnmLB\n9Z463KLF/qAELkplxQeizQvJk0oGTn7aiwFAkRD9QTCjOyEMRNnSX982AO8i\nlN12TM3D94rfYBIu4aROfcKJ0OxhNMY3Jke97xPLQwBqstA5FC7+MLWnRfAi\n9wLbxkTMtAl55BJPkXG7x/JezaIZ8+LUyEj/+5egk7a+GfsvK27F2Rvjvjrr\n9RfW\r\n=9+9v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVxdkgy0pEVOtIDhXBOy4xKVCNhjxY4znUrbAJQ0P7/QIge2VIW0JSnKajJshziWA7i5/ZPbRKCjm+GsoQr0XwNgM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613563536-db2e3509.0_1613563870072_0.7396112333107987"},"_hasShrinkwrap":false},"2.46.2-next-1613566082-30ea955e.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613566082-30ea955e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613566082-30ea955e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613566082-30ea955e.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-vebaTEqUehjH9mHT91kS+AMGSh/pn2T6SDdroBH2QmidWMOCNiI3ybCcYAMbVWaw6jsS7ilRFKeXjsBf0M/z4g==","shasum":"66d61eab7f2ed21f3b93216f95397437b08f8806","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613566082-30ea955e.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLRHcCRA9TVsSAnZWagAA0J8QAJY1p1riSL/AadGR9TL5\nBgCOHmOQ9qmqCz2+OGNTft3tMmWZow2VTQmj3O01Oz/Gb3BuJMNeFS2pIbCm\nVDs4x5b16gpyI5frLbn5wPU1DbfO1HTx5HbGuUt7M7RmQTmXrESn7k6BAkKj\nggsT7Mt/pW4eMq2grZQtljDXzUWL2lEjpxVnKgsWvRXxPruFIQLx85lFrX1V\np0Yfkrc23ceDzIf1T0LEyKHD7NjrS3/QFcIBZbgedcG+M4CL/+X49GoKeFmq\nQ+b+vSXXa3H7JHQr+CadY13ETlzeyzUy4AdYoxCIBoT7lpEZ0UZEsEqdzol4\ngy7/Dxz+YcHleXQXN1XRmCyfnLcM/dF1rfdEI4Kqbpp2PX9XFUlaQ2b6K0m7\nm9QM5M5T2DfuPRrfHpxKn4Elfp3Lc3t5z80olqWneh+DUUbpAiA3Ioe6OkzY\ntYQWt2KLVd79EesShfxHxlZL2xq9SHdsZOAzwCNo0RYHe/8WHHB2pF2davyD\ndiX7zFHqHn9uyb7Kjt6iCyIZt7mkWCCZKr+MEFkcBc3UaA7nFlq51XGChCrP\nOcCiAdNNT5EL9Z1QzWhVCApNnNiRhZ8bJZ8KQGOxbwjyPlBFES6yxxIc/0ZL\nZ0rIcCFoqS/OiDVd2yeCGg6iU0m1V72yox50k91dOmrGnmn2RNgAJIk38YjV\n3nWt\r\n=xjEY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlktD4ZLA2TZAIJZlXUbru8VrNiPdIwDNtpvOqsknOqgIgSNvlQbR0Gn+yn36E89KWIfk7U+6vl+XG3C+qNW9mHwE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613566082-30ea955e.0_1613566427359_0.6777269270949768"},"_hasShrinkwrap":false},"2.46.2-next-1613566256-660ccc31.0":{"name":"@xdn/prefetch","version":"2.46.2-next-1613566256-660ccc31.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2-next-1613566256-660ccc31.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.2-next-1613566256-660ccc31.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-HpVbyuGi61pJuZaP3mUBREyABSLMu1xXoTRhq4QII0WOseQVz3+tpAJusOUGM46mbjbJsv1jFf0gngF3q8XLZA==","shasum":"5081e9de81444f8b3e227807698b7ca73f6bafb4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2-next-1613566256-660ccc31.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLRJDCRA9TVsSAnZWagAAnqgP/12NU/2BoOcDMqrF3eHe\nnxf+Cyn6cY7LlPeJM28GT9sxP5MW7AyFpXx3GN0CvpjRR2U/KgRbf2VVxVYw\nB87GbR1PZHdmqBRu5E1IkKnvYFVj3gt+9RoSeq5vTBDUh2MmWVuKMdMqXYP+\nzc661yd0d8Xf4Py2NWNSK5Vjz8JS5/C+Yu/sQjGIk6jZJWvTVSNJVnomm6ci\nXDzqSh3jln/2oWvNdskJx3Mn2vb1rSCvKeOfBqZxww/lPoIJS6lN0aS6MjQW\njN9pZn3DSdt5dmLDek1luXam0uexke2hWJ7cwaaj+vRTEQR6p0hiIfrzRnKH\nmZtNXQiyblDbNl0mowvfOXEozYBdquR2kzJoAIpY7tsRE/sk8o+IE+N5MZr7\nvVurF80byXEyrJ54YKj65pSuMPOV3ibTbsrxktEjzroAe2tksp5CvcX6cF0q\n8ANyK6oXmqGyjFvP0AhArINaEhdf1l5dlxhOsNG2dfhyWgGk0Xh7l25xPAwR\npoGsxSpDEHfRca4C5mCHd0NPao1zzZO0KwniS1TRmGRrfIBSK7U32bAtQrTQ\ngWjFUnkjJypf2z6nVuVaIErn8DIbNNFqDE9aV75pa1J9UEsVmBtlC2jV3W9h\nnn3gsLD35J3gqFuMXIzphj63HVRy4RtpApQpmy3RUsA1kWQkRTvb6uMJ512r\nUj8M\r\n=V/Et\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFK207KC5gbZW+C7bSXgTpcln6lmY1bZNJlCyy9067c7AiB2qJSLhe6KbknBHHzCf7VSQZ4wXJvAPNw4HrtFGUptNQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2-next-1613566256-660ccc31.0_1613566531189_0.19987329819365462"},"_hasShrinkwrap":false},"2.46.2":{"name":"@xdn/prefetch","version":"2.46.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.2","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-GTfhWVg5xl202pcof7rv6he7akTUSc4vv1eXOytiq9MOAbbOSeOEmrsUfYaI6y4NWClWFuFtYb8KqhO5praQvA==","shasum":"302e58e13930fd15db94b06b891aaf2fb3c05d71","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.2.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLRJoCRA9TVsSAnZWagAA6REP+QAMlg4iu5XM6Hs9NQY3\ncw6zlTCkxdB4Y+gdMfoAhyJCXRMoHWhPRynHrTWP4vUcK8EUMGgzt2xTst1x\nt0HutPhxj3eFgUqWWBb8aW4NJilqYVTL11I7SqR6VIPaog4q/+jLlkxItdR5\n8G4esfKOGCZa1Al5LDQnhYXbBxQAOt52K1tllmiOuALk13vH01GSnFCJjhH5\n/n5AxZNm4wZB1e04HgfQKoaHOFaEykvU8KDzr9xXWaHqR8zG8aKESb/lFpHE\nUUgZh5J5iyRFggEnKRIH+qLOluVY005FL0XIQ3uf2ARu4Ucaj5hGm3QIEvAE\nDYCP0cFWSlhP/K2yP5LhFyOI5hbsrDb2i9iVVM0JyZKQzOZz1fA3OzTcmHki\nMgG9pFfR2Oq10a9/vMUheEG8GjMlPyBt0v1unN3JuTuj/RF0xhSH4oa0ScIp\njAWNmUhqSdxxJrEW5vKPsrXEZ2ZXBpG5N+Wmb1sldZqX8jcoXKAY0Iyr/UlO\nEGqCPXOpliU14faGVs8r8s7l0MDgCA+T7RcrviDA9h6yZ0dUWO3HpAIjeR0B\nD2cSmiJ8mKQPXXRvL2DHftFxrHy/qGbjX4jQT0eTV2oXP+VVZ7sxSNcYWKxX\nisUtzP2Fy/8PpLWx1TiqJ6eSsWYds4DfaLJjjz8EIf6YwaQhFiZkp8zqvqnu\nz1fq\r\n=AlB3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICnLBylzEMn8weIvNbclTraRWbINZyen+5mdpvwVxSUzAiBDnG71HCRfZFDB9FBtngZqejffKEDNj01WuMJXl45tHw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.2_1613566568248_0.08155591229731196"},"_hasShrinkwrap":false},"2.46.3-next-1613566400-b355a0bc.0":{"name":"@xdn/prefetch","version":"2.46.3-next-1613566400-b355a0bc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.3-next-1613566400-b355a0bc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.3-next-1613566400-b355a0bc.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-+9rrbWeWGJa7au9SeaDlGCdVuIS9mDdf1VODyxhT3uERiw61q4NOerq7mPstvSAiDb/fWsKew6R6whCfoFGMiA==","shasum":"233d6c45de7656895a21a9f9f470bc59484f52b6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.3-next-1613566400-b355a0bc.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLRL9CRA9TVsSAnZWagAAjHwP/A2/a1MXdmN05hQdMA+I\n8dI7OjMxeduwGrIhWh0E4oh7djtXEltS3KwUciHPrMEEnhFZCTgTYiTY2zxg\nUn/tqyxAtSnmXf0oue39o1Ug9Y8HPy1WUKJkH7HIr5p2qjgf7qkbTVG3CMe3\nxFT09yyul6ELL6CB5sm/3fWQ4S56pdcWoQ4CrUxWQDfPUHMqgxs9nG8xbhui\nF+iCM2QQdUlUlzjTCqbSHTiNy8FOmmkcWU92vxxjjQ4lvE2M23ca+EWVvW4q\n+D99biq+gjBVXDCrCf7xuo4WOrvE1jjTEmxk3jXFPTjQmZibm1b6+ooNhql6\nf9VDWPgKDmXYjeTLB6F8R0Gww6VucrwEan1LpFOuuKTVINxnnnJ9FhQQ6aB3\nYmMFJYy2j0vAf8cPjuyDv0Lbvqo1NZ1msv8V54JL7tku01Nv144FsIgWiiN9\ntiuBNXPE3DJ9cO00WBzNqrWtHekzjbOD4tdMSuJeTcu/PHkgMvB7HmlCNs7z\nx3fDdLf7WOzvy8A0CgHQMfYAaafdH7hCzvLPgAV5e2OGjcaFofusyQndow0s\nkcx7yfkNh2/Nxc2FHxXmM7q629KDDYneHpNoQEYbcCbuVuAFoNeX1AIuvV9H\nStyGbw7gZ/lR6kQHLh8hPX1nqfSk7U0QIik5g0dRPnw2O/Z5IgNU5lqDVyss\n03RH\r\n=eQQj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEk8H8l3rGqzfsoERgoJ4FpVjUkluk68aV/An147AOJwIhALdAEa90Z6VfJARwgYmAE/xNC0f/cpeCsil8Xwzw38/b"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.3-next-1613566400-b355a0bc.0_1613566717246_0.9052296629141998"},"_hasShrinkwrap":false},"2.46.3-next-1613568896-2b8d9669.0":{"name":"@xdn/prefetch","version":"2.46.3-next-1613568896-2b8d9669.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.3-next-1613568896-2b8d9669.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.3-next-1613568896-2b8d9669.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-jxBMv6h1wZVouzgDetWH/7HFjuqUGD+TUjBuNf0z2txD3BkmwVsHYaVC+0TflevJMeg/WfJae2tWBjMn0ZbxxQ==","shasum":"03587921377dfaf98ca3d6e9059de2173c9e1a77","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.3-next-1613568896-2b8d9669.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLRyvCRA9TVsSAnZWagAArXcQAIQ7weITQSnNpPhJcaTs\n6L7/t8Ggw0M0MGNLOVrUGdQ69o11GRGuSg8psJmR1gdM+t/julhsqGM2QeaV\nh7I5MNc9cuyxiS92FeCGTxLjAcSGJOZATMUCd4bQvzep4wWT3v/m4tvWTJP8\no84IsKmu607gwkABk/oROeChh2RRjTdM1l2aFt/Z0SoJhzMplK2hRWNobUhl\nbbXCJVThegz8pL3NkzVoMDi9QSRFjkieCK8ObljkwHZOP+F85yeQKFR5crjC\npdPPvENc0vZ+yoIhs5WQKFwCUC6WSQje2C99lZcnmmYmRYRLk7nvRV4Wv5ar\nwSdNsyQb8xMPTvvVYE0HBn95Qx7J0u+D5fGwasnFd1OnGf9j0CWiQM5DoG3J\nO5YK0VTNv4l5y0NZz5r85GOoGqoDg21NFMiO60x9Jk/NJ1EYcDSye+jDitTY\nU2ZkhWCjUqa6km0p7kFg4QYawPENjkxVzwtRoreXVJZuJhDDKMHZiAalEl/q\nf55Unuri/61FaezuSkBYUezbz2ypUeealqDyScE1XQt9QxbOiCOOPJBN/1tp\n8EcdwyLvG1v+rqv1LTmpk5TI0AxrrhFdkdLwL6oa1RNPNojLd0gu2WVdczc7\ncrX7+NmMCQGbz+X0Bfc6NNzMPQiV06GD8Gymg2jK/lVGvhDRkQwPgJ3+GU2q\ng9pY\r\n=XBR4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAq7j5rmT68SmwjCo0pF4mYipG4oJDBVvZ72/CfYl0kwAiEA3fM1DLJoQ+nIvruq+8jmM3cvVxp9J9UaBVss3udHhNg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.3-next-1613568896-2b8d9669.0_1613569198533_0.7973388905852326"},"_hasShrinkwrap":false},"2.46.3":{"name":"@xdn/prefetch","version":"2.46.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.3","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.3","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-G8SHVlz3QKw6bz4gf5tpob0y7GzlE4NUWz24OaWpSKQ26bFXY7t5PZ1vvZQz9MFplXZ7nHaVRgKAItyllQSKBg==","shasum":"4eb2bba378522f55ab78d385c13baf982137ae65","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.3.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLSr3CRA9TVsSAnZWagAAmt4P/jg5vY2ZB9eABHngYcrF\nHkjgmzrOYquOlyqHxjSKAOFiRWt+PSyMYWSfiEX5f8o5geuQ+2FUFlqagIvI\n4KqCtUaCCpCWrg3YPacCsEfvT0ManLBHPCTkMkRYHxOmrHcFz7Djg3LvIG53\ncvujeOXkCQ0YCy+Kh0ImiYO+trpQUtBiIocHhRJgVzbgn0iTez1RZbHQ+Cg5\nG9IiMp1etHThQzokS0LvG7Qr5DD4ODGu4VGHHMVnMPs68ouhus3ggw65EbOS\nRG5zYiNw9iGLYe4W8/hwdgTm736h0EnCLnPeBV4btlICGyFPcxlrZ3yuCKi3\niUbSXwUTI9JTwBgpsCyiLuegSKDQYtwstuNsTDWEOQRsAu5+cMUSQxzftFyA\ncDk6z6SFDh5paIxuHdJzQ72aRDLFziUIjUNeYSygZTK0zRPRL8ZNhOoEAK5u\nKpHLmmaq6OwuHnvlj9iE4CASRgtGoqDcOErUciBh/p4hFWMlhVH5HdHr2Jgn\n7TuGPVjgPHY0fNaioUYlrLnURIA8SzKfzX9Setl2yIfhvP9WM8Escxe0fLur\n2Z0y8t11L0EuN6hCStTy/mWunviVtxgj10lX7FhVlx3hOr2MMeIDomT0rp4q\njVpy4m4EBQngWNrnMVmFxHjPIrSSuvAI38auIZ1YjV1mJJNL0VQ70SkDltXk\ngkOC\r\n=RSmu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGXhPxzwZNXaw5cQcQR/0U+T08e52j+3XxtLEnGqdlLjAiEAzYTkxMBVthrAa0wjr2cndtDoy6rlX4CoXeHHNYmny84="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.3_1613572854670_0.5817943228041096"},"_hasShrinkwrap":false},"2.46.3-next-1613572600-e6c71766.0":{"name":"@xdn/prefetch","version":"2.46.3-next-1613572600-e6c71766.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.3-next-1613572600-e6c71766.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.3-next-1613572600-e6c71766.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/+h9WqOW67XcdOI24LiE0/E45j4R5vvHGcWOtN7XCqdTnxEzIroYXTDnuRSfTUup/Q+URvoxrYg6ZkTBQmt+mg==","shasum":"dc66aea3ebcabad54cf8149625c971511d238040","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.3-next-1613572600-e6c71766.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLSstCRA9TVsSAnZWagAA0ukP/iXyCbRr37LFe7Tq6663\n/qwzXdxy2DXlMdahV4NxAvzNuZWc25PSZt6coBrhmi3dieWdOU3IZCKPg2A5\nhW7OyRU9BcXKhR96XXXIk6MQPmL8dceMojJ7mRHY/rMwjKeSYCHlnlwwHa5Z\nSONprqEBdsL3R6er3w7qHQYCrzBRFC3Nmz47baxvV4Z7YNU8qK8RWbNcuDPj\nXGljOIy1yM6tJ9xyWfaxPI8rRc9AU7SSxFpG7NiJ0KCs6NpjiHUv8KWD9nG6\nXoTaJ7oGKT0ctxdiN1m+kvSuhQKmFHivxsUh+rKFusYqCO04RSjyEOIoOvSH\ncdHyelUD+9nEwR1HvWM2U6XEmKxtqpGlMb30Vjs69g4FumnqYMgLaDcwBqhL\nFvfjXA2jYhaCrvY/guSuzSIW1IQeVSotTe1dWF0tjNROOe3Kik5vXmkPQgc6\nXsPp63bNJ13ftzsyeAu4pxcMBLG3vHCmft0nkm/H5fFJSt7iDL/hvaFnYkMj\nD9/NtG4EdTxjTJd1wZo4zOTtdn9wxN3iRefDCm3QfFWqS0JiVnaO1g/nTjWF\nWKrgJR5vSaOaSruOwhVr1954UqOyBIerdBJoBAAO98Y8ma+34Y90+0owCSbu\nS3t6pVGky/fb8NxxpoKRA2iEM9gYphwkwZE4gZ6O9RIKKr3dxvMFisgxwEfe\nDhDL\r\n=SB2r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYs31Cf5+PgdNvlmFEpCRo6vi6v22ATRc/fsHnWetxDwIgFs/5OfZmTneh53cFDHfk9DxeKariIdni8Iq0VwtH6Ek="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.3-next-1613572600-e6c71766.0_1613572908595_0.15649559784991318"},"_hasShrinkwrap":false},"2.46.4-next-1613572650-e7b6bed0.0":{"name":"@xdn/prefetch","version":"2.46.4-next-1613572650-e7b6bed0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.4-next-1613572650-e7b6bed0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.4-next-1613572650-e7b6bed0.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Ax6UAnDtInI8ySasriLLCEoewShUJhs+IfF4Xe0Jvr4jy6+jBNjoaIknDo9fx2eTbMqXlY6bXOW/OymJ8lnZEA==","shasum":"436aab8edce8c242b7c90f6f9d2309a1fc732113","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.4-next-1613572650-e7b6bed0.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLStqCRA9TVsSAnZWagAAz5wP/3TB0pEvsgzwM7CTaHka\nxvoBcAlFLh37GbS3dKEbSIEoRyAV65i9fWMgSyJ4YdQefnuhIa5HI3Z6onIS\nlh435aSOcdLf/PCde/i4GLcxb/603nMbJ6V3wWGScodkSxXX7D2hJadH6cY+\n75UE6E6v1bTbqpIcI353eF7EWPpAKsMuhBtx5bXBV6mAFiBArOi8Mk7/b5Rj\nHz4c3mZVZpAdegFWqcTnU17kQM3ZvuQ9LJXn+Rl0BCLIUuFVXhMXmwj4i28C\njEycqeXR7p4PTBrJdUa7t5FpWYYH5UH/a2o0j8L/iU6p0mJiDmvPvvXvs00F\nPmdE9V/OFQF6PiWmx6IssakEuVimVuQC6Zn5yGAwcvjfRB4VI9GA3HLS00dR\nZTSjc4GxOfvXdg9SWarc5TJsZqFIkTharQCp2t7HhxQZW2WC1I2r/HM2cBT8\ny5Mr6YlcmSWY4/kfoGcAL2hmJHpUJb0sl2pmhvs5IOd+lmbH59u4DyMHndUX\n3dNjUkedsDTsIifLbMJ0psPD96smgqu3QWf1UWX/C6BQlAU1lc6YXyl7LmMO\nodSVAWHLk8Sn4CP4CLYw7Bn2sr22gb/K07HJW2ifvtKxVvHSZOPEF2KtCpF8\n33DGBT4d8z4H6kewi0nTK+e2jNyyJjwoOapSe2TjwtxBRhfw0GJDMuyLSRtS\nNZUt\r\n=c7eP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqPglfEg5sxf4mApNlPK95TRL+LqcS/yC/m/mdz1jSxgIhAN3j5FZ4VMGoyzDQA7MxIR2dRwr6shlD7UWN/0/p9JB0"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.4-next-1613572650-e7b6bed0.0_1613572969657_0.6414930994644379"},"_hasShrinkwrap":false},"2.46.4-next-1613654729-eccb2566.0":{"name":"@xdn/prefetch","version":"2.46.4-next-1613654729-eccb2566.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.4-next-1613654729-eccb2566.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.4-next-1613654729-eccb2566.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-OGkEmihdBo0eRHSFsHiswC28pDu+TIYGPHjP6ugUzt5KKPS/fSeqtxPq15Cj/+9ELtu9D4jfD4yliZ0Hz2chLQ==","shasum":"57dd987eb195ca939f890cdeeb3d25478abad463","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.4-next-1613654729-eccb2566.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLmvfCRA9TVsSAnZWagAAbc8P/0QtE9h7DxuNgsNtkIYs\nBkYGwubX5OAVm0YjsslcSH9aWakbelQoQZAAHxzbFcd/lYEoZhiQMZ2AyV5i\nGACfVbnkN2PO7F7vgMWrozFYvsNkfnIwIwaqJdiA+TWII2U8KAgA5kucDgFg\nn6FlLlqL6d719XKt2mnQskeR9zjB4w8diwEt/eWKRD+LbVpZknT8GVRXnueH\ntHGIuEhArrZBun2mh1opq/E4ZVBnMknydyhmjNukPkEYMonZEp9LBWDPuQ22\nUkvQqftVKKqMMHbqKOFQ8pAT/0/iDmiQyToMIu+n54CDQy30ZEi6Lbzlg0tW\nwANmNIQ/H4hy4EKdDHq2GXfyuhhfQDRaKocwPlQ3ukUmk7znqt9x69fqEU5p\nPZ3VXPacQSf0WvAZ5GwFoHIF9dtQilMbLLmm3w4aorLcOinh8qX7GekWpZue\nRckXZqIIyKtnlddhTis8zE7Ppuae9C6VBEe5V6tJH2OShw+O0q93SmxaY4Na\nkm0L7CvHBVuY3i1XIVbiRKNYI4l8HpFAClDsHugKyWgazQW2USCnJ3YGyKlY\nL272dWfGPWvZHhAwch6LiaPr8VKU9hHoUWOSk4IQoqSTLR9VxyruYLul7pi5\nO/jcDWepM86Qbo4iX3TXzTf877ULdZoBNdxS8v+KsQmh30zgVf1/jhxPVPso\nWz8s\r\n=anJM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClPKuOliihR+WrgeC59BHyguifwfb8z8tJY5/R+Za9qQIgX/gL5JKY4lP25AI1/UB45lO/i/SX2T0KbepEc3Zfl/Q="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.4-next-1613654729-eccb2566.0_1613655006079_0.2390951750487298"},"_hasShrinkwrap":false},"2.46.4-next-1613669643-89b4938a.0":{"name":"@xdn/prefetch","version":"2.46.4-next-1613669643-89b4938a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.4-next-1613669643-89b4938a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.4-next-1613669643-89b4938a.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-17nA7DPciGAzGvHHBMzsvdk8wSpQr4TLr/ze+MKxrqEl3WFG+ul4wEqSeRw8TMdGffaNYqDfPZ4EAumWdflEXg==","shasum":"a37638652c02288a84c9f253fa07476d43796657","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.4-next-1613669643-89b4938a.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLqZQCRA9TVsSAnZWagAAOVAP/joKkZwMqbzhyjNn+ilx\ntQCDkrLlJAJ1aRPT+zhOwL3HMCRPTAXZxpLVYJRdPLQ/uPE0kPmkJqH5FUbK\nbh2gbEJf0YcKj5kj/sKUA56sf99NFGlcIJSFZi+QU3ckrwqR2zcnwcU49uRg\nCip2Hrtx/Slk5Kn4u037+jA6VMMC7b7gxWHJK1DYVLFaXExDDQbME8iZPYoy\n2zXWb6XkPAHmymAVdqE6+w7/kNvHwntyoi7nTkR0CZmcxs/WP5/NsPVwWV0/\nU6zRvHE9geu6j24RKjNHHbn1NgWk1CBR7EYayDiD3d0W1YFCTmwkOInfMee3\nOCXVkA8rXCC0recz2LWQhLWTboiTF7FkSzOGSlAZLv1vw2lzyIJ+mru/Frt+\nIaQsMoKTd7vvAMfmoXYnvakuWHVefh5f+Wf6q6kzZc2+MMTNNhmceNGxEQAN\n63EgcQFdpSzP4Oumd/q6N3KTovIQ0VoIyPzbmjrqLAf4Q+/nqrnEXtwa7r30\nfLrYFjRG8FDZY/Q6It2zF7hF/MNUA+EiMBLoA774DQxjW8H3kxlgnjTKrsvL\nUA6xM4qLJv+wMJYZF26KG4Xm3X/njGxRnrjIejdmzHyoj4ObXjSrTpkLUksh\nBvXCbwXbWqpnGF4PL2Fl1MY9iRjDoaoEP1W2ko+hwB7ofgTZmNRckjdds41H\nNKHm\r\n=4XCT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEYIBddVliDk9pCWQgf1o35++dGjyzZn1Qm3iHtMhIRHAiByWPCWtEWY5ZCvxYf6bnUIna9giZ+oTHy6QEaAxqBzSw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.4-next-1613669643-89b4938a.0_1613669967853_0.4912502435600572"},"_hasShrinkwrap":false},"2.46.4-next-1613669820-e5b15ba1.0":{"name":"@xdn/prefetch","version":"2.46.4-next-1613669820-e5b15ba1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.4-next-1613669820-e5b15ba1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.4-next-1613669820-e5b15ba1.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-iALMUs3APvgh9vJX4vh3RLxqq9VEFa+dAOoKmRodwhbF7FoE+W+EfIcg0SFZQrOB7RP28nwSjAWRtbJqQlVYIw==","shasum":"6cb5a202aef1a108fbce54cd42b6d68e04eee238","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.4-next-1613669820-e5b15ba1.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLqbyCRA9TVsSAnZWagAAB20P/RQoDWcjhRP/PuhawC9/\nlUFctQjpm0moRw9rCV4m1GrBfti8doNxkoDgDq23cJEc+mPMlUns/CzWrhmX\nAM5lf4xrQlr51OetUCARbTPG44/B6WaPhaXcp52+d+k9bkG0Xza0Jna542Om\nzcqX/4NmiWEWGxYOJGnNb+qgfd5G72+1cadk4/YJ8dwdwPgwaQvb6a7Q4fmr\nF4SuEZbut5LI3wybREJVXFaIxJNoUELGbBeBfJ5wGBwdTBAP6V8JhIbQJeqa\nyxZ2ZZR+NtpQtXY6PshMlbPNwOg/HHlvmLWhWsqundhS74V1x3ZieJJhZ5p8\nNTogvGIV+xY7EHoGsNrReQMwZOChzQhozpWHhzbtQk85XDx1P796W8JhXDJe\n8pBFq+XIIr3rivRyZ/YqncX8KNupkcUytMRd6yMd2cjIk3bv60GPxbh/RyhG\nOq9gKLx7ySI9LJk6JZxV1L38zZilHcoZ09uLptqp+lKeFkZBAQjKppoSUs83\ndRLIMhHGDKNzeok4gwW3GhDul9XgUHyCIJdsYfJikCYzFHm60DHXtr3FScf3\nCuUhr66sa0MLnPnri9oVkZT8NwYTAs0WCS+01puhzTz0aogYTNpWiqdWru1o\n0zqNrBYqJAxTCPQllY8WOEy8m6yuaYJwc/KGUR9jmxbwrIMPl9uFHn/pTf6H\nWU59\r\n=T+3n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/M54UUQx2iiW6Rm9AOJSVRU/s/SQs7+xCLWghu2sRaQIhANDy3WDT//PppDsovhrJBB3XzjP9rKFwkXjVKSleiM0O"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.4-next-1613669820-e5b15ba1.0_1613670130324_0.15910173878247802"},"_hasShrinkwrap":false},"2.46.5-next-1613669881-da0c0f17.0":{"name":"@xdn/prefetch","version":"2.46.5-next-1613669881-da0c0f17.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.5-next-1613669881-da0c0f17.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.5-next-1613669881-da0c0f17.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-3yhrKbjZB2qAAk8fi6+465KLnQZhtlUzPMYwkx4nNIGJcPFsBzcpEVRRWgbXL+tVrYHvEwKVKrEUIoiD7Yytog==","shasum":"030562acad5a12a2c763500a800635618583f1bc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.5-next-1613669881-da0c0f17.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLqcxCRA9TVsSAnZWagAAj1EP/3Q1zMMSkQPkV9oxNWdI\nkAsHfCwBXaI2evZppklUQWEcGGasmxHy4xJW8C1bAaaDPpz6A725r8L17lV1\nL0OeCYyPcNcC3doDaZV3k/+3mFYq9tdsBmSgV0vikaHi2i/Mrz/0m2g25I7k\n3/UJ1ue3ZFgca2TXQPUE3jO99EtMQffVm/DTED2Y/Uk5a2jWRGG97O03VVPC\neOCyeNUf191FUU7fSvifD3xn7j55dcCh7OhnuTeVbfaHUlsDVaQuXpBVv4g9\nirqmNDZ+Xd3XNXdGgABD4zM38FNxo7l7un1CcjSZo0dxuHfW3MrH0gl2bC1s\nyonRg7G2sKP+f2Hkm3UAoIxtcwaxNo1L+M6ow9ZhkS1KApor9qx0NviuaSB4\nLfZCveVCehJgucllIWzVfGWyhFgmr3RyS8quiiS+l1eElAW2apuxxa5Y3Qo6\nSAmwBVG8e5Qe4AskyocMY20pSOPUFYcIbrd5sNYA7cdY4lTHVDzBNQ3gG8kr\n0laHAl0UeSYN4kywSoSkuEz3G/dVV0qhtItjrejVp+M0XXyXUP8aCZhm3goh\nhsgpjbsH3MWbFqC2Xq3HR02pscP3GgrBWbZISAKLrdo83oo50akVYylcm085\nKP6wQUnNKojSY3joS7fF41EV8ptIT40tUeWAJ/zxF6fxn2GwvQt/TulVR+uf\nd2r4\r\n=w4ID\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPd8dvMRoLw8dFjpD0sGjBliRetj/uKtQaL9eZm4SzoAIhAPKJx3NEuILlY3TwNnpI3QitRYj9BNA0UlbMW7Cmgp5T"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.5-next-1613669881-da0c0f17.0_1613670193179_0.9423558953382758"},"_hasShrinkwrap":false},"2.46.5-next-1614018774-722e2a45.0":{"name":"@xdn/prefetch","version":"2.46.5-next-1614018774-722e2a45.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.5-next-1614018774-722e2a45.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.5-next-1614018774-722e2a45.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-WUXBtjd1QNdm7nJGlL/MnC94Gb112otq3B/EGMF7V/2rZXMYCAWaW6zU5u84/YZL5zxU2SjjsDySz1EVK4mAkQ==","shasum":"d265ec0f366b9a6374d40295fe232272cbf0a3ad","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.5-next-1614018774-722e2a45.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM/pCCRA9TVsSAnZWagAAeFMP/3TzGUGLXFi8giKH3dvx\nPAux7X4A+1TuJ8IwC2hECQ/EHON3IGWcxXb+PTVqwFra4tv6qQvo15GnH19i\nDowRI+5xXuo7dn88SZw7IDpWd8YSxuUp8yTB+GFTvWCuktJvEI8pH/C3ZSKy\niVtKBx54sHTlPTyOIjEj9dLyH7ZEO40hPDOYZ9+1SshUVjsNddd4d1KghBVH\n2hkTqakOLxlyLJijN2p/fgDQDHI9cb0JWie+YXFX01wIIjpRZ7d41cwylQj9\njv6UCfIE4+zpsOLcuHZcSDSv51oXNDEAWizVrh9xUMYpm3axWMdhc3uyaa2O\nQjn9rFPXSqeRpPeF7TQthQwazPdLfxDjBAh4yWyDsj1EtofOzhchWqc0+3ww\nn2hFn18EmJnbrXFllXGKr8pGpc7SfZ6Ibz95miZgoVYoA0Y0lOZ33ca6JisO\niChP6vH/Qdejq1z7fIIc5V2dqeT9uLGkPafFs8EbkiMcVe4P5t7DoMQLXKcY\nwNaYatY7Tv9dDCP9ZZ/zF//ZVpBuzaEOvKOPhpsiq1ke1QObPO/lrr3v3PYZ\nVlqcMchUARHpTZFplSkkFByx+Pvt7ttu5oH/CIBHYWe5a9FqCX+sM4skmWx6\nBFm+hJI95cl+W4CLX+hYpImzk8QX83AVr3pcp0r43N9/hV+xWmybc7gag5Bf\n3FPe\r\n=he47\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5lnDsOY6Xox5hzj681lYp1n4257aalZszNKCzH/55HQIhAMH/kntXunJUnNAhaBKYyHtOPgM80g79b1ZlNM9m5du0"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.5-next-1614018774-722e2a45.0_1614019137819_0.8101532000180856"},"_hasShrinkwrap":false},"2.46.5-next-1614026590-ba7dba01.0":{"name":"@xdn/prefetch","version":"2.46.5-next-1614026590-ba7dba01.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.5-next-1614026590-ba7dba01.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.5-next-1614026590-ba7dba01.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ebpt3dN84uTVMYAe4MPQyhCKy3jFSq+MIwlnX358Bqn2775do3jNEzXN0l2b3AYj6gQXK7/487ggR//z0pFBSw==","shasum":"07d5f5d0d779695340e6e3e1ddf036b54c08e4ed","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.5-next-1614026590-ba7dba01.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNBh1CRA9TVsSAnZWagAAeDEP/0DWoc6HItD/buQZObX4\ngWWqNcq6YIeqyd/bqjnxWB9FQ/+xB3BJIIOi2WtYUIPUnJIWLmafoxE50V9A\nr8Kl1lhEaFSFYn+JdN19p/zK6E2owUojChNw7Tb07TbMeZR2Y60Mcr00hxvX\nqRa5Y7s2lUFo+FrXpIF5zBXodzicM/7qYBvU3GBJqJEXdYb3AaCltCn2Uir8\no99qPEWFei9+3knEDHnWRFrfWM8UqA21hOFZMmW1ibt4B5kBPtnJNi08AOP+\nEUR9avJ/0ccR5/ilSlSZ3XUhE039OBsRpXWpg6oBWzRZloZQU/wNJqXlYFwF\nobcHN5bQ84NChka3zlwMUVpwwiBC85kmm4pOv3DsesHVzY9ig85xDb9mQLKG\nqxMSeZSnHfV2qeTyF8543GaWw8w4xPXGF10tIcP7BRjvqH+lKOyfC6+IV58I\nQslQCakHEOvB1ZymLXA/I3fhEp72LKWdy0gTsrfRscS3H/iUbS12okINAKta\nNAyU9ga9R8DCH1qj66JDYtXwYGicpTptD812NLJJwU10UaG6fwCaOIdFHGbv\nmLayQuh6i86sz5+ciFpVUlgz2NcTpQznVPtW26QN+U8qsEqV9Yv+8l14gHPs\nLztTeBcv8jBJhOtUVnMMhPSbs6pxbimYaZa2JlyRQSSqDTAuNm5KDckOK2Fh\n6Gp5\r\n=EkmK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFFf8xMwX5IBxpXurpFdZd4TYJ6Df3aU9DbEkDfYNoUuAiEArBJRZIeh9aNrY6A7minh+ZwsHZz2mpxv/qCIDGIrbLI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.5-next-1614026590-ba7dba01.0_1614026869116_0.3972688437489973"},"_hasShrinkwrap":false},"2.46.5":{"name":"@xdn/prefetch","version":"2.46.5","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.5","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.5","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-cr4tD77mccEnaOEogzjNZbhQOZ5vVcjwRM2LTigv5Up0rdg2p8Uk8tZQn5Lm3BIsRAX5Rc5Wec6P4PDavgHttw==","shasum":"edcea55af3f7ec2cdeee1d105820c4b6a6dcc983","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.5.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNCA3CRA9TVsSAnZWagAAavQP/iQM+iAHsXTI0UvrIjpQ\nTAOCrldDJ8I4fhJecylY/03A8YGzKQCq/v1bm5O0+DwdvS1TFbPaG7Nqy86L\nM3aPvvKRrVFdGyPUZnoXW0weKALJfGu24bOb6zreKq9F2VOp9oR2YMgkNRoN\nSXSnZs+UQZnZ95R4D23GFZb78D6mOtUVCaVYixPYUO4o9kxBwH9lqjoe5N/U\naYRG/zGDN9uJBZAP0Ls8ht5bXu/DrzVIXzD+ZFleUWKDplJTuTABruvwlEEO\nZ0/kiJDGekUypUk67Mdgj9eVXr4yf6Vbs/PuWduuoGe4o77Q3xKF4ravQfO8\n1rxNnfui7cTTrbGo1L3979uxYN3HwTHvFP1Ck2D8MRZmN8YokuVySCGdSMud\nzIVebszYD5b/k4Cws+/4ZsCaDZ5GFpi575lVtfGJktyLdHCzkkf0JBiiPp1G\n1FmhZ5aNIUqFImSnI+VzM2XTnrgf9U1ysjyDjQMRp+lZuZa9KixKD/6JE/hD\ng0Xypo8Lpra3iAey/eNlMejL66MulStiHQbLZoclTE0INgq+gV2qqV+Lc2Mb\nXjMbxAE8CerT+WZe2sigLxEyODPUdP5maCCjXrAkeqr5cFDkRJsjo2Bz6tbp\nyhOeSKiqr5goLUKw/9yjzZzIMOiUMZbCR1F52efRXuGieBXNC96W6ALmNBX2\nmxYT\r\n=7S/S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1VPcQeVaXYieDeBJquLWFaN5rJk4omxgbco0kJsn5eAIhAMlqM4NYADdiAiyHFolo7j3YsF1gHPvykO4lHQslBDNZ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.5_1614028854847_0.10723537378436188"},"_hasShrinkwrap":false},"2.46.5-next-1614028558-f8e16b13.0":{"name":"@xdn/prefetch","version":"2.46.5-next-1614028558-f8e16b13.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.5-next-1614028558-f8e16b13.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.5-next-1614028558-f8e16b13.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Za6NKqLGSA0NcXHTomiPq1Kk0kKnmwXyLQNjYD9xajKpqxgAEbhzAyZvbYqEC71/FoVz0RNCWPGU0XmLGyEetw==","shasum":"59c17151c61e47bb6c95c4af1dc146441fa76855","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.5-next-1614028558-f8e16b13.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNCBvCRA9TVsSAnZWagAAUzoP/2itQdsDa59hEyAY2P8w\nzB0Gk6penyzgI0R2cM5VVx1y22Iw7LS7kq6usNm2V1sJdIB6v2ipwDRvZUdE\n2S4wKIkHlKUQi7vgvRT7sTHAevrlF2Hlf1kdx2TfKJ/sIjOqUOM8dArJnRl9\n1vBCa6wKZ/wfIdhQpObjeAk6UrKLi3FoO4TupzVfQjx+QhMnB3cx53auCd13\n9VHyMteOhxQDV4k2HIdgl2XR0X0aNjL/O+FTlh2c0xdaLKF8eAUUbMz/GY5z\nl5beXRye12ubgrQLPQtttR8LQI3SskWP5z5VgkmqTQCcHplnm/pWh+Fytx6j\nHlzmX8saF1rNB6c2GYAXy4gAfMDISpWseUyvW2+6IVlhaE5f09MJgRckDKKP\n/ZGED3pAwruT9dXkYjm9LXPQU/VWHzANpeJiEe6sAOSjcgfx59Emtj1LFjnQ\n4YFInjVfGUWJ4WQmb5jI3RL4P26KVcWY5ELW5RWYMKRJUyU+nohFHCOPzuRQ\n/mbNDfOkSLCo99CmSz7ncyElG0sQeCDbxEqerU67Z4h2HCj9P+7rvH+B/jyT\nZbE/2a2KGJleISf3+3wfpkzvWPDosQASD7CgRCMb4dwvkGm+jaUzBSxbUm4e\n9GRd+xMeqcIcG3lY6vWFV7oUzFnpnf9t3QzK8a2OEnIlnNJxJjcOktAY4zpY\nZ1NT\r\n=95Mo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDi1tJFK0BEg9NDUmdEd1Or0ZsNzFmgWC9oP3k7v3cwqgIhAMmS+99bhfV1SdLVfjeK/cLYqDJuEcQx2vWOhDvIVqrm"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.5-next-1614028558-f8e16b13.0_1614028910606_0.6959516967036632"},"_hasShrinkwrap":false},"2.46.6-next-1614028653-5941cd80.0":{"name":"@xdn/prefetch","version":"2.46.6-next-1614028653-5941cd80.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.6-next-1614028653-5941cd80.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.6-next-1614028653-5941cd80.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KrTofFFI37zBDFzWiRPIAuMwD5nGroM6jxEESXdmyyOxbdLiVHcViyPPnb6JygeEk2f40m8QRDRH1VP6JLCVNw==","shasum":"ead502a4460830269d8b093ff4575646d2df4087","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.6-next-1614028653-5941cd80.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNCDLCRA9TVsSAnZWagAAiNQP/0nkC0yLOflmfynMTNOz\nhjbFLpXBQtBZXbF22+/yWaiiny2On81pbOqJ5vSoHkBujsjudWz40Pe1nH8c\nowHrVUXmO7cOXVp0WUgNeeR+1vX/UzpIN9LBlHU+JmoSwpqVW2G9MyvsI5uJ\nAE4sxZ5C7x8/3XTdqCeX675BIqWu+DpXK+yVN87OOY0B8Jk493UBixJQoY6j\nHPrDN6x4/gPazUm49M3rHbfG3CkSWSeXdlgYpN6+MqL5g1K02PgpMy7RLDwL\nyABvR1cVAIRZLeW3cePcKk6eGXASkt40uiQXa7Wa/BCBg86uLmSVKbdbMVY/\n7AyCJRPsEOQ/SJ3LVo2urwIEf4jdPdhXpV1PryDGQk4fIQNie1iTrpMsNTy7\nvZ9/EEyg61Z7mknEHnaVllsWfExqBnoWI6Ky2YXWCa01UTKddGdVb+yqw6Rk\noZq/H3aKW+vuks+6ASJ3ioiNw7zU0DiTv69U6Yrlt84bzZlscNn9C6HZeG8f\nX/uvveXPbCN5uqy0vgCQg+UyQ6ArDCQXJl9OoB1IRD1ibfHG3nIzuA8UC5WU\nzgkhJseeNjsED4NXj3OzUxoOdVt3hW9UBm8zieU8F70by7l8biPekhPJFcqR\nlXepAG9N2KniI3znLK8yk+0EelX83NqkMw0wlD3/JQ5CmD0Hilazj/IScafw\ncDYU\r\n=qo5n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAbGYApszWrIWa/beVsmkB5I04UntdIb3+amZCYeFqSwIgNaYaxoWuANnLCG+9SbPlzmh0UXlikVJAYEi9JZRq9mo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.6-next-1614028653-5941cd80.0_1614029002661_0.9855510604909632"},"_hasShrinkwrap":false},"2.46.6-next-1614031670-9fd59586.0":{"name":"@xdn/prefetch","version":"2.46.6-next-1614031670-9fd59586.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.6-next-1614031670-9fd59586.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.6-next-1614031670-9fd59586.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-voo4y5qabQd6Mnov+IBkPJY9fun6/rFANzVM5nVpsmpJscSHnBVMBgyWPoTx5o419qZmrIB4hr8bR5KrHjp2AQ==","shasum":"c82d1c0e23891c88128713d12c4937a1e3602252","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.6-next-1614031670-9fd59586.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNCx8CRA9TVsSAnZWagAAF4IP/0C3qKrhpEqeZ5QP26ys\nnNiLyfIlSNYCKOFp0QT3uU5dR5qkj4pYUzZPw2czuYH6oQKZ9ROOi8KWFcv0\nrlpVKY6bwq4xmCmz2eesoQVrcrmLtJ+UTOGycCzgd+rJk8CeiA/gXyg0qGjq\nG7gQ89CPx9JTwLqm2jwpQWWAZAU3J96AhBXsFTwQkqdwI+txG9A83zMWlWAD\ntJeGYfYPv56ejxzQuBPwuQK2M+wx/TUswZ5sWBBuv1+A3JwX6NhCAR6DAV6W\nDUaoPiA1PNJI6thCcPWs3cbmulAufdd2pTASY6HxV4bKYZYFXlUgfDDq6M5r\nxuDUdXt5wtLs5db1YDUZ67PpQGFmXqMfwvV+wZJq8V4AMZWmicxI8ovIc6Me\n26HJ3DCKHGXAA7WsP2gt3q7xM2pNFKY5GM2UJfVkcJ214w+6ne8IT7TMwX9u\nYw/DHyI97yoAYmrunp60OjcDqcGuthAFRwHHAapbVA6MUgL49hwZ7/U2uQ9E\nhr30ZiIwQUjVv2dLox6hR3OYAQaD8tGc43Qvveu7Drx/vYfJLq+/hPipOa6q\nM72aEma/8l8GlFdpCKmdVOOnLZCk5xcrsvM8kDUa2xaU9FcBUh5HADLFpi+G\npJdFnUB4eIdZ8gr7CeR31PxAEcNC1LCHSWikD0keSW4Ectehs8Z0a51Xxioq\naBqQ\r\n=qXfk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAJUlQhBafrB0lIO03KH8DDGD80MklZ7OE+JLiI1/omwIgM9j0oFAJ2HGYy5HdAUViRMTJc1JbQwplYXslI6DyInk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.6-next-1614031670-9fd59586.0_1614031996251_0.8650549076160992"},"_hasShrinkwrap":false},"2.46.6-next-1614032371-d14b3c69.0":{"name":"@xdn/prefetch","version":"2.46.6-next-1614032371-d14b3c69.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.6-next-1614032371-d14b3c69.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.6-next-1614032371-d14b3c69.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-wbuFgmoX4DJk/sMVx6LKjENabWbe5KtqZ3w+oXgZG9CuWH+/5nozoi0uavSEl/3gXvu+GdezVy5jKLcbIu1kxg==","shasum":"148499af106602e9f3e88e289e4c543562652ffa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.6-next-1614032371-d14b3c69.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNC9LCRA9TVsSAnZWagAA7AEP/0KeXBBaApBMNOLa+Acp\no5+k+lHdzWl1xZHpPmWX4JQ4L6dLwHVC9PqsyfC5AUysKCNkuvHep4UH8msV\ntyPcjFDRuCF3P9aRRW+3q78mB64ciygngfgTY0K1AqxkCD+YvoJweiu6fq/J\n7CYzG7pYTqxltIb2RvYr0uwxZrcQN+OFfY5bY4EzG/JVZkhTLd3yO3Le5eoH\nNCQfAYvdwHiVAuhsQnPs6CD6/+RBNaTRaY7FS8yx1xpsvI+gfMgyzxIRVoct\nYrg2VDF54LKSXoiA4dINNdIlhKkbYg6rVl4aPEkOqzdPnLcE5jkukJWj1PUe\nudhAnOSUTVJsLInyVyMOlgEqHx9ZlrAqTXnoYQmXaI4JJIKF0XuHjszUEmiK\nn2NAX6uOLO78sdjBo8DiW2JO6ufudVQUuytVVieEM4sWm2Hkk/zNj2yuWC6E\n+V+ic2fgxPtBX5Ge6wmNWBu7ac2K6BaOqzTX/7NlpO6Z4oTGXSFg53mNpZC8\nAf1DoJuuaIlO3pUbHmerLgEG3OgIop4QVvxOtI+qzEBost/BYzzf8b14AJQR\nbxSXfx0olxdxhQDKPN0lNdLDONJHzUDsnesFrlb+jQQawo8YhdGq97ceLf1g\nBYBjiCRhnPQ2AtbOgKJ9pWsW/UE3MhOjMD3sSrOXu65mwGmW1vVdxdz8+jPV\nUUEm\r\n=81We\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCY0h/Ak1uBeZYVHEYC850evbmLztDYlhlOer81eaelZwIgH9m6FgY94W2lTFTS7f5mXqznQfjF77igG1fttC4DYiQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.6-next-1614032371-d14b3c69.0_1614032714486_0.6104989149940807"},"_hasShrinkwrap":false},"2.46.6-next-1614076076-a9ab6fee.0":{"name":"@xdn/prefetch","version":"2.46.6-next-1614076076-a9ab6fee.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.6-next-1614076076-a9ab6fee.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.6-next-1614076076-a9ab6fee.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-nHXubsa2DlfHoRrKq8J8WWEEgD5zoha3JmSGIKtoHDkyHcAV368ZMbxrjGih0Toan2Hv38ks9Ci7u6yJYzfcCg==","shasum":"192e951d74367c0957f97b07da2e755791771d62","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.6-next-1614076076-a9ab6fee.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNn6CRA9TVsSAnZWagAAivEQAKNP3Z6BHgwqw2lZUdBn\nTXc+goyiaeXC9BCnMaKPQC5l9QSFMEDEIlc/hwu2qZpXiqXPiIit3TVh88gy\n0LRHSqbd8P+91MUvF/y8AAEyQWs/SZi2GsbGqiPdkEOdjC5/XnjpTuNzt48i\nkaC4C5B4PaeAoycrqTO4o4bAeY9fEEMqiQxrLjIEIPqWjV6EbrvNfOFXBVyU\nqRZD4mfQv4jqCg4ZwpE4nJ7ehYbJb6qw4eM4dChA1Mh5rD1mklrlpdbzzTvL\nxD6TigomGOfcO5aQlcjqxDZWTWkb4bsJWXQrWo4Z4QLyaj9DE/VF5XqqFrEY\ndHVaK1MfB1Szf9AUvPOSKp+tpQ7JgM5+TjvpsBI0VNRJhJvtq+rNMZm9JDAX\nvU2426aiCsqxKKgkzNmfQwNdvugmQHQ12YqWouxM847M7vrz7Lze0T27JMxm\ntG7Ohuh7jGnKQF/rCAsuvsx40bbvtCDjn4sjX4e77PSQZoZ7DMuwPxvPE1qA\nSziVGBZjTWi6tJW2aYtrY89SEhtJMAk3rE8V/7DfmIX57F8iFhhrXfITIso3\ntMf81S0U/V1Ndu16QtbE3/P1WdEW7eWqOnF+nUugJtnIkOhLfQkfSE8BY65z\nyBF+UnLTTPyLX2rs8QL2tgFiBRsukBoz5/ax1KrONxm61AZ2hSVg42UHJF0e\nn+ob\r\n=EXFj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE33l8QPUpfQarFos62I2BIqftEKLCKjuqI4+K4wsCGlAiAH+k73FbZril13Z8CrwzlLyKaLVM1H3Y3nAeaKaZByPA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.6-next-1614076076-a9ab6fee.0_1614076409935_0.14601211880710196"},"_hasShrinkwrap":false},"2.46.7-next-1614076339-5c6ee841.0":{"name":"@xdn/prefetch","version":"2.46.7-next-1614076339-5c6ee841.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.7-next-1614076339-5c6ee841.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.7-next-1614076339-5c6ee841.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-dTu+bwEn+UjbPebP3bTFhptz2mZAw1b4DUX8VVsLrPTkIX4Yd31/qG/m2jwRL74kcE+0UEEutLFnZmQtAwsBrA==","shasum":"88e249182ee10813505319519e6dd72e1c4f3abf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.7-next-1614076339-5c6ee841.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNsBCRA9TVsSAnZWagAAyUUQAITnif9lGZIZfF5V34to\nONW4/f6KEI/4zvT0aknkqKl4QJ+vxO3rGhEbLPZLk1Q6v8y59GMl+8sPNsA1\nnipkzDzHY6jPM7YIbNvrGWyOBo4Az7iX5AOo3WkvOLgjzPfquXHeqf97Aofe\nafZBJ+JJpE+Ym21SynKvUjV5ga/ZYe4q2KlXYDHUMwzdBVzD84guV4RYq+xP\n1dSIlHdMPRJJvZZ40Cit1tDLDCM2/yPg+iQ/7IgIxGtNLc6qZZeeXhZXETJB\ngmYVrpQAEEWFN9hEuvBNl1UroMt5IqGmf4nUxnrQhZZsE2XxFUZTSwCbiGvd\nucIg4UvXJ01sQes0Vq4olbAiNCthvidAsB9eJpOY9Ric4kHy6665fi7a4KTx\nu5NRiHEANOsiOSrYI4KCBXkT8FIKq/ljUotHXWlDJwagzPUz6o1vhkAc9eP8\n7g7v2ca4T8IHP44HOVER3wrs8zQnxmab69fbOHNr05VvMcWf6ZF2jjDpRzW1\n0qt+jcNzxciTtdVNuEQv4nft2586ZfmYFQOaSRAOBsGn5Fo7HD3by+AvMmQM\nIuplqdTqPfWyRiE4ISbwr8OJLhIHONPTCqrhNXkB+bEYsgGMEkoKgYW0Z4vN\nPng+9RzIXHVHomFrS8Snh3P0wcC8R8g5EoaB+CqOVsgldFC1izAxTVtGhJKZ\nN/mb\r\n=3ahR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGfke4V1pLr/G0muEhf46ZekqaYaPGK8tmDwSLZfXk7DAiEAu/KfHok+xTgj/R8Sph9ud8xeXBVDn+7/sL03f69DR/k="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.7-next-1614076339-5c6ee841.0_1614076672602_0.5466523470210345"},"_hasShrinkwrap":false},"2.46.6":{"name":"@xdn/prefetch","version":"2.46.6","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.6","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.6","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-USBsMHOoX5CV3XfLt3DvgGI2r1HbEb/zswTGi5KAWfjXU2hOpia27rqjaCgaTRcaex58IKkXJCSnwaKdTtm5Xw==","shasum":"d5cd246d635b4fa3b93f673548641ccf1dadb839","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.6.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNtRCRA9TVsSAnZWagAAnsoP/jBR43YCozA4rjH1llIp\n+585xZwU7DvSq4GvK9we82thq2a0laGWeKqKJZKLMHdQqHs18hOkQezBebwo\n3WEbrVv9+FIm+QOburNtYpHCAd3e5Eeuqyx+1N7+92BuwLHLfYWu0f52su3O\np/7d7zvG/7aj0r/0+0gZ0k+/igJAgs2IUqyywKhsgDCfk0mUiUPEoDBZa+N6\n5gr7a7BDRdiTswUdpxKeQ2AT2u0lL/E7z73dPdTIfCiJ0RTtXZoe49rvcx+N\nqunG3KKbxu/ADOQKd4IPoQFvTMBmOmUlEkym6DL/ay8pURDpDyjjJm95vAaW\nplhfdhO+DbpKx2VHLV6KDQbagOxuV+yamKdeJRcsiPI9Sb1xy+zcjL5d4ypo\nlmyzGBMi5Xh/sCGzV7OihF//lQ4qoMlTWCkNR/s8mlxM41KujkB2R73lDXIM\n6BZD7YZlYW9R+DDUz/8cHYPQp2QHkkLSgvMmmrC9OvToLr1KBg7ysnx9lANr\njFEjgTh9FeF0072MIvhwjdvmBzL+PCyBB8Kq67L2w9UQvtDupk72CP+7oIoL\nDBFXpMbSi4t83IzCqdW9LmSuCICSpcYKvxVEcRQTb/4hlyubb7fywOosDkiu\nQBooj536f+lQWzenjtwOejYYuJyoU1QsGNH7lxCZ1J3jSP9vXVCbpTsLXA2b\nLQO0\r\n=ju8a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEucDVDRC5JDXCuzu9OaGYg4ZoclWjqIEHTrviddf4aQAiBrePCS9AApSkwk7IBqz+yjzqCdoMcIfafaM8dyFz2sfw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.6_1614076752567_0.5101496059361463"},"_hasShrinkwrap":false},"2.46.6-next-1614076455-fdd66fdc.0":{"name":"@xdn/prefetch","version":"2.46.6-next-1614076455-fdd66fdc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.6-next-1614076455-fdd66fdc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.6-next-1614076455-fdd66fdc.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-fevSxZJyYjH4Ip3ugR19q0SEb6WhsNFybGhOAjAtJoQuE36RsY7iP0VP6M2CPGxOUfzDDv2DsC10G/JN5J0+kw==","shasum":"a78f63da6e1c43e060253710f281983c4c4f3011","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.6-next-1614076455-fdd66fdc.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNunCRA9TVsSAnZWagAAmZoP/3vdR1y+t+mrliYSdneC\nJjQfDdD6tDhqV9/xfzQDGuTAmH3bqwCNab0/Os9V7Yv/0R0Z7qGMJu9OLfs5\nxYXH+25n/oOUeJseTUbtPgkwYq2nZ+8DCYk8ytkrWI1ToCcPgfJk3btSZIl7\nTf9yS94dKAGYLUZKUb+i0szrAud8Qr0TVUB/UqtIrwhJgQLm34DPULNoiMo1\naUoqHXWdJXPHr2bAvgzhcginmA2GNDP2O1fjJT56UF3szJZA87FjV6sXL4SL\nsZP8hCBiFXlAHyvwEpNNELyietRWSzMZkI70R/yvzIJ5uco8sAhcFIUnYi9u\nlZaZNdebekxBE/a/pTJkbf2p+fyMv+/rHqeem4le02lsubJt58zQSBWjbU3z\n/4AbCaF+K/fK/tnSCiF+3jjE8AIgfLddAnNnne4UPEEBWQblT5L5xAFJbB/a\nAUEkVGTcSpubSvvosFbvnaeL4ylihQrm7oDjShjUpN+QFrE9ZQYAbiS+cziN\nofs3QWN7L5h9CNgI61WHc46L95t/KFUsLCeQE1y+fJI7ogjwG2pVWOHFRc3P\nksBpZjHYcMgbwOl0Cy0aNWmJYR+EMJbmwtCRty8tK2/lOSAH1Hmc6lO56yVo\nx4C/riruscX5GVnpKv1D1UorqRiUjI6JnP8wKQA4LURGXkaQQ57A8P6ir5xe\nHtz3\r\n=wlAu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID2Oj8DisNuPQ7sdKMaNmaixKyFV0+Xzr371DtWIpHR4AiEA/OcxPtg0D6Q2HhmFJ1XhFGlUgmGlwOdDDTy1pCvvHIA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.6-next-1614076455-fdd66fdc.0_1614076838474_0.3879744921234227"},"_hasShrinkwrap":false},"2.46.7-next-1614076524-db4cc33f.0":{"name":"@xdn/prefetch","version":"2.46.7-next-1614076524-db4cc33f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.7-next-1614076524-db4cc33f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.7-next-1614076524-db4cc33f.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-EDk8E3YuFbGcHzL1/WytEYfVN/+jWCfrAtEvwHenlBWcW4PQLBUjzYcCMc7tHy0JqsYIj9qWVoLQvbJK1ZrO1w==","shasum":"d0796b1999a6e8eddaa0c48f993748b1c40ab2c3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.7-next-1614076524-db4cc33f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNu9CRA9TVsSAnZWagAAUP0QAITHnWXh5lDMVkKbpos0\nqOo1c6i4C6nwOAqBhNNlhm5LtrvLFuvj8zSOPpfHRYLS8PCn7PEURG6rD3Cg\n3b06cIlFambJmr4n6Sah3TvH4kFK0RzRp61/rLlk0vJ1RnKIHDBgc+/WMmHK\nwM4OP9md/Clzphfm9rXa2VtpkW1QYOF3HxZ5DrzptSwzLSarfuBXwYHvnNAt\n+HBAZ1rRIPozzC9CNQK+G3ef/WbK3R4zKchiqAKzWemSMVqC/euyx4Vmo0Kk\nW9Kal8GFyw/C+Mj+adntMCr3tUAFj4K+zBd+sqqBno/On5sD1cz78XqmRXOF\nxEmRScMXQLMRC3jBP3AXFJjdoqmvcwZggR5DLD/XH6EezQ+mtR07QSjMHz6I\nl9XIb/bB4JqNbJEq4EUm3degfS0WrIUr5fNzFu2nA+G3ISAw/z1ehdxUSmKq\nJPi6fgYnj8JCcj5gvsyjGIzowjU9r8oBLorjz14qGj5ANw18LFPUFB69TJfe\n+NwYEVEbffNpD3el+VAPhlMwnABPrBhBpP9mBJtJwElzUwx2UXCN/Bx6J0Fu\nCJIDB/judN8f1ubp770G3FdLbWPXgDUnFcJp5HDuJPfJ/D89l7LxLuwlvoJO\nfjQkJGVqvQVF3PmXoQULIQVBjEFRvGcTkJ+tYv0vvy1XMz3zXIh75H3diwU7\nkzwC\r\n=ho+M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpEH2okRdJ6sbszxPgjDDMOYzg7osjvXm0h71OZH2FYgIhANRx7pJb5Ve9L4EYxRVQFpKKItxezbSa8g4710DWAeMm"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.7-next-1614076524-db4cc33f.0_1614076861199_0.25828910117006987"},"_hasShrinkwrap":false},"2.46.7":{"name":"@xdn/prefetch","version":"2.46.7","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.7","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.7","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ixO5LB26q+lNWQ1Q/v3dAzEgzUAOAzvTlg5Xm+mmFqMXyD/enqBrUlitLbRWwNbpe/t96iBu6rgn18sTVggYwg==","shasum":"6d30dfc4a353d294c3db06ed823ac06622ad8a64","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.7.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNQpkCRA9TVsSAnZWagAAVM4QAIN2Oz6gmgfVhYukN6bI\nuobgbSP9IWRGB/RTQWh+23E1V83oQGd8xi8B+772qFM0slXjmjwMZ+djWB7W\nsMD2Gd1moeAXrpy4fqC1S0qsnr3sKlwV0DZ3Y00tExXmNj9UGypFrDsQT0Q2\nKfbkcEaYDDdlhm8UDroHQbGssbMT/jVCz5Zh+h/DuGpxATJB7uwdtRXw6M+Y\nL/q7TPSProsLvXGAhvuHFM7ECmTagSt9nzwa4q5SwhSslOsgpfXCODQ/tQz6\nttErMfeXzuFLKxSlKGsG/NgDao/oLJ+ZtRh7hDQmmMsrFpBgfbUavsmxXh2r\n1CbICM5O6CJt400b4t58n+HgAEOhk2JIuFUjOQpBfVYlVbitx5tesjk/Ha24\nyJzK7NTQ4n30nShLs43E2IJ/06d0PYz59PqTV9u2cn46Yasm1BgIsjvdUL6O\njTW5/qj+KABUwRStzYXpFRPlr0O7NaItt+w7Q9a7gHVdGpGKBoOVvKkivDh1\neie6qXjEtEcVYAmFYNxcLmUABxkE++ovW6HwGmzwc1iRFXKZMBGSRS0enITO\nv1d/ptmLn/84EFMhmIHH1s3ILDTf2/mVOOoPC78kiQYtDWBZRbIqkpa6AlX/\nN5QD/jXfUo9l4YHZg5aYxgakH3HQ725OM6abSP53zV7IwvLia9HP64HFRPVO\n4UWn\r\n=zt9r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZMRVr/SKirrfw4PKBHI8tD3YjyCeJSgBTJ32o/19FNAiBote2qwplI0os295sMdoL1S8UMIhRZkNq7KJt2WDQq7g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.7_1614088803985_0.7450236045142211"},"_hasShrinkwrap":false},"2.46.8-next-1614088593-496f8302.0":{"name":"@xdn/prefetch","version":"2.46.8-next-1614088593-496f8302.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.8-next-1614088593-496f8302.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.8-next-1614088593-496f8302.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-g5tJFtrVFZFitNyngGCCSQruBM0J5nvFlqXwZKElKaZoZntqnPmXyMK8OobuKuy6aci/aogjdVbvYzx3PdnMYA==","shasum":"a1aba57c6f2e6d585ad9dcffb09897082c426259","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.8-next-1614088593-496f8302.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNQrNCRA9TVsSAnZWagAAknYP/jOdiFcbEBiAFmpUd7cG\n6wlA00WrIV5qY+7/7WPgvoz5VVKaGFuVGGD2GILeeJ4xjAVdm53SBebx+n5t\nRY0pUqMtfvNmCTrJjZdJuxs5DKFuiHSICk15owMYy17fy0c1BrJPEi/6l53d\nfxfCXrCv1k1CT1FNnw/wn0CcR0zQ9rcyn5ju9M/wGvmu5FRTfJSSZVDYJEsF\nUihZ05RWroPk9rXvX0hgb0lndB4PQBlPduvVPwbaX4QGCRdW8mdkKO+L1iOH\nZ0cFLxtFBRbqgp70ZLaRzEjyOUNMOoHjl/0jAv8qn5FPzkssZ7up+7gxwwYU\nPM7EA4mnGCpBSCjVtq8pN9r1V988TVMcEZDa/lykKIm7S00+LV+FlsCrt+ke\nVvfgDOmysAq32ThCfmaQ4dkN4k0mb3yfEIa8LpiS8LGV7WhjQoDauQaRffqL\nF0wuu44s9Jl6vQtrXQEwqi3GB+TBHiKSxKcI/HaPN28vG1xyGD1dPANgCEsX\n+xCJ1tUP0P2zpM+/rSFAE3rE7unj35VTpdtaYcf9b75UgQVRXvupdP+mx1K/\n7B2YZgIY+B5sonZfONlNOp4VtppWxOnRH6cg0cmje+8ZMXgKodf82Iv1lSs+\nde2+5p8m7h/SsEJVidskAESJ9QvTaraNtEMdy1s9AJMYu7VMKnBQLN0NB1sw\n6+eK\r\n=N4Rs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBaavQ0ZmzmUVgjukR2zhjqsZKwkKgvFl0MuRD2dq/9cAiEA2+DSkiDXb4WGE13bRmVw/sLY9+b8KrKusKma7Ouy89w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.8-next-1614088593-496f8302.0_1614088909360_0.41516357356291844"},"_hasShrinkwrap":false},"2.46.8-next-1614117045-7ae3b848.0":{"name":"@xdn/prefetch","version":"2.46.8-next-1614117045-7ae3b848.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.8-next-1614117045-7ae3b848.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.8-next-1614117045-7ae3b848.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Pa+tjz6MMTrg6BtAGxuk6SqhY2dLlbDXG/QhqNf4OTWUEzC2/vfyAqzoSj3G46vkJbXkqPcOW+PHosMacA6Jaw==","shasum":"33555b9102d06da6e02646ad6470b72eb16bbb81","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.8-next-1614117045-7ae3b848.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNXoICRA9TVsSAnZWagAApqUP/2fCewQ/d5lA5qsf1e4I\nTbu7Ih+oRQkXrCed+gtn/GOBkVAuAVjgdeiXF8G7NnSJI3AdZnj7ZWmlAc19\n5rKk4C5CcCxoT4eCkvJ0zTQJoOQHNldumtWkAvVwGgnczlpi7rpZFu0yOfPh\nLoW18KIW98b0CqnumhTiXVrN/ykAknFHKa3OBVtlvDn/Y6MzvrWiA4/PKa++\nDgPYjGU5FphU2noPYNdPib5Dx58ooORI8PI4i9z/OWdIX7JaXK7a9rqPB7kX\n8dj0XJXbnktWaYquA3sCu0W1mgFwxbk184PzK0mEyCgP4xJHY1IU9UttJ0Lv\nimPqTbnPLVre8Kq+RpRn2doxOkupNZn3ynJIuE1wfLgpuPTx0Pq11alYKHBc\nPBJf06F2Er67PY4TlQfIHHWOz7PL8SxFyo2GYReUo3PTeZsBSb5wzRDdb3z4\ntYGZ/Q1GqW8L0DPOb2kAv8sUugd0mgs+1OY8F6C6iVLflq2Cu+M7IalM/FcR\nbnCNowxhIpkDUCc7tNZwLJlYZ4axvrp5DW9TJgih9hjAREZHcUhUQPYcIZcW\nSuiF+WVivKkVgTtjCQYb+Dk6cHzMERWoQlOIXHdFuCPNFLyiwivFwyryTcrA\nhIfQizGq3FtwFkyNX8PyBviZpS8D3kcYKYrTuiDosSLe78BOIioSwBu9UdZ5\nQEa7\r\n=nafA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID1SDJNZP55LB7/mBNUcElWcDgSShmjbe2SPLcQxI8arAiEA3AJFiPWQzUdAEXv1uHIvQEcsYrur4P2Fay75g/KV2dI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.8-next-1614117045-7ae3b848.0_1614117384355_0.9423795578862801"},"_hasShrinkwrap":false},"2.46.8-next-1614178072-21b025f4.0":{"name":"@xdn/prefetch","version":"2.46.8-next-1614178072-21b025f4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.8-next-1614178072-21b025f4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.8-next-1614178072-21b025f4.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-XS98yJwuJ9/d9egP3Y8qWf9qlOIFHz7ICfmgN0NgMWSlfJWtToI1f7Bs9uUZ/qQau5XnKKV/H63tsN6P9wzTYA==","shasum":"42104ff2799ef1d214e51956459d2cce09ad15fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.8-next-1614178072-21b025f4.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNmiKCRA9TVsSAnZWagAA2vgP/2qnx/WLaK1e/OT6+qMH\n9U7UnRp0SE9/8lw+ZT0iOo2uzk5O1R4Dz3h7r+JJ5lGbQHEN+9v3lEGjLDbh\n1J8BuxuO+baHiATFb+x/g4OmbEUF51807uRUu0Jd5bLnPpR5sumXaXgpMLC9\nyUD9E/rOyjCWT7qn7YmKvlawJZgieWlkBw/Cw+isBCcXd5dSzRR2eKrRE2Hg\n98oKuu1dndJRryUSj4X5FDg83WJS5kLCPjkO1er57uObJ1pup7xLDpY/ABSM\nCHpocM95hby/ElKuT8lLfapKljDLVr/abwAfhgN9iLb2aIG8NTHQsZPUNqX+\nT+A+VGhoMgBMe74ss3gpQH/Q9yxoJ/KjS/aDxuph13Qh33/9v5OOVRuljuLE\n40a1rbX9l/yKskomqvcfr4NznOx7aGrA9uuX7Zey2z5sxOw2AUo/4mZSz9YO\nZe/p+1uVuHxo7z+rEmSQ82zcccvR1FKJSVyG37CRWcjyK57dc5K+ZX5DfydT\ngtn1O4uEhFSdAsqGOPjTAclisBiiKS8lanV1BAmVZKNWIRegb9TVRYH25Giq\n4CjdzcgEP0XiK/9fufBTgwNSCFS5paOzATNHwYPHYxOThx2yNFyBZbB2Ko0x\nMAFfc23CB7s/cdkYYPUBOHzBJcQsj+7mh9Tv3P/9o/k7MEZSGIK1EOreaNsg\nGFd3\r\n=HMQJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBD4JoG2cjFkA+wpmvryNqz7q0/tqRCZCkRNdZ9jLljVAiARFbI/hcpBC9zSQrokR/qQn20itEznTZslMtjE5fmpBw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.8-next-1614178072-21b025f4.0_1614178441620_0.3864383280054895"},"_hasShrinkwrap":false},"2.46.9-next-1614178754-c864231f.0":{"name":"@xdn/prefetch","version":"2.46.9-next-1614178754-c864231f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.9-next-1614178754-c864231f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.9-next-1614178754-c864231f.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-UIVjj2aQ3Sxy6v+HTJFuNW9bwNl3Wf1ZR37+u8sK+VvwyaKzorxBu4D8N7NEqg2p3PxfFb0ygCeiIpKgknz2Yg==","shasum":"e2c44285c47663e2e4e081d621a6e3b450e98b5a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.9-next-1614178754-c864231f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNmsdCRA9TVsSAnZWagAAqbYP/jKdiYfOs+hFeMjcYnUP\nLlrbU63q7USybjRtMmFhziHe5e5yt2D9IpJgjWXhYjprC8W7GcQeLSsEFY1L\nIg0+MYDAXYphj/cdJJeqaPaGuteQMhbdSZwAqNyUyXrnn36M7UQyiUMd5h1Y\npTc5KoR4eSJTw27sEp+m9KE160kI1PyRf8eWJ40orVHVS1DESG9WhXUiMZQE\n9v0EcKKyprj6QaPLdoWi0i4MugostKjiEGY1KMB4o1Xl0/XVk9CVSuQtnubG\nFmcxEgIahxya00FYBSYFqVmi7sYz8mp6KHeYzclKu7Jj2tHZqIn5ss0BQjKv\nSjfNaAJfSFNo9fwd8Mong0ZMnAhh6+gk4cMdbAA1jlSfXyrME6tSGxArWg5h\nnruxXIvMDL92f3DDXgScttyxv35sx17HBmbdGsBRj9yhGGca7HInBEeYcW41\nLJlCazLR4P0l+CGzMyMdfj45LBbprTCThXu/eu4Dhy8UQGDi2EK/7pLTO4DP\nDCKgKy85vDRSoYQD0cI46QYobs5FvPhuKpv5MPGVcjF/F3U3m0UXFH5tFwVC\nD4JiBYO/+dc6lTCIKCkW4dEwrTfvLQS4nb5vZzgjB+vfGnRbMkwixFsGs7rc\n3T2qIF7c8DPURbRfQzJGnb16dvL0brtZULHomtdWvmb8J37Ulw+3pxVaeLfn\ni/v1\r\n=wnXe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH0gYpCZfs4f37qzI4Qs1N5f3/5x2sHziNtH5NNcY2h2AiEAy0wjXLIZsKwfuJE4Ekzg7YOlS5ifiqujQrxL6yhGmqA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.9-next-1614178754-c864231f.0_1614179100693_0.6281179872649201"},"_hasShrinkwrap":false},"2.46.9-next-1614278090-bbadf7bb.0":{"name":"@xdn/prefetch","version":"2.46.9-next-1614278090-bbadf7bb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.9-next-1614278090-bbadf7bb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.9-next-1614278090-bbadf7bb.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-fxSKQ02ykmdpzoHn7SDThLrmiJJ8VK+ZqvXvceCxLIR2eUDsFtz+M7zMlmRZQzufH83B/9A4pPdYlp9cxLpvWA==","shasum":"c67835b6150c0f2e734ec00bab2c257034bc87b4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.9-next-1614278090-bbadf7bb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN+8nCRA9TVsSAnZWagAAaRwP/1qPfJxIWE6PGxgQtxO0\niCV7U9hpKj7HvtFvQ2+czLTb5/cgxo2yi+ZwENftHSEISfL26RptsaDxVMiQ\nxikUVJ30FEd2+LjQGflGRMR3f2n+q2IeZbjoEgP/snRJds6ugkJV35X2o53e\n22cbo/CFnwkQ1sSuS/7sjBKu0CeM4byx9S+dfC2Yj5NWZehBgHA3ILy6Pos+\n51uKWhulovYjfYaIISPTxFl0n2ufU4jydDRnvWaTTZKFO8iKPC7uY7oX72Mf\n7JNjKIHzithnm6YLnvfzdjkc0icDS7/ouxSBymS7d7VCojL9rxndpTOLUEke\nE/94UKsIS8QpmpHhf9L5Xx5sNbsyebjsxKt34UoSsrra2CLXDnsvNg5olc5w\n+PJToFrfGAzKiXHibkCiF5e610K9CAlTGz9pHRvgYSAXKKS/W6oo/0yu1lFi\nWZW7WWOiyRQvRnbo6aRSGHaQr77fwI5G/iU2t44E3FL9yA2Van2A+FOUo3v6\ne5YfoV+fW/7sDLVxO/+BqIz8TzOBsBmaKW0ujjCqICdrOFt2kMBgNPSSkO3T\nj1BksIWvM8uv+X3Y5aqxDwR2fwgGMvtlXLf8BTZoFvey5dphG3Vy9pfQe6Id\nIiEDNzxTPeOA+BFa9x4qE6dQDQe1TFwO1r1CqhvgZu+/rxfYVylSjK8Ros9v\ngjsK\r\n=iIUv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCutvq8BWHttFYI56CiHyttZ/AqRXtx/ZtudDcZERECywIhAJwyxs2uwXf98ypcDBuuvtPFYG5BJNkH6imSDyadU7vO"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.9-next-1614278090-bbadf7bb.0_1614278438611_0.9939756785539813"},"_hasShrinkwrap":false},"2.46.9-next-1614341798-e8bc2e64.0":{"name":"@xdn/prefetch","version":"2.46.9-next-1614341798-e8bc2e64.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.9-next-1614341798-e8bc2e64.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.9-next-1614341798-e8bc2e64.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-sSTGuYueUMFZvzUgkBwhKbaS9fvgdyd5KURA7tMeOp1P6aM01fMRPNfaDMLvHzzE9vsGbfO4gA880h0IrZwMJQ==","shasum":"0596c5f31f18dccc89b6ea3a6358bf6958140821","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.9-next-1614341798-e8bc2e64.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOOgTCRA9TVsSAnZWagAAIeoP/13kvWKLSPWxI6ZIcCQd\n+fF0qX3C9NdU4n0d+EXde/sgiK8nM82YwocPNYDaRGMVAVhJEasNIfcVTuKx\nZG6sWebeOAT2ChTopJfmkoP9/y+5hjCDeWSy+q53buJmIcJfQNgdztxbysoO\nMtw7TlHb6Sqsxz0CqBnMMKYBuE19Qq5CocIoJhw1s5bIcmO9tmTER8W7o3Qz\nFmwpNCiQe0IbSjW2hSKrqSh21bzXzDVWO0VeG+X4pyW9v2ahZkodsm8t8sIe\nORT3A1q9WOy21p7IbXFW4upSc5TsIKNnNpAkP2iJrwoffCvR+6n8Gjvq97PT\nJZY5OEqpfBwdFEnTlErjaQ61144VbjADkFZ6O8XTdeVFDEyUsrUmnGXAsE/R\ndviV/i3/lLxzgIdRqHBcwk+4gxsQVPZd/qFpHit6YzpfQ1TsckBwagLVnvu9\nzmOgnzWm/25XLaJP/F4tIHS2bBsOHdDUIpZl7IdT7C+TLZJ+sbiQ92oR/ihk\nj4gy+1EBlIbnzPIqsPK213h1zhmbv4SCL9+P1ogJ/4pTfpR0jTbKy1hBAtGh\nuGbyVcDKDFiHiMfpmTzQ1y4iLSPrcwWIFH/rbfVygtxaJK0ZnoTtRjTAlh2/\n+Xg4D1eQdx3tNu4tY4HyqprJLaG/gDTsuGJBDxo8f/7NMQIlw6WTlH/dQXaw\nM662\r\n=BuJB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICExOTPxzlBAqv2lVeugGFG78Bq3M/BWRjI3tBJ9ShShAiEApIsNnfz2r2Z15JojT4oRhCBhHcJ54g9Y9SltvmyWk4g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.9-next-1614341798-e8bc2e64.0_1614342163386_0.9773980035922238"},"_hasShrinkwrap":false},"2.46.9":{"name":"@xdn/prefetch","version":"2.46.9","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.9","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.9","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mvZFE9t6LXt/P6p2ftnlHMo4uCt4pVjLhOTc3nYxe04Ogk2IBjkWizd/Ppj5nt41hYP8dl1Vo8UriYkiZ+5Jgw==","shasum":"256560f9553bc59e7c51bb1fc2099b770b1825ad","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.9.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOQK8CRA9TVsSAnZWagAAqWUP/2rx3aB+fPMaHUCbt5nJ\nbOS7ahyyV9hG4F1CVEZb/lscoA1J8MKWuUCukVhig0DBWmWVKBI+b3/3Tmsu\nBsx32nHjNDsl0bOVIr2Ru5kUEtM5NTawZCWKMx6JAPkuj55f+bCKmBp3ApTF\nW4ooBUp1VxeSkWO4Sn1ZiwU5wq6J8mfYh1X2RtUASQAgJXjTsxq/+pFcgfbj\ncl+pDXlHK3VCSxbdeLTvgFszlI3N6DMhMygDyrss45Jzo2Qdz/9/MX79Oguj\nOuH9jkoEc7OmK3ym4PR9Cvdr6Fg/Mk9jDBrA2cfScjW08WTMO/1ADsgIF5Ot\n9EqGRfmqpRmpzdFum/F1C25AXwEa9yt9/PzSrgWH5BpFq5AkxhTVrkvjDBy7\npRjK9T1tn4fz+K4Q6IlCgWhAnmf+rT4SEXs6DZzIiEZUwSw6pfqvt5HNPXum\ngqF3hJPXruGcgs9xW8ehNoPiglGSbVB1fut5+NeAkfikVbRjGHpokDh6fRb6\nEE3kwpVRhF9Lay0aDdjVCMll02uQ+CspUaasdwE1PzEQdJ/Q87l7w4qRc7v7\nS6tc28+F1VrZjRjE7jxbb3EuUj4tQpmSZyTe0V3M9vktlpKD1C+wswrJLOya\nfppwmPjhT2aUaO4XV7+zieqmjO/CnpQbDPxtxEXxiowOxH1/FvyFZeN9r2od\nMJX2\r\n=ox+6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBxTQLWtbN0x3eNt4qiuAtLC1zBUUkaWR/Xywcs3rxYsAiEA+9C6ddpOn4hQoTYR2OD4FcJPYsMpUqjWPdmOFzix6+w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.9_1614348988406_0.4890833214603887"},"_hasShrinkwrap":false},"2.46.9-next-1614348692-61056b85.0":{"name":"@xdn/prefetch","version":"2.46.9-next-1614348692-61056b85.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.9-next-1614348692-61056b85.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.9-next-1614348692-61056b85.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-DxnPw8iBBem0vDPwGJcv7YWmfFk48ZdQnYjYJnRZKdT1K2hsq6iyBBbit6paq11TUoJJV8LcUy1mP5HCtu99Yg==","shasum":"742964289ed8bc4f8266b782d661e820db79b97a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.9-next-1614348692-61056b85.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOQMCCRA9TVsSAnZWagAAv80QAJ9rJAZZKz9umkl/8vl4\ns3WtuakIE6tvn+w8rNzpS4A+qdgZvr2t2yRJYcw4u1UW4vGR6bAKxj2q7vpC\nBH46XKJ3cGt4jXOgw+fbG9LLsJc6+/oiYtTQW9whsih/WRNDZ9BpZFrSq2zo\nptBCVuRHOsS2ulvMZ7WLGgHXEzKtriGCBr5F/pCO4qMckT18ZGXaZ3/Uz8/w\nIKea68FL5nG2kivkA1Aia61mv6BOfaxnq+CRFICAKNdQAptxJ0ncDI2zSoCJ\n10Sa8beNmfoltnMxwEztKo8JUjlGM3A2gOv7FBzMN2hE69lYZjU9LcMHmRn9\nw1O7t05HuS39bFBICcTyqVNmwvqwV8ZG78kjRZZ7mUb/0akqD+kzs/WdwAe2\nHJDaQASxuQ8jBYizv5umRY4XSA917vK1QYrIyBr0h8IfpRB0H97QXpI3encB\nXPEXb8plnavwuGlFQ+Rx/ekk9ryLUtjuLiX+s1NX14Mr9C7Hv/HGKp9Q9TaH\nUhxs4mRLFelux3LIRSpj4GzYYL33pv9pgS1Uie0XgbHmhc4wLcZwmlVkYVNF\nNTp1llYUAXiOg3cpApSECqN2lnYTOzuW4HRU8O/h0TOo2s9A9L7P3zqL8JMd\nY40nNepBg5QSoJtK0EN4jexrGsU20s12BT7VHXVLDH6C9nO8rFwdZKs3DylB\nVWLQ\r\n=UCOl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMHH5h0T5jNYrSqN54/+mWFQKW7W9bIuymyVe22hEQQAiBfvdYP8hXhZik6rR1W2IQpPde6RD1biMaxycW0XvS/Ew=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.9-next-1614348692-61056b85.0_1614349057518_0.44312938096278676"},"_hasShrinkwrap":false},"2.46.10-next-1614348751-5e207739.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614348751-5e207739.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614348751-5e207739.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614348751-5e207739.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-zt4vnSROcd1x3vG1GwEFJnU2Z0+bDxWWb6zfTwcinLx9aUGSWNxwixCdZW6NZljSUvgKBjLnIsItt/rT4iwHqg==","shasum":"f37d382876cedbb9e01d2603fbc44d36b1274061","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614348751-5e207739.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOQMeCRA9TVsSAnZWagAADHMQAKPx34MZM1d410JPgMjF\ngbIdoXgEaHmSyBs7YG65lkkusErt57m5TnRMUvcBOlvYYC/ge/cq30X9pG+r\nPz2M5Y1i0TDD3r+ywBoEcAZoXA7KShuZcONy1UzfHzsqWIBBl291H1kTfSIj\nQhagnfNq+eG+zaR+8DUvI5eDDPzGxOpaBIK+BEvw3LLkGxIlL7tyLyU3SSJk\nKlEBVipIxkvW57xPuSqjoFh07Xvu8eCeE+ZZ/tXw/MPBNMRg1IjPfcckkxFC\n7eP9qKqvVhbVOrqeitpIxa33l9c+74LM7FypoX0i+5GG8D1cYUNB6xNgcXmQ\nvEU71I9vXsKyLrDF4QpHoa2KWKjuHqj+r27ebRJLkW+tV53cK7FnD7+kh6N4\nOlrmfm7q48OgklDGumXdWhaIw5cpeT5fp6JN0Yow8GAyXtRoZ59GSklTLxaX\nstO61jloepI50foyvGjOSNUb3uNRNffRaS0DIgnmu6cRT1VMqwHKpKDFOrb4\nMQDuK+Fhtu/3SIe78WY4Xav/8AyV2T3onFBIJUz39XRNopNsVK2Uz4Bf9xOO\ndFFbLTLhsNS9McNP4OxIwvF3/sYi3GUXFpGwxB+6JigxWzebqdRqhUNT3ZZ4\nyjlZM0XmamPptQSC+3vNelgqVXvTd/WMJ0kLsNR+y1Hr2NL2/T03SXIjR4ZI\nC4T8\r\n=Mpir\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8JnyCOHgc8y8CA/4BZ5wgZee4BkJ87HXi0gbf0dtbcgIhAOXB8qfAA8VEY36NCWFeGg9WTYG+Vmzj8Mpaa5jPohBo"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614348751-5e207739.0_1614349085954_0.6067590334479298"},"_hasShrinkwrap":false},"2.46.10-next-1614636547-5a6a51a5.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614636547-5a6a51a5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614636547-5a6a51a5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614636547-5a6a51a5.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-nIa/BNhy4mZ7f+Jxue8u9xyKUrc7hz/Ol/GLO14pNv/cJ+tJ2EKdYqDKihZwvLjbk2SEGeQzGYCnl0R4zd931Q==","shasum":"5b47f0d2ae1db1a4caedbdc3914c780b965d112c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614636547-5a6a51a5.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPWbNCRA9TVsSAnZWagAA5+wP/RthhAra7DUneXfXPXEM\n2ff04VlPqNXXEwNYSBLgYbYwFuhmA6iXD4gw8Z1d0E11iEGrxaqE1S1jBljM\nwi989P0+E6CUilRj7/q4ocnajzPJGqYSpk+qqj4246P+Uk960yhXbwEONS2Y\nAg0sYP+TXiMXR8XV6A0wRNbmqc8wOnIm07ASpOatfDVPGWryDZDsdCBNc9iJ\npEZ7lTo5B6rMoy+MZNoWqIhjjRMJIwnvOhcT7OloEM8YQfyM+pzbo86ztvkF\nqZAFxwNCt8JX6t3rsr8f2gUV3hXth+rAatxLEsoMtTB+O3s9+eQQX219sck+\nILUwKj4n8yZ77/l06WfOEoiRYqdjoKHH7J7Kizr9rd8VW0e75ig4tLCdRTGx\nLzAxkf7RoD+8Rm9aF+N5fcHr30Zn79lArzfZUt8siDxzQtLr+dtz9AWuSNi1\nmBczppJOybJIn8T55Iq0M+PSMSIaMo32Ft9b62T9uXRsDlIEvCckXalIA9pW\nc3qy86OqLerl68evo/0QK4DYmycE2a5Y6y4fAloakDv2lfGZ1WjZgybeNOLk\nmTrMUOvZNwQvip3c5f7qB231KrFMs7IgOsNDkO+ISz5D9YJuK4O/S9Bla2iF\nrXFK7EfnYS/K4yDisVA2N4JJPpxoBR0UMMvTLXxQx0D4thHsHFfsipIBfett\nCoW2\r\n=o5Yt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH3V43a3WzkOhxSMh0fbXCJZqpP1eOSAY1zc5NEclgGBAiADxNUWnZnEyl3noVe0mkhphioJGG4NzEa4mTjLsOrdoQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614636547-5a6a51a5.0_1614636748638_0.6442019339404943"},"_hasShrinkwrap":false},"2.46.10-next-1614656181-0845175c.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614656181-0845175c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614656181-0845175c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614656181-0845175c.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-sVPoENGmV0RXpCU5LAeS2OX+D4HvVxCDs8uQbpY2TpR36DWLet8/Y8krx8R2VIfGnErFc96G1OjRE3eapiI7ZA==","shasum":"21a278855167d08a0a05f10e3503b1dad0dd7c3d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614656181-0845175c.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPbPJCRA9TVsSAnZWagAAaLsP/iqWi3HdzytevFrVnK5a\nBnDzCYgRdbw8WtKgstxhAbs5GwdcsMdpIrj7oXvWVY6aRixEzO0EwEQKoHNG\nhVv3CS/Y45XZg9wBkkLXWKMskERluNC3+6HstT7qSNmIXORJNCGz4URK3K0Z\n2ixxcNWC+1V8RfLobq2nj0S2GWJ6Ns9TneRiPB1d4ztsSTPFGJg0MVcrnwGG\nuAc11PkN0RjpoatAVSmdQ0PjTcCTp+dfwNgZlahbXs24vtQz8tNM80K+LBHl\nVDrGQziH18xnNBubHC62fmkHliCwVvs4xM6si3lzvfI0KFCW+yS0uCivLlfB\ns5pRmmMY3368BnpRw5m9WYDktjHR0adox10QHv64usWIy+Jtlf0EpBeIVFNO\nv/X0aeHz5eFbOKGRNx+PEf55n+txCxmhbexEM68damCPhtLJa6PMSH9eufHc\nHQkcjaLP9UkGJwddl2kOO/NgVkqY4I5YOynYe893HChHTAmRKHm7r+6oV9TV\nfGA1p+TjiE0Qc/bgWUp5PxoiIQFtvFYEWJdVA+9Hx/ZMbUW3btxwVFEdpdrz\nccFRM5kODgT5qwhlfjCV3Vf+x/dNKWXSQ7a29efLqjgnr3Rzz1plPeq9FEZ6\nB8FrIjd3ZkZq6RwbKZnZ9NZE//BixrDNp9/FTguBtKP1GTV9zbPXvq8mtKFp\nnD0T\r\n=fXeg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGLxTdeD1KQonGXdapUtx1cuulpaxVsNFO64j3r+aBgjAiEA0b+QpwITB5d9eRbkaKp8GgqBnkYCE5M2WF0GsJroB3E="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614656181-0845175c.0_1614656457346_0.5800903385532523"},"_hasShrinkwrap":false},"2.46.10-next-1614656223-c940d937.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614656223-c940d937.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614656223-c940d937.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614656223-c940d937.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-BpgrntKg2no7AzlkUQ49goHr1A80LgDqQV0pqRNQV4pykSatOVNg/QWzM0ltcHhuH6Nc8NzMBalXiW6YC3I/yQ==","shasum":"f50a9da224d3081f552ec4e12a97a25c42f6897d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614656223-c940d937.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPbQWCRA9TVsSAnZWagAAQggP/0Tw9ZQcQ5nhvPaix0ea\nkwDaSF9I2QxM7vswVhSAnsRRO/He83YLF9NCckiF8iW2Mh6IGawtCpyESNci\nFXixpOlL+GeyOJjV49Ur1VAwwbZOiL9KaH9jzjZ+SrLzR1zxsULCuwEjboWR\nROFjj/MKnpOLzHg+TB9M3OFHMzihvpVvDGcPzDu4Vp4tgDRFhYEwFuuh4BmF\nhD4Bu7pvn9ykAyjq3WPhitUJi1h/aLuSqujWW8o+Tmjsj+ssXL6Nb9yOb+Tu\nBTg8CRhddEAOwe8Dh49GwrsZtp6jNdOuXScFaDUoWUMKRCcWcmNWZeKTE0dG\nojL2PVCl77YTNBPzvoCkrdT9xc+Cuc446lD/B9Umgpqk7N4EB78C6Detam7H\naJq1h9LQ18FUiIJkMEigd1q8/+2Svnh3Wo9TaLHylK0YtjO24FNc+BBHNwwa\nZsAsSXZaFgJm+ud+XYkCmuTUA3dnSr2JsPlJvCr6unEmYLBQ5APMaJ/i33lA\nLiZIjU4M8JT+OelJlMBvq3JWWWOHw9hoUDCKuE1s8sSHTqhv19g+EFsyOr38\nNlj81klzifyu1OAONAajWK6VRTap3aTiD2x1yJYajj7NTg2LEAIt/HPCNJV5\n8aDFslBUKbLto2658Es5R+pNZC/CPiY859iRclqV8XQZdQ5LUAjMy3LFzHQK\nbeQZ\r\n=luYE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC5JuaRHHLUATP64wwUhAx6WuMOCBuqhD3/J91sL0fV7AiAzkAmpsMbhlC+UGccUGesULJ7/FzO/+v+6RQK7aUY4zw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614656223-c940d937.0_1614656534229_0.914014055854425"},"_hasShrinkwrap":false},"2.46.10-next-1614656234-e6a0b95e.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614656234-e6a0b95e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614656234-e6a0b95e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614656234-e6a0b95e.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Im8EinhkdUCkT7nbc4hDrf8pgptPWoybhluwfVNw2ScIibBt4Up0nrWUwaBq8Dilxh52Rfw3j0okF+GzSrZHqA==","shasum":"9421cae9a86888a330836201de24a06b1ef471af","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614656234-e6a0b95e.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPbRBCRA9TVsSAnZWagAArQYP/AvJukk2vh/n/j6we2sw\ndmjWITyXGM/HKdVCqAFY3aHuBAFazUVrNDLUB40EnBfHF1MSM3nZv3Vu30Fm\nQwsXSUEi53K/yB4d99Ckh8++bKz65arku0W8/PH7KBSFh4An7idHtcs5egMt\naQ42Y3LlnpevwtiOvG7t2vy/XOTXJLoVKH3c5xA+4r47X2yrwVVqgY/eb0Pz\niOEeSFUaHfNJ7826Dka7Ncqx/1Z/q5pUlJdVkxFYCJwECLAzXV7680/wg/uT\nL9FiiIYHbjPg9o4vNieoi+2LY/VzBEffJaoiPqogbpDFaabpNORyKG+X5cn/\nEcjgZ28kTM8wbQm35jlQAYxW6+yz0024i/VyAHyICVRs8uv3jmVMlazvPBb1\nnd9Qhgv6cj9czhzwL8K6cvCvYl9p1DoyeklK1QpgQ0suRhiGuuZU6GYZp9Jc\n8FHanHNh1dUoP1UoGzL+T/RdMF10O5oiE7Z22pxo4vxUyCl3LpOk1ucoMJtC\noVXE2ZLMQ5cD53hAhJNIj7ggUPxUmN0JKvoN+LjTTD9DNAtGswHoTRwjr8Qy\nkVZ/0HLLarDh0P3I9EDZMNZis6rjCbIUiYMnjvHrGx8MQ2EhXf+QAEunZ0mF\nETFgKHtngaBm547L1T9hxK4Wk6g0eXNrIoKSoLQ50zAGEUy7AGfp/sGQbg5Q\nOrGT\r\n=f3hN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDC5L8KgNoxND5Py9Y0BfRZdtnin5wiCiZ6OLTMjPkc6AiAjjPDTg/a4KMSKzTQqksmT4wndio9B55TxxLeG2KE7ig=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614656234-e6a0b95e.0_1614656576870_0.8140061912159637"},"_hasShrinkwrap":false},"2.46.10-next-1614693156-b489ddff.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614693156-b489ddff.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614693156-b489ddff.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614693156-b489ddff.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-gXR0256n+4h8yku74fLIJW1wU6MzwS7qI+B1FZziAOjj8BLwUhV7lHRM3SncfHDLg1YdVoMDxhLRwF5RFkW0uw==","shasum":"4c7a9d8cf67c228b780c04b9a8456c4c922270e6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614693156-b489ddff.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPkSICRA9TVsSAnZWagAApvAP/1fpJJn8Na+PYbc3HBUu\n7ne1WV1xeGSi2QLEetSM8sfgRDkUtIgPRcwooJEOHbamH9aPfQ0elj6HPOwP\nqsLumx3ezGCoAPN9Gmxv/Acoj7QuI62Qinr4KSNqxjFtVdoFMFYle4TVHFk/\n9zm4Eezn1Z12HRrNsUU4QNHi0CskJRKsppXIazHge+EPMh+LHPiaF7SvnmUG\nmwo/XEQK3nD1jsK69wWWr1Ia/Jr1qPirXIT7DrODvgquZ90hEGrdsk8COq02\n38n4m2UFjUoTxBM9W8N8fJkGGuVEIm8YB+GKisBMoK53dXCjewS0XYwCO8D2\nZzOyjACDJta0tXYjFExg1RP/7N5an01gDztChsNvXJ4SArc5dhF45Q8WM70P\npU61a91biPHx7ix9h8aWCjuRFeV4mztgUOKZkLEJLcQKOc2IDffj0+RTIAhV\nA+3jt86xsxAncgLb86Oa3xsN64RZxwfgrsZiiI8jBYK0Ts2f3Sofsh5zhMRM\n18Ed6mKsik2vMCM4/F9qLExc0SmQ6AXqWZ3Ld5Xf6Du9oN4w08Pmi6OyFLbv\nxxAKCDyaSWI/rO2STvag8kPpMZs2nuwUO8JZvkna4q2fbC17xdjrQhOhNAtg\nLnOjCe4J0ZkFkOQSZBu1Wr60ekK4lPybTQXrLOYG6wn2S7nTLHWxYr/SILJ6\nvmEP\r\n=uVGm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGHd4CBTrs1S28iNdFzLXMjrSly05My8XumI5h8SoQwgAiA+4OCfMx2qj/qrfYirsLcjM3ytQtcWnT5djUnibrGNhA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614693156-b489ddff.0_1614693511734_0.8193035970587768"},"_hasShrinkwrap":false},"2.46.10-next-1614693598-4a8d44b2.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614693598-4a8d44b2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614693598-4a8d44b2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614693598-4a8d44b2.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-WOTziansrEOkJC/fstW+C5fZOYtnhB0O4Zh+xqetF9mQh5vYXFXnW5CYiWhbM1p6M3iqrCDLm34ZEZYo8oUhQw==","shasum":"cb3d6ca91a7a077fffccd48aa5e1033069b3e119","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614693598-4a8d44b2.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPkYtCRA9TVsSAnZWagAAaJkP/3hRPun/FUMVzrZmRfMk\nPsfo3CdPiHuSudvnngjVkmPfTKdgcqiCfK1YBFmNxKqzJeu5G+DLGh1aCq4J\ngKCJFoJ+Sa7PROqNsgAZYWUmFPWGV7Kbp0+hqv5GY2S3jBDQWMW7UnllzO2C\nKa4AQJRdST81zHvTZ8dTMEauGqYQ3EUKJeO+EDZw+t+vPDel0AbcvCR4StD5\nuTIS1Bx3JbA5mnLKudZqSu945/B5jnotigfzfWddoVoAoX6zjKNMuAy7qFcV\nTjairpGuJzzO89HxC07HChHFeZ1wslDXN/zhu8agvTPMXs0Uw4QXKJuWTqhB\nMMOmk9ZvQC6lGRX+cYPX0w9Fr3TaHBzn99cUkS6gNBqkXfXPJOYf00e+Gmzh\nrB1ZxN4z1ieJKtLdCQhOYBpQ41DybGpNfly7LQLXJItyTbYU0++jz2bK5Wuh\nVA786/Dtm3pgdlXsussdCbfL9hXwQfNpJq4b/lBRLDJ49S+Cwh8G349H3nKk\nxZLqA66fmvvuXZhKbXSBgNUawODB/q5JDF99Lqn1QizP2CQEJtLOL4SdYeNI\nyyeDHIeoUjTmMUnVJL+GehIwugIaNXrbv63j8IlM3krhaOIlm491CLoAMK+L\nIOHkbgvSpV7vtjtXe8XRJduHVf6H2uusA0wJQDfFAW4IK9yaeqhjdmbEEo3O\n6Smd\r\n=v72b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDurngq8+ls9IYHJDoRsslpZdSDf+gjglDK2yA/hGq3YAIgcmspqrbcTEzIftqIHMEp3SuOQHaL1NC705XEQejKpYE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614693598-4a8d44b2.0_1614693932958_0.963368256761532"},"_hasShrinkwrap":false},"2.46.10-next-1614708710-a27b20e5.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614708710-a27b20e5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614708710-a27b20e5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614708710-a27b20e5.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-p80BRpUD6l/GDcrCXunCQ4+yeIeZIJx2PR2g5j+zulITMlPHdvUF14WqS19w1xTtfwzpll4zrZc5sSIP1lNOLw==","shasum":"0fd116f9556a07250a22aa7d0616a4b570c1bb63","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614708710-a27b20e5.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPoEwCRA9TVsSAnZWagAA0mQP/iQVyEVDVX4LGcSy2UQ8\nJCmyVw4MLZA2uizxEFg7niIVFbAAzzSTr9sPc54M6TJ8tfoyhat6xM7vwv6R\nSWnrKDo/yRulU2fA/iUxnhh1N7+twqvxIB8HbJ+mO+V/zhnMf13aELLQFE/M\n/AJ6EpbUPB+fLMK5orFxi3U+MNrdc9+KUApck5jRfwdJQnXF9Xfj2Imrv2kv\n5SVCG5ConnrRjqBJmuSlpeMjhClOJynp+GnNSxiI1BzwagKGFq2UzVR6SlVo\ngxSK6lk+Cd1/POFaEZk01IgMtrmWazV3g5Ky6cdD1RQk98QPuhT0322lwIEU\nzDBwKQ0r6sb4RtvKh94WbKpomA+b3YsY4lcKsoGLwIL5G/Q0kAaKIKfHUEmt\nIr9ygzWYFdA6/s9Jy6aoQV4TE2TcsJyhX63ZPvlXx4ux+iA+xSYTpjX62Oh9\n0NK46JUECHu2xVrXkGSSzP6V2GdpAx5cqlCD0CqrDee4bnDg3lUQnas+fdIm\nfW4VLKMDxqFiFYDVCxEtZ6fX/2U22wN40ivpEOb7C7WRu/1dnCRihdTGfYhf\nMVRx+UPkof6XPLkzLm3f/DD/YceBRTBozt1qq60aTJ2w2eOnwthLxYDrbBog\n26MbqFPc/d2KgULeQYGxw2B4bABuTQer5qOZgvFzt8o2gjSep8aNbrp1Dt0B\nU4lL\r\n=44JM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfbqIsPz5sHdffLeupaZCvjSmFIaELg5GPLFaWc/w8HQIhAMf1X7iVg0udg0eEA29Eqd74w6S4GDxDohXD/0YKiQa0"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614708710-a27b20e5.0_1614709040063_0.46079196747926"},"_hasShrinkwrap":false},"2.46.10-next-1614717241-b863f691.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614717241-b863f691.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614717241-b863f691.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614717241-b863f691.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-zIGnbFMbabBeuwLjvA++6B0gBNKXk7IhMIFfEigUW59Tq1WyIlZquUjxc1Ede+92FnYX41k5DqSWmUJOgf4d1w==","shasum":"2fb0c420685699dd9c12870f501a1672f4ee3bc7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614717241-b863f691.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPqJ+CRA9TVsSAnZWagAAROUQAI8z0y0YUN7eYK4I5YpP\nPNrEP9V1cOj0aIxFOlNNOV2tNo9PHIyOBFwD34/YpGa+N1TVdS9uPWOVrGI3\nRv0Ri+zYdtl6zDbN1nFMA9QpOGQd/lBGblStj3OJJdqhk559r2oz6/2B18gG\nLsABKB8/aQtDxYI4cKdC9SLh+R0L6XlYzBGjD6BoEm57O4S8A7VUugGVFsph\nmZP8GusiO+hVuc8xKapAPRguefKMWcvbbaEypEj7XwrUF/+NkVOF3iI5NkLl\noENp3mZnwDGT99GvTRn3fez4eHOC5ZbBHbyRcubl2jON+t3AzXaj5yFUqfxA\n+C/fH08rCLD80BSAy3afCqrcWgY4+N0wYBcDXQHC/gCE+uGK7yaHgGUkEIBM\nlwJi3xtV97qYtGhxD8r/n8O4aN0Hd8IBK7724xLHL9qWG5JHZUOpnA+xxmEU\nDMnQIG2/j/Dxz9VqmIpItyi5bMcn1uj91k9BeAchJiqMTZwwmgKP03aEAN/3\nJoaRjX1bttCibOCNpBole2Pn82LwdW9TPXSQJ7vvMqBxWkFwK1A7ugjZKGAp\nzE8Oc7iBs6DeZbT4dvhcUZ5Ol9X9oLm1iX9FkbeeCKybX9KyUkYAQd5m5aQI\nZDJHPVqVtG8HMkYBNWRyYWxbxla5tsZJZAkLmTjACbQl0DpHGC+ufunK9pcs\ndulA\r\n=CNrm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICuFRnBcfIywwuWjJeUTRAjapqWxqGO3WsW/ektz2NjVAiB95OWXkA0/9bSrPloaZWlbP+6y6wu1gc/YAIT6+dbcAA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614717241-b863f691.0_1614717565046_0.8803022294263916"},"_hasShrinkwrap":false},"2.46.10-next-1614773176-fb27856d.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614773176-fb27856d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614773176-fb27856d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614773176-fb27856d.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-EmxgOKVt0i4l8I721AScY0pbE+CVdM8MWhz0fcHwo7Z+ilwh876ulpDmonUAvZ3uW/umYGEIo9iyammuaHwdBA==","shasum":"1ab34bdd365db26cbd82fabbeff8c1fd277a2fd2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614773176-fb27856d.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP30bCRA9TVsSAnZWagAAqd8P/RFZ8XPVuKLFLsjURm78\nLysA7nzGR0eDcvMTPCHDoQcZ1vwBA2rQS4CKGHvnRmxSHbh8o2xyqrNMQ64W\nL8+9tebJujiaNVlp1DLhmqOnrN2gVrR4CnAiPsGF0rOPjsD3WXnZmlo+bivM\naMsTYvyTY64g1Uw49xTSUm9GsMVp3w77b7ZS6vUZnDZFMq+Ezw710U6JewMP\nxUr2wKk/ARhANujFSbFgTKllWGwK2s0SnKrAYejBvrz+uj7j9tXgl+oT+nJr\nJnZrv2chB8KvHbHFi4HnKFxHIsXheNXjWfDZ2w3t/KXguwNzHVIQvlKCfEOt\nQkltSAvJ6M8509zopQGoA/m7FpTa7fipPvIqlv0lg907XIOnsKgL6ZRVlti1\nj/G1XQeLS+dFO5DqQyNa4hwQKFvDv2ClJlsCpZANv3ztUTQR5k8978YFWC2M\nsUBSmryD1OI3YJXhgv2I+3NF2d+yGL/Le4+z7rKzU6Bvd2HiznngO698iqs6\ndsv0lZMv/K+yfpYGUA65O05tvdoHPpW6Ry3pFvxRdi8BwijFYRmE68C+U2QA\n6a0I4T7+bSgmeMiifCAVRezilHFRTsSPRH5GTjPEgHHDCHYQu00WO+cPEiWK\nPLNrCPJ+k9i+OEPGinBzho23HOwOh3OH6TuS2sxq+g0F/R24Gt/+KhAC2lkr\nUXZ5\r\n=eEJ7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUBekmRekie41kLwmgVOTSnv8DbjJSwkv16VpX3SEnHwIhAIjcVTjvuvRpXGGz+ECM75zXiplvMDNxFszM6LKgkADe"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614773176-fb27856d.0_1614773530466_0.29272084710901414"},"_hasShrinkwrap":false},"2.46.10-next-1614791421-d0f30452.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614791421-d0f30452.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614791421-d0f30452.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614791421-d0f30452.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-c/GdWu2FJcY933bkChGSBsHnGdavgSF6HqXfJRnBJ3gl9bD17VOljxcCNMZjZJkZktor4+3pLwcJCM2590Utww==","shasum":"1af968cd29840d77d3980e575dfb110eccbb93e2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614791421-d0f30452.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP8R7CRA9TVsSAnZWagAATaIP/RSga2vkKdKO2N3ifq8p\nDdcPoRc9AcbG64hpL+xpQK8M1cyfRlOS9JKM1SA7vqKUynOgnTWf4e19EPdO\n+xS/Pn71FI5YkWIeWtkcJwyFfqxB4nF2jpTlpsl8eNAS1qBFUVPK8/7eFkaH\n86bxNKxqBM4/5XghwcZw4rAp8eWFAz3K0nnpKQnzEoqI3JfNJwNzSyZhZ/Fa\n+cPLUCf0azT+Tv9/L7gk9vQ1C9AoTM664cu9IDNl3a8qKS/SgXDHNtvqDvly\nLJKdl3XTFkHtnuniTvtO4SXpqIAnLAJdOZv+bUTTtgT6orrjQ0Lnrida/LpY\nL4njW6lD22fWxLVHS3lUCB9XtnwHL7lJqOtPOyEDX0onEdPxeE7WS7KTGSGH\nfDJddx4wCJZRJjEX0PIQpAjDDtivwIGYRIx8h83I8/MD8Um41S6PkkbORXyr\n/d2Up+yvqQLntC4IeA/17jsUArWwB/Pkr6sXvT2cL6p3ZfXqYo9lWjo0puTK\n1r14MFjSgJUaoy7rNpQwEb6Z0IagbYROG/lR017hNNIYI7/2cjX1wHufscXt\nc2n4zkrpDKEruFtlS1AoXSwoAYzFeGLtH0nE1OUhEBxYJ8Uua9zDli+JhkRJ\n/5tMhf19oUNPnC3u90EIK/085WBqS3FSceS+wNChnzt+XtGqH+YagzmfMbI/\n2obK\r\n=cQyw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCi57SK0JEyUpkDL+kA0Zo5ELvpaPfLHkI45ublGzh6iwIgZ06YREyV8Uj4g7WdmqKD+VlDUc3HH+UYc1I7Lv93ZWA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614791421-d0f30452.0_1614791803468_0.027144297005628815"},"_hasShrinkwrap":false},"2.46.10-next-1614800290-5b3fd33d.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614800290-5b3fd33d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614800290-5b3fd33d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614800290-5b3fd33d.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-F6w2n/u66RnTqfmCJp0OwMSJbenB1oGgBIFZQW68vBUrjlQmQ+oSMCxKDpF74NaF8AcHUdWATsF5hP9JeUL2IQ==","shasum":"4f350f27bcddc9971fa31ce6c969a493f7f32383","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614800290-5b3fd33d.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP+cYCRA9TVsSAnZWagAAH/gP/jX6VkRtm/Kriuef5/GN\n6Lk3S7YsqT9Jz8POP1RAN5Cw9BL9bG+EBMKMLmRL8gzc+EmfdD9RLxUsNUYR\nz8VdlDUmtTISEewQjxgyncJINxI8Mz6cIJfP61oQ1cgKW1ANANWpdJmFxULr\n08KHHh6r6liJ/9fM9JY5oG+zV+w8NA8ykeRZwIBSZZ1ycmALBhfWG2wdvW15\np+NfoyFNRD4gy7QdvD7muHE/xhBlsUFU2ZrShrpHjvcAHxuFCy4ZutGvRLOD\nG9R8V/R3C1LF5xNDyCh4bquLnjV6RS3bZg2dX/AZS4F4vpYzql3OE8FpBkZk\nYMUUtsIcOPHr++EnuPnjLcawIbDx3XzfM2HF0RG3fToffKJqs+4Zt7t5ZloF\neTW1bplhcXkfsnUWKwMRpqHHQhkwBamzxRBS8mgEoKZmn1lMHOjpyY1d8EL5\nif7VoVeRW4cbPqpiiC79ZjivoWPPsv4Z4jDGbqQE+O4iIG1YuXDHPOILiRA3\nn9iMyAD7u7vHkrr7yrAZ/H5SEwQSQyPS0tzyHOmMGTq04sMo7bAGNeFrn44V\nOEL7lVSZknc0ejSwfwyXP4gkJL5FMQj5dFwSc57Y+2QYjuAWY41KVDQkpkKI\nb/Ab/p//rj+HErKHqG23RfTfLG1IkrhJ+snVKnJz8iuOxHF+i0R18UPoiA9W\nf1Q0\r\n=sZRs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXfyA2TqOKxtPNEhVa3RBQ4e4i4xl3+EkPpiq7Vsw/OgIhAPV78g8fUwAAz5CdCdzIWo+rLxbnca2eMKkesxWpIFi7"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614800290-5b3fd33d.0_1614800664255_0.39179706010754756"},"_hasShrinkwrap":false},"2.46.10-next-1614806068-4e5bf77c.0":{"name":"@xdn/prefetch","version":"2.46.10-next-1614806068-4e5bf77c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10-next-1614806068-4e5bf77c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.10-next-1614806068-4e5bf77c.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-lapBlDb1poRY/yxvzAdU5UM5nBQE1HnAyMQaB7coUtDqsrY1afaDZMWcWMIZ5AN/uXExBQdn6AFvhqU1EyTibA==","shasum":"7a00c51b757e947dc464dd9de3b9d7b780532a4d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10-next-1614806068-4e5bf77c.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP/2UCRA9TVsSAnZWagAA+2YP/A0DnGJag+pskusDF2wD\n8GxpwF/+JADWDepVHnoOgZetvNSfOf3PtyYZaVJmEwRTv5Vk3e5iulfUOJ47\nnC2HG3lj5RM+saQD6bw5r3Z5xj9hGBb5uK6KueAn+T9MtjM7XRXMRD9QTyds\nVi5FfmSJ7CqNLhQO0Jl7d91SgGKTgQASrYc7Z0z3TVjw1AsFnJLZ7/W6VHyI\n9tT706xclGt4+IUh0u1Bn5SEv0XmoNveN09bMidXAY6NmWUJxcQ6SFxojj73\n7Miu5K+Y9g4CL/ecVFISFMYpbFmAEU3T7MwMAGGnG9hKaA25Kphj0MtgGQbG\nelAjrXx0Si2hbyBFWxGQq0pVVuyAXyNcPwYGT3tjhQV08pnmcp+5xrQ5VzZz\nx9JYRoRKThXwoY+c3g4z9KAHNeXtbnf8dnTV2NFvA17URFERwNAAR7hM6gKe\nhksK5bADSiE+oxiAGUpiu2yTbTQDAqSnh1EItmpYpO6f0ZZ+3ua7g6QUx7Zf\n9YA9BBUhzihJ+EwpPoPyB4l4sd/m9KnmOazjQbB0ceb+jCBCRy65m0hb4sbe\n8fMSDyaW7cmO+SWOsl1cx8NaD6aU268B2yK5zq/R+VdqH855rneQ6HN3NeUa\n4TTl5VGN6bzqZWhtRqsYYo2okLJ3v/cliRMKnknEzA0QYy632g94zNiq3AUq\nkqqf\r\n=invB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA94saDWqSezsbGj+gkt63+PcP+5C6HeIW+Qxq000DdHAiEAtK8XAxyl80dpN/kTZLq9AMETkkiKvpsCOEswUinpQm8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10-next-1614806068-4e5bf77c.0_1614806419926_0.054919359600130724"},"_hasShrinkwrap":false},"2.46.10":{"name":"@xdn/prefetch","version":"2.46.10","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.10","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.10","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-BN7IRwFfrB6MFl8T2ml+A+qPdBIGo0yBYAY893rMUpeQiKoN4K8f8OuISxewcr/YXq19xz6f/87/jZnajUU09g==","shasum":"56ea5c551dd5846a02afdca58bee26648921ce2e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.10.tgz","fileCount":56,"unpackedSize":138363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP/3VCRA9TVsSAnZWagAAlVIP/2Ik1RL7TmqJmUpUWa5s\nZPyCTdJOC0C2PEmZi+vWGtweVBuaFew2bobPzl3vBToVPaa9UQ1ILPrIWcPa\n7zb9UCwf4UfQEcf3ecsnpnAr7MlXlH7N6pSJH0ayQIF9D8ZYC2bRv9OkUuuy\nNbhVBLLyAv0fNKCtPhuynfpJFWHSp3SKtkuNh/kS1Km8vC8OGEGxLYt4Y40k\n6eHC5VzEVVBAjzSP/dbjgeJGysOvx+zuDi8XiYH7uCkYLkJSYNPyTl3Q4COB\nBapuyvJtE4ginP+wVyIyS1NaQGkqKgGQTQq3ccKGy9TrMUa04QD1dN4P7rVv\nWGVL5y2QazJVeVuznXWjwbWBivER+Ye+CQVfwowkrN5SIF3WUXJYWjSBVJ5g\nvmYoihX+fCGs2SOImDkPs8vMr71yhiq6JO0UdaiItz63pFcjFND/QCABwhnG\nY66MKENt/Vr9sCCOyBdMMZLw8EsUZXsnNvXf0lAy8nRd2wZ/jENpvdAMbQur\n/I7H7oK9eZuxkt1xmRrhimiF3Of1clX+4f9MHWUnGf4Q62PRncALZ5EQyzYg\nfpxYjRVeiGz6jRWiNWzTAtNd6gvPlyiNS+Rq6ytMIpnW9TRmFt1urEnW24gH\naoEINAWqdaglC9WeQYOaFdwlKq6U35lYl4fobah0gjfaPMpboGa13G0yC2NQ\ngGfB\r\n=WYGv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGhMVYpqKTf7MakMEzI2RL2xgWmMaj3biXt9E/6OghboAiBbgffsrOpMYmTNUV5pvW40ORwRExTIdJpgPuNr2LsAlw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.10_1614806484886_0.47777135221103384"},"_hasShrinkwrap":false},"2.46.11-next-1614806292-f0954ba3.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1614806292-f0954ba3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1614806292-f0954ba3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1614806292-f0954ba3.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-gFg73s0HaeSGtwwXEC23UuzFgs/U0W9LyTBqGpFZykFIQIO2zlEoMhmuYv/g2j0bWesj9UPIQ9iRUz9vD1oF1Q==","shasum":"b91a82aa3e458b1c9df5c5a15de238bc815e1154","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1614806292-f0954ba3.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP/57CRA9TVsSAnZWagAAJh4P/jzKTeMYWFGUr/t1i5UY\nEENyurNKPOcHkI4aKGwLn+YLAsxFhMrvjOrKIhdIfLS35Pno2/8bwHmroQ6d\npcAcNdHaOBrXGmqpnRiINnt1YquITNqbxCBkfiu0AxzRNxLwcmyWp5OUXWW7\n4DMIZk9oCTVPPq5UyhKsQcV4jVG7YKRCYFjf+EbuK5kc5tv7x1CGSI8ZbQww\nHFlGjNi+tYDjpeLWnDQGHkPAb0hawpo9hKjYdkQ5XJKBo/GGDW1G809Sq3JG\nGcCevyWo2JssmM0Pep/exOBkbEGLnzZJd7cwBPPI9pBmG3zMcIYKkKEftPCM\nLHERDClt3N+r/GU8dgrbQ1ocTW2K2sT5HtXwFfWft/PtCwDZ+2Wr5DPJbPul\nyxpoJYWHNgMh1VqpX1fWQpH2CQDLyq6KsjJkkR10TZElN97ks20+cNk+CEPz\nKikIKE70CLxoUZvW/aB9n39rJifSc+4uvXaQAviYFwc1TFUSK/Cnm2Oqnbwt\n8QaiUT6gJDrAjQyAFRx8CUtY6+ez/rURAXsH7v8fJod51hIecyVEIjiArksA\nJ20TPswA8vJNTVHPoyv3YZO6i2Xv95xLMQmWqZdt4v+NTiD/7DABqAJ4R8Fb\nAXfOF9swuWTLOSzFI0kCe1RRlsbK3C3Pl+Vsothv0+9HZwT8QL08SxZp7fK3\n00uK\r\n=z1gF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/vFoT0+QzFs0/GF9AgdewCuDzlb7Nv4DRozfJujJk2AIhANa7Ke79kSVbH2bhh6CIi/TNGf+w/tVk6iFr+FzHHW+8"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1614806292-f0954ba3.0_1614806651426_0.483257544848378"},"_hasShrinkwrap":false},"2.46.11-next-1614973222-ce1e9fcb.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1614973222-ce1e9fcb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1614973222-ce1e9fcb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1614973222-ce1e9fcb.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-6rHUv35TDnMKqCn52kxfq44fjQAIoewN1Tl65N5D5dr+B3+kOBGgJxbZB3dvRVDS0zR9OGmP7O8xbQw9JEH6WQ==","shasum":"fc374a8f6f623b59418f1b6f07ffa5955a38acc4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1614973222-ce1e9fcb.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQopECRA9TVsSAnZWagAA42wP/j+NO+xaQcGUyXBLfdRd\nT1Ni/o5pfsVNkX9LkT9FNXBn9kurWYfXKGnbQWqdnY0tMGdjuqVgyyX93fDC\nQ1FOQWViAhRldxHAf3yzpRYOMY9wYP81mMIpaG6RFrAtW4zunT5tD2CXFhQL\nintlmP2oE53xQNUPUtyYEsu+mc3bFNuUyOANa3HpRUu2QlC2oM2qmCwUk/3c\n6ObsI3UOoha2cEQA1kG2MBeipGV1SYvFsBDjBFLoAgYVlqYN4OJGcj0WvF9x\n0xrtDnOA6Psu57frgb4x+R3QKBXKSpd5WLUBPCuph5ZonOl1Yza4FmYfzycf\n9JW8qFrYH0FY/A8Qc+jtWPU9O2Swidv2ZWS3EaEYBkw9O1uAnsBkrn4Mex02\nmH9Az7YrPPp+vfa2CN4SS/1TVrSy9T5P2Tbxfttwmzy2Sj9fnKrIeaCWTRcy\ngEEDNdjjsbHrLNWQFeI51mfarYNDhAzYJshl5lX4eTDEFjRcdVbxqVrxudJK\nslcEdkspoJFdHIfWcxR6cKk5o45q1/ruY8/RqEH9ySejEhAO3T1cMUlEb6/W\nXoFHmNCwXa8ujc4rwWG7rH4DHFl/LVl2VHevDWvcqT1DcXdietAkO2eIRUhz\nW1c6Zh7nnsbdA0q1tsHvQW2bL9wMTh+h1zy0YEjmGEphxP9ngfYzWrYIjVIa\nSLL5\r\n=Yn5o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEh1IcN8i0/fjc0s9yCFZ1ef8haKOR51l9/ny9d/CG3cAiEAgKwpFvN3uT+iv+OAhIILt+0yJIYTwmymyo7BnnR6vrM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1614973222-ce1e9fcb.0_1614973507872_0.8468476829598943"},"_hasShrinkwrap":false},"2.46.11-next-1615185688-abcf8712.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615185688-abcf8712.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615185688-abcf8712.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615185688-abcf8712.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Bd4RmG/+K1sfvtB407M22z0d5KOAj86NUjIs1yKlGxW3+7FT5KNyEeppX2fbCW5K7W5HBderRt60lL4mas+KVg==","shasum":"068829cc1dc1ca0d532fbf4089de9498f92a497c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615185688-abcf8712.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRchVCRA9TVsSAnZWagAAnL0P/ivxz0GaL8AXxPvpdk8d\nWo3e/sVI6nMHgOeF5pJKrsQy2AYm1/56lLJgZM3WJyvVDJxzDFh1cM2PE8kB\nX14uhpqFmfjggVgI/xTD7vEfS2jWM80jj/34yi1ASya19TZ8bfpSC7TTRDmV\nTyX4PHVORKQ0y0Sap6UV7vRy/7YvRAZee48mJjMqsSCwF9k2odaILcWBRTL4\nYoiWrEnSus9WVJyZsDG+VfvaZIfqykgLYKShSaK7HDaXduY0fO82E0sTBAGl\nS0uvrOUbqv4L8sLwPQGbPhvywttDZ8hfjQ2XlyEhLlzAgKP8+Ip1UnEBOPJ2\nWc3oP6F6tUxrX7bU/4Wv0J3CvmXk+UPblBfIVLdpbRP3Bnh55m+Gwwfx5AGn\n6YR2VT/QOKcWX7F06L8xxq+AVQ13T49IYC+GJSqdToukN1sWP6hOrYBspF+I\nKUEVwcSpLQvzfWwOjiriQM3LaHYuhL4eAV6ZV6PGu1qIZTkKxlfYqN7jDCpQ\nJn+pFHnz3J/tg1fdqu75fgzZUhLWS4IjuyJ+zzEsTF/LBNwxOqa0eAqGRiHx\n2UqMJktnWVIJQor7iroIV+Lao6ZU9Ycj5rsa74iBKh2UJNJdXF2vZ9ysja9s\n23hMFQ1erETIxSFI3NwmTY9Oua9yTR2d6Wezi9GAHgjicpsf3ZOD5zVVr+L6\nAiPM\r\n=UA5h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG6zDicJHRH1V0vQ16sXaQ67yjBL2+QeWE4EB4qwe84BAiEAj3bvB5GOlJFWuC0R8Xluuew0wUIu3VZ+AoUxP7kT0II="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615185688-abcf8712.0_1615186005232_0.2676050499691309"},"_hasShrinkwrap":false},"2.46.11-next-1615200283-dc588c31.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615200283-dc588c31.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615200283-dc588c31.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615200283-dc588c31.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-BcuKv7uvwL2Y86P7mwogSuoRMVNdS158XFrB09nsfMEEiPXbCTcia3AXBciapkz1HstlmbVFiockyVQoI3xQzQ==","shasum":"ffcf8da8b634c6e353045265564fd466f73c6c9e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615200283-dc588c31.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRgGKCRA9TVsSAnZWagAAorkP/jBR4ADXx6b0qjlPsbv6\n5ZFFevLUgaSQMozJhhz4kxfci/s4abT4TiBpuXtowDbP2fmdBmcXADoyaa1H\nOeZzReIXm7p8Qd5NT8CX+z9VkOH3NP/0WUjKxiENt2hHaiFryG7SvwOdhyAg\nNTb2lz7sBnqnTxrbuvMN5BBbkheXa5lZuTyrs9PAla2Pz/oyzKF3aeUUHDPR\nivJq2XH/ue4nG46QPABWX1XTpM8ydeFKJfsbiTyppQ25+Q768gWC3Gc8J3AJ\nKXEqE9BiK/AsoggWW4s76ngf+f6frDK9WBVKh8XKLJrNM85pqye5ymxVlFnm\n5RcKPFvPManNyV622g6Csahk4tK+gvK706t3Up5YmPugnzGojkCbQJXO94qc\nmx6ZAXJU7ZOQ4uEv9aSer4R7gLwkoKKQ5xFPGOeLoTCYsgS8do+7bINBw7O9\nTKatwitg08hFogzFCxRKFQ5ivk0L6W5H2f5z+lM07Q2splWZLHIIhd6MKSxZ\n7NfR0EUut0TxOvXuI1Tr9UUMbvTeyyvFD9Z8WA3t+LrQiWUkMHDqupFHjVEQ\nwb/fPbnSmvUXnF37ssOemneXw+hVx3wIFpdpIYPE56TcbEMxY7gL0UJW1loK\nXbR1+9q7GZdp1WzGVZUMGS1kiNiX47rbeuAaBS5WvI4JDwzN26Fo9jl2jfYO\nzsBR\r\n=TNOS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBm3d4XnaRqyne8bxYbyUqTl5OExoqvRVT1lLaXOxVQfAiAz7T1Mnu0UWOVrYscukuv+565YeuxK5D0gLMnIQIhHAw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615200283-dc588c31.0_1615200649757_0.2826371961424703"},"_hasShrinkwrap":false},"2.46.11-next-1615202297-2fcaf0e9.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615202297-2fcaf0e9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615202297-2fcaf0e9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615202297-2fcaf0e9.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-MLiujkCFoW+BwbGDU9hD7vRz1mhOPvaxb8/J2AD/nlK/rYfuamEEoeqx5I8X8vhX7zhti9wNEIawLWoCpPOHNA==","shasum":"dd235479ccbd918b86c0dcabec42911b240ef6b6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615202297-2fcaf0e9.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRglQCRA9TVsSAnZWagAAQuYP/RCuCx8pIBTOASA3dC9c\nKHFHJIUtjINL68wmZ4G2EJbydfSaccISFItbuGHvmWlix43usbnXqlwfEJxA\nkfktITB/raiLQRecHz4Ho7Zfwm6SlnOIcG3wi6K7zCc7yDN/UMVJ8dLYglOz\nA/ZD7Gsdz4phLy1truZIxP/VxT3eCupyBqq0M9AZYQBB62BSiktRUwS2A+/E\nmsukkVCtLN6vPFrF4L4jzSSivRNS3SwUcIkjBzBInYsdZgvJI29VyeBAf8DX\nTZRd+SPIPfDuARosB8TuGOVRYixQfg2LafMUetYAW7vQKaENijkOm39vx4Hf\nsrJDwdmIqON9nxFrFjlB0c/4u899u+hRx1oqSRuy/S459L95bYAovVdpT7Hq\nRIn+I4k0TdTmlyGN0GndffZOjn9EfhmCduyksq2WKndNKmuDgL22iSKsUlbL\nVweu1dyvIiePDC85GJ5shLIey7/tVGx6yF7uNloIjLdEJos2CP3egK319FQQ\n5T47j6DydBxtieja+nwsAcGQaxRz7R4Mxh2BSuW4BS3diZRNKLmVeD2n2gB7\nGFvYfvYn5zPEX7e46ZhFWfApV2eIq6g7nzNh2Qo7+4JfeR1iDWP4bGYNzAz5\naAV2ZmcuDbNBbDgH6hdvuEV+EYNUkfTdamCkshttLjYsG1GBYbPWDS5FihZU\nv+74\r\n=iUme\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCksotLKTeyUMwjtEnXXlJr9U1DuV58yNN9AbN5FEvozAIgf4jrkhguAFliX/7gDojQcSl6x9Xo/yx9u7WoCvPXH34="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615202297-2fcaf0e9.0_1615202640324_0.02049127707211129"},"_hasShrinkwrap":false},"2.46.11-next-1615213999-5fea2eb3.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615213999-5fea2eb3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615213999-5fea2eb3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615213999-5fea2eb3.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-m5brfpNON3NAHznT4UfirfE6ZR7H2nislGFDroIFg5bvdy+4mrI89pq9SOiZXooiTxPxZwEgOcVuGQWbYjgUkw==","shasum":"881f26e4e70ef83e3db492fabbe5a69e9e9e5a91","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615213999-5fea2eb3.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRjcbCRA9TVsSAnZWagAA2FgP/AiXY1Lf3KX7wLRjBZST\nkQvccb+E8mI19+meAWF1oGLZ11a7vWcTwmzhI60tpDZ5hC6eaRFc6x5mk58w\nW4hr7t7zaNZ7KFxvAVjPWf4zUBGpn4ztaflJLOuLMpgKlLFdpJa9zmNBHcej\n1qY++0ziy9dyzxOE+FVfCtZO4edE/phYVy82x/7LI7eIFnt3s6I64f2V1TBC\nH/0IItYu6001VKdwH3bPx1AiY5+cYCC21RWtgsXdw739G40uB5EycvM/Ub+C\nolGqYi+74caZRsPyB2Fx7+ILJBuJmv80RvKyNbNeYzjJ4YQYB5xCxkR42rSS\n4lpUMkBXiPK0hNm5LQBLB+Y8YWjsebQTyv4jA3pkgJVPC+MSJkdvx0oH7RX6\neeZXirizmvY3epgYwvoAF+WQZx+RCrGK3s8SKmaJDBs3DGoT9A03G7JvDUzG\n/x8Diad0sm9g177UNpkQjexpTGaJ25/GCNmb1yX+QZTMXKxWZzgsdUsghz4o\nBm7/X9ifTGUiB0dLmULOEhRMnnvsGAxhGGjgBV/M5E/Zt2PugZHeIp+bBmvl\nvMisKH80/Gb5l/OcpEUHcfNzCgGIKeFECpNLNMiHnWIOW6Xttq4Y0uT7XZB1\nQ/Pk9/85syrTxe1DWLBw8T6SvecL3+JoZsjGfFaaEJLYHqPVu4X2HrkytCzH\nxcSN\r\n=6HJy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICaNhSboHERp2T8a2BpAB6D3tYDdDqfRNxioNZxNL05PAiA+AeCDhBDHER5fCSjjbpZy8N3HBLDXYdTyjbGTtyZb+A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615213999-5fea2eb3.0_1615214363299_0.04355853265955645"},"_hasShrinkwrap":false},"2.46.11-next-1615214503-c6c3790c.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615214503-c6c3790c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615214503-c6c3790c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615214503-c6c3790c.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mQLLkayM1FZCNSHhdKUCxFIUPaXRrxxs2vLXzJsQ2al18vccil3yIaVhaax4Dssu+pPkI0SMO8+0hqDV8y1BvQ==","shasum":"f3f7602315480c8c7cc5b42658825a6ef3abcc4b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615214503-c6c3790c.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRjjpCRA9TVsSAnZWagAAuOkP/0v+vHnV1eC6tam6j6Jt\nfzguQG6fMS60PkSktRLQmLBvsRb9zU0UQS0Ip/HMwVPIB4i8/qTTP7YmIafX\n3oqE6EUdidLtYEveUwuEUFeS2qfUZX6SQNz6Y6d/Ijs7T6syHoRYsp0sxwSn\n6weMrYQbLSnquig1EiHKGn6y//G6lRmRBHRIjolJPOY2ripitpl43zfrWhMu\nqfDb+1NulMBY1SCTu728B1v6P8Q/XYpv9kFgU7MWAGKqTHFDcVHgRjY8mQLM\nZT5EeJDfeAaZNyNcji+rziBDcXt63W5BX0HUjUYWqMr1YjtOjm0X62Iv3g7O\n9fGeJY5Fccw0FD4gLO+BtXXWuxuPQSAZJ5P5ld+gWRIYhOzSjJsyTGqSxqnX\n2AC41NicF1dg0SX8IDGS2W1i338nPufk/0npz3gAYWluzjNkl4vmmdH/91sm\nDuff03c7I4+h2rs5XJf5I967M9LGVdKkMvFRGODF51V0205SFbrOvWSczIWz\nyIwuh+OCGAaULLHnSehGUn1FTcLQFm1NcfZBHzliVVDSQDupWMODByWaOvTZ\naIWkzgYVFfpBaESXtd7AccelWyBAsk3+vMncR+cKWrDKYuL2uHhakwb+ZjXP\nLk81Wx4kXisirAFC4XeD63K7M31i5DeB/O/PdZGQyan6GyxM53PiaftX+xrU\n7djl\r\n=a6hc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZCvNIGWiwat6UcSY4Moo9oqg11rrwfnQqAXn4KeZmkAIgU01f2ekbxqcgJT7w1y4HHSSElnG/SPi2PynSgTiwtkw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615214503-c6c3790c.0_1615214824520_0.043917034266433896"},"_hasShrinkwrap":false},"2.46.11-next-1615215326-e0d18c13.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615215326-e0d18c13.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615215326-e0d18c13.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615215326-e0d18c13.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZlKYQzRmOeVvyksySJM3RvLwGp82kt78YVSTDq7IEj8/Ne8fav390vkw4oOx+lZ8/jPEgsaCvWE2Amy2h/y7PQ==","shasum":"fb7c0a3b617bd546d78a3a4bc16a632274fa59cf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615215326-e0d18c13.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRjxyCRA9TVsSAnZWagAA984P/1fe+ydxoTB9bBmFmvDj\nt20jZkWPRt9h4lgyYowcXvgKiZ7PRufWcr2iS2d4f2MoNwYdywqXJV7otKTI\ntWAd89QVaT3LQk7i+Nzpt5OIQPFPUxbclqIxcwl9wdALsz42aUZOOmR1Gy6W\nevs5q/4UTKbrGw/ncYVGHzb7AjwHmlns9jBDAwoNXKdnJSXYv2PXcQ+saOaQ\ncT2R5PajQZZ+ohqvfqSKIox4MrFI8LtEBQ5Dw8Q1QbFX/oTKW5PFmwt6Nngb\nyC7GhzpQw/JcieVWLoBns1dyjvJ6XkXOA9OTL65B+vHD6NiynZiznPkedh5E\nQWSlSuKT2MNJYLqWHWu5nz9pVvdvu+m5TO/1H4MvDephUOCjcYBeP+E3Unf4\nyvkGaL2erp9bkcxN8pFflOIQ388pGVnThk47FfoTS0MkohR8o2CWwNt0DwXv\nCiP61Ykzs0ttZDfwGm72FqQ6k4JQXyu131UbDGqTeCSeMUCr/JzMBDDUMPY4\nzKtAUhC42kN/ccGB+Mo/ZAdW5KrjhJwJd09SUaC9oUixq1l21+nSa3r5itYI\nfn6pIKrcnnO12BEK/gT0FEifrGi4xlLhsA5KOSSzHpqBwJi9NLhGpeCK7Hb5\nS6W+JN7fYZSSLj7CeIQde0qjZ6J1kOrzkemcdp12hX6nGgNvrVfuSwYfyOjA\npUXp\r\n=WxIz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJ5QgteCNQ1G8mjeZnMwVzETbdV8Cd6L9Kda5JSRmOdQIgQ6WcqRjQxolmnTJL9dbdO4ZQODfaFSi/UiPPOKFNkQ0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615215326-e0d18c13.0_1615215729978_0.7391621494046638"},"_hasShrinkwrap":false},"2.46.11-next-1615218182-126444c6.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615218182-126444c6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615218182-126444c6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615218182-126444c6.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-34h6WF+KTzf/5adU5ATKxJR0Qw/t8r4zQ+kFTV5hz18BycNYGtLwXODLZAsOW/pL86XTTHB4muFvaUboiaa6sA==","shasum":"a68e86ec63e6d5fd5b400b4cb818be20c9c9ead3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615218182-126444c6.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRkdSCRA9TVsSAnZWagAAXQAP+gIK5mvcv3PtWP3EVmaH\nNDSIO4VFl4nfG2V7V9HsEkvdDv7PkaixAefBECaRJNITabYBngnOZrJ10fOl\ne4k++uTQFexvP5wNZNTrZr09cxJqfi3C3v6zaDnibuc+j9jqR9G3ojoPkoE4\n4hJvyO1hvmbh5xRQCpfcTQJB9RplVwBl+gXs39oBuiOiZxqg22RSlmJmNlXB\nXnkoqZpCLLWyLFDyVGBkixf53DFN9Q7O8yDz1csKJ2T+VW2GhnBuBNZRXHAb\nkhFrzz0VFZNfAKqIj6e8DLir4+uGCd4qwFZcSSekZDpwK1nugxKZP7DiNF1u\nNJK8SlgxSHDtfqjr+bIK/fj3c4bmixinHHAs60lkWSF6+Qnk/vgOfQHdJfRT\nv6n/Do+JnnG5F/xdOUC11Axxki/BSG011euVj5SjvNfePBiNbJ3kGJFSEn+X\nlta2YfIVZzSFp5hZam4gb7lCcar+8Frh7AOzdbSCoqBJ5zczdZFDYomq4H5w\nmVYIak5SygHMuL8jhh6WtWtNZhH8d7GXNQkvWvpksXDI47ofrEF8al6Z3lCr\nmoiWEQni50fGbwQ9BUENdiIfpXplzVInmRcMQjL9Clvxi1WJ6l+SO72FgBtK\nFkq30y0pAuEslIzx6TBA6qBV/m1VY/aVKlCwm9tcXS6LRMHRW3h39BZWLWHC\naHst\r\n=Gocj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyRDmrnNPXTIyog9oq4jP43ytivX7+PPGGyiFvNxFIswIhAId/jMAFqZFM2dJFhFesFYPaQj2R4Vv7YU/2r1QIbR82"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615218182-126444c6.0_1615218513755_0.44306654288304226"},"_hasShrinkwrap":false},"2.46.11-next-1615238363-1ab42f35.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615238363-1ab42f35.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615238363-1ab42f35.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615238363-1ab42f35.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-JjqyjmCqUh/9szYCtSsnVnfyF71GEj2laFh+J+PevE/DZVbe5ub9G9//trgkwuSuAtXltHzYthNCqM9zobEXZQ==","shasum":"02416e68ee2d8df4ceb510dbb83fe936f4dc0973","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615238363-1ab42f35.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRpYtCRA9TVsSAnZWagAAX4UP/jPmcCN/gv7HGp4nwnZ4\nxovqFQ3wIckcLjlN3xAS/JzweL/cRloM4MYZ5CBdjiH4MNagu6kq6s4n2qnG\nGbiU4aP7AhaclAa9jKKUMgPO6uiZfyU9MmFA3G80uR7vEij+ezz6pwoXRh8U\nqnYjxkmaKr7xMozmiBn0LmoyTbkPhWpGFRYmeqdiS2i8OwQdpe0g5W+biW0b\nK0TARi+gs/HJjOUG/mS1Ipq8DScvv2rxVbJrpIhGKla9cGF2zdxZyD1nwDgy\nu+rmYINEU7K/HX//BSt5aX4yKYnGVNbGqn2aF0IBjw7rejmsPE2M4XsVj7S0\nxrvu5IZTpgl/m5ER3iegWbw+ehWzhwVN1eqXYNjcnsn54dzvKL5T2wqptt/0\n0mD56+bbD9SBlNuvQK3R5OJBmHuXhEeHi3K1Fk6MYda+HtKQicobon7rJxXJ\nUj9dFSjXHG6hq6RiCi2P8D3LkeoUCf5BEyoJ0YFq08ShDRIiqZiYTG2M6wlm\nfMbbciu5sJy+2kRpdzCEKGF6eBUal0d7QiNtMCMuyQiPwA4xpKBeTf+ihA4B\nCc1ZczpD3oOhbD/rMBUHvCTSULUSx+fX+yu3UTE5s6/4pLAexBCvS4YodsXT\nWN8aAm5IQVflyBaYk0FAbcXiLSbJGCK0WI76HkcnzE/Kb4YLhgjfLVeea7l5\nhEsR\r\n=RDtB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZirJShrGxamDsBax07FX9/gfvgxAW+otUd/JdKTfDFgIhALI97hru6F0OAQjVwnpFa5BOsR+BBfq3/K7wWLvLpSoO"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615238363-1ab42f35.0_1615238700742_0.8813076498813628"},"_hasShrinkwrap":false},"2.46.11-next-1615283163-2eeebdb1.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615283163-2eeebdb1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615283163-2eeebdb1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615283163-2eeebdb1.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Wev8VO50HrapZxPK5uRW1/k9DJeyjf9drij9dr4YSIMAKe4NPNVtsKCwjc/2teNcwKQ2MlVt5m7dIuegIp0g9w==","shasum":"ad3d285c72e24a6b5f2d43652f5fcd7ba006ef37","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615283163-2eeebdb1.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR0VUCRA9TVsSAnZWagAAJbkP/iMFFlKseFt6I+kCGRpK\nhD97xqo0lwFsgXd9iTXF7kM1DWgkcAMonddwJkpTWxIvJDVyBEGPbgcOUyq0\nwtFHJaeKVYQd6iEMC0yk7lZVXRv7HuUy1dQ1pm9zprZKdODnuecuwNmBDMPY\n3Cjyi241IpNMtl00RgYv6tuR2+AsL2nqZ62+3i3Kfc3gkorwVoGgudPD6pxk\nKwwGCK8TfPQuPNb15WA4cg3dc8qqdTW2javZ92+L1oG+oXnHFlKw8B3hK+PO\nXJcUDpyKvIbuD/jaex9Y26mQxe2+ELVuBBwPjEGbe73UBe7+H8fwKQPZ/0NK\nA00HFHssA4AoILrnvcH1IsKTzR7b3YRPuQbZUGjHbMNKpp8hyMgiq4IKgW+B\n4Q3aPo1qVbC1ywibj5GFux9qvCVozH2R5NjAOwyGKZyz1OnsFVvcSy3E+j2N\nd6+fPTsUTQdj22pzYke1oSsED7dQEXYhphmK6zYpbym+yiI/goy77vF+VGuj\nnCo+HUu1cAYpco8vFEMZ7nG0Eq6R4MTwvL5N7K91EJE/kREzx1JlDC7o/hhW\n/qSwuE5P10Enq7P90qJ5A+/wUSP1GGNyZ94binH3aU7UDAhj6rfZhK7Xm4VG\nlaGCA+dtESLPrr6Z/5znLtzNcMr1P0XylXtBLEa31nUi+KU94Z9ziGhiXsrO\nGctg\r\n=o8yJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeVqA5k5zKKcWtQfHjURsW0S5vHACL75Eyo/8z0ys5awIhAOEGkFKEWFfiVQHn9PYIU28mSRRDHsrm/i6LQ+7/PjXO"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615283163-2eeebdb1.0_1615283540170_0.4722240888201297"},"_hasShrinkwrap":false},"2.46.11-next-1615289713-c3066788.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615289713-c3066788.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615289713-c3066788.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615289713-c3066788.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-phlJbeUYB240M78o7P/EdS8JJoKNI5Xr0lmRBpQh4jiVunLy80J9vwbppJ6aD68NYnr4gOrsfTrKh/Ha+N1QrA==","shasum":"ea559d2cbe5382e2df48b4994c1cd805ed1a60f6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615289713-c3066788.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR17ZCRA9TVsSAnZWagAALOAQAJAfyA+olAkX47+jxhNy\ndvd6oZCO2lYYEWeWRdM4KcMaf1NX5KBDcYQfTG1hWVk8X0MlnZ5TdG9INKOM\nhBkBNjNEY7gS3luwGGpC5cmearyfdSq3f8fOH74pMV530sbk3fE33xyo+dut\nozeCA3snFPN+AZ71R5k1dClndg0xKI+T0/dufvNwO6ri+t1R8pgYZopHSRbd\nj665d27hUg/OiB1pY4cZCbcThUJD52T9ZAp4nU3wkKunrA8OcHQNe742Qs2Y\nh+B+/TPwUWnNdtJ1lXN0JolLVjPuSG55zTIrVuogq/obTmqYGtFD7VTXmJbx\nZRx5RDhKkDWl4NCl+GqkICtYflEbMHQqvNqvnB266+TooLd3ALJ9/yRjVhfB\nl5oJr0512wwTY6NhHui4V46MQMfCbTwuxlaxrlFiYq4/bE5Yewkv2eWlBK5E\nV5JRykMcJGzRN5KjdmdIA16ABk7wejiMlzZ+0jbM0OKCr0HSlX0DH3rZh3mC\nt2VgtYcOAL85QLbn/SwNgw0vZvXqSEv4V1+SGEiCAbcFfXT/HN7vmTv5mBDi\nZh0APqfAMEembWg9AMEc5G0K8BCzWQkjiImT8L9b3LeRHgB1bvrDeexeuqLT\nf10m3UAxrhBbuH1WM/6HpzQmXY6BR3WJ++7kOq6gSsQ5UsTajatGmBaD2yxN\n5hvV\r\n=ErIP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5ELpPc/jnkWWvVlBi24SuFb47znbghLUefwhtmcD3sgIhAP5GrLcjNFevWrPNp0FhPhSWDj/hi3/iHI5tDiFlsuiR"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615289713-c3066788.0_1615290072641_0.13653746269698974"},"_hasShrinkwrap":false},"2.46.11-next-1615289956-204785e8.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615289956-204785e8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615289956-204785e8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615289956-204785e8.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Ih/fwGaF5F3QcpzovjEhKMvNUmpxGa4cYiOc5cbHVbVuzzv8ymqqj2f7/bzUSXyjVp3An/oY8163SdSmcUnI8A==","shasum":"19aa94e362129f5f0a0f9fe0da1fa587c42eef8c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615289956-204785e8.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR1/MCRA9TVsSAnZWagAAOxIP/1KB8zB0mp28l6mpUx+j\nyhrJ3uAD5rHfg7APo93KQax8D15fNHzP/kX0GvY79T3HLFdAuS92vlNDAJGV\nwA/C9ObZ7M7BTumrdI/dAjT7ccCRr+MxUW3dC6+jL2HvCawjDmSQ6iv7MhnI\nVs3PEqkwcGjNF4tEHwn/AvdTBUCdcbVYgeoqZk6WMLHeJNlJWF+QequZqbva\nvCqthyDE8GhXz/9TqeCYTwvHhAwoFLvj8+V9NMaBxDQU77nrm1y8HyJi4P4i\nIDyghRUa76cW6CIq+LzwG50akKrnTluSjPjSiEDKHjvoVdCi9UTy+wKXzftb\noo83iqiir16ME3eXWBwgE/oVRu5Z8gcfoSN9dKbQ7uCAWMl2o04+pMtR/MFm\nvlQtXHto7m1kDwyQIDfQuw/oyaIKtvJ/z1f1nek14wZ4q2OrG9y1B3875qOi\nmwsXkI7718OS3H8CYpmmEJiY1fVbETQwpxkyAi+WqQLvg5vk7NmxB0Dl03Cy\nL6dpQS80f1PLUKUNtTJqC1uVG7KytEV4qfxuljJsNqM+cosDpprcE9rtWrSw\n3oE2qeZREmKMZY5LrYZnhwzBps34T5C5x5vtm18Kul6+fhVwrTKQ0rp6NdWC\nlsZfi7cM6jBefVmHv8XOQypKNWyLpEhDr9FPpMx/MBiRNWYVRpgy0y5b0sBN\nfJCx\r\n=7k8e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCceWeIa8Cihip3u3dkxM0YKpb9WfyB34gwfFnRA4mg5QIhAJHGv5COZNZGS5aFkV/8BHeARa4+90urw9PQaPQTRw3c"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615289956-204785e8.0_1615290316311_0.06977820718899674"},"_hasShrinkwrap":false},"2.46.11-next-1615289989-c7ea9f0c.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615289989-c7ea9f0c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615289989-c7ea9f0c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615289989-c7ea9f0c.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-dwXbqDahYPncdHitZoJylNGWtAfQR9TICNrxhuMICfRIf8KDPpJhj/nnV3oYfpemnmJRjv8bRZz8pvPFe7Hmnw==","shasum":"25420008b3283f5c5c623d87e69e3aa00c3ca58a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615289989-c7ea9f0c.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR2AACRA9TVsSAnZWagAAXcMP/0KHztWYRuQnJISJYRkF\noZCp6B6nl7NJgaSAQpcJTqHdg8pjKPRLORYnWM6iruyNd7yoQaKrF4oIHG48\n6jJFCIAT3y9XTUBjvymDmeeUNuIjs9ARzGmPUjFhGxKazTnwGdMETcG4deGa\n3nw7atSgTpfBq97XsBPK9+aNUZGooYIkW5FH9Ik94rzecnROIZUO2wDDC3pz\nkLMNFk/OSk0Uqe8Zp9bDt9DmLmaQ0ttbcC2BYKvWCFNQ4ttRqPAU/3MzFYl0\niQsTGqPWWKRoEde5N60rLdlsEUaO0oYf7dQ51o2Tyaz+U2u5bMSdCKbSxe0G\npJyH6fNaXuO9UvsAdfoGWQxXwwoTknJf+kZBL2XiL5HITeydEI+5Za8+Ng/h\nVVyBnu4sPb2S64uu6DOq6j4Nkp8craI9SLVj9F4Xytb5b1GKUJgr1eKUkKtL\nSgiJw/P2Vm4BaJ1XYgbp4dCxxDboCir05t3FILWpP2NLZJLy6WDnZAjFlCi6\n2apEkPj84nOWNbdrcbKfXTh9ZpL7+C8zdhe+W3r+N8DmM0I3bqP6RDfjM2rG\noN9F/0Ny0Vsp0CXGH80QP7qqLT4Luc+Gj8ucUFY+FhvwmqNVpifvQczzgEQE\nZYRhGlJedJwf+KqC88FxCsZlzYjij1I3yzLNm83Uocq78VHF+tePn4aFTWbX\nfzsK\r\n=IdEl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPfOKye5nAZN95r0Zczz3dz0SM6gvh8O4UdGl1ijme4wIgU7HbvhVVjhfMTbHNlm+FYbOwm1GHdEHU9oUHzqmqOzg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615289989-c7ea9f0c.0_1615290367368_0.4588941634316426"},"_hasShrinkwrap":false},"2.46.11-next-1615293517-f69327d4.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615293517-f69327d4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615293517-f69327d4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615293517-f69327d4.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-rdMorSiyyyOblbrQGTw+hyApAhPK93C5hpyWepA0XR5KGPaVUbjY+oh12Zeb/oT6BElHwtXQQ/ujoKqApb1t1g==","shasum":"c6014de9c6f1158f54c820514aa7e42367546e5d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615293517-f69327d4.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR22tCRA9TVsSAnZWagAAIRQP/AqB95UH80j6CERrrFeg\nxcYhRsNjVHYPOoUz9vnM4/DhtTu5lVZlQd1oEVwyxlzLlsGPB0QUI46UgHf3\nIGoSBLabgBbYfRZKUriZR+cap9EJheT5IAIKyjYXUnZ6jhz4SuZXyM//NVCX\n8XOh1frMsT0T8cda0rburvFHYQz+RcmtCnbO1Sielbfic7AfQ4YLdZHvc3pW\nGDi1cUjTERxaOywkxB3b90GH0ZRoe4yNG5yBw4IdcgHhkaNLiDKPwqOeqi36\nDvDhpIMHTkn7o933h69tABngK9v/T5kcIgcNaJijN9n9FtG5ODgLyNBWFuR5\nkd84zgzvq+Y94k7oCa+y2uiAzssh17I+TCgKv9/kmsivvuqK7y04lxu+m7Y7\nsUm2hI7G8V2Bj5LdiQkk9hdX642Vp+dvzhOgJrHJ7aEybXFhHh9kb9CduCB0\nvCHckJOFm8DqyZiD+N4wq0f08ALN6QP0Gp3L9kcbB089WvqM217sIukmXcwx\ng9WBuEfkZgNkdG4FBcvqbCTWm+FuCUGIX7g8LFrr8Urk5t669CK1Rrslh8dt\nLOCrd9dYVQPXHRir7Z/R7keyuqmB+wrGCIb3MHJDXTkl76gRZ42Ef9peoPeK\ndgVAVjtXTZTPNmzbZDiRi7V5T4OgCeJ4alSa4hL2BfHNl+w3xncSk3jqtf8N\nLWLq\r\n=bgju\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpIB/W/hxYfk19HSEYRYy66H5kjWPmaEBL+Qv2Y8KhHAiEAnEe2av/xVsxV3vWu/WlRyj28KEhmORBYPV0AJbPndoM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615293517-f69327d4.0_1615293869396_0.8167301573289747"},"_hasShrinkwrap":false},"2.46.11-next-1615297515-104c2b2e.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615297515-104c2b2e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615297515-104c2b2e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615297515-104c2b2e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-MCAv7FjkQ2EdANkn30+NGdkJYnV+B+pSM0BajcjFKPJYcUPpLppTWbaF+H8vegNYDFzdHctTRh4MsqvV50wFcQ==","shasum":"a470ec6d22aed716b8a62d186e4fc1e88395035f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615297515-104c2b2e.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR30DCRA9TVsSAnZWagAAQvsP/A3AqQ4kI3LRan5Eb3Tt\nEC8q3LYqr33pw0RqO3Dfz9+ufr9rfyLjvR1pc4w6WwMqLco5dwUu+K7RV6c3\neJZsVfsfUGdzPf5h9HPW9EJJv32x+/moTm7v8SyXE3GQDv4wKRkHPOw6nJv2\nAxWtp0KkAR/JjiTq6C/mpzQPbv3BCWSYOO7c87zqs1TvBdKlNR+JG9QOdbSb\n0ls5zz1KWVS2a9LquwzLSGx3yTaxBG+sjsJHHFiHxDuM+QHnyyMtd7lzc+MV\nz1FyJihF85icQi0fCskja9SEQmf32Hy1zhZksZwjlFez0Kd6/Xk8QSM+Bfxb\njPE1h2vCbf5Snh2+NV3SawJxO6B6Mo14zeauQWXzkEQ2KKE595EtQGH01e3s\nuJFI+IxO6wRDG7pza7pxE1Jv3960z3pJqH/EkyUXVUIDCvWjKKldmq2Nnjs+\nGOZi+MlUR6EoNVfxaaWkTHRZqFFqStOuZZZ0zOo6LGyPrCZbhT/PqkAY0vmB\nonUM6//FyenNOHmoDyQloYSzNT1CzU685UErk4jPX0atcgz4hZ1Dgaw5hulV\n0aaA0m+RSiDrFjMVTw0VfjodQpfelT575hbY0WuicM3O2IGxsbqzv5AZHfl2\noewCQK96QV7oo9V/7uKgSQqY/swM4DdVXCw+z8sr6HNAxewaltcypEVJZ4QL\nOUcl\r\n=y/wp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxoksCndh19vih7Lb2fQKb3nwZ9bnClqUNiKnOGUFUxAIgfNRECLq190tGD4+vUMLlhj3kvuaD63GCFu3xuUEMziE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615297515-104c2b2e.0_1615297795216_0.3834491106129334"},"_hasShrinkwrap":false},"2.46.11-next-1615300148-4b9152fa.0":{"name":"@xdn/prefetch","version":"2.46.11-next-1615300148-4b9152fa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11-next-1615300148-4b9152fa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.11-next-1615300148-4b9152fa.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-hsjLQmrnAZ0RoO/bewSVLfNX7QlYckaASpnpSnT0nb/dA/WpObz5p9c5MOyWrEtFy0c41G57/Oi/OmDZ8636mQ==","shasum":"8c5d789871842d76ffd7836149a096493231f181","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11-next-1615300148-4b9152fa.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR4eiCRA9TVsSAnZWagAAr7MP/jURoRd55Cf77EyRZeCX\neROXiyVO66kST0sp6XOHSR8Usa4bsXwinVkceT2C4NacXHyYAGTG0WO2Yy7M\ncagCns5BdVukWgmQSjd3DWM+1UjEXC7flM3DQH56fgZDLbJ3Zj1JeuFpDyRV\nS+jo8KGr6gNFrfCMLPCYFZvOs56iVdDmn21hIxhNNgWs8YLkQlAXo9DDupbA\nBpE+YG6S2y1asN7/j7JemcksNHtFz9s6GwAbg22HyCcooUDknPPoBicoQpLu\n/JqTIdW5MW659h6iolcUfjEcHJ2t52ve/Am67qcw5qLrX//MhEUnWVWMRfph\nbUiy1cKWLRfBXs5XWGXexVBqs8UO7EFgptizeadXB3REz5VZvN+bZPiRcPZ1\n6N6Abe+/fO8MOfR/JGvQJLHlZEnz9ilANNdxeJmea3XP9owmYY60lu0Txykp\nvquGmchyZ+tg3fltttbJ+gPRRNFsOyqyW8ZwVaXp0DhL8NcOHSqnoXV86lRh\nFhAKd5pR4tI/XiyaKmTiIElQOuFCV7h5jtasDFrMu49ed+qAThNY9DO5VoeY\n00SoL+fZycvK+P162BNruNQjUDWuzUXIq2C5QFJHE3FqR6cp0QIV3Q4yg6nH\n2Iqdh0U8EEQn2ECLrcR594YCgiYvB7vjOBr4UvYo++dEijUJTbyWr0yjZylH\nXCXS\r\n=206g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2JcEILFX6/WZemV/xE00EB2TQspvkcH8ieOCLSrzyBwIgZ2M9uAQHXjkJXJguSGvTZvokpZc4tMbwPCGFdwP7Ol4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11-next-1615300148-4b9152fa.0_1615300514122_0.08692591441512931"},"_hasShrinkwrap":false},"2.46.12-next-1615300678-59561aa3.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615300678-59561aa3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615300678-59561aa3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615300678-59561aa3.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-RLOcul3IWd6Offmy3svfIJ+Cjz3st3iI72Unulww7n4wp6qA+oz6XhF6UV7BIY75gp1b9Sskc8QWsUhw7DXwkw==","shasum":"964351809b49dd4a4d82e22fa9a6337eacff44ea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615300678-59561aa3.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR4mwCRA9TVsSAnZWagAA0gsQAI9iPQyA2VDOwB5BfHiO\nlqB4rgruMBGFi0u8Cmv+nSb6YYu9u+W4v9epToBFSkvIFKw5RsHNDjn3S5uO\ntWr59c1Km3emCo1M3vd5iCcsyvXF49FuIWiIIiFve5Lpe1jxE8z9zlIxkeAo\n8Bn2hXu0YWvEEr/LEAHKr1QCNZP9NhiArGLjDHI6lyawEyxd0O1a0RemRq+r\nCaB8Gxb/mpdlztNl5pO0PSSb7viA6IBaG+29FBz96TSXTEfnch89p7mF9BTy\nv1AywmhH6hWt9LV9+xJmD1ccY9rHhcSDfZw9oxBHhbi/DzgTFBuitAD5EOpo\nSUtZQnSnZq6bKIROLOGk/DHWpWEciLoNIYnvvLp1c79qC9r45UmC5gwx+M/5\nWwkgkO1TvxqvP7rNYn7Fp2/FPFgsEHHLSsIEL8i9pj6TIpM3jQ4k8kESKbjE\nndHl21yi2K1vSOBo2VvvVOGjHtY7NZfntp13nvwJ5jGrk47I8U1YO5n7CdL1\nMDbXFnjcE3pvS+IJDxU73PIWDRi5fAVFRZBmFAQa20kaGhJWe6GgHUD+9XQ6\neK+GNK/o2v9hbsiDmThhcEHnhm8hkIiNI43Om/FKE6NhaE48MfviCDghcr0n\nOBj0Yra58pioqWg1hrG+wv/8jhIAzv2SpxQ3cLMBeXrkWx0ipJNU3/hmZNpJ\nslmt\r\n=PIJ9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB3c3mRW9W5V5q58oLoNCQKSB1sAuEjYBhAWwO3g8Ix8AiAzvokAofoMCmCMUB2XT4xHOkXGTUlBDv8g85jYiUGfEw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615300678-59561aa3.0_1615301039541_0.8273889355232278"},"_hasShrinkwrap":false},"2.46.11":{"name":"@xdn/prefetch","version":"2.46.11","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.11","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.46.11","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-w22YEaZnKjYzLHsB9scuPVykUl/WsyhX3QXMR3QeEilTLq0i2ImEVWLxGDK90ZhxRIDttZbG3FC/StgGAcbadg==","shasum":"1b41c0e8038a056aeb265c64785c7e2da0621ecf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.11.tgz","fileCount":56,"unpackedSize":138363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR7e2CRA9TVsSAnZWagAAZxYP/Alu/53vDeuoLYoJJrM7\nN9kY4MZhH22+J4gkycNMiSGZCYhBrTqYmeLBSvM/smdfKD1BEgNenQc9Oqm8\ng5Jlg/cVlPE2h3CpCFY5E/W6XJE5MNHFSjMDj8SZwh0lJDfjUlpheQV5JiIZ\naLeyUCW+KGmbhq6muvh3Xbpocm3nfuhjWo+n8+f9IsBZ++XjiZ/GBrzm8AOR\nFO74wMwBmNx24GwmyFg1mT76Me3BgIEveysJEcDbUlqK+OLfQtkjVwO7v8lQ\nfY129Wr8RU2/y9jDCvWoLspM7DlKNdlVzU2FakdJwQFuwtwXo5zBDdZHYx26\ntrArxKqgplanmoA7mhqIW5TCvwWs67XvoPITza4hP0C8obKRBb1eJnZ92BEg\nMuILzwHvE93Oh1M7GZmvdj19znvHbuMF+eiXe9KwCNvmK6Rjvbsiv6wwY1V/\n7qbsALxJIsjwyv38U2BCb/TnGLaonhGfcnkm/J4d7eXRoaax1Rc/YsPB3Wjx\nVXM5uScr1qZrd/Tu4K7SP2vH5R86s/f999FMMsrCQiFQepWcrkuprbRgqNMy\n4OX//HHOeSshXsSXNhbZ6nFqVShNH0DgzPssBxozqidOVexG8L434i+IVWy7\nBjkwyX7XfB0RvgkhyRVSCYXAuQeJnk3mrM1qLZng49x3EqYG55+jpURhpmEx\nPe9w\r\n=NSbp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBSwjwvHDw2iTuGqjNaxBW0Ux/Y2r662jhN3E+hbxvp/AiEAkQ7HZ2epZ5zRPO3NuQd4cS9W8V0FCFtE7Z9/jEmQZxI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.11_1615312821452_0.43884321103782575"},"_hasShrinkwrap":false},"2.46.12-next-1615364884-288b98d5.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615364884-288b98d5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615364884-288b98d5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615364884-288b98d5.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-fc1kSCjnyz80qmvvXwigrouKxyUiWMXFrcKFmU5rLKCXyI+fD7dMb/bY3eZSsCVEkQY8l8FMcveL0avudFZIRw==","shasum":"83ee0f44e87c9da2c5b884109c9c9b007458ec8b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615364884-288b98d5.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSIRxCRA9TVsSAnZWagAASWwP/3NihA8jdYRdJ1qZVbQM\nRE6WS+8O7NgmlGYoVPnoSyh9K+cB/jKmq+9kPP0RUyRdiEJ+dvv5BNwTkQix\n1d8yxBNB5oUai8xvn9M9Ah5PyScQWSEyEUbVhePUFvwHw3oWcYca/7m0B+fb\nTPPU8fNerhJFWRcRrkGONUnyJcmop+eAON0V/LC8a37OnTpq9bl0pQ7B4lnm\nF/0OWtwNCGrgl6IPuQS3mVSXHC1Aa3IuxQaX85o41mOJaZPTzd4MJQATY4qn\nEwsZUew5H7FE+Rf8BaRzeymMpCeJ7vqgP/2I2eRlESFht8tEoiZ3cu89GqrQ\nJaDQRTLwYo7pBRggakU47hA0uENk+7OA3UbIJbWTOTAsx1QuMBHEPSYDErY/\nIqmWEufwU4B6kbYlwBcz+MirFZSB/CvAor6F+B5YHGr1CCS9zjZuo99T1oLZ\nVC7LuK0w6gGTLDKhSp4t7kzWC82yfa/EIQ17FDjSnYuCF4rEUy/Ek9ACbvUe\nRl/enplogIIk07z2ytbp4PHQBfVOY24b5vgZV5JDc0FjFkmd7i5YPXUw2GId\nys2N7sRKH6SOZUYwtuD0l8GCMhNYbD/x/VWhu9kkI98YJOPaA5ZIKf4fK4+t\ntl7U+ylQkrNYvVTsVgdZ3Qm+WUhVl7nRKXk4oBRJThrF7yv+hZ41RHvwdjTW\n20wi\r\n=4XSQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCu5MNKXhLITVwlkaT6E95c/fEP/oZP1g6gZU02op+9OgIhAMReAL8quec2pZ+BBDLwZ7/g5zfrG5FQ7hqLI34JUOre"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615364884-288b98d5.0_1615365232777_0.8459765798081818"},"_hasShrinkwrap":false},"2.46.12-next-1615376785-cd4a02a4.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615376785-cd4a02a4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615376785-cd4a02a4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615376785-cd4a02a4.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-m8q3zXt1DkM+tvJCOFwGTYD6D+HpNbf/z0wcrOMo0svlwKHy+NSgZoX3RXcs/5g3vSPVghSOyPWPHM5PHi8TKA==","shasum":"9beb04650fcb99748e25898c7998ba7d8d771744","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615376785-cd4a02a4.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSLLSCRA9TVsSAnZWagAAABQP/j5qtsnp6GyP+CDxHrXf\nZDmyWdT/4JWo+FIRhpxhhnMyl/n4h7NvjzgkrvRMRxZQi3x95LWgF2FyqadC\nuZ0ICHyjhxYvP6AuSuBOTFAKMBq5CFkHziWFgKW78fkyMO9KuEiRtXmlsXd5\nQJWoPJCb3vEtB2mW/CwNTvDFEKKeHqzESdXBsbuQ444W8+jyqMRUu+Y0wMU7\nezigrFalAnVkZlvcBl33uT0DV9cl3/R0girmw7yhP+BzNrCyIQ3U7QsZzq1G\nzp0rNvWlCBaZWA1p++D3Lo2Cy8g/fY0b6gJVozmf7FDzMrmFDuj89qPfamh4\nVwLiq6UJLzHze+cj25f1Ee+KuzhMRpng/xc5V0ZEyK7KmwhecKMVzC2XQalx\nRJXwtTwriuXbQEgszVCL8DDOpvcNiQpecrvParza3frwGckrREznXd1RBysK\ns5RZZvQA7te9lbX2T8QyXI9bkjLwEf5fpOJBY1SZExJUim8r9UU4nHhXFK7h\nV4iAvjTmxQf2rpFrqn6viNhjE7cqjlVV1RODXbeGELZhHBz3Y8hy4TGU9RUl\nTlSqad4n7S9Z6YND4OnwvC3h9ZDUzrhnTJcbG2I52D9uW+5tB1Je3HOjGZ4L\nqBR3S8Me6e2gjtbJjq9qZ/jPyryAX+rQ3nZ060wC7bZbmi9+3IcCIHRVusFH\n/Ulj\r\n=mvBj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDzKIYDx55B6Tz8c8j81f8rS3fgS6ZuR2EEyHks5SVDpAiBN3IzeiEnXkbwMywik3H92nLRcp59T0WdgHhXCG5EPlg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615376785-cd4a02a4.0_1615377105568_0.6211280209756318"},"_hasShrinkwrap":false},"2.46.12-next-1615464801-44ed9090.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615464801-44ed9090.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615464801-44ed9090.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615464801-44ed9090.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-9cm9Fi1DNG5tdzMqcE24sULPFk7p0cv/jsVrm6MGgri7IssOolFXxG6XPOJL6Qu/zSv1zod3BltFZYvL1MfBEw==","shasum":"28fc9f30547658e0e1153b0db51b2b07265df9b9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615464801-44ed9090.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSgq8CRA9TVsSAnZWagAA4uEP/0BALZZv+wIr6OPXxcsJ\neFXUXpW7Gc9bQoKtgcR4VDf7X+VtYlQe4qkcgX5YELi3Vbpx9z+A6RckHtu3\n2NHXLDiGziF4dTXJklXS2LMhc1NxVEqbjBZRXvi/5UtSKQQ/9owi/VxT9+jD\nzHmoDExM9JTPZ3sxJGE10MCh18TnUkRn00AWh8/x7M7EpIsLgErIgWBswWS5\nWZ1RhfFls2+eZJJZZKA4EISeEyKR0DC24FwZajjJ56ooxzOeCiZSU4wHOGYD\nz7WVV1Faz+DueiSIo8TDYiSfVFnps8qd8bntbtG14UgT9ytP7sC9dHdo9KYk\ncM+lw7WqtsTv7AJRTcifSvBazmxL0Gq9Ji+6UPfsWknD8RC6ONxUtc0Kpsup\nYQbcz9OjSQvEyqJdrQHCVqreYmHTOUMTQUaoUh/Nvn+Pi8Q3C+aPVFk4jWf1\nSNzaopQouApvpKtWw9YbdlKpolExVuaO6oMcyLMrzAZeMEKyWfgpHpvtyZKj\n/PDGtTiYMFpBm1xHqEmLzkQRc4XzrqH8hc1b/tQ+3KDu5tC82zuhhjfvoCF7\ni9uTosewkZvCCc568gNB3RJdanOU1qsN2aA/8GsCrMU2uMJ17rshnEOsS8WL\nG3rkljvLERpjGSiuscon+J370VpfmwmMNA3GEHuc7FtIO+JleqYUeK1TENQE\nRQbd\r\n=iE7b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH5K3w6c60SA8lJvLpMSCneFqezRbKKCYi7puH1WH/q0AiEAzpl1R8bkqFTdZZLiZQFJ0unZhh/WFLnb7IrtAdOWH24="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615464801-44ed9090.0_1615465148115_0.09168210611580796"},"_hasShrinkwrap":false},"2.46.12-next-1615469960-17dcfbc9.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615469960-17dcfbc9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615469960-17dcfbc9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615469960-17dcfbc9.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-tRfoxIKNeOqbgMwXampA/wXMWeAdDYmIFgL99K1B1pQCn5hYRnKI9FZBzSKo6mFtcVx6LO8xB40IeDmmOH+V+w==","shasum":"d62fd10b9fcac7c00ac36bb5d64c5fa0590b4149","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615469960-17dcfbc9.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSh6xCRA9TVsSAnZWagAAv9gP/2xGD2zRVO2UONlU0btE\nmDlmTeKfxjexLRZ8EUKxbowsv3z7RJs++nJDMPJvW7EWOZLnLfgORaP/bwMm\nHFEcxgd9w9wRlofNWwzo/pXcxr02SMNFzhvgA5d2vfwBjYJXwrVZbmAbhONs\n3WlUBxbIbkCeYvysUxWmftKudGxzMUCz3tV61WoCkK7bKeKWy4JQqTEyf4R0\nQgOm6rf9/jkNueHfSjppICY0rhHLsT0WHt7HcruwZDiimVmb37qeirosWnVu\njCHjn4rA4c3CcAx68D9a8iuDCMBzyyfO6vZKFQH5jMYBnCfK1z6wjx87c+Ec\nq2LpfK9fJBjqzG2FgHjvZEc+F6/QTbOLefFJ3SUjQohhiFoX2cNmSD/M1m1k\nWKCkxH2XZY3RMAHfYj4EnTY+9Fy4m9S0huheUbWLmNSTFocThFTBrENNPrDE\nZfhVy7cpH7/WNW69TxoSkIkywjCmp30ZCJOp0t7UeElzuLBA6cVhUVCqgxIT\nNIvZSlxsZWTz0uN6nwVHwWC6ivSBRzYGY8sVM7hRcJ3tCtfhl9IMnLiB/Do+\nJs2TxZBxaXd6pplordGb8FEQM09vRGuYTZJaNrBnRvH97plC8pO8oiGa0coa\nnGCRU8AofAtRQ/wOSueXKwI7jQVph+h8mtbWOeWUseHWhTG+/5TmcdON9RGM\nyzWX\r\n=BDqB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLUCdOhyoSClkvfJ/yamEefAT48uS2j38C4BzEwKM/pAIhAPSadjC3Sst/3c4zw9v1r9A5kuey2KdIy8pgZ6e/9Pjf"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615469960-17dcfbc9.0_1615470256969_0.08020529370993357"},"_hasShrinkwrap":false},"2.46.12-next-1615470034-557f5436.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615470034-557f5436.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615470034-557f5436.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615470034-557f5436.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-QVsvlHUxGFeEHzweM55uM5W83A/KKgAGCvpQuAiAl6JFz1CBaeS7NkXEqrRLPWgurOJtggf6Iywzv0xvKQv5Nw==","shasum":"cc0e9ca66b487838e672958564be9b92f8b62559","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615470034-557f5436.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSh8tCRA9TVsSAnZWagAANj0P/jQG1qU0CxgND7cqrJCd\nX8WSJ7V9xeaW4tI60KWSfNSGbr3ADW8vdF5FwT5pFPwZutn0gawxSCm0TNr4\nkKa9/yf8AkubNXFfxUN+omC0JSsFG1Az4w7tK4S3IbVUZt4sViopGdY4l4rj\n/1enbf+SknHGNT3uAXCOircAYirqtE3vnQVaZB00CbmuxhiyhGjQ/yQ/Zj/M\nb6aUcLTunJQd5lFsNr82XJ8B7vfGz2a/OqRmbAO3Ohih+saWOazbH5uAy8GF\n+nRVG8C+ZURVIpVyr+wWpQTUXPkDzzgNqz30mYFoSMyPKJS63l/rxskbekoR\n1t5CziMzpon35FcRRPKQHJogDkIWGmta+zUghUY8UsoHKEsTHyr1rbr/02sY\nm0grZkpPj+YCqoxtHaLRaMIXiSmoel3t6i6NAQ8rPYGFvCf7yXtSSYAuKaGN\nfQY5S6aMGQrqDmTU9j3vsCMkW9tO1pzbiWh6NUQUGGFBcU90FalNl25yJpGn\njv+eVUaNsSli0OUEMLwOqanUsS2y1I+orZoaI1IlYQmCjnMVBb13TIToqcLE\nS0iJBvWKgJxXktTvWW4pqt9VeAFgfuXdSa0K5VwH65egxTZD7YaWfhfie8B7\nDZkH7L4R7lZKhKA4ZbQJZgUonlZLpTF2B12QKLFq67OlB+NKRtFIZrQLVEIZ\nGnl4\r\n=rn8a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6gQRsUxxfOE/+/ccW/upmzcyp2CjsWHsyBUtZbXCG8QIhAI8+BDYMpb5jkTx01gkwERY1JEmJW+ukqBXFGLrBrXiw"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615470034-557f5436.0_1615470381318_0.46982461182867663"},"_hasShrinkwrap":false},"2.46.12-next-1615471647-557f5436.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615471647-557f5436.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615471647-557f5436.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615471647-557f5436.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Ot2h89VrtiucmK+kUwB3V5JLT+x5KuT8C47enadiH2Qceuv5HhP9czuWuLREQoBsxaF3uJvHoXG7Q7MDTrmvmA==","shasum":"8496e84d744a13bd504c81ff450121211f0f44c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615471647-557f5436.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSiWICRA9TVsSAnZWagAALb4P/ipmOQBhhVlQVP0oniPZ\nIy0QfBNzO+d4hozkJDoLFugoHCtOq3bXAVdxyx5mLcw20/M2r55xZl4thwT6\nrBpUL5usJFe/Nw788JUB3Xe/PBcL5hCNkSCu6CowWnhqvk0ZkxUFqs6ee+LA\nOkLFQbRmRQ2WG5h/FBKCVM8+lGT9x73h8WkdWIvq00IVp9dksB3Go8rg4jgM\nRCpM8ZdRaS+L5xJNtKP4wFygce8KZ48sEpXhZG7itwCaxsD0PJqMIgCn9sAy\nLorZhTRPNi4LRz/A3qLAx3bTQ9T5NywG+M8uZ7+btDgbA5bKpksaV96VKBq9\nfYuHvHhDP77840LX9V+GpGFEWIOB3YAnLG3i8R1k4B9rPDiJn3dujvvBfF5z\nlxg4HHM6aySue0Yky0e43b54DFjSj0YR6eBJYEf2lXXtjZeUWqT8j2FbQw+q\n6un2MFh7XZgr2f1YMFpY1iasRFuJOGmHzT1CrTeVUbY9aAO524e+sM3O7rDe\nW2BeeNdtz0pzbeOy6uRPXLLMS1xeGB1bopenAXOZUiyr5CL20e0LOXe6HyaX\n66yWl5TwFV1+ZPsIPs2gYd+G+C4faO1JSDof/oW/MIKX322SOvDY9HY+GLR/\nieE0FX5/NHOyn8s/pajqeUWLWs4R5Q0Jfq6c1LPsKWwfg5rUw/gfCuqAmzmB\nAZo+\r\n=57Yu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE1HZk1WWYuIhnm6oVkdLJN+Lhm2MNW/LaXjnZ6Obs9hAiAmWOQSaG8lAUBsHJX64lECw3k0uYS0YddWy+S70ycWPQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615471647-557f5436.0_1615472008292_0.20579409608996935"},"_hasShrinkwrap":false},"2.46.12-next-1615551720-557f5436.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615551720-557f5436.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615551720-557f5436.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615551720-557f5436.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-iRukpjMlddE1ogrO8zLlv7qB4WTzpTXf0HbrEEDZ4BZUfnen9hvzl0D5AsnMcSxgyVM+dPwupxonjwYSuFWAkw==","shasum":"55b146d579ce9b73ad41f656a174addba3ad69fd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615551720-557f5436.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS15UCRA9TVsSAnZWagAAZdQP/05igBj/EVBDx/KSw7Dv\n/c+fxMUGkUXgHcXOaqvX1hL8ZjsSvHCmh7RzCRdDuD0bmYMRKFh9Ey6zFEnM\nDxrCvE3rtGRcW667NmFbZSuYaGrcfZKnYk7zMIKNUrlrzc77pz9WL/HS1R57\nZqUAyim4bGV0H6BUG4wywdGxXvd4Ab5Asv1+wyBxp9wL2f30LENHZ6MJLN7Z\nv/rJsUHsO5ucd6wIQHl9wGFa4VXYcYSxv//iOipkTPDMxpJKhmW5G1tHkNNq\nmrFIuOTHyWX31z1D9PhTnYA+EeOKUEy/0BkB+tDhFgCDp6eBmvghYIXyjg/i\nCaUf3lU7DENP7784mL6IakwzXDA8qjStRtEiaw+YQNl1RHB7hc1PVFzxK9oh\n6rPfXgwxJU0Dmldh7UKQBbWYZWC7CZBBduPkH8LTdh0gmj6PI7AW0zniTe4e\nApQMqgCosX5XgbyEKL1VicjC61c1jswtFTBkdulHD0gXUvaBcMamcfRNK6gH\n4Txe4S1ObQm/G66b4Lnv2Mevywv1IOajJNFwETNgV4qNWXUQwb6asnbDcU55\nixTkh8OGtjfQQOZ/F3LmUxEVp7Nqg+Rw6M+60BHoA0GO67xgHr1VHmDJbJBm\nBk/Eh3BTZzB0XFV30Ku8B44Z1ARrT7ih5AIZ+bSadpy0xE3Nnz/W9TWSX1P6\nWsgp\r\n=XeQK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHfFDA6rOq51qm5xCF5MOU8NPCcPcptiXOOyp1M1bhvgIhAIRLe7h8dkcppnCJUkVl0JBQf6GTiez1gx+Rz+GKEKv8"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615551720-557f5436.0_1615552083486_0.9403666457364732"},"_hasShrinkwrap":false},"2.46.12-next-1615784806-7b51d87e.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615784806-7b51d87e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615784806-7b51d87e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615784806-7b51d87e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Mj4I4W9bezmzohrAhW0jrRvAX0Vk8yZlDp7NIWP2qxbNw7KgYPahO4K55/IVCInoHqBl8Ig1OpLVNF4rkfNeTg==","shasum":"19f6391d55b4e9ebd036941331343822efd2ba1f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615784806-7b51d87e.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTuxrCRA9TVsSAnZWagAAf44P/iVf8r+as59NvgFUb5/j\n7DfFLLb1sNVMEdQVoN+G+cP/sokKiM/5VCX62XeZ+mW+GSDYjr6cFPlHJCV8\n7HWIvbBrcb4tbQQB2zMWQc09ziXgEAyj/1TeXs9nlRhzhOnPh8e8dj5ysRBa\ncHfgbbPxf872M2qniFEgqxVF4NsSh8O+BR1Xd8Ig7SJjcPzmVAm08LvZ47lL\ny5a+lTYQ7bolB9Eix7V5ftbPzYYg9YFugL8O6EuZwbmEEmhhsVpTjFQY4LsG\nuJmVtkWPb7lhvZe1dsHqgfL1KjV4+lHBD/StpQ15yjNQA7GvvfTZHTBdnQA+\nrcZh4JswE/MJ7rRhY2S5Ot5Sg53NECi40zfOM5GfVjvUxp3lDeS/0x5L6+gA\nexh5NTCKwwRiW+suy1QZ12ZjlDOvhnYAsbvAKW5udQE3RBgsGJ31QICYULls\n5sT85TTs3Z/J5/V5/tVF4YCzQZXeS19cFJkijxftZu98xxxCeztcqUwoiMxH\n8mY5K+/kvtTYC+hN0IgmleRjhqGO9ppIBTHSeJmdUBPZ26UHc8img+4grP4R\nQIr9zx0DoEaCHFgVacni9IbwO4/e3x5hVIa67eMXY9HXzo0ajHTmZ14Yk8Rq\nupJ5480kJNaBfUjD9751rEP+V0l/dxS9y0ojQTrXtOQidaxawuN4tr+HzIzC\n6Byi\r\n=Awj5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDGh0vNYknJbueCJ2YyKh6v1NRDx/rcGaKKFcO4ltWbyAiEA/zrGjrodhv8FfMqx6nmj2kug87H7eP1grijjNNbggps="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615784806-7b51d87e.0_1615785067402_0.6759952149969122"},"_hasShrinkwrap":false},"2.46.12-next-1615790460-121a84f3.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615790460-121a84f3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615790460-121a84f3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615790460-121a84f3.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-AhXdrQN0Ui2EPBxccfyoI+2maIC1TxYSp8faRE8OY2awgamsgvzDa5kGpxnXWEJlrHfvUjRlM1qTGT0cIUFzpw==","shasum":"fe36d42319ed98b968eea322099e046ac7a9f6b1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615790460-121a84f3.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTwKVCRA9TVsSAnZWagAA85oP/3lPW95RrE4mzU4d0rLm\nRpiYoItl4hBeY0cLTAT+zyYnqK83BOLQgrhuVJMch38tWBD/B/qNqXnhUnH1\nT/foBu7B1jtOOZJPaPLEvKnXHbfNHE8lRYMBdkZZbQGxjO8qOEBeLLt9ccmX\nnZusd2V5OxwvAeFluZBTe1XwpUkC2WumTwxp1/9w8vDBk3NP7PJ9I71Gzsby\nAFYDCeV0ZV9Z1Kc+yzrZIxGZtCsR5ZUMkaCFIqqdW++xK986RhHnK26ASiLe\nx77hgn0CxRXhGqdJsA4kP2006FQ09It6fvxzV5FW9QPyKR19mBvE9A0IT5GL\nx+ecP0Rc9mHCbTyKTg5rxrlCpXzaaK+IJe9pXki+ToxJ8azv+utiCDFLzNCM\nMTAx9yjFskPtgHOa0l1EbG9t2pW6FA3BZNN61X5zzgrRySemagKFzHeu7fbW\nEYLG/dMGUrpGWjQ63KblOa/1dV75LVKtxfMx9VYe4Tak+wi4vwxpY8Nepg0n\nJxw94aj/TS4W2eR2vw436ohnznMZZIwBHDrRb/ahqipYvg//HBHQwn1s8WPE\n6XKCf5UQ/gqrHY2swyqnDvMrWechTNvZoW//ftqYLcpyh+ANQVx98E3bK3/2\nkHwHOG50d6BmjtyWtdmgWRdmLGhkmBsZmRYhGYvIil/BxjmoS+jPziGaxlsU\n4P3+\r\n=LeI9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1TLBcg9NimTgi7uG6l3tvaoS9KRb2zv99AYRcsluyPAiEAoxb3HZxIa+lLYMpdo7Xz2/GTQRAaKCK3ufXt0powh7E="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615790460-121a84f3.0_1615790741420_0.8736558414056295"},"_hasShrinkwrap":false},"2.46.12-next-1615894322-3b82dea0.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615894322-3b82dea0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615894322-3b82dea0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615894322-3b82dea0.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yP7WCoPlx/70w8ml7AnEEmFGDxoHKgoSftw2kIbV24H7yAW9LrAUCn3ygBNOJhzwORPkanktl788J2bSECQhqQ==","shasum":"150c090ce2a3727ae41395db05beb56648f48d80","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615894322-3b82dea0.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUJhWCRA9TVsSAnZWagAA28wQAKK+G2oqdH8z3ZrHQQqS\nfpEi0ay2lMRpEPODuiBQ0mAZvxBV69K1uNP3jFc0Jt3nseh4mRIKHFZuLiUc\n34t2bwbt0tNdIi/RIsZB3EyLpSGIMGuhpvkDgvTAaOaiPHBcBaLgfDZs9ESG\nyYQjrXbXv91I+vfbu1HM9UB4Wbpp7MvHHfaGn39DQ4YZ7aQoAAcBBz5SGZYC\ntavD0gvz/soS6y1lwu3HWEfS+elDlj8CiG8yjSZtIMC9ufVrFTIMLetE1bwO\nHJQI83bt9VwZiXTx7MXiFeJNWr1qFXJIQhD5OouZmhVBbkoEbQgfd6pcXuI1\nu77j+dQctutC6h/ilZxv8z2ppkQXOEJFn586MlIiBPHyG1orBHCdJ2ILmATs\nkF+tqSqhB0mG96E3YTeb5zvW6kGsz/kIqz/XfWFCpXBM08x/zWZEhj2fPepO\nUuDquM7UZw0hbUeBSK5O2SGT8TxWqditedo8Qqh1F3vd8/x+/1/NnNuxpn2t\nQSHfyG5cux+OVg0TjCx4aOtz81kLfkOykyUIt+Yz/VXBb7gmqCfe6HGQC/d/\nS4B4hf0FZ3Y87dp6uZLwvWC9to4bmM8rFYeU1wXDFnKKBn/Avy8X63Sw6Q6Z\nz9k+l44RhkdLPP6+vmUu0mdOmVY6NpfQzju8Wb7kKVjpzWExzzSxqHEHNjQz\n1JN2\r\n=z7EK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsgXDv2FZlW66YEmJfW7lWLlbgxC44UhDeI7KmVsvw7gIgWKh7cuCcbhwBlxCqVCbGHeE8ZBQHavKMLkZTLoS2sl8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615894322-3b82dea0.0_1615894613513_0.348742371772782"},"_hasShrinkwrap":false},"2.46.12-next-1615894458-9120dc72.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615894458-9120dc72.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615894458-9120dc72.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615894458-9120dc72.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-P1RAgJcOqlpqzEeCJJzt6qKu5eFjjPa8SVlsTY0j/KuBlszeLtP5X7xDzHzozgt7llXZsBXbd01Wwr+zvy0eUA==","shasum":"0ae69fb1197ee74edfa219f55ecbb212911319e4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615894458-9120dc72.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUJk1CRA9TVsSAnZWagAAMq0P/1oWvSy26LO/W4idolZN\nkYoXzUv8bOmS8norcExvIaLUeLnZLo5EwKRAqZq37wfPbauRjPunJet9AV38\nIt5txgPaERX+k3Iv9X4dFqflXHJEPfawMXId/QVKNrhgwHc34Nfd4rNFGc7r\nqUtnN9EbSqGmoMjqujnD6k6CV9MNFZMXUgvJQJV2fsUCP7KKOdnX4MXvfmPY\nOE+Pf0c4K0K4clep2hZTCv5Oxq2WlHVfFNei4ho3ux0nkJRAsARd0bi5S5fC\nY/BwyEZx7nVi3eVSX1VzpHXCodb1ioRdheupS4A/8UcYRNt/ZBejhTiukjlG\n+tWEBJeQg52Zd+SOZ+3S7R8sODgyucyKBDsvkPh70BI1Zwx/lACNrD4w9Mv2\ncycBOLOAF9U4e04xudnI/z/DLkUVOtpZbZoQKDUtS/AoM6m5fihXWK2f1/gi\nO4Y8nsPOAmky1dFI6Nsn9VmgpDpY/NxUdiAMSan4NkYOExj0qjyL4sAL0w2P\nCYi+IJVzfbwukOB4l5JytX6VJCmFeWMF292J8rTgCUKRYwk0JJj5dksl48te\nqoo5Jc5IHye6v71BBZEFMIyXyUPk712YHIgXucfQVpRgSNHmjsepSI+vagRY\nYkXysg7BdDTXjVQoq+wFpR+hnc+MbItUGzPPBQeS43MsZQfJB7h3oX9bjWU1\npNvw\r\n=vAxT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsDmp7WgkC+DPe8tlJNI9Lr1sbCQ/d8srQ1OhV0d2AOwIgXz3VF4OMqlG+q5Yt2u5i30vemx67CZcywCu/4H94aVo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615894458-9120dc72.0_1615894837040_0.8633857435255281"},"_hasShrinkwrap":false},"2.46.12-next-1615894578-203ef237.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615894578-203ef237.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615894578-203ef237.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615894578-203ef237.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-LMRdKlPJ82cmgBpDkUSofZe/srTVCNrbzz+X9PY0lrvGVO+Z3Tb8TOx9AeKiojErH0YuoSQ6Gx7qRyg7ijVI/Q==","shasum":"368643e05ed857c24c6244050467e281b898f383","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615894578-203ef237.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUJmZCRA9TVsSAnZWagAAM9sP/30LVOaS32wnrl/NR8Zh\n3ekJV/wHLVITQYtXxkc1aeNgZa4SUTbHSMCEla3apcJT4zDsdhquIHP0R8bZ\n1GKwPA8eOuGyltinlaIUyw1vrCiQIOu5LUjOdtbBMiA0MiYnmlwMvhV+fPCH\nMsqqbcFS6/8EElnaPGdTeQzTchtS1kfCa0sGat4bJtt8R/oet+bHm/mwsVgQ\nKSmZ1+OpBw/SsiGkz/YdiVn5fDC+lth69ynMciWPqJJn/NtalMP9IEZIgV+7\nUWRxPwefGJVTglnWx6t0qMhN8wfzqu2IAnwgXJWnI+XbqiQP4NC4qFayUkjv\n8yJ1RCyW+Enh6CU4o8/cnxXPF83JbYPpPn0rCnjfN8UtypLGVDvKtS5t/hAV\nKzWbOX+NsEF/8bTm4fTCDHKwVpqSppcRGXxA/Laj5Iei4WSuxN6iHtHkNtts\ngDgRDpBOGKM+ZBYl7PjEpi8AZuRbAnSC71qfTpSipGecyvIjFYp2MBRBz0qB\n1p/eRAqMzc/NovaK9nPOwL2HGv/HRY6/iXXIEm1obn8mnC/XNoST6NH2saRA\noj3Who5kF7C0ivGyHehEoXs44UnrJMe3XdGkPlF8W52T+T8gkFAASBer7nkR\n/XXYZR1lIfM6mthQVeHgeEktHgmid3Z0anl9ZHgRPtJq8c2HTBDebc9UNJqe\nk/28\r\n=82Zz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFFfdV1mHeZuYEE4PeGMDpfY8CmSp0/z+er0/7pTPfZqAiBoKA5okfuMzmFNCAgQNmBYGDnXJht/Rv8IBXPMg3gVmw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615894578-203ef237.0_1615894937094_0.6127198444853752"},"_hasShrinkwrap":false},"2.46.12-next-1615894721-a4289e0e.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615894721-a4289e0e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615894721-a4289e0e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615894721-a4289e0e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-z/0VLVCrbHMEFRG6JKvvDa5kCoD9sU+otjoiRJ9wwG2GFSNqLbgAbNA+qKboEm9SZOB5CwHW8CQugq6nINZEYw==","shasum":"90d9749683c80979f2f542380556a426908c599f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615894721-a4289e0e.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUJo8CRA9TVsSAnZWagAA6asP/iQ8sTRddJXugcQgDxym\ncLrgR+Yw4Ww+lZ5f5iZK7obP8G/JypFxlcIJ2w9AExsIwh1GvhuovIBIHYbi\nzk0VLgxtCwAGcvI0NHpz2786Yh4yHnbchyW5j1KBSxeZErXq7Ed2nnW5lSKd\n+XofU0lscLhP5cKfV9w4ZuibyYvu6LGpB6zWh13+8itmEU7TN0ooWHSW6Cxt\n06xLPzGcvoScgx8y8SufpMAz2xw2l5hiytCF00V2fC8gCA/qUxLc+3g9Qujg\nAcRnT1D6JpNqo91CiznPwPwf1/m0StXIi8nr5JxwTJbYOxR6FcmsuODSXsj/\nruCUCGAxpsCEUlwcpKFhRL1VxQOpZGOBjmq7ej7f1C0wMw+wimpqBezkUL/v\nRs1hhTRaPfsOpDkKElOmTwH4CBag62Uopzt+TqJy3EDVuMLtR7LdPGHR9rY3\nvFwXZ4mSWwwk6mbBY1Ozr50PN5ntyLKYsO1uXv3V1feSQ6rlBSIVAr4DKVnF\n5giMZRT9v+/1sdowQY/yj4/fKU74CWOtidOqv1gHVTFsNckl/vZItlk4zhYN\nDArozxD8JzFwYg7NWJj4tcAzOAAyDr7UaVmo/MIxs4pKKMh3dfKwPGS3Dp9r\n0bdIZlt1/dc4P3Ov9OrUuYXzCQSNwUSxp31B0gQakk+oHm4dh9HCN+2J75vA\nL2Tz\r\n=mIQ1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBnl6ehC1tNIYg+0m7doGa6jsZkPJrNdnyf0jB8Aj+V/AiAFuOD5L3yCiaCmbg15btXAL9xF8jaaU2BoYeBN3+n/AQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615894721-a4289e0e.0_1615895099921_0.4781559764865526"},"_hasShrinkwrap":false},"2.46.12-next-1615940773-a83de87c.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615940773-a83de87c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615940773-a83de87c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615940773-a83de87c.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Hr0YhssTUXZP3XcE7gqaKJP9V12GtTcyid+/DCb2x/2DY23k7di2POxJijYJ0gScuw5Lq+L+Sozle+gGjzcabQ==","shasum":"eeed88536171079eca32874d0c8d770d20d56933","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615940773-a83de87c.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUU3cCRA9TVsSAnZWagAA+jMP/1RQcKeU1uYLD2QEF4fS\nc11KW8UBlojHLqkahioO6uIK/0jcl/2BklVK8nGr0ikKD3HswR5FLOLF4Wzm\n/5Sz7Y4MExltCRjtYp/wY/mdMVTv6OcxFCHLCEM9aGC2i44JEkfgRNCktwWR\nOqI+T6hGSBeq5vbzJRwAhHc0m+Yz+Uw8TuoadAedE9sPL1Uu+k/XnLYLiVSY\nNaTM88Sw1om8Z+LU5Aje2c78H4mEVqHbjLqAuQ+K1fL4918iKaZxRjwRuZfc\n7t8y7XNyMcME89bnXX2nciO+W7W4464XGsWHwKEpC804UaU/OFusnKpgn26Z\nkT7SpX1EEtXSuVuXTqvouCJmnWR4c5jSIjB/ywB8ekTBxmjqEuTtI4Yh9A7+\n1BXOcZRI0U1JLjyxma3YusIqgJa0B62Ym34U5V+spI+MwpzlcFseH+7I/u1+\nfVtaciWPCE3kUjSn0Pv4TQZdroOTzMqBa+aOWJCiDkFyXNUwcTj8wnRjUpgH\n2ZtwjN/gMTFyCbkruFdlAJ6asNHOLTuEF9jQ3eOcmeMu91a79jFxp6+ChiVk\ngcp3BlwOYKHLjK4fBDU3tEwEzdEXgBNdRvrdJOeVUmkIBROhfIMHPQgd8jOH\nadYFZ6qeHgKNXMmbeMn+u2I2G86FrQBchb6KYsAuKFe6xDapoA4lcmD9wUR4\nDqaq\r\n=4+xJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEO5N5VzqgQ5efaSce1Gky/zoH2JCUmi4or6hlGBhae4AiEA0Mg5iXq2tc0k0PTN98u43bgF64foXResuTNiTaizsvI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615940773-a83de87c.0_1615941084028_0.09240843468327031"},"_hasShrinkwrap":false},"2.46.12-next-1615940772-a448394d.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615940772-a448394d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615940772-a448394d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615940772-a448394d.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-s54VHyt+6Y6YvMJ00ELLHk/MUirkjqQnilTnOPGYvLPP7J/sTJt5D4Hvall6yD57Izi9mMwHTokuwY2vYqXzWw==","shasum":"d9e9ff814707b49bc2e462248f7ea4c0d94c10b8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615940772-a448394d.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUU3zCRA9TVsSAnZWagAASvYP/jRzzhqN66VOktULIkUx\nfNi84CA1WX1GJyum/xo1u0R3NxmBBC9PsMrLM4MRuuE0MwsJHgLKz8jOHI7c\n9de0j16uQxdFK2WhNiGVaqw3VYaC7CG6aE9SBUSuZjNiSV0VpepgC3RveLTA\nWzHE8K1Zc4eGgIhJE66DuD3lQl4nP5UHUT5gu9hVSoQpQY8Yuilga1sCW83M\nL6976FocwVyK3beZaj+sEeLlyRkiVzhrKbPbsNqFpXWZzd9bzd1wxFY4GItl\ncbCOweiN1vqQtXrVuSr98tZDB0LiXwPnXEHdG3VD0+eP/6PTZPwYwxaWTZ6e\nrzNbcSRyS9luYbTYl5S9RTKCPZ0K71WR8TmhpX0NqJpOSL3YowI4SWQVVLLY\nZznDvEeLIOZf5se+5LbzbRi3h61YpZXVBeGjmoEBYXCm7a38DWNHe2JgV12g\nzB2PugndLfodaMBqFLDNuTKWIg8B/WypluYUQ8NJ4T6uvQjsnc/zGZR4m3Oa\nzVVUonxG1Ep7VkD2/v37UsuKeHQexWLuD8DPU81gEJMJEaYT2myaZZPGpSyj\n4dXzo+uPHFHlw1j+cC15yItw9TkUC8ysUmDMIZj/gLF1/kNwii6tUhA2RtT1\nMxaXlHeSo3SURKqAYtx4pSpFGBxE0hrFLsscSDmnaRsuzT1cdWyLwVaJLfU2\nJdvu\r\n=jPTY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSvhB+sQxj/M/1EeBhRCYKECReOyibLsfYy0ndvzwWmAIhALrmo6SKUvQ9OJhX4SOJkfQPNq+v05oNHs4hPpM+FzsN"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615940772-a448394d.0_1615941107338_0.3958137203434875"},"_hasShrinkwrap":false},"2.46.12-next-1615947584-3e4346c6.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615947584-3e4346c6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615947584-3e4346c6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615947584-3e4346c6.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-NmpqnKNQB+I7j4VbWVCOm/dXrb/niGzRvNpf1QPU2/6Lblu7JAIR1Fv0NkmNRxhjZjm0Opy1yHszliAofuU3NA==","shasum":"7f66949daf2441bf7bc32be3d791b7e153034697","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615947584-3e4346c6.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUWh+CRA9TVsSAnZWagAAQnEQAJvunV1LqZtxgtFexp6V\nQUfZ40YYIAErtk6H9lI8hPsLHnsFV1ieyo4kJdzdt6o4EQfleJDDJrbDN2qg\nQj2WK5QmsIUU43e+2x3s4iWUAVJwwRKUHeFh36BuM35SA9tunPxgFhPZm0vZ\nuO5Z4xLfTvnHD20IvHm5vVsFgpPvzLlUnpu2rcEv7PHwXRqceIyeUgTmQXm8\n4dCXRG7Spm+9CjUN+lPBT5uRp5SHA1aT42MSrjyjrRLHC3z2jop7zqcsbIrx\nv1DQs+ZVyj811InKA9gcMKqxNqWufTKslhF7LfcYGcT98GG1sXzkTV7aJmKR\nzVlmMII7Hfspkt8y/oL/ZOgJpNiUr64jIFDBs754Yv4xGuF0FJGvKzO/QXN6\nWILMo04qZOjMl4XlzGbKgbFa6wz3sZbNlhELW5g2636p0OhRE8jcOoUQzfkL\n5qI5LJvoG0bKcm+vy5/nkihLl+1uPmUGKRHB2Tb0dGzZG+BLLp7jVZ/6hDRN\n8/eOuqXOuWOWwAaSQ+1SC1T0fbWHrsfSA/f4e0BzmCJRLC+Ul0K0Rvym/cTN\nkeUNhXCWOHvW9iwvHAK29nat97AcKu8F1+eKz0x0uv+OgrFkpYqGZuseRX7a\nL3FzDpLJId7yD8yyXSfYcsTLg86NABxPexQvlU/tZRcPEHLoVGSSLoZji4Lj\nSs2T\r\n=qowV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZSFwbZj8LcbZA+eM0a6ymYlMUmhnT3nlhrh7fpuystgIhAPYeUuNea9YuZsARdVzE/UQVgz8ETgHq4RuSUzSAqaAz"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615947584-3e4346c6.0_1615947902039_0.39393562916668956"},"_hasShrinkwrap":false},"2.46.12-next-1615948732-62026afd.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615948732-62026afd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615948732-62026afd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615948732-62026afd.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-t7Ns7NMse3M5WxUMzvtfSaCMzSff+6A3Xe92aRqctr7LAqLOrGqr8e57loGagId/HoRzsdqcMx5sdXYulDHzQQ==","shasum":"d71d4cec68fc5d2a9a0902544376cf04aeebb27d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615948732-62026afd.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUW0ECRA9TVsSAnZWagAAZbUQAJyZf2ycOwDtinQ7Rm4d\n3x8ReFX8OFW8ggJtmgY9TUTQzZuhLn0m+jp17F07a6oriuqYo1+XcF5JGg2/\nozFqdH7ZeRodm7AafHKTue/2uOhvN/ILLMIvjIAOZkbhqQgwzxK+WqKx+phm\nSpp9o1ZyzMDKurk4FsvswyHN9z/5AEaWfSQRAulvB6PEwQqArGxBPQK578HT\nEPImv+Y86kXhhzrtWJ+d2LiNAdzd67s0jpJtcc+Tt3xDzW8mF8HFYEQ/xf1u\nOTVCoIXvj0h0ArzLqNMD15eH3gtjFDRN1oWmYMded/ULxTlvGFdQHUTKpYG9\nyHO0WSHh0kDmg0nsmsOkD0MFPBFePbe5ORIl5pC0FdY9Xd2Y7ic2p1kN5oH1\nb1GZ/ciKt7xqU+kkNt61y9IV6WrW1KM5GUlJisDQ+muWvGpVYZpb+e7gZ9Th\nM671eSu4O3j5AaLOxgLuZdMrXofN4Pt+vw2a6dz0yEe7kqM646jJfYCY1mX4\nZ1UrwNHfOl7+prEHUP62ZK4+HlTDlhq0YRzQ/DBR4Xk9o6H1cnH3cUdEZEjZ\nlSVAleXUr6PPnOanV6I8qq3X8FkPdtYBFnAOVd3b+URE3hXmUBnmKU+VCklN\nDUl9Yi/2YmvN+JWq2mtHjMa1DSawGSL7Hp5I+J9Hh/eGMjliM4s/jLY1fkdO\nfltG\r\n=VLox\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcXO3E9NbiJHHvH5n4wcH+NYDzo+4O6LYbrBT+SrGBvAIgYS2C3asnBjGlD52sxYNDt0SYhxkJMivj3GYfSGPckAg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615948732-62026afd.0_1615949060329_0.38431767594367816"},"_hasShrinkwrap":false},"2.46.12-next-1615951852-dbce5a80.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615951852-dbce5a80.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615951852-dbce5a80.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615951852-dbce5a80.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/2HzNM90FQzbCjCzwnX+VVY+jOyJo7RulZeAiIq5D6Dc+F5UaSTmtHdQpfbiPQuw5OU1uJ8ZM8ZNgqUY66VBkg==","shasum":"90c5ac45efb17456ec1258163ae15f0dcc6facb4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615951852-dbce5a80.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUXkwCRA9TVsSAnZWagAA1nsP/3yItplUYhBInXd9VYbY\nsdTfdMuHosqeNjaUiKZNY899sj1KOg4qS3pDKrgU5/iH0eswcGErVCpuTjK6\nciOTZmgCgl5SDhiGtV1XYJK3dwBCY358yjR/As+tNySmK5lRpJ7iRUa6FTuj\npb/lGzFTuFITh9f8yOgbH3G60dgQBzAXC3idvLIE+vcDpCfDMrl+Krx0m0+e\nc1Y735uKun3KraMFrcNdTq7+hKtJyKLfA5XUt8WeFF/EGfDCLIKA8cSA1u3A\n5VHgoAvhXa7TSnE5ihUJc5tQ/4LR8+aj1LL7rRXJVLZsYk97u6hmRkeGq/2K\nARsMjMejO8t9eU/HOMWstKHO0mrZGuV4fXldPz9v/AtQfbklN5RTfplhtnKw\nrTNS7x/3iz7RguTWhYnM+QwuCl3tAjyXATzXA+AOmVhP+feTUbV+p8X9ZOSv\n0GhRRhw31ffRVxRKxNv7b6cip20oKyZ/5epozC0zWylWMuPY8qR7p/lieuYC\nUTQh3H2DXmDhivKjTvP4oZ4I6QvL+FA/B33qOAkyGTtJrcKva7Wm8+42Fonf\n7S43VC2syW6U5amBPrtiwEI+YCZzzF0l5wCqTdOOlC7Tov8vwm0iP2ZmGGsU\nSU2kUO+BcoCjOO2uzxrIwA3QVrgYXlVw302oXfITCICorHbApo5FZURPD7sl\ndufd\r\n=8tnH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrRROBusYGFAuJ4ZvUjqrP485FKrgZeu/qB6PslR43KwIgYUyU0ipxuN4rch22HVP1C26pJnxjNmeQy76ftdeEy2E="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615951852-dbce5a80.0_1615952176133_0.6396582021657371"},"_hasShrinkwrap":false},"2.46.12-next-1615952198-60c38060.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615952198-60c38060.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615952198-60c38060.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615952198-60c38060.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-6N4FmgJq4T8QxxvsBTC9Io5Sr9IWMPvGWj228Dy2eNUCk3wW/mQ2DsilUbL9+L1n+OxagG+rcxJ2FavT/d02ew==","shasum":"ee9a37439736df71cde607967b0712e3d5e527c4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615952198-60c38060.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUXqCCRA9TVsSAnZWagAA2ZoQAIhPofpJYtPZQRueRhr5\nkFae+ep4irsDpIK0B0n2Nd0/a50eOQsV1T9/vILnfvYnLI/4EU6LY5vbFOMa\nAyEjhB8xysVUIkwR2+yHXG+f+/0vuISoeojI3IWlTkUecVGMOWURhq3p1nRg\n05vYqnNwc0R4O8pBN5zDO1dqr2/62qDOBShXRQDnzUj6Z/W1GqJ1FW/O0qf1\nPzubXda4+xwmNnD0hkWjVWHESp1RW4BCAFEfAw8fqVCHXguQtXzsjR87H3bD\nuxXz4cd1FNpkHxK7v6vpRDk+Ebppf2U3cEwrjZohp/3CKNgRG9vMeQqWvlgw\nKa1lWvkHoBvrB/TayHG27hprL8YN93SXJnk3tZztiHLK0rzrFLzAXiz2Q65h\nmHR/4pt2RRGgHsGvL5Njz59ofMTPPQXkGuh3tdRLmSfVaVXvfJvNyUnOUUPm\n8Ejt1ydIw69cydmamPOeyAnaGJAC8pdlE+LLBB+Bmx8w0DebhNu62PDeFeuR\nZZLVIBA8Vx5EleuHP/I+3AlPy+cObkLQExNYmKcMYFhc+1NXTp04Dfo4Gdyr\nJUzvfVkJaBBqGfeJiMWixEegPXaZmphJhnL+ndVDYiJ4jD1X9oTDAs0Cf1XU\n1nH6xAs07h0UUdiidBJOzfRN1IEwd2H5fb4DDp1XSxA3E6qrWjqgaFSFH/2r\nklPM\r\n=In7d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHNhHK/zB2yHL3YK+m+YeVah1sjY0mEyNwfKfnG/sKxAAiBgbB/cwtNCSlBfnzNy7KrQ+WS71r91Q9tWBXYtU7p24g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615952198-60c38060.0_1615952513777_0.3908723246580006"},"_hasShrinkwrap":false},"2.46.12-next-1615952220-42e38b49.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615952220-42e38b49.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615952220-42e38b49.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615952220-42e38b49.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-IPsRUJqrbZsVRVCBbAM0dB9TzK08KzBsu2JToNeL49ooZgY9PJGTcOvuA2ChJFpNHyBLoM+LXY4n/jj/R7XAPg==","shasum":"26b0934d630489aa8d4b8c1dba47eedebd549375","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615952220-42e38b49.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUXq3CRA9TVsSAnZWagAAdSgQAJHrOgkxNDgNTSiyu8/d\n59HjLNcasxnifGjBeUiaTyex/Z4HqVfQc5XyF3N1vCHxYfGBAoKODhRO4qjc\nEZxq4lRuyToTxtgs98SBlGxkOqrbh7xYWpTV+ryAvWUjXULWj1KWpjIQ/p5t\n1Rvbd2CcVvqP8xvOfJBxRuT+ePpyvPM6+J+7hUwrkd2nYx/AGmzuWQXbImcP\nqWeRrX/eOnKcIzmyY5dodqQJaZA5DJRbZmGVinLSaqE6Pw5HemjP0e9l3wf6\nITdSzwwlhzWIB/wD58qLzVv9/2luBLv7kSm1Ng+MLjyQkArRXEKqanrUIew1\n7+y5IVft5DxUaTeniho2JHidlcEYatS+DAMe6wvmj7q8gKBm6lyOFlRgNytt\n0tqsBIPTr2UZvmIUieNg40L0OMqb+p58/inW/X+l7woZWo9U6p9Bz624vOIa\nJh8zbHz2sfIZe8El5kdicrvdwMm2MGsHPLEgAYSV7A4nBuZyuHpvuDF6z6Zw\nPx3scWDlcDEjyu184HA73ie6NccPdZj8eUO8ygmn2HiQG357wl9ZugrJH422\n8g4Xi4FIUkKfed8AaGfYz6tOwt3HZgngHA0SYvU4+epsqTpSf2HAPx2+vcy7\nj8Yvir+RhEiGrL4Nc9lRzz2nSmBdYXpiWpEznRiJ6pj1HqvzgiNvh+V271Y2\n8eny\r\n=OD+e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBuQNQBEz7mvJkH1HdWGAp7yT5vp1NC/K0gIOOISDE2RAiEAgzH/fNcHy/WD9LxJcNaui6FNUMWjA+kBtX7+4k/r+sM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615952220-42e38b49.0_1615952566380_0.2517128470354981"},"_hasShrinkwrap":false},"2.46.12-next-1615976369-4310800e.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615976369-4310800e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615976369-4310800e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615976369-4310800e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-YLZnxCHayElDmkhGjaCn9+M4XOfRWGv1LJKLfdAs0xeGuduV0jl8bqwhJ4HfGK+I/6FZC8nFvvekaT+aLc01zw==","shasum":"22626c086d0ad91d4f201a3ffded12c504e6bdcd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615976369-4310800e.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUdjyCRA9TVsSAnZWagAAV9IP/R1R0aazBU5mo1Oe9LVH\nEG0mnJql/zvScQBDo6QkT5GcJW0Yqs0EhXSFOpjEdfYPQGMNSLA9Q5Le6rJh\nAKLd5dj2klEVw3jfVv1IFwapAgX+jMJuxm//OgzRi6NiyQJaxEjZM1WOaSi/\nbWQ/1eWjmyx9ls2vlfKGAHQ/Yu+DaZl0WJCvQCnhYFvMxYrlWLcUsZ4aYiOq\nPaVGepLyREpsasa7SDH8h1SdhCUP7hm6Pgh4NgfkxtPuYqP69HsXTeOHezji\n0vKpP0kZJZHkoss923aiHEQBgO/JnKTv95DE/skDKOZfCnuMIHMGAUdwNFRL\n7f9+bCtq8qHvCezaDlXb5C/18QbzaHyCUS+W6J3sOElmnkolNQaVDQToDkiy\nHbsAN5DfJQvUzbtHg5BXqGw/lurydy78jiN4NdF/JGKLJdB8ZVZDhS7ljF1D\neB+giCOe5zYd5IpKko5iUj/BDF0OLo8eZCorND6kSy2ggRYVWfYFkHDd8Z9o\nL0ej5d8GwCAGFoplFw5ztyPkLf4rnA59SyObhNetpq7OKyXj89GqoFxt37lo\nL0pNS97gSvEK12m9TxuUEKdzxYHolXS/rA73rUpkxsevhgFCmfklao9zgG0Z\nAi51kM7Miyirf2TxTdlih2nWAoDO+ROLjpKl1fscAtNvqpYHeL/L17StcODL\nK06V\r\n=S+k4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgQRwP+imIPSNdzTnEk5TkbBwNQoALTlkHyKnqLG2IbgIgPqm2Gy/WDrV85194TH2Z07tPjZG7TJUjvwEoNw7cIa4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615976369-4310800e.0_1615976689790_0.0289928594599127"},"_hasShrinkwrap":false},"2.46.12-next-1615988966-43a6bba8.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615988966-43a6bba8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615988966-43a6bba8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615988966-43a6bba8.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bT1ajjeIn38ri7T/8wJIEnHnJ3Ei36Mj6dCIrk1sJn1VFovV6I8DZyrnSDQ2jl/a7j+cTkk6rFNHUYzaFkMCXQ==","shasum":"13bbfa9cf43d25f7bf4b5cd0857fe636b27f17e5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615988966-43a6bba8.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUgosCRA9TVsSAnZWagAAJYYP+wVzbzipIKlDuGczJJjo\navvEi18RDq4gjVKa+FDLQ/9ch3xw0C2U0592oei3vwB0d33Wf3ULtkoc93Ti\n/7gh5VY3V7CeVHZv2cSBVdpXv8xYtHD/k4cZ/Thj4cfjIjkmPlDPUDSrTTTr\nSZBF2lifTm/FhO18Pxf5Gc46woAOUmt6BPZE9dPnyAoHrN4nIyOzr96sUC8k\nfK/J7jutb3FNjpPzuq+KmQ90yX0qoo0ymV2zc112c3YSGoog236r4hsOlz7b\n1E3dCzqKjb0m6XQpu0v01KA9eW6C0w+G4aJrYfe+T4WoN2RXv/T9MjzCL6gM\n4/zoMQZ2ILjy4zGFfT0jOOGkTs+GPdzGD4wE11SNJMQ/ZgcopBnCVqLB0kue\nzkqnuOdIpxLJ367CKpB/IgibrrgSiUvu5SeH63cF0Ui9reSSDffVNqKvI7Qg\nSy7pHNHHpc72y+ceHmc5heHSqKT1ZIiXUlswt483Q5SbpbV65Y+Cq5CE3rgD\nmxEpyQZ4Z2mALLTxteKDLMYqRIYGK3eMLWGwakgQDXNUlED4nILjatpIsUUT\npaFW3I5QC6OoFakiBMk9zqTlUNdPKQLQk8hZRM1qecX1M0ntqMYAnauHzDvD\n7eV0VIg2sfNhQThNetuyFDM++i1TyKdJNQKpY4wYE+3V7sc7+a1l/tFQ1c91\n/jHU\r\n=Bepl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBWM1O1fdSA9/Tgeu7GtBf8neSbh8oCQ+GxCzHrkUxqiAiBXQCa6A1wDN4lqubMhM2VT2EDhQq4MB+fR0k+ovbrAlw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615988966-43a6bba8.0_1615989292075_0.862441944472935"},"_hasShrinkwrap":false},"2.46.12-next-1615992140-ed20fe49.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615992140-ed20fe49.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615992140-ed20fe49.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615992140-ed20fe49.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-XaifuYBTQdViHHybkrCfC3/JWqzVl13mh1blXM4g6MNYi1i3s70qxpIoJU22DF78+CTGGFIBLkNiqqI8ZaFcBQ==","shasum":"c72f6b3922641af32fb53a28209a4d01e750d6dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615992140-ed20fe49.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUha6CRA9TVsSAnZWagAA7i4P/iCNYxpOCGPHWNqYqtFw\nBJtxCF0tZ8UZ7JUYsSEDNuFQs8/WleH+HF95PhrtwfZg4u5dTfkwE6ZqOhyg\nlv7RGp4qXOtN8H3PgItoh+JousqMWiXLYVpr3T/8alxEdbZ7slWpN8clQ/Jj\nqPMJLP64gJalQRkWhG4v/EE+qSuC3jb5Dd2zY0Kd3FueZTlOBqCG/pzoh+1X\nLNiFWtGh+5n9VBqRdmDbyrhNtF0Q4prYLRq11wnzl/PiU8kw8Xf9PaGy51Yq\n7+t1embosR/NK07o00oewwH5deGklJ4zr6SPLdVoQ/sZoHQDJmqqUOnSj5yp\nBX8lJlz1KDl3KR2qykT0PbAmhIaWnhj7RAEXz7IKnYIN64TYbEUA23x8YY/G\noa+OBtWj1PCLSHeiLqUhyYy+uXSqkf3LAY/xJOinNfxAEqVwAYLnyxkbSTK5\njy7J656N8jTSiHJjFDntqE9RnaKdjuKNXqlQp+pZ83kWnWX1upDpyM7yGnjw\nbD+XKZmfsUSH7scULHwttzqRMx5JtbOC2aFr2iuRN9vFXGMJ34y4S5k9ru8o\niKg8emsiAzhKKo79AcO5WybnjBa51ub0w0PUs3RstKKk+gADlall6A0Ms5LA\nzqKDdNuxQvhOcYU4IlHh5/gxozoidhZib1+FcggkTFSP5QdK4Uq/gzz8F5r+\n8idx\r\n=ia3J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIANJ8GXOFSNzL4E858/svbsTnIiC9xLuLoUIWIjgPMpuAiEAhT6fYXiLuM09je71e+YcnUhJBaAcS0Et1e4l4rpszHE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615992140-ed20fe49.0_1615992505707_0.4142962816865168"},"_hasShrinkwrap":false},"2.46.12-next-1615992373-4310800e.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615992373-4310800e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615992373-4310800e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615992373-4310800e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-vM8IXsMAwDfK2l0VST0D2ut/10trGBIxacqQXiSeSVaio9/ls+l1AwNGQUaePv01udb9nCxCwsXOmSUTZhWR9A==","shasum":"973c5fb67f9ed4e914abc0b8f6a1b2af159cc95f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615992373-4310800e.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUhegCRA9TVsSAnZWagAANSkP/0r9LSTMMj09+qmy2j1d\n0Dqyu+MqPY8MBC6VBn99crriTdUtduEe1bzl12E4FvpO9ndvoGBhY8GKrygo\nkBgyEwogTnuVUGb0fYs/ZVPcHFG20WriqNvLQTE/4x1cKSBo8ESIggKgfhsc\nuwCjK67sI2ncOMyHlS8cx9DmZYof2tUL1FQGBaVCW9iigw61g55pAT+ZXTxE\nbVfj5rWkM6UuM2g2CIOzpN4cE2zlsFn9U+ZcbekRMND0Nv2dN344lTLveSjD\nTu04Bv8kDyrOvlQEBko5Gkml7Ir34UWJSf9jS3w5D4a/HWlUEq+r7dhb28cM\nWiCd30V3QjFJTksauteGNjsxhPSO8DlWdJttNQohBSCDpZRRMdh9Ym+kULC4\nMlSg8uxM/E2y0eXUN8gSnz26Nr9+DR32nLDjiPgEtKaTToyQ+4wteqxuK7e4\nRUMsEzCW1BmznldNf8xb740mFVvQI0sPeM2eJke6VqLCMZLhS50xeu/Vky+Z\nt5xOxcrOSLQAFUCBslltLQWJT6on8x+HvR0m5PjCCpAjhqq4CN2aHvirpxuM\nFTDOutKAqsh9ODsKwT6/ThRo27Ih58+tb9EnPldeWCQzXaIkgIKk59GEXAlj\nYHlDeQ3M7/xYrKOYcvHAXzB8QPYxeOEJxJny4MNS52GLH6h6uNHCeK5r/O98\nq2t4\r\n=WwiD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC58/pJNFhy8jklbRjHLnvmE0AY2UyXvw1gBlCkPpS21AIhAJUug5WHzcGnUT/Nn3Ye9G8bIMeSutj6IgKBU1BgQtBs"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615992373-4310800e.0_1615992736074_0.005969144848458008"},"_hasShrinkwrap":false},"2.46.12-next-1615992489-a4289e0e.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615992489-a4289e0e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615992489-a4289e0e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615992489-a4289e0e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2H9FFVcA09YRRfosMpv/AAiI645qDaiveSdIt9xxOOgHJpkJBhRECN3RqDJqJ3eSGYxCw7aCfx8wjqVVTmxouA==","shasum":"adcdc8b70c50b2797f23a9d85eb506b7bca720de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615992489-a4289e0e.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUhgqCRA9TVsSAnZWagAAbWkP/0MTuWjT2TQDvhS5cCGC\nvaRLYlVM/fa2E+5SMsWpk8iZ7pqqlZbTJHddCU3DGO/aQ4wPEOBZqyYOM9gw\nfPemeOUWJF/7Ajnxd3fO1P8aHEG54r5smDJGTgayaCDBQ7o00J9x4WseOkpB\niRIsHA6OqYWGiaP6oAMAma5g8m86NNLyRTEUmACdk2zUaNp2UqzVsiQt6Fpo\n07dfNEsCj0yzZwlWm3h7J9nqFFkR6+Z+7xrY29DncJENs4Omzh4Y5J5xmuF9\nbagiw5wPe0FK2xiWI1iVOx9WYfH4c1ded1qqpH8cRNaZsoCZApF5gIg134ik\nugmPweFWK9XF2c28Kjx05RiVc85Tk2sf0vyK8KqSnOYwLhWGAHaC2pixPIu/\nBMpggjJeuVg5Vrp7q2VOPl1dA8kfhFTN/YR+YUIu5hfdwTZzPsvuiA1mA3+D\nirWgeLih8MDZy6wtEYCwyqmSgcCFfotSe0L/zB4PFzpofLrN7J8p/M+9twRr\nVnthjAKOx3sODHecKty4zENWsFEgdfIZImDgf8PdFYQjja3Y5ZWI7v3xhC4g\n6EhvUdJDxnwmsbzPEVn/X6trtKN2KfAIiYgOd63EE6hcDFHx6OLtT+FLh2GD\nUfQM3TIWxoxt/11c2NEvTQKf5Bu0ZXSLdfRLXYKK77ljJfYsn6UMSS0X4/FG\nbKKk\r\n=LlO7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBIwQsDrNOP74WYrPwGsuyZkvD8Sbk7UJbTBsOohB/IbAiBRx/n+FFNlicWNfA1usIYn79tGiSV/9m2KqFnfgcNpYg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615992489-a4289e0e.0_1615992873608_0.3705288598512795"},"_hasShrinkwrap":false},"2.46.12-next-1615998285-a9156483.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615998285-a9156483.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615998285-a9156483.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615998285-a9156483.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-FVgVYXypWPj2F5yIGkZOzQHVxu47cYXmDEpICZoY3F73alk9rWhG+QsD4IreL+vvFPK+UzXLsySgzD6SopRkDQ==","shasum":"88cb387963f329d8f32c5454a20bfa541f00f9d8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615998285-a9156483.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUi6qCRA9TVsSAnZWagAAl/UP/R3K+SDsPfxyIJBD/Ac+\nxXh3INORuLJsFpJe7vYeqexjW25VKslfEIWRPcZkBIQs+0B3qOL5uvpfNW7b\nSE/1SCljzb7Vo/QuwJOzT4rAiP2TyXa8vPaNbfXk+HrENRlcfsxp4lxVFpIz\nYHjGtBIx0PHn4Xq8P59bDdo5oaQiKeMBmflgLoRmQ5iAQGfJ3j3V1LoiWXT8\nZCLbiF28PzvuolTqjKctTu86VK3ULqZRKYZvmZ5SG/3MVAYtYHudP8MPDQsB\nDcXSqnh8elobiyM78ZjJRnXqKBxc40LDTB5c+giMk7r45vtLcZF4kpIelqoH\nhJ4ENTYtTimmZlACs5Zy5xQrBjyeri1BZDjBLdSzPPIHuCsWCh9SL+8jYnbs\n+ukbxBBx5ExppmJIZAueJHyNnNMvaQs7+LTM9QFYc/1u5xGUY1kDVbkJXi8l\nPqaQ3J/oDQS7a4+MzGcVrzgVY9qNpFaumql+LDS1FPKHSd0syazEXaOi+aAv\nbh+4r4IUl8LahJeO0lZuvqAoPGdBJ/fV+Mvzg5ke5hF6xqnD2VZsygqmtuKw\nqfYEMkeD/IhNnGsfgmXX2XGn0JskZpLCttwf/uXQsO8Tq1odsbItOjzp7qxF\noX8kprQFa0oKKrJt7x84nuWLVVI9TDV9VS/2n8bpg9yLvyhUBzu0r47fmQWh\nAWjz\r\n=97Rb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTdV7cTMfl8C8AJMi3XWbgJ0nAhCMIBq2D9/s120rP1wIgJJ6iji8mxl2wnmZxw1FUl2ZJuv9lLaqGS9+dnhEKNUU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615998285-a9156483.0_1615998633474_0.5419800183036405"},"_hasShrinkwrap":false},"2.46.12-next-1615998301-a4289e0e.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1615998301-a4289e0e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1615998301-a4289e0e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1615998301-a4289e0e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KKMDlyUAY4Z/T+puqwizFM17lCoDSwc5ye4N6fX7DBaDpkhLFto8PCaKcWJ92A6+76iHPbk278pzAR8/K2V4Qw==","shasum":"b0f818725bd9765b699cbb37a467184c8b1ab78f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1615998301-a4289e0e.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUi76CRA9TVsSAnZWagAAVSQP/0PisjjuX6dQBg12uylS\ntxPT829bXQgwFoDfZJMXYocZQoIPltkWSsKYaCnSGOSiyXkghFNB2zlgZMKZ\nfZ/kYr+VteX5JF4y3mNICDqBtlZiY6BOmgBcU4FZQH0P54arY2YaaJump+1L\nfcb0xJlqTLL7+CYuQ3jKZp5mYEJRTcJFhjBPULEPnFqR50d7vrXvRVw3QWpk\nU5FHJ8yD96D+nEeCwxlFcvQW0UUqk7X4hevgAuQD+Rs1NUdWRfTr+fLXKKuf\nSpXly8R6lGfMfc/rt9aA6Je+AZSnn+jAwop7QrnMkqpihAbVKE6ercFg2OMa\nh6f03UfR04W7qBdI/28rMAxYkefydydocx8nvrhOVP6ZUy7+x6r/Ec+RiXVJ\nFrKd+w7uIOIR8VHv39xSeDdKzAOvRbjBwyjUHW01KCo8Ksr2c6mOXKnOckKZ\n+ps/R5OYx1ZaB62Rs7K6bQaNh+SG5CuODCBphdcHN5nFDqVvls77t4fOFxzH\nwu7/RP6KCb7f1ovUV+Z8l5fiOey+XRatC7Bd3XeEcbWc9l/THw1Br5MyxV9k\nYLodJNDs0RwVNlmYdS+ngN1Mvp78JFGPSWbYbnh1+lpfUlPmpBTbm3CdNEVG\neam3dOcOQ/A4v429PuYPdcRzNlzWJ7CSk8vJ/gp6WI+HlFdd4ZqUipVvXHOu\nN5Sx\r\n=Y7Pe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRyhLDKYbcZ3tsazmcGNmCttkMsQ//0VqR4MEqLv2SQwIgPPRrFJZ4NyswO+ppK0umNTj1U/MwB9JpwinQ674UDnE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1615998301-a4289e0e.0_1615998714366_0.3916359239831071"},"_hasShrinkwrap":false},"2.46.12-next-1616000880-62985ef5.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1616000880-62985ef5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1616000880-62985ef5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1616000880-62985ef5.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mnS4p/iXziNHbcrT0woCPmkuBHpMmyTR4JiqD4jDMlSUe3GlLIGOsCxnVqAeKsc82AlrNeTEDfMztj/qXBNKNg==","shasum":"98470d1a8731c225a2d3589e8b2455b28fa62b71","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1616000880-62985ef5.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUjjXCRA9TVsSAnZWagAAq9EQAJ9rMpuwhPSM40PMDbKM\nQ7tM1pLtG53U0+ww5/zledUXjKjdwOkxn2Z5oa26vxQByRC5QV/8Ytf/LNoe\ndyLWaz2uqfqiaQMvSDPemDdHBkhG3g7/35viiFzDLTlp5GRy9AvvLdkwEL+O\nik3rr15j8zZw1jdqY6beGeQJXQ/JjO5nHSYwym1YahqriXy0kkm7gxTXYTpx\nJWG+lIxJe+EH//KjIxEC0pVZI5BdLPPij5vlWWxnx9ibJfDv5LWg5HV998pN\nT1pQKvnCZ7BSoUagOw7DfcAhUVAtihEYE+NZvRqCGah4OH5AeFQq/XNWPx9x\n4nwfHR1R/jVEfymthw9jQl0nhqGz0OBpTimyckKaUrC/3Zlm/ZL2LnrWLh1T\nD8u5whrqYGfP5SBbx32gNZJR6MGI349fFhXY/Mk/r2RyaiN4a4IDDYcbEBGV\nMeqpTn2TTSN8PB5LRLLfjilWHsljrV+NIXpVsrAT3D2tlwAtEnH4FxRFAe9p\nWm4KtW6fttfXap/Lju/8J+GqUOP1SyoVPGovcsB0onahy+9u100o5o5CaKSk\nV20BjMiXPeBrUQgZgUbSAvb9nahscNDhg47BKtqhgiwIKG7h1P1cs/3pO+F3\n2bE5RbwTJc+EJumrXgVPCJ+NV4ogVeXHJ/tT2iWNN7GSbqC8zmvYhZv+9vNr\nfQUT\r\n=ox2M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAE0ZLhqso4dP1iLHEIgybb9X5vkXWGfWHF4ohaOlOeAIhAOPsuCy/ELPxYzbkBvv/aX79Bed1zoKvc7Z4Lwa5y7Dt"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1616000880-62985ef5.0_1616001239362_0.24311758929967242"},"_hasShrinkwrap":false},"2.46.12-next-1616003176-6dc36d3d.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1616003176-6dc36d3d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1616003176-6dc36d3d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1616003176-6dc36d3d.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-dMNx00vDT+Peg2ENmxorXYEDlF9tHAvYxT6X9m0P8qLm6w+krBLwRq32m1gleZ1bVC8BL7EcIxHugAh3F6Y4/g==","shasum":"f609af7417f0249cf9a645ec4014f6a69f912ed7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1616003176-6dc36d3d.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUkGeCRA9TVsSAnZWagAACjUP/1VLOY1dKVJZhCZI+PYX\nk3tGi3fCnFqr/hF2WYw9w/iSPPXWf0WG+k/f2/nX5hWd3vqTtOixeDeo7Bb4\nVAZYLLGhrqfiVhMmC8j3JGddiOSYsCkfK/LttOhkqF70xu0touMgtngIu5kC\nLfES6CpDvp96/XhqZJi7W0Vk3ZkjDKwviVtLAaJwwfRT7DrznhFkTt5wxVgx\nBW1XJzVyLRoM6XHWO61iOAP9oYC2YcC1kTdjDRTNo4HSW7iUPeE2QiodGtku\nAWXZfyji/hDORUA8/e3+7l7GIYABRIc2A1jHfJakYQGI13dvEw/17MhhkMtX\nt2QsH/sY40K/Yy7ZLBkMWrr1/FL+GM91RoBYHNBp1508DhZ6dJ7s1uwoxY0J\nMgdm3vKbb+l+ayod2YhLZrtouAkmv9bcwfD/2L8eS+YWNCHSUQ82o5ITRIh6\nHa48w28bN11z+0uYvDdM7CEr64IjnFy0r9eCZN0VpwT8KH+8REYtk7qwSWSW\nIk8NaQtjKqq0Jng5HFhEz8tIoNnNDePUBE6ab+WLvj8iTxCOOvLMhXz8ut6V\npILgDpbmjMloxxlfgd9fpy+V0+MTdFNEiRU58nzETWiDzSty8UgF3yWTfNbB\noEMNhdM0OPFfRtur1pNCV7ZY8+seHzNy3tG7gdLo/2/TQc4qwWBjs9jG9GdU\nezIF\r\n=Rvdz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0ZzqOEXnNavVk3HB7A92Sq6xZMqVMxAn1pdjNVUeNTgIgQtx46dN2K9Hl7BHG1HUDXgW7EPwZVNQRKsLMkxNXqic="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1616003176-6dc36d3d.0_1616003485803_0.5583967590950139"},"_hasShrinkwrap":false},"2.46.12-next-1616005425-5feb1d3a.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1616005425-5feb1d3a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1616005425-5feb1d3a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1616005425-5feb1d3a.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-twj12TrEOWLLRFajPOmh9wtyh5nvts20xKpVSQ3MQSSO83IOyJ9BEJ7oY1I/mUVhDgPuCy0sM4Wt2YuyrScyjA==","shasum":"1a6754c4df62b7c6af9101b05bee3aab97e37215","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1616005425-5feb1d3a.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUkqSCRA9TVsSAnZWagAAXGoQAICroXejxKD566EAf40r\nuAW6+6DA4osPjHBqWFwbAuDkA6N+1oUYeHwCjQATWyrEQJ4BKHzS/LX6nAa0\n15w328POfknYps+ELGBR0yTaDnmShpLCWVHE6wUZpAzCzMvgT8MpFGe5UarB\nuRtFAVRdtyR+fuzabsbCjXeGqb1q8S9EHUoyOgfIMYNa63BcX0bM9mw+EOFq\nLHBMzFNgYukuKoN/rOtHJqkQqFPzPrHj8FSDenFVmZVbNbqr5TwA45vufX8r\nGqpZaUdig1tHBt81HLbGUoN0ZEvlmvpP6GiUW0ttmhJdD0jl3z3JuvMlvDig\nua4+w40TXrBjoxJO9D4lipxoslbdUrTSWe0rfXvYmAurFUZbpSmG9zhpnapm\n16WDPD3ttjlD0l8dLM5112MjiSGefIzDMe0QT5M0B5Fnme8ZngoGQZK8zKLg\nWjdZjLn5QPt7qu4LdC7GUs1Q8vvDElQNI2qaFVtpx1BV6ksS8PXdE/zoOsRw\nMLwNOWiUNqLku4VpuzI0j4gakVdamq453CqiLoyXlzdSXqFjEi+OzYuHMKAt\n2Km8IzmSTzR3tgJ+710sEnVbAywFGGsR9ZrPE7wH0R6PUAXnpAYZGKFYY4iQ\nD4/Fh5I7K7mr1PyErOSv2lvK28+cyfvNZ0c/AJRCtPjK0QrvkE2mCao2QK4r\nc6U1\r\n=7Gnf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkbsL8226+/Oum0oAmJwRHT7t69ZSBNsL1VjlUmuyrNQIhAPJXcUzHXj3DJfxtIhFiMT0zipOYhaD+zBJKDXf8cho+"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1616005425-5feb1d3a.0_1616005777270_0.40270006061712427"},"_hasShrinkwrap":false},"2.46.12-next-1616005524-f587b5bb.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1616005524-f587b5bb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1616005524-f587b5bb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1616005524-f587b5bb.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-NDxegtrGXII8LO/aGwRqNdjtcu7GmiB5rhsurGlbfZDzGooByj7hBXbK/UOxUQjlt+wCH2Wu3SZJ0Em9lyRqQQ==","shasum":"41c2aaa09d7c8ee0d0bd4df5196ce82a15451f83","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1616005524-f587b5bb.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUksJCRA9TVsSAnZWagAA0v8P/04p3Vwg27egMYFN5f69\nOC+1AiHaUD2dQXIw+IEaWoMCmDg1qI+jleDAx5aQ1wtECVeNXi5cy+t8RBDb\nbXvCoXN5OxGXNuxyUL+9tQLnmg6K24bPXGw6sPqW7QYe8ADGj20XLF7O3X3L\ni13QSHT2AUIelZpmVu8OqPhuIagzz2vIT4UZ2Wbn3LwfGnGq0LG+u4GN4jtu\nfdF1F/PxUQBxB9zDaa3Wl2Jm6SS6HfVU69Z8utpsgQZezVbht/Mb/MjlVtXB\nHHsUNFxqOvxs8F5qQDW4JNtgEbwGcfv6sPjx8lMzOxmbsod+I2Oio1QqwcnI\nqhv/vKYHSoIjSxIcI/7KFFQvjKXYws/zizIC4xXANdqTDyTDZRVGZbS11bW1\n+3KFfz7Zpddua/Uyd2IhTxP1J6pd51OIBAdy5fLQ9LhZVxpphMXgkZrrXT4b\nJdYh1c7U8XVqpZE5hm1ZcHb9bR5JOMoNQ/dW64vtKl3h3gRaglUsXrAUeDfN\nua+N8qTtSPu3YilUjpaW2J073TvN9DMYtzJmqpi8X3Vtks+u8U9jpPa1v/V2\nEHQH3+Pa44AS9QwTsJt/8I56yGhS7Q3RD9T9V3yjItv04ho3SxZljMLoOapr\n8CCypt/51M6K/UohtHW6NBjLGmXQDYjVW1jv1LyZPfOAoEOgDyGMcm1I3jpM\no4Ae\r\n=K+wO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHCIm5UyNkSMRwo/exXfdJMRhV9ZhJFCHtLC1Xemq7JiAiB161RHlOn9GDzcxllAHuwD8+bdHSoi85vT9RALE0WqxA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1616005524-f587b5bb.0_1616005897166_0.15680158969850333"},"_hasShrinkwrap":false},"2.46.12-next-1616005510-60c9f43f.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1616005510-60c9f43f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1616005510-60c9f43f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1616005510-60c9f43f.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-rnGhLTE7NvauAnmRfXGBuR62pXclzqyRCM3Z8mJh2Pti+cbS+JwbtAML8wwJcwYXIlkCC8mbgR88vzJ/8+Xp9w==","shasum":"ddd3a0de4e87af492d9dc6d4c3f27d6971e0e777","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1616005510-60c9f43f.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUktFCRA9TVsSAnZWagAAxg0P/RsvktHio14nlA7uWZrn\nqQVgvEZbd8C/JoN5gnUvgCWdIlFrQRhma3+nqARtyyoA5uCJGQ0ZQSSdbohs\nIXBNpUzLqNDMvUAau4a+HWKOvYRLEycdzJfUxUMAZGVtw+vU4ADfTDebVwQK\nLDFFAoUJAXRmwD+yi/sSQSyUfpLnnYCy1crv7ZR6MByF/NBY+3nSlCgEcbqc\nmNDBEi7PqUeMiKbzyXEKaplBhO9CqmRxn5Xsriz306x4IlieGs0tWGYzkbko\nRPKEHsUR4qKn1dpj6V1bAdzEUpQXyEbPVEJ8dylwV4KgjBXedQ+x3IeYRwBh\nR7k5tWQiZB4+PlaU/U4ql1OH3wv2vIgM0cDrSi0kZBQ0AzowM585+lKSGxYa\nJmFSTTRtLte7qDwo4pHnUxt8NSWJQNlP74VDUJkJ5n8sbKHuGPUbc6Q1cSSH\n0aOrDJ+5zFadYXLbv6V5KWB/MGkbFLBULzJERXzHQMxeLOVHAAHrubUWbLnz\nDi+4OzCzQB2T6WDks3tMxwIr2RgKyIwP0RirVod/7YSD0djoAlZINhcCFpqr\nDvvW6VUYHPH0vSPKrmUi3mm1TRLsq7cIpSzEPEw54JFPa+Wzk/vp6vKqWDGT\nDm0rdp1ON2a4MvltzX8ri/W4g/8gh86rXaPXk1q1C8qytrFYIbykhINAD71b\n6TSy\r\n=Q3BM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYgyx+HUL/aC9wlnTrOPUS8v9uQUqNMAh/J3FaVIRjbAiEA0rlWAPmkvLL7f0tKiIJV+eewJQhtswsY6HFyQp5rtbA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1616005510-60c9f43f.0_1616005956804_0.9395629601975208"},"_hasShrinkwrap":false},"2.46.12-next-1616008443-60c9f43f.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1616008443-60c9f43f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1616008443-60c9f43f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1616008443-60c9f43f.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mbXl9XxuO4JgLthqN8gdqPpnCmcbcXfGUNdl3ieLhhvCHIemdxHLfCQ9Im7xyYx4+ch7I0r5Igbq4dIXtwU5og==","shasum":"7e2bd491e60a96ba7937b97430378c085f5f8256","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1616008443-60c9f43f.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUlZYCRA9TVsSAnZWagAAINwQAJVoTaOwx0wA2Zf5RcFE\nZqwTC+p/6BihAFluBnGK8OzHrIzkb1aDiFhvzbi37RbtUmCRPWSoN2Rabo/n\n0rEWsnjC7zsGfMYB+wJ9jTsucTRyLhnmC+mRfwMwXHkMbPNkINS0IQ1dZIPy\nhK/TRCX37fVdisqGTriUKTxJrNQHYUOaxlJ1NER43jG5UFsINOk/vZ+9R+cU\n535co/BxK/Cxvja6ZVQF/5f2rWGIN9NKA0QH8Ue6U2ccMOkk2ei+ZIV/FaHg\np/wrpriQUH+19lrpU+N3U5uFTSB3yosysusWaOUMcDznKUdtunQnMLqJwW9Z\nJKtqQbD1SoZ6ec0a5s+jjy7JDIYf3WWOTvk+/XPbiE19nixoYGK6cvkwZjzJ\nhy5cGhpmq5QxaFrJ50FoYtaRGlUvJG6HDZl6JKt5CRCn2F+FnyMSzUIbTIvW\nj8kSzGzn9y+kccE1O8ph01K+FyHvqlGL2lPyvjsaTUTj0NRwjYckJaNp2mG9\nq/7dtr8BYGV81DXE5MFH34xq87fCxh2Gb4b38qEIlNZiyRd3TKe5jlBGUz5y\nK8TPgmNHwSVeu/VceIwQ/Lju8/SlAW9p1aC1z1p62foOoNwxfUk++hyXlY96\nuYP4pJh8pgtr2j6U4voJ5MiFkbbN5BR0XT9HEmsJo/BzPpyvKM9WieYfHY6j\nULiq\r\n=RulL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf8RNotBWQX14xJiBkSnb7AcDaSodhTcTPLMc6NBxBDQIgOoJC+Ewe0e/IPSIVJydNm/Kp1MrS2bqwp3ScTN1GxOc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1616008443-60c9f43f.0_1616008792106_0.34368470203364265"},"_hasShrinkwrap":false},"2.46.12-next-1616013047-3ffcf665.0":{"name":"@xdn/prefetch","version":"2.46.12-next-1616013047-3ffcf665.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.46.12-next-1616013047-3ffcf665.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.46.12-next-1616013047-3ffcf665.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-QkrGL5jNbd0WQyWwSfzCXM0wm1cQnj3avPU7vGvtvxTqHKmBkjNPu/EfnMl6fOCDgOAZP8u0nn/2MtoXDbTjAQ==","shasum":"f5685c3e9140fbbc4b90f21c0a3952c367550cd4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.46.12-next-1616013047-3ffcf665.0.tgz","fileCount":56,"unpackedSize":138417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUmheCRA9TVsSAnZWagAAJCYQAJUsJ3IEoCr9+Fk6aTI6\nkVm9bOKIxb47BksAG5weTP9eMfOhcJHM5MNKTwiO1GtA4QiKL6P0N0zvPqX0\n/x7cy2J8km2sJlkPydsUytmgo6bRsD4/YhS+7fl7ctufAwmxIBCSO905+zX2\na/pxcRDQgyywwbHMyo8sXgMp/lnD+E3DPXnZ9fzloT1DwWSBXD8/UeYYLMO7\nO4EX11Ri/ENcibD+ElP53iXoiXDMXwYwdZSJTPlPg6nSuDvX+j1hsI6U3BqO\nTzg3VjTPrqWMRXSPkZEQXtFeP7/ffPf5eqYskHz/PP3tfHlRnhH6Ft+lyMHL\nI90y2+mbV6nIimnNgkvEM7iQqp20mCFlhRpwxoFbP29D5mvyXjDb0LYzKA1c\ngr5HaXzy9QY/JGzgsc/CZbgtakxZURNk+k3ITQGGyTjjyq73QR37gX2yujgF\nh5WZZQU80JPgUQ5Z+dAc2fBbs+ptM1QEgrQcwyO2vg9HLxKfWt180L5kJusU\ndHuRur83dKnMoaeRrBuQ1pNC4V5eoZzl1cqNWk49HLA/52Ug7VzHddyEIJ9k\nusg0uzu4oJr9cBcrNfSibla7Sw+bz+GozMYjCpCBe7F6ds1b6txvKYd3axX/\nanlkh92VdqiC2oGad8EASrGE642iYrix1UPDKX6dCtbwZDnc8FpTxL1yJk10\nb0d6\r\n=Ighn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDALG8KpsPHLNuQnN4kp0zhpHJtogb94PYgFF1iTx0JPAiAgYdtziAmZZkyXo92lITXouGldJ0ljlHS3aQtOkOMcUQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.46.12-next-1616013047-3ffcf665.0_1616013405835_0.9220854160086751"},"_hasShrinkwrap":false},"2.47.0":{"name":"@xdn/prefetch","version":"2.47.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.47.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-JUy1jo7AtpmkFE6NQKZf+k2/Zw+svDJvt5KzI18b3Xt6YX7BPasV60EvlagUUIIBFF16NmJjHI6yiXMJeOOsMQ==","shasum":"758d354998c850836dc8e8bea922c4fbea30dfcb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.0.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUm4UCRA9TVsSAnZWagAAru8P+wQ3qaZEmuv+edG0JDta\nfO+RfLVXIjCcAwWzCd324uO8Mbr1HKJumyZritKAXVhmDbkKmN2ry5uOvFON\nrDiTiNEsBhB1v6axR9K67Ya5ywGwLjVr+RTm4jM5SoWvj0MnovS1iZUwrHFW\nDhXD5Zesh9jkhRJenYYuINWG8JPS7mzUtIQdpwdpemeZK+AMhC5qIBGB9WlL\nRTOsjCNTnkB5dbb8OxDgN82zh7qycFRX6mzBbvNIEI/Ke4/kjeHzVpBp1kn3\ntcoXpoZDKOnjsQc00//8bD7e7e2GyXtoSjfgTRLZ2LN916Cz79ZO0hkXBvjj\niPFNRHG3xGHVdBQ34z3bLHtuoq37jb4mvrgbxbazdDr3QFgLjZpiN6BkZpmI\n/oiN4z+5HniQx1EMlUngfyAJC7BSNQrDXn0lx2GgNWPK2aQ905HKY7uTKv/+\n+KBlEqtJ8kBkmuSQ19dC4Df3CBB1Popj3hAqYjLCjUnsYIpRuGU49ivNT2BB\nRMaDaTFYOAKVO+gR3e2RHM91UmY3TPvxi979RLiUWUQejMsct7vLnwLuLuET\njG3Sk3ZbOXhmopaSom/m8D4YIV54YsjDcBg7EpjYPGY3j31pMdjnIdCeILZX\nMe86L5fWnOV6ZDvXnmgUz42yb+x7Cv6ev/cf9xllo5cXeX5oyv/BGee7f+fD\nMQT+\r\n=28/5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC89/IhMRrQYAdzaOBMrPI29onqjByDlayLmKU1u280iwIgIv+dYgX32fch3Kf/zqFpjvYp5H/qehdHHXXTI4nbBtY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.0_1616014867430_0.2970888418815696"},"_hasShrinkwrap":false},"2.47.1-next-1616014595-de8db8d7.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616014595-de8db8d7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616014595-de8db8d7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616014595-de8db8d7.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-pSDoTs5cbC8JJ6LcR1vBjtjcS1b4/FmbTv1Q/unPRyy+YoKfG9RF/AxWr+iPphgkg3p/7+iyRAG9alpofO54gQ==","shasum":"f7286910b0ffff7fd789d66a9fe3771252ee9c58","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616014595-de8db8d7.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUm5/CRA9TVsSAnZWagAAijIQAJ+jG6HPzSBW5R+MNCTF\nJUzeeUwo9aC8d9D2g7ag03kb1/9DzWw0c2GlLdfj1MPVuD0V7VI5S3too59h\nE9oCb20fuCjd5kXeKlY0rG23jtoDVfutb0YUjefQiTWitTxs9Qp3ZE1/5b99\nhzWuHoIVGh6hR85dLn0sgEWkOOzERPSOCWHKsMRU3yCrq0d+dYOqrKtyyRRB\nW/zETLMw85f2nf+ONwnlwZIbJSNkdb7bXNhyJmsAgBvBJDwV1EectqaUlXhc\nELBG0lIRGZOgKtxiPrgU23Sud6SHRhvWofMlWgQNn1ZNVRWWcwS90aVUVfbn\nlP5nGpf8rLfMbe7QrP9flcVP0RH6NoEDfD8BEdLUVXT2zbQzGKTNBXlxpLby\ndlq1NKt2Z0XjBrQrSlKoLSWlnD2kZQCVqa4Fy/sOfSK7titLftQvZTwsIf3w\n9HgfQCNdYx6rKn51su8j5P91YPCIcVcpbA4MIBFlbNJ+fu1+DANR0evnsckg\n/Id6/lgvK/IiHQ7MEI9KYn8fPjrGdd1Wmr2te7nxSgJ0ThbQZZv46e4Qe/zA\nW1EQNY7iBAgGPTsF+pfNLGV464CxF3v0gJrfmXV9Wfjdx97JlirYbriclo20\nIhTls2SOIiZGIqpMQgClfhAxEjCuKBVQLR5PFUlZfoKoq5vaIXhk4tXSaAWz\nwbYN\r\n=zo8y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbSufEUTzw0/FeoTVkvtnv2sn30nCpQVZnZja+tW8YIQIhAJjNmzIDvgAx2okKzslucQKWFbL/Vd2WbypCwrNF5hL0"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616014595-de8db8d7.0_1616014974715_0.14958029447887067"},"_hasShrinkwrap":false},"2.47.1-next-1616039246-0aea3f04.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616039246-0aea3f04.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616039246-0aea3f04.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616039246-0aea3f04.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-C1u2CNPdBOMuSDAu5OgV4rNwdbwmKCPNfuZaptazY8P4nVTYr30G4/Ud4jFlFaUsnICddc1h/gnn1DDLCjIdRA==","shasum":"c3f72f0f201090a471e20c22f503a99a0452a127","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616039246-0aea3f04.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUs6GCRA9TVsSAnZWagAA19oP/0mSN2XvzHw1LeOy5zYX\nv6x5L0xNAuNsWI9mg9HpN3tW5JkPFW/+/WHyyd8NTPkBuycQaEYffv65kK8f\nEHi4wNRgHRQ6i7LYLIMr1zDgSnCkmQbUG5WoielxFKvOnTvq8MGUcWMMNMk4\nFTyvC24rzQXbCVBzLzLoUgY76WhD58SqVMvIszCXvOqpDR8tOI6dnt1r6aUO\ne2nrHW952kp8C633IeM1/CangYDB2Ed1WaNqEfDs9185XN8ErfGu1MHF9BSG\nd83rveF1ke2pzuwjJIwHYtxssI8dTAmIHw/w60wW93eoSfNkW0bkTnV5GlwG\ngaNb1WCNS9aftE//D0UOhboDhrOHB5bFCiAwWDmBPw70LYNC9OrlUT2+rhai\nxkeNBW+eZTdI2b9EFrUGu3ytQz8EvLKsvMdgn/L2ojhCLbEYAx32WVqfZ+su\nLE9uZ86niMXQtY8rfGedLHYws6ljLtqLdODiQGrl45PBN2wy/zmsJ08DEMVd\nTmPUDiLQka//Uuouce+4tJHXm0h5zefckM0XnI2a4E+tqeynGUzsaxwKCip1\nRNkAyG5S9gHuNpLLH+F51z0awFml1aOHw+CECLfZ5a+Qzmbk2mcunt0Qw5gz\nQXD8x0Ry1F5qsSowmGCELL/zUg0bw+qB+vFH1is0a/xROfM51pajY8tHouif\ne1Bc\r\n=SCrB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHSDXSYbUhMU0RRFinAm+uRFlpBenxss//iJroFIDHpSAiBEHfsND6FKgMl/kIN00HJcHCKAfd9IbIgQWxSBtCWySQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616039246-0aea3f04.0_1616039558460_0.995405979552151"},"_hasShrinkwrap":false},"2.47.1-next-1616039242-bef311b3.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616039242-bef311b3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616039242-bef311b3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616039242-bef311b3.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-oTl0PRNgBPm2vIc3jmkjUVYVAU75hawoihY7sd1L6qcjfKd61IWZmyIg/aeyd5c/VP6HPwljFjVRGS6LfgA6Tw==","shasum":"6ae6a1e53bda7173bc2653016d590eb4fd0f3527","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616039242-bef311b3.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUs6oCRA9TVsSAnZWagAAwuIP/RBY2klKPcQDVEG3RXc+\nXBH9GztrYvEV0FWkmHut7TQyZzTtOJovYRJ0cEaKewRg97dMl2pR0zI4r7Qp\neaXo9wZAEKi7mnLYAw4nt+Y48dN7eL+ByzcnjGKy+oTxLDEvREIG66TC/BO7\nQ0RqjanfdtXYjQphyOopDr4oMpP39BWdA2tkL3obulm09ANkC6kPA35RZu/A\nS4eDo3SoCB/ErIbV2VKoWJh3/CPg80DV0Ecm4D0ZOjxi7z7U4huwe8AFBpHu\nTPixU/gd91qBTlOcT2Y8WkFxw4UiGFcMvtqYCXvW8sU+kJ+zGNkEgJCu4bAh\n2+QUbNw+QPinzVMZxALK1JKwTjKYww2d1ULj6FtuIV68Lfo8Quuo1yc3he2Q\nWjj2x6+vODqZjuUn3UbBhpcsmTJ9Ty9eVeNOvIYfjsBCf6lv2NQ2oQ/pWgZ3\noX41PWmsiKSHWmBlUzILXwA0y/TRCqwpzMjNG5A7lJm04q31zPCb9Z6OqMob\nTpekOJUKN6YslMn7MroZUfV2WfcY+nM1JKjJG9uJcMwnYUq0NU9zgURk3v0N\nrbMH91DSC9/MoThVCU/P7fRgwGFS+qLQkVgGayMWcOLXeqmbcJxifUvb/4Y0\nHJWZgDO/UAk1GJNhLbO726Zmq+23/V26Y2uXM8b1rCAiPfmajes38rtarjkc\nSU9z\r\n=Ju7s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClxcIaadmr7tXqddHooS3KmKg3pP1cjIvVSkAU/i8taQIhANjoAIDovCcwmj9wtN/W3sGnv0SbC+Ax3tlrtQSt0tGG"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616039242-bef311b3.0_1616039591786_0.34828684658842257"},"_hasShrinkwrap":false},"2.47.1-next-1616056579-410ddfa6.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616056579-410ddfa6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616056579-410ddfa6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616056579-410ddfa6.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KPAmAk77dQU4kBZOE25Co2xByOVcxpcP2FW9c6SEs3MDFFsmMB9nUWgWfxPA1wZiAgSILb4kV9sQvkCqXmFFLQ==","shasum":"621fbfa6c08dbed0a7247195d34efff111c32684","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616056579-410ddfa6.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUxJpCRA9TVsSAnZWagAAtZYQAIzbNG/5pb5tmGH74cdY\nOOFJeg1siaFn+mLTlTA0FUPLekBgge7M606JimBhmTCem9DcnMtQbNHSNBax\nfDc8CDZSS2c8DqCORqrClPrC/8lGkazj2WdmTtBUr8f1bRCtl+/HoTVBKcnB\n8vG+xokbz1i3N7yYzLgZE4rEymGDWNlsgx1tKqCORsT3jU2+q6Qf1HJhxAy5\nrslk5EgV6bSpq7JKUmpIuuetQRUl/vnVjrepM/Ph/v5A7nY6M9wp0V4mJAua\n3dvpBFveoRGRMPOQCDpnjbFrj7ANge5q/4uj2xroWNNuy0U+FGr5gUMVwCKq\ni+oofaDrpyTpBJG9DAUW6wcjFoRCyvx3/1y+zYN53cOUI8tpKxCh6JvWGczr\nghEsKnx37OQqzPinosbgSfXHLXeeibenvnM0sIh03d0wh5TWojSD6z9BuBE9\n/oeuF5LKTwNfkcyz/hv9Ul1CVvBGUogTsX7zve9qyHFh3Pcg5HWDVrlEJdJu\nCQVddgva6S5T7svmaSWP6EjW18xr5a4WGRgwZ6Skiu845c27FzABSzUX6nUs\nis2eDnJxzRniE6ufiRJIkKyJFABrRRb9Hg0HzQ+2pEk3YNow5If6rR36ZMOx\nKeCd6onoPq32DH07wVu9COP0f4A0IskmgESybCRb01MDTLev0+jWlNbvTAbq\nA8eA\r\n=rnjZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIASz4vWv6lZffReZvCicSEa9ReIPZLiuPRYtrfQhDY6PAiBD81+N3mZz2e9Q1nYK5Sg0emgMyjFgeg3MGt/U8qU4gw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616056579-410ddfa6.0_1616056936886_0.8937334042865892"},"_hasShrinkwrap":false},"2.47.1-next-1616069517-6e3e0aa5.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616069517-6e3e0aa5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616069517-6e3e0aa5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616069517-6e3e0aa5.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-GPg0tSzKxe/7kgIB4Z0+2dDCUy1JbpDzhhQZGNVSeZoi8UBVzwP21373SJKLOpvrqGwsSc57nbXyBew6FfBCeA==","shasum":"9539a45222daeec950789b4eb70d5756593aa529","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616069517-6e3e0aa5.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU0T4CRA9TVsSAnZWagAAnPMQAKIKSh6Xt9ZIaGBV44M2\nIneSpck5PsnhGGU9LoPPAQhwLmvFjEpojrQa9OAzG9w+xKVy9kx/Y4SrMjHY\npm5aV0AVH8sm5ac0ty2KSjiG6U7WRaB58h4zcvk++60yDz4UPhaTVIPG/eYf\nk6vwsMeB4493urSt1r9JSPLcSfFVdbuQls/aLi3uJbnEmsC7NFmEc43xeS4o\n7S7Vep1lh3Q1kjPoShbu2Pu/0ReZnsdW+S9/iqr96FMN4ySyId0eGrhXV6Rx\nqX6HimoZmHm+IrXcLQLf0jpKRYamADWrNHxuum52KQol1SxBE925bFbBt0qO\nm9YOFvTOXbunwaJQS3k3PoXkM21tEjuc822ktSlYco1cgwGrqseTdW/3vqbz\nfoEGFeMtY14qbKvOSVe0PcsAMfdxYgAXmhrUqOwP7SdixGX0jSuBaz1hBWci\n6CCW7HAlllZ3ucq4X0rEN57vcks0Rek2zYQ9cOR5obKUxQmwjW/jP4gjWPSW\ndrROvKqX2On+D+hSItCEl6y2AYQyYjGjItAx2XQV681n+iuJ1bz0dK8OaXKA\n43g+V9pkKBIiBRcuWbA6Jam6iHIw2X1i5QWUprKmzVqrAtsSpd27DltsQ3Fr\ngIJtqiVcMn9CbPpPFjCelQJrXsKwIOlx/0NuMrygARg8tiPyjJ6ChWbgXwF4\n+yYa\r\n=v2vr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG633Zejx3rSZp3DDxRjd6xmJWtTQARufd/cwtwFSO7OAiA32XonMr/4BmQ3MrFlOrrcTtWFavN/p7pXcEZtFhj7Lg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616069517-6e3e0aa5.0_1616069880332_0.6133840144911551"},"_hasShrinkwrap":false},"2.47.1-next-1616069757-cffe4207.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616069757-cffe4207.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616069757-cffe4207.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616069757-cffe4207.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-k4PlyKwtyS3jRTvQsb1g40sLh+iooHM6b6B5RaP9VmNHaiI0418gqV9ClD4E/QwcrLwxL2/G11flOsxGKVTF3Q==","shasum":"067c8684e9c040438568710f5e7255ce87970ab0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616069757-cffe4207.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU0WyCRA9TVsSAnZWagAAcVMP/1zfzCP0VvjNg1rG/Viy\ntYkIDo5ht6IYUvB+9t8ySJICk1Hsslr9QuQuTBm+iXz+OlABrBgQffYM5HVK\npCdsik/KnsLxTWLlVyLklDQmZVXm9EBKFijwyKRjNvDEFtr9GcHCCHXwkX45\n8nou4hWl2PV7WtdgStZC2fG5RCs0OTz6hAOIsFkLMa07SgK1bELwAYV580tN\n5dTOzz5CYzb+gpqV25OEgIRxUik0d1PsIHCQm+9fPV7Bo1gohEM4eciaL3It\n2koeOxXYnAh7szt3kYQ8lQSPxAw7J16YYPMzHIyBS7xSGA2sdfa7QbzVnYpJ\nnqrdLLRzmTLB3jCaG8SGNpsexUS0DsSgLu7jJuohp38PVG1tKr3CA9bUsSrS\n3xd0D1jnm2nsKWLEXYLVlwv2oPSU5yurmCx+UV3DqnXOtAPcXGf7EWE13lVn\nSSQvwa/4RmTxKe2RPty9nDOw9XFCODFDpToRjBnKIeoHj9Cl5Z0TkDQSS2zc\nqAkZncaLJmVpOKl28TSh4pQeI/CYFyCFOnzxJMFRGzwVkqJ6k0UBHSl4wGpf\n3tsrXd5pnMlOtOOgELbeLlX5w9e61eZoyIELEeUbhGWRa/3ucKSUIpF6XZvl\nyw8XG8vx1wS//mc+t3HpVTZwQvadN6YzBtUtNONnS+xHkaeyxyM7b1kz3Erc\nyEQW\r\n=ptkC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdGAEnzoykr3kZKwoDMQJ+cev8ubSSm/O+wvaJfV155wIgDFgJS3pbVZcxz1Nwdfa3mzVa98j5ow0HarXJXlBoeHQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616069757-cffe4207.0_1616070066241_0.453417984341385"},"_hasShrinkwrap":false},"2.47.1-next-1616069789-ab5ea778.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616069789-ab5ea778.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616069789-ab5ea778.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616069789-ab5ea778.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-vex7ZGpa7lsLYHzkvuEMB1ABoW42R5jrLtJtRCWnXti8/zb7EH53zuSElHh4P7gS4ePeGmGfJauPgVsIrQO4bA==","shasum":"a896d2ca6652e786324b69c2dd884c2d146c6f00","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616069789-ab5ea778.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU0XxCRA9TVsSAnZWagAASqIQAJBriVFVNUjML9fyLHqF\nbZgyxT6ZE6+nlMblY4/aV33OVDtEOAbDXjMOkFslySqd6y5/yjrnN5427Sy6\n7MylysAyr/E90Qy46NS5J/QDR+5d9kM5V2z6rfAd+3fGi75jQRUfj1eDoMsC\nUWQeAXSAIFn7Myn1T8xTk3SG67/irkQzvvbWmuwDb56a28Jc7wPXSiECJnBS\nRpbXEYOqcGXmW2YaJcfpLQJjncVFb0uJEyrh+dtVW2e/GNaXJkqioMX8wLR2\nY1+NPMMtsd9lnWzo9poX8hWAw8N89lnVxv4wdtxsf5l/DkVed2sLUOOwJo4x\nEzKluQ/rXUXvwSEqxP7c25ubOfNGL8//T+F6savrvMl95oBGF9CSKx8R5Xpp\nMWsEIJBgvc63GSIDKb8mZv4+1hYFM/uygLCIUs0jQCxMKxOjpanQMDFEQPLX\nxp5IppSQz3VMsZ+kutacidjF7XFf+0FVV/FAJr3cPrLhRcqXFcpZlmvpy+v/\nKGrKCHc8aNPErEwZVIWjPTaQf4mWHBWqbpRCIYpXF6mSF8SOH/lXWDOQJq+L\nM8nTS2cAD80waaSK0Tecqnkxc/VtGz4teGROQfgNcaWVE4y/L6vRQLNmCj3F\nTVSfBOxcp2HT3QU+VK4Vh0UGT7CwMfQsnRu2yBp2UOkfmdJmSrf3Ujdv/L1a\nY0le\r\n=ItSV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+q/iEL8Jmp6kp04FrwhiacFowrOwXYWt3HZRFP7jIQgIhALY/ZmgPOFcoPYOJU6p0SXIRWvjBKBuVm7JCmK7X8uA0"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616069789-ab5ea778.0_1616070129182_0.5462986462076025"},"_hasShrinkwrap":false},"2.47.1-next-1616075386-898eb30a.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616075386-898eb30a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616075386-898eb30a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616075386-898eb30a.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-BuY/gygv7aSSOPyMUcYEXQrT771rVZF7pAjTNQgQyeBd/UbN1Uy7QaaYlYasQD27+sFEh0Ro6v/1MnK/H1XoEQ==","shasum":"23ff3221bd3bffde202fc6f9cf9af8a01d986a9c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616075386-898eb30a.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU1usCRA9TVsSAnZWagAASVMP/jpPdXRIycvmZxNC5lSk\nnbPwGK3lgLuOBoaQ7B+o5elYHzYdTiyCDyX18w9gDI/D+jNOscg6O5s3JJEi\nFr2fJcKS4FxZVvOazGZYK+gx7vQZqPJ5ZTuNWg99lrgUueMw6RxrQHgZTbq0\nBInbIG1PASzhVthNZpYlY0YO/Dqk64YVI3qZ36pZI79XV1dgivERZiR+BZU3\n64pWexrp5GG18Kg65/wQuIXnGiRM2rclSbPG+p/tWAexh2jgVK2M3tFr0o2q\nYdDnK8xuuRipiMznXq0OCS6fs/bPed8xlOiYOhJ7lq1UUU5toh5mVHcaVHDV\nr0B3cTEMgHxz48H7K2JzWopi9cQ8VwzLB4skvhL3e2erujHO7lOirnUsHuww\nectNL1PJaOsWf8o3QVFyc+IMt+RZlarZyTbvfyQQhJQuaFO1dU77k+wh7n4U\nLUvLTZmjgNs/RxXi2FGNmqlcs0fdMEAvOHQ4HAu6xyF5RXHuzti1fvcnRiP1\nvuNqWF5Q0cNbUqJYcs5fJLSPRpTeZqoLw3kCJK0xYNHnDdqbI4XA1uoUvoNh\nVlV9ZAsuD88L2d8+JiEpZZNa/T433ygJk/dRWRPDiEybubsVjAI6EIt6fhi6\nR6Ghy3JsNQQZ3o61VfizvZxaa192py6Qx4ufabRjwQMaH2a+HJYH39t9syHA\na+yO\r\n=Ep4B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCM8Px8bFnqD4e/P3Nw2ze7cJdGnw964Vo4swgqI7fQMAIhAPQV/4+ntkDxkwS58Tg8ho7MhS4s3G79HEWpKBOF6uM2"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616075386-898eb30a.0_1616075691592_0.3404875889437473"},"_hasShrinkwrap":false},"2.47.1-next-1616075866-19bda89d.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616075866-19bda89d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616075866-19bda89d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616075866-19bda89d.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-9NObQdhJt0GAffRDkbsgsm97yzx1r3U7WiQ9Mx88u3ssHPGKTDNf5bObygww/cChqtGa9a3AAIaz/2I7nyR+iQ==","shasum":"51ed144e37100af5bfb8b7de35cfc0c98b64acd4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616075866-19bda89d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU12qCRA9TVsSAnZWagAAbJsP/3XiTXcRQ/JfK445FsNC\nQ8lLtaW0O7y/WX4DMqBel0wf4aTUkK3QmL2PpgnEdlATgbkMV6KCG3PbTOtU\noPKQdJBttf9x/UFaqmLU3Zzroig5DVfj94w044OVeQp4opQ+GAvETBU6DsLA\nkjJtuGk8fTwz2bLeAVUhfW0USv5d41hvnK9Itkd6N8TFvkkXI/cH0SnqJSmk\nlvpQLyu8jIGKPwGlNPaBlOsMW9TmiR1wsV7CTqcGFJosxGzrvnyK5nwuXbNj\nX15RnsHb/vForlkgRZtCTnccx2wXcYx6AGGpDP3yUqkrGXK/aBs0IWVym2fI\nr80aT6bhLUDGTHvHRpqwZTpH+JtGTplfk5efZztmUBfQcjj4qCxDbgmz4Pz8\n+p81tAF2ROIQ0xQkm3BK5Omct9Z9BA/DpVer2PWtbcMC7Ddcn5+UGk2MAwK7\n/4BmEt/LNpWzbmKKkWKEFnYSrqBgFM8cshyPtFUZAhl7D2gDR5fPw3h7tOCI\n678uO1bsilui3VA0CAgUOlkfy3br6TN+Jtv0AHYiBZTLacj8ZSI8M1djQwcF\nMSlMskm47PVJt4kuAvTcycbLMNq9H8oqhZS7ZaPH7KRHV6HTUhPGlWoREtJr\n4babVOS+TM0W8G6H2lrYO6H7SAob5vlqFSCiPKWWwFpVxryB/+VxmvYFcBFC\nfnHY\r\n=ewFf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaTzHJnyrbikTRSHjfppBIXC7xMBS/8ZJdTDAM9R1+oAIgbY4Jgaxfk+PotbNLrU9QxDz8od/KLKE0I5TjxKU9tPw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616075866-19bda89d.0_1616076201528_0.2959029533359483"},"_hasShrinkwrap":false},"2.47.1-next-1616094204-720ebdaa.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616094204-720ebdaa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616094204-720ebdaa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616094204-720ebdaa.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-sXEIyTUY8cUyhOdGKFuNchw3CYrvvb++ioMXY/ghX4X9gq3lAC7XQjFF5NBqjbUWaHfROF4lLe/w/dRakhKrYw==","shasum":"13c0e3f49453314a0f2044142631cde021b321bf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616094204-720ebdaa.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU6UgCRA9TVsSAnZWagAAgeMP/0GQNLnvEPmu82zOSbKt\ngj0dBohqUXuRdI38QI4/lN6HcHt/d7ulmV7mjliisg6qgxq5iRd2oZZqeZy1\ncHmHV0w1Y2U9tkBjSlhxNFapCOW3HdaieF+GaSJoHdR1k0BzggtiK2EXbU6K\nQ5JfUsJwfwp++KydN+Ne61KR0f8BqlkCaXYiXqOHmn8zb1wjyUb475gqQFTI\nBo8DC3u5qlElguhuvi4xt27mgMcUxXySwLMa1rVYsEznYvztWP+/ZrTAGKSx\n23CPj/lBNCZswU47CNRi6pWppkSPilC/ExtKAB/RQUnnCPOVxU6t+z8iQyNz\nrcFdQ9+iabq4fNGSLcpn+EjN0JU4VG0dSLQViWr+guzOsgd9AmmbSd/WoHN6\n2U5jhgSWz3TbPxofKs8/U8nVsLNhP7dwHP6+RMGaLBZRe8QFevUFA9ykuSwC\nao9e50YKFM5TE5tghg7I50gaK8izpLogORuxzq//xbRLQMTAPpDUZHp+ix++\nXuNJL8nnsKUIMslilNc/JBeHVwZCX/4FWJYyrv4pjeJlhR4VRzw+awY2c+73\nzSECb4TYXCmu9Izio+xpL4OOeFNaml6g5j6yDZUEH/deUKiwMjzELPe6CHUA\nsuDaVv/R4AIVq7I22udakM8np99enbnSsLfdiqwso3CQDBZdtU6C39Z+nGIO\nxVcX\r\n=K9Dm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGOPbXfumhGhUO+ccWtNCoUbEHjlkL9nA4kaagEDbugqAiEA4eZYx+ZNGZPTdSvP9Sy22bdwc1kf6HerVPQXjnVPUCo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616094204-720ebdaa.0_1616094496434_0.3326310490065645"},"_hasShrinkwrap":false},"2.47.1-next-1616096371-67d963ea.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616096371-67d963ea.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616096371-67d963ea.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616096371-67d963ea.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-1bksLbVa3l9lQ1I5QANpZNgMy4HZ2rL+Axc+GX7L8gpdp1VKfXIrYXr3zT4F6SawIJzgMfJHLVKbsReMwJJZSQ==","shasum":"cefbd24e5549d9c9ddb7b281c5e7c0a862027756","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616096371-67d963ea.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU63mCRA9TVsSAnZWagAAHXsQAImDebp0BUZo34nfnuVv\nL0pmFSGOQe3TCqK27llf/2GTMMDo+uv0kFDCM/9dbQ0dP1IB8LCkUbTbJeob\nMUzfZlpE3d1UNvQfgzXEfbpf7MYtJlYe3IDpWT98WlOcYwv5wMR7no2hF6QK\nuHKNuumyG7Nh0WDKIXC79TuuiaF8Y+/DUqNNWREkmKHYmYsNuxJFURC7CNSX\np5Uo6RFACa2DkJ+YJA3vVBgSGUo4tAjyhpH4h5qb6QYyTYprQkuBesf18o/U\nIuvSdr4SZR+6YgqKPz7LtRuYMkIuEvq9Y+gn8aBou1mvthgMn6BW2SgiuEq0\nVqBE33DnkvAot5BZr5597Z/6JfyQGI0nCiPU2eaxA7BLoNsWihJJky4CYamS\n60b6y4rraO4H/cHX/yxuCmn1F1WGOhzrTIM3LXl5n05BOUO9ePOytMBPywRy\nPtokeRUvRU0TGHBS5ybXaXUw1/YfgkYTNttt9ijberBzdx7UfNwPeZO2dQpt\n1kYb+zMLDUjafQWmSvTHL+qnsnnr4vruJe7LkGJWd1ILqh+jKlWGsPD0GdLj\nSSmDmZKDuQXVktMfSoC44XA7kjMsT/zZom4xlWSvS89thXS0NAu8Afyplxxa\nBDkp7KHFvSj2vEGBZ9k0v2roEFsCda8IaRtONZA9AB6wSuWI4Rqalc9TxoGi\n3/Y6\r\n=jOkD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzJ06ua2oxjp8bHrgcgP2tjThUMQj3m2o4x2+5FvkIuAiA83mQ2YiLFcFJq7ek92eWSFt//acMQePMFCaktoBdxUA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616096371-67d963ea.0_1616096742283_0.8736054320381375"},"_hasShrinkwrap":false},"2.47.1-next-1616097757-826115f5.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616097757-826115f5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616097757-826115f5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616097757-826115f5.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/QDn3tAXlKF6sxGvT1tnYbGvyob/1gfyXGrUEt1b5NUr6XWFCDYMhHzz3yZGj3wPiaKyFe9AvSBWUlraLOT55Q==","shasum":"dc1f96a247010f56dc9dec6d3ab3d10f8ddbe63c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616097757-826115f5.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU7MlCRA9TVsSAnZWagAAEEcP/0yUMhoe/E3MdGv8pm+U\nQlo6tV1VeefuU+6Oc7Ejk0Wy3+ksXexFO6L0VqW1kBSzPEgIAxSatfKziEz2\n4n6BFRi9yl/gsyojZRYGYhfXU+49KjBUUkvtGHDO5CGdP9iyYRWXFbfvI5ZB\ncZobPgqh4ahl6CwclXliiKSZC7wPGfoTZg5kEWQOC690H7mPsNClEn61waJb\nRaqWqekkI6QSJeW3FAYYFnWUW+kxUW3YMkgmjTXEotLOWws0XSHf+M/3QkYU\npuBQb2RtVmAF54lEIRMW6tdVQWYeZiGSkL2CwtT7UtWgd39uEk0vDbygzQQS\nboQyHQehjmZladZ9J9B+PqIQKBYPWMC6Nxj+FqLFfjqLZWasF2+Oz9a93qch\n/g7kjjh7JLBe8iec8eylfil7FmivE4c6jirKSzGWG6Ei7sig7jwhaWzKwBSG\nerYNXZvSwjSCle07/rZlljfp6twAD11GFUo+9iWZOozRVhIUlDmHmElIxQkQ\nv1D6xiDbmR7w1rHejrudfmAqmKq+bROMaJPn498egGSp6IwvII0dHTOQimbR\nmECgTFEa8xNTWZb+DEomZiZJEZzNC2hTQenBYlZB4AJ9IgR5TdvpGPOh5bkz\nb3403uhMDQVAk+XWw5Z9pRii2mSPiCdoZ1FkKnoQ97I1NrcXDZg/ElS7GVLD\nP7Al\r\n=jxHE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGwCAq7TxfeDcglxpLQ9+mLupzq7AYZ/3t9pCYoDZeqcAiEA9VtjgP8qUNDC9xBs8tVqv5NcuIcPv6n6pxLrJNIwWRk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616097757-826115f5.0_1616098084694_0.8271621260655584"},"_hasShrinkwrap":false},"2.47.1-next-1616097983-be28c9b7.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616097983-be28c9b7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616097983-be28c9b7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616097983-be28c9b7.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-U2RU+iJrli24EXj0sAS0JJgIq0mjd1pg1H3C7uSJk1dvFnLT8jW8FYlAiXt57FwEEQeJooGvglQsdgJwV5OPVA==","shasum":"6dfbe3ceabd9a98301d69f25c1b936697815ae6b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616097983-be28c9b7.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU7QzCRA9TVsSAnZWagAADWMQAI0TR9kG9X+HzkO+9caH\nLchvj8WTlZpb5iDzpJ+JTBZaWnT5naue0oEyPy7PJe21Hj40yypV4i67eOUe\nsAUQ4UtWYE/6/omJHKsVnFxc2WTtulUN3LgZtLUUP74z2zJoxCW7jLplfwgg\n/8Z/mykhVbdn7gB4IOoNFotR8iCSIZM8ThANpnkKqR5cbdfZxcWase1trCMk\nmlLCGWNC8giV/Wtuk3JqCFxrmuhv2hXfi1RFprNtOwzv9hG7cIF8ZFsN198g\n+s3mFOAkw+RFNAnNS0ktOPLlKGv3R4XIXr3zhcJpaQ/0wWDMhz3JwjHmzvjZ\nZdTIPQ7d6B+8wBTsBUpJpgZsJDqWukPZ9ThNmUGiyJ1m+AFwUmgrCYolGYgj\npdH3h6IbPeWk8cQSag+yMo0V9Hz7PAsTVobidI0gJKkRPOpw3JRZ1qGQSO0a\nTSXZwFWURTefmw1CRv/x5RTmcTcM9REq/d/lj3yB5Mgqi9lbvliIN1zj3v45\nu9chNLWLlg/QGOYQ4cErmXkQ/zr5IxolWltxmN/4xvjJOSw9rAs9qk75LrG+\ncJVv5y6tb8/kbHVF0VYybWjLlIQuxMqkFccJoFBSk34+PjLYwzqCTcNwgoQG\nOWtDSoMFSpaYlKo6EzHPPkIzessftR97V+GgWpk/amSjYH0xqT8/7W6JTg3f\n1ki0\r\n=ro33\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnCm3k89yWnUkEoiGDpd3gJpnZKS1QVTW5VV2f3o8mJwIgK4o+m6PfCoGhgnMPTr2ZkE08y9xsbRO3hFzYpB5cALs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616097983-be28c9b7.0_1616098355309_0.5288290397427737"},"_hasShrinkwrap":false},"2.47.1-next-1616099330-826115f5.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616099330-826115f5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616099330-826115f5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616099330-826115f5.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-OQEtX7GxFRAxVy2IIpjjC59Xaj955lP/OJFYbxzXYIOxKhdZCicrh224gdSY2tNSOYkaH+dX7Wd0E7GOcXLk8w==","shasum":"83e97c98eaadaef8300865e4ebda688873f327b2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616099330-826115f5.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU7l5CRA9TVsSAnZWagAAvfwP/j4OsO5TPP7Lho4WaEDh\npy+vZXltmqfUVbTu8Oz2yhX4ae1kQOPJz0CfMBoLFJ2UD5Vd7NnzarVfgtXW\nHrWN2Pr3QwogaYo6ew6QWNxCCnUuefXMDs5M1TcCbxf8r3O8BNf0Gv4JdR7x\njllZEuRUX1Cv2fwwS8FDGkjUQBtdWhB7BVgdeUZ+ss532XkZ/RnVMMZzbTXf\nh6Boob1oRySU1UpWzYo7R+qp2+8aXkvECgSxzY1sXw09aVkLUT/q2cjEuwR+\n6fiTXGLRoxYMYWWJn95dRAZYVIv5Q8OqGP4JNhEnqeB+ykFbciJfKSf9Dx0x\nqaQL6FU+D/0doYQA2PhVy4wI0pN/fXnyx6+cQl81xrxvcTbvLp68jmcuc3fU\nimpExC+ueGYS1JhUp8Pp4sT3HCWr6rwc/22b73eCH4VcFGFttd37ENaBlmxX\nYVjW5e7dYg8cZMYLZF3hZ4JF3FvBzKElcImlMtKf0c/e4jrMJTEXC/fFOlas\n8NfiGuRZw4kFfyThlRkK1nncvMaF38yBhi+uOlfE0AXVnWqgmNamKRs5rboW\ncL7ZJLgZFXJceyxnmMXyHu8rH61aX9ZOo0BWkgkI8EsTZ+LASSksd6CBrltw\nLIkXA6ULaYDSRpe7H3RWFzXlulI3zSK3EQQQm2fJJj6I6OdDeEXLsX4S/h34\nT9Wp\r\n=Rccb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPzNev1y6e0eRdTtiEM1Gv0ALXyVjfL4+cKiR7tvI+gAIgGgjM1pKP7TsD8ycgkB8ylkxYUddOlgKd1zncM4jQfL8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616099330-826115f5.0_1616099704844_0.9861225152440223"},"_hasShrinkwrap":false},"2.47.1-next-1616101160-2bceadbb.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616101160-2bceadbb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616101160-2bceadbb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616101160-2bceadbb.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-7sfdN+v1HA5HRzyqHVWhT2nfY1sOUgOWusenEftf8+9R/YPd6i+RubfsZ8s28Y6REaGJz+t8FWAngrX9jw8buQ==","shasum":"ea296cae22c0689768688a8da639eeccc7af701c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616101160-2bceadbb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU8B4CRA9TVsSAnZWagAA5X4P/1YdEK505TZ+kH3oU6Qs\nyijmcyLAeZaHjIWmI5cRlOf0uJD/qPXzTtXKzeVE4pdykdy4qtvW9NOWRcQZ\nuIFZO9aEw5oZkLpig9QLQC2Tdp4BFhYLFdbFmRokpmGcljRZfL6C14iK4yOY\nHgA9a4pmVn/foRPDfEp9mExVas5+h0a/GZ21sigAfD8UJOVvtXjBMjn4c0I3\nUAHdUWlblVaqEXAHWEwsxipKgCj7o3bosCLlcZ2xa31Ax1PNyfhbqi4vqJux\nQjVFlPrmEyljX13h25hUnq5YZCC4cGjh8tt1FeZwyARUDoEMRiRFdXrKv3MN\nGxN57LlyTIbdkzR5eHXiJvqejqlLWsGzv+m3a3ZhXq5qQtyioTkhJmjU6CGJ\nsragUu8niPMh1QPGegGE8vbNDEQSjpqkqPz/CHoN7Hvk1DUaGgmrIz9JMItv\nxP3H+NwhW94qK3Psd1JsK+uiNc2Unb3ahRe3CSOM+R8bc0nse3LFhVSAWVDw\n2gTxnX2rK6Ecek8wleZccGvARCVtHSK3idWsecxQGnJSSwLjzUKVPuk/L+s/\npJIlRnsNolDA87apZLwb8MPmWEsvATMxQHItYRy03YzZkb+d6NXoQtnE8rBs\nJwYFwN0nW8Or9gzCkuitx3DIuz/QKIwzRjfkoeVU2GhkRiDHfsAcw1/u6jYb\nTom5\r\n=zMIx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE3FBMGqGYzXdzetA6ZKTtYeaDXtCOA3K1hLdvy/RcxfAiAIG+I9IHo2VfXX6rd2gLZtUhuTyxTeztBNdW7+KPFd3Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616101160-2bceadbb.0_1616101495673_0.37337042673233944"},"_hasShrinkwrap":false},"2.47.1-next-1616106252-f3442a52.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616106252-f3442a52.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616106252-f3442a52.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616106252-f3442a52.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-QAJgWffWl2uHTdSstZXNu6Aetld7X7Q4wkgXM3QhWwOC7vFuvjBapmymbgChv92i06Mx2na0EYyYJABS3BjDVg==","shasum":"93c672ba0becbf28c2665895a5f37550d7175594","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616106252-f3442a52.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU9RtCRA9TVsSAnZWagAAgQsP/ilFl/uqCNhASFePzcdF\nWPY5ZEaWTbPkkpIkm6BW0fwON2De7rCQSTDO2o81ioGXmqcwHCb9V9uxWGoN\nI80kzj+0JTsj3ocMdOZd8LUW3RDKEmAT+yONT6sdlMciPhbzp8hEiccT4ilT\nSRHQ7NRsYy87de7CmhSSwyLXXUmXFXe72oks57H4rCpEn1HnwmB/6efugsZ5\nIN7LjjLckEV6YMTqtWZuLTVpjxx3WfV3fu92qoMHi90CWm0np3FXzw+N7KAu\ntXbesl7B/d5eLDNu5KDrMWzq4B7b8MU+9K+uJaVnYzNGYeeSafwB6t08eZN7\nGT73N2hhhJ0VMUJdTkG4pLO7BNeYcUjEP5Xs4hSL+8C7LRwKxKuKhgKnluZo\nT24gJR1xC8SLfVV7mDgnDqI1jiSk+M9JKVakRmvqITMpLLpAZK4pWTwTS/BP\nLpcdhSOhVICTdevBueyOjAqnkHF1KlyWZNTlrcQlATGN+TL1iLc804pKi5e2\n1/91UxBpvmp2Q3YGSQoO79GHv5DVosQ2W82QXOkU8K7rZ8TGZXENq3eVX/mC\nH/yBottRV7/CVImSrfhVjZsFZT9lVYKteB5cTsV4+igMdrfE3oJSdpKWUP8d\nAoAnuht9o8O0tmVM0Qkh4NuaSYtsvh02GTe5iSdIjoXHVhcYPVfvFigMzJ0l\nKRr6\r\n=8yXB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYoqGL7jFdn+Z+7vljpY1LqhuyqybrPDUFOl+cy87gXAiEA6LWAmKRSS5i6RcGglvqk3U2NaINfPW91RSJbRl+k9dw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616106252-f3442a52.0_1616106605061_0.7533976991286635"},"_hasShrinkwrap":false},"2.47.1-next-1616118775-2bceadbb.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616118775-2bceadbb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616118775-2bceadbb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616118775-2bceadbb.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-vlzlrgdAAsVqHueIh8T4ZjOJ4kGE9sJGehHJiTZ7eTicBURIGwPEScI6aso+2wZNqvUlvCOOSEmNs/7c/XTBIw==","shasum":"44c62d554a5fb97426fdecb512e09b7643acb0a3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616118775-2bceadbb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVAUyCRA9TVsSAnZWagAAPIcP/1XfFHPRHEbGHVvEf7mp\na8GzcfEjbWvh/JUMTM2qoZ05hCrQeC/mQVrEFweRIwHfRLijGDJVJKmKW0Ia\n39BRqIgWbM3g8LAEX/YMxMkunF6nYr6WputgcYKo+J8DxK24nv1kWK8NOxkN\nhonuIpoM4zOSz7tsIGXocLi5vtzwGyA2WrLJTnCqw3Aek/vba/jDcwjWhkeu\n+XuoNxDIeDh0NyiDxNvcmiij7RsIxGZqaD5mGuERzFVJ4MPJ/WOxvqs1IHy6\nnTze4Cfz3DpTYi5MqCCmtINwzWg+QlQzUEq0rYxz9APDDAQAw1AiFP+dsLoZ\nPwJGmeNmeDyttsGLCWGX5pYj+Pnx5orEmFgucQAw150cxokQibenKYVgw2CG\n2lslHqIFDjxAi/5MxbqV8OhSls7K0z8n7/RYpIS25dAmAbiLCX55StTu3YVe\n4X2PMKykYcBv6A3UO8Fo3+hfT1TAUWL5Ox6FO+051GU+YDE5CvQDy8TTjIIv\nbpVknO/9tpmsg5LL+77IGeTIbSLYEXy7d1dvScPvpCXI1EfeBV2fqvqOOVYz\nzJ0WC9d/9P2aZi1gYV63hD4kUziGhiooqOxiGQnD6mgF81XNqeSucuyec3iG\nSPVsFQlegj6ealB3P2BTD5ka2/tXBfyld7/F26ERl8HNxweI3VVCFLW7tkHT\nDHKt\r\n=oK7g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBxzxYqnlOBmjyPHa5+a4lwOopaEgN9geDFDn01m/+VAAiAQ3+JNeUCfyECkSDMChQZTUJ73buWquj17JDn3eGls5g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616118775-2bceadbb.0_1616119089527_0.2952403565338906"},"_hasShrinkwrap":false},"2.47.1-next-1616119482-ef906b13.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616119482-ef906b13.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616119482-ef906b13.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616119482-ef906b13.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bMBnh4L40huK70OzPwMdiVPsidyol6EPws7/i57PJx1en9OylrJ9C0HNaCiN9gljatoa+L6p/CudbCvjBFGJpQ==","shasum":"bb266a6def1e7ed5fd5140461b82df20cc2d5a11","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616119482-ef906b13.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVAfyCRA9TVsSAnZWagAA5ckP/3itUMf/6KWLV5jjjFkB\neRxRk4G8EkbPsBzDNCSjFjev9OM2vb8u3AsJN2mp7zbj5yzKVNrU7IsINVTT\nRgnq4YyLCU7ph30niyanNo/TZ7mUuBtvANiFRZ3Lsrqcow/A2C+qwvh14Don\n0aY4K5+4Y8I0tQ29LRKVadMSXz0Vo8OyqECV/AaxF85vKJAnxOw5Z/UHRUNJ\naD3xAxc7aYaBNZo2Kg7/qTf24gpxF3+qLuomZVSti+nBg5aFGegv4eGvegcD\nlAhnXkzIBvE42NHSb3Z4JtvTKkwBWuG8Roy655zrJJ26MP0kZFs70XZX0lu1\n6gGIQBQRG3xqF9Sy3BO2hzyObCvEskJWBihsJ6OFjYGGz7jdVNGnOsjYojui\n1SbCRK+H6drosOT/qe9FAa45KHCPn9O1ZNod0CIbZWvFF5eQ81y3+3Lgqep6\nr2bsff4lkWzwegVUU4RBCyy4GBpbToIL3LbpyZgmwMBpqugH6dV24lssbGhT\ntC2KxvCyAtNSlmow1syfyNupvtoEum5W9SlAf3A/wpXFUuO6QBcIx2ER81gq\nCx7pL34JcY+sKue3jcyrgYp2hjj3jaI63oWcE+5g2J1yp8GzeM3TeMK4TyZ+\nXpk2NVh27MaSrw1l2XGSpnD+okCtg5EgaMZY+967z5ttDTrcIcHHhyM9Lw9L\nJLIn\r\n=qTYz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYFAe6U7CHnAJzigPYdSIdlFALpdenuTPmmCNk2WdI3AiEAneLdBlVeT+ucYsxsIoSYK0PQnLL4QvBypywRGVD6l6Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616119482-ef906b13.0_1616119793523_0.7747452836857118"},"_hasShrinkwrap":false},"2.47.1":{"name":"@xdn/prefetch","version":"2.47.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.47.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-nbAwas3u1c+oGMIopn/2yhoCkHOXg0lmPKNlESyaVvcpPf10t7eivkw6uprmDNJiioi9uCQdZ4Bw/+Eouc8rAA==","shasum":"8f0f33df35539f88b470bd6518fcc43eca95fbca","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVBRWCRA9TVsSAnZWagAARGYP/0s3jZtQUfCY/T2H+L5u\nv8oNY+8TosYZK3kmttqCdOQDdQAaE6kNLnVzn52BzbHX8T2NK5A71XTPLImX\nglG9+Yw5Qz0wWZ7NC0FiCs8/SIo8CSTFynvE8dQhAkI6kocLKE9BG7h3TjsU\niI0zXWUetgEKQc/KT1P0O9mqu3OvUV6SafHEYv+uNknP+yYcdkq/enbhg5vB\nFTJvC7S1lnH91K2B6ZN6/HWymrzUaMwhIeEBUHi0AIHLQnhuj1/1rpk6CJ+Y\nztA+xYaapfppBWvGCsWG3EHDhaDnR0gg4Dx7g5CinVgf1xSqEoczyEqMQq8+\nqfbeqAeM1yGRDqIkyAovn6kO0L1RPgrwgm0oPAkC5xdQui5vsazBB1httLQJ\n+BSAvVhrgkrC1ZWbKrImtJ34XiynadHDteQLRB+m+DVp4DKO8rjBCZGlMq9h\nFp25VxddG5yGUjEZL0hemiWo/nl10UI98zcywGTGYUci89uDr0nwVYpusOWF\no0L02YQuj/tQrixpMPwtirzzi6BDEv/13eqpFHXjh7Mu5nIE5nRgdZi1xYkF\njjJSf7zWL7lOKypenJ3AlJR6dWU0jwhZIaBp2Z0fKFAHIE3C+wZmAvRasVWR\nTjQIeUhG9RTcJ8ROPKMaa8g+aVe0Y0Q5NoTwOT5nzor05B+nHRB/mNse0305\nW4sp\r\n=eC7E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHdWtQrgQoXnbdjArLJJ3Rb1Wl3XOa4ZT6kxdnpe5iATAiAMB+7eyfN6PZK5x6BLGBsZ3G5nRiEe22f6B3Sn2HogUg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1_1616122966028_0.5105062075484994"},"_hasShrinkwrap":false},"2.47.2-next-1616122740-4c07c985.0":{"name":"@xdn/prefetch","version":"2.47.2-next-1616122740-4c07c985.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.2-next-1616122740-4c07c985.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.2-next-1616122740-4c07c985.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-QXo3aV4v6mbbRMLgh1ECnO51zzKANhznqawryb/Jq8PgkCcP+GtVE0PhdgmtaPf17vJkxlsTaMDGhIVGaBL/rg==","shasum":"3afb20e5bb2e41e3ec96a7f362827189ce28ffe1","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.2-next-1616122740-4c07c985.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVBSRCRA9TVsSAnZWagAASGwP/RfwaOo+/wKJmFMzTxNS\naaBwak45fmHvWkuq9fE7lRo0Cry9+UeH9o2NmKHxYPjn/HIdHuOjgDg2ZuEU\nHhcis61v0S3iXWsCSKerY5f5lys9n5fI1el/ZcYW1bsjmwdh6RZCQUfwbnaL\nd5e6xfmhLEJNWnrUYGZiUuAjKwCF1P1X1Vv9BZ+kHuGpftSXdM3BXOOAGY+B\n4oengeH4Dl4e0Qf4iwZnxtgkMe1etpPv0qkZ7idxIxhx3KK3odQB18beWTm4\nquYMsP+HRJ6z8dIwGe24XUJ3VeyLz2cnVg9JcTGS6zGkN2gHl/5WGZMQ9TeM\ndj4cD4KdO4dq239GtV3004bX2i7u3WVvLPbClMyYOlQTPTyNdpcBOwZBqNoD\nQRQGC/XdpXy0wEDxl2oQ83gioy5m0sFu4utMbBS5yHI1xamY+41TLfZsN6PD\nrBn+9Uwr0U3QupksK3k/dP7Khcik9ajr9m9Y8BL9LvwSrPZelHH/LrhmXEHw\nI0ZhWYTFGaCCjyiuULq1dJqJE/91ENsdFrmUd36UQG1mP694MqEJXwQr37GM\nREN7F/4WB4nDxY5xTlSJDCRcwkFR864ARpCe7CnEq+7g0i0kNWFelhvbpM8b\n1iCSCDFMUqJLe1XLjCMHon5mWLReL680LaO0/bnElmg8lnQH2nNZTesmFY4J\nHXS7\r\n=L3BX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfg3Dn9gRaRpXSWZbDy5JblbSqB3XAfnEZA7L2CuybEgIgbIIRS1AXWzEq1teXmbYsS9sENXIVItgQ980usY3WZWo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.2-next-1616122740-4c07c985.0_1616123025458_0.8373338045981051"},"_hasShrinkwrap":false},"2.47.1-next-1616122745-cbf93019.0":{"name":"@xdn/prefetch","version":"2.47.1-next-1616122745-cbf93019.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.1-next-1616122745-cbf93019.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.1-next-1616122745-cbf93019.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yQUZ6ISR5SK9BVoP8MlL5ZmfQCOCTI5ZPbnPNuKeSJMs8SvUKuaZxeRKmGYzaKarVqbR545wajB3OZCwh7IG5w==","shasum":"42d9842cf406fc227efdd5c3b839c31859dbed83","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.1-next-1616122745-cbf93019.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVBTmCRA9TVsSAnZWagAAwf8P/2FvEke21jXWNYXhEhaN\nxQiQD55MKiOgN4DDDWwlmKOdi+J52AcU5Ok7BuKsF1Ev/TCrOl3tPhaPl7NK\nfu8ae/UT+EIzKM2ERE/oivLN4RvCyA+AKoVi/DVrSTCK1khtTZq0fdfKwlRu\n1xV5jao024I6aVZlqqORLzA//hM/RuuymRi0e9wn7jpBlxcaEGVShNCUS7vJ\nPFX+rsqli8idCKPF0DMsSLLxrMcfWFPVrOoLvLOtxArVMZ1pEqqGPJNO5xvo\nfUf3/9qgn3OoAn/ygdTexczIZWYpCTdN6MV6TqtsHv2ZX1FyZgrbzYdW5lUe\nVp/jxkpC1iUDmrrHfGsy5z6Ti7kH7YXSQKPORYoXFi3OLNVZUbtaUKHILUV2\nE+8XgKW3dzk4NVRdXHNWK/lD8Sl6HI6WnbGHOZqI/MNnXLNMqhnbd7HnJeIK\nMLPZYFumVgEgi8WRLD/6b+3jM4byHZFTtJAK8u2fA6TclhCaZCFqm7nWQyZS\nTWHAPGRPhSy/C4BGblh8TcqnIbpouZhhq4jrkbriFYDo9zpTVCLws9C9jMID\nYOcayRiHiDxj9oijg6/JDYtozxeQ7vUuyQhEn2dwv/P/C65QbQdB/vAM6q8F\nD/jfDDErOBwgtnqRLoxy+DyUA24MMFwFHpSeQns6sy5W/u3qzZUL0njNthL6\n3O7f\r\n=MsS8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIExPCE0PwoOrucEY64V0L0GvSf9xBkzyo7ksi8LXjWNiAiAMne1lCxv6T7rscr+B8vKDnmyYFbJ22hs/tnCMGZHvJA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.1-next-1616122745-cbf93019.0_1616123110026_0.5475799496602551"},"_hasShrinkwrap":false},"2.47.3-next-1616123429-d4dee75d.0":{"name":"@xdn/prefetch","version":"2.47.3-next-1616123429-d4dee75d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.3-next-1616123429-d4dee75d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.3-next-1616123429-d4dee75d.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Jnv6wtFeO5kylA1Q2V6Vxv3TWd9cjy9Njizd7he3CQA05XOmH4Dxr6nmVZQheE554e91YsiNjuagC+HBVuTVbw==","shasum":"e4834e2c2d54767c61a7c434a54d816cb9e67d43","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.3-next-1616123429-d4dee75d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVBeKCRA9TVsSAnZWagAA5BYQAJDYUzYpYpuQUU/mJ7N5\nRGirNx0OD/pysfUJ9Tv3iYKaK1gPmlTg13cqK7W28Ol+Hzg69RLeo2WIZ7jU\nFHADLbDLwaOoB7zdGj7wQYmgUjjQlAfIN38YwtsozcnYA8Eg5c/srK5UMyXK\nvZe3P3bGUbxTUXu9B4UG8CJJQsH+LK3d18q/pAjdffOZpL5pYEIKG9ullzpa\nwBEaFDG013kE4BPijHyq9VhKEqejPI2cblF8GD7Pn8ORD3zJPCYzVAUI47fe\n6LmOQyC8VJ79IYF6Vfbexky6P6vTCEId98U7p4dTUn2fwsqC4FjkYZ+GACej\nxGhmSo/2lpx7Z+7/0HQRpe1+tOdZSxcQa+ShiChEXPtJltor26cxe+0S0RHY\nnXNUx/Wap9qhBlfNZat0xUuD52wvOfjN6ZUDBsQKCeiJqYmIwZb/v9S5eJTF\nolahQc2KMbwKgp6zJ2o3A+lrbXgO8R2B96zQPeCUX71YJ0QLXNRMe0BU7gN0\nm6AV1A4Yti1Tpozdgiuwvyvd517d99cAGVHv+VyQM2W3vvDlUsP3jGUvW+Ak\nZF1TTUlcZCN/8urt5BowTVRp4Vg2R05BG5cllxktJxozWp4PPT0bJzN425dj\n6YhpRcti5gdPYaQc47eX8eUi057FVL5pTo5QI+uGT62snGstcFybxOJtjZrk\nqZpH\r\n=m3Jh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGj+0Z7y+aFvtaQsM30d0IZHRfWvvVdNe789fD3Om5isAiAQQu1NvaZvgF2N0vcHMXGDE89VE4bIvKB7eNSmsFSd5g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.3-next-1616123429-d4dee75d.0_1616123786051_0.9037690400212639"},"_hasShrinkwrap":false},"2.47.3-next-1616125139-98c6cf5c.0":{"name":"@xdn/prefetch","version":"2.47.3-next-1616125139-98c6cf5c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.3-next-1616125139-98c6cf5c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.3-next-1616125139-98c6cf5c.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-+osQ7GB5Cc816FQw3O62es+6Q+JVeQppAxckVE7vQQFdrW2lN5b+VsbkksPHauz1A5OAMiTULc4QRcCvNk9Jtg==","shasum":"0e3819a9b83380f5a0b1a5cd33b45fb9e8399f35","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.3-next-1616125139-98c6cf5c.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVB4tCRA9TVsSAnZWagAA3gYP/iAAMwWN3X+pBfR79KpZ\npTXtmvFksVTqwrC4mMxs9J8SXlM/GaRuO/bx0YcThrwWglGXy1T4fhmDexAh\ntrL4eaD+wm3uZiKryS11TsPcRoMwfoWn//LmWVfZjuZBdtMfqMn1R7j1XrPg\nGbnOSTpIcMzuPnb40AHcjd0s7yCAofqy2lcbx+YR4Ps5bonUklrroks5Dq3X\nLYSXCDWVAnr0qJnOGr6cjuR8FHU8x12N1m6BiQaMgEmb4U9W57J6xvS5UJIv\nzC5MPfhg9C3kN8SswCaarZDUXtsr5QrSouqNCkKsaMoW7zOENjkGTzDDV4cx\n8AsTaFL1h+tgA8SeFcOjk+A7xgSKCMBviPbD1YwrxiRCa2s+G56deR2jzjBE\neMPFWaJ2Xer46dh0MJXYxrT0Q5OWHTkIoQ5ulDZS4ecR+vjGKxMDHymc4PTs\ncLYIAnJs8Np6G2SUioYb7vEPBDWnO9zfWkWEGDaASxofw1uE/Ay9jiW1+Ek6\nzRbJPSd7r7AuURXo6baWUg+tWADA9ie5I1Ut8KAquiPgHCAXeMh/vY9YmopO\nGJj27mpwvhx6oso7xffyPmRBWp8Is6NCzMnmm9BU/PZDhu90gJC9GBxI6hON\nUoKFh6LG5njIJ1bVxx99wZzGZ7kFYXI9+VuUrWktGPmypx6gb4gt4nPGcS0v\nGSmo\r\n=j+76\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHGfLQqiKz2WB+1K0WTC0phlQKeAjASX+cUxB0xg3rtgIgfl1Z2jSUcL2R06jMIyTJgTBakPMqo9SdSm+5s2gRM9s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.3-next-1616125139-98c6cf5c.0_1616125485285_0.4254944795151969"},"_hasShrinkwrap":false},"2.47.3-next-1616125747-fda2689f.0":{"name":"@xdn/prefetch","version":"2.47.3-next-1616125747-fda2689f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.3-next-1616125747-fda2689f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.3-next-1616125747-fda2689f.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-zJS63T5GZZuFay0uhlUDqpr3IcXYxyvfpOYoFLhQmxoFM49al/x02gGpI4PMcDUs7s3bjXcnJWw4RUAxYvw5aA==","shasum":"0790db139df3a37077ddae8d9fa93453ec9f1f12","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.3-next-1616125747-fda2689f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVCBhCRA9TVsSAnZWagAApJwP/13Qag6kuzBAvkz6dLQ+\np8oN6lDpJ7diqx/bCVXVKE+pJzUOwBBPUpYTTbQEyHNK2UTA/9PwJvFB6zk2\ndSvEqX/S+VST5u8QvvjJmjOeMzOvmrFaWTTImVfsrTkzvppIejqvDTMiCiHx\n+JErY2poTdX+lxnNvaEJhU1AesrIDK7ztJTgdTN2kBjO9G5uqPyx1yLwsC7u\nvAO+Fl7v5e03tLhSQ0CVrl2Hb6yTPpgSawwTC/90R5DKFH8XYHhuweMIiWO5\nstY5VgtXBJWkBUwVvKGnhDiB8N9JPIwN29MFFniFUwRVbzW1aC6QocBrkTqh\n80wkFs2hcyDXzH7YBAkq0BMKa3hdtqUm7xIFeYmdeJ1E3/BbCrwHoNM6vQRe\nRSa8yMTlKDslAApxJb+vKF3i6EvSgnWvhewzlCb+CLgm1knxlOXFBEChQVdz\nmYAmE3KGWUkMbtONGxBjJO+qeq6d7ws1szBZF7RyzLuYyTAom7leWgmndkJ/\naEZNFpbtzAes7Sv9LTA7YyzHc9HdGv7r708KTpTZeaJTaMbPEeHR73881C2V\nRxLAASyoxxZVzmyOy5sp/+/zWFZ3AGgIR8EEULwhKObv0mAbFP/6ARymrurH\nURpmojPCZWVxhLmqBYCuD5XMwmV1FG0Uog5iwyOiH1929QEX0PZUPjC0O896\n4GQ+\r\n=haMJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrU4UwkBfYcwwjiBmIg/GZrs5Hx4P/+KCl1zwfZyuLdgIgKlTRNZMz1Bz/i5N7NyEa0drsAfPQZWW4mAId5qtvSJg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.3-next-1616125747-fda2689f.0_1616126048731_0.3493970630606509"},"_hasShrinkwrap":false},"2.47.2":{"name":"@xdn/prefetch","version":"2.47.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.47.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-IZ06V9Uku+qBw9di7DSNQlNZD/JPqLN8jv6IRVcoZ1vncJ46v+vhDMDz0EHpRnp8Mm9KxNT10gtKIk/P6bJRZA==","shasum":"7dddaefed6804fc33c6e83bce794727b89b87457","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.2.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVCLHCRA9TVsSAnZWagAAlw4P/iFbDsH0dfN2F0B6g+Rj\n8plvsKalPDkW3IMc1vESz3z1RkgGoGLtZTakAJkQjiy/FfQpPAPs1hdQiWbe\n82HN4O91B+CjdnwJhhCi6phwswZ7uWCcV77LWmqZtxHZErfhPzbvTfDq4eLF\n8ufx0wrbJQoVEwyMr/hD19IXIJo8GSaLw5hTZzLq6tUz9Z5PjJMF1QaWoqWJ\nwuZgSWyy41ICTRYp7dv2Rp+PoHsuVWPLG2OOZx1LvKMOhP3crzrF7VYE9ySf\n0g/G/qIG8cD0M9l/9bqnsneu40nXtlHB2JejLhN+1QcasP80asi7LJGa3PMi\nHcWXklRq5sWSMeEf3xBKzYsFVr9nDaxXQQvNY5SQEoERmVTUZYzvTVk81POJ\nfkNiaDIvnASu524QBTtEqby7ceASxzrn69Q9tmL+h1rU6f/bHToVZh5w4XxL\nLCnOTh7mmdr9jy6j6I+zvNAxcrXc1FST4rmqd5PT/AuePSXCq4Ppk2f5B9BA\nfwyd40on/Ap4nXJrQThSgzNKfOzH4IX7Zfifl6FVbyujY4EEV24nD2E4k1jo\n8ywgyHKR0mzNRTkh5YC5hyUKYlwlZ8izmVvF8sFiCK6uxhlPfnDK/0oe4DeK\npwFlmZceecVWv85xQNZufujY37Vn/UXPNmZxI4uKcs47VZogAU2RKNFInYa/\nS82a\r\n=0sJ5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHTBovemr0t6lcPHhl1wL7Y7QcuGgXmvxIrjyCqESocUAiBwopmAE2FNM18+bLEYCuQmYYgPaQIybprA26aY0Ifkrw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.2_1616126662758_0.8121392344646798"},"_hasShrinkwrap":false},"2.47.3-next-1616155958-b913b614.0":{"name":"@xdn/prefetch","version":"2.47.3-next-1616155958-b913b614.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.3-next-1616155958-b913b614.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.3-next-1616155958-b913b614.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2qOikwKPaE3Lvn3x37uNQhZNwU8cqbNPW1hsJOKa5qd1XC+KAopi7kACdjEFpJkMENK6uwlQHxN1HDA1sJQGzA==","shasum":"1cf55e9240de0a689eb4da2ae58689498d5e0f60","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.3-next-1616155958-b913b614.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVJbVCRA9TVsSAnZWagAAT7UP/2Bt7MwQdqgwFWoEosVs\nQj0Pz70TrvW8L5yNkkKvsbFLHD73S8IJ15FovJzRs5EBXapL1sz0cSPY/4nG\nPci7/aiSuiNhYn2GCLl9cQGBUYf8nKBYA6Swxa654RY+O3z346UgIH7mpg+m\nTJw7n88c+ElymlkvwOzSANKVlePZpXzH2xskjMtaaOY8MpOZZA5DK0Qtqeb9\nSQqg0pqKKsTu4Cbj7F61l2SoeXX0MFRfnUMdMktsMp6o0Enmu+3U52zHf17s\nHkC0IztOmfNqoWc8VepBjjWB6TNbFnuCglKL7xaNGSw1XGMMOsiW6lUEBrac\n/U8u6bDtcMuW8F1vJGscjBnE7Tt+iUvolS3BPzMxNH3qTR6gTf8+WiGoWqEz\nGqK2Iwwlyb/UMrz5FMNq8aF+OVVwAy5hXjVgRXEgXVq5HOZR/ytMPUa7mCTE\nFydoZx4ru0YZDFsEMD7zvDZ1hLpRNTqKgfBN9ydmyzaLTetv2U8RG8Iz7C6/\nGxYWnd6KO/jKGeduzm6E4aPgKy8mHyuZzQL9ZCo9yaJt27CsrxHekSoKKipd\nut767yxoTFVa4Oc3oPgECkBliia0H0vUbmI2qm1U6ZIvW3BOmVgGDSgxd4rd\nn4/qUQA5E07NI8h/8TjxGN0xDnAqUXhkaKqffYcQ2SOG7FYt8nrQXWo7nHJ3\nyORN\r\n=F6Nt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/iEBm/AawGVQMats1/dqir4g0nCixZhCpi9RkitPwPAiEAg9kcNem2St/e9Qs0eKQBkeD6oQ4+N5+iCKmtQWBLtPo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.3-next-1616155958-b913b614.0_1616156372958_0.16965900364054898"},"_hasShrinkwrap":false},"2.47.3-next-1616157658-3797314d.0":{"name":"@xdn/prefetch","version":"2.47.3-next-1616157658-3797314d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.3-next-1616157658-3797314d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.3-next-1616157658-3797314d.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-nauAiYp6O1k6GUzojzEG3a0AdT9tLYK74GsX1kSg6BoltPxawyfJBPAUVKv6C+9heCwHgVPQEclDo2bQE0izSQ==","shasum":"ffd0d1fe1c365f91bee43668130fed582eacaf0a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.3-next-1616157658-3797314d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVJ0aCRA9TVsSAnZWagAAZs8P+wR2RZRYaJb0WikgzPJy\nP0s4CYH+19pqEHM/KWSGNL1D7P3TbCPTXvkd5hymx6Ex70E6slcnbG/nwhg6\nZe79iieCSYs8UHEkSYtbTDxEDDCneRp+Oe9lqTLoTYS/aHeSdz5UYpe8y6Vs\nUkbZBTYdf5etVqImlp8BNUW3BXriXbaZ3RCRAuR1kfGiPBvWaFuMOWQHDPhC\nDjgwyawq+OzCxOlPkr1fd4+XrBLAS8VsLNLD0oGQp6PTl/PvPQ/6H9FfpOsz\nfe/KLyQWo7S3OLm0EcRZKyCdbwdwSMzAPq3D2aifl5le/xrQ8aURyVPtSLvV\nBLlCdW70KjN4Ob8NnKuzp59qiUQ2IN7wt28OZLG5DpPhyzXU/sgvusQurOBj\nKSTpJwQzV+j9BvNgoBqJfhLzBH5elRD5vifsoyAapQEYGpSC5JM35TfJDYdO\nAkkzcl5aetvd7XA1BwguiOXB6sTijQBJF+t0WGAq0pn/swh1lHgLnYaMrgs0\nnjqbssW2c1c5O1R+8Fia+/Ps3SAHyn6lEfZFGSYJ9FqlauMtGdPAnWYUHZFJ\nTNUcIseVmMjJ/8HM88NRBbc2PhYmfMiCyJt8ZTaF25qqLHwFdi17he5Oyf5P\nCUTfkun4PdHYMJB0oxF9ryUsAifK/95rms7MhEBPhuhIwzjLt7kh7BeXvPjB\nWeRE\r\n=EHOu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICtq25HIbbBnFxvbs+/+ZncWfcwPM2c0sHTr99dMcl/BAiBXt88ILT/mLk/YxGmVESIkZLnR6DekWWdPqL54f1jnbg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.3-next-1616157658-3797314d.0_1616157977910_0.5781792408916595"},"_hasShrinkwrap":false},"2.47.3-next-1616158067-f080a7dc.0":{"name":"@xdn/prefetch","version":"2.47.3-next-1616158067-f080a7dc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.47.3-next-1616158067-f080a7dc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.47.3-next-1616158067-f080a7dc.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ULURpdEXvzqj3rzTzbivB/JkDkHm7bW4don9AF0dsuMSPrsfhrr5buiiBla5iIOdciDBTf7jJyvwFQHSAieQGg==","shasum":"933c619a5a55beafcf78fbdbc913da0069d6a906","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.47.3-next-1616158067-f080a7dc.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVJ7xCRA9TVsSAnZWagAAJNAP/3DVYTTGe/NTaaF3poss\nmPevKOIOdWU/ndcMg0abymtgmesYXSRe0SXyDt+qB3UlDzqnftZXoNEH2GaA\nQpSM3xAZjq74jndswZpEyTcDOZ5T0f7TywNOE04DelGee61JNNkGHXGuvKkw\n5F36o0yYxo1zhg7uyBOvcPcxuoPkbzQzSVP+YFsPDm86fTiy///RDAmvtJxJ\nI6ony4l//ruvcYG4yH1zhdmDB05deRz5lYXYltDTACIzN0n+QP62ptLpuMF4\nGURFdvdyur/Fa/jAi06meROrK3IkdawbutStZtDF7zHCnIA2NbH8NZQPK3Us\nUoj2ZEiw6XfShtNAPZSdgKiE6xF4qxXRFulv96RRGF0tTUKs5oAHOLDUileW\n8uOVxADLeCawRrmiJRbpTTC6hRQqOIQoqMIm5OvzRBZ419Ne1EYBIx8h2gqd\nxitHY5ndqGybLykbwTr9+JfDdB2ByufYCKoJxlQBMWD8kkeHQv7/CY5XF7Ow\nVRO/ISE1dpA8oo0yJ/Myko2LiE+ZCzn+jALF+6BoMHwwxug/g1MtddSWdDlt\npj9EuT7GIVOo54eVH7X0IaWom3Zo4EaMgS3N4hf5TyOu0/D+Do7WOR01LwHz\ntbK53MHDTLyMbfXHyyVOEJZw9b/ciu2rb9XB0Sn4OQ3mSctNvZMaS6EMVbnI\nRTcY\r\n=mc0Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHDvn+X23RrY5rZZrNpO6zFwgrWAy3dagIlDXHofOg7BAiEAwqJXTNpdgXuaR1y5+vmSIfgB85TStf3qcBYuH+7uAHk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.47.3-next-1616158067-f080a7dc.0_1616158449352_0.14870916846966264"},"_hasShrinkwrap":false},"2.48.1-next-1616159048-3eedb503.0":{"name":"@xdn/prefetch","version":"2.48.1-next-1616159048-3eedb503.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.1-next-1616159048-3eedb503.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.1-next-1616159048-3eedb503.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-DYQWQ4IiO/XT7SOZD8CMEiLqSvtUF9c1eLorAv8FlBDNj1/29bEeeVmRGercmUtUygmDkSCbzgG1XzolYm/5vg==","shasum":"232479528c655408248216a9dd6bc774382321b4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.1-next-1616159048-3eedb503.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVKLRCRA9TVsSAnZWagAAB8MP/01nJV9U49BwplKkWkln\n/U1VIWHqAXn/tnyCwMg9tnq158p/8fVNxGyyAgIoV+Lnb2Kh40uUmr++GYgj\nxK6O0GtqpZlY0zI7wzpBigHrWPZzyv9U0zvDA4Xkbw8ClPDXk8Cg0Sqnpn4Q\ne/nlmMeWGSvuicWFOLz/PK4rghvzgbjbY46JfKhPHQOwldMooFL0eEPdQF3f\nIyact3M7NgXD6mL3qSM4QqE7TWz1d+aWQ2hspac+Z/W2HH2fycwFBrNVadFs\n+42rF+ubgNEfimCXaZVy8P/UoJOnoYUvRr6zGXIrVxeKW2e5CMc/4wABEdTO\nvkNhwpdyT9htHkn8A92Q7+YfifUVFhHVuFptRraTbtDZ2ri+zbWd07KXQdZx\nMGNieoGVq3nOkc0uUwQx3Qy9UWBW7O79F1XNKfauuEqUnkKuuUF194OuVRvR\ntLxl1IzUaJMIYwwr2VrhAJRpVw/Xf8hHQsVph5iaEwwDfZZf2BBgeYqhmDj6\nh25DIkADRcUROmfbqwOOMINrXy7huzuuHCCASZOi7h4kXV8vOLGSVV20RfTO\nx5FYjSEDfAFKnrF3Nf5rxb61KZVXPi3Q9FD+apOZN/NAq4xHDSKW6UwTngR1\nTZkxXD9mMo3yidy5ywXvcxz4b8MhOSK2z0vsOol/t0mR62HerXSqhdIePPB+\nr5Za\r\n=9tVm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA4Yaq+TvpRrZ7/igKG3BGMIaZSJQTNCkukn3JdrevBNAiAEWfDQffSEP6KA6ADCHHRpQgKswoFeUFTD/i7hLnfhrg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.1-next-1616159048-3eedb503.0_1616159441177_0.8533438452869047"},"_hasShrinkwrap":false},"2.48.0":{"name":"@xdn/prefetch","version":"2.48.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.48.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-AH65m13x8UCbV7bZlM5StBbGfnPBSLTwtjbfA2kn4OIo5GGicSZIol1UrAJUtNEfLKw0Ji8FUqOIElTcZBZeQQ==","shasum":"f90c2337ce34bf0edb90f2a63d4507590dd224a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.0.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVLm/CRA9TVsSAnZWagAAtmQP/RUxRv+sxgQ8m+4I+BUG\nigUi++b9sMp4Czy9nnbm/Q1LtXJgxYxNFlIwviEpo8vljBKkbH3Yr82Tf/Mx\nu8vIDWQlQrhzyWQNnoMt9kZakJA8vvf/fb4HhOV6CirT9ca6WkuyOZ0y93J0\nvzU0xV6UeQ6X7WMII8u011EYTZOT6l/FHgAbHmA2wgabQeytr8Y9cnJrH7rg\npbMYxxmRDDh3ax+WR4oYpDs3UF/1C+t9M0dTwM1ciWgm0vGhQ01SyGHPAIvQ\n1ReszS+LomXcOBgovJSYDudAFxQaLh7NuIQcTZR+HTK6wDaRXz9jYToxOGHj\nwS1B+jFIQ3mG09PjATMKiJyDtW7k3gXqsOx6hW+XDNNqicj3F9HPPf8h4WeR\nnYQMvAQ6eDQHWwFo5D4vJQXN4ItMRVgYArqAK8lbRNSLhc3i7io0drK8mF95\n/ZdRSxea0zeBtgaANrP52jX6B+U13oPQTX8sKyYyd94exEGT/T62CeAUpvej\nG6x1t/AhcyCwmd2RLffFTcKTl187r0SFORMT9kQNUE6CGbvN8cBLyNhmYawA\nMsXkupGm8eniVba9Jhb+f2ppD8tNhaAvLL5kHtPCUfIfdveSQHW6NwZ7aQBT\nVQ2XvluUCsBZ9dHKRDIWztBshD2jZQWDhQFlmrIpZjVEeoHqS4Aoaa2uUxLS\n8Ytz\r\n=VXwJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzP4/Q16b68w5x93gwmGuS1AqzdkoWnmq0PPgCThHa2gIgWf7Mxwhbn7WGYFKPHIk1HJzHS0MX3ehFrn3LTyc7eiQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.0_1616165310597_0.920006839689689"},"_hasShrinkwrap":false},"2.48.1-next-1616183581-7712eadb.0":{"name":"@xdn/prefetch","version":"2.48.1-next-1616183581-7712eadb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.1-next-1616183581-7712eadb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.1-next-1616183581-7712eadb.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-X4FDV0FDEOKkDpuZWCteNa2aK5OwQoQJBh0FFYJnS3bra7qPXdojdOszpI92g/CvbZ2ZMY7qGTOmsi36f14ovw==","shasum":"d5ee710e6e7f6af58d72bb3be1be6fa1ec35531e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.1-next-1616183581-7712eadb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVQKoCRA9TVsSAnZWagAAD2UP/RZ/7DPw2OJFp+FavG6e\nUF8sDeiChY0Y31NxieFdoXoxe/p9N4kP1+VChqeyhyqu+A6QD+/D2GI9Bs8P\nLGO01d+qz40BxMOaWWrL7RMn3RuKVIsayub0r0yD+V1qsl0nfiZX6oowEreg\nPtsKl84Ap/kkWDU7RgNHfRQQhUe1x26lKQ2X8QABu9qPd+WC88Jfv8Tp7zbK\nqMgrFHCAkNTupJ6VSNYoWa6n1Td6euCj4iJ2tKPuFrsbSppPFnba0ux4jOyR\n0KfZPxqyWL11d25inLTjoLg8AzKBw1KwCqcm27CYo++6JF9swW8kHFNS3Cmt\niiRsx6xzkbqdeW3Xlsv36BdO8WBkK/VkyjY/qB5LtjRfF7zzL1Xtn2llDVXZ\n/6wAGsZjnF3uJ2O9+aQjxOiZxDlINcvJ7Gqdz+dvmNBicdmAA+2knw2SW6i1\nP/LjkbJOqy1pUqFhZcy8UzyavbdfNJllkhJYmo1i/WldD4S1VJf1Y06vmJ/p\nCck0jeCDOrwzMBaSL0YvtKXnhD6j2EnQBIeI5bSG/Gv35g5Cr4yytMr/hHFD\nNivDCzY/DFM259+BHAQe6He+Z27HNTJwWCA1sjNbHd4e7jW87JE4jGNrAJYW\nULyY6fufLkzGBJIhRDcfy864+IgSKAduRFA3Dkvv3ujkoU35LuEK53NwA/fb\nKvux\r\n=nDge\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCF0zPHw1yidkHrJyIXOBviPWbxQas4l0R1mfGr7dJ0GAIhAMbkQD6iAL4eqTy7ORlX60wGknSWjabhTlaqUl5FU56r"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.1-next-1616183581-7712eadb.0_1616183975776_0.3563052000849265"},"_hasShrinkwrap":false},"2.48.1-next-1616184254-1f5c9227.0":{"name":"@xdn/prefetch","version":"2.48.1-next-1616184254-1f5c9227.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.1-next-1616184254-1f5c9227.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.1-next-1616184254-1f5c9227.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-tk8Bl0oLc9ghdCVVSNy8caERgujYU8B2foOhCMY6x4RAVtiNS6l2K9o1dw4nLg6D/oHEmssbw6l8ddNGa3ZTIQ==","shasum":"c4d74d35d4fb943bb5aa718f72b0ea157edd1a6a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.1-next-1616184254-1f5c9227.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVQVFCRA9TVsSAnZWagAAEMoQAIYn3nd5lXsmOVDAOjDf\nfd8CD71z/SnLemoHwkdFovksUey0jjgAfXv/ZGwvBSJYerAnoosSntz8yPw5\nC5mwnG8FjuZCoh0eSJIqntRTy/ooayXtqS+QHq47LD5gtBwI2/CGEeXh3E40\nMWJOv1cdnUsTJIXITWfcbEWGqnBqAlgNFTqiDDcqvXTVSdQnfc42lI34V+pK\nPp9snD/S2bsOJibxq0zzBBB2wzCOB0O/kf3cmLIwmlPUpiqXblGzs+pXRWSM\n3d6QMNOO4mUXIFfsFiMZnaCoKyRahnWuiCN4435ojkgXUZYkpUOXcMkLIwkm\nauUr7roigv5yFc9eRxwYyujRv32gde9QNdNxC9w95T4CAzLF03sa1zgw9E3J\ni71r5UCpmVnl+eqf1mSkuTgRMdTnAAJ2in3ATT3Zuh8ZndZAGfspBKuYNcWf\nbqCuzV+OieaJId52r5px7EBlPn9oahMmA7DAP6P87ZYC3Jp6aaNFb6wwd8HM\nqi3+QJwgPGr32zEx5on0JCwWJUUmdNVWQNrxDPiVy8MYNi5nSdyXYY9VIPbc\naCkb679hJF1oZfgs2QnJ6iBTN+t1khvnxjH4MmquMso7VNMDLkumTdGmzC5P\naiZaSKHg/aWhsdYQ9wJgNX+KSt1kVpuVhoFClU7ztgw2OSkL7BcCFT5je7rJ\njvgu\r\n=DMV+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE0cQtwfXxOOS4+TJbCLnIGlA8vsLxAXxrns7f1GLdK/AiEA314vJrDu/oeJYcljVpGPljUimFhpOQJjhR9/GUYJKJQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.1-next-1616184254-1f5c9227.0_1616184644369_0.4453900435917928"},"_hasShrinkwrap":false},"2.48.1":{"name":"@xdn/prefetch","version":"2.48.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.48.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-sdUM9JcWeAeSsNqL2gUQZ60VSngbcyDfUPn4z4TpHEoLmWGtjaHOcGi8qxiCt68vtm9lZyRdeiUKg01S5+q0GA==","shasum":"5dbbb54ab08d7280721ec0242e82c3869d5dcf3c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.1.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVQ8NCRA9TVsSAnZWagAAJJYQAJHFrfC8y83ATeVX5V9r\nJMDn+U56JipW/oufP2pKOwNGUXCyKlQ/A57AItOJ4cjhuPQwuM7kCEan0T6V\n7U7pPAb9mt2LZyFyyYcHLksbHNCx5E1HC1kxbD9pbs43ox9n85wceinH92dI\nt9qtVVuCxyuHU7IGRioHURjXnRXRHLrHY1FzHnvVFGKQcxtyHv5CiMBf8Nyx\nwihlzyk6Blru9CIjIhfoUfLmx86k6Xe0iHT/16QOKmtkXpfOnKmrvIaQbkAL\n5qua46qPVNMbIhRxYmsFUKBq3L7mq4E9c1M/uB2Z+oCUmKIkAPfMMVJJSLsN\n4e3/I2CDfA/rDD6WhLl2AqUgeS3OzuqNv0Hf3dLcj4mUd2+zTvmXKKzRb1sM\nV5ZFqMLxNPFxzgsWPf0nmcag67JEGskB1hPB75Fkf2whIPJl73pFVeqVELnC\nddDXvxzEUVPqHKfYZCxEI0IMKxJ6oxe3a18cQeuo5Q1bfKiBTr+Y2bMqOgFO\n6hLpo4VtGO5S4aOcisv/4KHVZe7WtAhAuO8tRU9F09QfYNWuc6PewIrwiRPA\nJfeT8WwHvhx6l40uPD2SB2IUo+Bml3U/P3IqIyJNhiAD8620xY5chkqI3cuT\n6DUKDaSDjK6wOwpKKoaQ++1KVGoMK5gwR5V13sSM02ZhwdEtimrgflmbxPM1\n/ioA\r\n=HP4D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGdKc4UxdEiaRUNXLwtmlrBJQeMKOE0ApgUq0+EgTn8KAiEAgM8HVSVAB/dSarqJ9WE+cu8+7Eoa0fghmJSXhTKxqTQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.1_1616187148925_0.8985405732502607"},"_hasShrinkwrap":false},"2.48.1-next-1616186777-37a605e8.0":{"name":"@xdn/prefetch","version":"2.48.1-next-1616186777-37a605e8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.1-next-1616186777-37a605e8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.1-next-1616186777-37a605e8.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-+RQzVLpAxRJ8KZh5OUjna94p1ieZroM8yYctQtwzFJCpONZ3OCRppP7EjSYimBg0aiqzKnxuXjEHs6ziVC5obg==","shasum":"ae54e85ce3daeb279cccedab30bf08c7a462b7de","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.1-next-1616186777-37a605e8.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVQ9ACRA9TVsSAnZWagAAWBwQAIDfO7+pEbnqH9rx+pUm\njtz252TbziuVRMdwsLBb1VZMhKi6U7ayNL09aqJo6Gjuwmj40ffbqSUPvoG8\n4xhroYPGz8Vp+4zXG+qvviSCmjiJ+fElQzzMs+V7tWJfUVW+ikGYotuHtPPd\nu0ieiETt3lC6VEldzCfptUCrqCH5wsDUu9ziHiUN6AqEtZf9OB/UrUrVEFAG\nkpzQ4jw+N+qBRkdw08tn8kR1vaf7VZJczcrRQSLdv7hzfY1dBc0mq2HtJca1\n9oi8OJ6JaBdnT46Ezrkm0QGkw/n1bSnts6a7kitelKnx0CjhvnHYfIFE/I5K\nrvrkrveb3S55dNZWyRMTRShwmtoIui1dy8vpJuWMysr8zQBTPu4HfXU6mQ3B\nSNA5rVT0pu8t/aPwTlM9Mp2mae+zua39f+koQ6/uM6clXSCsWORrPnwD3Qw/\nGPT/6Bero14INx3kQ1qme9+Q61g0cd+txElY5xSK7xEygYeR4cDfQoXaF5Wj\nvkAr8smlU4OYBD59JHoq+e9y/JksULKjducNln1qSPvb+qgwYMFjFxraeMaE\nqEWKDpmdVRmsSAZwCu3O4vpKXNHJfGSlvMxnSj0lirAYIt0gxkN2HvWuqUdt\n1SyIrw6wtaTN3XjVRSf71tfzlKrjbOeo4TuL0Pw42b7ZAWP22DVv3HITRZiY\nlVJZ\r\n=s6VZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCHzKqwm2/ptb7mTNbRulUV8e2gsfFoH7sm8ucf53pJ4ACIBVQkISolUd32QBkaxUNkL/9YA5h0ssHgP2tEHeqAHOa"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.1-next-1616186777-37a605e8.0_1616187199806_0.5730041822965921"},"_hasShrinkwrap":false},"2.48.2-next-1616186902-fe84bb15.0":{"name":"@xdn/prefetch","version":"2.48.2-next-1616186902-fe84bb15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2-next-1616186902-fe84bb15.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.2-next-1616186902-fe84bb15.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/cKyDfO1VkHqgrwGFRRl4/O9XpBFOog7abEKF4mmdIFQ7fArvPyVOuf+EmMm0eYlt1SOHucYeZyT8i3Rd38enA==","shasum":"0f00d4746ce09ef40b0e427477fe024d47a0be2e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2-next-1616186902-fe84bb15.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVQ9xCRA9TVsSAnZWagAAgVwP/iqRobVkXaL4ACqIR7zf\nFskD39O8QIHxPuXoejvJ0fBBd/9cUBJ6gPCytTQBG0bQB6MEy3ZRyIAJolDv\nfFpIsk9fFdXI4h41YySnz10QLOHM7AiNrJK3coat6oxHfyijuEFg2F9GQn3w\nU5ZmL+yx7gVKqVaKQdwDAwOpKxdffHtNNglSq5qIMyy2tcAt5pGpV5Tr1ei7\nf7mzpYKb0ur/MAuItVg/h6fZeL5ZwxVNzJoES6C9trdruBBXgA97UG7Z4y80\n7Iknh25OeadbxQ95P+1W0IjXUxiB++7QBZeA5JzX8H6A4VVUIzY5psEuHA8j\nKhOOo7f5EM7kvhsiL6IhtretYwrp6iXvdd8U2yqtXI8TAXTVRAmY+rlNsaOn\nl5f8sVnbW2rpg6PKk7SMZ3JvpuPpPJFCNS37CHwrSj4PIm7ytCcuQbjyr+AU\nnRkv2rWeaRGbN660btmjFHnEfbiM+cGCNWjsfjaKwdNY5j96LBbkiP3zLL1r\next/SMviFJX++BKR/QiHBkZyGaQbMXoFALSjYLvufCb0ulNZRwVpqUCceln6\n5RkgZkN0dOBbGBHQpcAKNJBpk2r2gULgyDElvGro5t2INo6oCHE949EHQVkF\nVbFcFQeqMeR22LGi3DiMfAN2ihfP69o6N5GsGKCznyij41sQu4oqIKv6Ld4Z\nWIAR\r\n=SP/O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH4jEo2rZcq5lFt4N/eEXSbmx8mq84P7B1aOJgxcopdNAiAwhELhOS5RSNiWaaV1KIb+TTLb9cN3vCn8tVhxLuS/ww=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2-next-1616186902-fe84bb15.0_1616187249023_0.5092267467621072"},"_hasShrinkwrap":false},"2.48.2-next-1616417535-15243a45.0":{"name":"@xdn/prefetch","version":"2.48.2-next-1616417535-15243a45.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2-next-1616417535-15243a45.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.2-next-1616417535-15243a45.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Fn1hR+6NV60+qFceje1hj3ZK/2v59I9RAHmVOYZpvvdKfjGR982aiYC25MwPcPYHHqTNCm4giu9lE39Z7wogNQ==","shasum":"acc5e67c59181d336291a013d0c82c28cbd68e37","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2-next-1616417535-15243a45.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWJRSCRA9TVsSAnZWagAAmT4P/26CuKhpUqRkaoB10fBo\nsosU0xxXRuf093CA4sgq9oCDdISrh1CJQppYqIa/oejBi9zwdd+mYhH0Dt7j\n64haZ+3uf2v2oef+vIFvCxEzfh3zPuu2rBs8r+rrJ6wJAZvjqsOjo/ubxcNi\nNgOFBk/aNLija1tTJgBB71ZS38xDUYgvvCbLu3XjOnvhFV6Dv3lUuDMqDojY\nugkWLcH20p+51TGzXVtETJsEppdgKsTwTkT5XrNbKzhaUjQE+jvSKrtAUo0f\nv7ieLnb1Ze6k/nPcBiQX/bTEAiDRi6s4kk5okJs7jVBWJefN+YJK8VOuCxIy\neMKIEcsm9ye9FK6ym8GbcQBnxxNs5bpH693UPmW1+bSLy/zQzPjTM/EfO1Ub\nhteYJtqJhjmnoUweV5gh5wFx8OZKGCZxH6m4U+gsP62a1Z98bMx73DqFO9E8\nPGiXB5AXH61z6nhTGg1X72xR11WLygXcv86bh4H9Jgg7irzoJ5IbR3VXjvEN\nsErMAcQw5ZI5sEa8UDUbNofoiSQMO2HmeFCW/Nsz+QcPTe8xy9HCnMPLb+Cy\ndG824OOhb4Gq4kNlAo3Ghzy3pCDIwWshavX9Gnal9gFMU0M1klStLvaMVAwg\n8w4nW4GZyWQSGX/UdEe8Z6Ix9TT9qSjDQURj6n48c1zyelBnHCG4NBbNj/vM\n/9uh\r\n=KLsF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFAdNe7sxHDUCCPpsRqqaoFVK8K/X0GeA+I/tBfaWeCAIgNy4MOz7ZAvSSfwPGhxlsmVfhzHLhi530uylJ8UIUnMo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2-next-1616417535-15243a45.0_1616417873823_0.7467218781123142"},"_hasShrinkwrap":false},"2.48.2-next-1616446742-921da2eb.0":{"name":"@xdn/prefetch","version":"2.48.2-next-1616446742-921da2eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2-next-1616446742-921da2eb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.2-next-1616446742-921da2eb.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-xFQS97vDqFVtSDR3cWAO7gUDTW7clRXbRBbCpRvvMGLk7gqQr3oq2WzJKBSy6lbPprxr9GY7NSRP2nIOt/kUoQ==","shasum":"b37631e3f6e2d6aee56aaa3da3cbd6ec4224b9d6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2-next-1616446742-921da2eb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWQaPCRA9TVsSAnZWagAA+NcQAKFYNjNyyrCHy+Nozf3v\nvbWBdfJz9T8GdBROatE7gAm43JiUQmcF6SfNOQ+TMZoN4TZRiexNek/7fwmW\nDz1Xcug29Ty0LZxqW2wo6+lNWDBgMARxouCx5J5vcz7VPDgHCxkytfshcXET\nQ0BEbIoXOEDMG4wSYsv6gPlNHmYki1Wk+lX1FRcv16rTdKEAgGGijcdgZMJ0\nObJF9dVZqXRIniqY6FOEtTQem//qnqYar8cI+wm14M+mehxXvpRWhlQLcK1I\nUzNPA9uRpQWvjl1IykbS6OJwHK5Tkk6HTatqPG14AkLtwJXxPKp67YgXpIuy\ni4vUuZUUV1LWeOx/mMiAeOVqLAoH8/VYcLiuiSrPa7bxMjDZj0gt05udhRq6\n33ZK+I7NQy+cFEp8cpc3v18hkYeRp1Cv/UJir55nj3zlU9/jvS7t7k80B5xV\nWjMqcKpLn6wB9cULqfKIwrNbMOUzYCeDYr8j0biYRSnI300DUwfwKlQaFOv3\nKt0YkGq0oDiYHn/pIDHOtcKoM6wg4ywUN5QOjEyYZqQk1uXf+SkJ+b2Njb48\nt4JtyuLcaZhyu2eA2y0iOSccA0vKC9b+V6Nd1+MBFZ8IlZpDDDg9LFcsvl1B\nqp5ZSgE6yTCESkbXh3QM8QPcUwXa7eTi/LZoHzSSMpq2odIABYEGb8Z1TaCR\nw1Dk\r\n=YUgF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpeSm68940jH0ZRw8FtKNADak0vs3xHy756GoehRdQJAIhAOcbml5WpCmE3OpXr8elrwz8ePOeIniSpnGSYlj2mQpj"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2-next-1616446742-921da2eb.0_1616447118909_0.06135525192305691"},"_hasShrinkwrap":false},"2.48.2-next-1616447270-8042db79.0":{"name":"@xdn/prefetch","version":"2.48.2-next-1616447270-8042db79.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2-next-1616447270-8042db79.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.2-next-1616447270-8042db79.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-eoyP3g4rWr3Mx6Idf+YiKeZxvBEpnz/Sb+22vWw4lfTHfHgbBFXxAO5SGHlmBALj0zHvBnMNzHdynJHuFUNK5g==","shasum":"e0ac42871f06abc654be223125ba859865c68ed2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2-next-1616447270-8042db79.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWQitCRA9TVsSAnZWagAAHGUQAJCoOQXtfPX0VS33xx9K\nED0TbFBvUijAjpMgU3nppzx9eHviD7flLH/+LgDToyWekXbCuYc3MFkRgZoT\nBzA4TlKXvOylZhO97nGyliYPWChqBleO7cAa1zxvWYTm2oQToznAr0GcN6Pd\nEuHjryEZ8LAWm91CfC8AhUyFUV0OC10KcCHuBl/xnyGE5CpuigHGV+r478sd\n1WsI13tiDE1oZCmq8ORHVA4plUNNuZ5QVManXxPqJSnvro044QDWmstvvAGX\nAP3CCgvjgwA3eBOKVWYZk1WqH5o86ACsrbRvQNrFuzDvnPfs4HdTIu0gPD1s\n/eXOjnhweRZ8I20KSFtbWL9Gv+jH/cmGuOnuVmEDAp7BlfNQ/5e0ju/NB0l5\nY+Rq1OqF7O289xqwIte8hP3Dk7jiuHiIE3xg98y1gEBdiPhvj+xSBv/Vi8TL\n7UVNz2rlCA0I7jInISWaRGYAbCTiJ+mRwFN/VCAsUXHCAK73Kvfr4wEJwi5+\njMy4ypS1tx9hO2JEERYMTG1P2StLH84ldxN2LhldfMTTOoPC2FONaxgP1vaL\nmlj0FnQAYvmRUiFvWuVXvYViboPrzYg4/bGcOzlBIcY+uhwguetKb87PNS7l\nvAFDCGsx0yFLX59ojvmtHG+ZW2KtmXf98C5cgvyS4xemVrzzI8yTjSoEUzvQ\nF9G7\r\n=qXCu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFnnXIUPvk1poDP5N7YH0OOvFln05eEaWZlnM9nUxiaFAiAjysyn0/KThGqid/AcwY84noxmJFGMneJuzaDihYAgSA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2-next-1616447270-8042db79.0_1616447660857_0.5290919862256473"},"_hasShrinkwrap":false},"2.48.2-next-1616447856-e63a95d7.0":{"name":"@xdn/prefetch","version":"2.48.2-next-1616447856-e63a95d7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2-next-1616447856-e63a95d7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.2-next-1616447856-e63a95d7.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-G1xx5PZVFELrPztcsIclcRsV2D0bZXMzqX3YotPxA7Rk5bX96Tnmw7HoCo9/ojd7QCCwrz80yz95bUNKxcYJsg==","shasum":"281ccc859e6f502e9b7e828e011de27259ca1a6f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2-next-1616447856-e63a95d7.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWQr5CRA9TVsSAnZWagAAx/oP+wUJzBSqD1B01A3frWjt\n2v8YqgNnMuDmGuvEMd3Ux6hNrQbO7bT1/yBkHu42yUuHmKmN1JkF18/tu0W3\nGX8OJdVY+I6syoeBRiE4XqN2jn+mZlND1+LhrcMEIg15uJBFEmBzD5bSWVuT\neg+Lqvcb/S6nIvZTcZwMAHhg5XVXWSphYUT5tAybeTpLZp0/OUFKkQf1+blV\nwYycGvwjnjNJ6J4i7swMWhaMeYgubA6FsTo/FLOX3gE6XPz4VjBKj7uFAPb4\n/go/qKLketIrWgbFJdVp/hXa6+kF4VJwLzdLY4coo8tpDroxolnD5ZjE9tiG\nb+bw9EHsV7vz57t0H36hmVDvthlTdQTEHJbmTzmhjLGCGS4mOqo0eqILJlHd\niNK9NOZz3F+P23Ww1tSGaZERsBR0v0X0BvJllWQmzQ11fN6ZbCA9fv8FDC2u\nMBIu76BpjFJoex8w9reCByBhudMVqK44tlTM0nGs9aQDGT7ikZuYtQx4HTMb\n/81U+wQ9V1iU27zdEC6ryKKS7R1rwQeYDuW4arcEY4tFqDzIt2YYQryovtKx\nxCBOqqZ3SC3UYnrNeoaawr2vAB0mP11Fbwr53eM75S4wlq3ANUOKoqwvjxf1\nsmujTTvX2nuH9ibMbI3mEZz0inCXdC1Pt9jGfuoM+gSCNJZdcl2eYLTt5JBp\nJOsP\r\n=apu+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICRJYJxD25sbcapgVUT3/WRqbxTfOA5Yk6myaOS7nYRjAiEAvI8Z7/bK2oFytDrDc2U+rsWVkvUtDaM5DJltp2OuGDY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2-next-1616447856-e63a95d7.0_1616448249166_0.5423987759111564"},"_hasShrinkwrap":false},"2.48.2-next-1616499348-7a8e8470.0":{"name":"@xdn/prefetch","version":"2.48.2-next-1616499348-7a8e8470.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2-next-1616499348-7a8e8470.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.2-next-1616499348-7a8e8470.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-7lRXtfH4H7cQtuY+/11zHrnftHEwwtghuMrV3RmBmB69SkvCVpy0zFkxspPCp0wezp6tK0cjQBI0pJ82MG9SMg==","shasum":"6380eecd7fe76d895db8cc85f512d09f6c2905a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2-next-1616499348-7a8e8470.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWdQICRA9TVsSAnZWagAAuxkP/1Sjepd74CFfsb7puTXZ\nZnn9KN4FCgSSQeIcBZUiHdmsTh5iQUVuQPPaapT0Es1sxvF/asrfFRyDC3ar\nMd837s09PCSjoM9u5ZWpk8bOGVqEku9Km4dX58UIzbTFErpE26unAoPiaVew\nJHzL6CA7RS6oYTJoK1rZDrI8ntcmkPjwKU9NPCZq4K84OfM1nltenQJ27KqY\n9SMwplrewyi7u4ZlJBH7f/AW8Q3jOxQcI0j9ccHDmKe4uGF/F9aR6JEyePc1\ng89qHqTC/yGQee8XI3cj29UgKkBZItsiqkBhBpiYP0FrpCNz272+PXApQ/jk\neGacm4br8JmSXMdgJDMo2TIn0wsYtlQ6EKKrfLIHYptHJTrai24V3m83ch5V\nDpB6BWnIL6aH7c4cSH6f8/Y4EhamPsblUDigWovGW0z66zJwo1a470/kA6el\nStQksB8E264pe2IhCnqHobP4TwVFtnM/1vydUVzc51SzaNvKnNN85JH3/K+m\nj+pUiiTrMgzjGvG0sr4eW2ePZMdlAj8dSpU9Fl7DYpeWOb/f4qugJ+mAu/mn\n1MewKbgKp2Qx/o+hivfaoIBX7JYc2ZGunz2c4WT7zm1EfxQrzRPuzXD5c24W\nVg9TGqp12HSlHE9H2Z4kRspy9biYzLRFR8s0EkfZ4YkQdcJcoe3IbEe63nzn\nzlSf\r\n=VE7n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDATn3Gb2vCTciGUqrMAtc86gY8pE3O1OGhZKN8ui50wIhANq0QIg18jJxfWyPkVM220MJo6vJYePcCbZWUgkCJvuW"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2-next-1616499348-7a8e8470.0_1616499719829_0.31152612604640373"},"_hasShrinkwrap":false},"2.48.2-next-1616499509-6c2abf82.0":{"name":"@xdn/prefetch","version":"2.48.2-next-1616499509-6c2abf82.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2-next-1616499509-6c2abf82.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.2-next-1616499509-6c2abf82.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-5XCil5pYc0MD+b2YWyK6mjQFdwHJmTVDin/b6WfV9FEsjXJgxrSYdAMrxMxFJME+W8CKHBnuo6szGsh3yXxarw==","shasum":"cea6984acc8c751a848789917da138c240538278","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2-next-1616499509-6c2abf82.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWdTLCRA9TVsSAnZWagAAOw8P/Rkuigz/R+eZJ28fU9m+\nTHKBZuM1MghmFY8RKSzAgNWzNZKBPCokebO1FM7nDPdXT2MH+bF1vsWcA5Hz\n3Qt3jqY0sPDdP/C8W2Rbza7BEUJrqJp6qV0WxG7mxxW1IDheChp8gaRV0i3o\nZ1XX04ft270JYn+Sks7Y7L4QELv0+7e1aQLnQxvdjyGEPlhKehL09MtAPCnn\nIbnqP/TfIi4J4fCFGsIswc8p8P76feRlq2IgV4llGqIx5FGecOJFeFg6HzAx\n58Pjwm8uEVoko4+e6n4R3qWRjEjs7GSB4pKHGf0W/mblQKPJtfdpFYmufSv7\nZpd8ihszW+/CD5IyWpoISaOqbXJ5oHVhWV/uuV+QfjmYTWGFaH9T01iGL/vf\nkHFGDzI6gNIwLTEnAZ0i5VPTvT7Y758uwbwSLEVYxkMq8fwcKVlbyxtaVfST\noKD1L+3z5G6SOPmpuucGLot/dhae0EpWXGWnx63C++EaerNkGACKv0sRSs5Q\nm4patoBL/lr+9SqXz5fk8LCV7kSG+LOSZQETwbdXODF+gLsAUxQE7+2Avxzd\n1gFYU5d19v7VEEqViH8j//1N+Jcc0n+2V78wjqSgMiq4G7equs2PBYdWc7oL\ntqukjZHGvZDTlZQdRlP0rf5dKP30Hv28bJj3qAmBCEb0IqkaX3fna0S7wt7p\nd2Bz\r\n=5pHI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICVU6agf794wXbEKttDKNylnC8FCsCLa2hpaLKKU2y74AiAjINzscCe8eyXZ7JPUrdOHZfK4AafEARERa/SmqB/3Fg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2-next-1616499509-6c2abf82.0_1616499914590_0.8074195286133907"},"_hasShrinkwrap":false},"2.48.2-next-1616499718-c9dd6c08.0":{"name":"@xdn/prefetch","version":"2.48.2-next-1616499718-c9dd6c08.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2-next-1616499718-c9dd6c08.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.2-next-1616499718-c9dd6c08.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Pr9TmiJjyT3uVKEn5mIF5XxPDQSmEcQM92VGLxwC/dONUl9WDjUyGMaHl08tCwArTJx97A4FW96+g4hCtQwJ1A==","shasum":"66c0e1fab9000b33da5e595605f994e3b9fb3f6f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2-next-1616499718-c9dd6c08.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWdV8CRA9TVsSAnZWagAAcZsQAIRl6vOklwhQA17zQWte\nGNGQSFZirHOVFI7s6mfcEEY1vexsqpvrmnBD2DM9m0cMh05+sNZULtd3fpo1\nG5i+oN/+hd01VmBVoj7SC8jEDnEl9LQmqspbZA+OFWcfiVbeb1i0R3dVdsLG\nfY6gRW7hyoVGJialpQTr2Bd5qmkUyMtpywiV/DEuOYRFa1vMOyD49R4BlYuB\nGl+vRe8F9BT8iPlVwMDzLLPoC7iGjTeYfjN1yMIwyC4yjza8LmmOYfw570ur\n3SIECoUkeZr7PcMVaiQdlbcOPdeQu6JxRIM+YVJla1dpp2l+BobzPG9caXFx\ncCGpcc26hfe67GJCaHzy6OmAgFdhDqfah0DALiGzp64wktxFxrIcQK+HIYoL\nWUfsZylH4+QnxKWpYHi3dKAily6LmETab0SJnTWqDVsdX/IabecoTPUg5eEA\n3d8B/1f7fxM0RAPk/3BBC41X+8N8ucpW8XwJJbPChq08WZfcwwMlVFoZmXV6\nQ7zTP9uj8IbAAgBQEyWRArWa2/Y1+gguHbLaqB8L8lnLM6Oh5LU9P3mKs7ep\nOaoYT4dRxaE5PHvG79XvSypTtxWX8nvkC9Uox9SfgyN1CbGmn/m4qBAElXTW\nz7S5/8R8E9bPdBbvGxCPNcPdfIkZJZuzuqlSZWfALjifJIfSIBU72RadYTQ9\nR9P6\r\n=paVG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFnmrBcbzLdG3i8HTdlQqcsi5418X5zI/dKUTkuxC0SiAiEAwEUWk44pJgrSEJIkmM4KmiwO6oLaLK1qpMQvP+rg6LU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2-next-1616499718-c9dd6c08.0_1616500091857_0.16228940729629504"},"_hasShrinkwrap":false},"2.48.2-next-1616499724-e8b6336f.0":{"name":"@xdn/prefetch","version":"2.48.2-next-1616499724-e8b6336f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2-next-1616499724-e8b6336f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.2-next-1616499724-e8b6336f.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-tbm7R1f2gGD0uS021tupFIpWj6R2BkglYNbBKsDTeqRtulHHYFZKFJppbEIc/MX0VvLFv/evT14Sq4sJI4SBKg==","shasum":"fdf2bbccf840b62d2640d0c905643cc93aed08a5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2-next-1616499724-e8b6336f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWdWoCRA9TVsSAnZWagAApi0P/1JzDpBdZ5odnWE6xTmx\nXrq7irfJr1I0r83u8Irkd1tz7fTzyuhFwhw3iFkck/KxqIk5RpKmiFwMif+s\nrolNqRNCrvbt8Xn0TvZDSmEJn/53Zi8fDRtrvfD4xs17qSRBr+byX8Gu2Mad\nOuIuMlF1yWO0whRgd+p8D00H8RALiZRfmDPzD8OV9aSmrvn1hctCWfHsrj2Y\nvCRBNeIfYsYiJgTT2sdjyBqf8r38q82sEIIWnMIOpNI7+kQbITP/Wgv20p0V\nIhaVaHZQhoLcR2pyJrH9+VcwgmdbEsaw3UiOzNcvfqRtmfkgcPtqR+KzoCuH\nPosHFFNT+a8R954QWnYaKxRej/8ZamsP2PRl5Cj4bHleX01I0CLz4W0dpQh2\ngVE+TsHZjg/7BPKYryFIMKA6lIwjQ9mIKQMCmj/VEIhF4jaBsU6VFKoX3LwJ\n+M0+qiMVl9ZTda+Gt/ZRVLGK2flGMSA3DMfFHwHBqTMPgAvwuKYmKNEXOyZC\nMfySg8CGH2izaDCVA4Pd8iL7jhc6pSRHY1xwbyoI12sPqANGFSsIRehZei0d\nPFkQlqrkNmxTPe1fta0uRf0I1rZgzbjbYyeG9Ep/w3sOMwqHC6DTOlF80QM/\nm1pB3TypSV6JfDFe5/jfuO42uy3+0uR65ACepnQNcy3l2doL1W0Z9yGpcEah\nkAE3\r\n=XhPx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsnO52r2IqkF/Bo4XqmF4BBgLlMnzr+nHrxZFv/ykMZAIhAN6gzToHbfD1k6O1c998WgW1N3nEqF8oVL1mOXw9Gjyn"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2-next-1616499724-e8b6336f.0_1616500135470_0.6263367106335063"},"_hasShrinkwrap":false},"2.48.3-next-1616545702-117fc3b5.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616545702-117fc3b5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616545702-117fc3b5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616545702-117fc3b5.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-E7qPHJ7F1XklUvtwTdch1q7i/iCgccyYRUq9bfkmawilhzpPzp0bE98KQbASNvdSmLHDa5686z/fDg9rioppag==","shasum":"4ce6bad0a03b48aeac5bcd65f8fbdf3a0d14d987","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616545702-117fc3b5.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWokeCRA9TVsSAnZWagAA2YgP/16bydaojlgbjkgowNz8\nRy9O9pOMBRCXwCMaRQQDUpOVVubXfSesTvEG8kok0gKIqtSKOWYWkj2pguFP\nvr2LWuS8n33daeySQidGdt7uXfjvRNmKjTgKEbTET7obd0OetSbjiEJBHf4/\ni3FZM8P44KXCEWUxpb6sDRtAfdNi0POJWe+3sw015J0SrmCb3aVp3D0b/Clq\nmajE3ml6otigMQU6MB5uLa/KU068ALNQNCVNgWdCC6KVQ5UK5bUHh8/W8gK6\nqeCir/TDxtdps6JOsTYMlMg6nDKM9rFkdCQz8EyRUw/C5wNe9QQoX4fnoHyB\nhQq+fF+8V9ajrb3+6vnkJOyAZbYB7nccARjXhhHQzMvMIuSluUPnumeD0CPn\nkPku/FPnpfUoqnv2cwiXsnIM/rcZDXD9cSi6pIEKFr9oPxQxTTArXSrhn6pJ\nAQblE1Vi2K4hjhwAGUVHbfhPy3H+9vdqa7B9YR3fJf3jiOY/Bb5wc6pXByfc\nXcbUAu6qxFk14zBbMDQ1GsG/I9DZPTNuhH+gUsdNg+fa7BwLVAKFGPKUtlU8\npiSIMkWV3A48xzHBSQc739uRe6o8DMc74mOQB7Si6mQyAIKPzN0yT5mqjsp6\nFM0qu9+8Opra31YMS23qPDwIKtZC/7lImsU5ILZW3dSlq6KuXZdc6gjWZhCx\nvxuX\r\n=dW8I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD50YQUGmDs5k5DdO64Xs9oALZCqsQD59WZ7HOyQ00TqQIhAK/WY0hO3Lwyd62ilhnaWbHmfhCtzwH1eDH8C/G+m+3a"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616545702-117fc3b5.0_1616546077972_0.18061640540720436"},"_hasShrinkwrap":false},"2.48.2":{"name":"@xdn/prefetch","version":"2.48.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.48.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-SqMhbTQa71lxaJIq2SPvMeGW+gVJIYKODBln6zKi5vYguHzRLYgBnmO1DQXTrgaCDBNzjEwigIhimfZEwU4j2g==","shasum":"74e93eba7aa4b7559cc7c88b8156206ca5261258","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.2.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWo7vCRA9TVsSAnZWagAAWAMP/j4Z6reqON7WUOoVCNDh\n50Lgrz1bucV5KZvIBoeYx+UwyFLzH4wpvBHKvGe2Kx2DvUph0tJktj/5lMBp\nxEdn4z3jFEgforFvkG1NU0Krogj7krfFCx4WjPUQKRfHFminvwFcnfFf7EPO\nxa1/ik4A6ejCA1nzeVRYObNMZn1UtP+XB+1RA4F1V/0rBc+w8lU9VnvMzj9e\ncWWVbIUU5eT0D5PKKOBllhQAjsNd3PPEfbtKAGAowxwp0oBbRhTnVnFmKf4W\n8EYJKiqaOIHUC4oRXb5Tpnl9t7s2DIw9XRz7JrFoLNq2I/j3xg1ZO3itLOvF\nsbJjIJ7roJkxPL7HRRysI7MgTOUY8O0ZCFlM8/2XvkhL56h4ORGUbNvBnmeJ\nUbVH6mbbAISCBbAC0l2O4SmDwCKZ6C0N6pvqeblk/y0lBf++zoJUo/VOTtXH\nNxVOlMnYMcjd51iQfK+q1dDsGXJZBebR905vPC1y4NIu+9heQfzLQn03ZEr+\n1iRP6ODwS7jfCGxPMcaSx+Eh39HI8HrjkIxtuKcEvloVcgblzk++iwduvVN1\n6LCVfkihh50tvjPa4dcuvJMJvh9uKtIl7dDzvTR7NdaBh833KgHldyc6q0qC\nM8WYLf0Tiz7IxGhRfVB47REFiWKShfxqr/P1a9JETC6YrVVeapvHFLkZlDYn\n2MNC\r\n=p8oD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIADoZmk+tDc6mnZ2DC+vMkgk01szeVvQAGd9q8mnLF7XAiEAqwe6Tfwep2Kv9WH5/CxqAB+y2jZlErDvVji7t1DtCDI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.2_1616547566509_0.7650238934463411"},"_hasShrinkwrap":false},"2.48.3-next-1616558303-577c3cb2.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616558303-577c3cb2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616558303-577c3cb2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616558303-577c3cb2.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-15EUivxS//vS4bWy0S3T045y40vkJDo7O6ru995o37KBG+nNpU7gHoGtnp1bLn5xQLYaM7CxnBEaUtMJHs1Zmg==","shasum":"e371b6088ea577830f0c2d9785e25092d6058fe4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616558303-577c3cb2.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWroZCRA9TVsSAnZWagAAsWcP/1nvY4FlLa3LGkKAPGkB\n+vlnsv0n+uBLv1pjq5QiGJlGpC4MB4At+ULsmrhLPdQ/ZaP1PDWR7+l72L5H\nKgZmQ8V/r6VTei38fTb74h9mQuCTwJzgQq8VUCLPwdhR0mXv+rGmIeWLONHl\n4YVP/JmixNSA8nhsDJO5cg4kEXaQw0A8/adM4X/9KRTqKNoTbReN6+KA3Hh7\nEqDF58r0KBEzs+wDG6irmIGDkZnfPdolbbR+v7rJtQbs2KpHGTVTSlqMr+WN\nP/IgznVFvN7O1qD7nw9t6BjCUHppAwoYSOY1SVlevK6TkM0GHMwQD5qnngwX\nQR8lVgZ1MB2CkBlDr00bkq64FZzeqVUmzAqFa6dPRTIYgmhDVhf0pLVyk0pW\nzfBI3bt7FM10WVOqOIH8CPjH4TUageJf2C+ZunedrZYgc4TVyb5gqky6s7Jd\nYHodGdW80hMbYenl5AtWza7ORZnE6ey5N/9rU85kpn43S9rO/0qJeV3lLP9o\nhxsa+TZ4/mAtcGYbJkk1Qjz3IK4w0nBMv/Z4bLtafEqJ7X1RfRlZkzbGm1K+\nTZpz9YK3lDumH/mjdK+YHjWgkAcJTwzx6gJZ6fzmJ5K/rSXBYQ27YcNOkrZa\nph84xy/TyjehrglzsNa8iUsAHasj4SnABLTPjGX5YEJqkjELyIwxP95wl044\nWwns\r\n=SMQB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDybxLs1Xm1PQLeHEJ6XDmS/JhcEqgQcZRujcRZ/PoMgIhANy5CWF/q0sdBkWUlRNhDQKzwvixhVM38sebpsa1fiCi"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616558303-577c3cb2.0_1616558616938_0.3675867134337132"},"_hasShrinkwrap":false},"2.48.3-next-1616558335-7d1766d8.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616558335-7d1766d8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616558335-7d1766d8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616558335-7d1766d8.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-gjoAZUoW6Dx6LSGmZ3srT9ouQPaVxKwCofUcW2T+/BDXQ17Cuwm3rlrVZCHbAf3fu13biypNlTYmpJOyNaLQNg==","shasum":"433ff4b0cb2e3bb986ae49fc48868293fd094143","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616558335-7d1766d8.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWrpsCRA9TVsSAnZWagAA7F8P/RPhnLp+yKqUh8nJyfx6\nWwfmY1u6WnOkam6UHR3A7EfMSLUPLDn8r5homrhNRXI7c6xDf/wBhqDYLWfQ\nxfn2KLFD34o4BrNGGHceMvQkvuLPwULFOFvIHXySIByOVCMY3Mt2+DWO3645\n2MlfL3uwhGXtiU6wYM/kZTPhhJmytlMuQOKYAv43nq18Fq7jznBe6KjPRNac\nyfmn12RubUu8Gw833syxKsaSrmaM4XlEtyIVM45c5RuogtyyfewnhhxpKRBG\ne1W7WKYk1I7p1SSosD4EQ6NKqiF6woXz9/Rr6vN64F6YCPcWMQjcaoWBEh/D\neFryXMHGACC5Q3bxvVrIx76zo9rKSUX6X7Po4tCuoerC6RXvU7nVnrroGm/Y\n6BDHCqcHrSeAGcjfFIbOpJH2lKPJa7VlIRev/e6WqgwONZcaWGoFa6KIfLAo\nyUSgUpmi7EJoa7ns9KQyBATwd/+j3RQBQNkiWbYg/v7QRTkJDwtPyVrmo8P8\nr5msek6uqb6rMI5kqyemtiFXNVN5iIcNjtQs9ls7K8YsZI2Md4UPUu6mBQSc\n2Xyed8f5YF60AjSdL7hiFcCbdg1MeVIIWOfHuD3Ed1xb7OqRbbWVs7ZcYHHJ\nnsCZPJ+/OYJjZEyPLfd2QkdfnxsAOINi9t5nCOqEQ+GH227qQgJa5XAcj3KX\n/4Rp\r\n=PUGG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHue+eDOf8nYYn6HsoUsXibejt+cRhWcqKx2KbhEjKvcAiB2scpAo/XW3jucY4ZP6HREmXxB1ahEQtJ+J3tKXQSCXQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616558335-7d1766d8.0_1616558700080_0.199629752315855"},"_hasShrinkwrap":false},"2.48.3-next-1616559231-e84cc609.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616559231-e84cc609.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616559231-e84cc609.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616559231-e84cc609.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-glWboukCtZyyD0GHtjABK3DmTRq5Jg0VAR8SzTTDMxmXlJtMRc0CgPAn2mb3mp/yg9U4UGu2jUYuYZPg8oiCcw==","shasum":"922c759fda6b783d80aecba87e7d796d7f5c6cc5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616559231-e84cc609.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWr3nCRA9TVsSAnZWagAApa0P/AsF8iVnUCf8L0wq8KQj\nXifMP3WsVmK4SbaKzRMXxqxffUynMh5VPy3ZhVJ25hZDmIx8rJ2uoyUzpbnh\nDyu0KRsKylarj844L/juUJZrJzmnf18ci8GZ+eRZPrvseQ+ytg+EDd37t05L\nikzQ0LycfQ3jWU6Tw1xE0MnNKmNXaguz+5w2UIGaCepjO2La7ncx+me9/5FA\nHK8uemcVcZcVIPpxDqNsMW2prvpmYO/dSKYN1UD8j4QS1Q+0mgwSqeqxX9Hv\nlenufeRw0zgIVRFL/e3gVqysTV0ro8U2x/tDkZf3+xPx0egAqiCgWQa9mliU\nSedwp666tukgvNUdl+2Bc/k+x2jnywCQu+SQRxZc/OqCXnDTQf10f5ErZg+w\nAkpIbKfZQU5ptSmCjecZ2AF7SMRhF+QakbVZMoc/njJjsjRdmKgImtc46yZ+\nPV4Lo8ZMljS2hSdN+Toif4JGUBQf0uJwzbs5CXDb1GDY2vvO6VNU8Ol7ZXAc\nTLhNukymYsfdRW8/IAS5uwY9RUPkpPGhegpQ8jz6Y0eKcco5vHC5USVgyJDF\ncJ1ZGgqrLC1YyD9vCTZ6WIxkztW8H5PKhXOwFb+jU7BR86zECl1FI9MTiiew\n3VclIn9YCPHdFsRa/jpWwl9Xj/5n4ZHCHH1SMrVlTOjDaW3mKhdvncaExvzf\nlSuc\r\n=GOA3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFIp5bx07xvFlln+yBjVWT+RSMUHbJAJ8Nqla0kUEHqhAiBTnVLR/pl8daY0eDX9COclUuNGJfKN0BfL3mr9XzszjA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616559231-e84cc609.0_1616559591418_0.6785589149405542"},"_hasShrinkwrap":false},"2.48.3-next-1616559258-607bda4e.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616559258-607bda4e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616559258-607bda4e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616559258-607bda4e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-lCUhLb4j4XXkAJIiDbXJBHDQeZR3kaQqysEdqmawndKwSOPH1IpxHPpzeCPLI0cO/3FrJhD5GRnC44XD8tOJAg==","shasum":"7f6ad8d76285c863af840c0baf22d41fd0caff98","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616559258-607bda4e.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWr4rCRA9TVsSAnZWagAAhhAP/3XysOTOLSHERVNzcFlp\nVXxxrTuf8vdhcaZLsKayrI/ge6ncM7sjjTv1NZk68UP4XKdAZkc2Ij6cYqDS\nmyNkRxYlcQcDqETw5FA5xCsPUnX7hbi2ulAV6a8FKI3zfAOOMZ1UfnI/lgcR\nf/wqJG/+CR7gQ3NWT9iMqAOEzR6L+NXV/Z1Y1CPiWXyE6Zs9kpFVzxsM/vbu\nfawCdA0rPOgcJ0IQfwmcvQTMpdm22MZs1egakbF+zbdxxoOyxqfSbc3nxpRF\nlzbaCtjbM1gRAQGTJmbXgyIicFV08cfZ8lNZpbhfqbmI+Tasi+ncsWox0Cy9\n5xquVFrtdWMqNE5WINeCsmlXv3HPeSI7LE5jypoz7bT7xXk9+VwXu8chAx90\n61MIuvJ/UYSVx782A3chSwxj4gC7Nh08yZDKcwTctHxNFXQ6PimdkRNokxLG\ngldDkZSAdJk7cpZNrvcoXLGB1r0aUU5VPq7HtUqOrZyVfXzM3eGgizlP2QDY\nUMsw0wc65C94TdjS8Z0RuZ2Rdzegx33+Xs7S6TJjDDpSX2FwFb7ublaIGlUF\nHuKjS4kst+hLJiJ1EbX3rV3WWmVT1QDAuKnzSPon9vqcqb33ojtsb/+FWadR\n7CtYVarLjsal+Z3eD9Vyx/hXcyVH2x6/KTufwTZKeggMwun5EAhfkA4XWGH/\n5X+O\r\n=oWHo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBAe+HDHBkfZHgPiObko/l+x3Ca4ZH2tYzaEwiuqk5VJAiEAgF4LxSNRTr5RA1A7GPM1wI1cKWVRi1UIRYZGTC5juXI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616559258-607bda4e.0_1616559658647_0.7069116625355156"},"_hasShrinkwrap":false},"2.48.3-next-1616583490-09b87ec4.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616583490-09b87ec4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616583490-09b87ec4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616583490-09b87ec4.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KtuYWGWh8UpSDixplk75/4X1q1QJJhImHF1NO7mvC4I/RKlo1QZfFz0XzpKHnvUN7SfXwTE9tcxvpKsXD5aNwA==","shasum":"069675dc0271f0de5e16232b5285aba18b5c2c47","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616583490-09b87ec4.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWxz1CRA9TVsSAnZWagAAuJ4P+gPxZ7kLQsVdTrojWjUC\nal9Q/HJ58k+NrTPfSiWZT79xM+ktJWVjdagrT2Q+1zFC54jAm1ngAL2NCH5/\nVrGb1uIe6p7h8JNdCV7MTmvD+2QtNbSd+UhD9SgW4M2P00imomjvruMhtHMj\nDoCPRSx4q3uZNJeFxAczH9+SEYQiY0AzZIiJY/SoPC3mCI+Z5n2FpXNe6h91\nUULaKafEB5kVIxy9kMXIiY4FUwv9ANyNdL6IAisszZd2RwvasYO5S8Yqbdsl\n+Tqn/9AXRvkCZR2ozpPg99TVoSgc05gqMp26ySmVpk59+mgs6d/bCQGE5s09\n8gna9REHx9CmWT9xH6O4xG8UutOTe1uGGuhLzz7Ziyn0IPELZNm1Q1M0OCp4\nX4dH899EWm1VLM0cBgqtMKxMrOXuDCM9G30mj2o+klpUs/NsRNfyaMPZZC2O\n9HI3glEOON5vMG+duDo3ASUsH7t6i/WR7Jrck7jIWPFoJtlaC0BmG8Bdagwf\nWEKUrRpMWNcdktBePfKZlrljkcJ6uVyLZVwd1p2MgyqA8A4dOnjKkydDIzoe\nbxHLGPdi1J6Ccy7+ZPTSZ08pbplggg6NBj99I/mBt9/I6O9KAoWe2d995Rlc\no1dHVfrLp9xT+T7Fy/SZP7eTf+vU1Xw/jEspw/zkiTqK6c2WU0QksSMoAkdV\ne5Z3\r\n=QBas\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEE9cFv0dRTGpcwM6xzLar3fh98n3VVgEhcfFLXY/azbAiEAmaFSQk6DCyThWd8djDl8Pmkt7dVbEm1WpZkK5Z+BrVQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616583490-09b87ec4.0_1616583924454_0.040586390907043635"},"_hasShrinkwrap":false},"2.48.3-next-1616585208-09b87ec4.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616585208-09b87ec4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616585208-09b87ec4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616585208-09b87ec4.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Yiv9g4+XaECHZ0TSzFvqYq/7mKyev77uT9aPqBdrJJgKmYnH5/a3cX2V8FT9SmdgzmhMQmNZDGgHkY359Tv7zw==","shasum":"6ebf5594ffa49ff37e5264154d455040ff7375dc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616585208-09b87ec4.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWyNwCRA9TVsSAnZWagAAdQoQAJlowr/5XhuyAYi1fiiy\nQsKZH1yDbojDWfpgzmjdgEpset5aUfSMFXLkPa8Nqefl7CaWx+8mqbR7PD/C\n+xnaPOYyJdcayIuQGgKI+SqxSsa6ccZfgLs2FBFIV+guUelFEejSX0xh3TRC\nJGdzRjr4OStPF7+B10/4lbQM5rrbzPGnR0tVbCxwBfxNYaCMOCiaQPKsSdve\nlAjDOExLE7YWW4MqW61/JVNN5JXO1l9lqcnsXnjqNymC8E5VqgNGG+jpNI3y\nJy3UxeBhsfcA8f43DM317bzWa33SO2Ocp86OzPSTahH5cqlpMFWZtikec+/v\nDKj7SVLOG02oOO0WBOV+6hlvQuSTwf68ZE79A7cJIDid9Ch8YeIBSCwFtWl0\nqix4Z6zjS1v4XUfQtXcVW4g7JpzsH/jFhnoGoA7PcgiGNXUYBkNzEw/iB0MM\n3YuhO9vbgEt3qZZoBMO+MQhQJqs2qej8IChyq9+b9yoVqPKSvX4JOKlPF0Pg\nX8LAMJuS9M+JfCMCJ4RUn+NtTzDs5XlzewT89MUVkFEtTAEDfkG4o653w07V\n/gf599fDgmFUJ3/jb8+gQFvmrxYIAilrpwIgc3d/JwgH7EcpF314prQnWhJY\n2n0w3AcIvHHbsXxuFMIQ84WsbeijwArFclTKDEuXZUSNZ/1KYs3LitAvzpPS\n1Uv2\r\n=wzdZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHeLE/sgFBrb3+mSix/FMMPDMD0cLV99cychk78wK1xLAiABXp6RYvwWGqa6X2HfYn/aI7+KHvGcK6K2V1qpTFy1iQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616585208-09b87ec4.0_1616585583872_0.10382484202441544"},"_hasShrinkwrap":false},"2.48.3-next-1616589791-1e0b0818.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616589791-1e0b0818.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616589791-1e0b0818.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616589791-1e0b0818.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ntrxvPy41B4rc/P8bf5ma+aB+9QnReoHIL5i+XjxOgTgq27H7XqL7wuSexwsbqtXI2tY+4OxR83ohjd9Cbe0TA==","shasum":"ab58dcec34e9060024ae761f574ccdb8f9ecb2d9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616589791-1e0b0818.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWzWaCRA9TVsSAnZWagAAIJsP/1mROSDtlXJ8Tar11uE5\nUBtNtXYwXWjv1OWkj5J1lX2mIZh2lPsVOlfRC3W02jOrxSyIA66aZ0z8VuJ/\n8ATrrKcTUq8B2fOKbryH8vuPwUbNhaJeBT5Z4/WSPU0RaNT72zCixVRF2f88\neWDQitiyVPFJxm6JoHaQVvB5TKrmMkQYGLDkrTnLualNwdzdayZL81fLR324\n6u+74aYP/3ZIE71TtpVrrEeYxErf8EZFcvJ1LLb4VFIMqDVpAaW3Kir3C3IL\nnpMjjHjCv0luod3xbm2m5MOHejGhY/T/Dy9Nuoqlwlb38wG9zM2GjgxXwNMl\ni8GKN/8SFVTjdfNfEFp9KdlwVb1h58MzwjdhQYbHao1WWZwrweaRwTGivp+7\nr1h7FXqq5X7Cwfu2XRhA0LPVS9zReEE2Bn7UukMjGt378IFuHPywkDQZLBl+\nhAJrmqpIx7Z5cFYPyFun5zTOSPTZtiG3wawK+ZCfIIcKju6jXu3ti/UO90rE\nezIfR1sjloKwMi93vrIdE7d5aBq4uj9nLMGq7SH0I0Xs/+qNwX3xLfdOqJlR\nNydjP6lYKQh0Ix8VvAKnkcl/itb+NlUbtOC0/XH59zZUNaplBD+OzrslE9Ci\nTpfxK0Jjw0Nw6T72dDS20wNppdDQptvCgszsif1Q9+0mwpduriZPbS6m81te\nMivX\r\n=HjBw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDa7vGSXBnqFVOBm02XeV92NxHujfeyIcKTTrwwHG/hNAiEAi13prNOAF68UY59xUfT9TVxUdIPZmKFx11FHFrGna60="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616589791-1e0b0818.0_1616590234218_0.3836376779701607"},"_hasShrinkwrap":false},"2.48.3-next-1616590481-cd8836e0.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616590481-cd8836e0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616590481-cd8836e0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616590481-cd8836e0.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-j/kW45oacIaMCs0DyQoTjgQMAbD4VTQ8SMMUGpLKwrIDR0AADeV3hiVYW2MjrbrcholodXjqxE/yfZ3TkSJPhw==","shasum":"363d046826e46186326db2ed0fcea02320f54127","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616590481-cd8836e0.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWzfqCRA9TVsSAnZWagAAG1wP/i+RLgQHbZys4jjNpwps\nl8KmsI2FdJ8bcp3fNqY3omYxX4AydLJb5sXufAcf8LL/tBar4bNLo5tRQaOa\nMF0zb+wJEPvsZZBoTXDUJxyJsHx7b8jGVCHgWI+q3e2PnKLUinSyzOf+1MVg\nHGH8E/c0kjVYFklQs/Egp17XP+h2PUgPOz0x9MW/SHrto67tdRwx4K1Dl9ro\n3/K4LUXpuG6IW95heHkSIClLjqOCC2gaz/YKfTHOZG6lHfKK/ecwUFctGCox\nA5Vl3gMXvZyqY87p8DJc7bPdkbAEsk5XmRNexDMSlrUsYt9W3NgBWTUlDlSR\nnJbd0WIAI5cy+BuWp1B47p30LmWHGQj6H1ZZ5MpfCAv1jmxH/ixOEJ2Jb6ff\nfA8McEjw0LALs1gpFzIMaLiAF1bp2b/S78O89jMkk+HJ/9zJ56qsPVffDkhW\n1WK9DfLlJBmEV+lKQm0nWNiap3StdXVL+K5nLgn70g8r1CmF3Fcj63tI6kJs\nC5xYidZAnNcivEQq7hBhO1aQVWqCJOu0gBinS6Y5HLYpTKvkQG+W+304of/p\n5SRYJYyrQaEGUfZd0lYKapt/cW2EUtWpaZMkdryu6w+BBXjvMHkw3RcDoK6Z\nqWKKikn7c7gh6p6WZoevfz4LYPh7dATVPjPYVSY9zUkCWWtUCHSlh68N+6yc\n5lSn\r\n=rN8L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGFJcKY3qW6PYioyQtKK23TuRepYRmqeWpFgcG0l8lqtAiApncnovHrXC7paJBZbnzwj26kVYQ6Z+djMjYsVDqfZqw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616590481-cd8836e0.0_1616590826265_0.19302925054162468"},"_hasShrinkwrap":false},"2.48.3-next-1616612286-c528b585.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616612286-c528b585.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616612286-c528b585.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616612286-c528b585.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-UnlGqnaJU1tON5B8BRS91RhDqsN5STkALO+uCLE/cPwCPxCcklvYongxDqX5R1RIA6MKR2ZEbDRpsOj5Y/WILQ==","shasum":"36aa186f0aa9850547a6b541521d58bde56edb6b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616612286-c528b585.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgW41oCRA9TVsSAnZWagAA8o4QAJKI18ZeVbfgSlLrIRzk\nqs7Ezp9YgOMskXqkkAlHhu5fxpWBDvKGyehmbnS8Kd7qGP3ByjcZ4pONB5q6\n3QHLh99m7QF+kxPTcGgzMnwVYvsWkFGuzTstzMd/zNusBKP93baMwBX77fLz\nt6CChIgY0vRH95f4Ot1gljyILGVPsdQb4uY93WS814WLDy8ARV8btSB5lcgv\n/dVn/+9I+41YR3660+Vu9H5mZ2ojzhaUd32beBkyXR9LAmGlGrW3E8W6zaIa\ngH8sVZvV9C6Aw0ulmIs76bob9GD95yGkorygnXR/qMjnX9Oj62yYIr5AgVY0\nQBlM7DiultX0v0hGukkABu8BAfs2S9TiagSKHKys5tz1e5BKPVWsUjxut5W1\nnEXqUQ7LCPP7Hy9Je6dTCX/W0e84bi68m9ZOQ33taZZp9QcBHLXj2zmTIXHq\nxMxjqFJGSCfcHwNprYqrqQjyqNJofH1kr1aWT9yEXAHZ0F1NylfUEBLHMIKS\nAI/bFdCBJ1fRoTYIacwhtWNPFVYPZ2c1uXRAlYPWsNsIv9anjbX8zyHYhQTB\nuIlAXvfZlTVnn7hidn6EpmQDNG1ki8HYUXfcgD8EBJTMb3o5NrziVNiuPW+0\nhPnt+SgEc7+vGkUwcfeSMS5HldQvgjpQlLDanD253YwQGn5sKKPz8o0UbTQ/\nQQMG\r\n=Cpwj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEm6e1jnzIUyaL3lyeBhnzaGzx4HE2imvrU1KrgiaeXqAiBWDbUVZ4+4pgX2AHQtZDANmGLIvZ1QPa2OuOPVkvM48g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616612286-c528b585.0_1616612712061_0.06515028857614746"},"_hasShrinkwrap":false},"2.48.3-next-1616612830-cb2f0a52.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616612830-cb2f0a52.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616612830-cb2f0a52.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616612830-cb2f0a52.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-eSOn7ptYWXCi1n46LzKkNfjDDDmGCtX+Hd8AYuIqevr5O+qX/GlOJyUSEyfreKwpK7bSyFRSzP9zzG1z6GgwLA==","shasum":"3f8f2ecad842fb599aaf7f9fe7030a9fed165d02","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616612830-cb2f0a52.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgW49CCRA9TVsSAnZWagAAw8oP/ibApjb7/bGBWxfcCvyq\njo/tDQM7qOKygxr8wz2V6fZ0F8ADTImhNLOhJb2edOvksH6TJiJ3XnZ3Z1Yz\nvHJS1G3VOT+DyxEcXexwROWlqJUtOwjJHonWZORneiRja5D3BLFIfL7sb6az\nzVftuS/YViWFVIVdo8bWnoNphzS/q4F/hsSFpkmIKecnYuD1sTKRobntBP7z\n55zjdorU97234qjaWu/okclnxy5x1FPOHqo++CH2Kbjk0KnDsv+DW6ntbZrm\nAvu3RV7omF7Q+LG+OPpcbILXrzzShdAxpsS4tDrAKS7GCA6WjvSWMsOnS6/g\nSEbrnCMOXHwwyAE9dDEYtVThg8TtbrB6QqlQYg8eXE+ArlTqTVWe9xMF3TkU\ns5V1Q9qMOJsh124PlRcQgnUZDN+NDoYxCHYbLBEzxGH4qzGF/7d7ENDDwWtp\nip2VJRBZKCEx+9CqvXLL/BsnOeL5F4c+wVzux2ckju6CQqGLCPhz7ar/ygbZ\nhaq+zCznHN/fhr/NmofMZIhtF5UmfnAwmeCOT1PTG6TgOtVZstAOlY+vdKIN\nsbWQNpo0BMOYeg06+L3Q6yReY8duALbQwSDA6zNG6SDCDYczoXmUqnEmCs5u\n/gXqyVKUdGd6/lnYPyTKIGPD3cYEDU+cHNjKR9tCzDEoBC1SOuvheiycg5qz\n5ssv\r\n=bim6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPn8QR1AJ/9AVNdQHKhryO9Yh2AEalUMjBYbw//Doq7AIhANgszjiqGUxsii0jzUBAuUiL/5/ZIh1gdyQtxGEGGRpK"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616612830-cb2f0a52.0_1616613186243_0.2702955454055622"},"_hasShrinkwrap":false},"2.48.3-next-1616674161-97579ce4.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616674161-97579ce4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616674161-97579ce4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616674161-97579ce4.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-GO4pIrW3ha9Shpjk79gPimAeVdMytrAofWH2QJ2AQeh1lfRWVzhb6UHNazmYkEAt0mC0cw6r7ZQjv5sPvalB7A==","shasum":"7c71feef3ee4474ba3ab8e80cd9851bfa2338162","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616674161-97579ce4.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXH7ICRA9TVsSAnZWagAATjoP/jLeP1O+/l3ntsbE2I+y\nhsVVZQnG82zCSOq6z2ctbBXAm3pScw6BGVzhE1b6V9ozlD91K6GK0ayYcsLJ\nhvQHFE6gf7Kngqn1WuzGuohSndPbYNvjDQuGsB86ufPocx/KnQ4ZR2B1rKpf\naeGg4ELJkHUPHljMlGAbN2hDkzXG7w6xcpi+eQAE+uUqCLtII4V8mlDSjjmC\nH4nPjAxwCmkfQ7FuONnMZE2UITH9VPf4KhrL8npIH0MQat8+ec6CCeOMfShb\nh58pBPBR/o7LzDK8FTgZz0KeuR6wshDGN85eAe2RB4sj6qbtwHOpe3dr0qJd\nHmM/WforsbJ2uz77gcJXUamxnfPFqQuaK9y8CoGj3vPmL3sUfZW5NGBAatv3\nWdGtxiNba7B8b1JghoMaeL61CiIGafHD8xFJbUc4qU2KKxc7o7YXFi9tcSkQ\n2fu1ZsG+WMTKz1XwLL1kfk0JFY+4JvK17ZH1Vj3pUozJ9ErRkn5Jj+EsL2oX\nUuyETIcHOPiEsgc8BM8m8dJ3uUgpBrB7sVt/aN0lGOH+nHSbMIVK3YTyc2i5\nMmSru6OByZ03uT4JwZeB0VUz962qoVF/zUjsMcGOxHnF4R2yBmADtFGmgPx3\neQiq7jZU3FNzag9c7Oatvs+cKNTEgzDs957R1i+Ubos7sCvM7+nCSxtxp+s+\nmYa2\r\n=km2e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB05vVwbRGXp0ijIsb4ft//KfeMKa7xcHLA6GZaevdm6AiEA9fDul+JyXHb8p1+hCXJ55Y5fGuuhtJudlJL+YSQmPwo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616674161-97579ce4.0_1616674504250_0.5316455193239116"},"_hasShrinkwrap":false},"2.48.3-next-1616676832-d64b4818.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616676832-d64b4818.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616676832-d64b4818.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616676832-d64b4818.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-PUp4ebpSPIiV8pDpz+bWu58RoweZXHYIEdPaoouqN6THGrUe0yXS6tAw+7wYb0thBt/9iWQ96R6MlnbtyKrH9w==","shasum":"d089e6d98c66ad223741b8c8823c8f3d56f4bb14","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616676832-d64b4818.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXIljCRA9TVsSAnZWagAAY6kP/RuUVPlYjg/BMKOWEjw8\nIXNOAHUsI9xKXJRmS39YKFgtSAPzV+RTMi8HkeGbo8S6u1Eo9WRedQWx7r/P\nZYB9iGxqSBHOz+WvnV356hD8tkmuGVxx7scYqUUC5TmrHuwwQODqSgGVpQMS\nn9NM7BKm9CQS5YJkfT/uUe0WJCYsHbwkZcO1/QzJsxHSBFIc6EbrB553rlTO\nJvfoSZH0g9Ob+EFVs+bFG9eXFq3WyL0/vJd8bOuqnqZ1LnfnNbJ6yBz6UkvS\nk12gfQ2VsA37wD4xFKAiqjVGLPqcKeUPIJNp3Bpc2CpNvd3ok5GSSck+VZ1b\nxbGjPzA1qEnH17xZ1gohAcqSZbp+dWEFg0QxaS14w+nWMtC8sfgFipeIDg6Q\nZqS9W/6Tds8u87630qgXsdXUaQ/fx8AWlA7ZYoXMeNC3S8WBaocIU7PRhhG4\ne42WfT7StGaMee5+KXRoLyfKr2Up0+qbKWVAPJzjpv4uHocZTI7bELjedbjS\nAwV5Z8rykYbMvxHBSA+43DHQiNcTvCKNyye7oKKnbEI1EKjG9fDkDvCtlLW2\nCST26Aa2VjbDEhXa9Yuh73UvjyX8/UNAGFrlAPoYTSCLwtLghBCJLTcoSnB3\nzB2hskB1B9Jfj7qNBRfz6n9+QnS4BFug5sC7ed+0LlEmKUtAQOoRma048foW\nvtC9\r\n=hSF8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXWR8v0EepJkIzmivJWlWQEGnjBx/38G1IZeSOTtJsTgIhAIpGAeMK8mZ0cTWF0O/1XzROnHufijePEldt5nEHHWfK"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616676832-d64b4818.0_1616677218634_0.800099660165414"},"_hasShrinkwrap":false},"2.48.3-next-1616682369-6a05080e.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616682369-6a05080e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616682369-6a05080e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616682369-6a05080e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ncyq1W1Xs3az5evG3gVVyfMUBiRq1o+6fW3OIKv4t+HeTLPOUyOjCm9sp73bv0xllpQ74CGdXzVsSAKM/L+BnA==","shasum":"299282501fb43771967f66b5d41c75e0fc558075","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616682369-6a05080e.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXJ8WCRA9TVsSAnZWagAAFj8QAJ1L0b08sS10b/QvjIf3\nXEViViojw35BkqXkvXPbMgb0hVKKUEy3nkkL2irx4hi03q9Jx7SmySj7fVnd\n93+bzaJ1wRz+5X9eeJEC8Gh7mSJw2px5F9IAdQwZJLMhfs01nMLsY7C5n9zs\nBhl0qfXEa6MNHgHlUF4znZuYh68XOvwHcwi7o1LfKxgI18wHSfR399rcDThv\nKGYcxhLgjZ3ycVDO1gb3h+Mjn9DGitNutw5inffpvaaKrFXefCzhlaqcx71M\n/l4QwYFsVlMINW/1kNO/yepcgDJoUIbziMZXndWduHjK6lcgUXtKAufuBuO7\niLQBeLoZrNvpBUJm9vTO/4cKSZpAgkq5oYxsamcGSdwMe0XJqMKqEKjTGQx9\n7x9ZcGHRUsnglcLu+Ufy41rF2ytoetx1Rf+PwpciUuoyRFfZyLRWKQxycb8i\nh/bJdC/Xuh4Cv+7DblR6PHV9ttukWryUJehGXaq/h47LWiG6AIPF98XWG2QQ\n+r+uAqNfaShuRuu8gnCmGkBkqn+bHboRVtA9nODU1xIku60xyY/0EgyJAoH1\nbYQdDjtBs8VxQoCSNm3/ylJAlGuOcwx59INqyDZ2QwDEKvGgMzO+ZDsXkIG3\nrvJYmfVFFCFW5dnuo9kIB64JUlYEGktV7wFuWlobV4FHnkGZdLe6gxmgwvU0\nvhMo\r\n=NuKY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0MyIa47a0cTcW3QBA5GZTbTz2IwATBgKatR60JaD9wgIhAJxKpleYb7rHw59fBPO41thpVGRuXDGoEbQJv6mdifiD"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616682369-6a05080e.0_1616682773438_0.0008233345444013107"},"_hasShrinkwrap":false},"2.48.3-next-1616684911-faca1f4f.0":{"name":"@xdn/prefetch","version":"2.48.3-next-1616684911-faca1f4f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3-next-1616684911-faca1f4f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.3-next-1616684911-faca1f4f.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-IhRmc4JvO/QHZLxvki7T5sDe/roqxO/MKVXDTl3wspkO2oDvhDoPATCbjOR1c7Q8d7oIU0QZ7eOF3iF1ghwY9g==","shasum":"737876e15da2c6740c807eef516345f3898c6e3b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3-next-1616684911-faca1f4f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXKjDCRA9TVsSAnZWagAAsFQP/1AWhlhOJkIHJPTwykoL\nlVaGA1n27mhfon2P4QB3ys8vap4vMb27UZhdHvSXG6dTiI8B5YI3uGNVnKlz\nuG236RqkTA5j6vA6JHzMoQW74GG/Dkv5ZGwlR/fRYl758Wa4DnT9Sd/TqnNy\nzEvwPp6NHXBskvva9GdTzwhiikTHDeeud7s9Kqx9WkzTnYr6p8dMOMuDG+Vb\nnWQE1OKn9g1icH2jHg05ojHOu9cYGRerOr2A2Fo6AO/3WngaqRlH96jcK6Qu\nErmAq2A64wvrrECh2h7wVNUKBPgCXowEG86yjSlnSRyB4f6TzvvDj/jC7+nW\nWSc0ayNNEGLm93GDeWPls52LI+vSVqc3FtThoeliNuX8bqQntSInuCrQQcXv\nrCbb9zj7V0ccddJfrTQQr2LtPHDd5n5P9VbTFnPbnhck5Irose2RAmmukhFJ\nFhC3TAY8hHEka4UNPbfd9kdykRQIBDf5w28/aq5tcm/UsiT3OGLw24k/RoV+\nTm1udlznRSy90B2EhRz9ADgPczzjQaDRivgG7XktibNYfigM3x4egHOTsVZT\nR6A1FFnwWFrvQRQ9itbDexkObNjm8+PDb3RP2C5nB5p+DJNTbr/ENS58/+WG\nVaHHFJg9YjMqYypfa1iTDe2V1iHC35stcAl5CFV1ndKk8eQvDemjiS9+PyaZ\npHSe\r\n=C+7R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB3Am5GNxHoXrKE+dyJQcaNgecQYqt4k0242X1K6KlOuAiAnSpYoOPijJAcK0CKdzIzL9gHOqsen9IqjAQaUgF9dkw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3-next-1616684911-faca1f4f.0_1616685251289_0.8167885633359679"},"_hasShrinkwrap":false},"2.48.4-next-1616691063-820c9b56.0":{"name":"@xdn/prefetch","version":"2.48.4-next-1616691063-820c9b56.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.4-next-1616691063-820c9b56.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.4-next-1616691063-820c9b56.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-vNZ5+kM+GUp5nvVHdWvOeMVIQSIF5dH3uOMNMHL8TXOsiAtebuj+1a5sIG3zIMS5UzOSv8L0iNC7zlohpfUxSg==","shasum":"acc16f722c6e32af7d88643e029e618bde1c5034","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.4-next-1616691063-820c9b56.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXMDcCRA9TVsSAnZWagAAW6MQAInAc1dQMUBtfAXc7f3q\nirJx8qF2SltWkIM73O2cAJKTAXKTfZDSyyBPZ3j4+D8VDiUJedJsOZAb5MSp\nFfojFgt67g6Qp7L51Xi9eXbzu1Gm/6ci4nYnNsXb6Z5xwSBbSTbXEHN+p7LU\n2MSBT5uMzMsV1gsjpE0jKgUQScaduf7w8KIquAnk6NwWZhME0ljxAGt57RG9\nAzVDaAMX8kDVC8c389lN/rDcEkvA4WlsOe6dIAM+urK2IZZvY6dcjcI0UjzV\n1W1XYlYp8/UGHIUekkOztzA93gluuqTcTQJhIawmxBOhBh/0cYq/eyba/vGr\n5OcVtJ1la2efaprYtofg3ykHenEF11HogRfVrRbkFOJBq65waFK9mBiDd4YZ\nPfh3zXcpi3DCbx6sg7Kw/0h2MelMlXtufNMRcMVr/ql5YzJbOfrQUWQt0+na\nj8zEsc4XVV4LIc8hylrlopbDe2G8d5b4084EPDYwjTBAIN14EXB6V9XTG+xa\nJY3x45DtibuzOHBONW5DEoTEEpupUQ0WErSLe2NTE4ARXFGhFKaIuglFjB32\nQMBbVxtCc0nPH9FGTIHtgJ6/Wy3fw4TBIKATTATVPwThQpgL/1Gn+nhU4bQV\nq4nKpO1eV04+hLJP8Fj0lbw9wfgLuFp7ngJs65ghVU1AmgD9FeJtisBYyXtt\n7uhv\r\n=ZUgy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9c9yFVSpGrOooy8dS75yL+NwKezvad4eXSQtlJuJoiwIhAMOjVw15F7VUIAtM5cdgX8dCIioUaWqtoGYccf+8QDkM"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.4-next-1616691063-820c9b56.0_1616691419616_0.15902211805980815"},"_hasShrinkwrap":false},"2.48.3":{"name":"@xdn/prefetch","version":"2.48.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.3","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.48.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-CtJFqeP/fWECCXFN0cFZU0vTBBq95gfcwXEKudtv0HjtvXzEJnR80H4i1UBC+f+EiLrJxiTAuFjck9LIUi1omw==","shasum":"7f6c1b80c7d2d98491f038635967be21ae9cb98c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.3.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXMi7CRA9TVsSAnZWagAA34kP/0C/u2FHnfnLl3TGIdzX\nu3cu97jYmgDOTpW9DPQAvNB2pOYpUJywqoSigHARSnQZVquHrByMrNRUjEtX\nvsZfucMJyvljZFK8oTADJ8BwVGO6Sy/m5SzziAcHb0BgcSD7egDH4dgs61Ok\niklA4jwpHM8aVp5vvniIBWGrrq4pwaHNR+xJF40NanfH5WdkgTdlLtsiwP2K\n34mFiEp3qW+64ehN8rEQNkiwWzouewajSqUwSrbJReY40wPC9NGyNw5KNH6G\n8An+n2SBS+fop8LlhXxjjGQbVhBIUczK68pWo/I18gxPDUzckB0ICZshmJJb\nOyJkKIg/vVztZA4x+Hlw3qLi5smtiyaY2sYI1Fd8GfW4qYA311e2MoNu7p6z\nqw/SqjkO8ORBn5tEgJzWNWrCtJi6M0HmXsVidO+81881uGnR1lnLXQ/3LGHc\nJJef3UTtayGEUbNXD/2pf1/c25j+L86rFg26Vtq7K7mF9hnZ98jfJOT3VmiR\nMVluv5rRQ5hGY7sHBTU1qjmgS8al/Qh1EbUbdjW6JKTzLcgHKz1FDkvbAkpK\nA7Y7HBSaARPAC1tOyQG3rStq9tGB833e7xFSd+rsQ2/PcN5QhaMMZL9FuU1I\ndaocNJ+4Btyq+QLrfcSPez0GJX2gLO0U0yAtGDbGL5iZ6UBq0XO6+LypUHOp\nzwpM\r\n=XqDK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF6UcWXmrLHerJzpTt42kX7wi/hpilpz9xbX5MfulVpTAiEAp+2KurW1LWhd+z9mDcBbSnM7fzBw3hI50QEADB0eQ3g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.3_1616693435398_0.4960887095747337"},"_hasShrinkwrap":false},"2.48.4-next-1616701812-32e6bb55.0":{"name":"@xdn/prefetch","version":"2.48.4-next-1616701812-32e6bb55.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.4-next-1616701812-32e6bb55.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.4-next-1616701812-32e6bb55.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-aJU4FSixE5RCc+IfZdgVx+MBNPyPjEhrqZRPmZmYZBnCfziixDQPGceO9udpe2pF342X1Kxx4VJiYLqww3VdGQ==","shasum":"08d7cf1dd389166957e4560fbf42e1974d7ae0ad","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.4-next-1616701812-32e6bb55.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXOriCRA9TVsSAnZWagAA3kgP/3aPief1Huv6i7x91zwb\nbH5QiHM5D+6xiuk19LsbXUJRFK5JfguUvqhkn7wxc04jxFrRnaYQvJd+Kd03\nYquwVmqoAr171hWnANLXhaz9lUQkUBnVFXCmhegakMtaR5zLK3NkS2ihkaDg\n0CLDBtGLmhTT4TFlUFS6vzRPe6xeCexlh9Hv6tPb+8UFm3i0UsrRfje2cJyR\nGYmc7CYO/7A9q7cLYXwN94F6uB2scPJbUvps8txqIBN3wmFqbwAKnsgLpFke\ndrupvmAgGEwGC3pO9AyN48x8bQjSFpeEhgdtyBnq+XXYdngXDqSrOU5LYwdx\n1c0FMItrHnyj696G+MlM95SdsCGePvg0nMxAYoEiLRvXeoEP9PsQddwaf4lE\nxcRcwR023d3eHMbgtiQh82yQWH1KfOESPy2c15EKmliiEp8hq9thXRsCsJ7a\nyOvHoYZ+t160BkPbuDlDtYBJEFOYzM2GSOY5AZsNHeiJqyQvr92CzYlU3f55\ndKlrMV7s0JJZszzFuPHGOGIS2otr5ExdHk3nUUM54ZaL3n9XEL86WOFV0t0R\nt2xewGlhhJnMUKcFPcfSdRImk03bD5QI1JPDsZ7E1YiyvExyoSEyT9CKbURE\ndwjyExoGuM937qL/Sf38nHm8MMKoKPCf1Z6se9Q++/c+SwDNwazLa02RiyTV\nI8kt\r\n=xA0r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClyUNLoIFxagttXONFVGeBAlwhuesSOzVXpUUmWixVBAIgHxFkSo6VAXfu0oHxiu4mvAxG5e20NpL0Wlvya4gi0MQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.4-next-1616701812-32e6bb55.0_1616702177684_0.09488462119770302"},"_hasShrinkwrap":false},"2.48.5-next-1616703664-ab292fc3.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1616703664-ab292fc3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1616703664-ab292fc3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1616703664-ab292fc3.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-MYWJ2suup50EPq/sScdJ6MVGoXpY63FhfShMibrPfcPmrrxCeLoyRLnqTuRsPN9pQ2uKsL1nZLDlI9wpdcfE7A==","shasum":"e7e972e2cae323265a180573a50476cee33fea10","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1616703664-ab292fc3.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXPIGCRA9TVsSAnZWagAA190P/iYadNsdZ4u393q9xbMn\nXXDY7zLFlnZbz90SwqDUctPZanNQ8uqkpgTigOb7L/fY1t9gzcjRuXE4AWpy\n0F5VPNuahoQL8R7dJ9Kos3ekVqFXIanyALyznXYGAkoDwKdAuDjvWtTId4XT\nArBLsFWxNcGj5+m+X1Ms0M9b6DXU/8HbBWAP7Aa+Tge3lAXG7/uGqzQfpA+A\nfAYXUpo0RarC9snLS7FvWis5/W/tjasZstmaDTFKC85A3V9rWveXa0jK7Mhb\na9S3jlI/JwDYFGr6KjxJe47o+hhW7EsU4hPZgtKughuAXqbuMDoQ2PaO9wML\nZQEW5LcuHWhwUA4URQ7S51JtfnNAnqD/xfqjr8wh3vkOXjIuYqHzsCF1Pxq2\ndeoDWhvrNs7/roZ7/zdmhRQr7WX6ITvy4yMBNBDb/E7KhM6+RrzDwEVSagfz\nfgC39k3f5uWftTNgt4WWZsCObMlF9ifxymsh2iZFfAmbNQMCK3OTk2qVPpGQ\n2uIfuNWad9EKwdxSK9iViBhHIhry52c1Rlo4syUzZPJecij98pae1fUXhPBR\nF0vufcfjXuuPbBmqcCuO42lQDaNeHy1A967a/Z19+8SwxLB/QJMOwQU6Jese\nVunD7bzS91X3WhWq8Hi6B7GF0OLK3cv1ifOvXWkGQ3rIDZI7ureB1VxH2THW\nOJca\r\n=5hi/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCO3/qKpuXaVmw+0t7UhT+yRPqMW652yEMpicqb/iTowAIhAMSDYiXQgrBrdT6dlKH8bpX3vdWMk7ntlvyN/jwjQpb3"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1616703664-ab292fc3.0_1616704005916_0.3004934922294218"},"_hasShrinkwrap":false},"2.48.4":{"name":"@xdn/prefetch","version":"2.48.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.4","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.48.4","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-sVt53A9hyfTfvaUfdV4dWG+kztaaz3FCI+e5zSsn44A4wO/CM4/2gX3C8VzISqX//WykWJ453gWHkjJ3Ht2+qg==","shasum":"9f993d66e6cbaf8a1c94d080d03a1a7ca107e4c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.4.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXPJqCRA9TVsSAnZWagAAAHYP/AvMF4+fjvG9y3d2ildA\nzHweJTRZF2dhqFApL9vIJ0g13qr3cAlec3m8UfquP0IE/SAsttKDYMlEZVWZ\nBIdR5LrJ6ptjFA2e/WY12DzKm2ascFqMdvgb4t2jIt039KoSpGYZZWpuWGNC\n+YgDznucHG7W/MqDd5KuEh2X0PP34c78nwlpKRtsLHUESAVG5NUefzDfebtO\nCOl7LZEPXjr/pZ49kt5LqM8fhs2snrj/1aFkiu5cn3CuuELDO0kGadWPigLT\nRalItpwt1lHDlpj158afmtDZXz8YUaRDKpP6AkeHf8JwjKQt8eqJ0R5+7aC4\nUtOgys24u3/QVqOK+NpTzRxiszqOWZt2A322EJsKXlQi/B6/rtqcCK3xcue1\nWX2TrkrQHqPrW1auXF315ML3AvqetgEa7qAnv4D8XOOh11OYtAbfy4ZAD9U+\nwUFeQOFhvx4hJdMj3qAR51Q6vkmv5ViW+fTXOseuKauveFc4RsLJZsqEPtnK\nG7gtnchkbftzxd0eglkZYn0TUur322QCot4c3hkzoJB1rOQkbI7P4z/aputM\njv4bHSvXwT6evCNRxRVVtVeMWni02yhjRko6KwuORQVdBIxjz26Fkui11evo\nKFrlC4hbGvFCAz2T7zMoXkckCS4prTmWYu6uXNQUh9hawOYPWKVHyy/4++4h\np1n2\r\n=YN1N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE4olvU9dUhZA3yqsoK/r/25+igTy9cwBc4t13GxtJ3pAiAVvJINXBcEkyFoRdGv6MZr8FYcHChZsJibJI10og1DDA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.4_1616704105808_0.14734613495862647"},"_hasShrinkwrap":false},"2.48.5-next-1617068534-d4a6718e.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617068534-d4a6718e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617068534-d4a6718e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617068534-d4a6718e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-C9HOFjCNEyo3YqQtPBnYn19KmFXsZaxdcFTf3fgdu8t3NW7mv8rL20P3ssan7aO0p6PXqg3GHab1fqVISsGPiw==","shasum":"1b5f238d13509ce543e059479710a4f5d6d3c4c9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617068534-d4a6718e.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYoNzCRA9TVsSAnZWagAAF1wP/2XWRHXxPigjqykwCzKl\nYdbygcVEjOEnl/BZHQ0DKKetBhMD1wvRh/LmNVrwDz0HG7SeTDcUvOnWb38a\nNxymk0gOzqKiOiNzyJSSo4rz1BioQhvDSOShl6dAk6nWrQ2UlUFzcaiaCUWR\nE0onSQSnsQRcGkqG+Sq1jG1SsQ8SukoMuEJz83eIQoU/pg44jb8U1bFs81JJ\nXju13nytgx5z6V69BTec3Bub0+JoIKXXDVwOj5QOlwvi3Mz8Ec1W3xAoJXj0\nMzlV3v3igj2Nl6p0sPRuvCs2BoqnXsm6IGH2Tz91Wjc/RNXmZRmtNPoxEisX\n55Zfxs0jUBOoHyLVv4EfQ+nssmso+oBS3hNxSmnDUcnOBCsBWWWJkYL2CAMx\nF17nSmTUwBX/VoGfVA5G8zKUbaoLNi9+ca7MuM6M2iKoMAJmlxDb4gPb+MVQ\nj8sG8R6frrbTKhMO8e2S4sXtgdDs/1GYyJfOxPL3KgF9MwZE2ogTFZ2B1LR+\nTC3sqlsQDSrpbQinm8aQcq7jQlidO8ECHBynnbSHtl+QA5GaROsukTG+cjD1\n+h29I0C7awhAbVJXD/O8UQPRJD6LZalQashWSBMUPyl3OodB2bLiCcOhA7qg\nLcyvArpQZVaHfcqyock1S9wcaNKomVg5FEBRxqubTD+RJAVp2B1SvfLNKAGM\nK1Fl\r\n=J03C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBS6bQIN95v/vl8Bm7o7xcOU6sALg0iBBPuJ8AimvjkPAiA+ujw2FhQ4KnWLvDZ3wvEEd6uAnpYzpYPBr9Qs5NZo6g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617068534-d4a6718e.0_1617068914427_0.8847028596445006"},"_hasShrinkwrap":false},"2.48.5-next-1617105656-95482989.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617105656-95482989.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617105656-95482989.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617105656-95482989.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yL+Hb/zkq53jeZE1HKvdzyd5+vUXNgjcgUfO9CsUuWyzQOXnE9hOqsmuk/4gT0xpnxC6jTfAcj9abagCk2ZHmg==","shasum":"c2cabccb137330ccb905063abfd1c9b9ec7a6336","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617105656-95482989.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYxRyCRA9TVsSAnZWagAA/P4P/2Ygmq8BqfrQrMSbkx+7\ndcQdimyXGJhXGiYcrUhxgUcOaTU1Higx1M4H+a/H6N3gYSgKUKI5MLyn8ngI\nuDxbfk/MyWbSP4Fx6yG27k+ooPEkS2qLFhvRlXzNvTQxzPHAouksEZfzhB8i\nPFgrgbHzWy3ZegdIM7l7UJWbb5UP8j1ZWgmL5EvLDdEgywMzemPXzumEUrS1\nv87Ai2BneruCdL8nJ7emIBNT182ClmEc5RJ3FCb23kdOR2/3SEuMXVHLvqEl\nNKPw/QFLNHcdCfYopWD9ZMSi0FXGgBwQ2jPAc13wwFHMjJ6G0mZId/Nh/Gi/\n61mZInKRHegUBu5BJtv6y3FLPh9HGaG0xlBNh9Inhav5FEYifyxMax2Cr0E/\nAu/AhYwX+xxUF3g6+wAfsqg2zpjXsP7zlIMGKip6zhd7GK988rRtbNKvnhXQ\n0uTQjuToCes9tJZYC2KojmxsSkXHS0r7UCDip3ZMs02k9Td+S+qvVqNZnHPu\ndwUBZlObJFgcblPS1nvsYjS86BxmkXVpCtLIh+2rSk2iVJ9AVzzxrVMrfd0I\nu2PK+yC2K1Lyl84ACe16vkne2CskWnLX5v6VP6Rq8tbm3usEVHXa0pKjcVXn\n5AkZgiZdxm2gip2ehplCx2eubEJjQ004eArdJpDlNiQzWLpTsCoElwC0xAWq\nYHYZ\r\n=j8Ku\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHBF+bnw112JtcTM+o0RI3DZzicWqPtIZG3mATTX6iPlAiAoPOuH4RaLQvu/uXMyzRxzukQv6qrkvgm2xC5MREqx/Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617105656-95482989.0_1617106033605_0.24918015645687808"},"_hasShrinkwrap":false},"2.48.5-next-1617128819-585cdc01.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617128819-585cdc01.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617128819-585cdc01.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617128819-585cdc01.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-0nmRvBJ7Mi9U1E0JMVZPd1Yz4ZVPguujwqRNY5XsfrmfSHQEJdM5Cnc3FrkjNvGYLuOIGLzGXz0WHnE4KTuVtA==","shasum":"df43e89aa39df754cba8d3d42eb5696fecd1cd55","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617128819-585cdc01.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY27SCRA9TVsSAnZWagAAkesP/2ekwhjYXddVBeIm7I/Y\nNQvfFMqirHUaNN93QVFOgYX01pFevVVdtzW1r4U9XTHrz7c8ZEI9GHaDKFvH\nJMiZDI36WfaQU4j0sMPLsFBeQv9Qklw5L5+xtY0eqHrHsG9bregiBHxznyr4\nUMKrJe7w1WblHCyj07btKloA5vnxOQHLll2R1c1kGWez1DwOiRbo8ys7uptg\nosLk+nxGKrkFwo40RjTKzWfCKz/Bc/vF0EqkE+FsQaHztLTW++MaqIWFr4PZ\nyAT2Fa6VcN5Z2HzLVRF9kkwvSl7MSMNF2kpvFBvMWuZA2BOt7fSQ3cFLoLGt\nxXOBk/fJy0P++2C4RDBk1mWxetVKVaFDH4AhATjUAKyYeGk4g78hWPNku0sc\n11htmBl/XNwesZCxu/W/T07WPy30J8bqwjiEaKanjQ+rtSJTIS8M5lnxIF/k\n4Bp3y5tTS/qOmQAaOlEX1t2CwpD1wnUxtjasbAF8xBvq2MjG21y0NMnUWUAB\ncMa9Y0sJyjYXlDbLjbY8ZCM3NSAWImKwZKP/m4ndW0RexkcDD+NO7XykgElV\nd1fWElTb2ZQt/3R8usFrTyvAAmYDHhUU96rPBT06TVoN8wS8oeq9pfbwBXt7\n3X0yFkLWW9DqMrun2VdBJrCyoU2teH9wTOP79un6vVygQXcPUSH6VgDD1qMf\n/bm3\r\n=oMh9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqXQ4+Q8R4iJ60yWfrqVl1Xc9MhIX5EY4n65yylNqL8gIgUMcb7U/w2Fm5azuegF35RvvKl0PKe7pjJpEgU2/HQMs="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617128819-585cdc01.0_1617129169970_0.5446233977164876"},"_hasShrinkwrap":false},"2.48.5-next-1617129668-96c087ca.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617129668-96c087ca.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617129668-96c087ca.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617129668-96c087ca.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-9ICaFix+rMnVpJjzk7CM9DEZETBoRdYgnTjZh28QkFMoMDHdzMzboX8EUAYThQjI8hmrkb0RATjWNXlBq77acw==","shasum":"aa300a6c6c8a5aae462f8568538fe9287d45ffab","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617129668-96c087ca.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY3H4CRA9TVsSAnZWagAACbQP+gMYOH81uSQPuugHQgBV\nOBJMkrPsNSfjW8WBEl5ppZuUkM42KObDlll+cvrDcUHtLxiprXmR2dgXEtIE\neZFGDLd2JTF3y9+AO7IaOI15KoOZi4Me1HHaoTFB/tGmjQM4z6fhLYabQA9R\naDWbYRncMYJR3+Hgg30SKKn7/N/QGXTS69B7rqhNSbotXJcuyPu3IQDhr+nA\n0cU5MhYFtIgKxk7HJ+M1/6rNibFz/M0dISXCU9pjlRFyEPtdsHEqo+huxPEU\nzILRirdEGMBAbSJcNBEUBrvyT/bL601KyqZTkZhUE3aF8jUy1V9M1U+FgDen\n1BmK6Gih1dEo0+VPAjluSkiNDPCsMSmQfezc3lPOajX7EsdY5YzFyYfEiJou\ntcNhvNxzo6YGDwFNrCoMBb27S4N1AqGyJsdVAq1Du9otxhU+FxaeSy8wzA1n\n/jZCjsZvCoZ+xQcuIUe6rHH4EXP0sxFMxKfvlIATZBdF+n7pRl4I6B7+bUA1\nLuwTEUFgbErFDzLLFu8f9hoZ84y+W43Ics34hiUcjWzeMA4ZBZM/WEpfWQHq\nncalzzWd2lHtHhklg8fASHM93eLij62mCBpqWAyqbqU7uJwN3LvVaBO0/+pn\nY4Iqu1dzJd55iBxccKJKXsmuoUvHVzu5x7IpCVMIDJIiU7g/h6KNFZpm4mUr\ne28l\r\n=xG75\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVDq2AoMe6bdLH8bbry89MB352Ep2uVsh/mlfL1MPkDgIhAOKEnBelct3q2iWrlLyzQlXsTFe7cN6X9oDeCts316CN"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617129668-96c087ca.0_1617129975757_0.07654673895423336"},"_hasShrinkwrap":false},"2.48.5-next-1617134589-443d3523.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617134589-443d3523.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617134589-443d3523.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617134589-443d3523.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-cQdGqPuZ6jCDVsuYh+FowL8LYQQ682xEliZKXejAZ3fH+XjB8AVCrPE0z4v70GpUQI6gL5WjLzIHVurqhzSRHw==","shasum":"60cff096ecffaf18f1da74033c8bedfc411f4fcb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617134589-443d3523.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY4ViCRA9TVsSAnZWagAAPqYQAI9q7cD5WzFmVRreRtXS\nX6+BZdrTFc5Tn4r+35kMpyZO+/Wy7b/vINVh0J05pHwlUuuQ+4ar2Km0FVBb\nzs382GTg889qOp00tgPRK70SoEv/7fMJnttzzdKo5CfvXTW3mjWaCMXXwRk6\npI2xD5J03OSdK+ZGtibAwEO4txapu1LINvksR1zMGN7aZg9qn4CbTc/he/PP\n+z+z/WnTr4Z0sjcbi1HKyyVViF6E5lmnVmU7WQx8Mq50IJYfAXr1q/7ZZeKU\nhgh9450L0DwpsfByRN6SUgSrqeLxJJPQegbTkEclPVkVx+4iAwFnr0cJX+6j\nLdvgGeaDEZTMWGzYma2yJ6LzZl9f10LNdCmosOCDlUO7iB+ebMOEox2UQuKS\n3q8VMJfLlyPtx2WzMvHvQIcDlsqO7kDohyyJ88t2X03W5AHI1QQL+tzqOyId\n+kfBAMlpzAB3k9ijB3qWpXgTa/hOicFdBaJhmQrG4BDfdw2WzQYPNxmyH5aK\n1fylpuADyQt7G6JGNSBQde2sU/2i5JWQFNapOyiFMEueBIPSjeMuorqVxvSo\nqFAYZnIOLfzkDZ+NRgcb3Ob9m6CR+TeidVWBvhn7GFSi0VClwFvLZ8ZYBgqm\npoMNlK40f33ZySKuuk5nuyS5hN50vnO6vbwWkYnfOguTlUB6ue6xcQEfe2y8\nRiWO\r\n=m62l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAe2yQTsTaC289cj4ONFRYtbHtIJQGAOK3Zr9VAz8I1FAiAKF1Ohy/t1eZ0LP9TbSlBvfw7HXiQR0skvlETnCQLwMA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617134589-443d3523.0_1617134946233_0.06750228966868632"},"_hasShrinkwrap":false},"2.48.5-next-1617189233-8ff49114.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617189233-8ff49114.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617189233-8ff49114.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617189233-8ff49114.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-TesrgSUrOJidCsrEgsrAQxMPXNIsxPuGJZoCw7QXp0bbTvzNbxAfmV3yqL5wdEvZwKDzGP142D04I27+Adec1w==","shasum":"bcec608811b359e2d54d224bbffbf7f76a769198","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617189233-8ff49114.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZFrnCRA9TVsSAnZWagAAY2kP/RDK+xbHZ9/gaDDoeE6I\nr+Cf4+L/O7FQQzGuZHzY0PM6Qj+d1MObeRDFB9COtaqQCNe9kUqucfqziFnq\nhbwIf6PpC+ElvHO4PB0cYmVUjjT9pF4z24Rrg8Se6+6jmTvd3cllnxlOuHsa\nfqonvPgtmEKVZWS9UfDESv0eAzyth5zYEYyanWq+RIAfOL8rinYTTPUldoeR\n+NO/MePF0wRLrax4ArfLGKpt8nh4eKlT27m+yJMIddrZmx7m4K8hRZdnl34W\nS8yZe8vth5pBuTGkYw4cji2GyX8XaXL8lQjuJvGPlZA9NO/w+kdW2aR3a3FK\nJ9PnTbrJg3plwc0m2kNzVcqLqVU1dqStj7Pj9gJIDfsqbVp5PxNULpHp3Ysp\nPXXKLFx2ozNoxZA/TDi6menrGDrotidENjjgkVemu7nhj7s5aRbbytpmggx9\nTsD3BVqPFzWHgbJvCLRZS8zY6ohmy18kBNO8XPJiCQ/Ruk96Yber1D3/2q+5\n8fYb8IxPKuhI1u2wAXKxlU6e7AA0RfttzwKU5my3DVCY2gl+YWW3+4RYraoN\ntxoKU5wRlkFpk0Qfy7qxl4HAJeq+3oBGOEEr4VO50LXRMa2oIjRG9pWlMOub\n6/BR/nwrbUNx40aAIuXoIB8EyHGNOxsWwWPm6F4ekyt0f6F4rix5ZvLGyDa0\n9QDN\r\n=fSWN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBotp147JAIDSO0xeQ0DoX6P/8vMaSM22FYzXDvf11JlAiAoR6X9Soj58dLDGyoo0zRGyU9/Qs3GV5D8j2Py49y2Xw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617189233-8ff49114.0_1617189607319_0.40691360861378656"},"_hasShrinkwrap":false},"2.48.5-next-1617190581-bbc7876a.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617190581-bbc7876a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617190581-bbc7876a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617190581-bbc7876a.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Q0XLax4yTwUNUTvIIq2Oblp8wjoAH1lS84WKaLYJpI134J2uBqDjYFxEk3MNMqf/cScR/D+Y37D9flf2s518Sg==","shasum":"141c4a8123812b15ddf03b225fb4c2ddd1b93736","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617190581-bbc7876a.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZGA4CRA9TVsSAnZWagAAYJYP/2FnqftTseQyMwDKmj3q\nheSqSjVmLRVgrbgmdod/LCbFHA82bw+gXQy+DfDkpB94Xksv/pPZBNAJEtWV\n2dS/H/sEFUNHuhJwYrV6BxKDjk6IomHP8uzb6v7X1A5yMZcm8LD3dJJX2avY\n2r6PaszTO2aHnHAEWAKb+Nu354is0mqg8Z0N+xpvSYb5GWMuaJ7jvsfNOpHg\nfGw8ksu5HEpMqTtHaNHDBWI20jrpXjwXZnbSXwYKh/4UGEkgtjXbWR+alH2k\nYlr5s6AmU73tLI3lmqFVxrqGVGmFLIotBD3P4hZjwpTSWwtb6aFwY4J8tBbL\nQGY35Vz+fhbz/xzhGY3v346vSRYWrUndOrVsWBroijH2yKEDsgf6Yhna0Gbu\nB7XR/qLsvCPI5XCWXEjoaQN73iseu7XiV8mqu8OtVpkfpYM9FRBuXNCJnrvQ\nBXBBKmt0YgmqL2DsCEVtr78fK3vDOzzxsw89vnnKUZ36KKAtYi+FPTSLP6JL\n/OqN4kt0SSO0X2RLk9HVEJ55kBXqwtwigL6QyBZR7g63DHN0Qp6HY7RQ06+V\nVSCIx2W1mh3j9CbGwQZ0/782P7QtIzuccuwkPaud9e1Y/qWgKzPKwGjH0/Zd\n5mDOrzqd3YJBbkmdRvZlTCDXDxsQ11C/wpEvUav25/wp2SXOiWZY2gsuUVb3\nDh9D\r\n=n7Pt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd2zVwdma7DX8f0xqr5JT36eHKiGdNxLu/pj89HeEBDgIgTWp2XMeJtzYZEHZHABw8fx920tIbwE9PB+/SawyUMq8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617190581-bbc7876a.0_1617190968171_0.32150019058643964"},"_hasShrinkwrap":false},"2.48.5-next-1617191032-266592eb.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617191032-266592eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617191032-266592eb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617191032-266592eb.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yoiZUPoQ/Duwj+adm7wgFhwt60zhdZ5H5ALDwQFNVnw6UT3iVsNUL75kD79oxYQm1+p922J7ss447i11iAiEnw==","shasum":"86d8e02cb7bfab035795d17ae623a82c821a5f19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617191032-266592eb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZGHcCRA9TVsSAnZWagAAqBMP/3pWOC/IB5DqRMR623Zj\nI6RcO3T5EDxa4grP1adoTy5L/ibsPNtB4Wuh8846CBJ0KSkLGuWoU8dGIwC/\nXMCbB+0QucASFEAZegcAfk5szGL3ogtcRwo8oXZfU7kb2j+YcwxrjDzfA38o\nV98kc7iPHfK9jAjkD1hdQs8aoVXQgwPWl+EM9K+xqeopJL/VYJrayeYS/5St\n7ONF+jyeSPGhg/fMACfpFF2ywMVZljOAzROjZiMN1k2lKmKXEuT2tLHAW7t5\npyG/HYX7ASDeRFPEid2zY3UWbly5voiu4vu7UTPCjY1uKb6b5W3bLN3zubPo\nscsvQynXUFB9mkActdULNGpJ1ykcOeVgsCq4agOV5AkDuWGZq5QW6NB81iCc\n2CJf5OhNvmSd9qMxOcVTiZ5pXTKMZNJGNH87dBKdkGAVBW93D+9nIDhEj/vI\nZJk+GWaTa6vhaZl/ttiaiR2k01C5xErb8+G43I42f9Yl1KwKfNPJ5BLSioYw\nbjz2NuBndQySeSWZe2hqRgzqhevF9eQN3UDkefjlwVRNDJBjVLmMAMBKz0Xu\nJniefJJbS6AQxnDoA969p+zHIehdAYaAS6bTPdNJ7EulYpjO3R9WIgNvwAcI\nFnt3tAE7T8LxZg/ivvps9PJa9n75UbPA6uTB9Oxabx2uVkYBNAJ6JzZkK9w8\nGRtk\r\n=HEa3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEjV8OcdBkonvo0T6UuwiiW8wk+12FDujVpN/Irh67JIAiBOCZGKRXCF0+dBrf/JKUhGD9NglkVRGWeK3e/+Dsv/jA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617191032-266592eb.0_1617191387582_0.2692945103069908"},"_hasShrinkwrap":false},"2.48.5-next-1617192134-1a33ecd5.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617192134-1a33ecd5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617192134-1a33ecd5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617192134-1a33ecd5.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-8R4/ngER7B6GVlhjVeEKxsgIWODHE8py57UFWXUgWuMHLA/YAGGS5gxdRgUUwUyMdBRb618/QxEJO8lUlCi7UA==","shasum":"ebd118f74cc3b6088e5740f0b65b7852bb241fbb","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617192134-1a33ecd5.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZGZHCRA9TVsSAnZWagAARGIP/3qCzwuQsRc3FHMFq6Cq\niWPKbvKx1Sa7wsZwZGhikuLbgBmzPTMCzgmv739ykoWSYNd9R8xSpPsmeeqC\nUte2VEQVY82EaV/IGvA5Q9+wX5znr0C5UIH/ea1qsgteMD4stJyRHqWf1UlH\ndPh2HRMYC77iqjWhPry0POpuVnNiYCkOjkZLUEpt3rjdbjSkociNnWRvV5Hz\ntPAK4fqAedfhvj5hxL5FXZ/EDCmKreakxhHz4VuRh0sSh/fQsjzScAC/RHRp\n+yR7TUPE44WoYUjCsnniOXL/3gaEQLyQpgDta4M74db3ggkfugWe6gBOwykQ\n1lRac/xSPcH9nyhlQDTDFTcffT1irH0qa5szGKJdMyGrSst0aaar/vDyfI+Y\n/otJAtUVj/XoL52lDj9/rtr/55smRAmWOb9Jde+kRocy8RKEzF74EwAibQUk\nObn/j1GHVnWS0iXQ959HmwrQ7tJDHSf1AlxhtjlR0H6M/6ZSSuvfi+GTqRhM\nGnfla+uRoH3ZmT1LB+/hhpYlsc/mfkOxczmYkJrDT0o+k5jaIH3C+oOPlxFy\nGJ6WZlp/FID91wQ4QuV0ayhTD9GeAEjOsbPgXE7Zw1K19K18GNU7vQwPzTos\nNipfUvY5DS8izksj/dU+uDNUfqt0Hp4MQuS+LRPQEbVlxEEMfgoxB05B11HV\noLPD\r\n=HLgM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxW7qh8Wa7550ONE0PyaXRbBcRhmsf6Wc/smAUWU3Y6AIgGlYFmB5VxmtC9uIgOe8/rfqp5DxJaIBsuOtsHe6Mv9g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617192134-1a33ecd5.0_1617192518567_0.6411707754074301"},"_hasShrinkwrap":false},"2.49.0":{"name":"@xdn/prefetch","version":"2.49.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.49.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-s5iEl72jKjk+u9Yxiuktby6eXur/rk/tDcnsWcdSpqPokc7vJAGyNWR35dYLRNBz9hb2Hv1VyXqDW1hSJirdgQ==","shasum":"004ddd78121c898f82edc77d67bc0f75e58a2f3f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.0.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZGmMCRA9TVsSAnZWagAAXxwP/iZRy1H8lyVr4JTMkERt\nL6+rKCqm3sbr9pDDtKdxx2OAjo9hRUNZDEhDsMQGrenjT6Z7u7nXAEfV3CAa\nko3SOXM/ejEBuoXo0m30M1yBWM6oy5HO0IVvRRZv177Jpx9kwVkL2S4arzZj\n4p6K8luwRbcHrig5EI5Z6a3Ckk/AZ+KSIZKqmGpdnzsFKm8kNh7nUEV5bTRP\nIrj2IlyRWCcvQDJSdIDDnlV38/XZKAYU6gMCFEWpVBU+dq3YxRD1YZVVjk10\n9812z0rhhVlFffHW2G0CrQSvQ1Fw2mcyzIQTMSQdIc0DJUv0whBjaeJaoQaq\n5zObRoYBwvubGiFdOFkl5GumR3yJW9KR4CKyFLq3lLRWzMIvi16rcoL3/WLA\nnjvxXNhRJjv6V43iWW74fLUcEYSHE2cGcdHqyBgNLN+GcnKmJxAuR624QxNM\nCfsSow4JWzksmvEAdYAjYChuR8Ybcv1rLexgS12WtjwojFHyquUTJU0l/rHj\nzN4sTZ6gxyKVG69URozB3dZHLvhbHFQC8KhDz5gST3HaBnPV9kwAiQhvvlAH\nw3QqQTdcCOGzmMdtnVK3OBB5F/6st4e97voVNVPA7HRtC2AYtJwrffLZL1cU\ndFE7mKtZ86xT5meI9SRNaon1z/nSMwBVDu4gysnfTihmkWqT229+30zDesfJ\nWnCE\r\n=vnGS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1q61dbooJ8ixh9YYVy8hQrKGCG7tLN2Tw08D/V11zGAIgWEqp8jhw5ULJV+F6BVa3Or0hYSRmoE4jH7DI5l1Fis8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.0_1617193356218_0.7585010291111054"},"_hasShrinkwrap":false},"2.48.5-next-1617193056-40e3051a.0":{"name":"@xdn/prefetch","version":"2.48.5-next-1617193056-40e3051a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.48.5-next-1617193056-40e3051a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.48.5-next-1617193056-40e3051a.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-jrua0zrAqyq9nJLM3JYq91klKlPxoveeZgaJgdp6nYGO1DvPA3wYEctJeS2jcfXnek+WJWodgUMsBe1bTQNA8Q==","shasum":"b1aff16a0895be7670785833770cbda3ba88fd0e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.48.5-next-1617193056-40e3051a.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZGndCRA9TVsSAnZWagAAiG0P/2cFbyaOexKD5qQbLmal\nntjatKGOQbJHq3MaWxOBhqXgvQ12lCdidvvxxdV/ETMjdjX0NPU1b7KcxhG0\n+jUfpnfDK16ZJZvnU+QYRoyOFa2i5zBsVrLJTr5REDCuQUMWp1xFRMnpvCXH\n+1L37v4llzzniwCQbTuNB3rbecMTWBo38K3MG4uoy18U8TeXIoYiOl6fdxnr\n8XtaUcYQkfuRcrK3Ax8D9ZiRcjm7OdUpxA7tjO4N8YzMQa9vmHEjauJxopsq\nO74F2DIQaZsSSB1TAtE8TGsDPhvj7JSi/UN2IX07tf7h0I/3AyS/UHMcJPD7\nBJ0n8vdw0bbiFJPjgccHsnKjZxipIzQ1kdyiktcoGM9mj8cyf2A7QRIwXx5u\ni0beUDbSmDttLH2D+T+mkgC9g/SjFrE9ewZbJVNy08w221qM3tag9TDlrsD/\nvQ81ojbA4Cj8Q/qY/nITTb5rQJUXC5Yy92k70Ce6C4bHKBA7WfQEzZB5fTmk\nkO/SqJjTY5u5FKEDFKAco9NG1LjhFBEK45Uczp4F8cb8PRoHF9XFM2Jn7LyJ\nHcroo/DXekpkzsqabMmLi3mF7y2F/h9FFXCX/IzyH5QcfQq3nQ3lZeOAuh2u\nh4ZTAORlQ2al4EBi3ArZ62SB2ieJWf9kYLIoapQp20YwrjqIVWx84XCHks87\nIGWZ\r\n=AIcb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGhQix3hzE08e+nPOZkbhtpiGXi+YYldgK2OqBoD0/x0AiEAjpaWyEelPRAVLlTadjjPsIndv9Sp6OH5e1EWOAWmvw0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.48.5-next-1617193056-40e3051a.0_1617193437041_0.25724074986575785"},"_hasShrinkwrap":false},"2.49.1-next-1617193132-0596cd28.0":{"name":"@xdn/prefetch","version":"2.49.1-next-1617193132-0596cd28.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.1-next-1617193132-0596cd28.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.1-next-1617193132-0596cd28.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZfruIBiqGNo2VxsyLt2LNYxxzHBlYGxst2yCDZYihm0Mdk4uh627XYQOBjS5jUZHs4hkkUD0kJRhF2HmQr0w3A==","shasum":"58b8404b259360abe6c0629725407c0940a77343","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.1-next-1617193132-0596cd28.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZGofCRA9TVsSAnZWagAAvTUP/19wEI2441eLoQKTpCgy\nFerFrWR/VU+HsVDQAxb0H+e7r6gf8Apxen8TdNeTgY9WQ5O3bf5mGW5IWVs6\nXNAM4b2BRkmaL6EHNWY4V+Uz8lN/bZe2STtI6Id5UFPznTvKnAXG914It//M\niGN6mCW+RBn112ysKnFv6PRo9jrhY9i431/CoxNrLRzyXHZYam610eeb8QyY\naSuHkNkJbwVvqy7ljMFH9GdfsacU9pQKJV5cFnPv+xCyJJl6qFQvGqMHb1LJ\nJOJHwwVZTY5B2E056iEv+jk9p2LN4Bkrl9UwZk0X7vP9ZZkM4hMJBwdpVjmU\nYnJeFY/27lTv9DRCJU8vZE6kQ6jvvqwnr9JOCjfToz6MZtOiieWrcHNbuEZ0\nweLVDAES8No2yVJHDpP9GXMsaKeHmt79aBx0kEbhJIHRMjTi0LegbR7TUUNk\nT0DQ9KiUbxvPWPblkle07cqgeMChzmqT+cGc6k+WXygjutFgg2MecMFzW/+d\nl0JpBIxsG8+A2lcYtiLElG5K8a2HfyChtZbn8/SXmk1GjYfj7b2Var7UREGL\n4W7uSJP8QUp1C2/uBoaPqF7hsuMdxp5X8GFyiSwGzqmEtuqmV/h0OA4P5jez\nGWok1Ox5cH2vPJnNyZW3JKqzyVi+syp1OAlZUjwjKAkUDP/FlyODk1w2DbSR\nWF7J\r\n=6XGF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCKjoK5F7wyHtp2EdfYz4pd80LozU3OPzgklk3S5Gc8wIgPROnKITgh6ssBwTlNWVAVLoVAjYx80LDoXI8BnFRQb4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.1-next-1617193132-0596cd28.0_1617193503261_0.5540690235212802"},"_hasShrinkwrap":false},"2.49.1-next-1617195749-017219f6.0":{"name":"@xdn/prefetch","version":"2.49.1-next-1617195749-017219f6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.1-next-1617195749-017219f6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.1-next-1617195749-017219f6.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-67QEmOUiA/r26W/gSElegXbsafTUU8AWrM/x6rNxUZaQUFYWzFGFS/3nJvw7JDqeWKDcWgoR6CJQtOuN72uW8w==","shasum":"48bf25009a191b66e6d4b484b62ea293ee90973a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.1-next-1617195749-017219f6.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZHRBCRA9TVsSAnZWagAACqQP/isDBNjLzJnRGNptdVhp\n4XesKYgLUqq/ys6Dcz+rHTpyb9VFoUYVdGEbCxyV0NsPdjUIFzRyYftVPJHY\nzkt+4b98OUAAVFQuvRmGJb1YIFItelze3uzUSgZvz1VAviw9jbuXQucz6E7a\nbG8hvDe6muL9gL959j+imdb5Hew1f+WV6s6EZioL2uJ7qLMjfhamQI03OtMp\nOekvKbeqrldHTYzH8sv4e651pw6iRfP5Cw+zGSfQu0cCyi+z6HoJlywgMDxi\nWwPE1NqYAHaN3V1K4OGbf2z+h+ci3Bv2Xtyzc9P1kr86oue+Ks1YFG0xmgs7\nyuwPjK7h4f5uTLZHzME19vu4BblsWPE3wuK13O0Dzk61QAG3XjMiL7BWWSLu\nbfQutHjRmGopZsfvUc8LK4Cx2kYh27KItaUj1hZb6+uK617caZj//PHHmWCh\n2zp7NuackDW4g/QromDE11kjN0l58Yhp3RmQ9I+hdaBOYyYA76mJB4LIvanc\nwCynRZe+IjkQuU9sH2ugDxSUQTYk2vqz6G4kz35MOG/JHMG1zFUCb6rM/FP/\nsWPVKWEKooiarBdYWjp/Xs+cayoRAoESxb6fSRKSNpjhLlzw9HjaJXaiyA1b\nlVvfAvRC39KQFhYcPPVLEH3FeqspBMNtz3SEaYGhTOV5Pjh11uPly9LLSVkB\nSNRz\r\n=f3G9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh0l30lh1aa01RX3UtBYUoOiSXefUjwlrzlLNkF7l2uQIhAPm87F8J1W9aIueL59YPHG5YyJS2oDB9ZnibuKaLW8so"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.1-next-1617195749-017219f6.0_1617196097020_0.8192317520268189"},"_hasShrinkwrap":false},"2.49.1-next-1617196474-ac6087eb.0":{"name":"@xdn/prefetch","version":"2.49.1-next-1617196474-ac6087eb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.1-next-1617196474-ac6087eb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.1-next-1617196474-ac6087eb.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-1gsaqwmg2hmefiOnACOKuS3pWVPpLZ+Z/AbF4MsZwPf7cblJc0NUZfFtqZTwSmXyV0C3swGh2nCVWCv3TicXsQ==","shasum":"1f0e9df4471e5a8ef9c2bd1ec39e61e7402c0dc5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.1-next-1617196474-ac6087eb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZHdJCRA9TVsSAnZWagAAKaAQAIHLAomyY8dFBSv8530D\nxsU69KfmIMu1gaaMecly5J+fBVgnjj9twE8i2/RqG8Ff+fUcKS3aWGnt48GU\nU6VG2K6q/ZT3VqAP4Vux5k6QM9vXGMNkdo+vC/aWER77v/Ozmdxr4GW0KLZ5\ngAb14HOTfDzI9knskxQiq46B2VYSv/lvKAS6+iMxIq7G90U5ApIZ+sVM5D92\ng9Z/PfZhtkbqXnahXdidF+luZGwt0HMV1WR+qFzgtwhQsxIWraClKH8SACW7\n92jjTJXnSiwbqe3F7Hn1SItfA6h7dwPLN7lBPJxlPlhexLzx+LMB464zf0A9\nIGoOGRfM1opj0vxn6NqwOoAdZhTXqPy6dfsEk1kmVhQqQ6f6vhH+liVKPOQB\nJ54HnwpdEELzkVX93UATimy7BzDYEjzwdanwAy/KDChizSGxusyth8d/IzFG\n0cU08UqEsYNvEV1Qbolh2XHAq3egrTyAdH2y+8ORnzfZMrg/cCfywPG2Nqyi\nEdACb2/snigUwWY3bsWyuVZFh/zk5rXwFMlf3ZW5GDGiMWLnux1bGiCaKyT1\nIxRC4aGUA/BnuxV5SIjdKqKY0mciITucHu+0v3j1T0nyZ3BG7cv14eD7JHTd\nyJpCQ0Dl2yGiIIPoGhhwmX+SdBTuCPzj8ZGCUtxtOdVDjMu64PQQit4yt4Mm\n0uk2\r\n=wTL9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICDRipFQJ5KJrQi2c+vQh8cQwOcXZR7SwGy/QL5fR3ORAiEA58xJH9M4c/Rwxx4EMAQTECuFJOXm2Iy0hwxnk02DIks="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.1-next-1617196474-ac6087eb.0_1617196872322_0.5858783673243506"},"_hasShrinkwrap":false},"2.49.1-next-1617197145-0e16bea2.0":{"name":"@xdn/prefetch","version":"2.49.1-next-1617197145-0e16bea2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.1-next-1617197145-0e16bea2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.1-next-1617197145-0e16bea2.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Sz77xx10hbNjupP9gT0qsoqW2jf1J03XuYsbxyBpPePdpJkOFH8dpcnnbbjFHWhJNJH2EZlch73v/aHa4J/UGw==","shasum":"636f7e55f7e0de38cfbf08e4db6ea2dc4e1e13bc","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.1-next-1617197145-0e16bea2.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZHn5CRA9TVsSAnZWagAAscoQAIhefD2Gn54vosC6OOhZ\n0ZuQawnWmBtvMLBz5y9O5dZ1LQLPIWLSDVQfBUBgJ0snW8ilCtG8uWZ2P3Iy\n4VIpDXjBbqok0kz/ijKnMMcnSsHSmMOFvLROELgtchr0a5sFNb1Fs52XQNuQ\nYVx2JinzDbSmF8ZXTiIVnYtBRbV2z3hBYtCldSsCg8NBCD0Wnfsax7qLwSsj\nIHlQwrpuSdB47IC8tnWw0vOzIBe8X6m5qZERUQP8BugvYegsdHE7XbQVsH+j\nb3P07h/Xf4rF+0bSyuPL+njnax4XZ9iYtFWoM+3OHiucCMjbLyau4MrYVYvK\neIYCPhdDTDi0iYXrBtOQAUNtDdZuulXnxLJBZEOxQ2Ug2LsFdHCz1rGr6Xlk\nrkNvWKsH1S+bHhUqxrvuMfgKfuN1hcCpJl2gsctm3UWi9ILrZ9+/w3GEEibE\nGLPsY0fZO+Q3hKzDiRnw2lM4JSjMZrO3U1FqtVYN8qQKpzKx/8xV0t68RCIz\nC7UQO1IvBnz1L6Y36jtu3wNCq0unJwGH9t75Loopt6FbxsEd+Rho6Fv1Q6id\nr57kcNbRx1MGgWCh8nSLMIfKbQW/KuVor1csw890vqc9T0kQkNQ9LSyAzHYf\nJg0ti3Xe7eW3uCF6QFr/fXG7Q3PHchyNw2cSLBGuLqpuPdBDD/VAn+9EM55q\n0He7\r\n=wdSz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEtCyCreKc/ZT6B4F3io2xjUO6rE68xNg7skaTEfxZ1NAiEAkx+5uUC9R5vjlaZenIdZCVBdsilzT0JkbqrgwbOryj8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.1-next-1617197145-0e16bea2.0_1617197560961_0.05741472295206318"},"_hasShrinkwrap":false},"2.49.1-next-1617202781-e4cdc40b.0":{"name":"@xdn/prefetch","version":"2.49.1-next-1617202781-e4cdc40b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.1-next-1617202781-e4cdc40b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.1-next-1617202781-e4cdc40b.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-W1BJc5FM1jsHXwTlTnMrKhW6F1J8QQ/rBE2SMurPFe5ZLPGxZzv2ncM+kysiq3hCNobEqG76JnxIev4CqgFvqQ==","shasum":"7e4938167b8f55fa46d32c18345a0958b8b04b80","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.1-next-1617202781-e4cdc40b.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZI+aCRA9TVsSAnZWagAASGsP/iAsw4r9vhXfDq39uXRJ\nlC0WiLZ0hLopJCJ5X9Q9hdV0On7/fK7xDjlkUwNYHkyTheQS1leXu7FPbvvu\nhR4I6lLC3qc4rAsokF2UeFtEsVrmMtPIVGlDxWKTWorAhepuQQ4fuCQciAJY\nSP0jmSogmyJJLjOTYHGaKdPt+zz8KgdLa2p98JKyTcfqeF+WGLqKs2/y3rDe\nHTp+o/B01U9iTh0bs5FkKvP94jcAJljDc2x8I+nbZ5CSV+ZP9bvErg2EvyXI\n3qLkU3LhQCoVrqK1DQ8KU0ew4ZjeiwTnr6WiAGkgl15+HiRDaXcUOb4EdqbE\nBGHlxtsH2LWKozaP0XCm2D2WBXclH3wTo2UFE0LOm4XfKDFgQ3TRHuSX+Smy\nApoDNx6yn/J5BBtiz6U3JLr2JURmRN2d8iuuLWP3+ZnaeT+UyKov9Il7jQTh\n/ifgxX+aErzfnSEgcwngeCMrbQ66gFGD3v2BH6fA6G9WcZxONcEU+iuNTQBL\npF2JZpvVaehgv17e8odMILn/IJ3dzkwg4VHY/cfqB/u5r/Rba37C+teLCKbn\nSh42Di6/yLaRU+pyd/vNBTRIaUyzOQTmL7iFcfEuVLUwvbqQOQJhjeMjKxK1\na/mDoR2TF9x+Ac5LQvqUmhEfmziwg5+r8VRZ6F3yvSOaJl3yDM/tHEeewzJ5\nNCBE\r\n=o4sF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFMsDj3U9T2yati2yncGcAWDWolc06gkkTFDx06T/+0dAiAr51VZPlJvF3a9teGsvMd4U+1li9JGEq+IV56lxK6sVA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.1-next-1617202781-e4cdc40b.0_1617203097418_0.4886901176188987"},"_hasShrinkwrap":false},"2.49.2-next-1617203089-913471a0.0":{"name":"@xdn/prefetch","version":"2.49.2-next-1617203089-913471a0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.2-next-1617203089-913471a0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.2-next-1617203089-913471a0.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-T1kRdV/nRcuz8q+OillNmUAnm3fNCKL5QQl3/2ea1kqf+98cg9DK1G/T4naxU9+012wAABkq17ZuRLpbGRu7ig==","shasum":"395541a1ae79a8872463a5186ef4342d790b4038","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.2-next-1617203089-913471a0.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZJE5CRA9TVsSAnZWagAARtsP/R5HykyHbgqRHKjzKKV7\nXqOEdjGkokkVNh84zIiyHLrTDRQZFAWe1g6p6dJbkXJWAiqqNsxKMPXfSJfz\n8uEy4qHxNOKH7/zEsiiyFyeeV7HjvEh1FwTLQQ1aAgljt8LOEBTXKQ0ZHh8w\nsue/wEdkzQzkXlSB18DflXV91166VzFItowAbUiyzZeGs609lNA0b8msjpVz\nhZBvtTd0Sm18tsGPgT8oy0M2ZIrQrlVUtGtnMiVSAO2Yyff5rYsdHbcWK4ru\nhUj1r8LNvJKCMtu4sX2OwxfNRF04US1w9pjdY7T5MsMVR1mX285p4R9BSlh4\nhCrj7URXjmcOUXTyQe9Te9ihwMYcEfsxNC4SfAlrx0veoWaB9MjgUJghuEuv\n5kM7d/85VsM6jf+TXIoOmcGIhKqK+4sg5Mo9kcLQ8gfTcYJ3xPYvqaKs4jB/\nCahDW2BLMl2nvpPUSFGjyUPZk1Hzv62rGg325CDwYlrQM8Kypc6GH54JmppF\nHu/82aUGPtVd9Nougm0ywpG0VmrZl8mUKkMfCAB1RP7zcvSNErbK0L20HXCY\n06HwTQhFhf8UErXjImbGspYn6J1IPNb/QNR4NjqIq453IVhn8F7Vv9nMtD5O\ncH8UDAyZhaEnXKVeTUkbL00SASkmsUbKB2U1fzihjbf1lPfSRTgUlOr8hDr9\nqyZg\r\n=2qXe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAzFhJ55fZxxhQtMpK/sji0PmkBRMhVv6AgXZMCJbWFeAiEApplsYV6wG17BBqnnYiESlIOxnDAAaAz6vambjwFtkfw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.2-next-1617203089-913471a0.0_1617203513101_0.23070351203061068"},"_hasShrinkwrap":false},"2.49.2-next-1617204453-dac2f6ac.0":{"name":"@xdn/prefetch","version":"2.49.2-next-1617204453-dac2f6ac.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.2-next-1617204453-dac2f6ac.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.2-next-1617204453-dac2f6ac.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KzX6kLKNOow9Gmg5m7IP61ka3wG1lEnIlvmZb2UQDQIytIKjdpunXzpPhtXIW0SGJmK4XQSI//bQzcBKaiU+cg==","shasum":"c9abae0b96ca6a86211441272f7afdf8fd5ad82c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.2-next-1617204453-dac2f6ac.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZJZUCRA9TVsSAnZWagAAzqMP/31XkU3Bo+bPJa0eELjG\n+YtRyvBIMP0ceHCwTEEKOnuypD6bprdez1mu/jech1BnAKPrHYg9UEPFRU1C\nNEut9aVntsLW/WM4QCA1P+4ppWFOf8/pfrbfsZ9gsWMsjFbWbEsFIPm7g5zx\nOd38163pPuocNGmVL4mKszKg60m6nPzmdNYhPoMLYJdI3/K/j8aQz8sbSx2I\nLMExj+P9aItDEBrqXapNPeTJGm8tHg0kcxt3qYpIwMVBtrrXRmkE83U1kHWP\nawIu9YGYvE9SX98DrUt57HIictxOLbIYaWOWMu6bbadtjn1k0D0SLqS7cwHJ\nq5zSYpOs9gKsseUK2K5mp0RuHZZ6CDUJ1y6JnWJ0zNmBhLzScI63KK+KnokL\nULuEaNOLVZ637waa8xNC1fkcj4J+612m5iY6xBcz1VQOyMXxhlM3utHDlwD5\neSfVk51726EhondSpNBCBZRJtVjrF4aAwi1aLmzhrHkmQbWQuY7b0/3ZW5GT\noCwF/SACOw3rg2zqvxSMIrNlEdEnQ6EO80SedGZ2KHx5ixjsaaqB0U4Casdu\nCZ+loHFHzCe1brw1FW52eQq2n+Lk1QYXywzKcz+oggdAlPUXQ9BjbiQTXnX0\n5+rMPXQHKF54uEVDmoSWCbEmmSCgtLWAJkheKjDR6buc7QI+s26DATx3HcAr\n2aLZ\r\n=Sqj4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCr1VGmj8+7JKn7hFk8zzCM264XXZj3oWobwERGZICCwgIhAPB+VOcDM8dlz3AmFpkZtxF+XvqlYKnWz1W+Iv/YE/g3"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.2-next-1617204453-dac2f6ac.0_1617204819520_0.37265393278185144"},"_hasShrinkwrap":false},"2.49.1":{"name":"@xdn/prefetch","version":"2.49.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.49.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-n1wSFo6aQ9LzwvxkHRUa85UFZuUjITNPTis0z/fwP6hu1F0F6QO2PokmdEdz+1GFkEzRc0cQC+qqkR/KuPcYSA==","shasum":"ae9a94e5db6af5c2ec745ac404096845f7c36c7e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.1.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZJk7CRA9TVsSAnZWagAASa0QAJ/VHY+MoW8cXLId8Qf+\n6+BSBtJqG6WjB+sBgzClKY3MByc47EzifctljgbDuqm0eJbLMn0PTkOzRhJK\nzqdVmRMyE3sDpy/QNJQvPXi6h5k+EhvpJcV9rf0SwKM6nh//cYCJ+wTO9lr1\nJTZ2qBNGkVaTM4hZmQ/saMduAXeLeBre4n0aCvC/8sKPZ082qTgicaCbDctr\nPYTdWAs3dXT2ierB18qpyITl02zgKCyEVZ5Q4sqSt3P8GuOWLYjShcaieHDF\n8lELNdnZO5DsI/LNUSgpo73ussI6/6rNqkxP7TjjfVNtcCoKqCxDOJeAywGa\nQoo77jwGNjpTPRwraoviKKALNLsXWdzfy5bCEiXJqHOBKcC/NpHkzCb2xrPD\nk2UP1MsbYO+gpQ2iE/7BavkMK8qwPUpH+Mx7c4wLzFxmYr26j+Mvja9IbqjQ\nHj3pDvu/fMvD4VJmzgvrgnEHHeiKdH8gY2w2vw6M3WaUpownsYEv0uQrI/JQ\nPDqmYkJoaypiOv0WkIH95sdYpcLdUeS2lkDBU//JGyy6czZYFP5GkrGGKwMH\nY7ghKR+TIZqr2Lx6n0Xqm+nC95FdZTkYh3kzb5QugxDxAqKLh8SRcCcQ7yTr\nFkPWKkZOVYmr0ZLiI5t1AIjv14lOFY57BgVmTEmQjkjXTJQ6Se/UOouLe4Zi\nNuBv\r\n=oJ1D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEfEuDT/JeRQCgo14YEj+2k/G+Z/4x5yiopgrMxCo1CsAiBYPbK+z2HUuR9EW7z1I0VIeQUfYGY6kHKdT+WUBUk3MA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.1_1617205562658_0.7270326870747699"},"_hasShrinkwrap":false},"2.49.3-next-1617219745-6534da20.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617219745-6534da20.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617219745-6534da20.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617219745-6534da20.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-DbR9EBGDvVcwoa4pgadP/uuPUd/cDen/ww28TH5pcs6oBW1FCk/eSlCtA0JlHeBk20NfaT8PfNeDVy1jIo88SQ==","shasum":"91d77b5a7d53c4dd8d48c72e188286475dcc3ac3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617219745-6534da20.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZNIICRA9TVsSAnZWagAAb4cP/2iNq5+bB3gSCNq2FJ5t\nAWaNF1nVIhVq7e/AxMkjk9lJqSq4RzQCPq3Q0q/W/98u/xkmC1O36F3zfpZs\nXLpYKPtDmNVwTB0/qvyeR8x4z+mzKNJ3YOZ3yB9MkyEt3Algl2FtEZsriXfZ\nlJjYsG5yftgB+LTB/l3xBXFoxSa6nQ9PErH7U+xfzwYawCpYlg9/SQ6tTJ+5\n4eRTd9AFgDpqMe7mkIVPdjDS/Z4+xtEJgBB0Cg0xnasDcWYlVgg8sPslRL+T\nZFl9BxBRPKGUIZyzdd2eUWvSQm8SJgHrf1rH1e8GEpXW19mQZ2nlf6b6VVZS\n6TK55WIkYN4VMDQ/HZ98aPW6ujwYfEqwTk5TKQDrBKONsL8bESeV2ZYI0DAs\nIrAO+Gcaozle0lHw3HOjgcgazQ4W+s7Rr1HKcqa+tYpgcfwV3KUGGUZLF0zt\nt/PyJHCuVxn4ltjYEBr1FrOF4D3UG8XSWmNkfmLbg9WK6GjG9uXWKbc/77LZ\niFPLmihrfGTdzSeVs9vC5IIde/jV3fLB35zldOuTeMebZdlorv7kpTK9QwLc\nsibmS3pS7e/GgHcjZhn93DQhvrMFJlxCDGJw9vwf5aTqptgE5vH/X/mqBQJn\nU3b1m2VdEm4Y+XLAF0bJEQAbxPqnfsJr8ublU2Vu+x4K/Ce5RDk9LzD3I+Qp\nl/Eq\r\n=kRth\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBXsOhHzzxCOkgN5NK3SLp6Vx6CddIz+1SlabmefRwzQIgSPDoynxUO9ABSSTTG74UuFK1GLira0V6XI69qD3ASoY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617219745-6534da20.0_1617220103746_0.2796903269605606"},"_hasShrinkwrap":false},"2.49.2":{"name":"@xdn/prefetch","version":"2.49.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.49.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Xo8GnVZVucXU7ns0IZrb1kdhCKwWFgE+76QGEa24oZqoCAqh9EareIhViVFLQOpsr+HjQOeAqEJNuvOKF/6apg==","shasum":"3bd418720356621ecb8c757d2538420cce38a65a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.2.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZPz2CRA9TVsSAnZWagAAe9MP/038r8YPNHWYcb5z5WY9\nnbYvdwC83x9kRbOJ7CF2FLpFIZ7578CE+SnwhdHG90bjd73M817V0m+Apgld\nwIoOx6qqbSaMxnl5r/1P29+LryscmAO9gPnRGw9mipbrphLHQhhZZ++DXEWH\n8yqrhu8pVHrK9ITSXBU5dbKnFASon+VwbRazryfWoODzdbptjdu77AG9RodJ\n8gTFzq/VTxc/krT6f/g/prhoFHbZ7uxPik2ZgYjlv+Ga6etPn1E0WjuxQmF5\n8nI3aSVwzigdqUwFVAMNIkg/2AzC33PtoTF7PPSR/XWVr3GZQkFXuzEfLhhF\n+pbo2L5zGGl2Zc1k2uEpjL/55ekDXnZ6aYmmciFHZ3quLxdhX3IZvYVhHPAF\nmC5dK2x+2pFGkcsyOcPLAJO8/EWhgAa3kdqN2ZP65wSad2khE35JXDybzskM\nbANuQoprAlSULJQ4xxR2fSE7xhozVMVafx74C7XJMUF7jVeo04zFLMzw6UgF\n+k1+uMPwBlwUKPAilAA7jDnJCBrHJb0BfG373Gmfl5atS5yP0zwblUnyEr2O\n+lYWE0I7l/ZMtitTfic2iXNlV3PlKmdD86P9IucvzcX13yeFl2RkZG08fBwl\noNkjwKHh/g7TLlElDsph0Wd2Ri07i8XagZdF08K0NWktkIlIycwhbw9fxZHb\nsWhY\r\n=k1Jt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHkQ0bKxj7u+ZhSBOA7EJXCSpml+SkRUlEwyeJU+EXJrAiEAvlkKpcPstwAlxoBjruM7P2H6dFSItFtWNU8UOn7DtzU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.2_1617231094107_0.6579785631151678"},"_hasShrinkwrap":false},"2.49.3-next-1617234085-699fabe6.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617234085-699fabe6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617234085-699fabe6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617234085-699fabe6.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-uR6396sMgkaBdmwd4reFdQcBJDR8wj96OtPOIqA33Xf3r4DEY5A88wvAuCSTlP7i4+K0SE9lBv/snt4oGAL0qg==","shasum":"768cdc2d9e28b0a75000c5e2b9f4582ec2ec1b0c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617234085-699fabe6.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZQpDCRA9TVsSAnZWagAAtAEQAJoRHGN9hDS5fIxsF3kS\nqDPNmJje2upYSq9W2gOHnhjgBKSN9RRur9Vad54RLfAKpWHbz0ZA26ERVymu\n7qPPC+AiKyt2ZpY46qP8QaDF6BUZKB7c83VgQb4+dqG4W4gyoZ/FQTrz39v8\nOJjYmkruY5LqCZwamYDBbkvK3/em3y0ncT+q0Ek1Od2DVQCbPpsr7A44hYnc\npzQBfLvrZQ1KgCDvpOhvhRGwCnlRQ3TIr+FVlYMQYTiUegJdHiVDEDqp3kIK\nFFUfNPi0HJvwOqyalpklUfPVzqnKDVdoXfF0zo9e4j6i79pxtjfuifl6vFP4\nQrix7fPEzq2ww/PujR0jzdTpw9kUhWZdnnNjR/XwmPBH97wYf2C2FkVf3ssE\n5Fi4ULfnVuNC+ecEM+2qxGshMBvvXCjcz5P/7Q3Vs+x/ZcbLclPX5qwhKFgz\nnqcM8cuprd8S7jBPkzYq4zsGMFOxspIeGLtZ9sI+u3lkyDIljkRM6G2OZbAD\nRHVBlOG2GHbZnuBoRRkK+maoor9uM9ktMJWWyW//2zlwxbLhXzqnEA68hHyS\nSgOgUqCPLOmTTZ+h51X24hpLl05gVFfCChd3xI0GB0Uiim28g+UAdAUOZghp\nrkIQ/z3SZBxYpsx2OWroSntA1Eklps1SA35Mtceff0HG7YnT/hll7ZDYiLCY\n9Gm2\r\n=pdFl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBZY0TWqDbBJO7+WrJ7YxBXAdXgt4vegIkecrXY23jLgIgaooWlqmk3WbKtT8kZwU7OUD7L+mAUp3JjKtqkE/2jXc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617234085-699fabe6.0_1617234499148_0.29454654216291676"},"_hasShrinkwrap":false},"2.49.3-next-1617236816-f232f058.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617236816-f232f058.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617236816-f232f058.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617236816-f232f058.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-z8/Ru+2/xjS3ygMairUAWnrOv1QYlXdYtoBOEzAigDWDyICPenn44YbXobdnWkUltycIhDwANKHxiCzpUHqP6g==","shasum":"ffa1e9c71373eb71eaf176df495c842234c16c54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617236816-f232f058.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZRTZCRA9TVsSAnZWagAA9+cP+QGUbnb822LXv/AJrRry\nXp/aoFEI4WrZDJQp0gK9igaUr+o3X5cjAvDxYdgClEQpu243V+RCnGgHGwFs\nlQVZcnxWATFJ7cdtxTcSYZbeT3FVrXtjEU4MfMmmRpjdJtJJarwgA/qk0IM+\neoiqN237jQFcuJ9v11bGT7zcY7biOyXXTmmy3Qmq3KMnNQ/ACCB1sRRnpMWp\nLkVudTBGeD+ShLTXyJDBTPVgtcAWl+q6iWxjiz/Wwxwrw+eLs2+pRnR3+LDX\nUB7B0JPc49fUSaxj4WkXROFo7eS6N4djAWHPhFqHx6GbSCc8qB74LN2pmfKz\napYCcV4KLqxJpzMHBMt2M/i9OkDORUFKQHjx0hGVSMW8CAt8KLzeFWTSZob+\n17fyGnRggLLy7ssE318IDEcixnwvFGLMXe5Y7cksrbSDtORyF0d7D3mOfShq\nHq1LFcsRp4DsvzB8M6WcFRxFbNcDZ8ug0mr51OqXHk7SOJVDcaY7FCnZdsKK\n/7Ea+KRP3z95KKlCpTn2/VVMFhzPWuuYyWmqM5avqo176qKTLJLmV5pfdFlo\nET5DLKCPMXvj5gyWG3ZXIa2oKQ2S2l8Cm2aKpJsstYIvhjbSF4KOX8n/VGN6\nbhILVR9PRulEdpb3IJRVXlIc1BZqspQzYkSGhpUfrD/gfDnwc+KIBqQ9neBm\nmY7T\r\n=PBtS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC8yPaPvlLrJ7k/6GCa4t2MKAKL953VTEdsAEMC6d+0tAiEAmAQ2xEoKG/KjtsWyoEiBLIs6JiUL6v++349CUOlIvtY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617236816-f232f058.0_1617237209368_0.23253971598928525"},"_hasShrinkwrap":false},"2.49.3-next-1617243586-83fa4dea.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617243586-83fa4dea.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617243586-83fa4dea.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617243586-83fa4dea.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-I+9ygwtRTg8QfZoCpwFBfPwXeT4IEngDkFsGj3hRhmefK350vtyKPDy0p+GNvxdZu4wS7MEJjGKzM2xz7NCozw==","shasum":"437434f62db57de03fc9f534b2bea6190f3e3f57","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617243586-83fa4dea.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZS8zCRA9TVsSAnZWagAATO0P/ia09Wy5cJpQsRJWtBqK\nJCDE8okLtovDJ7JcpTfjaVBdJAVptWOVw7RGHoRpI6rv8BUfwCBr/bsKnyxT\nMFYdQbYCl0G+8Y7rX8UrCgyZHJ+7w5brfO6iNcNb9ici2wOpeBDB1VZI7Wj5\nFu01ze+YOygTeNSP/LWWgyvdG4+4bF9n2q1LtOcF5OlCCxyJNSdAz9xMll2i\nuLWD0Dq05Vs2knn/6LektCwsBSGb/wk1nLha4vCndP2F1v6BXwgTZK3lWcHu\n91TyFD043VCqo5osigNyXp2Uuiruyr6FN7TGNsijqdzQiZMo9CflI7Zw7dD9\n2DNuYs35gA+S5JggARLEpjoMVPHnoXoMt5ZneskW/Bcf7aWyDBY4HW/04R3P\n1k6ERZ/eCr9hw04GLLWEaRAuBmp8+aWL61mH+IpwyVvXuiFGGQLTFeTEGVAl\nq8+/VTEwKtPkYbyJaCc1jf2i5UnPiTfAl1LnfUwbtiq0C9/x09Y8+oLdxajJ\nh3f7+mxiCj+ujrJVtrMQ8jjt1ny8/KnA0Bg4l3KUxc5gRh1tkdHnj9KX7Gwp\nupiFiWkqJ51LyKCbpeVDSiwAKmaVAVGUErUL6S2HS4qKD6BeH49kmH+QXYmh\nOgG6KpIqApWybMgH6YvBS5fcRxtNGpYH0d/pE5XEY2mJHwcrYtB5Oa1E7Bal\nYQP5\r\n=MSD0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5lOWoP/ZhW5qkd5XQpPdKv6xS8uLh1RXLU3ULP6EIUQIgSe8McQu4TAfnLPiKaflV3wYz1RgZJYYxRuVBgY+yz7s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617243586-83fa4dea.0_1617243954912_0.550992555088121"},"_hasShrinkwrap":false},"2.49.3-next-1617247905-c35eb306.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617247905-c35eb306.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617247905-c35eb306.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617247905-c35eb306.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-eEtQXOtdNOqwT6jxd7VdV/OJBjdENwi4Aa6mpjfddX47JxlkHFmgH7oHi+Dy+98jsY+6ZhHGGgL/N8u2zIGRXw==","shasum":"389789d2baa83285b5423bd1b3d30beb254ae819","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617247905-c35eb306.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZUAkCRA9TVsSAnZWagAADDgP/0+vSSte4x1WPVs5lM/5\nQGsmUJNFjHnmSSh9flDarse+4Y7MnmsWaP4xF3M+4Vf09Y4QioHrssssc2gQ\n3T42lmXq06zH4IqTJj6y+dTw79i4kMmYZR09Lb8wco02PpqLDZLO6SzXG+Dy\nFawHuihzENeOzoSuB4rQrNbuxRd4VhhAf+gCjUjBo3J3TXopNBDtX5zYm1gk\nEPBhXlYM1cuDuKnnoZDZQiR73QHBVYhtv3/G7gDxkR5+PZULxb7he0F4t5YA\n/F3D8aDBTXAeqQGDTiM3pueWYKm81SFqs8KtGTAjIHP96/9g3YoBV+ubVCER\nZsSqoQ6Cjck7ONdjWt73U3PRTFFAfXF1sBu+ayQ8sG6XF/+D/nxz5M9hTkWD\nX39fNI/GUswSoJI5M2XvfmkKvZBa9R9WfcJE/qmaCovGtkPSMQ9h3PxH0SaH\nH6IW9HL3H/ozfv6Gcak71f4OtLZ4TyaOY+H054mr2Tsf90Ie6JhRcpoZ78/J\nfBvJnMknMQUJQdk2Ai6u4Rcc+FPSlNJcHTchAMwqNNmJ1x0WmxGtLqXv76vG\n9owjcgqut5KgpP5TpIgoObc+9mt7xTMmuj7pZZlbb8PRcNXfANDG+Hj73uyM\ngVB2qlIKQQzk8Cy9T4T9jo2ppH2WUd4pyRZoqoFwzBn/vNj5Crb4LmH3jJsZ\nB86y\r\n=DGYP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG6RqSqp0rb5q/MU2kBnx6U5vhiJdshb6HBBC9yn3V1BAiAEFdb//A5cYr50RG/95LG9dONB7qsiy3uhEdxfw5UQsQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617247905-c35eb306.0_1617248292379_0.597405116154079"},"_hasShrinkwrap":false},"2.49.3-next-1617278888-99f744d8.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617278888-99f744d8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617278888-99f744d8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617278888-99f744d8.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mIoXdu0QMlqZxrZmvwGAKzRYAPJSm1P3ygV3Dxwuqb0rdGkI36M6C24JaUHyrYrqKDYm6hoYtk/l7kQS1NonTA==","shasum":"0b5797dcf591c2a7da84bff1f5aa82193459c8bf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617278888-99f744d8.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZbjwCRA9TVsSAnZWagAAOwoP/iZgQyfI/zjtnuETQOm8\nm6kjXLTfA1X69ApgAyQG4RdmYxlRXhgulzGu/Kc2LUp48LQDeLdlF7S7rWNS\naYCkZArNOqk7Js3gRQhYTlmD/IRUAxf/JaduKxdqI750uFs9ePBqTDK4KKSo\nA/66HR+2vMkZpxzTddO12sPJdYr6VgBRntEuPyZZrSUIa1Eb0bSIIeoupNVF\nBAo+7AC82LCPdCrKUc4TyUSfAxkrHcNRDF3tQqd6aXd4ASPLFCTFORX1CzSo\nXUXrC23hPals9G3+gn3y6co8QYT6GKyuYvRtA2PAwF1U6mgZ47s9viRe6BW7\nPuoaT5scOO38dM8q4WcL5JEeaCQiXudMg2LZZdRA7nbNoq1pzsVRKy8Guq5W\n5TWfWPh6kfsnYU+g6B/pHdV52wBaiRuITqCeMwfz+0bPGfYsojSkiAMrk4Wj\nKGIZx69FLA+J6lbXKScrAz2fHJWtCIRXzeCszXAST3uaqRkR1DJHV9KMWEde\n2BsNHWE6VWWQo2GSDE+nVbDRuk/dHwgNslsa7+2J8vpi01XKEPg68X9IchWg\n6DByFEIZ3I6L6ADK3mDY3VwGE5Ixn/m/uaw0bncBt5uA18P8qGAIwItVQ5DM\no2PDX6Q5CCpafGUcmbJIQG3gtaGmAQe1AspgoceFkLaX/UrkUdUdajpRN0t7\n3xP8\r\n=aVck\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbCO7UetO5Cng/n2H4Y5yqcdWdQpqv3tOv6hwBoMRxXAiEAuh67QlgU3o9Fc1qkHVtkmjlvdtNTS2aoyl/wLHuKguU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617278888-99f744d8.0_1617279215713_0.2307315694667471"},"_hasShrinkwrap":false},"2.49.3-next-1617283027-821b95af.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617283027-821b95af.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617283027-821b95af.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617283027-821b95af.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-lu4rmc7S1zXe8iv+V1sMszpsbZ2IQ6cfaeMkHqRWwmpTCu9LUEUXYTXKhJ+ewSDNAptGUYWx9wMPA4O+D4pBbw==","shasum":"7bdcead37625962c8bcd84e13940b366f21ce20d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617283027-821b95af.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZck1CRA9TVsSAnZWagAAvikP+QB1mrX/nel6E11a2ntW\n1C4pLv+V0GpEQjmWG+JQtO8ufOT86mk49dyMt4Him+TeuCGO27T7uHJN/3O3\nk7EVXr6H4W2nqfC3G8vYfPOGnzH6qsmhfNQMpswyQEbQ1TcB3jgMWsxu5y5F\nVHehVC3zU2wKDH6P7DTbFU+2HEusbH83BtMF6M9p1QXWsghVC4/JXB9UH6A2\n0KgEa/4b/LV/yKvi31w+fvT/EgCQOK/aqPZ5n0CLBqUARzKzyPFN4Fq65IlM\nCSOg1QAOIzBxJJRwUapRQ+ovhleWE5NvwmaoAtDv64SgC7gADqsaWdgTRqF2\nWETEapSqBefKrhxBO/WbmR3VVf6H+XaH6RgEM5fxsxrXsudBRT+TWdbJ8Iof\nTe8wtl7C6YDoV7tkHCu4cpvNrg6ZiAQdUUzMic1TYkJn2i8am1gmvigO7nQz\nEAY07jKxA8Xyd81dls1oWBR+r5E2qpnWY0kMagL4lvbbykAoZGwccDajjdvW\nDo1EwQogfFczFQ7zAkgM3DOJR8lIJLCSi599m7yIyNlr5akQc+r1OiG16SIo\nvUkcY/S++vdKaCKbFE+fkGHQGT0eJoI2mO6dFtdqddRjSuYZCaWqA4rlumFN\niAMe1Hk7NwJSm8fXdL8vKRYHc4FPEomYtMOPnsO64Nahp8Dm8gT0rdXFf2nj\nzqjq\r\n=CrIf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDQrhTGgHjlqa0G2n6EH7oZ4OJnS+bUJtEEgP900xNA7AiEAtmR8PvIFTzx2o3OKGs+ooB+1FTtMkCr4ERP9y0YRwf8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617283027-821b95af.0_1617283380709_0.9666072625835169"},"_hasShrinkwrap":false},"2.49.3-next-1617288986-1639cce9.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617288986-1639cce9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617288986-1639cce9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617288986-1639cce9.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-et0X2rxeLFUFtjfbzv1ao2xDnq2pA8B/RXiQlbC3yow2AgFUoMcgnH8ERFIRfOrtvuG3pmJTERVTFD5QH1/Ggw==","shasum":"b12ee8bf3067f7496ed956e19b156fdb651253aa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617288986-1639cce9.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZeBwCRA9TVsSAnZWagAAW9AQAInt3XKEZam/jQPCV6N3\nBXqfNCQzdDG3f26Y19W3UpxtYXwHUznvgPGtPSiqC4O0of2+lL1wdqsf8Sk1\n/q9/tCEvQB65lVwB4Xft6mK/aprCjo6ZB01zD+ApF4VdMaCuDFUUjTh3uQPc\nSlUy9UxeGdPWpeZHHB+iYDvhMldExXgDZEa+3X8QapfsDmqBw3dM+q8vXFXM\neaNlABD4b2DiCwsYUmWwPDtG8AUNJwgISElGE7AYBQyhnwSSBfs6hXGrp4FM\nRWEmlqnHtpT4QXU5CO8aquGoguS8kaCIwFPAiqL3uGJ4Tt6U/to/ln8vangI\nrRT6ct2IPNMSs5vVVk9AWWslLil+J95DuzgLEFvuVtK00rB085/SlXRh7MM8\n/7d/cyfUAWnixXsaCSeJeyptmUHqbIK8/ay5gIUK3ONKZ7kO8K/WPriVTqG0\nWy4P/UwW17YejGUu85z17/HT7LtEGWhQmIyMZeyG2TtQGTUOTR+0RIFjC6i0\no5mq4VgfdQbTOFGU8muPuQpLU9KIfIAsPtv1hVc0ZaVsk32TveeP1zEP40RL\nLzL6apuvGBCE2Bsgz/X0Sy3vC/rSiKE427yT5KmO+k8ivEHp/sZbKk/9RdjK\n+Wg8vDkYKEj6xhImdy1H+h27051Npa/ZrYWwi9C9K85QT+TDu28+ngdLkXS8\na7Ls\r\n=WnDv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDELIU2RyOi9NAbDV48orixdY389z0FjF2dnPA8mTU+/wIgB1q8mgYTU9u9SSr/Z1nM6+zmMnRsQXol6dM1yKHGODg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617288986-1639cce9.0_1617289327394_0.833574317578621"},"_hasShrinkwrap":false},"2.49.3-next-1617290912-197ef286.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617290912-197ef286.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617290912-197ef286.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617290912-197ef286.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-dfsAlp6VM1TwC9BKBcdR5qjOobYm1iqLwPAL5pbhKFgKmmFuH5n6BPV1u/9wWZKtC628YFvfXRtzgKZ5Dx5q3w==","shasum":"4146c92b2dead52f622d348d4e3854a29e4861a2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617290912-197ef286.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZegXCRA9TVsSAnZWagAAJdwP/3eLVzY3xrLx8CrJOUsm\n4vHMHpWbWcXRV0FuJrGWlfvFbld2KuA8GcR0wSSLbcL9O1j+5HADbyszcWZr\n1Cs2+ibCQjft2S7UXF5jhkoE3NWjRr9oGADV0hkVYoAbfUgYMWxeYdPZ2Od2\n6bbo9+DuSe4hQaq+ZWrBnJ8m3Wqrvefl9En2z6yUgJfKqCCoUi+BXgym8+9O\nhC4DJYmmgzlqEhCoEiUEYTg8ejz1VX566eHjGKlhGbJXu2AgbN3pi/BJn0Y7\n7mMGOi/fYeU8qFRtbspRdXQ/9qql4XFVTvRiDnkfWi4/RRcJ3YQjnY4KPpKb\ncJ61vF2rRvJaI2cgMesOq0LMdzQx/IV5Efii94innQva5VJ2kuEz8yEOrmFE\nJjo2PWJq72xdAfduvRNrg9tzhrI1ufkYe1ZVmHm3PB7ibKiGwITh04pTkpFQ\n34kIfD9Dj2rTCEPiurKX+tdQG1sGlpmy3lDI6HtY5fFqErMuw6MZh0TtnhiR\n2IxixKLDsAbWUSV4/MHSUiWQysMxqZgyLIPy1vCNx1K7bvvrtMnrBXfClzeV\nBDCy8f6mMwBE3hL5KgialVlBUjhTFdzFNtN6ZEOpGngRDNGDZnIjy+a97RTX\n+jXEUJL8T2yitPFvqIq9bhP7vzbw6srsFHLmptgOfCTaZZIW3YIANT+cYlDz\nidb6\r\n=/+RC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0BlZczsHOpOtZbRx+XdY+w9mB5q+pwQlt4dEK82bCewIhAJWHTXGC8ukXBBWX6hy8Pd1RKc1OMLGqdeW2wThlviyI"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617290912-197ef286.0_1617291287272_0.6868797285050805"},"_hasShrinkwrap":false},"2.49.3-next-1617297771-1d444ca1.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617297771-1d444ca1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617297771-1d444ca1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617297771-1d444ca1.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-VEeU3YC3E0aui443RkwVHy06lIGT2ZmgM6U0kb4ABh/H2PI9i8EJ33K8ZIfg0ksTAkQDjhQWlkTsjxH3kgEwjw==","shasum":"fc13822fffbd1f8d565a790b2ecc424adb3a90c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617297771-1d444ca1.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZgLKCRA9TVsSAnZWagAADfMP+gNYf/la4ALB5jRGwSbz\nq5pPrdpkz/ehE4do+uPPrDphL/Iv8ogJJmu37S96dJFVAywts0v6QDdcn3U5\njL5Mrymyeqr1VNxMn/7gbMJBOQmBJxFOh/DqCqkZYmruOuLNU+BTGWsbmrH0\ngJXLcemC6K2IFykPOgJ/BVi4SPVITDOfXPzsc7TpMimhDBjwcOuiBBfw003+\nC4/9vsP8G1OzQcacItcVu55Np3wEcZYTjs6FQMosU8oCe+wCcNWEWPbYOtH6\n8N89SQfMDXUD5tKi6ZHNE5n0mpNo3GnuJ1jiw5N6Nwi+r0rymURzFcOK4Q9K\nX7jAdpbXUjluHz8llp2yNA4gamttQuoyxIE+svMkfxZyEQsL0MaFWj2tlPBl\nCSJSqjEl0FeSk/u62y6AKAEujfJFMGxzSaHZQpPQKtYJe7ArFLPCmQfDMudu\nDzb+Rgu/7VGcZF0NWTu2T8IqqMUiRGWbRDum2lfSMR3luzxbySj7cYvR3V7M\nb8MaA4ZYQo6Bxb1c1PNlU5rkDX9mBRoFtAQowhUR5ttwP4n84sPQVuTXG6nF\n/EMmNU40oKEFlIyfDIhHesYqRXXwFCWyAWQr5rXCCEaHEHertZJljVes3JJ+\nY/per0cw/Y4K1rS1Q95VMESGlN042f3I65SRagKl1rh7RH18Qs1hNpbBQSAd\nocw8\r\n=R/YR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfB2vmalx6bKsdgewLk1e1M9B5W2K91tgnc+zdKG5FBwIgdBkL0HWCZB1AstD8TLIe+g7+AqHMcxQd0HSP65UekZE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617297771-1d444ca1.0_1617298122330_0.43229205883639565"},"_hasShrinkwrap":false},"2.49.3-next-1617297959-1a5a5afa.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617297959-1a5a5afa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617297959-1a5a5afa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617297959-1a5a5afa.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-s25YTJfGaAJSLE4fLphpblutz/4l4B0UhHw1Ozl6OegIECASHQk5nMYoCTx3FLMx1tZlprbXUyrXU15YiwHBGw==","shasum":"00ab43a7c3f3aa3b94dc11e5c941391b52cc41a3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617297959-1a5a5afa.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZgO0CRA9TVsSAnZWagAAFnIP/jlV5edrYgkXLoivmEN4\n2wvWKfialVSaE4FB0prU9NiRjuIZchS+FSqZyDUSQ32pBlQo3nCyfaHTYzwR\nZ8DMyCAlPRRk2zVTz5lT61fJtiPmIS3T0E2jFHuSnPfI6STAYf5N/bS9nMuc\nfkf/qqJHuHB0JcbKtnFPo5ckVI/gr22vZCCZRofC5uLNgQDq3COgo/xG+nd5\nDNEktmHmXl1RsCirniTgMsC7wFQTShgqEhwqUPrJU2URoKiAeqL4w6RwXAOk\nEQUfKUknJ7MafHgg+cEb/TyLUD4UhEIHBJCFxUvBfgjopYBC1JM2jHMh4n7e\ntq5ylLsZwcTNp4oJBIKG8TL9bhppNDyPMLkEDbnEg4HfWCoVY/ghabwmDfn7\nyvYp3lWeDl4qkpdJxlGDiZjJ8ow+8m/lQo+X2/ZCLOCyNLHbjTl9R1ISMsp1\njDWHfaSCtRoAKFNiGB7PdHJAwzDfCmZj54qbbgVyszbquTYazqHvUOEOS+C3\nBuAaYyNhd9ARfHB8ikXtLG5dl+eIh84q5M0TApSPGhzjIyFOTKM7rQwp3raT\n1wlQ0xWC7u8CCRV4nw3J4nc9WdNdGSEt/U7gL/oLlSDyAcqVs6p7VsVC42xM\ndVlW2heJz2/ou2xnwM/0uIwMEqxIZv83LgFTucV5Qs3X9QUYq/qeHNYc2kv6\nAhKQ\r\n=OZ+I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFvwG0n2s5M+ruOTzLjsc22iqA2In6iYdk83A7AwBO29AiBjKDE4W1ljRUZct3ZgGM39t0M9IrC0qHzSE89TvmyT8Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617297959-1a5a5afa.0_1617298356244_0.6623363184882634"},"_hasShrinkwrap":false},"2.49.3":{"name":"@xdn/prefetch","version":"2.49.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.49.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-kT1wXWfoEBeIrw6OddKdrudnFf6NJNEiwHYINw452mDKUVBi/QYM2y18LKz183CBfu4KCUbeid29fKE7eol5gQ==","shasum":"a1a32c0dd5bd70b26bb77b3d23a423cb7c32945f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZhTeCRA9TVsSAnZWagAAiKUP/3SoobUnjQM3oqzWpAMV\npIC2QO9P74/Vs+Dymn0nbU0hBKDbtqOpQ+utbeFMrDnwZpx2wdpV5ac+HDWn\ngmA42zhsqw2ldE/woAlQoPocw2tMbYadar7neRsjm9s5AfrSlo9b/yk16FfP\nNr9MrMVDZD+ChQdQfnevcc9Pq8WakoS/hI8O+9Ua7+vO34Ymi0q738ZZpZ2e\nm+lRJr87YqojfIlmqcxIHwu7gZ9OrVZ/djz7nO9bdaE0DvR73qUVpvEI2org\nlBvtec2/Iv05jn77rN7VS+Z1ddW3G3hwIPmBVb6e8rzsado+BVG3ez/4iYA4\niHUhG1I6dEtv3t4dBikn7euBCakDXM2BWTNo91bw2Wy27HGYHbonDXxoB2Rt\ngj9a7SQ6QYXCTBewgkYADztmGl4xJv43EQjKDuhY9Am4IP6w+2+V52NpNqAr\nX2KZ1ZIeFXllyR0Kw+7npWv+mt0/mNd6RjLlHDa53ZiONkV3/IsLnSsf/6kJ\nGLPICp0Y75D1sK9dv6QZQY+I6mTBWQEkIXBIZvjseeGNR/wvlzTYgnUVGq1W\n0PfN5WLGaMK38Hpgc3Jo/vXty1hCAbXn3DdEChBop/7YhAi3aPZfFWUqZT1F\nazoZEEBeB3PAUMOi3ihMb2cpYF/5BpSLaFLceYn832IWv/F5ccuhzY1lj7Hh\nZBV7\r\n=p+Ow\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCS5ABsX71SHHdapKtrmBM0lk5XB91edgD81+34yIJDqgIhAN0YXEMFEsEuFng8IAWoBwF66panPuk6EFr44S4icqD5"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3_1617302749482_0.6157638806605394"},"_hasShrinkwrap":false},"2.49.3-next-1617302441-3d0d5e3b.0":{"name":"@xdn/prefetch","version":"2.49.3-next-1617302441-3d0d5e3b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.3-next-1617302441-3d0d5e3b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.3-next-1617302441-3d0d5e3b.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-l/e7BnbVwa/zI0TiAECP77M4wlPe6E8IWVx09c2FLq26+8l+F2F5+ourSSZssd3rTNtGx4jCRKpLMIW1IGW6xw==","shasum":"f2c54960955f0c91a6320f14cf72842d65214f78","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.3-next-1617302441-3d0d5e3b.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZhUbCRA9TVsSAnZWagAAlcgP/18TBab574yJx7lx5zow\nPetatwL6uguqOU3bWYlRtGuj88j31AcKgc2TXbkSmBhcY6UuzSG+LvhUA0sO\nq0453s2vM187VFRf/lN4pxf8BoIFdX0rnMKLLJYCl642b9Pgc7mBN+JClBCx\nOyNJEvQ3gHxlxT5y69z8S7rOYXliNEpfEuTy6ahm4q+oZMbB/fxUoPFCnSmI\nGziJFv1bgn9q2OXQGUIHyRczxwhbuGyU6sHslGqlKmrJldw3bSAmCj17Rbjc\nuwrGxhdeDdM9IDAvERDJ5VTODtEWnvZb+tN1sVuhPvDBqzhnYy+JKsd+WVLy\nbcvUJztQV1woB6lqDXykgqQHA05lPWQ+Q0dWz6o+kl7ZCc4z9QNXRsLQOnFp\nQMz6q2llE3UrNY+iVzPyXbQYRHvSjVfhuHGd7JpOsrvf+0jL2FFkPvcMHVGT\nKG/gm0UjfGTA+uBFhiI8uqoxQf/L69pSdGpbfLI8G3bSAcU1TtAbnYXP4l7S\nuFDtmifR3bu/U431gU46EvClgK9fxgZDYCAyoM31DlX/QaUZMiOU8JolIjq6\nQqKfhCxbXMpry+b7HGewV0Zr2YLMkYf52Ib2muEYe1okH2nqesZeOopW10e0\nqV3QQFdSxeEPHSw/uX2R+FoTbeyEFeBqFxbejxJA7hxub2Q0pfKcKE8OGCo5\nb0t9\r\n=ah/x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICbhFMUCJgyyStdgBP4hOIXF7mAuRKiggkRCgmiGm2OsAiEA3XInm/Z9TRjUQvZMINKPrAe4Tffec1fFCa7G046E2Po="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.3-next-1617302441-3d0d5e3b.0_1617302810456_0.636430555533976"},"_hasShrinkwrap":false},"2.49.4-next-1617302497-329f2fc1.0":{"name":"@xdn/prefetch","version":"2.49.4-next-1617302497-329f2fc1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.4-next-1617302497-329f2fc1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.4-next-1617302497-329f2fc1.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bK+ogpnvZX/roAnvhQoTgv98kyYLuRlR393IHl2z7ygsr0rUZ2LTL2Admq8irscbpodo37I5c4JcEZe9eL9i/w==","shasum":"21569e39a9239799cba24668e3174e5313587f7a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.4-next-1617302497-329f2fc1.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZhUzCRA9TVsSAnZWagAA8qoP/0eht6f2DwPDMi6sVgme\nQueNxynF57MCQ6wyMgLQzr2AzXcA58Sk1a6OdKSI6pkE9Kq7cp/ny1zKtIyY\n43Y/DIbi22m29z6p/fpjXFvJKDcPEKt6rMxDFF2RX6j0NZfiw3/Qq4VXnHc7\nN0p8KpY9nYN1Gp/wIy9d3fJqyvaymVmqPV56agj4m9IiCRQXKG6KTLxtT2pE\noz24YARbQoAw3boTYIieukTGns3pZwkq5oDzvCLxdcIdYNxa7UNv+P8n3Ldt\n354y3UnwZ1xjoZTaJC5/fS7YgujdN0aOmvniiUoKWuN9rABesWghmNIQ16ZB\n+z99P8Qik2fY126GELAPKGkMhArNhW37UOCg0aomtmcwM6uzL9blbbhJcVx8\nPB0+80y4leHCQQRTHstKcHlchP7g4CC91/4uR0eDnjE22PmkquYfM/McbKXc\n1Ozu6LYNWm+2G473gtM7ngm1ts/zHngqyVnKPhge2GkW9lOBvWzmmkF5lZUN\nYMxiMlkKxcHOb+UmmdWiDup50qglITmEfgauY8g6stzgQacoztl49IsRQgUu\nsd1RALb6oV+jmOpEofYNrOaT8rIlt5SuiHYsxrXfV9msz+Xm86tAylc5cWls\n4Pcz+rEMkaJyRbLkTiEkxe8RfStgSz2M5yeKc3P+hGXBaaaXU9BSa4cg6Yj4\nNWnB\r\n=vfV9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7YjsB8zYCzVKvOIcBkUVW18cYoO+xh70BdDQ+GVNZoAiEAl7bK+dMX5qbwF4+90WCJROIxnhxBFWO/mDBUtvJRWqY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.4-next-1617302497-329f2fc1.0_1617302835114_0.8590686177282103"},"_hasShrinkwrap":false},"2.49.4-next-1617351652-a7b8b78c.0":{"name":"@xdn/prefetch","version":"2.49.4-next-1617351652-a7b8b78c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.4-next-1617351652-a7b8b78c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.4-next-1617351652-a7b8b78c.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-K2yrJiaSbxiOf/wwzVr7Tkrkac3qzGjIVf0l1wWaZzp2bylrBlqTfcoDJGJ5DFqKWtg3WiSUwVE3MJV7Kgbm6Q==","shasum":"4216f16dce152f979ef65aac13a48f86cce349c2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.4-next-1617351652-a7b8b78c.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZtVYCRA9TVsSAnZWagAAvAwQAKCzd1QPsAt6vdxUDHm8\nQBukq/w3VuXjDJ8ZpqCLNOTwFkxB3sR0w07cwmepYm/+971eI2IRXc9v5j3e\nkKPAnB3ekDpMoOD3cdGn6L+j8YpG70LzOvJnFUu/tgdSLdx1wKEN+Fj6kpZq\nB0Q+VVzpPuUvj52e9vRcAAXzMVA26md39X3NbPX234MriyqAhGKGMtDh/kX1\no7ICnc0r5SEtFgIYqEwR4RLKapHUdg8lS83n/GD/kbPqTb9gcafEax3CY2QI\nACI241xIudTtzC5NlFHsR0ygcTIqyelcAAO1usG6iC/GzdVeO7OGNmxJ8JIL\nioRTjWf6p+dC0LEkeCXegugpBTEs6bOhXnhMVUThevaLFmSDLjRdIG3cP2aU\n/b/9yYtJmDImNmrlgkK5sRf5T8AjKF9A9rl8LUi3ezDVtM8OTp53Op5TE7Qa\na2oDMseiv53hQSDcWqr6dUj/Ha3SGlc0ur8j/dmVwIfoGUFMwAO0zyt94IxU\noOEL/xbohtffA/730An1MBUOfbSVDwtSrbN6CE6K/LSFn44+gKaw+ydLZ2ar\n03ZNdgKObOUAUZfZYr3uXzw5H3zs9lYMtQXuFT3I7SyfEe9ZuKDmNwkI+hq5\ne6lUmRbgwKZHYXZI+i730f7TBVobQ9VeYsXQo1BuTTZtd8+KMGwfDimbexEc\n7Bmj\r\n=XUfH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDfz1G6vF6k23h12Z9rkYX5DCL15tyZVFF8Iv2fzk9bcAiEAyCcupYfA4MSlQcEfnsZuMJaaR275Blay096nhlqImGA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.4-next-1617351652-a7b8b78c.0_1617352023706_0.08266816380376452"},"_hasShrinkwrap":false},"2.49.4-next-1617355356-a824b631.0":{"name":"@xdn/prefetch","version":"2.49.4-next-1617355356-a824b631.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.4-next-1617355356-a824b631.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.4-next-1617355356-a824b631.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yL/io+ZqJMIYc8Q4bh5Py3oLkXZYQ3i9X4K1FDMSxfGJcBoIDcqUYVjLMWr7zON9mMCdo6uUFmAfDWkVDn5qHA==","shasum":"276fbea0edcce174befeed999a427f91456ede54","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.4-next-1617355356-a824b631.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZuPSCRA9TVsSAnZWagAAlowP/iGIA/Xl+0YMNgJDJ/0t\ncGdR932Kn/AuVXi3cy8ECEX4a5AK9YnsO/CCpDnqmvt6Dtxbbn5ftFgyUi/V\n/dTSpYmdMUO/7kJYe5AkgdOj97aPYT+Ja/PrpMQc739QuYBM5h80agVVzQKL\nNiMkHgPPDtpiaQvpC+hCY0vjmF/qRv6tH7lC57zmZCIeule2Y9klm4AiwpPE\nZ5hyW59sqsA9vdb4BYSsqA0I/O5c1s+Bwb+OkTC27VxWwhb5jYkseDG9JSjM\nwL9xooDMv0kSoTXNg6Q9EVMKS9OhB1dMuSjTbPANkeSruSw1WaxCfxk6PQo3\nPE7+ji3nS1zeWwTY533Gdq1GZVBsoIyVYLEeVg9ku3MgbzoNY3NUpNKzR5Bn\n4D1GhnhOALKyU9uBC+ZMYXTw1NXT/yfnnccE63ZOxCZhZNjINxJW2q93Fn3u\nl6KprMLWFbUTftpYSV1AOTBReBF0YPA9+JHbxoT6nv/ZVGdv+usllkqVznHl\nxvDmkpYbckhv7cEzFP9ihaie00JTtkZXwifDzCthhUMhJfCD7t5DTcWUn5yw\n4qruF6mteCcbQRp8EsowUCAhpLDLOSV9pJ6/Igq7+OZb5N4fb67+ww/lX7FQ\n6u+iN6ybWEhC+W1h9C4D2H4wTDTp+wrDQf44uxnQTWGVbjkNHXtOyOGGXsLi\nMbgl\r\n=0Dum\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC1iACSde4KHoDkI7g1nCgqEWKeYmKbOsu3BAof/BV+FAiB6F6mbGEs7ag9RVcyyO+vMcdZbo1zNvL40GB9Xhga7eA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.4-next-1617355356-a824b631.0_1617355729966_0.29519418879963566"},"_hasShrinkwrap":false},"2.49.4":{"name":"@xdn/prefetch","version":"2.49.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.4","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.49.4","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-N5BfDHkP624F1UKQKWbHfe7yPQAm3DC0CZ4+OWmWlvKhzEgatKvLZnEMOLj2fmrqNHUVftTrafegzBxIll87Ng==","shasum":"666c42e4a19ba96cdca94278aac85830b70f4f3f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.4.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZxqDCRA9TVsSAnZWagAANT0P/RUwUZ+rdJmt6JDb596D\nXCh4L9ENaKAXzeMdD/BX3zbASKPlsLApd0W2P7MUHzAD5NQNGJEx8JwECSjU\nxhngZa/Cl/0zQWO0ke+8G4jx7msmC20Dg8HxBCO3bgxY19dkKjD/5Qln9Chx\nRIeUHPPimFq5GI7877p/+Drj6+1A15ZaYEFO3xnGvEBQYnqGMqBQBGxzUAK8\nhTRJ6lOv4iPThNJ9UgjETDtBh7qrveGS9mBvGJtLI2pjAVfzBXnK9mnXy35m\nRJKmRQHeX/pnZ8euka+oyJQCaTzuIiTA3I9x3zcL2fspGVpU6thTsHa+asqW\nabP07uDp0L9kny+sdkvSFr54j8v46O3IuGwauYXv/FG4LSwBnNZSq3ecawBG\nlBy23V4WtVRzCRmvwWMHEfQngV/LSItpqUP6CAycxG7ztNzs1PiS1Mx0ichZ\nCUL76w2JnDbggrhHIENHQImpMCsMWiMzlTLtV1byzmHs3TiZK5jD1jWygMBw\n5prmBwHNdGwkOSnWxd5ytDkWIeI68BGrSE/NEXPuwUYEHPNL4W0FtNPhU9EN\nsDWjUh5t0UP8HKK3O4IholZ1qFPFCNKb7396x+aw3ZXBCGUXlGB8XTRd/yrt\nP4ggf6OUyVC4L+5VSLsArlTLr8jV9k5dfzFXS+ei6Hvq/hmhOWtnGbD6m8on\nmVgs\r\n=chXd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEMm6g+rXTImK7ygmozh9CSYkAfGDl+NPFzkTbQBX0DwIgZa67J/E1WBqIF4t8NMRU8srhsqUb3wP0ImunL7+Jl+A="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.4_1617369730641_0.04435285448250914"},"_hasShrinkwrap":false},"2.49.4-next-1617369446-7d53e914.0":{"name":"@xdn/prefetch","version":"2.49.4-next-1617369446-7d53e914.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.4-next-1617369446-7d53e914.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.4-next-1617369446-7d53e914.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-lgCbJ6ljzNhDqfeK9dMoDgYzLaFkzwP5B9We7k+bR0nJ0meaVwWQ7grpihr3P34TMP0C38PwiUQvpS0k3VMwJQ==","shasum":"fe0c3b94557edb9b9666abf41a6598cfe446427c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.4-next-1617369446-7d53e914.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZxq7CRA9TVsSAnZWagAA3V0P/jDPB31FEn+6d72J+Bxo\njsyoeQKCXCUSGbXqOYQ6x5dWMrsBMPsPhIr/7KJgvrqfGv6jjGlkTWWHLdwp\nMjXQ4jgTDyFjJBxug47CMrbe4mh6jEFkjqxuq9RXcq+dAap6ErEEFnv95FOh\nrq6J/J7MFZRdKD301mpHW35Nrx0Mf30PyXubjHxtVyLKp3/HJ8bZGmJRtSYO\nOOvOVa2gTxKNO0N7NhAeIKYkk7PPA9MpQBdnk+PF2fwyTGmNEoCbWpspiX00\n4pjt6+MFv+zv2TFXshaN6PYIUN7V93UOlHqcyPM5MMwT/er4cUvLWeL8rBa2\nOFaR+Dz7/IDbSfLZHg2F4mmwpogWaDC7kcU6VtA+3yTW3rV1IiTHie3Vowzn\nu0/V1dEEomZ66moE9vK6TLJY7/WgETn0rp7SQgN+G+VjdM3/Udpt8TU+4WmG\n2MJUtvRmCYoTU6ZVxgl6yoXynq0DmGfzq2SaI3bi7RD9/cH1Cc0hLE8zqBUI\n45KBGtxaN/jMeLRc+harfIfz+H7VzGxjJ37AykH6/HCQu5+E6m1HSQAP10WN\n8/I+yXEJQ/YGhENESfchtxHNaf9uqWqcWfQTkk97q+2SpLPTCMvgJMyTQH27\ndTqYSdxdsSm9WtWnHOcdxiuc+U+FnirToNVe8MHljOhXF9lxg2xEU5jWanBI\nYghg\r\n=QZ8C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWqzQHgvhPZScMocxxACy4hk9HXCb6Y1NIZl2oHnjCQwIgEYpstlUweel4YdGiM8mohSD87dVxerOGPHgrwT1pRVo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.4-next-1617369446-7d53e914.0_1617369786490_0.12404792633735418"},"_hasShrinkwrap":false},"2.49.5-next-1617369544-b8054af3.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617369544-b8054af3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617369544-b8054af3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617369544-b8054af3.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-oUXPdLkv6xevcR4p1Ich8xx1RcMRHomcpX6T0waHvf460Dn8AefsvcbsGKtfff3wHf01VTENcGJIvsxcFlBxlg==","shasum":"4064e85e73e7da07a5619cd889022ec2dd1d3f3a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617369544-b8054af3.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZxs0CRA9TVsSAnZWagAAYbcP/0yHkwhvmU7I55MiVA+X\nvJCMmMybjnX57LTOFZzo23zfNC11oG72OhSm+8uFxjCzo20tFyGN+GVoy7Hg\n34sNhsfz6Hwbq+Jt31fiMgmKqB5nQHXBgal57zqkwfGP0KYPpUXh3JRAJjHn\nfDo9P1+g7/8OsARL0jWacrdTPUa4DbzRGWP85GQqUHpyR3w3YbLd6z0qJEN/\nwNrCL+wJWXfPr2zsSV2vBxRy00XDbvoxm4pR//R2esjb/V1hMDhEFPzwXW5l\n5XD1gGuxXqP/TUvoYPFUmMuybRlfMYAUwwnvlWCtO2ltXDUtYHxc3y43T9mt\n+OgEiKOKvHWUUafGFMLYwKUoRF5NPbQ3QokjYOoJfSWoJF5yZFm+3GV0An0d\nD0Bp7zKfbC0FdVYhcDmh9vzzyWH4zSzu7ERUM9shHUCOQ8XnjvHy+mtKGcTU\nnio1YjP7ow1pV+ZNamuAoVOlLnDsycVcxpn5TTC4nnQW5fIh5kgWGwPqX0Ah\nu6vqF7aMajoIo2dk4PSisBvrqMhw1D9v6U/EvoLcq64AyyzBO4IO9zz1bXD5\nBNmm2GFTpz8mJj9MMMwMkdZuQkFr4FeUO2cgHTPZI1kgKOxNYleN4mFyOTtL\nBaKYjgtKbWPSf5jD6bwaU/HconTCEqzd33uukV9w/oiwwmsePxd6K/pOGzRJ\nh/LD\r\n=hW+7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDi7QOISTgRFMaYb5h1rP+K6Ht6BgLTVf+X/cnyA5JUoAiA2sn44ET8PABMuM7Jk+DAKi7Tsanh8Wjvrro5aC2o3rw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617369544-b8054af3.0_1617369907424_0.021042727232173597"},"_hasShrinkwrap":false},"2.49.5-next-1617617643-6c94e122.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617617643-6c94e122.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617617643-6c94e122.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617617643-6c94e122.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-TvNi65vOf7hEj+WAFxCZgxZt/UfOwIwaxa4Sl+AgT9Tdq2zRuZoRQTvGtmYgOVpPLEViUOWed3PVUcRkmb2ang==","shasum":"cc7cc0c5ea83558541e0b8046c3590dc5853aa0a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617617643-6c94e122.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgauQPCRA9TVsSAnZWagAAI9kP/1PswEQcR39nOlKk1Nqd\ntygjfNzD0y+vnxwCd4V7ze6ahgwndxJt3Lc+K3r2cp5cObRX1OC66zsty3VJ\nQT6YPMf7hYrP+gTMWgEKR2yLGu3/kqcYgFceOIyhEBcX+qAl2hsPPfGPUDeT\nG5T5eIzTnzhvheGvsmJGxIEkqPlqNmtvrpHxUiY/4AmC3mV9hqyuMG5a1Soe\ntm9pdv7BqYRURRCKw7oZHdt6DlZRR2syBOpxxYOoenKJ7rrytYjgbThm3+Fn\nl4Fmm0kTOsPcxTpiqc3C/vbgJG6L78rxV41hxP7posK4ZcCAHIMprUCx/MXG\nd+1Ngwj/yP02pd1/eTMDFJk7ny5dKGVs9xjcvYtsqBb5UXL74Bdr1j6UX4Ma\nlKn53JJXyRYaYSMtr+D/8HgIuqJcV9/8BIc2vQ+lk3QRsf6KRVzdUEgCCZVt\ncYz52f/UItifRz3W7nxMxWEiFy9x56BpiNGAYEmmldK7JggaS/uIotqsXMKP\nnPUd0vQ1ubTUN/dg7Nl6qfv8lzIUpNIMIYyJXiXaZcDELxyBhZortEfXsA8n\nxP5xYpyxE0d6DmcwkejTzGwRH133dqUhGHH7x7uGYUg0PzSuOHgE4Xd2A4nc\n6GSU2HWbLgTHPgmnbk3daJ/gzQs1/d193d48u3L74gfb3BgbnCnXfukK7j2B\ntUqK\r\n=Bulb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFXklQCfvICA8Db/MKoqBEQ2ZS6swZZPQ1KULQd6gAvxAiA1MpslKBVk4m2qppZDqO5noB1aMjOWxr/5uLuX51r9/w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617617643-6c94e122.0_1617617934400_0.23088274855185809"},"_hasShrinkwrap":false},"2.49.5-next-1617620492-657ee70e.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617620492-657ee70e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617620492-657ee70e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617620492-657ee70e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-WDiLjjufbZHyPMyRpzUVTmPMgPLsUpTZYre+mI2nPs6DnWovpmIuPQcaH+2FHaLaJIaqYYfAEXVlf2YgI2aUBw==","shasum":"72e1b2ac2c2c3b5f655696022df86ac8f18d597a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617620492-657ee70e.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgau9xCRA9TVsSAnZWagAATtkP/jgmZpYU1GhzNon1vMHQ\nV1eYOn73qOKNFZRbr3lqnnIObNwgR4T5l/PzyGI/5s8vjgwqaB5Fi0kNv+2T\nUSq8+Nm5ggsRrGTVCwKEy8qenooKBO1T2zvkABs2dT59gxh502t+mNeQKMVv\nqUSYi/5LDsnKFtSLHbGUZbxDycYhqPughf2wskidvvIi0fLHj2RSoi+EJS77\nFIcUg12xwfusEZcvLelrN+pwRIwShSjwixoLxzZxMI0bqKiHqmMzO8szD1hM\nz6AsABoBDTw6ZNly4RMD0HvKwoTlo4QPMkLTmv3DK6hUBkfrWa6Fr6j1ToCj\n5JkoGwRsJac4qP0m+ieXRDKMOSP6/6YX3QN96LxlgBra/YYc4S0liVA4q96k\nv7cy8gtJUbbxLBH3Ln9gyAeoUNziAntAb3TmjbIuMncwdZDOPq2d9TVAbk/j\nGvaYUJwPQNd755760noVF44H4vPr3pBKidjKa/mxoxjzJaMOKtJ5+AdCG1bc\nv8VZjrp8cQkX4Mibq7KEvpX+b0cZlB2Ygwrzn3iQwMU/lnWQCFGT4MGmVLdc\nhjNYDGDSgCeM5Bsc5ZF5wWbEctfndwx6eoRwkyVcbByb73dp+V7zjfcr2ywg\n+qRo4Ui4vzDZXA3YT8cYEj3KEugdcru9m7Fd7n/KAzB+6iv5FcSqDXEGfmIQ\nkBwE\r\n=6RhM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE/GK88BSGTdSvhsC3RWIKNxt4SkbIwtDLJ/Afr05l7QAiACUp4wKNNCu4hWU/EfzBcGeFVXiRCUSgUZ3lD83nRVUQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617620492-657ee70e.0_1617620848525_0.803842162942024"},"_hasShrinkwrap":false},"2.49.5-next-1617623437-b8054af3.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617623437-b8054af3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617623437-b8054af3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617623437-b8054af3.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-hiY0D3W93u3TKAu0X1GqRVL8dTg6F82WDXiESzluwrKWlUbj2BkHs30B045vk5aEWUFKmeLuOSKsS+3zzG8CMw==","shasum":"f936c94594c794383f32c6d52f662783654b90d8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617623437-b8054af3.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgavsTCRA9TVsSAnZWagAAKHkP/3kIR8oAXTFiiv9DTcdr\nRj6WZUnwNC2YSWI7ye9PWi2A+wrxWIG6V6B7FC3m/Jh7nswwgTQdk696okTZ\nrslupIFqy9vSdWW/r67T9D5YlnLg/VHJducck7XBGtNn6rV45Uksz3OjRf7I\n2QjS3zrFAxfCPa6ulRAgUSxvzaW4LrqC3fuVbnrgP9yHKmIpHB3UlYSH4S4A\n8Wpe/u8qPY2i2e7S+DIqVuNYBDl1OlXOe/M7Lp0OBcSgFoIu4BG9auqpMvEJ\nC2BTULluBJr/Lj4uqw4D4CpeBEjWpiG3QQVfRjSg15xGm0rzsD2oRNKhq/nq\nBBDuYUz7XJukfPRKawqHjMeOqlYOI/E1oru2qNmj/nbxqqt2V7DLH0dGDmBF\nNY9SAmnHiNsVH3pQI+DlM7lXXb3JLSaOkIpiiJBOnluYdaXJABcg+V3nJ3wd\nKvXVOYkeFfMcdACL72RVaav7d3pyBvruto04UJz1zEbK7HHbHJ5AHTmQeVbD\npcEnpnWi9tHb56BjhhpdoupZ9qbhqqwBf5c8IVgn3br5t22I6LDWX/GIAa06\nor4ijZCSV/dITDBA82lRvbk3mo0Veyp7+JEJhtJbtXXirZld/4zABYfG9R1X\noKoIEh2pD6Ph7+fcVKwBbpcXeZt2IGJR2ZeXl15T2oqATZKnrhAzYNjQpWIx\nV8zG\r\n=ZuuB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHpWzYdpQR+wiQ6RuQ12UoTwCaizxyMhIAwubaxRhVduAiEAkSJQ3gbA1fo3LRUJLyGmU4B6rhmLFae0UTTWoT0TdnY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617623437-b8054af3.0_1617623827024_0.9688129290613776"},"_hasShrinkwrap":false},"2.49.5-next-1617705395-690a316f.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617705395-690a316f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617705395-690a316f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617705395-690a316f.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ttCSfOq4QeeFdFxZpIw+dw4b0YhiIku41FYCRfDT6XA20ctwLyAFvyrcRzvHY6l9097J+AQVVkcTSvFztcc1qg==","shasum":"bbdf16870aab3202b06d35830f0115f82d2c3399","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617705395-690a316f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbDsICRA9TVsSAnZWagAAr9MP/1mzETVVjPiN16dkh7Tn\nGaGARO0XqDtPaJozwsHHh0wuSXz44ZzJE8VKN6poMhfl+lpva1+T/DoJAE5O\ngFuPQBShhNdzrBL+RGhbmd0lmM/KjDZztdT8NjbKCw7Q5UPvgO7KyGXRCrLt\nPGEtQYwhj/mSgOBKGgIJ2R0UBMBNtrXzCTms2L2IB27kl6EACCTP4cOQu5mF\n6T8Fc3QWrjHXp9rm7bNNWXiT5g9Bo3nJCr9l5LCKBiNYZMoEuQNYpinW5kni\nZ2VMGNpywyalazOjzepUzNqyMoRd+ZSzno3FOlodDLctAWVDc+xhYZe8ZudP\nnsZQ1/arZvVPU8ry9xq+BKhPQvNoIJ+A3sA7HYCmwohDupoofr4aRrC23jZM\ns3nFrnsH9Xfv2FMOz3ZZWQzkk54T4IA/JSRvHxhoo3SsXW/vgtPyBoUOdOH1\nokrS6s04wKLi2+TKEWcyy0CLzZMYzD28F/4EoC4ev3cgqn5l5vvvc87J8KhU\njmKQ0XRrrpvNmWgxfRTeZNbR/ko8zs71X4GU9KzQiQa7WRo4y+WYmgSwwl5o\n7L1cTnw60sK/mA+kh4VS1Qia5Q3JABm6IDJdvBRjQrq87Q0+b/qpvT+VhgPM\n077VwD/COtL0+APMspDqz0Y2VigjiqH8+FtFffBReJDanQELC/0HVqiECqKn\nykhv\r\n=STkH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbO976k8j7lC93mXdzcc+/GZBvPI8gR/brr84b91LjswIhAPlQ1tAYbZm6trSoloxLSEEDIdCfjCGab2qntwTbbF7i"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617705395-690a316f.0_1617705735597_0.3250931550470664"},"_hasShrinkwrap":false},"2.49.5-next-1617735686-22d077f9.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617735686-22d077f9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617735686-22d077f9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617735686-22d077f9.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-lJzihpQ+ET04L99eaGhu5ctZtuFysZU3LlTkvyxGQvuXWvnbnXBTQjcDc09aD5Md8zNudCh4KuN4RBiEooCkxA==","shasum":"e3d7b24fcc48f53e8a5058bdfdbdbfa1c946e668","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617735686-22d077f9.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbLFJCRA9TVsSAnZWagAAcJoQAIreGaSVTjfkuNykc5Q9\nD2a4A89/K5986szblm8oJWZ2iSf0pwU3Ye+Xs0Jp0rNMSrq9Vk9PLmcmAFxY\n2DFhK+tLIqqIYKQ3/1QxGEmuGt6U4lW+zV+YQ6sjwN7yDh56nqdaQsjGUGkb\nNfzWxoE8F2ZpQLbbM/EZjx7N8b6eGS40acCYWFLsjTITMog3/ud9OjRM2HcS\n/UBvQ/lTR+1s+Z9NQvOy35GJSD16+pZaLc7eHFGGQzTBkSMJP6JBoJCz1VCU\nJSqi45tdwM7w/WhFIvAvxVZV0B6EoT6Q7h09Pyy07LM/HZvQ9CLHB0H/7QPb\nXm9Fr/7Xic4JOAtXp+SvbDblH7Q/3hH544BOPpNN7i8dnnh1Jn+4FFWBNweL\nkEsfb38xveF4PHxdA1cupbCzvEBrypgvpaadO3TADyW1rMUfSB0Z+79cl/AE\nIvi9Z6JV6AWZ7wGjb8jnKloLP5HlPsSw43G70FkDjGvVjVV/Qnqz5TuUYWNE\nG7qJHbEDSKGY8FQdAEXfQ3pFaQ4mpLVvuYEqLZbP7gNQip+3snDToTJSsvfh\n2nnaydcSznhg7mWSnGzXVx2tLkrj++EhU6FupZXF7gZBkMxGkCjvkafFrc26\nX2al02I/y7LlKrVugW+Iv21g/estQftptMjiyHRPxW1ejaWxe6amVSISkY/U\n185n\r\n=FxAJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7LzEci14yVNCgE1sjqJDR0a3sleRvEJH7nWi+4y1N9QIgCFobIxMWhDeVEMcCqLbEgHLfQrrb9oX2xMZdKgrBl4U="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617735686-22d077f9.0_1617736008689_0.48634468684727317"},"_hasShrinkwrap":false},"2.49.5-next-1617735676-8e406ba0.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617735676-8e406ba0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617735676-8e406ba0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617735676-8e406ba0.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-CAJGjMl6+TaYG+O2+2rp5r5g/kFiaWlysbeK6e7xpFB3dWXe8E4XwLzHTEcP+Tit/L5PVps4I/f7upOGHJPSng==","shasum":"7ffad9e691cece087644196ecdbcdc2b0156726a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617735676-8e406ba0.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbLFkCRA9TVsSAnZWagAAs0gP/2yVu3y9qCx1CdsRZWqJ\n5FkJG8+7P4vx4QQ2qbgVrz0OXSuYwKY/f/sVh17nlO/EXQ7i2t7i8qe+mzbr\nMF3MDr9tuCsEvMNHw/FkmOxNqwkrF2OinxOctCT5Dafg+dKPi8SLZijFKYQw\nRWFK7JwvqenImA7//PhAN3oIW1uuu3ACDbm4j52ALcrP9kYNuY3sneenr/B9\n2Sj6Xt+OIek540Nlb7Vf7qxvbWHEazLrwPLwD9m0KrV3k4ErAUeWSTglh5jd\nBkeF+T2s0tW9dMXJptp9vzyLIitnZ4+Rywi1BPEqK/S3lC4ODMu2MI+5XLx+\nQD1fzvN83gdJMjx5ShofvdSe/4f7YH6ods/dWy2T+qjOW86xVHoRU2bcCwIv\ngHmn/5iXf9gn1LyedsXuGJwwgbq5cOXtyY1PFLqWNC5qVIsF3OO8sT1q5PAi\nH7EBIjxp+2BfW3L3QoFXWtSEYDpjl4FX2lBq4hqrBd3giZ89l/oHygrmoHNR\nHT3DSKRpQ6A8uIX3bOUKEbOJYwoJjzMXnqyH9pZw7GWplRrO41f+Lx5Wst4y\ncxVJHis5jxNBPlA+MXp7R9n4O8mRilkC12NK7eH6lY/rQBsS+VVo3TUwUtwk\n1+K3G2H+zvLBOmFk7zQxJwjjtb4EDk1R7CwsfAtmKhwlc0n8NTIgvoQ7asKx\n63zz\r\n=k4zN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDB9Ody9xWTrhaCVVkLGpMpsaRufi2HCcwTb4hPE8dfYgIhAPy9zx0J7pYjnSjxfln3/INyfuZTZEjIUzu88062S461"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617735676-8e406ba0.0_1617736035685_0.7304298243295719"},"_hasShrinkwrap":false},"2.49.5-next-1617735716-3cb7f48a.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617735716-3cb7f48a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617735716-3cb7f48a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617735716-3cb7f48a.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZhXwFDfN1tRsFjCQ/bq6UOP7kbhZpa6TFgWbL9L4fyRV0GtgZjiMrmjSx9m20q7aNrhQD4IL8N11H9tbgQ+1Ng==","shasum":"b9df0a13186bcf1b50fc015922b14df09f86e916","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617735716-3cb7f48a.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbLGHCRA9TVsSAnZWagAAKygP/Ru743s5Y30FotUKEHTW\nhWm6O9UuHQADFrxVGll8RGA6F2Tn7gzqTMM6S5a3pOcXl+iYsRgR0kkrgPpR\n8p/MP7T/5DIWcAfZ+5x1rM+OB+Ff9wCxusxMT6Injlpxq08kCDkWgoPg4ORG\nzHrzsWMz/aqqWRQEkB0YqQLqkxDDjyfmE2npQZyZ0gFeuXxxB0nNnQAQNVe9\nstB2po7DwTXzuEspbbOAOv5FAHk5j/+mrfg8g4fcUg1fAGofLmIWUY+W53mp\nohSjjWIK4+3DGyVyKDlEwKSoOGe611gZjBazo67A3srJHhivpb+dH6LVSsIZ\nmb2VVDxEx5+vpiyH39N+XVcbtExX807nv/3pEFAW8tjLVJfJgfOoccZT3Dka\nnWvNzvI0+9vxeelY0VrKotxgktY8/RmBYSslFzdVqu3OR5VfcGAzfu8EGdTV\nqXck+/lyEID8yw1NMwiET+9HAE0ct+l71Poyre7PF/CbwuNEoqec/hX86lz+\nW6W8gZC2Zc7XnWq91JebmaTrATEzyMf+J53wo0CdRjO2wPSQkxEw0zjShPAB\nPZczW0gZR5W7nhkzmdsikKHkXE1NT4Xa8mg+niBS5IajiHM7UUwEu2gz0Pwk\neK8ZEBiFB0T2TjSG5Lt1pGxRMxPucRoN2H3NGEpoj9mrixAS7/TxVwwrTtIc\nQzZm\r\n=v5vO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGvO7wvZbi2ojlUfpBXVxZ1Ncyi14CGyvbHAswhPTEvUAiEA0Ui/MazOvIJ6jODb8P1gbgiKDDU8SRcUT9oo9/pzwmo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617735716-3cb7f48a.0_1617736071210_0.0497009924642533"},"_hasShrinkwrap":false},"2.49.5-next-1617735699-5ab49a9d.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617735699-5ab49a9d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617735699-5ab49a9d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617735699-5ab49a9d.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-q4dq82IaSJxzv/aPAUd3QQeMk16W0uAVgnrdhahyRJFCVl3l9D05Q6a4gx2KCqrf7Yu/quzuw1ZVt4a3fiufYg==","shasum":"bf250dbcc1b7d1c7bd306597ceb34da7ea2d1be4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617735699-5ab49a9d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbLGfCRA9TVsSAnZWagAAtwsQAJQc9vFOV4PvOoD3Sfgq\nRBuZjmufxGXwjuxyu6roDMCd5kZHE+eHDXsDVQwuoW9kKscD1h1846A8LGWu\n9Qp0/8aUlrgHWuFEZW4+le0mIjeg4qxsJCdQY45E68YIMmM8eNreQXfCXDaX\n7QvOJes85zY4q3CZOa3eLOJcl3Ehz3aNdFeFV1OwH3NfkqdHSmeMQgBdJO3b\nD1L0O1B1eARLxb2rUsTSGLV3A8YrWoMAlLJFio+ujXp1bcxkilJzJmyHJKB4\nKTPGo8WZVeqMlSZu7g+Z7Pww9JHq05XRUafEG9nvkEjzjyHbHNoz/dLaYMaf\ndn3whTiKQz1AzeQMEskYXROFwuVCXzMUHmVfI7thXNvqnwxTLWjhipw7bFoN\n/DU5LUKDSgEtVoQGJwgmnosk2nopiVQPUOWDt3yCof/wsTYBF50E8SI8AKxX\nqUQByQPEJXnEWxDR2Vlw51DnNBShiYDgqtxDNid0TicEmkgGBDEPSdiaBauZ\n3ua8vLJiFG9OxAjfi8DzR/frAEoJbFIi1Rxnf9VEkaHXeMsrZ26SPBuI3iRm\ndCmHPgDyCcDmPSnO62eS2cjioXCFf1LXV+x+ZVc3ZFHnOl/9GCxRxgKm13bQ\n/n/RGZZuW6F+6VmVWpRxcOuJsf6cR11CAj8ePkomp5wbesUXN5mOSMyBPttl\niyDS\r\n=v89R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHTffqsydW0JdAQEHY7LrpK8saGpV0kBnXc5eEa4DaEUAiBjCO0xXSC67iKg2y5QTKcZ3ugXxOldOeWGOw14uCDy4Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617735699-5ab49a9d.0_1617736095192_0.6391839423315309"},"_hasShrinkwrap":false},"2.49.5-next-1617736046-da082c15.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617736046-da082c15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617736046-da082c15.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617736046-da082c15.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-+wc+6dImOp7IUuDFTWSeVDLP9dfUuI1MsGBiR5pJ9DpTvaVNgoAcO4LFUOlUy95oEgLcba0mBmsKrH54CHeh5w==","shasum":"d74aff3aaaf9f58c500fec02ea4b448b62706a19","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617736046-da082c15.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbLLdCRA9TVsSAnZWagAAZ2oP/2LualNIdBfi7rSKHAQ3\nvaHRx10eeMW5F56uDxFftFxcbZzo7HFbNLmrEJR41h4K7e/10gXWh2eAzYbk\nGMN06ZoUYkd2tZDc+NRiqMzVne7nUWqx8/Jtl/O3YTHPmetDwG0LWeOnkw89\nFvPCdMs6Lk5SISpxUHSbPNVdgjOysNha7XZhhqvKNnAGnQ+GBkd09b93PQmC\neiTOn2gq52smR8X0a2u154D2gMmdEsUvOtlYulZvH2clAaC2UMSO1toclF71\nz5beO0RVRe24lcFfznJsHhAh1vSYafxkbY2EhxJIkBY3nIfKmvLPZqtIiu+X\noYPYUXtDzuUdfjj08NvD4hr+E3zokP8p/eyMGbxgdFk+38gIVPrKZp0tOir+\ncTtSkGY+3NwCA52OsndEXfQEITyEydNT5m/usg/rN0wbW6yzrWTXReZEjmtq\nWdaGDg76rdKJslcqvpMdxSivyYaEuk3Md7xjvReRV1KAxaujHucs7CiEQ4ET\ntxE7KJovjhgeXb0uQVuWSUbo5DbSMR+Qht2vz/qjp1BELslOIxqxevSm4LiJ\n3YOL8jv7kh9Bh+A29HOqviTnCQ2ZnQ6x+FEjrBd5vE6PszXm7QnEtwNT+KPI\n0Rh9O13kEjSI4ufsz/pUgRu4Kim90nZyRk5GjutJ5MDcy5TqEAS9YbwVHqTK\nsBBf\r\n=DsrN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDXoxKLvzeHuRZmMLskmAnZWReLDK1uP76y1+aRWwSbaAiBVkvmV7KEGaFLEvzo4Za0scgJ8JvWFrf1G3zVm5G/IaQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617736046-da082c15.0_1617736413139_0.31312967550185333"},"_hasShrinkwrap":false},"2.49.5-next-1617736092-da082c15.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617736092-da082c15.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617736092-da082c15.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617736092-da082c15.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/IVQTtM2lSqPALewUS2jRd7hIoPi975XHb9QYL85HrkMMa8+7zrqEtklzYpc7xRpLoNU0xpRmNTW5+doJSW3JA==","shasum":"e1789f45f59712ae5626e51d40508fe2229291f3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617736092-da082c15.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbLM7CRA9TVsSAnZWagAAT7QP/2MdOjbPuNgK1E3xqrKl\nvbvsr9M1lOQsWYqOlJDwftrFfn/ZrG+OGW5QPtxNEhmo1XcLRlscOfNJ/EUS\nZft5EVVzOm6XleXzFIetbgiLHCMG3nrNF7dTYPXnVC1GGkm13yBuWIwP18Ks\nb8h9OzI5LbNDrRbiD69xY0A0vclY0OmU7bDdI3cHns0jw4hq70Uck/uV/xbt\nSDlbrjUb1AkcVPvXR3raIBLgQPa7VRc+/f3fz0hE3TGWxreQUrrX9ugHrQz8\n3f0SKIPeyuVy+6cA3USHH/PfT+5lYI6EmiovuIW1EkJffL9jpgTgfbnEdQXa\nxEOPlE7asTFuEFE1D2YlJcLkq0D5TbPipWNdEmlvC5OA9M8rw8pkkrYaRRZy\nycrp7uoxL2phMJwJZGu+lGGR5b9a5niWBlWWFcAOc73vHhaLGAhCIYW8DPC5\n0+bvrCLkjhUB1dQy/CkQJ4X3H22RT3ZgUBoyPvcyid3hm93KF6Kb02/uSJlV\npVRq7zJztFdPgFYJeFsvgq0mSjkeSbTnZfNTfOC1QZtC/BMXs7fbTI1DyaoJ\nk/ksiM5Nv2OrBNNGMTwXIhcpqstUl/PpibziJWQZ3bQcPP+so2Exu6FhEAdG\njq+J2u6LRmXPUQKZwYp3tziRiqqPowyVhvl7Rr7/bt9qn6NFAN5n6syQEBq1\n9PwM\r\n=yiG3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG6L+nG0ybb4NZg7/HoOWa4oL2BqKKjNbQ2YzA6epP3rAiBpB5RqOT5mvWySflyUSjPxwiz7Iy5tVSdUzwBfpRLfkw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617736092-da082c15.0_1617736506566_0.9608705470276735"},"_hasShrinkwrap":false},"2.49.5-next-1617736156-673ca60e.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617736156-673ca60e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617736156-673ca60e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617736156-673ca60e.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-PT3JWIyAe2lVLg+kfcKQSA0plwbmAMen2lgTMRoJ6YLhOaZVHrwrrTTaexkJ/saef3Qq0d03BfdYHQAb8B98yw==","shasum":"b000b54ffd84e309f2e574532f5865884487f206","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617736156-673ca60e.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbLNuCRA9TVsSAnZWagAAwdQP+wRmE6bYbfjClzE8ep9/\nw3Nz2dVUGngHSFMi5i2Hs6HEPcDbl0/wkKp3HQAYhmKbLqaqqiRTOVX14LGy\nIfWZLpE0vnQb5Jyg8F0VAad8/D/fFmoR7hWxytJE83GY8fYvLjgP0NlNRnCI\nOjV1BjC+HWSPSv1PdnACEKlgdwO6hRI7bIEcJlCtkDkauDy/uVAVq72kn2jh\nFjZOmqeZneU4BaFMBhp4UdjCxNfjITxEMDQBsy5/gVZvk84LhWgGTz6r98fM\nGjFj5ttgxNZ3IF/1jKc49OuNG89RvObLpqqr2r2w9vNELm/WRQqy/EH5NQ+p\nKSFXnNKHvwPrWS762v1KooejEwiSLe85TaNFcp94LA9J1Zri0oRo8bgFCfsc\nML8GAVMXoSLc8lieVDfJGM1FVDf8iSC+eNEmT41b+hrY3qvkl+0Qh1jt5tL0\nOSowWCOZUCjmE6mWn4Q4hGaqU0h103lMcmw0jlC90qHyoFLsT8a9gFRKINY2\nYxh9W4puOvCZ1DAwp3SH0EDKkMR22jT2pyyOqcO5gDOUOmgQ7JMKSPizQclk\nERZZYaXSfUFDmPpD0dJArpV24kx1rvkdEeNNqundtihjeuFrgPnXjtM14GCC\npy4R1Y9SfRPR5bvK0xyIgH8nTfdTIkzanUwcBSic5PhWan1wJvY+VbgzXHBv\n2zRg\r\n=40pv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0b45Ril2SCuwjHhwhJskc3WFxPNC1j8WW9EydgtiFugIgSKPEnQVFt35GZbxCxPAftyWFSsnA5GGVN37mCvkwB30="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617736156-673ca60e.0_1617736558205_0.15387050230167532"},"_hasShrinkwrap":false},"2.49.5-next-1617761949-9676f0af.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617761949-9676f0af.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617761949-9676f0af.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617761949-9676f0af.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-nf4sBYNbP+MHeQz30Y7huO7R1l/0cBvMgcAzHKzS85/xMQ/4SKsmmq+p5raSOkHv3M18lO/AkHrm1CRpyKSLyA==","shasum":"8cea10e1747066d2721e9eac70b700f06ec83bf3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617761949-9676f0af.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbRf5CRA9TVsSAnZWagAAEAUQAI2+G7nxrNAEfxfoECVt\nDmqV7VLDuO8ElJxDjft+p3D2qm7r0hB6bL3SVeEsrddGX76RZbQsSkZ5DDSt\nAUit7Qt/Jumxvhqhh+aXN7Rx2QxsY0F0e4CH+0aoPPntUIGPaYrziTFLKWIV\nSh4p2/8BOEHgHIyL7k2098us4p6fQTSwPY2BLXOdRjQco/R5qMyDLmyEK9A2\nDNuDoDqyJ8tm+2q+BZGBl0ubNnuMYyLPcKPed1x7CBQnwPffrWPUHySPEVVF\n/+n+qognLHvhVF+uIBvRPuDZyC0LNT0c2WzaCYSB8HG4SgsGejwXQr3HWYTg\nCA046TC//XQl/CYgchaOLSUG8uoSJfL+dD37oBujAug3kjadafziXe/yZPj8\nAZVl3U0c9F0YfTW6DnKcVL7EJh8pB7onWFN+s1tFxCOBbMp37nMpaQVm/Y8r\nABH7TQfGvvfFNXVi3RY6i1Ri6SbtLe7vnrFUuuIeUSC0Uga2LqtG3NT/JELu\ny6p4sAsuGv45xuBRqOos/7F7S0YZPsV9rImC8NCVRPgdUpzn7Zu2AjZ8LYaI\nuIeS7+iO0NFgP+M9jsxwdMAkLW3ycpMQ6vGpL9sWwRkCQmichWEdQaFWomuj\ns1F5b17R/tM6p6zs96lsCujdB+D9e4ZJ6nz//o6ztEIrCVEI8NqDLS49IoUO\ndqFl\r\n=aFyV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVKWl0Pg6qAmzsGV7MvqniYC2IKg3h4H67oTY9iqiCygIgTpEYocoy57ippwachLCBjrtJeswXSr1+6Y5vXDWIZ1w="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617761949-9676f0af.0_1617762296558_0.5985999496644954"},"_hasShrinkwrap":false},"2.49.5-next-1617766588-cb4b75b6.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617766588-cb4b75b6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617766588-cb4b75b6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617766588-cb4b75b6.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-oRVwAXI7+rYE1jd3rL1DK/lCTjD3orti1redk9sLf26yQpXde0e+7PR3115+eUO65LyiOPg96ScS9RMvjZkSKw==","shasum":"3a5ad2352005c0447bff9242ae875a485daea0ea","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617766588-cb4b75b6.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbSoZCRA9TVsSAnZWagAA048QAKUqJ1K2vpOIikbFwZ/S\nu2dhZoxkHJFFARrhGoR2UT/oSw5iTE8McTFYytxQyx2QS/vv46zG4CbPUWGf\nHXg70PjBtJgq1NExeR4ltKW7NaMqp2yizWaAGDPY5pplcSqiRmwglFIKfRjm\nC/CQDLsT2QP2GALjsyyYKATcI2ESgT5ZQ+4PhbckvwTkmkUgRUBGrgg88Oaf\n/J/1ai76sh2o2a+FS0BBvZNBvsvbURaSjzqclJQ3+Nea4lMQcJJENRGAHfSX\ncttRdpWEfOoTTQtWgxKcR0qaBybz/91q+jRwbK+vohQiTP74glGhpBICbiBu\nUbBuIu3UmD1zAR5T/tK6Cs/SXgh+ls8VBNQghPJTjB8LBYAqBwECQKBnhPMs\nToNNvX5THeb2BZn2hALFUqKOsJDgy+weAQyRXw4CTMRQuzTmybRXOQEFq5/R\nV+7ehvjom2aVh1U1mmVDnzDV0fFI+D3fELM1sIbwTvsC8GDWw2yCXaZGFxJ8\njnWADk58HVkTy/XskrNgslQUGiRfZ90ET9ejAiZHaH8wpsWaTqTsZ4HuQsUh\n3kCTW5YLjg3f7mHrlkhtgU5VFjZB68i/QPwOL4pPa1VigQqC/pcmTcnLM9rV\nz4wXEYQ9x0DO2TUP++qX6amgMEx2LQxjm0GhiEgCYPMZtm8JxDX6m6gVRTzH\nfvh9\r\n=7t9O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpw2ZIlV4MY4s34FOSEiUxRCO4QpGPn4PaZShyub+teAIhAMA0Ntbm2FlBxj36w8ZJtBFJrY13PKpyvJ4rQtc4KPiW"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617766588-cb4b75b6.0_1617766936705_0.734058724555049"},"_hasShrinkwrap":false},"2.49.5-next-1617766594-b9f01faf.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617766594-b9f01faf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617766594-b9f01faf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617766594-b9f01faf.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-61ajzp9EoPOTxnW5ncunRH+BfIbj7HDO+aNXaoVVBzDatlSbLJ01NN6/jsuZ0Id0EksZTyikwD80tw1fk6fadw==","shasum":"47bd3bc3023c12b08283eec9ca800ab025483fa4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617766594-b9f01faf.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbSopCRA9TVsSAnZWagAAOVwP/1x2haqsGOhPbSdsEh2Q\nQpWz7x8n177y2RnZPOw/khLvlFSBiRhfLzWoOwoRoVvfcqSM8ZSejP7pWC4T\n/qw7q3hCWJSqcEEM2Ex9hHpc4LSpASRNqcDo92lV/pgTUXn/YItqycuk1Qre\nGR8pu2kNzHTaVf7bWGQ2Ar/EdgHRBq3VNhO9ccQi+t+VqX29eIm5P+pfg+fK\nuieY1I4Bvjr+WWtMviy13f9voLFIScVktqkWWgB2hzq6DN41GOlkqTiBUp+k\nMHYQBSmV7YFkEQdFTbeu0S+/bYOFUdQ/1MVCAvd+xm+yCScMBhBzn02zHSoJ\nu2P3fO2RDoB54qT/kepVi3SNsjvHlJUO8Abe2w0IEJ9RXONlZJYta2X9Ik7y\n+GX1fxzIG81kVJrL/IF1jK3pfOtFCGWL5HQrOO/l7sxTp6pMkh7qHOFlWZuL\n1Jq+jJbunenm77hncuhmw7SUPxa+ivdBEeCaP9Ky5vU/SqtBn21d/7tNAnbQ\n6WvRKTZgHMI3W+3UVV7D23yi9Txt+ZdoGW6R/ok64xTLsCa2VZ+5sbd4afrp\n9zorIQYEaBc/MI6ZE9WKCIyYhAoS1tKKJwdHuMNmsnlpyV5zuX5kK6WIZ2ES\no/zgpwddBJQLEZRQTA2oPBHVNJgVZUhOVDej4OcKX3FeTSyPJN078i5AnOa1\n78SC\r\n=GNRA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKHER3RNW23nOhyTqa/ygqwuZxVIEKV2YBKAswlPBQVAiBvASmcdy6sxrGXa2jBmPHGjO7DLm+SlSkj/gLO7G62jg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617766594-b9f01faf.0_1617766953344_0.23736073973602156"},"_hasShrinkwrap":false},"2.49.5-next-1617766642-f8ab3680.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617766642-f8ab3680.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617766642-f8ab3680.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617766642-f8ab3680.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-JLiNGVxBJJr1O1LdnE/tj+s4hHtlJJUFKCQ0r1Lxj8eVT1iesj6JZjJxK1/7LD3pZmEDMpM/wrJgITObUvwgOw==","shasum":"0350c8d529d2ff6d58522cf1c3361324305faf92","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617766642-f8ab3680.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbSqQCRA9TVsSAnZWagAAPVIP/0OVqg+ds/E8JaoRy2X2\ne5Q86rEl5CI7PVyYWPl6bm1QX86ZKL4gkVA5bMbkv7VBNS20lCOgFO/iNTbQ\ncE0nbek1h9SEMjprrBpLcZ7RNgxK2cxFGWdUwl6FLOuayJ5XtzR/U+cgztnR\nUS+ldJgHC9IuwPajsWnmIkYU+vgBH3GGIJOnPcs1kKohsF9CU2sxAUzEnXCU\n1NUc+YfkheERYzvKz/QD7USQP+uppmfrLv6mqi/zfztDwfimcjbr9uyYoydQ\ncpT+RwWDUMOXQe1eQpQhuus7DMhSooSVFVM5B1WjhibfZEbPQbmn8il0RQ7D\n4qU0XrqANfUli4FHnaxH7bLi9jUF4hYnMoMQgeaynt6DwJZPDf9jpQZt+eGj\nT1qoWW7msYw7u9Qt/Xa66GfnmKZHYOFji2RZ5qVnYypGwsbh45lLtHuW2VM5\nuI+wNSJhgccZAsGaFSJ4sUy+fPRAnbU/nCfDaRthXReGobl4WQa725OHbKdu\ni8jQUHN1LIWXwQQTwGCEC2jM/n6V7+fRcY8UWFllD9lNg0t1PJvO/CwI0GX9\n7FewGFQhil3DI1un1FQ7C1HOAc+jq5sU/K8zffwpOHxdNHX5bsBHhFoD0WgG\n/SPG/XHR5IXs4o5e30IdWh/RNxTcC5ILva3VN4bTDJ76lRBvOQiWRQjlQmbz\nTuUe\r\n=lnYS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAORrHZVhZ5G+1LuxY8jY8A0PcyF5gAohjh/Xy0UoW8qAiEAyTBFr2KIIj6A3Gj6t8VTQ/S403ixx25NIVf+8M9ONmI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617766642-f8ab3680.0_1617767055905_0.6550285931338606"},"_hasShrinkwrap":false},"2.49.5-next-1617776930-df6c0b0a.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617776930-df6c0b0a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617776930-df6c0b0a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617776930-df6c0b0a.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-veOmANNN5Ba0sA0j+foOY3qA0HoMrswEa4AZ8WOy5hvEoHKRtSy7cIr9n7OJd8iySD0h9qMqrcqDlhOe+aWLjw==","shasum":"c0a2f9335026318813800047ecb023e30443f28a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617776930-df6c0b0a.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbVKaCRA9TVsSAnZWagAAWVEP/3nvxjVyZJAVQ7eV4Rfe\n9CAwUnu0yPHzRAHRyJA6NO3L0/KxSIklcFmgyHqobwnWo79xsYzlSR8VX4K4\nTk8JJY0qq2rdY+RmK2UOOwK5cPR/Z2zjvSTifxREFJ5L0luPC8da8flqp9fJ\nUp6bgQ0EID9/CgZVPPq/ixXVR8S2u0KQZJ6gQ9cqEcWdj/uQscCd1f1GRMM+\ndE2kBOtPeGgBBC5Rifvx0mVsFbPBQwQZQU7iI0R+f+6jd9VlhBmgJgKzUBuH\nOJY8c3v5Fm09i+gjt3//7MyV3dah810nme5GAcYthUVS7Oo59NSajmta68b5\ncA0K28elqFIutSKKspFmQuDm+qu0VpDjLDAS9zk6SHvoHBJ8vvz3X5OuHE1J\nLNjTmIEDn7s2fb+EsEUIPH1xtu5C84tBK7wcDDRJ3B57tZi7r9X1Gt37mcD6\nlsVKTt2yomkyANaHQmRXadOvMxyJzKr/ng0K+1+4hlmzLsBA3v57Z7OkYGb8\nTg/wiWNPAvWbCrqjfdaRXu5cfDEJVzWq9GJNbsje/+fA/933s5QWQsn0fcRp\n5CRbNw8PSLVGJmFTbR9bPjCEmT084KHoamOy2UEUcy1z5TRk9O8x48IZlZzS\nbdqUm31bOV+90K5z2tJ5MMdD9pVvRHV+YuQJSvRbM2HrvBbePZ9VPpOklg1E\nFMPt\r\n=QyCV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBuv6D67f5Z3WxWSD/k8ULF8WeM4udu0VJ3O0Sa4/iReAiEAs7M37Mr9QZQCzTDGNNDIdnzWhWjasp4n4NcrDzBB9XU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617776930-df6c0b0a.0_1617777304796_0.23052541713259922"},"_hasShrinkwrap":false},"2.49.5-next-1617790600-6e8e03b8.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617790600-6e8e03b8.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617790600-6e8e03b8.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617790600-6e8e03b8.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-11L/AttAlLHNmy/KuwDrVHyWLaj+yFaTGtSaEHKf2JwUtWBYrbaJGhfQIqlyn4v8mW696l6jT5OU2k4ff3tGQg==","shasum":"36b9dfb2ca1bff5cf68517d62f66d5ace9c8b675","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617790600-6e8e03b8.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbYfZCRA9TVsSAnZWagAAiPMQAJExwIKck6Hciws0yyBT\nQj8Mt2X4zvt59KRkKU2g8RoTT0558KPMhalhaxogpQPP/7qjWELnLlhQNrst\n2i3OzkPQQg68q03Omp3n1dMP/dwP+TBz3XaNB6Rg06YsX+BEmAOp8q1fTQum\nBo8xxE7wNWe/fas+WQbguBSneKzFfO9Y6JIRT7Pa8GzozeGcKAjUqeTZeuOG\nZsqYJLvYBlGdooxDtnWNNAB8FgQhzy6Pio8cGHn1D1frClYB3oAgrrfpXqo1\n/F/Ef4XHgkeiUKLPHEf+fztk13ubN7p6sJxQCTBSFVYPP2wTCjq/NspaxGPF\nkagKDSEokxarBgeY3K08ZpKYI2yrqvQQAnxPdj4eQSOmSzRL1CY+TPKfBQjg\nCz0Fg67HuskN+MviZ3w3D4lSrKE6g0qjxBy+cEP65VCG/NFocCUObBmeZR/7\nfw+ijBFaj60G721tHoT7Paz0AsLMsa97Nv/LpBpV23mElYvtk968KSJgkmXd\nVTIjXNm0zVRaxUTlmteasy4/liKXjd5YJzuabOJY03KDGdBZg+OCubAtRIzi\nj+5ObCGt8zeCNOP47MX6kh/QHULkoY6pC57gsT50pW12/Ttk6Zs7rJYQP4HN\njirbbmQwYbA3JcV6h1B6Oihw+h6EkVYAqJwpU5Fy+ZBOZxACVq2fEHsY2zte\nJS7O\r\n=XbL9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuBgci1DIywnevFQoNXXvRWcpEAHFmwfZ2HA7esMOjHAIhAJnOUS5PG9UqTGogxZI9t17Zj9H5itRWmpxrrDnbcioO"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617790600-6e8e03b8.0_1617790936931_0.7585366395961683"},"_hasShrinkwrap":false},"2.49.5-next-1617795140-d7abad33.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617795140-d7abad33.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617795140-d7abad33.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617795140-d7abad33.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-CDkGMSTfa/o/JyHErBJB/6AWLHZlYu00SHyag9RzZgTwGcy7P13ikP52/h4Om5/G8txpK4Y3m7u3w9LLbPqGFg==","shasum":"bb441e89de080399e1453323f2d4670a505e16ee","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617795140-d7abad33.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbZncCRA9TVsSAnZWagAAudEP/jO4XPa9FqbftAQxjkN6\ndwMPZdpcXUnV4Nikn05zmfflTSF/USGrJd7tOtoh1xAt++5WMyfu6eCogJ+7\nhPSdCyGrblBboA4rJDWTvQgbMrUUYG9vqK8j2Wcs+SgAruzbHR7XTvdYpX3C\nUx7jNuC+pWPmcL7csNdduTGDdMM5PisXGE2yUSsYHeGlj18T1sztQf+vxFZy\nNxfQ7vsP8SOMUXiU6gnmpfFl2KsZPe9JrkC+a+A3H7u6c+FfMI+EdbkpQBOq\nUf4+/8/R8yl38b2xNB8AWD50PDXl4znLhYz833iucaD+D8TbqG1rDqTsUHvd\nBdmfJlpDDuTIvgdrS5AW4f3okhLfFz59VpT/9jcFJTEJhU6/CzhbDovttoik\noHM0yYNX4KLJwVSCPIe8taESpgAIKoloNqX6MyZedcX0Orxj+/PW7hOrZLOy\nC29gU7GeW+zUAvOggGdzDZIFBNxtJW5JTzbgbjfQvDEajFWcXVxQzgCuq4MJ\nwX4DkJSsJYgIaAq67NtWTp1MwOp/lpbH6aRmEr4WCnrDrowQOnR9D308Urni\nAgQHl+fEzM3jcsf92rlu5Tg4OJCtk9uJuHlTsGbPGXVJ09gE01zXX3NT0X1A\n5K5Loq8N64sokwuV8L5hhbGzodkDQTR0zYzRx2roTDbH9rqTEsstqqdSCz2k\noXNd\r\n=u6Kq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEJikdi20oTwHUyujIPme1eEXYkzOKvnW2RJpEVsvYoAAiEAoLxZNK+MjPNKLBSRRzObhpiiKKpbjfbf87UPNSXKeIw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617795140-d7abad33.0_1617795548067_0.9060379877356046"},"_hasShrinkwrap":false},"2.49.5-next-1617799221-0f914b7a.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617799221-0f914b7a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617799221-0f914b7a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617799221-0f914b7a.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZVrepApExpQKMyz0ZkLQszTU1Qr4dPhCOglQ9YjQBtwcCcTYc/qZQBFqMygbuNlWjRWtZlqfP02oq5hgSJffeA==","shasum":"434fe8a2a7f62007b1a8870f8673505dc5829877","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617799221-0f914b7a.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbamWCRA9TVsSAnZWagAA3QwP+QGAnx6/aZVpcnmvYbOf\nRxGdJC6W/vmaE9mx2SSgepOx1AxW1BUz3urfGtaC/eKMGQpz5z0KnzHYJC8Z\n+tmZeAoqj2b8+7a5vBPL8Rj0eViHWCbCQx4yvQ5OYor8YKTcawywknsP3XZ+\ngPyjN6dyXdpaapDB6MXZQMaT9F0MoqIgG8XAct9FpmOfNg1oXORgtv5nu00L\n82SSsR2n02yUq/VluLgc/8GrdIwY3tTeh0NiZr4Zprakj5GbvfSKpB2LV/7p\ncOn7c3R+qjcFbX54F522u6tcbMtZBlOi4oJTQ2a2r7M5LdsS45AumO6T9i8h\njIT4J1i+GEFuR+iof/FVqZQCP0ijyRcp0SiaEGegzNEsIkdGkM9JzOtSmeDb\nJwIdTe5eWBg/zZ4nWTyLARP5K3H9ug51x0ZTVbZ3/5k2eBvYX84E4irarrQ8\nGJOslMvBb+zV9nzVUUZHwoDidUPtKUKh7aO4KEZiCbLDmsLEFN+gqscg7ILO\nRDf4FA2a1g8n93ny3cos3QCHXjxTADrCnmCeiMXL9zJkbbOXSUYZJ9qgTz29\nbYSI+ktaaVR06tujm02xdKpHVRUMRZSvCtQqjnp9DtdiJNTARMAG0kk/GFQv\nh5PVsPD0BEigDWmJkoSTpoW7ZgpEA1U5OW7hewvdVYu3FAM8JsCFiPjtq/Za\nXVIG\r\n=mWsu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC67xxiXChykA1ZKrORVVRkvxPGHxOI4tu2AK2wCI8vqQIhAOjwp4DRiU5yT13z4lrRBZ25U+cQNzOVOVIpR3PrO4Oj"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617799221-0f914b7a.0_1617799573982_0.47700580917135293"},"_hasShrinkwrap":false},"2.49.5-next-1617804986-0fafbe4f.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617804986-0fafbe4f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617804986-0fafbe4f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617804986-0fafbe4f.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-DYB3Y2mttei/Nwm1ZTw6PWNa1T1sbycHIPQ8LJLyyRWXxTvMKyUUaMd8U/w390koegcJEnhsMnEMbm9egRI56w==","shasum":"467249c7ec21f3d8c683a4dbc330d3f21eea771e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617804986-0fafbe4f.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbb/0CRA9TVsSAnZWagAAz2YP/3Q1Aj+fIRHu3ldT2ddh\nbB/onFgXa2ZqlKyMYNNXKq4U0e2lQhCx2vE5TsS8xDd/GQOtXoAktgDGtDyC\nZpS56oRJAN/2UnfqmrouSLz80bDLd+6hhIekDqaZx41dv4eq8ebu7XqAxcGd\nihCWE5u7QoPUDm7YS3H4QNzqKIWmof9xL4r/XQ+hZ2wFG1/pvZOZ28/9rs8j\necngXcQU44RB9h+mMoOQoZgVO4Ccabwu/W4g+L96FzOFDSc9oOwanrxLzQiW\n3T0xtve3ZTmVXFu876INgaRzBIyBhtuS97HsmPJ7aVUS1fBgaCDPhJmxtiuB\niLk9LDvYqhbzt5HXnETJX6oi7nN4Qh1D2hdudRl/YCh7/aQL6M88FRPuY/tD\nqDN7L8nosFeZejBLBhb1V3gGTUFgTPPzzKCqwFn3xhB+CSTeqsqCqAwZGIDD\n9220pKjBcuTkRXbb/ZII4vaRctvRCyiwdfEso3VtVF3p3ilDewM44Lsv2+1C\nVL/XbmG1A7dsCCW95/KoEq8H62KUnYQQIfO5yWgp/UefOpvYyhGsr/KyfITI\nswWp44c99R0bZ9/n8aI5nO95c9comucjPvmBuz9N5Y6wjr+/p5IIve9vFdXp\nt75BnbNpPllkCVd0skamcDe56HdNe++aecBSGO688obnyRqBk3QRoC7YpUmX\nQi2G\r\n=fhdZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBpDKloiPF/Z2aylX6fWZnh9PUtm+TmvtTxnm0WXaI6tAiEAvuJRfZI1XtqOpMu7JdVah43Uqaen9f6pHnq3wsFdNUE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617804986-0fafbe4f.0_1617805299831_0.45436043439396334"},"_hasShrinkwrap":false},"2.50.0":{"name":"@xdn/prefetch","version":"2.50.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.50.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-YPQsl5MoQY6Bh9IQHSktazLtjkJax+r44v3kb+v33ACKKlnBzmTVYY95TxlDXJeHf2WBl4L1sJPCzVF0Blkmiw==","shasum":"4c08bccad8aae87954d7a4cdd3e9c69976765e9d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.0.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbcaCCRA9TVsSAnZWagAAQUEP/R1rsOljdW1rSxxzpN0P\nY1px7ONk5qoJCXoy2WsUoCioI/TlIJuLBQlY3on/tJS3soMm7xVsY+bpmHVC\nZpk2wr108/Gg7VVr69dKF6riRHr5dNShwWvCwmXswEfAJK3r2xnHORcvceLy\nPxR3f90qhA2bjvZh11zoE3538AylmTg3ZUrMTZt+2jNA8PhqU3CGU1/Rkk7f\nPThL3iCXzgmLdjhb7uQ8HuwzOBXLrUisZnvm09juIpn2XcClCjj6+Djmtjf5\nWCaJ65C62g3japXAZpbCGW5gs7eOJL6pbPcSoQ1yuVA/0aShHhZtYzvH8EBo\noNRm1jDWyURaZFJ5JPxZJo4syiVoQj65nnVC+I2QZnisigBqh18ZXXa0rWhE\nHRdRCGeW0RW9W+JdTtza559WMHtuApdzbOR/C7zIbpiWQINoiYHfrqrxseCS\nUBjv9vi+ivexKNJ1l6yX3prHDwi7GwIeFhnBIuZL6Aphing+5Iv+l5n5eR7q\nh9ayQx4H6zlRxRVSMJn6ev4Lr18V0by9KrkuLu7mFOB0CmzBR0Jw1YGwv01R\nn3gXlPD7P8igdegzuL0LC2Lb64aByfPcht+4Zn2oKAru+BOHe+xMZWFySgqa\nOVf2hdOmP2ryOdEd9qGCs4h60hkfxANZnSxcmVokYNskrcrCbQjkKqttdqeB\nnGy0\r\n=z+x0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqyixDwNZVodneQHQZZgVe8oy2GtfWflCn/mNqyH0zFgIgIm2FnQJ5ujS5v74yUVdS9pWDvrsqRC+9Jv70e2n37/s="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.0_1617806978294_0.7720820719550519"},"_hasShrinkwrap":false},"2.49.5-next-1617806707-a59f59fb.0":{"name":"@xdn/prefetch","version":"2.49.5-next-1617806707-a59f59fb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.49.5-next-1617806707-a59f59fb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.49.5-next-1617806707-a59f59fb.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-SQ2jD18IqSGuFpK71GGZQRwp/6zvrxRr5D6MYj7hVGigOk2iS7yAzwKSs5eor1XEXDMSTDImqKkwQwfDjE0aHA==","shasum":"867a696d4d84e945cf2a9b87758bf8854ab4a402","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.49.5-next-1617806707-a59f59fb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbccYCRA9TVsSAnZWagAAN6UP/3EDi+wu8Mdo4T9ivh1n\nNqExnt3ejA0j0/lqhcwqOZBNUL0uyrYy8m6kiy+RPIj1EQBwyI26tYxpaF5M\nkVq6yN14fDgkOhJS8b5HQfIdxXak0wZsS/zUYwslDwwiPcI9O97e4n2ncwPR\ngRiuDn8fXclQmMu3sB15GCGOMCvWL336hShN7ANanCPJwV0cIaHlD9dD5W7/\n/t8ZzivtbSi0yaLLPINxKgrDS971O29DzBuWn3zlsZWCpiLeRCPFt+zSyZKT\n//K1RrBcwkg+btnsO/eWJZnMaqarGjuvrbZo6mRRz6E9T5zMBDwdgHNKvO3I\n2mHf8ibCc1XA4eJaTNpe7tY332qA0cXq6OT4sUgTM/FzJN6IV9JQWq8u6ZQB\nywRbnOzpfhjuwtIJ5rxYXpR5hGzQyuTX1QYInUZFAnXiyhk2a+zsIZJTDpOb\nyahcmAIUzrwd4H51Xlglk0eR/hzHqUihdyN2OQ4bANlC3p9xR6QLoF5jd1mV\nRDpszy2/UpIZDHztXbfb+IOIChZdtNuXTatlm6yBi/qu8nSWE5NoXGcbYGFG\ny4Qn0cKK+zFDkF1DrRMkp8dm6JDCv2TJzJKLWalROaNx/+Dp6sr2l26Xa5Vj\nHGSW2z9oVuI+vdTjfJI4tmHG2trZZEp/2EIiZSiQfYsdudXnyfQnKAqkBud/\nLxLy\r\n=PHS8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEtx/ZZZlez/u2l+MM+GjUPscmR4CVxWOxQautnks795AiANLvehKfd1zdPhvdhR0Ud2bubEktxztao5Q9n5Wam59A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.49.5-next-1617806707-a59f59fb.0_1617807128246_0.8740342507774048"},"_hasShrinkwrap":false},"2.50.1-next-1617806801-b9045c18.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617806801-b9045c18.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617806801-b9045c18.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617806801-b9045c18.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-QtXM2ce5rxvSd305M0mE3LyVK7ENi1zm8EtyjthcOs6c5WsMs9S73GLHRC107tKgNMs7qVxrvEqK9/NRyKu16A==","shasum":"fd39cd5a6c86bf777e972c89bf88917cc766c8e0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617806801-b9045c18.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbcdeCRA9TVsSAnZWagAA6U4P/RylqNCa0KI6tZFf6b4i\npoidDQG0LFhVTo1UFWqWA73II4pTq/ffexv80SSDpBl0I31ZJyVsPKx9xiO4\nv9UuDh9cp82VxR7qGj61trCBmMiN2j4zuDu+xSQF4/S9G6lPysVGa/RVxrl/\n3t1EXiENaoQZZcS7pj0B0vIG0kaaMW6oyfhxaHuWz+qwsr8JUmCSJ20nCZc8\nzNSr95W1zVgrbhzJ+Tl5/io71XH3ZZLbwqO9cuu6ocIm5VWOJZ+VfhRbWyuJ\nM6D+VPPjVf+fwsLead4w1cWdb7Oo3QAdKHnSSs7hJqtxRw3XHe/9T+0ztSPt\nRgJ4detFwxGzD+5Jbw7GuTpvkewrMbNeqFREW+dVzNXeepofNnD5HrLDnAER\ncaUrXGP6VXWzNhuE11reo+oG+ijABkqP0zy/hqvFEEY+ynafMA7fbErXx4br\n2upFnc/z+fxWogjhpyDOTfiCCw0T3SWniWiZaN4YJY2Uc06Fuh/8NtCSwFS8\nbY1GNJDgAWXaTK6cUCcpp31ccCIeERQl7vPSC2/ikB5MDXy4B0MkhwbsOiOu\nqSUXpnJ+JsOy1+zH54FshIgl6tIKCzJCFGCon6vy+h0BIW3jqVpU3lIpw2Y+\nbPZRxEg3ePR6yWNsutcf/jd+VJyWzDyUQoBlcOJSL8h55738JcBkoCZv5F7N\ndTda\r\n=J5X/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFZNB3X8xb0mPG3F1Oxv+CO+6SIqKErmfw7hURtyHVtNAiANzNQdthkgSezWfA2312BWbrZ0ck75RqTZB8faTXrT6g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617806801-b9045c18.0_1617807197907_0.6989416972002367"},"_hasShrinkwrap":false},"2.50.1-next-1617809320-5d4bc0d9.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617809320-5d4bc0d9.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617809320-5d4bc0d9.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617809320-5d4bc0d9.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-FOR7z9/vqlZJjkhGt+f5j3xMF0GS5B5e5su+GuZsNE5Nfm9wd+lDpK61HKZWFS+WqyiY2xsNFv63dSIclhz8SA==","shasum":"2bba070d93e8085efcf069b2f8a11f446b4e0095","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617809320-5d4bc0d9.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbdE7CRA9TVsSAnZWagAAp/EQAJjxdBiy0QkbbwaxRfUt\n5l5sW8jlaIdVC/rHdKW7r3xRj2ScsoiHZ13IIbeh0qWuv7eBiXu0WqZsynSe\nWmy3AGequDPliNDevYG7tQ2Z3GRebg5jS2Lczcxzj0jbjS5Mi3U/znZUcryM\nHGckztNkoyR5bAax5Xlf+A6n6s/uBqRHyBmbjSgn02JSDX2mXkkQ+qwaPKeC\nL71jJqvuzuX7M7wDqkONH6FzW2HYhOKJ+vpQR+ig5MCjr3HiR08KGOWDeFgn\nTQHI3nlGTzd+/AuRyghEo9EPQQIpWnS3d6zS1IPPdXm18GzCs1AOZalfeSiA\nFT6U55hXZnkN4m7OVdZq0aKKLnOlpLdGjU0BIu6gHouatulo58BpDj6sx0wB\nDFoX0F88uDm4IU7YbTP91nZ+hlBnXOZJIzeVLjlE2ay/PmQzzcGryd7B1j73\nkaNjLyrIXGolkcnHQT9qLoDnvItdP20W+8EVXuqlGyVk8dKwgexCg4hfPN+h\nL4gEKHbomCyyC766u+F+BYiGH1s7lozi1UaIylQ/7ItBv4ZSIsaatHVF6xtN\nqoHoNGT83O+FTEzqa6R+DJJFrRO0Rq90dtIXrxCurzghE7ZUZZyaIWyVHtUU\nB6aa+++AZmUriP2Z+KLl4ajXxOQpySAcSOx9pIyRdr9Nr4wx6D9v+Tq+adW/\nd1gz\r\n=NqeZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDvXVLY0eTR0RFgxFu/5ZMu5FX1v5ICoe7icJWh7njX0AiEA0knX5/dO7Q4oEi66q1YDeUFMrXRDVazhYL1qomrHE2Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617809320-5d4bc0d9.0_1617809722928_0.20700003905793474"},"_hasShrinkwrap":false},"2.50.1-next-1617897231-14863e7a.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617897231-14863e7a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617897231-14863e7a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617897231-14863e7a.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-oWiageqydZU1HAE/kWv9lC2ih1ifkEEgONt/RD2gvg+tKEihGfQFmV9WjRKSPJjslHWSGUIIeXgyW8zJ+L4OiQ==","shasum":"16c11cd49968796e1ce6243fc6d14aad0f088f73","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617897231-14863e7a.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbyhwCRA9TVsSAnZWagAAzykP/1DA8cRm3HpdHYH101Ph\nhpbAfmN0ar7CsqLHQMONTzotRRVp4Tt/aUoWW6CImNTBnYglmcElLRm7YNCU\nZ1b4GBx440iUqDUhNk6DZhTsIi+fba0WHG1Tw0WKGpEI3UWx6L9JLQujBUY5\nvyXIhnQRUEoyis+IDJkMROmo51pZqckMAcfhGbc9Fs4ELYHcvGhdeOPnApEM\ng+glUdSZ18kKNvA8e96jlx6ucvCnTGhmzroK4myESn+ZMpwPpbR3cUsbXPlE\nGGRsYRpG6Sz0akoydwQnRUxJDmxw023qfDu2eW/KB3dsqmp/Ol9axbsLMUOa\n6eRP2cqASQWvgPUQJ9W1aU7JBuctluZX2l5q8Yb2uQ6OGQu2tjwuX2yotgEL\nb/Ju55YYHNhYj8rCdvj2lajr9SrPSy+ZGBs7OWxLH1VfmY989shBArei+GgR\nle/CyMrgAbx0gLapIAYaDuEhXuZL1GBtzVCyf6SG8DOVKDc9AKNzM3xgu27m\nL1fo7pm0kbf/TtIik7Sm3clQ0ss4JHFkMqyqDh9stAOGwDM1nrvXDVibaTNU\n3nsK/YZZwWrlICpK9PEXNZlnLbG3ER0OjmTJLoASSA0/zD2oWR6fAMo6bnG4\niM6kTDWWOk+HsVl7ZWa/SZOIeufZOuwybg7JlPsZB6/9XGAi9zsRwInUNUlr\nuYYk\r\n=1KUy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDu7VyqHi+F5TjguzwRi7UvtUESP4CRLXsHniZKlrwZ2gIgeqJwIj3QeJFD2TLFeak8WzHK+viDX8hzB71Au97r9i8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617897231-14863e7a.0_1617897583740_0.061045600334301175"},"_hasShrinkwrap":false},"2.50.1-next-1617897486-2d2fc9d2.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617897486-2d2fc9d2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617897486-2d2fc9d2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617897486-2d2fc9d2.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-R/yEBq+WR9oYJMkMtNveQempgMPelRW5ldGob4a47DVr2WVrTABmDujRpbntolAdDyIsBb1iQiUtukn5HJ9/tw==","shasum":"5ea328fd9ba878f7c74ce3b7f3789f4882487de2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617897486-2d2fc9d2.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbymrCRA9TVsSAnZWagAA3kEP/j/MSiYmLzTDE193fI70\nbqi7OdHFv7MHIUL5W6HBDEM40X9a1gTcDcKcrfCQOZig0bfgOprXQzJSuqCw\ngrSIWdUuD1nU6DPRwD0was+peXaevHt0S29sGs1zTWmeD/wl3pSCy3F5pcUa\nbKqcrhP4PPyrRTnRrbjQUPTP4J1ILx6+OWhm3qO++fGbXJ2fk/kwZNHTzwz9\nsoUhd1sEJcZHW3lemHmZrZQ6pgMtGt3mWr/yJpYSjoiIMM4h7fxtp1hCZfr4\n56ml+9uplBI8LFqCrY0Xdtf/hU3KNIXzin8c49+XiRNHKHZgAL/lyE3fBF5l\n6ape+osQphaI+u4tXimhPC8hRQjoU8twghF3iSZcQAbE903E61RJ9oTZCr2R\njogg33F2kMif+y02ZkxdiitvFF2mC5pWx1Qr3JDCZulhjPzxIk1J56aVJ6KI\nKbvfxBTxaiaZzlfQCvAHx9AHYcvu4D2zZL/VLOufYxNw1pCJ6sdYlLDOtE3X\nVdPXjrwFLpTmeJy6Pd0xMQSrFXtac9gr8DTyU7xkKd4huVw7hOu/pcttlgQ6\nA42vvBS2ZHLkWbubvLQ7VaI4jGfnzHjth2POkM3TYs8aso2DyZK1tZ5AzlAs\nmAuVvzg6QVmRNeLUd4Wn5BSrPgVx29tIJNOI/KLmMPEbwiGMjM8K8ZQkBY7E\nKkQ7\r\n=/E30\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB4+EEOE9CFTP8AIFG/PIM1fgFNxdy/ZkdSeFBOOsLtZAiEAk6Sq4MSDkbEwQL7SzKLOk7F5thjp0RgehHEb2uMbkyg="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617897486-2d2fc9d2.0_1617897898636_0.15573248025493802"},"_hasShrinkwrap":false},"2.50.1-next-1617903480-49805758.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617903480-49805758.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617903480-49805758.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617903480-49805758.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-+COhIj/Gtie8e7Vf5Ds8vCslMT6GGOYtJ4nMbsU02aALUN8ztSV4pGGxkwJ8R85QtIlY9yZXfcck83/AqBeiwg==","shasum":"dbb34d2aff3bc43349a3a33ba70eb549868368f6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617903480-49805758.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb0FJCRA9TVsSAnZWagAAJD8P/1ZcSnTQN8m+eMn4/k9s\n/PVlTXJCCxUo7a3EGNoGPvHBcWOKtDrzpKhFLuKxgYdxmObfd5yRJFJ8udfK\noGKKnrnx6NrP5uf7hRfLz+fRXbAcrgkDsMLPGCQC5hzWRJXxpYOlccI/wtLy\nmjI9GgJhRiFCP6sbAWFotKFEfsrtjf8zvJZazc7SAaD4/kiABZcHPHPYJM43\nC97DRFqPuMoPRB+uxRtPg5YXdN2FNmBXe8ytxegbBfn/lIbmXD0KUFJIv9+z\nYhEOhmNc4PfJvlR3VPDJj2oRHwdE3orQaGWTDPNJIsfaxW1Amme1M+6PcDzZ\nP2NXRcllMR5xL2t1CWPOXmrwxruOa5SoI++39rkWaQXoCECBBhmX43L3Xtds\nRKMevs+vVhaYQEgiNNxgKpCT7P+VEYxns4qurbhXn/gvvt97wp2CfTA+/gBP\nDFUXSLPDeDzKnNWa7x9TFBfSMJAIymIh0vNeY1g1AWGzgFFURulcvV+4NBN9\nLg95R1S4iYq5KjbX/B0vb46eujupR41LVVDwYsupwvqPV4Gw910zyHeMJUjf\ncSmZEofdD+BxBYjqR2tdSXg4rvVIkfUh/9PpSHUHT+jYTpbL5oeV6SWlDvSL\n2/jnDVhqWXyOxwBgHBzl9xNkmqWNCnbYfGTotoYIRpr6fI7zfCmZFOeZyR0y\naZxD\r\n=Dnoz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEd53CzJGP8GGqIMraOlVr3VLEFtkmvaZ4Ycip1spoWEAiB0nbdolJJxhS1zetHX9laAhePoiDX+9oC648zi5W9/vg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617903480-49805758.0_1617903944571_0.9294904418150325"},"_hasShrinkwrap":false},"2.50.1-next-1617906973-2a48f35d.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617906973-2a48f35d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617906973-2a48f35d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617906973-2a48f35d.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-g/9gJcb87tJm0aqsHMwAUxOGPJbUqNc6LGtkXW1RaYLpmPGkniAlEqO8P566Kau7qoPgrOYVyhwpaVonD4HDoA==","shasum":"ce2a69cb043788811aa1d014da61e9ec415af319","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617906973-2a48f35d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb068CRA9TVsSAnZWagAAenEP/jp6qcJ+19W3PdQpmz4o\nZWYvlGrQB5r4TfJSedamz8RYIp9zVGWV5R74m2jqKf6B3Uv8PtvWBUPnzSZk\nhGuMVMXQvtRYptHDY0CkZ6+B6acgyhqDK8EUsa3siW3FPtg45IjIspIryRRx\nW1RTUGfa4+oOI1/e57z7l4o+ge/vH3uCPATZiUo86IBE1VnJZlMXF8ZdAKeT\n1CqSFrv+N85D9NPhZ997/6a8QfCfNVG9sU12kz4BTdI2dpbeD0jfA1m/a4qi\n1sETGkcu6wfE+3sypBdIEzSt3vD9DlZIsX5vNGX+LdHPn0XA45ktqbCVoWcP\nHQ0DoYCGFIgPSizwXvqINMIzKLtiAzxJwF1idNNJi1q5wNGdRcf+lNW8S4zg\neKAhC2F7QOKB/Szz/b17lM0A6YDhQGQ46LP2RaEKGaZmbax0AUR7UJG8005f\ne98TeoCu9pV67PyaTd17/omKKxGmAJsJ/xLDOyLOyiWd3c6MyBEPzI6tyaIW\ntxUIXUxDZVA1lssVA26qknTbcd81MZAp2pyBVVyOn7penU2/pQfxXWGZLPAV\nRIEBO/9zI6gSdZXq88UIKqlXcNCPhBONWNgUrqousrYAKokELaxQJ+E2+lgS\nEMjr47+4sN1QQd98o+q6ZuYmYrh9mxM+goJ/+WNWngxkl+nsyWXzlScbUTIw\nmYLf\r\n=j41P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxfsja8/sMIU9cLKap5d1xX2Wmv98eamu/cq4A5wSQ0AiBsdbCabtnG0h9zLcYXyPgm+CXhuX1uh2GyHf3cB+25wg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617906973-2a48f35d.0_1617907388205_0.7912485967881799"},"_hasShrinkwrap":false},"2.50.1-next-1617907979-ef368dd2.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617907979-ef368dd2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617907979-ef368dd2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617907979-ef368dd2.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-QTHZgAOr7ts7opMfWjq9SOUiWB11weaskQoMdA64+uFSlFxLuAWeoU8h0i+cg4wkWmaGiuWy+pyuhoEzt9Wyog==","shasum":"baacad7210420c1e2d75edf00476c9d14de33a10","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617907979-ef368dd2.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb1JwCRA9TVsSAnZWagAABJgP/ROrn+WpM7lsl1/pnwwm\nBNNQwcrb8RTZosMJxb6jr3GT81RpZEbsiGpEMlZTF3v+hirklWcxUKp3XQfP\nuEooe3uozs1+4ld+fkWOtbm6HWs2UsR2bAjrPHPVvuIfBjusHOdgYNqeSUJE\n6bjhLvZTtwUSUQUgeMTm0FzTM8SMB/dGURlvnUvQ0hWj7Bu3MYLN6Rl75SsD\n+DbZG0Rc+KjWJXuGaszgpBmLbkGnOF9RnO5N8nbtn/8iKEbiLQGaawjCjNGr\nOy751kXSPjKwUQAqGBmZZ88ABAAHyIKn4+iymsJFuJ9UOek01JjIfJg6C36E\nHeK/qAbJnbunUd1JnuqT0wZs7bLSCLzdFhebrZOrnwmVA5Zke94vKXVSmZtd\n2XLWUM2hPppBzFBc41DGkjO4bNJYQ1t/CvNGh/+FnGUqlXUjSTZLUdpJpHOX\ntQWiBMEdHJlb90tWGhChzJZxqHSGmG3LrozYyuVEiblSLeIs0rVS7Gm1gIuW\nO7BlOmzeRyCuIuWmB5WZf7hscV81A88ixBMi6stohzf/u6YtKfvi/pz1/r09\nFlGtb9pxnEOqtv8IA2FNOcgNYiEmb3p3jHoLIjnF9WlHCPv6QCajNCLhkORY\noo9M6FD3LjscebJATdHw3VV/nOlTQ2Yl6pGZHmuvOtI23TVlnKf+cLX1s1Qf\n65Pi\r\n=UA/b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUvv/oC5ag9IqGpxfP85ZndC+3xxuUbhdmcQKoSxIDIgIhAI32b/MyabwB4sY1Dwxumz5YBkl3RzYKvDWJWytBkCzC"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617907979-ef368dd2.0_1617908336510_0.05948768418332451"},"_hasShrinkwrap":false},"2.50.1-next-1617907995-bc8bea11.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617907995-bc8bea11.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617907995-bc8bea11.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617907995-bc8bea11.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-n6YA5tjfj1gKka+FUGEexUPWjLn7ooNSwIkZyIQApgJYZ2Yp68HTYJaR74INUEmdQo9/cszPh3HjelmqWfYNSQ==","shasum":"279ed376288fadd06c6b933dc3c41343283bf095","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617907995-bc8bea11.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb1KkCRA9TVsSAnZWagAAl0UP/i+RI3Jy6EsPvUeOlyl0\nLf2dmnBXi255f/NmSxIlUwd40v4Ve1HLXk/Nj0AO9buUyKkASjcNJ0rollcx\nBMsURaNwvnJCLAYbabngnBK328SxGJPYwBf3u7okuzF4yxu+i/h4/ASWS0XN\nTJ2yCfor/I8Ygt5vZEnU3ArAtn9lHX7Bh/ziMnkPT5T0IncSxmcn0/EfaoGB\nzQ9X+AqJK1g12SkzzAbxgjTdgKUBxKVqRT8JPjUQ3TPjceXMLeZGjIkrxT1a\nliv74U7KLR/ZLfe3FON5e4ah7ShXi45tY4s94ThG4pSLST3vOIiP+DGieB87\n6oe7jWyhpdC9hts+XueHKVtYTOujjD+gkFoabBe60kGnnBT8NaMORwt+46pK\nvhACiJs7DW6L9d9IGiti96e/FWRAVv7L7hDC7NFBcq2mY1vTa8x0rXVgaWzc\ndpTMeipMYmoJyOBkaW12DoovD8gOfvxkZxVU4+JJo4fvZLQFTy9p47lcgAZY\nzp1h0hdqYxsBEPWW3ooP3jP73I+h/DBFN1JKjWbvegHseDNmQoh/bcTADXZe\nCTVTYtD+whlMrN34Tymk1eFimd607nB28mcVb1p2FP0X1SNkH9I/sQ+oIfFm\n8IIZyTy3tiyMfxHKBEjPkIrqZ27P9b5xzsLKhUAxzgXMEkP7nzfKmeBkXfZ/\nMMDr\r\n=3ns4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDYYkKzzCq8PmBN5C0q+k5BohZ1Yp4pqqlKz9ESW2l4IAiEA/reLnWTdiqmKnW2SjwBavTx9hbCSbZ2fl7XxoZg3DOE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617907995-bc8bea11.0_1617908388296_0.6421801519969765"},"_hasShrinkwrap":false},"2.50.1-next-1617907981-ccefa852.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617907981-ccefa852.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617907981-ccefa852.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617907981-ccefa852.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-8HttFrTdsK35K0CBUR0gJKagwsbmQ/hlAii1UfrdyTCXaa2c5lVRTJ/zYKkPmpu0lmjixeVLR7kLlcv27CfcNg==","shasum":"cfb259999c9a0aca8b010779b501bf13c7da9923","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617907981-ccefa852.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb1K9CRA9TVsSAnZWagAA6YUP/ia3wQ7xTzI1L0rwQ/R1\noHnp/i0GMyQwrn8IZPC/I8lmjg7cJdcwg0u5XjQgIOJQA1feCRyM7RddemSq\nZ7/EXiAx42ujCM+89t4OFOf5mKCWHSqi++dhBxiAkuE9Xvj+TL2Aac+F9WDL\n8OdSBLpmaCDxVjjO248RhpZ33mbVje91ee7/i+Sjo5Ce5X0rGhtYDEzUF1Lu\nmrAOALBirB+uQJP17vqqXo4Ul/URardccAzPt30vdWUPAbFLLpBVA/5xpPjH\n40SVCxn5nq3kqQxuRQ8GosRD+Y0HalX8c3AhF/jsNXPu0yKTkijP/NALkq19\nLVNoPxF4Uac3E3OrskiZnMqevQQFgAbY04y0xLYMNVA6njoTWgvMjp4bpUSF\nJsH5au+L1Yxxryq9xJp3TbPcgAnH+KYBdgbW65ojYau3plLaCWhSfh60wHgr\nP4tuncsksEoOJESl3Bqkh7BdJm6L/Sn0jGH0nwphlLm70Z9toIQfpY+yjQBB\nrWD5Jvdff1TseDAuL1UVCrIUU2YNgX0tDSFs6W/JB0/LrVc/dYll6tP4SGtn\ne6Zi6a+ttz3UIUR+9KT7Z5C/BfTXMwZwe9CcRDkaccuvS26aKASotlGO30O1\n4aCaAAFalKiEeg6oSeBD/VI4BrEdiw9YxJqKQn//KnspMVVCqsewtvshwHsz\nckyD\r\n=QN7f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCio8FU/4BhrjakJf4/SrJ86xAhylpzoWFYsrkBB+mbLAIhAPe8JLRvAnsxyk/Wg2qwNQNqkd5mR+F5kh3xZJ7NzYzz"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617907981-ccefa852.0_1617908412721_0.15264344933000418"},"_hasShrinkwrap":false},"2.50.1-next-1617908060-faf7f94b.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617908060-faf7f94b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617908060-faf7f94b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617908060-faf7f94b.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-0rOaFqqMoG3YHdv6FMKYX4F5TcS20hUr31qoZGJvMf6wMsQYYBzgQDuhD25ozhiAP641Jis69wH1pz3ehIfidg==","shasum":"f4dc5addeda5d61483491b59834a712bff8b8f7f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617908060-faf7f94b.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb1L6CRA9TVsSAnZWagAAZk0P/1nk3Y6ailCOKK1QXrrL\nxGS5ZOxjS4m3QFdnwIdaGu+six+baeNQwMnnOdHEF1gRm778ZX+hS/tfaIr3\nCbT7LRjOXhvctqGQubX7EckSbMti3ETnPfa0CYpfCZK7ej513LZtWQOg5orf\nRqeVd72mbVQDrMVj1tRJ+0FevZ19qQXVDL4Zg4/FxDZRPDPQzCk7NTe2JN1Q\n4dYX/fmpxdGlc6trqUb07aTgd6dci9RBmz2NgeLs5Xj/bJN1QooWWWMPqiAW\nYC/Fi/OmGQCq2zCwUCPjCw0NOyqOqPMGQpDPb1+ZeKQ4UW5wxXmF8OeBu8eE\nkxBG9rKbm2KhsTKgX3/wJP3GNXDFS03S1O/+wkLyNa0HlgA7LgP/vBOmlwej\nh3BzC/CthaIeX3HplgRJWOdbXgX3Tx8fiSdsZ/QinTQpi+0K13frSaZjZoYx\nXYht5Utl7qWFtNUQpgRMul07rzT7NT4aDty7zTqMT6M7vcxERPwtCjkdAmBN\nzzLXNzRn3ErHHsa0TzYu3T5fxMB3fV3BaUOT41eHYuCJduW6bk5ay7l0Fpen\nVZ0/OEXXulpRVHN3ZXhmZ4+Ygik8XHi1pij6zpn4s5AbSlIioplFjAck7AbK\nk6RkhDGxQrjIxi1v5Zfr8DcIm1sD49Ac0eRoOlsVWICnNyE3g68yvRc7gAeU\nAX35\r\n=A0Ol\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlSBDD7hewL9ORYk3uHbH4d4HDTaS2qlFdL7raE6hmlAIhANW+bVSMgfr8RlGlw1fdQu1qx57pIyvz5jfPb0nG1SV7"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617908060-faf7f94b.0_1617908474356_0.9313165557264262"},"_hasShrinkwrap":false},"2.50.1-next-1617911006-2a48f35d.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617911006-2a48f35d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617911006-2a48f35d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617911006-2a48f35d.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-kCMPhfPGuPXZBoJiQEJ/r9QTCg/Gf0ZafGZ+9WzMM4EcHpwjd9W+Bxy3svrwv0Ika6eCZIZ1S6HbW7Vfomq3xw==","shasum":"6a793bfc351f6aa9b0c7091f7016ddfb7643be8a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617911006-2a48f35d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb15DCRA9TVsSAnZWagAAHdwQAIRQF9MfkzwV7HJTqKtF\nXCB74gOcECA985dJiSXZu6d46rT/LeAff52H3Y4Dp7XBHOfUyZ0NqBFtXXed\nvNBwpMwOk4GjSFLSrUMJICAzJOJY2fohKTgVwBPQJ2BrUULdqiVcPWGiuXoN\nPKC0AkUTwLfNScqnPCcCOHA27NlfuH6F2ucoF+22sJKsTHNEe1KKdS1Xj6aE\ndK7k4TuwCbfig9dE3BbwkVyMy1RtIDPcuODZ0i7DQ7HVf9wxq0ZzTJXo5O7W\nc55xMXJe9sAuM1SFR01hgduKGYcVO798OisF++Txjet0nd+iaxI2CSKeOySL\nUvRqfEwvbyWPfVWZZFOIqMysyrS4TOqJs9Qo3tdaZj2/hVEfpbG+cH/AwkKk\nWg1cknkq+s3nslLjuKlUQ/s69kJ14b07dtu7w9D2AEVIjI0XEXZwBoc3JpbB\nsHLWoVtsv8EbxukSqM+Ymb57yabRvpJVktV9zBBO0bJAX5vm/ZK1SzQcq0m+\nQj15S0JIJEv51l2uJyZPf7aoah4h8jhBsXcUc5qNaRPDnv7zcvSshFreLdc+\nWf+19y7NFbmOxfRvDuZxTaJ9mQC6JhzGbyPhAfQEOLK6Ma219OylfvKm8G4D\nDZQLEt1Zep4PJQEmfI+nWwvqT+ypXF/RzMhmr3TrHFUhrLabDS/SoqZfUBTo\ngES6\r\n=MLSL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHkmMnIBuVwhty+chWUaDIniY2I6TbqcocoFlnOJHXpZAiEAmwk58rkH6NFTeJ/PDohKjRIF8X7WoBSxNFJDybE8Sdo="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617911006-2a48f35d.0_1617911362941_0.8794909141549863"},"_hasShrinkwrap":false},"2.50.1-next-1617938034-2a48f35d.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617938034-2a48f35d.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617938034-2a48f35d.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617938034-2a48f35d.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Q4frTlWHngJjKtohrewYuLyw/7pIAjpEciFVImsD4DUEmyxPXSfNfpHni0l25ZzdpwS9YSGF/EmIHfzMH9Ebfw==","shasum":"9766ad97f6e3fcb601222b549afe282cba7e840d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617938034-2a48f35d.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb8f3CRA9TVsSAnZWagAA6gUP/1yqykwP8Xix6urrSWjl\n4gvksJ8gCJwulNoz8CWlwjMUQrUp6DItGZXk6Hxk2jkoWs86wPGqIy5D9kZJ\n3uRfhpwJWALuHYzjSX9RymPJJnvVqewmua7c+h3DX3lK59WRdas9scSCDfLk\n6UcqdGBMsGOU15/r63MOe9TvMqcyG2LGxWhA48q5jgH9n45QsxNAIopLANIU\nKgOGduRstXTK43sVBGlnQ+aEOXZwF0hDzViPeQZiWKuiIwhkGKGvEvJmWP/t\nqsrgTB1zUgqbDGpawgNFj4dPqFP6WWcZ73N11xu3ancK/L67Tx6Jtdv+Ijli\nkKqFyn+J11XOj4qNO8GDpdHqmgYu4lr7LQc9Pkpq/44WKla+PRXAYe277Fet\nd5BpMex/vKdRQlDlbIvjpMXuEhhUIDl3bl60wQb3NTxHaBdD1EUQ/w8Bi7by\nLiFUFWFm57NP9iWfX37sxe9Y1YoGIvvxBPvE/uxfuIMFhPiWcoHDdCKYbloX\noBq9fm55oGHtNvOjuL/7SkISExDqquTvuu6vQ8Y/1HOdF5yg1EF66h5Zl4Qk\n4uVBU+LJbQxaMX1RbWZW+K8u/HlWPdNj2Z1JtVfFs0aokFn0df+pDI1zHxQI\nWD/cf4dofl4yJRhApVE+gya2IAC0vWiEztyv7h5WyMvUHD3uKZcMgWLzlqVB\noLUc\r\n=Bafa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHAcewE+fKGCrdh6mDLjJXqJIyvX22rapON93TzdsiLuAiAYhLZSlwULNkmf1I1Jt3Ya+oLiFXLutXE2zT6UD6nGSw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617938034-2a48f35d.0_1617938422633_0.24224542482335543"},"_hasShrinkwrap":false},"2.50.1-next-1617939400-ce56b50c.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617939400-ce56b50c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617939400-ce56b50c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617939400-ce56b50c.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/9HJmjbU9Uh4UugibTcalDUiEzXwD+TX/iZV7B9flEx2qUSyFUBvDlcA47SngaXwlxQE+PAmyhqDj6Z3LH03uw==","shasum":"f8e85ca8e51153d74a6c520cceea9b97324dd724","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617939400-ce56b50c.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb80YCRA9TVsSAnZWagAAVjoP/jk/oWEXH3xpjMmz/lp/\nZtxg0J2yrmu+7tK/oFtFl6rl/J1SiAhukLvV/RxTYTfro6q6zC7TA5RLh3pt\n/HJMpis9f7fuVcI5lB6XamSXEgur8pTQ1T5Ut1lqiZnwy1BqWs9tW5u2zcDZ\nUIAw2U4RhkHtUAPJssxAHX8CP9mxf92cfkTM6KE9zmyufablFY/taOk5voUN\n9YrIRIdQPYLfwoOGIkdU7rfeERoNqPy76B+1egXG96geWOv84rl8rgPceNuD\nNTKldDWyAI/kGiyPvAOASRU12ZZJA4R+r2cAocJSB3T5Hxf4Ovs8yhhpzai5\nOep4Y1ezcprPoU9pXbahyMie7/GoKcNOD52xPI+SBzpB02JidLgT5ff7hQ3J\nggG5RZbuqQ/jVqfOzX6LB+MUewD/T5os7+iHyEtF57P6U5WdYFgPk8lPqdFS\nf6jd+HTPGIQLjB1B8GXL4vcc0IABWIob0BvXd8IVK9iXJnGJzDRITl1uXEQj\ncZSgU7Hru5PF7/UghHftObNKn2SM2jmRW2pg7PQF0HhLcEW7AZttraoEtw7D\n7N4fw9cgmrwB9NUHETj5tSgWL6B+gkANecWmkTZcAZGFmq9UsAtzFVYgbp32\ntmP7/w2PZzCMIsA7l9KiBnfZuYVnrXbbt5WbmKtRVSPQKLflrHAtXOT6ADwg\njXl4\r\n=JD0J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEyHaHB1hvI8GVn+QeZ7Cotas1ezCvZ/Py6gCm1c9FFqAiADnDKTRFi3mo7SUr/tGp3aeFKty5yFLp6rMhR399hNfw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617939400-ce56b50c.0_1617939736126_0.3468797854033061"},"_hasShrinkwrap":false},"2.50.1-next-1617939413-835ad4af.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617939413-835ad4af.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617939413-835ad4af.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617939413-835ad4af.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-F3IUNdHUWfjV55BxisRx4UL+xNQg1MmT4CFDbyrH1SVsMVlD7cpiwjN757dbNzchX9k8lLFhisttQyV8LXfGtw==","shasum":"4d4af8a418e25afce4a0836afcffa995796dec55","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617939413-835ad4af.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb81HCRA9TVsSAnZWagAAVIcP/2ugB0BK1NGPK+cQc2W2\n49e2I/NDwfzUVb/Nx4WgoEGs3GMQq+VLfwv9R7iUzqQlIIuHILOTFBoC0qs9\nccWtMIjCNDNrMf4GvGYPeqJwYJIbSjne/39YWk71ZRfXuSoiGq1H7diJofsW\nBzFqP5RikmPatJt5rjdtKoXE+DTaHyPEKh0Y7bDMb0tBsmTqfjZzH6yaputE\naKa+CkmkWHIJXA9ylQ/OnjVruXH0a5jyMxi26aYu05QMzesUq+Lj2u0i2X6C\n4tRgXumJtJbl5IZed08s6I+GKtBkm8aZCy2VwBtu3K57Cn+ASqOalnDZP+4n\npiNFddqZPh7iGhPdsS5Jw7Mcfsf7d0TD6peEPek+uyJbPt+tooOHYLQHQdEy\nW6iL73HKV+keERzHWQmc48YO+Nuj8Xe6NcbEolqAoHnBkjyr342kAx/LrOI9\nNt5yrJLAKk1Lk2GW0ykZoS5WVzxQPKsMllfUUqf2TGM7MElyTZeIeyEjh/Ea\nMYAksqwZFwT0o122/OtHuAcOlwuYHv1cKGEW1bvVGUmDKFW5DJ1qFbfJY8el\n92zsjE9GXBcYCrpoTiae9WddmFgdKYnZBb7wvbwjQDOC4kZVBWPCVZRdCT0f\n/p7p/2CSrK+DqRKXiRx/wCmRjBIv3jvJVwslxVhKNvYH5ASB/i4Aq4VKn0dF\n07ix\r\n=KVz4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGlbDAJTD/IIqeoy9bZw9Ai7dHRXnFSPSNqjO35OjchhAiA/hj43GBQ1w9exC34WHn6Q0JJWGyZ8rcsrshYvSxiBVA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617939413-835ad4af.0_1617939782633_0.4788467330250328"},"_hasShrinkwrap":false},"2.50.1-next-1617939428-2f7639c5.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617939428-2f7639c5.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617939428-2f7639c5.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617939428-2f7639c5.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-TWUI+dYeG4W//AQ20g4bTbGM9DpuLzeYvA3ly02HagSr9lwuFNnQjdA7WHhoMWnOk8XPNRswxbnoIrv1+LELHQ==","shasum":"ec9af9d9e118a4f172c01ae11c6a303842d714e9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617939428-2f7639c5.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb81xCRA9TVsSAnZWagAAW3YQAKETB9zgLiJejuMPCuDk\n8m54F8kmkKx0JSRGZ5FdyhuNIDbUjBnuE0diaGegjED3JKD2vRrYEEqCzyVc\nSvQ7dEo9J3STi+2f6balkTP90KT8SGAUQ/N/G8QCHlDPS/cj5kYAboQmKCAd\nOoK0gGyYejZNPG5gL5b7gAmGPnlllrwB9cK2NIZKtRViNc6fa16I7Kt6An9S\nHTolSCGrV0gQwzZqiCBK9K3RrxROM/YiZoC5FjnEJo5exEiKuz7Tzm38Kwbr\nMnnn4BDlBomLpyVmEzKRydQayDykD5n7HAns1fQoaSH+3euUBy6lFKJPs2mi\nq+GMyu5e3xZTcAU05JfWOCMFv8GGGG6jOE2czZCgbfDof34lz+Kjf/wBMy7w\ncKpmcoIIf5h0wmb/DbgsO4G3/xwp5gV1AMG1SS3LWFEVe8RWc+oPNDSpW3l0\nF9OsDYyoyY5xG/xsFT0kvte6L0oUt4joytZWg6wJPAW6TxkzTJ+GQUkicIxV\nUkS42cgYoXovv6cVdTaj97fBdSdHxixt/Ssgso+5T2ygwIhJ7bEKlqa/sB6w\nPC884oWAUcbN5k/OANVMMRk3nQ2ZoiuTSyUlpzMzbNoEGbHaoaUMy+tfWIKt\nVQxV/gCWpoEwDWbX1J+pq6PEXvnB1uHR18fx2kKOqRqeyMWQ1I+8AdudS+BN\nvR5b\r\n=BHlk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlXS4Rk2KGozfIaXB7ldBSH7Lf5MUmbQzuKtnV8GaOuAIgNkZ5snTRY0uNITxw2gXhXf7eOUm2z8qSE6yiQ958JKk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617939428-2f7639c5.0_1617939824594_0.004304364801073657"},"_hasShrinkwrap":false},"2.50.1-next-1617941549-9cfa5360.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617941549-9cfa5360.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617941549-9cfa5360.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617941549-9cfa5360.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-vQEQWl8hLOaqp3K2rJPkDmSEOYPL8UcNSz863cSTRBW5oHEPOlMFxhZxIKM9H/1szhQpqWIezx24S/ZPaq6vcw==","shasum":"0825e401babc2ee1a61ed4ee2cf79126e456bbc5","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617941549-9cfa5360.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb9V0CRA9TVsSAnZWagAAD+cP/0EgucUv5XimmvaX5a3j\nohuMF/J6VEWkU4avRJENqFxsoQV5UKwR6glLL9woXZJ15fVfBc1wj0/esYMn\nxBcCYVj5vF+1f37xCypeXPZIb5gOHR0n6Ee4so2SGyNEmuPJog1d2j1ZARO/\nbC0624/dtHVM1lkWsBE9wcutoMUPVc3Sc2w4W6WdVFR055hj0mgLa8pfA7GT\nhHaepGiDTbS/u6v4g+9MQyPHvZBPrSTA6SuYvczFcP0EXYcVgw3pNla3H/9H\nSKcki1v3Fc45je8+nlk+VjYoPk02Eea6ld3jA2WcukNDrBHgjMl2G43dZ1cv\ncouYxnUVpOmKyW3rvkgn7svBCiuILK1m/kEhdeidjj1VBK1704W+DXwdUZoe\nOm/goThijeayfDTJrqvmzA9yNf707wiloQvgtqXfqRtFE08TnQ3MW0ysO3I1\nrZj9iQuaB5xo3Sj/VPSWM5J9CaTUGDt3Go8WgT2oIsJslASitrHoHZlLzxw5\nn7P/fxgDqOqcjTsdQD3HsdzrYnbKpvTwnAmtCMdYrFPGycTRa4+Ub7BLQkf2\nF2BvyUiE09PZLholELnpsDfz74Dw4aGd0UhkrPaD4hZmYk5QZQ69ynMt9P+7\njPP/HsGbW+WozikbVukxSYisAGIKv2RsTZQ3Qf2Q/p8UiUWmnbbdBa5U10R5\n+wn7\r\n=F712\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgPVV4oeqdAgT5abtc5hinI4rfSeR/+Ruo8unZJKgypQIhAKD12ffDEUmhu9iMUbwBmy01BQfxjPy8Lzfu8WJpbrF2"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617941549-9cfa5360.0_1617941875512_0.5086473345789799"},"_hasShrinkwrap":false},"2.50.1-next-1617964359-8f212976.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617964359-8f212976.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617964359-8f212976.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617964359-8f212976.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-LPGcCK/jVakbxPYohEXX3lk/uhN29yufvvUmO9G9WNGUgSEpN/603XG8z7iWBSbKVqmgEuHhA8/zbM6r8AQTLg==","shasum":"eb0e44f69f17efc77ca650f9f893704ce988eb7f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617964359-8f212976.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcC6ZCRA9TVsSAnZWagAAxG8QAIzytkUUDIQ6iQhQrlFy\n1dIXH5QhhJKk/4rmpl0IuyzO2rVOAz/nnyavRs7KpWPNtZ5j21btKv5Tqc8U\nVcAc30LNdSGuOCI0T6KVqv3cPcRaL9RbDEExsbeRNLu/iQYVdB3F0wxYmF9d\nX0d2yor6zDDFzozIfTElH/M5a+H1crGnkQ4Mx3OOb2+MFLkf+drzvgJjxHCM\n0JpYgMnoP+DNNUCoYtwJoMHhzEE7b9E+sE4MW1ScdHFUQFw6yFsVdqZR4nYl\nJxowGF9LO+ArspGBTsWuyNsEqXtKOUxjXdbMvg4rCY5nqLPE+UhpB1PYBtJ+\nJrAJ/OE5Hrqxi++fx1scrGKPYBmK67nPc5pBiRwsip6CBuRnY54dO7y5bGAx\n1bkqMa4UO9539A2C9wtZhGNCayKiWayH6ZkyQT8aInKFuB9OZumQZ8DfTsC0\nuwsI+sOEKte3GJ07W9tT1A05m3jbqy+AVRXCZx37mW/QjmYCrMXwTgtdAFbF\nyHbPmS6LFmx29phVrAUkmXxEwmF+GS75aHPlTVDlAugw5h23428aCUWRE3LM\n+rceyGPz0kTJVoqap7s1e/ZyV13XQmysLW1o82F+NEtbgankL15wj3+Sj9d+\ng6KL8fODuHM4n43nbahDtnKoiv3uemxq9K/VwSlCyegcOmnIqZDbm69ZclvU\n77Nn\r\n=SMB+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClc5AWBmy687l2ZVPtSZnzhxJECU4+kiupKh1+EVPymQIhANLBEIBZuhLi8OcMokoMel5LAgA05eCRnitXi2S5LcgP"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617964359-8f212976.0_1617964696912_0.2548637564825189"},"_hasShrinkwrap":false},"2.50.1-next-1617967120-f0831f07.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617967120-f0831f07.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617967120-f0831f07.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617967120-f0831f07.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mch3ezSCfHLoGva6DT06rrdySAuiOtaw0coN/3ux9wkSqHzda5x5oleI73fB1QbS0g0qB7X2uixkZa81LosC+A==","shasum":"b1bba450782166af10f79847e5c2d021a5487dfe","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617967120-f0831f07.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcDm0CRA9TVsSAnZWagAAeGIP/0Iwp3AA2EAun5J92Mlh\nSg7WDIB443PbwaDhheKgBFPdu3aRfdwZB+Abn69DbjHqoLThHCiUesDiThSK\n7TGAqlMQNNnaFpKjZMNhdXMDay8AAVJpEmxAYSaclBBpi/POFuKSMRdl0Nsq\ntd9jlC1aNfvjKVgsASsYo1CeYnZdqH6ZWwa3SNUrPihJ9P4B5dKV84tkrpRj\nNm8lTY+HnmvO0f6LB64CR1KBUp96HF5mtwKE3g/mk3hNp+Fuf6vWYaYxBxrB\nkkxIRJgdWqyHhSCPQlO4DGhgU1q4T/L0RwJDOPQwVB9SfDgkFZtel6SDr3AM\nLydL34EmDNetd7WO00mXvRc5+ZVuV55rUwIv3aJ8SoDjXpPedSGte2cNedPu\nHcRJiAW20/q5hsQIZlJSz9bbTng3PsMynKtF0Dl+kW9jTaj+mP+OIKawPMHz\nS1i3WZPctduHRd2Zohwh83D+2XkZFLq4SBANmFFMZdCHrLd9653fIepmgOlJ\nx7P1c4OnylrwkEXKMLT8lEj69IpnKdCQjsiNm+q7pOL2pZqkITe6BT+wNaVR\nedu71hoKXIvvJ6nK64GP8PyXM+S1NlT543rt0Nt2YlleXt4pI1lrPXP422Lm\n8TCVzC70fh07cgIMqejN9Yu0x+uXRqOhrLC0C4gLiCRqVrUTSHuOdFHPayW+\nZSzA\r\n=TdPK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCryTaio/UIGKqhtJrrMUMGS5joUcJO9jt8fTuxOWOKBAIgEnWzPtA+/CWJ0TMQbByFkV7QZ7Z5GDed94W1vGcPSvI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617967120-f0831f07.0_1617967539591_0.23695774301922956"},"_hasShrinkwrap":false},"2.50.1-next-1617968402-44ff8e48.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617968402-44ff8e48.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617968402-44ff8e48.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617968402-44ff8e48.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-fgQ9n2S5QD17cZV76TM30UiaGb2LW+cySFwikIf1zRGRQWAqroHSq29MJEPPRMHQzyj6tCohmhwuvc6tZ3BK5w==","shasum":"301f5123e3291a0e578df2e2f94366e943650e44","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617968402-44ff8e48.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcD6aCRA9TVsSAnZWagAAzrAQAIjA3rRQjzRkyUkZsxZ7\nnS2uSxwoeBt7yDmoOz4c7Kd1DdMRt/OQ6n2kJ4WpHL4hR/jQ1cFUPbDNvmoL\nulkxqiSHfuH5AybBj0lTa9fKLCohx/08wozb00vbPod1mJl4s1kfDemyF3TL\nb6QDyMG+2DLKPqHCKrXjAE1n7MNxrnX/Oa2MVXil4xDM9gjOu+1GphmiWBkw\n4xcoV/etbXpHua2v3vyk7aYmJ7y3QHAcG9PtssOlO6apc+0el9o8XX+Cl5jM\nt/9j5MDP43ADUHV5c4tZvGp2CpIOm0SJXx1gxyXWlboKGA7gftw/0Yk3wmGb\nLFQCppN5i90rw0dPeyMKDGjYWRNef7xZNPzHIyxLiaty+OC4VBOzGmgYD4fT\nXTTikpvdWEzk3dM0vfnYAQRxIlMSyogO491efeg2ANtXq0GF33IDb6nzDMPC\nq7nvyVuIoTO+imKnoX9J69YNoFkJwpYlqMzhIppD1vHNIiBbC2yeZiXFUUiB\nrZ3Kq+uJ8mWaJp57JQAasThHmw4Buiz6qRP4MNRUDewk2iGUJqqWwnBtgikX\nagtr3r6WwCIx6EWPJzS0t9H9/BGbLdTu8wipdUnWW0P/3biuMU9/KGgteY3p\nrfbBmfRfA4WLCm6EKdzPTzY4d4o+5HRHMDTft/feVoSx3kMiLGRPFLVZUhlL\nVKyM\r\n=FW32\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbNHgknc3vA6ho8iTqssAo6jxcdOvLusgDhbNQbGETpAiEAo+Jip1lbMfxOQfMFPS270LTh8OHQ5geSUM2G6cq6QM4="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617968402-44ff8e48.0_1617968793947_0.21160731909986552"},"_hasShrinkwrap":false},"2.50.1-next-1617970277-0d132c83.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617970277-0d132c83.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617970277-0d132c83.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617970277-0d132c83.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-d3eHgUg95TTGAJHQlSov5FBxvwd57nZGlXOTbnBL2jvVZOMHKOah88ewJdnq3rde7KuqNrx9Vj0n1BJn62R6Ag==","shasum":"3624e1fc449807c659e15e69b911f699dd9d8a7d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617970277-0d132c83.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcEXHCRA9TVsSAnZWagAAjXYQAI2YYn3fYHT+W5OJhDYu\nPTmD5Q+XXaKk0D/7eqSlTMbl9Nxw4XsTOkD/PgL1Gbr6WQUblfRxr7/Fue2o\nyR9/MbPy8d2bSUs9C4P71OKv3pPRtsUqT2HeijlBWHMu2emGnwvlS7Xb2PYr\n9bsHVZsZPFp2frLgG7mIb6ecefts5eaCHnKh3eVi5NXhjSUHSoYgA12bIe1Y\naDlzz0xfIyWs6ewlJduDPgh1rY4YuTGjuE8dKuRg2wujBofUjyWFJHXBxCf6\nsbLbT+oFA7fz8lYG1HIWOIlZOVtms3P8FrCvPPS6CPqtk7nevx9jJ0ZWeiUr\nmq9sKvdSMYqoTLP5C+5VWZ0GqiKH8Y0hw/bgDEisN+N9kDoWuO+RukxN/u3x\nWmryhTjV9vWAe0vqQfEtO68F690yMWuz8AP+HJqRtr5KeUpNhBPSo1pzRJDl\nVc8uksl+a39POoGM9Vs01llTjulmbGZ6VltJ7YSJx7EIir+28T4kSDIcGVYU\n+rYY9Io9xB/bEhk5ZEwI/D58NtmRYH8KcI4o1CpyODTipGn60jJyNTgNlYGN\n9vVBxcvuzLx19wedL2nKPUTSFrkxMw+X/ocDj3aMyLLGVZK8xoX0hm6Mref/\nboFge7AMAWiR679OOsdwTXy7rjvl5Y54Sc6uQGOOfkTReNuXfc5Nde19Uyr5\n5hSR\r\n=dlR2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/N9/uOS5zo2u8WL7LUquXFUvdIDtV12KroZxXuMQrFAiEAsJ7mVEDIzKWPle5PYmfgV5qCUkrfwUdS98St5rMUBI0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617970277-0d132c83.0_1617970630697_0.9759258921154483"},"_hasShrinkwrap":false},"2.50.1-next-1617970409-c6a5e655.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617970409-c6a5e655.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617970409-c6a5e655.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617970409-c6a5e655.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-FhTbrpUETA3IKwWcyZ8i+KTWgXcWU74w7boBg5bbBZbtvy6WlJDJh/H28NrtCrP4nXYQJM2xsstwwCyqXUzumQ==","shasum":"3c09449893be1ce24151e0bd8362e6bb71a3ac14","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617970409-c6a5e655.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcEZ1CRA9TVsSAnZWagAAlfwP/0/SDLvigH8sFxvASCip\n2PxieptUWimuaTPSMRJyQRFjlvVGx3obGcOViVKa9tlbQk5MF0sApFfRSmD8\nRbdi2wjVwNZFJHHCzOFItP7LUH9TEEuz+oq/MbwShqLYEMp3m7z6yWWF1a0h\nGRwoeyg+RO0GXuZe/L+m9u5p1Jkzs4b+pD20uSYM+kjuyFouAyDAljD+LGE9\nnmIXntQVuyq4KtVd13IoSvATY/kit/hIM5EQ+8IIy40Jomrvh16MXZERN5EC\n+OWEOulVcNROZBlIw+2jg42ehULxONkUVXDOqm35PGOqQmROaavfrk+UMSqx\nWYgUBQDMmoErq5gjRF5yB+bLf6EsUuOj/qlus5jr3BIdnIe+a5b8mqX7oQOR\nutfxJuXMvFB3VJ/ifN0+OFssDsdfdMRttgIMtervkl0J+mbi1aRHncwT47Zr\nsf7ZvSwRDwfswfDpW3rxF9DYow8vVF4U2AhGlZzjCGootWW7x210IZB+p6Lu\n2UHs056eChXmMEeT+gJWQl4QwI4JaJakkWEIzRr57IppsoPsJS2xQaaEz6DL\nOs52RkqHD2CJQpxRJ19ZEFNbfFDreg0lwoHLfKjLACqjkJraMA70P8lPcjLQ\n9HUq8zZuPhGFnD4TTvs/qf0xz3vMtas6t/QOZK09p9wOq+6KiHaTZC5BLz5N\n/CBv\r\n=CVO9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcF3tc8nv9b2W2BbgRqd77yrpmXm/5ScIY9PCQCJFeiAIhAN/pL7bmG0p4nxMHzNosP/+Od3Cc/SCFVORDnOEQrAFu"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617970409-c6a5e655.0_1617970805096_0.8177965973197976"},"_hasShrinkwrap":false},"2.50.1-next-1617970460-93847529.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617970460-93847529.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617970460-93847529.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617970460-93847529.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-H5fOvs15b01ptf873p83O3NhsCvkefzrdXpmu9hmfXitywMlab4GTDQYW86h5WRYMJ0g97mFN3mx9CsibV6GbQ==","shasum":"688416de7aca38161729fb26fa3b279e528c1c0a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617970460-93847529.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcEa8CRA9TVsSAnZWagAA8hIP/A4joSxCk6JOlPDDx/l0\nBKOs1tb+yXzC+o4jG32hIY+X4dUJFKN21NAvAOGHz4/GGGgstBpVauYsNM3C\nEdYpSLTmQH8mm0gveBzdA7ejXVYIU00qJTaN9Hey+9hlpHV6Onmz+9WfQskQ\n6tGiEdPMYgLj8hddjKH9p92KX2fxgWDxHb5Of3ssIuq87FE9C2kicnKjFNu0\njB0kPeW0/utnGUgjdEEeo0GsDWmKQmITc3Xbp2yPD2W9huMeaE2gOjzdGcav\nUbUpOiUHVGXJKezd1hg1cp6yZXoOnw+76QWXuR4FsaSAsqF9+XPou7V4JY/j\nao6zd3OnUDcxVpSQ0v4Qor+J+1CoIcKRlmwY0GOjf94L1jdtVTRl6BAIF2Sm\nLlYwN7CMGlYu+dCSyOlc3InfvkAA2yKf25wK7rA62YCTbATRrPxCpM6MlW8r\nrPXJ/ovhl9MXBu3pIzssr2nJxb52jvHugFPP2pvItW1ZuQTi0LTdLyM4iBX0\nQSWPj281yeUd2FMbxmHuw6OkVsAFSDtsQH/BnilJSIAHHmZ0OimsMVn99PSG\n+ZXwd1a7QBCtEgMycdfr00liWLNOt9HwxV8QxpAnF7vKTlj39Wx24G+YspL9\nU055HwkrZ3Er9PHqK1Ajzk+YIxjSxja/J4NNHv23Y5VCsSLvqocDLgwVHkAI\naC6m\r\n=LoDj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFhxRIwsW1TiCHrkFbnX+4sWdtFeisnjNU1x2W7vsCs2AiEA+w7CpyhLVR6gchbnPd4UvMpnPMFSqdPfXsRDCvo2g0A="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617970460-93847529.0_1617970875752_0.46881096836263625"},"_hasShrinkwrap":false},"2.50.1-next-1617970746-12d66235.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617970746-12d66235.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617970746-12d66235.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617970746-12d66235.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-jFe5tWS+PlBvSHHSwg6ZkBxo8Br9ie+MkpxHh63tLNMY6nPMuuq96XrMDNBTNTcP+G7967Gtt/SMjB9AW/GD5g==","shasum":"f7e0280741c9f59824af83f4c489a0d453e33c36","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617970746-12d66235.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcEe0CRA9TVsSAnZWagAAKegQAIgzv+fvuyZN1fMR1GeT\nCMQxErH1/73Wd6SUwJAsXs8Ks/DmDUjNcoBf/9jTZcjNawrwlVUPEFuf2JAj\nnOrnkPJwdoL7mcsJS+pmHHXO+p8g3lDrdCWfanJ8uv5RLuB3d+hN0jshKQZJ\nybEuoWI0MztM6oskRuc6b0EPlQuuJAPx4RtUgyqGc4j3DSW/zIR7664O9aN3\nFNfifm2USY7yduKb4x/lnw5WlXQHsAg/zbn6HCcVvxVF3WJQ3W0eGJtLQLsg\ntrxcMaXu82P96f/0r2zvmPWaRf1nDbYQmLfoB+fBgu1p2qP6Iww1P4OAq4C0\nX2WiHj99vgqwkc1qJQsaFMf8Wmhil95UZoW9+du+D0/rTNTUYNlwuUvjgUWb\n5TZflJHMKE9NXfYEAonXjvBcP84E5gr0BWDvb+/r4xTHBwehKJipH4wAwHuJ\nXylJUXEP6tqfmXH5csm7x1ILNy8JVPt3GgGzamE9lpsq/phJOBjJmxz62h2g\nlUoLWKTr0kpwvd348ysOCrbBC/XmH7F49HuQUHMB4XsNUetK1BM0fme4qDQt\nBRIV5E/06kTw2kkAzX0e+gnAohU4lt5TcAr7OK1AkUlf895aDWMz1Rus5VvA\nqRuc6FEqpL9erK+U44eXqQg89MBTBpD6GCipPvOBu5ZBu+VMLD+oQ4DliVy/\nB3m4\r\n=x4Er\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBeFg+lOHE360gQUueLl9/eIFrRAW5pJqFC7XA1uMUzQIgb4OzbmSJ+sAVs+vDXCnNvEowIyrZqSuSK+m47YmZogI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617970746-12d66235.0_1617971123918_0.26009460603300694"},"_hasShrinkwrap":false},"2.50.1-next-1617972884-145374e6.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617972884-145374e6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617972884-145374e6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617972884-145374e6.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Y83lrIyyaqMOg3eLLi4ayDthAgKDjOSHM3fWAoiHhmYOyCfv3fTyk7i8dQzkzgWXHMNp9OObHrJnBkEGVkICpg==","shasum":"4b7adc1e8c84846d6d6196aa293b5c4ab1b441f2","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617972884-145374e6.0.tgz","fileCount":56,"unpackedSize":88034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcE/sCRA9TVsSAnZWagAAR7UP/RfY1TnQovpFn1QfuY8R\nM4Fuxb7MteFRmusLhFSxEzkMlrN25YEhJd3OiJIHoq4vxaeyJ35rS/AgZeKK\nlDjbRmm6mEsQFkw/FNhMZRcpOaS7U0JGogXP77o40NWlL24k2KURHialMnlh\no464GgyljDGL9WrDybbjR/ipqdFTAQTIGSpsoj2pq+AcddFDGdXlHlaugrbn\n1vySiEEAUtC6vPhjw+0KmKIryqKs4u7kIlkjR3tmMLHvcN8qVU3ifj6liO3Q\nkcFxbR3XQmIMJTWGioXlXMxlQ1/APFFle8Gn5mBcisLfnNkmBbcSTLXhfsxN\ntaXJyaJpQL53rjruBxq++/60EFRj8b+ht5AAvwTdFfjpYloB85Cx2CmcgvFd\nyAlWvmbGMu4PrsQr8Bvv7UpNFANCX4GELl1D9Axp8Nlu93aCxcvwqmCUvDu2\nwLMKTU9KClyr7oC2BgYKFReoVN+ntmwoAkMGd4f1Q87KRNdvdKrVXx9Ue1V3\n3K6URcRq6Bm50dvBNgdbGEI+eyP5Se0suc5GcL5s6Lcm/LSF8mwJPrCuaujF\nij+zdikkcEe0v5mf629SWMAtRZXO5wi/YCzRF2j4vWQaDL8f67EEOiFg9tw0\n3OgG2x0DsmHXuh17Iy+UGophxcXKvAsUXyhkzNtqQFwDDFZaAU3GCNrwqe7t\nfhAD\r\n=Krr2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCC4TN4WFSgnwrqdHdRsOlljwVhhdOiTTNVC/qmMLpwYAIhAMy5FB4Ccjt7ZPGoMkjP9SANBKAN5xTZqQC5rizGz5/W"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617972884-145374e6.0_1617973227818_0.9415728538914481"},"_hasShrinkwrap":false},"2.50.1-next-1617978913-fecbffeb.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617978913-fecbffeb.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617978913-fecbffeb.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617978913-fecbffeb.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-UBAEE/fjS8zkqKfor4I6qJ/JIsHsIGpZY/A0nly2yOav2w9FAjpTRfxNcAnFPw/0QR8k2YQQKUAHTbQ7nZff3w==","shasum":"d1e9fef6238068a43b713967876d364efd3502ff","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617978913-fecbffeb.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcGe3CRA9TVsSAnZWagAAjXgP/1KVQj1CLt/HMTEEScBC\n5KjIvpz82iNdI1GA4SVdjB5jZGxZ3DKmAW1RaBwPsT1vHWAVHyKBVmyVvlgq\njxQ9BontI7Q/Ca/LQ1NYJhKtMaurnwMVS6vucDkgOuF+d//fvCnT7M8pQp9z\nZTJ/cdkwdu8nua1LkPxAtpw8KHweATCvcBH85yHqfE9a2lWm1hRxeVa7Kr4q\nrjC822+fFmY+mkJ/16ghY5/nFJU0ZKDCfa5ItmVhdwJVBv4349cEXkuNssx3\nC4daZd1bIIxKHIeg1FhEWzdPbRwqbSQ5Lqhw1HoxfJOafXlpWvlVVZLT406J\nkyEyuqRCMejJCKM/iVsrobOyGJ35Q3WwifkVCFVD+HZ0lLn7kHhNutPSEzor\n4O2aM7v3iHEPFOXUJ2F3S2T1jC84NRh0fXreW2263bLFOt2KL1EKG9gxcIf1\nH4p6OkRZnfjvgnGm9OVV/GywokEwAyYwUw4WcVylKFqquvI+GYIEF4oIKtIB\nPqIG8YBdtJ8fPPiLyww3pRSQEv/MQXF1dUnl1CWp+vwNkwc0hTNezbWsA6lz\n1sS3uBPHjyW+0CMU9UydpeWJude0V5Obz8Y7pe6L3xUVrBVQxpQJlgjxHcfR\nwg+mHWpm0KFPErmEbLGsyt8xXSyP/J/62VS02qYNGcpc0x2DDD5H4bOkV1WW\n908X\r\n=2NZO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDYt44cCimrIOOSlUOrYKtkC+tY6MTkqcW42djzs+bX4AiB3MuFU844AynU2p22dF/I1jYH/3DYgnOrKTbhZWJFUTQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617978913-fecbffeb.0_1617979318697_0.6460081729398957"},"_hasShrinkwrap":false},"2.51.1-next-1617981088-6c626f81.0":{"name":"@xdn/prefetch","version":"2.51.1-next-1617981088-6c626f81.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.51.1-next-1617981088-6c626f81.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.51.1-next-1617981088-6c626f81.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-M6Xkrvs84tmSmu4CPZzXvyw2XCqQ6CmYTb/wxwmIoDUd8olvokOB7FcwCAfU/J6JizYNbdeL1If32gXaA3g8LQ==","shasum":"5a947a8277172c004c97ad59ff9e317a09677a69","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.51.1-next-1617981088-6c626f81.0.tgz","fileCount":56,"unpackedSize":138415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcHAyCRA9TVsSAnZWagAAOIMP/22IBX5fZp/uGfLanQvx\nKrjcLXdDnxxoWtHQQRV+7T7cgEPpzlWEQNU0LzhtEUWVtPkoeGDgmX4WuEAT\nFpti3ahEuf9eRUnhOJesOQf9ES9Wh2q9ugpQqSHnUdXD6Px5BCl3ZfFqJsKW\nfbyqkr8S6Zwpnny5FyUR5dkrK7haOWBmu57YpXAOcJT6STAZ/t1UJOPs13Si\nKKvL2Viols2eN0nX8J1MGnk89jA/66t3jvDERTl3XYTb/vBiVxiyLjc1s4M4\n9iNaPTP6RwVQK00yvlQUQcRLVzd+ek5EzsI4LoNmqFXwr/T84KX5e+qfi3AG\nQI4+jtplJYOt3SHiM2skT1lS0Ueefyrrx6fU9KcFR+wE7CVln1W1Zfvp5nLI\n+Q3uHs/K023QKXCw23iJgqroju940vmYjybM5GPoLxW0Qv8AWBk2UxVnMKFg\n1O/VDWbLZU7F/b1exihzUEf/J6hLryOPiHEh+D5xN5ON5IFvpguqJP8qOdtG\nBnKU2860hvrr0t8Z93RR2z0sbXVXv6VkMXAm7lnDYEzXqBs6+lII2kH5oliu\nlu0vGfngBKHkiIqhighBRoVwCup8/cme77ihdoFlA3aGlCzl7geb5IvFmZ6F\ncOERy+cQYJBgQL811dfPIVD3tdzJLqXKtSs62HL8h6KOgPqXGI22cMdSIA/X\nbOw+\r\n=HiNG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGctRn/9KuWigxR63sDKospf37FDqI5W5/Oh8Kjopo7jAiB0jdB0WviI1kV+CUFe8wsm0/h6ycf9nOaOf87PlomE/w=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.51.1-next-1617981088-6c626f81.0_1617981489958_0.4520096286984221"},"_hasShrinkwrap":false},"2.50.1-next-1617982261-954c308c.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617982261-954c308c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617982261-954c308c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617982261-954c308c.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/ChdhHjyOtWRh9yfumqnZNFV73OwYf+UC4bitftL+HQlpQ2dgGLbyS7CmDF0f67rfV2bAXRF7i+2TLFxYZbzTw==","shasum":"b5d20d46b192e001e2fe246db46d732d3322de0c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617982261-954c308c.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcHS8CRA9TVsSAnZWagAAljgQAJpaz/YgQ+TUeVMsEx4v\n6FWcEhS7fu8MMpx1ylFX1SHGO+hR9n9iQcS92SknoObgZ+gLqUyivF3OHd/W\nwXPemf1wMHFW7dLd49bm72BIOak7m3s3R6NJOOSY4SBCB4aGYwK9htt9lvNL\nf2eaj4H8XMLvC609gN8c0Rifj1vkiktVpUclDn7FN2RaoUPZEjZUaP3D6//w\n6BWFvKRZfeWA0nTg6Evk9K75QJX4cWvpmtqvvfrz3pfydWgL+6/Ow7hANeiJ\nj4lbjCJ39Wv7tsJog0CKQgG51vUsAV18zs67JojIgdzfT9UxYCeEcwQ8ZivP\nHvLz7Rp7Zut9uCc9dyLHsMZHmdmMh/PsfGAK8/OImE7XARwRci83KirF0xwZ\nWOQ3lGqf5uDVbInT18tR7j9VikLD25N4bWOJ1k8bhyVRBueisJ6Thtm8kkyA\nquOTe8uI3tOmBRviYBEqq+Bl9z6U1y+3WcLhDN/HLSiPRhosg2s1zkWY21Bh\nJnmg7tIH9s8fuigHvEwh80IsgjktFG99Rl9ndMMHoUM5rvIzv0EHMlq0Cph8\nb98HnX7mXyaq+Dma7lQEIQarx+AfEKsNZnyXxQ37ay4LhECHWHxaQqj5li/i\ndmLxXplus2r9Mzm5SVCR0jpaBzrXRNdg40f5KGs6a3x13D/DO5Rs/4wzS/Gq\nr0gk\r\n=fS/3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBhZlxq7va+2xflEFpBLIGPKAuW0bwlM/TPJZQ7QRP+gAiBXs6QmyhVE+LooPPUT55DimtDz953Fp+L1nfoEKbDziA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617982261-954c308c.0_1617982651838_0.9388212024419862"},"_hasShrinkwrap":false},"2.51.0":{"name":"@xdn/prefetch","version":"2.51.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.51.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.51.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-qXhU1WWZZnDSFNr8Ua0FHmhnCrdCe8vpgkWlidycbNPbl91ZlQ3YwjfBgijhEvCfDTGbJ0WizbZ0T8A/Fyuemw==","shasum":"d706ce4779d5358ff8b6c5a926219d0e42bff97a","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.51.0.tgz","fileCount":56,"unpackedSize":138361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcH8bCRA9TVsSAnZWagAAPGgP/jHmGwYrLX1R8lB6ZArH\npsKpBia7SwY12rbyZmossccE0lr273zzuBU7qUZ7M5tZcFxp5m3HvFha65nl\nrHIodD1tlHqfy7+JSWZY1WoG4MwamGZ+nk7yuPm36Fs0lZmmZhfMw2Zn6bDH\nhZu3GL4yQf/f2K7Ek9L02vFjmsB0xm1KO1TAtUBbFjJDZ5S29i+ih402oWx9\nnbk3cdmxPCscRfPL3hPixkAeQUneJx4qHTeqp/K40XET6uoxghybKkjBcHgu\nJEaH9kww8S4zz4nKn0jctbc14PoAJGsrkL5aibnhnWCBS+6PuaG3x7onjyxH\nEcmvsvlD+/dfRcwJXzlHrgBnEJGT8Rw/KfyR/vh0wDNZ1/u3ssoC6NnGpCuU\n8xdoQKUhMdUJVozdAyjrO6xaFnAhT71PJrcBFfbcVX5yrWo72FuRHQTVIizV\n+37ViYFmUgiEZcBHDI2w+UNFfoHzDQEbbTKgX/lkgaNa5EA8+NEXucSIQruA\n7T3t8vgOvQVHHxU+LzVlGfDl6NWiARGy54uEVXvmIZtqyNKMNcszdZ5o9sHi\nwIY4FJOZ7UV9Gg1SqLgqf+HjNfjXa2tTGHRmuPRevHYqLM221iZ/QsFA6UDP\n8klwth2EeaC/vA3o7eb9aPaf2oXX9hE5QY3+n5Ncy7i9cZvEjnm1QdksL7S6\nyun2\r\n=DmCa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo8p+3f7J1VyN/U+iMSJJFJCIfChJSJ2lS2TVy1qE1cwIgOSqeKf9U33NPbUaTEexHqVrLffB6XgVLwAD5mYHSj+E="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.51.0_1617985307416_0.7800956802678494"},"_hasShrinkwrap":false},"2.50.1-next-1617985606-33a80696.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617985606-33a80696.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617985606-33a80696.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617985606-33a80696.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mKIOE/8z6aV3eOvGhOPWGRIJHdrOlTXuu21fL5fMJ0dSrs6qWhhAfzIqJwam7m1wJ292/Ta0kL8Ksz2Tbibbjw==","shasum":"a26cd8937b1a04f44c6164f89d204e9ec62b4e2c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617985606-33a80696.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcIGFCRA9TVsSAnZWagAAG/4QAIo3xk8GnA3TaEasiyVo\nyrCZCBTuoZDK7460iEclG09CG9ZH62xsYepkyUMNnMjATIc6lfDBLMrIq1Mh\nAL291Ll2e38uZ925JEJVNF5TWFaFRhW2+P+kXCHlsuwoxh/8Dd0YGhAyx5g/\nOkdwbTrRjcj9lADPsKjHcgWcLWraWXJ5rzSWhhMC5Z71IAcE3LR6TaokiYvJ\nhy5jD35B9ls53lsYN+AkGU0PI9SDqyLx2mIGPklELEFfS38vD8XuqZekLafH\nMRAigyShReLBhV96AvJj8bRHXzAR1N3Y0ohGHDG3PpRtWPcLWbQ7+MhV+BNM\nOQYvl/kQJZrkm66lat0WPtFF4IXgYz8ibKm3fvT8CrQV4agq8hJ2p7BQ/KIe\n55/1hX+Vv4DGc5P5+SXYT/5qQrX34zkO8Bo1EuZukRxl/KssVp8tohaD20CS\n9rOMzUGTLOox6tIJ/+cIXZTpnp0y8+dn5zmdycYHYEvJXYMyZMCMhSqmO68h\nnEpLmVaHQp3j/tvrHbL1TizZ0E5X+YKcxlh8dzjsRNgc67TLywjg7bb62q0g\nXsuioUIiYjTl9nvDbY8+VW+psSR8MQbAEjc315ALTWPSYCVyl56OWYB8JYvw\nqrjGWXzILh3dBsoQhru2w523zQy4sTCC28AQd8GmZj8RqmbF7f2PgNz1rYHN\n0GRH\r\n=bGQv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5gKuPod5WSDU0ellJ4cZJVqcQ2ag+jZLrmFnK0ZGnSAIgKD9CRYUEjMCHQpsUu/csBNnw7VZM3xuP6JyHx66z1iA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617985606-33a80696.0_1617985924743_0.7461404487405328"},"_hasShrinkwrap":false},"2.50.1-next-1617986021-3e6ad425.0":{"name":"@xdn/prefetch","version":"2.50.1-next-1617986021-3e6ad425.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.50.1-next-1617986021-3e6ad425.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.50.1-next-1617986021-3e6ad425.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-r9D5a5iEm0q+hckqsR7dzc1plpQPgnBOpfcLmwl3cJ7KaL2CVI8Qs3fJmeV2lZ4Ko77e9fQtdo5CJWO6JbTsOQ==","shasum":"717832bed96aa1b9595363fce072622274cd1102","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.50.1-next-1617986021-3e6ad425.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcINtCRA9TVsSAnZWagAAbQEP/RRPdetAo50Z6YKfHPBQ\nRoS3L41BNJNX0kUDvtda2TKsbFgMjrNJHtk2K1BNEtVFWtnj1vkpnGok7bDX\nJ/dENMmRdyp1naRfla1eF1vWONJ0ZXLfWL8ubbx/M65P3Gopi+TT4Gsnch75\njnijSHA3BAjnAdyRtgx4sgbSKZpT5/WBB6krPWsOkSsaXi8y1vdsi7HNa+ND\noL8Ag9pleL8pEMPtUqN1KtICkOhgQJqGeVUNAn3ui1T2l25ojp5I8m/i627U\nlngQv6OqGP5OXmOK0fgu+15V4+6sj3jZLDVSNMeHiPyfEao8teAWgtkLX6k0\n+KtNJv/LgRQvVEIwmEzA0vbYidM8Dh2L6c5xBfWW3ntok9amA1Rf9qkbPn1e\nBqREUro0vpshqtcOiH6og+qc99SYnjTGC+Z+amho851ExG86W7J+YL8w1Ilt\n1P1A36YJsJdF/iAlYSECiY8M5O4K+KhpwDwYqJg2yKGYrzPkbLom49aHgQIh\nIqqji6WZasB4xt/XGIadD+TNYn1o1IRuOyuNFp0rdSli/o1q3gL21J9vZSIh\nQ98QuB869qPTHMuRJV1hHngM3U4vLbGUOaIRZgR0InJVPIlg3+MulhTcz539\nubXH4exGH82QXk49gnGC/TjIfSICQXrJ+R+YHmntC3kUNY1O+Wta2GZkRYJJ\nVjDK\r\n=i24N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAsmEBfIR+l7zBOhJ6G2K5369hViSZuqAp8tmYP2POV5AiBNBZ1ziju/EReM200dWvzJxsqOacNPOEPC0MhauNqimg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.50.1-next-1617986021-3e6ad425.0_1617986412854_0.5695739493564806"},"_hasShrinkwrap":false},"2.51.1-next-1617993256-842b76e1.0":{"name":"@xdn/prefetch","version":"2.51.1-next-1617993256-842b76e1.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.51.1-next-1617993256-842b76e1.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.51.1-next-1617993256-842b76e1.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-t+cQjw5r35fY5fzQZN6QW0e5orIUwbqcqSCfh/K1fWssKjj4Q3MWeyhKjxnRYWPtoynbJhzTtqMqk70ONsL6Mw==","shasum":"c6af62a78d98386a9b6f4bb3ecc98abe6d29bc5c","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.51.1-next-1617993256-842b76e1.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcJ+XCRA9TVsSAnZWagAAbJsP/iju2JfqmjF9il7U66zW\nQqhyD7wTfuOPz6qRiSJoEz7fvW12BU3EoFlbTlk8h02t/JffnA2zrBeMO7YZ\nFpSH+jZcKSrLqAhY2NsZwamkRUgrw6mYZynLspLPqIaqP0MdTE7bdjELto6d\nUZLcngxgjUa9n+eKY7brkm0RO6weRMKVoan0ywuCyJwaMx63SpsK0sfiysM+\nZUEpwte7JNhJuEOLAIlR1mYwsB3uIxDhwnpq+xg8S888EuTz4Qi0aRsK1/S0\n7LHP05OkZEAAzQMYLa+DFxqDdwI3FeCwrgJKqqOocPiVcdmA5ZijaM6ge/mm\ny7aWdKef9kY9fso3WMVFg9Lxsma4CIfOxySU7Cljn6puRmyKTW8fu1Pa1y2R\nrReSRI4fjFYL6YErWReaHMaeHUYcWfKzjL0Gj8hOMRNjZ9CYDQHAHmbouOQd\nrArkGblCE9I0RTVG1YZZ5WjCzjgscqU76pre7R0GokFMho5PKqrIQ4OauWgR\nWPwGtAVMOYvejBj2Slh65e6lR19XZbk5lEzZ17OH2JXGWILEKdmlpHihnJSk\nAs7Zgd9KdK9Q7wtM6n65sYqWKQAZlNnJF+Po65+ZEJwkXf1CFXKtvTJF9aO+\nU3NiBAfcDIGxCIQfRKuFQp+3jQrGsgD2oTwNtp4KVgGBByj0ia/uTkzv5oAy\nsev1\r\n=9oQE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJ8K9i7baxbZ1FS9+sfsViCitWnZ4yIzaoHTgh7whrRQIhALsiMi5eIQSe5cDQy/0N0Mgnl89f+IDpbSHpPZirD3oQ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.51.1-next-1617993256-842b76e1.0_1617993622642_0.014389204789058363"},"_hasShrinkwrap":false},"2.51.1-next-1617993723-3597223b.0":{"name":"@xdn/prefetch","version":"2.51.1-next-1617993723-3597223b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.51.1-next-1617993723-3597223b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.51.1-next-1617993723-3597223b.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-u/E3cxslfgvKl91r66XLiUjyEDJTlZ42eGsWBmeKpDqUnc1S9G3FgDBGQddOdjbf9bxcN8dV1uVKLUwewMboWw==","shasum":"2ab92d68d8f09122b015cceeb1297181bf54a9f8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.51.1-next-1617993723-3597223b.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcKFwCRA9TVsSAnZWagAANGoQAJ0cKb7ZvZh6xubwHEpG\n74tnxxQHcnfdYtJSwbPPo+oeNS/epdFWukWJM1hgQk/nPCioUsvk+V8wnyuF\nsYINhtVoWcdI2TaDXfsCFCgbVzVpPhwIiZozuON4cQTrvHB64YUIPsFc3d7N\nuTYnT1wzKPTkTeD7O6Xtycr9bUKjhnpnzvNzDLnz95jGN/SFVykbWKlBW1wM\nuQMAJDImS/G2VBLsibl1KZwZLwboW1P9+TtlJ1gxmmhpkP2mEyTe5oGhoV+o\nBn91GAkTeTf9a9oiR7Gvt1Tn3Xu6Cp9e/iEWNFcn9E6mwvmIukRHObR7uRbi\nEerKgBNjBy4/FYtxibRECCuLUCmeGgljNKVJbWf51axArT4lSvjV4iGo0Wfy\nfLDQs7r3TpkFY2xUvw+STTMr6dMy0u0WjQJKQM66bZPxYnQ27Ui8/j8eAJZs\nlNb+kp48YFvpqVp4R80gOF2lnVC6OqRrxEo1PUI0qbxePeB5PN6R0+LI9myQ\nCZXL/Dhb0YgthIFlZiHgFfvsAKgJfMgP4DlIwSpbnpMzk6bqkUZgbAt+8jYU\nFfH1Y6j3W7/5W1vWMxWQwnr9hV0VSCqIlIFqtxXY40V7GTadXvj6F63rkJcy\n6KwA68/3Hts9Ftixz0/LncbxhejkkKSj7yr3d+jPSWnwOjmVrh4gI425nr+I\nFpFB\r\n=KRAR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxjVNiPbLp/j0331/1oU9+9zjYHP317a3erw9KfazocAIgcIlcE4zlOKqEnNLPXnzYJky7pzQr70xrk3jr8m8TCg0="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.51.1-next-1617993723-3597223b.0_1617994096014_0.6770165534079269"},"_hasShrinkwrap":false},"2.51.1-next-1617995699-853d78cd.0":{"name":"@xdn/prefetch","version":"2.51.1-next-1617995699-853d78cd.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.51.1-next-1617995699-853d78cd.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.51.1-next-1617995699-853d78cd.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-U1rsdB+3FgoRH3k2Jo1cBFcCDiwM4oTmMtRkimOLVc2h6ce2jKniXdudeiHRy8jsEaKvWYE4OGkNPCkGOPI4XA==","shasum":"6570b00ee414a6dcb9928249e595d5c2783258d4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.51.1-next-1617995699-853d78cd.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcKk/CRA9TVsSAnZWagAAxjMP/AvQUsVWT15FTH69dqlE\n5If55BPQIAXiIVPVTnfAqx/ulw8AYvJeXND9MkxzfnjMGvrzdM3IVXNYFMB8\n+Nn+4XyVfVJFg4UZ1crlyk34ONXddg1aWCsMJG/YxB2Ip1ANZv0qZGDAU/HO\n50/R33Ux1GPgiNgCgDmT/Og/+Yrmot+Z7uFRb3C//pba5TfmOgVYTeqb0CA2\ntxmsbqTmE4yPJ+NYDe0O6aUeEMTbPWUlcz0DKn4xgLV2K/bl3MYmOX4440Co\nhB62guhd2/XyxVSGpaXFR99zEmAtVsiFQX2OpCmWR369+lp38MTM6nRAYLe+\nfnNBs0jQ2nwF2iC/rhcHxWowmMlHHNSXs1MKv5cXOqD9W5lgsqBQ5nN9jN1G\nZO5hVNi6sb45Ui56Lm9T8KdpBKnAWFc+21lKCqGaOfYNtuYNyj6JlLjkopEZ\n+YT4zXwHgp/+webOqASqNZmyVsEANwuRjtxN2dKnh2e8K2lWqbHNSSrzNquO\nzdNsbrd2FxwqQdspblUKKkhEmV97qDf89vzxUvQ+QLfWbWZ/pcBiBtp0tsxm\nKBveTf1qMWmx6ExUELSGe0mrCO2kJHBRDELyAy6Y+efMNFabTKYv/w2jKF84\nSxK7Bv1xtpjEOYyK49QcKdwQFYyayHmlIaYwSCozXo1SlL40PN9T3n+o62lE\n4odV\r\n=rEtk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVvMznYT7LqucTdbPIwkmfn6x9dY+4wR/u1i1wQXYnpAIhAPUcUx2X+d94jWixpBs0kCxvz4N0wRcLXYJBN20ntVRL"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.51.1-next-1617995699-853d78cd.0_1617996095330_0.051535282387708437"},"_hasShrinkwrap":false},"2.52.0":{"name":"@xdn/prefetch","version":"2.52.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.52.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.52.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-NbrHfL66agB12hYo6zJlmJXor0fxCIDr004RVN5J3K8MuLK6wxbysJXdalj65gNasxKzC1buUe7bPFprpizD6Q==","shasum":"96c3f809d9530cc5934186ada772810684280801","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.52.0.tgz","fileCount":56,"unpackedSize":140153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcKo1CRA9TVsSAnZWagAAKQcP/jq+tt5m5G2hQ/vzs42A\n9cvT5dGh8lcP8U22paLuG4zQ820vOhoblNX8v7TnjAf87INTAHTy4CBXwHZD\nDV/guRYQahHj+NGcyl4GFHvevq9Yfakk3DJS6jhjKiJZVbnufVGiQ5pG3UPw\nNserf/ySlU/8h7CKPfiSq9sF8RUFDXG8g30fAuOOGRl4MM8jazH/GgGwJ5Cb\n/BMk+zMKzrTN8AzzaJ6/I0gx55oBij/rslABR6zzJIzAnKNomfd9l5mhqK11\nkONohiX41K6kLr9UWtsvRw9hNTc72Wlsg6zfCNCE0U0ZDCPlOYP3lRPBSNGv\nuGDa4MbSiSLib+5GF6pCLbgkxEoEBdmi+7yQePJU+2hsWARtKG73Ynirh51e\n/Ufyr3qF+PLklnCvXyHxU0ZuLtFU3vX2qWbjs9KMU4YpAp5tHuQ5c1+afDE1\nIzgZUDbNCf023YF19w36MoG4khhDBadToLohnqw+1uv83lg+WMC28G+4vD9W\n7WTcDrnohlJGhInEzYKYYI5sHv+vbfpm0VTTH/A27oK/t0sheMtUWe/eZ4UE\nO34eu9BqYLMZyFqN2OeI0CUZ4kgGDcm1bKK3D6nNBbkV5WGznX1qUOCZhgsJ\nYmgqAejM2eF6XWfi+W75lu6OwQTXWTI5fAi6+J/l7ANRAeI1e7Wl7C85a3hK\n9jCG\r\n=2t+R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMpYCxDzcUnvzKQtWBnjUh97nqFRV2mbTm3ViVKoiXCgIhAOOS60+1kcLBe6+e7EDrRscdkqShQcqb68rZS13yFs+p"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.52.0_1617996340784_0.9151658875141242"},"_hasShrinkwrap":false},"2.52.1-next-1618265595-d6fec356.0":{"name":"@xdn/prefetch","version":"2.52.1-next-1618265595-d6fec356.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.52.1-next-1618265595-d6fec356.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.52.1-next-1618265595-d6fec356.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Bl4VAY1GnIPtnixivlAS+RRMLS830IGh6b4F7GZzDvBmG0ieQkdR5wnd3EBll2Qsfm+sShw3Ehj9Ho7vjdSohA==","shasum":"fe5a3d117b56931ec945ff9f2ac4c523edb48353","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.52.1-next-1618265595-d6fec356.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdMdtCRA9TVsSAnZWagAANlwP/2t6kkP7y01DvY4Zoiii\nqoqzeGIxI/e+GxU6Y4NLe64tsxFaKXKXsb0sOtHwGvUw98du6mgeih6Xk2XC\n1vWRimQm1FMgRb5VoGZ+M57Dhfat89sklXt7fIFtRcfPp64pLQLou/SmVuRE\nA5XYisJ45wm2988djs/xGN4U7oxhgifobS2dtiHUQoxRvk0odhpbpOenUaPh\n7IWGTgxyk7IC78rjg3HfhhiwWSqiAoJzNe5RP62Oj8gUxKiozhV6+2dzn6qH\na/XRs6TTKtvyG/0dW/0NkJzryUVLGw2geHqs/k2XK0YVCi7SJ9plTz29LBKT\nNhw4QwPcROIxjCOd7DtgCHcjBisw2iZ0IKMYh56Nhc2uc2NfTd2vi03BD++q\nMk6zwkdSZJtf7RGXOeTd7TG8/K8eoTpi1ZCWjUe4Gw/RmWm9o2hLGnchyhKK\n7hx7eucPgJs3SPFBdDAe4jTIujdvt0+Emskbsw6lDVGlfY6wRlQUH7TdTl1+\nwpG2FTm/CY9aDB9zSLJWUzxc38omSglGOd63JZoAQPcjaecXj+fmfye7aP+z\nG5tJWy0DHmpXTKQMWJJZjPvXcjf7QaaQf5ICzCmdE64n9iRNd3enWDWdYjBi\nXiZjg+ZXo1+hzKVqrmGCxoRX70AuIRfmKP9THDRrQ2gKWE58nM5OhQyNksqM\nM+v2\r\n=QQLd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBlqmhKHNIY4ih6v5KtTUIHcnNP5vLcpvTHpmKK5Kq46AiEA5Lbqce8j0xEKXofAfyFFy11yfscy4oTwypJp4fR3PbU="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.52.1-next-1618265595-d6fec356.0_1618265964504_0.17379167513363036"},"_hasShrinkwrap":false},"2.52.2-next-1618318667-99b4b1e3.0":{"name":"@xdn/prefetch","version":"2.52.2-next-1618318667-99b4b1e3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.52.2-next-1618318667-99b4b1e3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.52.2-next-1618318667-99b4b1e3.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-hGF4oORxFpLiVyZuY2Wm9wWRqmnRN5fg9REjb3GjyBxgUkYX7qY/3ogxsoLrVIEYjXAXZBMs1saHZV6ruoJcOQ==","shasum":"025d9cec0f6e777e35d0158a1a96aa2eaa614ea4","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.52.2-next-1618318667-99b4b1e3.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdZbhCRA9TVsSAnZWagAA+xsP+wVRZC62U6tstblaZwdP\nnMtHPAao0p/rs5udEqyApKcxKsQ+LvYDtN+B+r2RfO6H9G/hAIlPhpIoPH/f\nHhGdU3RDkoCJMSnA3aBFAgqRAojEdB6KNWhfafRCQqIwTOdYF0mReJGfchAL\nhmDoJoSBdjVwTSXHaTRueTzuAaMb1yDMNXdGOkU528IM4F1726n/FQQiA0uO\nQwngiLBJILMYpDfeXJ0Nvw1VkYE+g4DvTpC2CMvi2mscpoNvDeX2btSjeu9y\n81ViTqfhRn0LNAVc0ewarbavfLuqvSiQHmSle9bRl0Y08zxFqmhO+wGsCBkt\nKWx8Z9lNOmHpoJKjOgzRfbEEE4p2ay5+FnmseNzT/aW0Yh/RzXX5ZGnp5x1M\n8TFkmq3NiSA7wIPMk7PS6aSHF68fsspyAC6vPfLffqYCGhHyffvfFCh3P3Rl\nBv1nyWh/cofmJ93eeLrAJdUsFoovaSqjrA9MPSubyh9nkjuTbZo3VCukxT8d\nTYr1xWugw166IYmhOYh5cSXBNk0K5d9phMWToizVKkCJJt5nF1BXwW7uAZ3s\nfOEepUetvF0yPWBfM63twcgTMRlHWu9BOE9aLLj52fff78VuBn8GrnjqjF3v\nQmXACEV1wZnpmMK7MgJXLpMVLVfeKqjtW+DABAiN1R705WXVG4OLQk2D92eU\nxx6X\r\n=PBBr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA2bIku0M1Yvtvd2Hfxm6jMz1gLXGrc5a76fqKplL7AeAiAWEbMnLxSxsmGQ7OyPUKrVgHnrhm7kdoFA8uClZP2I6g=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.52.2-next-1618318667-99b4b1e3.0_1618319073434_0.7910474032556443"},"_hasShrinkwrap":false},"2.52.2-next-1618321097-c6e888b0.0":{"name":"@xdn/prefetch","version":"2.52.2-next-1618321097-c6e888b0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.52.2-next-1618321097-c6e888b0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.52.2-next-1618321097-c6e888b0.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-eZ3KkUKeT/7uBCwmhu4vye2MtH9qoKNTOlINnFCmGZguqwsoYKaXxpB0u5pUh0qonnSCDjRl6JSutFPbtrUx/Q==","shasum":"8e977170119e57a26e2b8186f6de7d29644422c3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.52.2-next-1618321097-c6e888b0.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdaBHCRA9TVsSAnZWagAAeVsP/30xmhsNBuUnYEWIMjfF\nddhNjoTHWLEDAfmi/vTNeT1HPlypPdlhELFPH8Lbkgpj5ZsU00XCIDF8dutQ\nRXTJ0ENsMhjdoC2N9AkNnzoR701+0IslSOYCU6KDza+xHdkfBIZ/WY/lSqfF\nGtsBnqX+cLRuCn/mWgb+SZoiiCKO5BuNEKi8qhFg70KVKK+d845hTiF62kWZ\n7LtiQM8Xe5jvcVEhzm32Ff5BsWtrAdDE81G8PtlRMDzUj4fE1KLUlo9k2TxY\nSi7qRKa8jXkpRR6c3sCz6C4R3MIuik5+VMla/c+zaSDgkHvZbH5Do5BXvWnH\nHFvj8eWsHpY/XPy8OsnWvtMvdQ3w502yyOCRavJ9SR/STRL82GIE5DAfTSc6\nbE8Bov6iHb9BPProllmTT2I4Mn8manncFCzxSEFR3iVOH0JrqkIg12rB/+L2\nzaNIBSY1aY2u57VAhjRte8iedqOdO+YZD9yNmurmNmp98RdS/BzMYGLh6CN2\ny/vW8E3Aw8+z5K7kmKhjrQ4hB50uDNuM1IfznExJw0F3tq85YAtR6l1VVMm7\nRfuBtmvQeA7fDFv8LKmX8SI7fdF/9JBBAMnD9sKRp7M2UuWMIYk9nkM3yEzz\nVSai4sfBRZ4Afk9JfbskhNN43qKtXVk+VhLEZJ7cW0WEbKDyopOnt/OJ8E4P\nAxkX\r\n=sLGh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHTOpA+OnuL6oS1+6esBJaCQtD88yIl/A1xlCXQQb1QKAiAtwZK6tzMGENIqrZ4kpb2evkPByYk5JVToQfJafQyiMQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.52.2-next-1618321097-c6e888b0.0_1618321478654_0.8769116109587729"},"_hasShrinkwrap":false},"2.52.2-next-1618323417-454fc51c.0":{"name":"@xdn/prefetch","version":"2.52.2-next-1618323417-454fc51c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.52.2-next-1618323417-454fc51c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.52.2-next-1618323417-454fc51c.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-3YTUGKFnj16HHT5/Bn5ytgtzLP2mtPkFVR2P4WnNIUWL+U2PaJPA9IMLyhyjOnMewEqkIHC2F5Jl+6JWiVwutw==","shasum":"457bba935254c89ee09e411198f463971c27b115","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.52.2-next-1618323417-454fc51c.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdalUCRA9TVsSAnZWagAAV9wQAINFidlI0vNOBjv3mjoo\nXKbUrgTKm967pqCGzYsgCASiuk5/vUo+pu+WkToC9K+9hY9+/CI1gXPOpoxR\npO9roc39DKJscgnp5DTUQC383fHbNkTuDWYFYcypQhl5xp4BJeK9bFp/pO3b\nZUaZHFo5fO8M8Td4FR0knQ4NHNRCL6qfhN5YV9WuIz79JgGWvhTOIfzSJlT5\n8V7ZwWQozO4UWNyJSnngCfcqEAIjrDmfOnJ47x9r7O7gZ21oh3bIKiMMSrM0\nVhsk9szczA27BT6d1Rxp3WrV5/4NZklWYJGtil+qWgMD8W1P/0sUtEbje0+9\nh880OlBE5KlpYBV8eopwBKQ/d+0aPjLiIWqX2OBrjNBUYG6+6AI35UyQkVNb\nhp5hDJyeI0rR/xK8S50uhjSI+5m/39D0tfybh2Ylj6DWoLT8C/qFOMYWD6uJ\n8Au/jUE6kI7V0ZH36XCxMM59NVws9otLBgcwkuhrU1o2WL9AyfHdUqnymk6H\nf6m6tD3bp4tkSQz6msh6RoIpiQRfkL0/EboAM4ceS7vm0r+FikeOyczcGpWZ\nAHm2JShCNSaDxAjlNma2tMsEb3vQ/EP7XWmb8s564FwJulVk8GXJb2+rxlDS\nKyDYQDd6EFWH78G1XAKHMy1XqXxi8VvPEFbpUMukKxby42ermibO3NKaEZ1T\ngtfW\r\n=fTXy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUrlcvoH89/sdojOBblQS2K2w45laaEZpKVPjRTm47ewIgF0sTDs7UW/Ww8DaQfIxYz/FXvDzGd62rCyQ6Kpmj9wk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.52.2-next-1618323417-454fc51c.0_1618323796408_0.40935995914014733"},"_hasShrinkwrap":false},"2.52.2-next-1618325175-822bdc4b.0":{"name":"@xdn/prefetch","version":"2.52.2-next-1618325175-822bdc4b.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.52.2-next-1618325175-822bdc4b.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.52.2-next-1618325175-822bdc4b.0","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2manKt7caPhUnUm7fthtjpXvyIOsLf+6qPRw5gSj040M2OTbb5D+L1PdgM+J7/1FPngixYksRsiFljSaqduL7w==","shasum":"a628e79e574231c5864441dfb100adf3398fc148","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.52.2-next-1618325175-822bdc4b.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgda/xCRA9TVsSAnZWagAAIJcP/iuPQ9LRS0MpM8FLTcb4\nkyriSHmiREaKbtmqEkl9MmRIPtc/v46NQ6kApNxOU8LbcUKpGrKT+0TiJvm3\n2CdUOVLh0FXpccrKfdINXhlcxiaE448pRCi9mE+APMQkDiN/TB7LnGkLCCuD\nLaMja/aQ12Abni7MyFQnFeAcdLGjRAfPkp7ZoTRh5DIFZ0N34UcSihHTEUiU\nvAmClhXWABMPAAPeLatPvRSQB571IllmNr7lQaY4Tfb9kAkjISZsIX9yMQKW\nrm17f1161dubgOnsJTLH5bd62mETSaxp4l99Kohn9eMbE0ZH0LYLeOilACZP\nayHjcff6JxFW8OECh8FpMIc9WLxPo9H2IxbIRuE4gxAWA3FA95arNDOwiG5W\nWriYWoWFDcXaXhnmVyT6In+AEeCFN6Jg6KWLWRitusgCT3IVOP5JNGpgMZOa\nPSalkO1ozkDOloda7QHMgdd8B/wJCAQMcrvityIISFoCb4KljgdKaX8PYVO0\ni9Z+nsYjiPtIDRRiKaqj0Px/0PddMmpBLtsUe8T/uoKGnZK6A1YldxekZddb\nAWZSRw02Ydt1cLGu5NyiYR9y1Y8wb8y0zGokGPo5AAO0lGHpA8dIdJwser8B\nzOOWUTsLJ0dIovTjcgqQP0chJENUYRKcZ7IJEXaF6k/QMtU/5QJUgYcLLl0e\nH3ye\r\n=fklW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQdppQifRNyFI8Sk455LyVCwWkRfGr312i7tMez+FObQIgEASglXql8jkRPZge/lKARkdVmEcNm5sE5yeLJW0C1hk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.52.2-next-1618325175-822bdc4b.0_1618325488836_0.27386129570723483"},"_hasShrinkwrap":false},"2.52.1":{"name":"@xdn/prefetch","version":"2.52.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.52.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.52.1","_nodeVersion":"12.22.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2kTuTvQruYHnvoGi/tKbwf2MWKtm5saolegMvWGYGzzszw7lEc/1aJ5ARHfyMgy9+aLPDSd5jeZUU4xNjsPaxQ==","shasum":"59aaaa12922d72f4cf07ee3d491f8a603c31ccbf","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.52.1.tgz","fileCount":56,"unpackedSize":140153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdehzCRA9TVsSAnZWagAAEmUP/Ajh9LryKtQNezPx3udz\n93E9St8jJeG2Z85aMWSsLgCyDcTer+JjWFL0ehtorpUfvfeGw07EqvWvMr2K\nSgoyhbMws7YeZjuQb4kueIGXUuuCaMoZ2qK4pD778yZo1ZYfv3hrD6TGN2wt\ne8gfEmKdO7oNnnEeCB3izl9nSzmhvtrZT5A95NKBwQ/g/frRMOO3xecWIxUM\nx+sTd58QJsQIQpeAOGh/OvTk3SOS2JJU8Q22wampoF0F0InCnohHvC0fiYmR\nLQEs542mUQtHrAMUdi9Vitx2foG5SE8OkAekg6ndybf3/y/zSzcs3ZZEpBVS\ntlWWFEGd4V9a6JSptm5Hxs+pXAX2M41fueJH+pOqnKqw3UNYq1Ldg/cv0VSq\nQcWI5OHfwsivRHJDNgPypqo/pu69sYTLW/29PbvIHBE0J+KQEF2XJmuU3Ctt\n03tc27vOb51f2xocRoJahRlPl7unYAM6T98ewNt48VptbnWiBMgjyT+UPG8L\nlIbX8pbHRENFne1uTtVaMZHHOjO+hYz841EWRFKkq6/ypj6NE0F+P5JvEWRZ\nTxxN3T/4rLJaUJ5oRDkDMlLY4zbXsiOzjOaVMNyNb21Q824EpZt7a3HrXwkG\nRKQex9mY3xbKYJK40wV0QdTDvFOrq0uB+QJzx0wdULy+a0tSGKLLYdvIwJ1l\nvakw\r\n=FLdx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICf+SEzsxmfsT3uix9YKrpxob7VdDVJEeNkCFCeIvJ2UAiEAluw0m1KYV9xDp1U5E2OSwRp9L9GMm+KBYJUnP10/N6Y="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.52.1_1618339954531_0.0738050603668785"},"_hasShrinkwrap":false},"2.52.2-next-1618850702-9d69cb4f.0":{"name":"@xdn/prefetch","version":"2.52.2-next-1618850702-9d69cb4f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.52.2-next-1618850702-9d69cb4f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.52.2-next-1618850702-9d69cb4f.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-NqPwxMXum+iL+XlKAY+Mftghbf9VUV90HeFR/mWDALXbvvut4wPiH3rIvnZBFww1FYQ6Wo4A7hLE2oAcRxWklg==","shasum":"02a27d82aedac8117e15b5e744c2419e2ba7b66d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.52.2-next-1618850702-9d69cb4f.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfbULCRA9TVsSAnZWagAAxwgP/RT92D5zT95i9Y77Rdw5\n5nNiF+OE9cEuKAHn3wj/C6+eIytgiNb6Ae/ji6cw9XQbDL0PEgukj68Kp9Ew\nc9uFccH94Uv9hoHYkBtg7tJB3n/nbW4oM3W/4cj0lPFn8+dtTvKuimnApS2w\nJdscg1uSoE6Uhw4o1UbKNq0C2VZHQxqJAe4hkqLDCSGCHsGF2A/6tRF4puWU\nmAUxLoNOx9kFMSfBuOaSbIqQR8MX9NJkuhw0lhCjDT+die09mLZdHlV9gust\nVr6VJHcxyc55GYd6Gt8rtNC7px748N6Jb/FdEuwGdlcvxKi1IGtyMMM413ku\nA5AoHs/FusDmldu8fFBAzq97T2PHa5QE8QLL9eH46kyt2qqNXbwV+rOkDHMa\nirsCaa+3IqAfQ95WIocBicY4wLslpyk64ZZ/I6hOri4sbdNusgGwGgZWK4bM\nn1h4pyj1bR/0kk+WUvQH+hYvdeX1fyg+1aD7yoTqbp4nvgzom0JK+stqI70p\nzg141FXNJhxBrOb3hanKLklP9km/0ocvWAGLLjfjjiVPPCOcsztV8cegOn92\nUQWsyEYXC/gi5BYBW8a4DpiF79z/DZe8BRq/zctwdui63Qfe2K5AzESUiZvk\nwikwTUg1TPOI9FN7QS9ySL2wyAhqcoCg2v2xV7GzjYR3Ffv5Cw3AMqwl1vkQ\nCXvA\r\n=H5gl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFlMcWeC3cXBEqy3yP3Z08nkH2o3G2uOKLtqFuhGpvKHAiBcAJUcDg6N5gykvu35ZIobPSyQGCd4ivTcMAmsxFMZPQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.52.2-next-1618850702-9d69cb4f.0_1618851083065_0.1682908256866158"},"_hasShrinkwrap":false},"2.52.2-next-1619105866-24c93b60.0":{"name":"@xdn/prefetch","version":"2.52.2-next-1619105866-24c93b60.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.52.2-next-1619105866-24c93b60.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.52.2-next-1619105866-24c93b60.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-7/eTp31O5w87FCDqH1pCPgbQP7cgdZQnhFZIdpv869QxRysPp38Da4sRc1plnmQ+bmd08TDgTrwDk3f/uusq3A==","shasum":"2a5fec87e2f1187efbcab0a150f54aeacedd94cd","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.52.2-next-1619105866-24c93b60.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggZmkCRA9TVsSAnZWagAAhtkP/1seH6NMc/TmdALB5voJ\nLuReVCfkCE8R6wHL3HlCrG9uU1vcw3R7rtJW+Q6rCd+YCLroxtnDX0ws9in7\nCtmvg2AQLo8+GNQwiM3z0fr2r42FfTYLZheGmPZAPvPVpNZiu/T9GckV4Zg6\n8kYQHJZ8dxuQ1jatSwJIeBoAhijz+BzsftBCTABeTBPu+ss8PGzjPytYG68Q\n9725f1PR9f11ljyg36pIjkGtoLaclE3PI1zeagN40RBgbmkZQVmOKLXPSP4X\nt10yqasx+/JJahPpT0TcAOgk9126g0KTlOp0oy6v8hObryNI0kRqgyA+2Ggu\n1oBnLoEDZpXlJganZrUXpBZIQj0QPaNQFb9tdqLB6kLtKvxYiKsNJEYKx8rR\nDOHnGj683G50P2+F2YdejIWCkF69Qn0OGhfQJF9hFKr7equLMDgZTel7aeAD\nZIg2QsorIg8Dl6Ho47on/sit4A7AZU8XsX0wLeRdc5HJ8DUSvTFaUQ/URstw\no5JlIxuWfdNbY3EOBkQa724zCGn5hCUh8oUH1vM6s6YGxh6qyETioKtQ6EoL\nf3N/ucHoRGtCoNY6p1yHL7fkj6bV1qTulji4OIzokdqxXBkvll6VegczFwKx\nSh59/WpTSuALZoUhubZXSrt2iVt6fNNdI2HfL/hA0VAPetKfSTI2LQ4aY+5r\nW88s\r\n=hlbz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCypFkjtL4h4U7FPaDeBt+MjIE7sXueAl0QYXtaBPO9PgIgagNqwJgMo3x2t1GsEaJutzEL1n4L6LAPxeK/v4OAS2g="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.52.2-next-1619105866-24c93b60.0_1619106212456_0.841916958147044"},"_hasShrinkwrap":false},"2.53.1-next-1619106141-0d6fc28e.0":{"name":"@xdn/prefetch","version":"2.53.1-next-1619106141-0d6fc28e.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.1-next-1619106141-0d6fc28e.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.1-next-1619106141-0d6fc28e.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-oezIkQzkZzlcThhzPm+9w4BBVkPUhYO7FhOjWFN8eYVatY9KRIHjHjjYgYxHs36ACkAg3UNp50RwEGwrMRMIHQ==","shasum":"6348a14f1759fe414b314738561ea0f8c8578847","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.1-next-1619106141-0d6fc28e.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggZr/CRA9TVsSAnZWagAAgDYP/ROXSgxoRC4GA6nQiQGM\nxhLEivB0ViDH3k09RPBUBrhv+jda40i68k0cXrc/IoCW84yNeUZwImBI1dr6\nHwUTGzA+MHfdWRN+ijygKo8d4mP5jN3LuMv28Mlr9KcgoNbs8Th6+7wPcoLK\nNQrmfoOrnaY1Del//wz23JLchonMe+ZLZEe+u3E4a053c/7fopkedvdKE8If\n/YhdRsMPtve0PrZyW2QO0n+Wa8sqAvmO6kcuJoWU1WwrEaL+HGeJMiigXVld\nFNXQb1kwCLfFE72ogjGNDRTDcTtQWsCE+dPCz/ZrLDlUfccTcjgbGO09qBzW\nHMMM8hTbrVIZVykKXZDyj/hBxCpSATjj8zMbnPlf1PS32puMB9vAO8/0M6gr\nqYfoNzglMTnuAZvqXeqABX1NiHvnZ//1TrHvMXaUXjSiu4l0/I+rwFp6dkyn\nfwlQWyHvki6XaFU+mbTEdq/VxpNRYqySc42tSk7ceLWnybTHSPMKdWECpP7o\ng2d5GGr1WP9P8P2Y5I5TcfWP9lWH8/kUijLhw/zyvjdBGm91xN6i2SLChTsw\nOqyCPOVRfy4K9leFZjvGl55/IzejAgsZ/oDW/ONeUQ4Fqe7/WOa9DKPtGZNC\nn9uu28FsrLi0IoTA+KFq0ACk/zZ3VIos+s/e6b3uQha9odrGJznTqfLMtW0v\n0e9m\r\n=jm2a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOMtqWOjLexQGE9p8SqEg8H3DOaR8NKpn/RRCOUUgNagIhAM5xPhiX7h4EboS62btGwgQOeS60ACc4G0rV+YOxtAOv"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.1-next-1619106141-0d6fc28e.0_1619106558973_0.9335419770076272"},"_hasShrinkwrap":false},"2.53.0":{"name":"@xdn/prefetch","version":"2.53.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.53.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-5Ve2bU+IOS/JNfU/3SN8C3P3X+u4ffEx4ay240F7cCFwCy8U+Cj/VxncZBN0CHdF+ELjp82pVtosa7fhxoObig==","shasum":"45398e8fefb36377ccf2f25e07df6b305f4378aa","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.0.tgz","fileCount":56,"unpackedSize":140153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggcMUCRA9TVsSAnZWagAA8EwQAJihdu2cgHUpDoPwxMgb\n2vUDEy37kpZYnrtAZYpdsq+OpINT4ibt8kndfBW73WzCgrP2FAesMMKIv0QE\nHk9zz+VngGkwm0rxdsK/vLKGy0Qh0f4XwVo8mByxAYtyUp7CCZe2hG5bjLVC\n0ZW89VWtJiKsEyBsAbDrXYTYj2JYBtJAVbTBYvJqGDOe542tv6bXfqlwIOyr\nk81AM7mfGjqPaVcpQcdV1MsBjkiSk5vzxdkhDSWY8v3TZD4MWZ0hrXuORLsG\nJliFgVk1vnmtAjTnobr0ega0YauWuyPKKWFGKTGnI/DnyB+rmkmJT+czLCE7\nrbqFKXPcIGnrctaucb90LdKptz7hFXR5ftZXUIRtuS/80JoJfcOnBJJ+sQPd\nWUMkp15RTSPWzZR95FEsOWfuefYTNtKyNJxqeWdTS+WDqD6zCqwhOZEWK+M5\nl6qCgJSYATDUQkRPc+TBJHS//cWd/J/zfFGfLXRww0M6GsdBM9L9b4Xn3LCR\nJBp4ryno6SLaYhpdGAFBa1IDIiuabhEk4XBe+bZOcw9aRypkL/tAa6RRPllF\nexuHVEqfkiJVvFXG0u+qKr3oWOboMJOXnVKyy44wyrfGzh0tJ2Tag9GUJaSi\n6fddChnZM67PP9KF5602Ju6kaM7a/ZLrQ3fr70HpNl+6mBFmZATwguMxtepV\nYJ/n\r\n=xjHB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICaE3QizSO9TH0igQ9y4S/LYxDfR7WvP0KyKEPqc7+ZUAiEAqgHc98c03lmW8zsGTVaf13EXvHerXJ2NRH6RpAuV7xc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.0_1619116819750_0.5134789744571118"},"_hasShrinkwrap":false},"2.53.1-next-1619464206-faf15ae3.0":{"name":"@xdn/prefetch","version":"2.53.1-next-1619464206-faf15ae3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.1-next-1619464206-faf15ae3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.1-next-1619464206-faf15ae3.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-cJbyyBUnzeZ31DyHIOrvq9tpt6UikuqyW18NI+pdiBIjKOKTmNfLd0LbEYJgrJ0VM8Fm/wgBgTAaaqJM2iXLug==","shasum":"2f0923bfb12b98c9c1ad8b7f51ebee4b7c6116b7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.1-next-1619464206-faf15ae3.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghxGWCRA9TVsSAnZWagAA5C4QAI0N28YoFyVugpSwbvr4\nqH8k6xhw8OHsOofkjLyAFyrDegYsRmwpr0iWb6lEDbU/Khim0vG0OnJp3vjA\nRWz0wDVLe/NGzsbE0pJDqXsHBCdHro6fv3tSpNJxON8f+nwOCR3XEnGiBMpY\nEWyykpTIISSZ6fRfetCcWyR5YkXI8U10cyWM9Cn1FUDpQWic1abhbbxLdxEI\nK3rHpg6SnrJkEqnztYW9fE0mYIIQzvKSdMoDMCGCNxEkFKYdUrOYiXbawqye\n98u7bYxILJ2vjfmqb1kxWmycAYSOcOPAJXI9nbnI9aav4V/BhIjR1XXOZppy\nVyv8DcpcsSCRxemenWPDdYX07N6itVhBt1G6hd3yx0tGqIHofTzA81b5CvCF\n5nrKEML1NbKGt/o2nbY/5HnoIQ6ahem64DWWw6QKtMmPhUESvkDiaBY3N2bp\nkEwaGkuqQgDacW7lix8n61rd+abSsP7cpWmwokN8mg/xkKe3joyE3sfkAE2B\nqz4GbHEGnxG9oSZjSgfT7m3k9hdEm8/0VF1CyXE0dldz3VhQ5UWu6IfwWeJ2\np0s00axibbI7Wc+RsRvOPWpITw96UK84hVAAoFtSD9792JVLz81LUZZN6y7i\n6LXrEDst2lI7ptxBXjaptqREAWUqKugxVROwaCH2hpPeWRuFfCszWfIUC92d\nMedH\r\n=Fd96\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG9jMBMKqJVQ4L/tkI7TTQYD0oHHMz/NN7tClDjxyePiAiBsSVVGHTF2/0Iz80rlDj2/0SySARgv2HTR2SK8KxVPiw=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.1-next-1619464206-faf15ae3.0_1619464597585_0.38782880579377754"},"_hasShrinkwrap":false},"2.53.1-next-1619540720-3d071adc.0":{"name":"@xdn/prefetch","version":"2.53.1-next-1619540720-3d071adc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.1-next-1619540720-3d071adc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.1-next-1619540720-3d071adc.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-I217HGKy24AqjIznUc8g/9ienUfZ0N9r/2YSoeGO1Aj2PuXm/KR3R74i86p9D99YEV2hGu6rGQcm516PzkYniw==","shasum":"cc8e0e9a531c93146c87129321c1c0e9f825db66","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.1-next-1619540720-3d071adc.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiDx6CRA9TVsSAnZWagAA3XMP/1FIUWlrz6yrbOVhLxta\nLdFHOMqiytpDYB4Hosr3OsQ5tTAN0ttPVs3/7vuhV+8OsmyAFys5BOUEXspV\npWet49LsddAIh5GaTcBIXs1tzo1+0evBpoOz35Jcxckfce1lGuF6wSBwqXqX\nAXVuHHxQm4G/Nwrw5qZRnLG3rB8DDX9AnRgKttwH44kLayW2SvQhw9+dEvOj\nXrMdktZBCSk88mNXL4Aka3DJ61LW3GnOl23kCSgDiHvFTiWq3Ur7TzBmDECu\n2IFwvhsOWaEA5o2jbhU9CMjzg/rnXOlApzgEZazPKnRndCzXWN4T2Lo4ArHv\nZXDpY4e9itPZE7E6+OvZpgThPKZuc7ejfNMEWe92YdIOnAgI/b2L4qWv8oQA\ndKF1DuqiDQFIRvhbzb838/7qzyo+Y30zQoEGqSldF/MAsQuo7glzlt3C7xEy\nOQX+OrHmA1412yFRpPT1hwtZoAGWC5sJwpVLiLy0fsiRPVL7kFxpGLjC1d+l\nsxD/ULZ3csD07mXAiMVksbGyYjqX0IH8hjmD6auMIOGXW0NRKH6f6as6J25v\nvFDaoF70pkdDxKWcAviIVtxTMTu6W2yVWSZkgS5WhIvSwYxme5y1f5Un5hH/\nU37Gw4l0dxDZGP8mzpcqimW1s2/jOpHXbfgJJOBaw27LbtfQ3rvbKuhnRr2g\nes5a\r\n=LqoY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHEgOsZG/+Pl4W745WDapqBgnED9HmEn9PmfW0U+t2MJAiA+vWhmDoXop/XnYDC3/60NaUG61cNoilsV7PV9Om60mg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.1-next-1619540720-3d071adc.0_1619541114239_0.5776927975423924"},"_hasShrinkwrap":false},"2.53.1-next-1619542274-3d071adc.0":{"name":"@xdn/prefetch","version":"2.53.1-next-1619542274-3d071adc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.1-next-1619542274-3d071adc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.1-next-1619542274-3d071adc.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-q5i7aKzd361tYuxNzMgvnB1MQ2WD5Uq3fuacMlPGVKcVU12sDHqLadJtYfC9zrHGMaMFDfUwllUEPjP/eS6iFg==","shasum":"fd42221a2cb2a13eb028a782d932ae152f0590c0","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.1-next-1619542274-3d071adc.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiEJsCRA9TVsSAnZWagAAFZAP/jQ3kv5EwQCPvDQ6Uw3a\nDru//kfd+tTxeo2cYqHlPanvzQ3HIFfXMj17NfXy7GRxq9mZouugsOHtGv3K\nsLctJmtB2brGvlPAsdTsm5rXDeHcsHWOU8IV9Pw1e+YfzOpQDCHnr8M5reA0\n5i7dp1OqZ2pE8qxVxhp3X5YGMfUiqqVHZ9eaSWuHbiHrA4/7sAQEJD9URI8w\niR/buVLjme9R6/90p3inoJPpaUhAvu6bz0/uuBrKYAzI1pMy4xR7COknpp2P\nat3/wfCHydSkZQFiVGOxID4kTnRrX1FxF+LgDUvruX0kl3ow1G9yyn0heiRg\n2UlqrivktMudoCCKe3RCYvVZvjiiV0ECdYLZmz7OpSiMgLiPb24SuluTFqQ3\n+V7qQyqO1MN/s2yBA/WoGo/PW/ALDoKcB65RdxdLPe27MbwMJwqepn94IRLm\nIATZrw5ed7UGvv+hraUMDs1NXOgfqxad306v/s0NfP8I4kxjWX/qW4JiD7sS\n3hrV3EoLqL9bzAa87DWSs8QAZYItTCnK3k4HwxyGtL2ds2iXd410n2RKXKhF\n19YEbyV1kDqQgJID7FYVjPKzQdC26i+FsjAIUHaC1saZFtpwt92fPOvaQrci\nU8/H7V4j7VQLb9p35o5o+hE2WIdTnVgJt/nQJnyjm1FTgezcH4lURLgTggbL\n8yxb\r\n=Prlw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAu8d6+yJRIYXyUyvLp2sosH1mWt+DOOcHHWGobs6kyAIgZlH06DXZGDG8owunmt0qPrJXc+5FklONp1Jo9X3+Cw8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.1-next-1619542274-3d071adc.0_1619542636039_0.3905804236050332"},"_hasShrinkwrap":false},"2.53.1-next-1619542806-88e8b9e7.0":{"name":"@xdn/prefetch","version":"2.53.1-next-1619542806-88e8b9e7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.1-next-1619542806-88e8b9e7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.1-next-1619542806-88e8b9e7.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Lyod8jG6mWPHQMn5x1bJOeltO6kx6CWVLcQxVkSPxqOAYExOm0LuGQhs1P70kq2mUctw00Da25V1dTd7jDEwFg==","shasum":"1ddd7cf6e42d106bb1f27b0949dc9b027a04edac","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.1-next-1619542806-88e8b9e7.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiESUCRA9TVsSAnZWagAAm5QP/i1lXyqCuAY2V7PW3EkO\nRwCaDRW6KRrVFMj5M5zeHIYB1glKliuJy1+iAaavNBDyjehzgME46L0jUzIk\nZYWCS12cyN3dPyG37BofeUhOR6GaIEB/V4Af1e+uBYiHzQER6XVpQ83JH6z5\n8hcs/poXsAJgM43+RuYWr9zX2lFe/qrwkKsITIpOhFuWhe25sS9Z1jED1bTe\nRW+COi/aABp8/BMDJ7Suqk9i6v4lPHU8XmVLo2ZG9ygcfJPMxCdCTo2zWpVV\ndvlfPYf4KpqKalgWi082yHZrS6Hs7mAK7TgEUTDJKslSuMMujo3U1H4D1Y4b\nBbHljNMDuMNQuVGnoq33KBowgHZHjTdoPOiE0ZNIWvApnflhRsFDgo7wuYHj\nyDKqG0ItjyL69KwILbIaRSdv4oN++YK+EikH31ep38AUsQQ/gPIE+wLyVdUF\nLlKkXY+cmWS+aPPzneef5z3usSuOt0p7fzlDBYvNJKvMnKNPcMh2DM7kIiIy\nc+pr1DuMMOM/GcGKN8SdQJDTcWY/nRMFRPYea6pt6ujLWZH20RL3zCNVpjt3\nwX4iWvgTfP5nHt8huFqw4t5Qg3f2oVL0voESkywBcKQGZjXsX3APyE9Jtx++\n6+p+hMkiP0YWLOwqT5WqbodAp77o8qexQ1287i4Rm+lcEqZ8df1iuwxdvK2i\nPAqT\r\n=HxiK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOoIPapaeCuZVz3KLxIARD2GnV0t63RAuZg3BUzK8q7AiEA7EgIxQ0+RD1oHt8Jk+3OqFmECxUORAnjxSz1lZZW3HQ="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.1-next-1619542806-88e8b9e7.0_1619543188132_0.3745236489440731"},"_hasShrinkwrap":false},"2.53.1-next-1619542820-88e8b9e7.0":{"name":"@xdn/prefetch","version":"2.53.1-next-1619542820-88e8b9e7.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.1-next-1619542820-88e8b9e7.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.1-next-1619542820-88e8b9e7.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-dzsbd57Mr4Hdwb2LZJv9W0VD2rgBZhj26vxbnkyKTt4MEzWKLUWVN+/72wJuYwcI8Xcybvu9pe/wBuKBM9TTMA==","shasum":"f8d7109da4937ac07746aaa3adbe62c814b0453b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.1-next-1619542820-88e8b9e7.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiEStCRA9TVsSAnZWagAAK6oP/jcHez5fiknRagCTtBNB\nR6M4St3urP29vw4niJt+0vx/NOFOtVfBsH0D7TCZXpuH3uWlTpa3CkwJg/0I\nb9CcMtLvFsjLjLjE93QJ9k3uRvKHN6YTxNyqv/ug5uA/u7m+KbYjmJ89Zx2j\ngM7CLcPvdh2erFyxOjyXF0Agrbj72lxjgaqRNjTHsMW3MIakOreoNNUx08lL\nij8RNgAMB7pPeU80fkxi4OCNtrFiwJ4s0C6OwQUPEHOe27ZvEqf8bLY0XGEi\nQMtv34KLbI2hKrjdaBjl72qmNbJ9eyXTn0Bc/t1n7+hR57Tvy0W+mfjxHZf2\nISSjM7ZeB+0fXSpsu6VJyf+tTPdvpf0fIiGeFzNQo8CFSm0JFSOgqD+QS5Kd\nN5mnlyXTw6SfsW3+7JAywKxfKjYfJwr4TH6kK5aBiVfooE2YQJq5QTsL8349\nWDd6J5HCyr/2t/+hXKyd9Gnw4PwwIMEYnkE7V/gxdQ1p49Is6+pF+dOwDVD+\nkkuiaxm77wp9rhWliKDSusZERdYcpkS2OG5EVSfCTy5N5SP1cu+lnUkEa8uG\nSC5dqJ04Sw+yHg/1zcR3O/wJGQxWWhtWYbk6gOj5QxSJTjOVFpNCImzMSmNR\nKmdHhTOQLILCk6hxPWBkeD/6qsCOIDihscXt0Bc3I64iADeLOFin5jvEu+gB\nF4r8\r\n=pis0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIy8oKHfgjmak3DgYu8QH4XvFYrU1o0eYhnsrc0adlMgIhANI9NxL1fZqRCrN3SA2bl19P10oKFRstt0T0AA+j99fd"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.1-next-1619542820-88e8b9e7.0_1619543212710_0.19213193726051414"},"_hasShrinkwrap":false},"2.53.1-next-1619617676-4c97bfbe.0":{"name":"@xdn/prefetch","version":"2.53.1-next-1619617676-4c97bfbe.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.1-next-1619617676-4c97bfbe.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.1-next-1619617676-4c97bfbe.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-kZ2PN1SCT3rDvaY5DRhzaqKllQMVyUiAduVeCSwPQC8B48WOhj1iQT+6bNwTYGcFShULKqNqL/v8kcMhBG1rZA==","shasum":"1ea19b5490325d39f327b9dba7bcb9e444148d9e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.1-next-1619617676-4c97bfbe.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiWkHCRA9TVsSAnZWagAApIkP/3TbLXJVtl9QxJijIZKW\nvSC9JrVXazZZgitY0EhTwF4cr5ijbepk4C59ZIj90Ugur2aFzXAgCejZwWbF\nfU8pajlXILbqAE7pF3jwEgxTLzAlkHB70byZDsIUhjKVF1Hs01O+kcVcHWLj\nNX22qwPO+PxDtzepL9lNQeUZZL91JsmX+moPjNdtn6ee2tISeEtll0arfjnR\nTRt5gQovCoy9RU46NbyEpxd4OczFoUxsRQq/3BR1wInEeFT5PvRuMDxJC24e\n7AsRcd5wLUkrlUAnkUI1ez+NG4NfQgw1O7bso4wtLY9coq6GZt3BqKx5BB7A\nKHkSsDeVSSw3qAZu8KgpaBsXWcx2oVkFTt+5PYpwKfg17MNdjjlobKSNA4JQ\nF/LrgFKdg8FWu15UIlecVMLnE174J2Yp37Obu3+akEXY6nO2dodpEay+JP6i\nUFqtoq9jrh7W9doU14F9K+mw96rUqwnrSV4jbw4oNeD3tP3xZq1WFaAQwyE2\nXIRWX/OFLTnLrsSVKRCU3zE5Bv/2hXGOX+ftNP4ImEhQKlmTFUdH48GWxeag\ntfQ/YdX+SL+6yQxN2Z/RY1k8SGRjjpoKH8TiPyORq+yw+8qlyXFI7XGlaOcu\nLgCZYNCDY3VHYPgmEg1dFAWeWL51i6a6s6xtp6nzEBDvP3DqDjKwBk2uhxYc\nIIlo\r\n=yp/5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFGkjvWJ0rjZSwQqD2tUjIn8x+BXrq0D9QiNxOka3ungAiEA6dgBMcZ1quuUJXHLEj0/ZIXFDpqPq4pDfGhOFREuMZM="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.1-next-1619617676-4c97bfbe.0_1619618055263_0.7126909772491015"},"_hasShrinkwrap":false},"2.53.1-next-1619623418-f6d00416.0":{"name":"@xdn/prefetch","version":"2.53.1-next-1619623418-f6d00416.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.1-next-1619623418-f6d00416.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.1-next-1619623418-f6d00416.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Ck6+tB/NUxyU4I+D0EQcJ9ghVT4hIC3oP8kfDMVjpjnlqLv8IPHjMUdTLE2d1xQdm/uMqDVnR5jE1ATJnIDQ9A==","shasum":"ab7e64f4f762106c3a20be657d12b81eda520234","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.1-next-1619623418-f6d00416.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiX98CRA9TVsSAnZWagAAYPYP/3p4dA6etYztZxhQheYf\nW9J6AGdLL8IYrcim/Zf+3LUTGs/EcbZhK7XApxDQV9C8YcwgER/TV9kEcVbR\nUMnJKl4JfXZNqxakEHY7xYWb1gcg6C6v1N3NF3DtlNOGShsfH0ALDRiNQiqT\nDoyMVfxsJbq5IvRxRNWW1FEr+2V+1ekNYj2Dty4ACZp9aHG/6OZof/hoOUFB\nfsPL1BrDTwlN91m48F9dDR8SOqTRe56X2Nlq7iYKXQGF9xMgoqrJym4wT/oE\no0ULgEU0luxaGanUjExR2tIYDoZa7pWD1osMB97uxDlkoRExhQV0YwqtDkVK\nuiCk0h6RqEQMmBmiFIIIzZDQCnP0Et3sMPJ7pfFdaZ2gIrsnFbjAQWbPYCT4\nXDvTI8rwOm0bN7Z5cWLxKHlMod/cj4/PT2Z6Dbzsf2QOW8pxr1a3rMdHhOw0\nCDZ/jW+e23MRYIvoouu2PRsdugrUtBztfTxjOv3RuIXz4n51DHVqNeq0Oeuo\nWNSCHX26wOhWGLJOf13ZPKbiq2anLu0ALVv/iCGuirlCjEkNFBBmm8/CBTRw\nZmyP8CZVGQ6kybABd7jdl7RhziX/gC0pnhja+5lZDGHdNRCiny3rtlOwiQ0T\nvZoH5cQ61+8i0Za3HYV7LCNj6r2l/KR22FSSMYW1xry5b/EMgRfTuxXjzLKV\nLFxo\r\n=WPYF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICM9uSDaSs+T/y9ne4dKedvazLc2+tpqNdSgCY0dQyJ5AiEA0d0TJQLy6JIVIV3WOSpHtX4wbO4De/bCvGGBqDOSCCY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.1-next-1619623418-f6d00416.0_1619623804363_0.08980869566853067"},"_hasShrinkwrap":false},"2.53.2-next-1619623598-3c4e1679.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1619623598-3c4e1679.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1619623598-3c4e1679.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1619623598-3c4e1679.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-OM6x6kHLfh1LdMP1dRkpBfO1GKQPGaFv7WhGePDHF6JBc9S+UInmIVRX1Ef/oRqMTTS0V/yWsft19ojGXo6cdQ==","shasum":"4534542e8cc569ed69102c5abaf3338a5744e72e","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1619623598-3c4e1679.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiYA4CRA9TVsSAnZWagAALAwQAKBxJtszc9w8X1tuG1t6\nmaWBUfKNv6SVNDpnjCjg4yevk3TBjQ6d2EfHHVn+HJiUbjtdth0tD6zTuQrc\nfJ1bb7BAYSWSKdBl+DbX3zTatxyAVCtwAesl9Te4GQAihRxbG2FOYOBoSZyM\nQrE0n9IYDI/40akST8LQ+w5qWCfp3Yk150pI/+wpAqPNjo+xxEfFW+T/nQe7\nwk0AA+/263E1YQZbuVWFbEP/1i9rBnQJbbHCiY+tUADVoVRYqwl0rn/c5ERx\n8F6S12F/uSZ2IcpVbEEAFusK8xYzRhpT+FBL4BL1xAWqQVYtbsgaGLMv3Ryu\ng322JCUz50Lipetx0gNK4cxZsVyd5pkPBUSlHERNQHOpZ/n9D3Gh4dmG7Jjg\n56oNZsGtS5eAX84TL5jR3WcS2IL0m2YiY2huEc8t3YY2dVJ9wJ+novaPFk7L\ns9rN+k29eU2pMvggYMCMawBDwswVxS+JJ1Mg6utVNvlEIE7PkzphSfKMgQE6\nmxLXaggfwllozW5MW4NZVDN0EnckteAsifJ9O3L+F/ygmsQGWoErRkqUmFux\n4iCOJ5dbPGAZ14ODW6GQtmFedXC0CnheObUSNPOXLWSlfmcRriFGuwAxaics\niCvoYPimVvEhD6+vzjJivSSVz/SM9xVXQMxqJ8iZTBimVw5Z4xGrNQ6k5xZx\nk1E0\r\n=cK4S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGhrnlyrlhBiOj8F7K/QdaJ+PBUTNPpYbR90alVUgZ17AiEAy1JAkTKGwu3EbHRl9NtUv8pr1jMMREJ8OQUWIYA8Syw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1619623598-3c4e1679.0_1619623992378_0.9327373339322571"},"_hasShrinkwrap":false},"2.53.2-next-1619624498-dae4ff11.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1619624498-dae4ff11.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1619624498-dae4ff11.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1619624498-dae4ff11.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-aaBwvEWgTB61wKEZSwzwSMpC5CMhKxlhZDf0IbVa4qwQfJ3S9FJNTLM7RBwKhDRc15zzLDYetfnuK62yJ4uGoQ==","shasum":"fa2340dc7e3e330a07964a8b5252ff8c09bc159d","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1619624498-dae4ff11.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiYPCCRA9TVsSAnZWagAAiOYP/RyKEJmWzQauLTMCJ/lK\nx1aJ1Gi5R1YTE1Xu3JDxYxNTeWFeJtFxx6EFIL7Gz1gBxL20iW5N53u1/ny3\nJX/BqpKkgILMVk3dwwCX9vA+pDUe3b34qTthNIy2awI5F/X0fnCB1MsmaTIR\nYSSmstf0kIOfrgu9xXooaI9kJDFDBf7SolTApfufiueBUCGLaynxsLwbqKmj\n+RrtfxyF1UZYZRNajn1N4I/z4lplD3x9lUpu9cSVTgzYA3UjFNVA/Lfk3g2w\nkJPPEjNyT2WBoPc9JyiRbGaVsZwog1co0jD+mLmLPjfEN3SqcOZWYH/l6YD8\nws1cHRH688sFTnAOExbDxv2LBDPvHbki5lL2qGCpcn8gMKEa3vouqzXc4vFv\nC2MlEC4MD0ppl0XhtejV1BebSdhX0PdlL1NZT16dV5GL+C7Ye4MrHjgIJA5o\nqAA55Angsy1H06iS30vn65QBmzNygUnOo4mC/88RreEDiqQ+rq/DKBLM85XX\n2lZLBi3Z7ybK+swNU0vbBCKhhfm0+vfpBvpuszimLDYRCFcLDvEfoEKuqNNT\noSgBQVc97U+gWrLR2jLLVB9JNzVRvZ0T8yfYIVKw8FM0IRexBMqd0dGawDjc\nKBXW4tTQEC1AtDTr/KF8miD3go5rHJok1M64M43hsJOUYct7ES05YmlGveiE\nmVbr\r\n=Erha\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6i9dH8LfohSk47JfA6IPgCDcz0Sz6wpuTUVsgIoiHJwIhAPSt8axolCleBQ3u8STsckOdICXSAvl4sQFc44akdAOY"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1619624498-dae4ff11.0_1619624897751_0.9331128326981639"},"_hasShrinkwrap":false},"2.53.1":{"name":"@xdn/prefetch","version":"2.53.1","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.1","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.53.1","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-EZu6/2VgdmEtnKx8h7KoWGYV1F7dRp3HOV/NbJss5+gZ0gnonYDM9X1pPzlCOoNtTPdJ+Uj8AmAZq1e2B53y2w==","shasum":"2c66648eb783c9efb79b99a716439d29d293d50b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.1.tgz","fileCount":56,"unpackedSize":140153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiYQWCRA9TVsSAnZWagAAhqUP/RY0ipi1iVlmp+1D8FiK\ngPqCh5WCWi3AamvGeBP3ZtOz7gfCkz+lS99Plq5dtA+pJGIdE7J23Vl94im5\ncAYan9iY6xGlAufCzoTVFv/pS/Y24sjllUYbK6RRR5IL0yjYw/AshkpEYgT8\nqMG1htneGYKhV8mdh7hMc4+w+1K5tP0u2obcaYfFOUmBdqM+YStqHFpstKtD\nnIIONPZdZLQc2UQOwiL2VIMit7Zzu/jOsKtA5/jDfz0HciIPAeMIAN4P4gHe\n2bSgorJ3HOfF9vs81JzkWaDPW5ZiWAWa4BKWsmbkA2r3RAdXV9ff2lh7yGCH\npJttyTwMclGB1N0MA82m1j5By4u1ZbRYaFyug4YeW/brKCFRMH1sNebD++/v\nzsi8oU22cQnQ7ey/fZUAZCpaSwmoNio7WcIck7PiGw0+n1qyNUEmWODHKORW\nQPPPfC6Bj3RmnxBMVHUKmPHdOoE4HxGLTryhI8EfqPY3aNGzmR+Nn8g4/mmy\nQ638NKOD7S+df85umaJjK7sJcdK19/cfXzYT4D4BeMQo7wSb1F2ryN1juFTm\nPx4AKIyw0MSDwLwF2JcWkwQ25eZPaoYP8C3O1WL7/VYx7cGi4mNWVNyYEQwt\n/bfnV1d7itD0hDLb/N1qfKs3+PqBbh//szifBOccdE7D0GhYoaGDz/R1g/A/\n/hke\r\n=p72Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWqjOZ//fnaOS+dvmRSCiEVAo16PDyAO1JGcXjMYXclgIhAI5IQ5xFayc8dYPyjIl+LrBxCYkp04nkIL3CIyBl+hCg"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.1_1619624981923_0.3672854826562606"},"_hasShrinkwrap":false},"2.53.2-next-1619705672-24a3a19a.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1619705672-24a3a19a.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1619705672-24a3a19a.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1619705672-24a3a19a.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-0uJn3JWklxGvj/Mq0cxGk4Jw/ljRMBZk9jE55gq9OuVTqPeZL3RecCkcailD18TfAe8oGSO6eKongEts2K3WGQ==","shasum":"e164897202d126a6e80e01e63f1d06bb42bf9b10","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1619705672-24a3a19a.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgisDKCRA9TVsSAnZWagAAIYIP/3xAZXasOrJMEfZ+T0MT\nR7nLEALzxQXFeESFktRLQEHzPXXPY+aYtQpIOnyJ0KqhFeaxiE1sBbF4+ssm\nfAWHqIvKQEcuaIA15mHI3S2sj7tLFNIguaw/RdJitPuym+9NBNbb2gz8MT0l\nfIwuT7tt2dzWjqdLniyDg2FqlsLY5LJ8+LfQfsY7dtGiirp3bWj+tFfrCpLr\n7ddGC+VlhxAxBtv7Qf7z7CSxESu+Gh6/Oe2ENmSAk7zQOnPhE+8zXpF1XSUq\nLddjb/RmArPr7M4wWZu1QtWOItlAjuywAgDLJ7H0Hj3oZ77FGdaFxrO+wcRc\nXy0UOPZrJalfq9migPr0tEOXZ0vxu/+mQ8bCtZag+Ht6VgikVV/X7Zm9ZyAL\nv2RtLntDJYGc1+1k7+1kKZFjHw+ZpMA5Bp4RB7ZP6wXpSrDUVVvSqG8BiNXX\nQBy4nWUf28zaJOxLF5bKjbipPrKgnhDpkIIc2qbfgrsXEZuowEP9xv/NfxeJ\niYxs2usr0eDUcv0t4hQsb+/qPAPI9CL6bJCv5F1puVn4IAiBdoa6A9bAamKS\niHmBhtQy+eKT+Dhy0YmuxOUS1BYAhEYcQhD+doDWikdTXkROPnoKgXNTdq9K\nhXSNPpN7MejOqsXYBv/lNE9ZwFnlHyc/KY7O87/DdZS4Vsp6CqsxR7N+WNzF\nONbJ\r\n=ts38\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChp7C5OHUbgtI1ZaEodmPHAWUoOK2SI8DfzTZ/XE92uAiEAsAH79Va15BF7VbIlGDluVhKMCOv2nIF+wn0bJFFeNe8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1619705672-24a3a19a.0_1619706058383_0.3909155193871148"},"_hasShrinkwrap":false},"2.53.2-next-1620132361-2fba7526.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1620132361-2fba7526.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1620132361-2fba7526.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1620132361-2fba7526.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-LJToY+kmknKk54/5KqlBAYZYiXqBa7YKOeMxKRfz4Qmn1RMPD2yA6+pc9YxxCOWICfF/LNyQruV1lV272RPaBA==","shasum":"dc53113f06ed13d2fa681f79a924132af071480f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1620132361-2fba7526.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkUObCRA9TVsSAnZWagAA4j0P/2nAKLiYS+j3hlokC9LR\nfxoCq02sTXDtz793C+zqYLS5VraPHwB0lXnz/zQxlHMxqGEJaPvaWdbwVEwK\nTsE7Omrip6g2iF/UMxtkxqGjQSMCfEjRHTMf/oigtr6iU1tSEFuX2Vns15MY\n38z6ms/ZLonnvvbuy2Z7RIv491MMrEzObt0oVqAzZzZO1l12TcS90IptWF7S\nfNNHaOwhg92Qj/diTUVTFPSG6LlzaqOx+2Ihg3ZSrP1rByl9KGFfb2sJNwO6\nhYKjEjTfQWJRPbYROE0oKc3iGTK8yOlQ2GCzFCNFtJrgircWECazSykdzWWR\nC92Fvn1EOz3g4LgFWZhBkbG+wTDJJ/nq1tPIt3K7JIasaMKTR1i2/L6eZEcQ\nlJcwk78Hi48UeK3bZ60682Dp04tB/0dRj1iKO+OvCG1Yg33A0920f+wJrsSM\ncK4Eo57LW1sfao8p3OQdbEc2GtqMwS8IsHN+FnytV3jVIzVZPKci9OXdZ0Gz\n+4ojMKz0huSjte99WcXkpOgi3KLG8J7SJFrzpgXrY7AmMq8nbIPjDSat86KT\nB7vn2gVR5LRvmI+OT324CyW0oot94x/MwWgzrysEzQ6W2ZZdx16E4wXfsds5\nAkj+1XEbpYDTGRiZtGECX7zngxu5BKD71wJAWaRbOz6/XnwdXXfJTpaZa6UV\nm+W4\r\n=RiYw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICRyN7Rl/0VfMS0kxN2MXF7f7TJv5wsOSc43NGkl+8/3AiEAvXC8xzV41tfhFrv4ef91BoZVk37rdzQaVV4HjlpnflI="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1620132361-2fba7526.0_1620132762634_0.18056001277846012"},"_hasShrinkwrap":false},"2.53.2-next-1620855510-f3286a4f.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1620855510-f3286a4f.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1620855510-f3286a4f.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1620855510-f3286a4f.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-2BbA0T2//bwsJyVeG4S2IG/1cI1cY3ZQw4CiScwnZ1n4Dh9Tr0PN6iz5wbCUEQDbOKeekIsWGdUaz6xrwxRhmg==","shasum":"040d0042e4f046d9be232bb7316e57e46cb930ba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1620855510-f3286a4f.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnEx6CRA9TVsSAnZWagAA5kYQAIZcXDLsjN5b+FhJ4+3t\nZYVfXc7nqaTIJxqxCspgkxzbcdr5llFF9mjqlN7z38dLuDRiPx+tT73YSzRE\nf0YsmAbNSreCMokm/yLw0WEpQjjC1sMT51HDgs2y+4I+5L34jgb0X3yMBzd0\nk8kzM4tQ3h8+IRQpqFLtnM8ITdREXR8ZmrObq3hJSgMrJjI1ZNSnaHUuWmxR\nX/UOfzvKBUHB3hlfhCwXNjVH8eJkjelx98WLVS15iveMMpEXyUFrvgo6K2Yc\nHjWFzsScs+wdwhHgr+7DbEQdo6KDsXxRYmlLKhPRvttL08vvIxGDBty9zNTU\nVw6aUQ/Pda6DMY3mAj+JbQGKQETHzJRcGgPydtnqf7ZMcNOUqUF6s2OTXDk8\nMM1n4BP+CDhBgIO0o2w3fD80RQoG46J0Alax8UyvFf3OlaBfZaSqjx6Ij/s5\n8kPg2PBGh42htb4Dn4btYGlXa1rVgWmz0JEiO/kT+cgLSJHVKVQAR7LCOuAY\nd5LSuNc8YhFjp4GhbOynxALJkLiiUHhrMmuaJaqiHljJ4TQXSZt/bhGLaO+o\nqmD9RVzi9H2MKB9uc6P+61cZnLfZWPlEdvU1ry9YWfUNzwbpNfihVapoOAlb\nNuAIOBFhNgpqubdV3KZTCaPQo8lhKBtGHlSy9YzsiYA7pK+R9QJixhCPAliW\nYM4W\r\n=fQpP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHhoWAwvlnQ5VySK4B+CY/X/kmWDFLUI30nWLPrxB8JMAiEA/K5fvCd6qijXRIeVG5ZMBHRKGG0X6WAmlWSssQEMUHE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1620855510-f3286a4f.0_1620855930350_0.021419729719989622"},"_hasShrinkwrap":false},"2.53.2-next-1621351277-d5810a41.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1621351277-d5810a41.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1621351277-d5810a41.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1621351277-d5810a41.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-iOrzEFmo1Gan/BjulDKQJpZv1Ahn6QaaoxirFp4gLfiucxWL4YzJgVRg0ErPJuiZzMabO3xiok8/6BwFTzv1JA==","shasum":"8d4f310aab138779d8df104b7be8e36e7f2480b3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1621351277-d5810a41.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo90gCRA9TVsSAnZWagAAkScQAKIZ9HCyHm/0svQGkOiY\nOoYDPPu0HXcSGOf1GSsWRuy19XU+WF3Z3HMkjCOJ78evTgiOi3Z9hOIPXA0S\nAZjYYnTQqRzy1vzNOxaqFZsEPmivuWimGyRVSIwdlgz4cddR80VZBqu5UMtS\nZyV+hW+A8J8Ngxz1ixLFe5+qeDY6L72JaVGQEGl5hATDy1OIfW1oEI26Qm+D\nEr5epPkV9XgHm4ljgY5UiOAOBJOfYt8695XD2zmBKdryypieejXqYnGLpYP9\nzjocyaIRxLJM21D1jbt8iTxRd9GgV+iGpWL/qaNEu1OhfEoh/LhCOyYxZiEI\nKgs1bYEbo1KWhlUmz6hf2m7bdpqH55zfbilfrQw6J+Zo2bozAF26t977vn7s\nxmNn7zdE78pVN9XOqA5TnJSP+EwjsyxXNRA2G3ZqgD6lFZQXhpfEpXVvTWAj\nZ2cp+Y6YzUNll1BwhBKjXKPMYDaWyqecwd019eD6oTcxbGKAYOaMhF3PDPjE\nLj3iVlYwFO4QpscnonxcH2uArbW/1gORXlaxwgCUJtBtAhYshfE2kYD3C+O1\n8UgjUrdwxG7/I6ufV4/orOaQsalS1Ik6SrTlR3FwxjO/JsW3pM+tZk4uMANf\nlhY1xMOnhiD0Ywhf2yh2sNRVEfND7X1CE4WcDyQn0AHnqkGHCgzrxYT79iWh\nbt29\r\n=HFx9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjoB8X1jfg2LydZQWN0T0JYHWjRkYM27JXcOmqkA1RkwIgCR5nrjIgBqlnd4ghVFg6UBWsj0/wRNKl13om2+Ftp88="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1621351277-d5810a41.0_1621351712071_0.31010512876325813"},"_hasShrinkwrap":false},"2.53.2-next-1621351811-799dd11c.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1621351811-799dd11c.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1621351811-799dd11c.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1621351811-799dd11c.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-sWIBaN7YDAd+cOMsibuRyRdal/YGKwkEoC4FfNzCVoKna8fzhkdi4mpvaczNth6aWjC/Kx+S78jLdk0QmZb/xw==","shasum":"6e10de38956c4d1815ae54a5328807f932929c40","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1621351811-799dd11c.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo970CRA9TVsSAnZWagAAk00QAJ3/rlwfyZU1zo47AJjR\nvd1neBJCRbolT4oYftu6nQwproPuzuqQOjx7dl6QhCrxgOcVD6o3kQTB0DOO\nr0sl/qUNtt/ABtg2vuL5yeR22ZZx6soS9UH1j/k13099wGDTAP65fNoEW/UA\nh7Z8t8AOZyyStUBeE9oaqVWBPqXo20XDEdCV8wdHg0DV80T4YGlRGURjZPHx\nTH6g/kEb1raMJe5A7l4NjI13yhkfcltciv6v1QmUiJmuOlhqOmf4y1TladV6\nDT1C3WP597sAYHPBf0kyT+MNUFi2EVUNgD08XbeEniJLReuwUfGXw93pd7Fo\nlREmEDR9gBIPXYoP62iobT0oNdQfe8edrHiKCVdZdCe7CIdpg5ubYcPwNV08\nPj2Mt9oGheJPCq8N1qXaSK4E3MUDE0W9PsroRynsOgZXxfu1VfhWumoj1ARD\nNjXzpPSgaBDdL6rQPlBdhW0D/beXqEXTAK7fIVEKm1MHMDbLCAlsq7cWfxiO\n8lyAE7V9HEuCf/CGrujmCCZw5DLqc94Rd+y/50j7/RTPBRvDDfwcgC1TZhdV\n+Jc1Pwr58RsdmMQQQb7apnFzd9I8dtZcuMzo33sUV1GgzwoF1j80Jb6U0kHT\nP4GesS2uNQ58sT4KC2BHvWqOVuL7tfInVCmYguXUdXoFKgBjwic4oLXHNxwT\nSvP8\r\n=m8kc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFSsDdoFEUUcAEyyCzoU6HAzc3FntiEaUfBRY/SYTO9vAiAE7bH1SE8ctIkMZ60/eh/dqw+hi34l3QGnBmihINJHqA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1621351811-799dd11c.0_1621352180087_0.20565925816169317"},"_hasShrinkwrap":false},"2.53.2-next-1621354332-7167b821.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1621354332-7167b821.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1621354332-7167b821.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1621354332-7167b821.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-yAMsL6Ab1Hz2nxVgp2E4sw1VmLxxwRk+Wkv0BvIpGOtmbjXS0ek3TSAmb6KBSJcPyZMK9c59r/wpMa/kGSCu3g==","shasum":"92515e32db06b0e4f9c11660f49e5995233d0007","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1621354332-7167b821.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo+jeCRA9TVsSAnZWagAAQvUP/1gXOz7tY0NQ6nYtD+fI\nP47Z7OmYoAADZ3Ow0FzFq/Y6TLBKWaysZbzrRoFS00k/ROFFtgKG3gVwtPxc\nd2/KQg9z0gF6ayETKOBOEcZWF3Wcxrv9pSX3P04AuJGFxDvg8DmNeTPYqSNy\njl7XGK02OH2c/j3N0SRjvVJaJ7t+XmEJRmjfb3LId4Fmk4cJ9w8TAxvqZOue\n/qCwVXTCItE32tpUQgaoCj/APYeejgSFNl6iawNi+d1fh/azc/mETa0f0riF\naCKBAyb+4JoFl7DmbK4RAzGQyY5PLxOHoSezOhLRqePbRk10bgdrJFlc4yEV\nO+tBB6CrX7lqTt+zAMb+fkW4YHoAIo1c8ODGy/7lgw5km6O1KLB9t4yZ2d01\nBI8eBRezKZPCnC8J0DSfYVnMewbRXjO/KoR6lseiuwsU1XOJOqIi2kAyW9AH\ncTcwSgn8r3RsVLOa2JNio7F/ZJ+xjngxS3c68OZFwmU+KO4hPXCfkie4I7aS\nlpo0mACBKaEKgvzJ1sQ/WXyJBRxxFHVqlwt5WHjBF2X8ESIFVhJ2q7LKIAFu\n0TlIIAzv/YS2e5HwFEKryekPwgWTImrKxxJ0sVi2lLB42lz2DuqUpaWkFDsL\nhU2yO5MfenF3P25Z//LcqXHjcNRNDiZUsJJod/PLWqQ9QtTcogbVdkLQ6cmJ\nZM0j\r\n=Z7OT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBF0Xj1hV0zL7rwqXJ622v5o9oglSuWz39N/2HS/5aKpAiB4BJ9khK+cLr9/iMR48r2B9ai7Cm1kWvXlvxQNwySICg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1621354332-7167b821.0_1621354717881_0.8452135375957894"},"_hasShrinkwrap":false},"2.53.2-next-1621354385-bd6852c3.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1621354385-bd6852c3.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1621354385-bd6852c3.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1621354385-bd6852c3.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-VvxyL19lF2u7qqCAnkaFRbZZ48rNDZ81WN6GXZPpm9cq4TMTjyeSoqA2YeJo9ZyBb7sFU7wlsl4PHtmwRCNWkA==","shasum":"77444dbc04842dbc19aada63bb867fbf309b97c8","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1621354385-bd6852c3.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo+j+CRA9TVsSAnZWagAAjXAP/2C6q9wb73PVYWHvExP8\npOujl+ncYUilgLk+crMQKTk3S6bnR5Ec4C/uB37s18DK2sZOpi3VhKDwN9t/\njhfDuPFPgYAUT6BBod6AQBm+gfDmeAbmT+lPhND7olH0q9Dcap1xEnUdem1+\nIZrKmxGtUZWO/KjJOhS44mKVGh+KG1FvCHh3KGRV69aWzhv6YhhsKxf0xb76\n4cYnbfQeEtzIDd4d/XxvRfOnbsu7MTdKu+dXShefYJRSQQ8mmXkgwgDAcMAq\nksnvwlHKw3iH86tlNy63tBQLbmozNKqdu1WoSByp6shFKB8NUEABA/VMTfZk\nRyLFN1cfO9CwqL2HlOKwVeK5y4WzOqTMi9lLbk/68MW6M1rawMFQjs8682VI\nD6TqXueOikHS4e5q6r98IYMYiRU9kAexEr66nyx3AGCCmnY28GyiInpvwgd0\n7dsEwtpSPBQSIW9NPm0bsgqdnEHUyLj3lb7CJ9mDMZSjC6fUFtEIC4Rtrlwl\n2oF/ObDEr/BIVbZANLoubuYRZDOPcgtnwgTyxPg7jLXXeyRrNVmZhA57BqDc\nT4uHZpXVU+rnn+E5QcwdgKi8RrGdKm3aw6krE1I9B052sqpnIr/Erx3ImGa/\nAVuyNtJXO8qTnms9jwX5Z8TEZtOzoIvWWHDI5VHgrpA1emm0Ppfa0dRWX94F\nnTUA\r\n=wvNp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGPOKBIbpTkds91EsJQ84hjUZxn2wXuFwNNLTkG/SH4+AiBr0YzQU1/4fAM0ho+xFWATnDVyJtfz5DR0cO4haOJ8BQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1621354385-bd6852c3.0_1621354750372_0.13875291195145012"},"_hasShrinkwrap":false},"2.53.2-next-1621355238-dbfeccb2.0":{"name":"@xdn/prefetch","version":"2.53.2-next-1621355238-dbfeccb2.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2-next-1621355238-dbfeccb2.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.2-next-1621355238-dbfeccb2.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-/8xbPQWPnINJUAk5Jp1zFKCHfVPDEwgkT0bQrxmCCt1koglugL7rZ17MAVUBpl98NrhiUXCdSoOybZjRXTLX0w==","shasum":"1be15d1c2212310f659277eba8233854bd096e90","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2-next-1621355238-dbfeccb2.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo+w0CRA9TVsSAnZWagAA5gQP/i3/XTpyGHZ3+Nel39/y\n0Senj346vlUoRaDRif1ZOjZI7Hx4adYjbooETTXaesmf0IYVMJHl1u/BqFDO\nmj/ADO5DKdkCBG6hTRKM7aOcFnLRZ9NSD2QywO2cKfyvbts+rqMjej+lAg8k\nj9Y53mLdBb/i3I77kZ5Cz+N6n1v4Tdf+8KaY+dS8TyRI5U2QUP8U+yBe/TV8\ntlBEjeF33X3Xso/USgLhTfA1rlqr8eb+uw67OFaOEliLgVWz+WfSgyArfH01\n+L89NH1rguqWVd05V9X15NNJ4dVnV/BOWa66jP6QT8rM4L4s90ffDlCObJMb\n1ca/iDYe4f9VzANIDzMunfxJ48ZiMPF+TqXkc7kQ1HPmV6YAiAfHFKWW7wlc\nv3BChAFsMnyIdxBfzjxUBP86xcksFvJKQJ17gfR8nlFZOYFAMLV7Q3TK88Td\nwKTnV3ZH19Da4QE3qL9i20Pk2POwEVyZ52HhKiYA9vgde/HFBa34Zz02GleZ\n9n6/FC17PCssHVJOVA6z45HB461wT0tSa6sCVo3aE4dY1Vrx3OAiGeTUtim4\nOFdj3wLsOmXx6Vffke7eE06czGJDiZzjdULlaGeNL/S//7hqRBX+5oSg8INp\nhmjFjkQttCcp09EYnNgCGmy6SUN/TGgFH4e2XFk8mIB+TX95DDGhoyU87xeM\nIAzT\r\n=p6cT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBO9RLDEq5Fs8x/kMaeLBsv0Vbj3FDNMkO3U3SZ8C/7tAiEAjv49Bm/LcKJ4xhYD6kcG52k0AOxllZOp8b3Le4cTib8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2-next-1621355238-dbfeccb2.0_1621355572204_0.9412581416030148"},"_hasShrinkwrap":false},"2.53.3-next-1621357960-a977e461.0":{"name":"@xdn/prefetch","version":"2.53.3-next-1621357960-a977e461.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.3-next-1621357960-a977e461.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.3-next-1621357960-a977e461.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-iy582cnZzYMa9DDhcXhuyy301GgyFI++i++i1iSyWViG4HCPe4fk0s7i4uik5SYCmjlGoCZTXGmsFbWErBCRcw==","shasum":"bc2abb3b4be89ba045ed2e0af36e2aa74fdd710f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.3-next-1621357960-a977e461.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo/cTCRA9TVsSAnZWagAAha4P/ieG447TYN+MxdF+LZuC\n5TFCJkjJSBbnR7Uqt5zmVTv1fQd7vpG4wr/GFQWgkpGa48A4jM62HbPSjAQM\n1MDLUQlOU9WMzMmmanyJxpqdB2/L3w34+sFc6orU2jNQoSNCSqExRepE6etm\n+nTBgH5M/uu1BCciqdLl0UgeRoRU14hYF3Bl94ipGJyBsIMLLrQWyA8EJlZF\nMlZua+eTdRqE5N9di496oEzpJJ8CiWpCe3K6LCZm67ePBJCiuG3Anu5wJFSG\nQHUWRzu75OELuP9JWEqoaActoTboSXIe4fVgrX3UkxgHSHkrvSxXGtzTpIM7\nUfHH9++5c1ELkbNKX3V+O942k9yZmVQ8lMB0+oGDHXuipy6H1f7tASiAdues\nZ/8X0cwK1w9ia84Xh1uqyD7nT/uuYAP60P+KzApbPIkZ83XXIZfGt2LlCSAE\n7mNQgjqJhHQeKIrWwSIKeTXsnfLG3832Xhj+8O9WtdMM/TFJ5ajXKulSDgkF\nvUaZWkPfnnL4n9HASZRRcwSsL/YV2a2VCYX9ColKQNhPzOF3F8R65+cSkNvS\nM967Qfd6FWr9zmXI9sg/UwrMSQhdsrAFJD6OqwHTUmcHrY29JEbJIt35Ma7t\nzGKNjoVgPzzvSsXDMXnXFpwLGZF/C1eWoEFkIeo0AVvKy1BTNdpVuctWkU0/\n7UrK\r\n=xnEH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHvYcd+Ub/5kxOtRawU8fbThqFSPO2TFpkuBUZ6eGNAqAiEA+KMsCAd3Z5bBhPykXbjAP5oI9LD/mzd7uLwbaft0BFw="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.3-next-1621357960-a977e461.0_1621358355026_0.45896413758363996"},"_hasShrinkwrap":false},"2.53.2":{"name":"@xdn/prefetch","version":"2.53.2","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.2","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.53.2","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-8PSGu5CgvdyIqTAMtVvWLBsJ/qeNdjtTR4pPBK+QckyIrHD+wHYSZ1+wRDbPcaGsoR4BLP3CJybESkfzW2NkWw==","shasum":"7864f890c98f2135931a2685b60257019f7d1732","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.2.tgz","fileCount":56,"unpackedSize":140153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo/etCRA9TVsSAnZWagAAkTkP/j8USCh0cIlgQZ6FyH5+\nST1OUrW9vuiauhUMqNcnzwuLf8urMrkwwDhxDJuiRbIFPH59sdpY2hkF70Ud\niL/q6usdz0k7yS5HR5kgoqkKanOQibxQk1GoQQEDClPfhD/OTilCSk4T8pug\nbxZu24Ojc25nYG1Qsx3KDfDFN9O8qwHSSDGDZxNFE/J6rvtO658bXL0WHTS7\nXR02RzgCEQ2sz9vSyo47bbCC8K1CtJxAiecL0Ta1CZJGQr0YYQCX746NVPxk\nq4tVfB8ZInEgHVDEaQ3UJ7uSo1sBvl23MVJQnNhp+eDtocwECFqz11sMzdPe\npIby4/R0S7zKRjPk++Fgn7zQvcfmZskEqwGGXiC2V3mtUQAKBJIBuTSiK1aN\nDSenrg606uRnxOiu6ug4EiOphYTsDNwvb+jS+hw00xX2rnUlp/ggls25AHpP\n54pUVjVj1CrN8LtldIeqrxkcFY2TmkffT1E/BE0+7Ldngqjtyff0D516CyZQ\nwUBuO/geBAUgUDvbfyPO9hWbpdVn5ylEn66BtdCgTfXmTV9FcpN4Yp3bj2zW\n1Z14172AeIA7p7nyobLFuMJduqT6ZtMzNqqkkEJKv1QOzi2nIO/M89Ws6Ovk\ncwv6qVwVJATO8bArKQ9kf3zo52q3XJNK3wTQNiXfP3PA1rcIUMZZF1CASQXc\nAJXS\r\n=XrFM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDj2BkQrT2ODb7lt1p/tEvhgLp8FzarBm2EWcfJ7ZDFFwIhANyqEVNHpTHem5LZY1PbC+/tRpDKLEwqj7PPuX6YV7gk"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.2_1621358507239_0.28066981497249266"},"_hasShrinkwrap":false},"2.53.3-next-1622643955-ef88dadf.0":{"name":"@xdn/prefetch","version":"2.53.3-next-1622643955-ef88dadf.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.3-next-1622643955-ef88dadf.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.3-next-1622643955-ef88dadf.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Dr1BSQ1/ewhJfTvL4C0Hz5CdQ4uCVwq7QiCnxJ7288BoHB1Do80TqwY1BxCml+TIAmuqhlzqPXJ1ABmIEX98AQ==","shasum":"86d0ad29acb498a1b4433ffef252eae47d12e77f","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.3-next-1622643955-ef88dadf.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt5aYCRA9TVsSAnZWagAAYWgP+wfJkZ7/ccDEgAw9c5VV\nsgNvM47JAF7Td1R3rn4CxMUyGczyB0tyEwEaFH+VdsGHCtgho84lSkm5OI7h\nTSnT6adB9fUPYhzHFW1QvtqeGsMWniphfJ6RDg855otx+nzEil4zoFVthgYl\ns8kx+0ru4iuBd/7L3y1PGj9/Kffh7GN3w+3LHn3Q+QazU5GY+F2wEqw3JoVR\nTqSMZTcrcRSk7axsrw7m9375CWQATHa43Kuh6103JDu5dsJ/FNT1Zw7iOuq7\n3yHp6kFWFVXM7W6wjZvufE7NmOBy5aLcCdDkzN9sqYSQlnB5I/xAGf+uZKPB\nXGLFWyurwLQANOtZaYx64gIXkTWHXuUrynXzj5GbYD4Bi9yisP/FyfBR23ED\nHVgBodRE9pHxaufWiYsALUxOGmdXl6psLCF535ZNANL2vuUQYQWfA5Jvz+qM\nuWNajevLepDzxC4x9jLWJjd8MDNFQoIH/E4o/2sA8Wvq5Bf5mDJFrHaCvLkx\nb7mnneuebtANCqg14sdrnc/75UUVzMQR4RzJAIQ85V22PoITsr5xJ9HV4JPe\nGYygu329Plu309Q2UToO5+L3FAAo9dK8Z5c+WBftVvmgSiLTZ3Kt9bnr0AdR\nnIDq0CXrAyn24Lo51Tml0nix/PsaNmlxo9bGTEOWZBBdf5x/1T5D46svJnSZ\nrmVq\r\n=vKe1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8zdsJRwQdzHjVtOz+tAYSpE79Pwd4c7E4mkLBcm7wEQIgLjxkdpsZMBnibl9u2o3Zx58qct6mmRt9ARFdbUYjNS8="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.3-next-1622643955-ef88dadf.0_1622644376046_0.1369288385710059"},"_hasShrinkwrap":false},"2.53.3-next-1622645710-3100daaa.0":{"name":"@xdn/prefetch","version":"2.53.3-next-1622645710-3100daaa.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.3-next-1622645710-3100daaa.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.3-next-1622645710-3100daaa.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-ea4rNba/cSTS9yyCf3jjXhKyu6jsSzpApvlLmMNcnIEg57xEO40Wudt/K3wPHwsdRaYyuxeG4OlAYQSpWEEoCQ==","shasum":"695ddecb0133c82cc91093f8b2cfe62d4bd6a66b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.3-next-1622645710-3100daaa.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt50xCRA9TVsSAnZWagAAMawP/RMnvNij1QgB6XoCX7dZ\n79Nlzbh/l0Cr06i5cpku+U98fsuswTKDZdRXjl2Q/xzTXVvUb2FzSAEh6VD9\nhKqp7vwSXmZUVP/LkX5IBM30mCVEBixSd/4Jt1XRaxlkJM4M0Uwaow2f+BYd\n5NmtWfeFGtd6C58GJ+BEejd+hMYmI8LU0MAjDCn6moj2q5HTpfy0BZ5r7284\nqTdiqUCX5vhl8ab4oY9PkwsLu1sMur6eT1DDkH+XbrnQrn/gI35PxBrUD9qe\nlkzR9oeE5ryy9uU0yjQH3kP0i7hDmT399b4mdEXEehYDRLqqy4qtH0VZxetL\nQm/qvJF8SwY+oEQZg26vtyTLmQeRkI6WSo5Jl3gYy6+GYz/rwPg9omCxXbO/\nANsX9WEGYASdGHFzlpco1VnJGn6LOQZ7vlCRt+TeI67z3T1c+/90NCP/zEYz\nQJFh5KQ/IsYmA29koCEinQdNUgAWhOHWCJXFz00ke6PgAqefUrHZwny9X6co\ngHhR+hB36s2zE2rSTyyVft+XKdpTnQzzc+YuvlYt09UXx+TfkngTbj7xNo1b\nPwU1dcFYY220nFILOPHMq4z5OJHBvsvH182k6wtsYA7iGpSbvpw/qTduVvZY\nQlViqfTShgTGG9jkGHFvf1tK9ZmN0cFBcz4MxGFOx06AG9Y2LmUCn9QSMuqn\nHSw+\r\n=eDyN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBUKSCPcSoG0+Gf9oBZxYVy/K6yLQy/XPcLxT11Zi1s1AiApo30F2rwVDgD/d7j+EGCovzzHfKPnPlhh1jinqva76A=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.3-next-1622645710-3100daaa.0_1622646065238_0.9545829745363221"},"_hasShrinkwrap":false},"2.53.4-next-1622645785-8c316968.0":{"name":"@xdn/prefetch","version":"2.53.4-next-1622645785-8c316968.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.4-next-1622645785-8c316968.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.4-next-1622645785-8c316968.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-JFk9cXgCPvvYiOHceKcuxmUFei5s5E3ABiK4yn+CoTdafEhCje5fgGCEAzwILc3U1MF+++izLVQGD0ZiHF7vfA==","shasum":"b5dc5850161a8a51e17caa5580d724d293008686","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.4-next-1622645785-8c316968.0.tgz","fileCount":56,"unpackedSize":140207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt51jCRA9TVsSAnZWagAAcr8P/1YYDsrns+JP9Oyl7/2s\n7StZ+KLdrR26m9adINfC2ZTXzb6yxMBEJW0uzeka1uHNtIqD6EVZr3eEyHlp\nWlCr/QK3Z2wk8RVMFV8GjpXfbD0+D9mq9u8Fe45I39Xix2IVFK6ptwenM6WI\npHdZd7t3ZPmGJkoHm/CgGJA0UExi/uNc9Zb6HXzR+O0Y4Tvt5pn+AVxUCjcx\ndVBcPfldOjpjZ1dq+Mj09GZLIaD7tolmpHZ2LNqsoRbHi6hZwu4czgTl+8ZF\njwhswTcXBvJuM8PxrcjsfZQ2xPjvcWrqO/be/LqYu30x4HHDU1T8B5KPG2Um\nzytsZE098JD0x/2BiuTaaefSSZ31xu6ECHP1Yzbu5lcB5doFopP2xFv8qXXh\nw2rvedqmvzHw1BpRkBa37KwM/ZULYmczv1SZ9Ibf4f9o+I9+Dd7z/e6FZuCI\nspPidbmoUs6qxNEkyVK+CvUzmC9uQpRVnGnBn4Q8nW5hu6rY/F0K71YyweBX\nCOyKubfujN4QhtajuhM/MEI9od/fc/BQBz4v1r65zD+DN7B638QAGAFoa1lq\ncxn+yBdrWgD0BCmPhwlDcQntW0xZw8GAEm582KxwnmbA+B+Oj54kc+0jDHFF\nS4EMCqiPY51FCWg5LMp/3dCpbS8ffKrtm88IrfbxLtQnBBmDHWzsUHKPwkue\n6JxB\r\n=pN1s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFmQhV4eFTRirMUMd1xy9EE4gLOHCB2m4eUVMUBjBQNQIhAMhVVEyYHSqZt4nrMqQiX9VE2kp615JPR1JQrBOd1rEB"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.4-next-1622645785-8c316968.0_1622646115089_0.032428272385849555"},"_hasShrinkwrap":false},"2.53.3":{"name":"@xdn/prefetch","version":"2.53.3","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.3","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.53.3","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-FLhIG+BYD0foluoRPb+MhCdcyevKJudTmq5yqv7dIOvn3jHB7T1DpCynZQy9XnBNicb+/7UDeZUjQJ9AO93N8g==","shasum":"db71d32333683002aa444b127e4fa482a1f91a7b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.3.tgz","fileCount":56,"unpackedSize":140153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt6ArCRA9TVsSAnZWagAAUrcP/REkFKwtMkAQnO4D4HfZ\ngFwISopHHxD5sgBmH6Wt2WHNa88R+ax3rrN+DeHwjSCNOZIGpo6v9g2LquqQ\nloycljUoWEWwouehEcYyH5hjmo3WhmNmCVKje5++UtAmCFxvmx6KTlGWWhaT\nLHRZ1alf1lL9INUIH4gmNBQrRMFHL0+DIsCjs1b6fbKksHW2eRXg9ZRKrTec\nQXdsXPkWSp6AoODKb3TaKrfwU8M1HFWrJg2DWIX5B2Hg6Oel0nre0GLgIF4f\ndKe7G44DLIXDE7hFuSU2qnVrKbWOnKcD9Edzh0047UfyAadZUrgrmSmRQtwX\nUj8TSIf676mZ/eLheJ3i7uSPcmiB7wvFkNLIZIt85p5Cwbpevci/6uGtbX3y\nq7t750GCsVA53PEzCkGGRMM+6pYZLNs8c8eQ8OTHxeAwX+68Xi6668OInvEG\nGw2INWUW92FigdzeugUPFhaAaQc3ZqQ50Qni4Kt2ovbwDtkaBhYxRRj11KQp\nTiTki2UOYGGoGqEGbcRnqBpUNY5fheBR9qlXG5fWe3KtTORJGTD8TMWiAZxl\nLZ/k9DRp/0rgSN/RWNRsZNO0CjEg8kc+krvWG8dxis8ugDSJJ4fLAt8k0eXS\ny1nmHGv3pKf8rMqAgpEfFr+z+pLCehxbPcRHJCTXyu9JddywLkj74u5B46ia\nhO20\r\n=MVzl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuZN7r+E9QFWxI349jdUzJ6P5N6k3CBsELTdBfNfNJhAIhAONzmv2P18Vemc3JRFZQCRbO/IMMs+cRnyxp1g/zDhC/"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.3_1622646827404_0.6052545113095904"},"_hasShrinkwrap":false},"2.53.5-next-1640891080-513b105dc.0":{"name":"@xdn/prefetch","version":"2.53.5-next-1640891080-513b105dc.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.5-next-1640891080-513b105dc.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.5-next-1640891080-513b105dc.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-fPNS0kDw/nS64loHqhkzDKo3zs7N0FWA2beZbUDUZ+FUdyPTnk5IwZ7HHaJOrS1tY9/vJvGxcT4n6MKyyQggDA==","shasum":"f68beef1cb556a4e142bf9d9e0c9b0dc3df6df6b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.5-next-1640891080-513b105dc.0.tgz","fileCount":56,"unpackedSize":140209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzgQ2CRA9TVsSAnZWagAAX8YQAJW3ThsRU0pXg0dLw5sA\nKrXF+bNsQnyn/hH7nraJV2pVqCHhO2gP06uq2tEBPy2Bwn9ySu/wPEAcs7FJ\nm5B5PVN2lyAYSFSOXNvIbRrAXcSxb2P9gDcJ06ZRIhpFzuw/LICPY4HWLPqf\nq0R9UxviCCb4F37oUtJA0dVBjEYjvSludAlWsQ4TCGFhEQu/smPQ+EBh7S/g\nPGbrdkRk+HPE4KXlQJ81WWiBDiieYWDUasWsNe/z+ZUIeQ38Jd4z9usyOd8s\nhiA1aE3t5vWOkkU67dh4kPCKi08wHL1X+tx7/lkLl1z/o4WzEfDu81OpNeZV\n/GT1/hSO7QXuWi7G4xYdrfxoP3GFpkaAsMiuVJUQFRfoLsKQ7vVT4pg698w0\nreQqy/6BpzmN3suAMRHNR6ba+3myVGwvmqGdGaKF17qeRs2qC9uCMjjqCjRR\nzK/F4S2s/+/z3gzP+ePuMwMOkpZ0GeS2YZVcpMr0JjHoJ/0RITRrtupQcT6o\nxCM2tDfZqZh2ItXYPyqtrhOm5O1exMnqe7akAVykpdBHt8Z2x8P55Rwu8BnI\nTzYb5WCXyIMb3geh1GN+4N2Yh18wzgxYrhVxObAI732HxRkudKuwN3/IBr0H\nd88bkSVq90BfFxN6LT/pflf756MHFoNBJbq/1MaU5GUwstdnO9CwjpIhzTJC\naP7+\r\n=zSAQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqnTKtRaqZrKBU8JEuqIpXw90Hl8J3bgGuiKxqQin3MwIgS+dQTlKldtoGL26tf6GNEKQ7CUDHe9f3OJcmyyNv6cY="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.5-next-1640891080-513b105dc.0_1640891446341_0.7374224374401852"},"_hasShrinkwrap":false},"2.53.4":{"name":"@xdn/prefetch","version":"2.53.4","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.4","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.53.4","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-CWh2d5BRy5cd9Z1b/vBST8hsGdyO9nFf2Rt/nSsOjlpDRa1zOH/ADfPrLO1YefkA5zR/SPH9hVaso1tW4EXTvQ==","shasum":"41417acc30342fad4c8fd0f46222792107f6a538","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.4.tgz","fileCount":56,"unpackedSize":140153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0JnpCRA9TVsSAnZWagAAR5gP/0E5Xmibh8e7t0nPzXi7\nOsT2QiAXM0SkHAWrz6vFUrRF8vAef4luPdHrMFyTybeJ/nNDpF7p17vPs40e\nM0iDdsw0yUDtXko0Av3eLej/+EIlbBGDC4z9UiTkT1YnU7toPdHI9NHErknp\nQuIBzXl9z+/559Vc8rwfV4ejAp9LUMSvTGeYf29GGpwefbhF85GGv6LcEHIo\n9ba5hTkMeS2B6uQpS9hkhhUdCC6C/HDvGUHNswSwEBoi3rng22sUWmmDJ5Yc\nsonYjFBrunxs26M6uvmh6WKlVDkiOxDb0MWkmzkhSocIB+o1vfh6HIekz45R\n5nrJXbZH39LNrTZ0+F3MeZqzCP6TBqKQZzYMtZVCDqxp47yn3sOevRw5BRwh\nES/G0ZfuqfdkKPqMZ1DQASY8Z4aB4+Loi5afvSc1JuFiwV628sCYC/U1jiZm\neZvZTic5oXF9hqkQQw1ZtFANlVTo061iydZsrkyWytEW+uROxbwb4FknuVb7\nOiITc88MUxBoYc60mHtTlzD2fqCcKGIC3MuVZo5eiB5FB70f7dJwrYbsSFiS\nVfJJaSQOSf/YcMb0hDH41E1smI8B0pfuZdGWM4PX9l3NXXFLWyLKDKnR/FQ1\nMImc0hPLu6/DEb/Sfyu6/YnhwwVvPpK8UUupXrQBo4sQYkFQfhs3ZsrD4rH6\n/gSi\r\n=yqVO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID8qRIT3MaZZOjz+XZVeLRp2L0naAJEwQDnj2u/Ly7M0AiAvtGQpzLaSt9ZBdMbdaC5alLqKPzSBFlzzDm3OoXvroA=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.4_1641060841201_0.30140684644563276"},"_hasShrinkwrap":false},"2.53.5-next-1641060563-3bc9c3b88.0":{"name":"@xdn/prefetch","version":"2.53.5-next-1641060563-3bc9c3b88.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.5-next-1641060563-3bc9c3b88.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.5-next-1641060563-3bc9c3b88.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-OYA899rRX4l8UvWN/VAjzS2/3vIcGmimDwVB8lgLek6KP2PW+tvm28Y0qU11Id1g1lOFYA3Klw3RgrShrT3Sbw==","shasum":"799d6b5be208c7f5ca86a5e31f676c776e0a84a6","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.5-next-1641060563-3bc9c3b88.0.tgz","fileCount":56,"unpackedSize":140209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0JoYCRA9TVsSAnZWagAAvfsP/3NEXfypsUP5T2RsNWR3\nHqQhkII2kZODBxUKcEJghnERyVFF7gI9W2hu4TfIpEAFMoYz1zOjmce5aOT7\nWO6mCv4ujNE0lMPwLRcocjf4YAZhdRhj+XKeBHxOMcn07/XWAjg0h94gzJP+\nvhNRqdCxhAqMOlERFgns/ZfqBCIMWwPJg9agUn+DGVVAZHJP/BGDTOPnOkjL\ngw/S9Tl9M5/ikpkuj+KD7FNrtP2ebi+FHpRzfxeVy8As1CnH6MAJlsfEmo7W\ne1pW8diUfzDVtTR2czi6G3pnqw3T0YgE9DjwT31N04g6nzh8B1qDbFztkiXU\nhMuFYCol/gM+r6AHmg1sCN27kuJ/sLthaejxNZ0KiacTjhLA++RkDpiuD4RV\nvRynMMlw/Pq7hn4OhwGwz93Hd8PKihkyfHyh0RWqQVYFmOMzImSEb2KAnrNS\nTKpE0n93uKmtodPdNGE2RSC5GzmuLimmj5kOzJAWjAxwsq9r1ir66D3aOp7R\nMQ+gvw0gdML8ZxvS23nfznxFkEcdkR3jmfSEY7Y7Jkm4r0HUPO0L/N2DTS7y\ngJP+ov7WSFJ/9AOw30YI68Gtzi+ZK1dzUNGM3eSmlMCF28mzzG9OjLHRHB02\nUcz3fijR+JFW4zg8v4MncmoXWL8uFUbdIM8A0no+O6XjJRUxjI+DQobvOvoP\n7yNF\r\n=+YrR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA1vJQjN4G9EOJM9tUI1Ys/p4o8W0ZhzagvZXGMI+JXfAiEA+ZH5qvLZZajtIRV4IdITQfQsH2ks6fJEV3/wJuo0guk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.5-next-1641060563-3bc9c3b88.0_1641060888205_0.005196135439919702"},"_hasShrinkwrap":false},"2.53.5-next-1641201434-873aac607.0":{"name":"@xdn/prefetch","version":"2.53.5-next-1641201434-873aac607.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.5-next-1641201434-873aac607.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --tag latest-v2 --access public","release:next":"npm run release -- --tag next-v2","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.5-next-1641201434-873aac607.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-epbl7kR36RMiiH4TcPcqz/fohNV6ei98x8ZK/Wn6ADJz6ICOv8UjeVirl/TjVlxKKi1myf+Ncgd/+af1KQNk4A==","shasum":"ab23041df65972094bf297a6d3e6c49ae6db7539","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.5-next-1641201434-873aac607.0.tgz","fileCount":56,"unpackedSize":140228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0sDACRA9TVsSAnZWagAA4SoP/iZXZpkmzuw0d5WGEM1D\nCK7Nny5oQJufTi2nMQhBq/FikLnUbLHnHNftWw0OijvVxHShn8z/Zfck3EIk\n+qiz2ilsYM6Gtz6WxI7THFV0mgzVGiAvHbotr3mjytUe6y8MB+qNfOLErP7k\n9cHULhXzEjxbxTmMoa/oNfpgBmvrzN7HK+PCVhjXjNcon+TVlZHtOBRxhBqP\nsAOStuQHYFRoF46Mt6icfdN2NgxzXVu6+B8CxHEwpcNKWnMnbZLtqT/Zz18e\nJuYU5LVkSjlCFvtG4hEDsmnBiwVE4pwi3jm5f5l6SYkcNktMOaaDg3bB3Uh4\nEI0yKr65D66phicbNoJD6rHDLHFQGq1rbzXDylMiMgpH5ATKv4c0E3kTmG9r\nUouPidGEP8USGpKST9HoH4+4TvQoiF/9c5mD4VgZ8xnaXrUOlkGHECcIfcCD\nxY+Z8rgZduYMa8ZrtAvDac1B00yFtgu+jF32d4w5UErBr0ygliDmC7lN6ihk\n0cB/ch+V7GkgWgQDOaRxechJyNNBNkMy/aXf9S0LNR0qjs7aW3LG/Y20ceSo\nP0UkooTBqnVIZVT4dJEQmhfeZ6gZaCS9TBMPqsdyFl/RkHa4PkT3/xdICfcI\nqoI+cY/cjdJHJAs9pcWiRoFoFHVAKNkXg4bvDwcUmn1vk270B3JzMdHFNxk0\nYTkR\r\n=VKu3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA6B7xFdovf/LHEXqDfypmv7lqilXMVDPb/D0LLz7ymOAiBQXhKdhxmQicxQ7Sb95/06XhWo9uZbIXQbmNO+kW9gXg=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.5-next-1641201434-873aac607.0_1641201856513_0.5288050948647525"},"_hasShrinkwrap":false},"2.53.5-next-1641201537-c1cdb4568.0":{"name":"@xdn/prefetch","version":"2.53.5-next-1641201537-c1cdb4568.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.5-next-1641201537-c1cdb4568.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --tag latest-v2 --access public","release:next":"npm run release -- --tag next-v2","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.5-next-1641201537-c1cdb4568.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-NRs/1aRBtkzP7nrzRTbpfOsP6RWOGP/Ql+1YeRJYR4sepek6QqXxLcNmRQFjqSc2fU0wiA+mpU7tpuUYPO+5oQ==","shasum":"58df6a57ed39c3009ec97c150dd0d0f674aaae95","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.5-next-1641201537-c1cdb4568.0.tgz","fileCount":56,"unpackedSize":140228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0sDxCRA9TVsSAnZWagAAIOsQAJe0c/VZ74UsiIfHYamf\nI2y2OpxyZqweKH+Wuj5g5/cmEC8Q6XE1E0SSF3p0ziHWCbyKUbtXIfMlK0Sv\nFHNLZmniaiDbdwxYy7gdhMWvLuhaPGh+NXIomE3HRs7zQKI+31jr3UrbXOYb\na6Uph7V/A3slpRo02Gb6E5WBADKV3uz/8H0c1cOvtyXozDakPeUd6DAi6kgP\ng058bJApFwgvx0VyaRkVmX/bJlUqnCN3w9jGy47IMqjEjm4z2E0Twy3Hsn+v\n57Pt0esVDdFXnSrV/d6O7fJQWiPiAA7hYQYdz4OEOXZ85ArLNMMhgT4c5G03\nv7f5d3yN1MLp5JONy0OPiRitA/KjVJ+qgVMy7dhfDgxsle7fZum0zKw1ZiY5\nKejF4q4L0AktV9o2k6CA2TehwHIpK3xXvEfZMmrTgIeL7C4HQfk/8ouo7HSg\nPQ+Ln1LcUbh+OTDy8KU7DEQm+t/sptxXMVjc3r0sKJdwQSdV6yBAFyk8aGxP\njGB08sTmMDbBQ8TrO4UsB7qho9rRiU9m/kQO5dqtz+RD5ZOnsla5MiOMWrK7\ncLvY4MGsvFn7Kq+jwQOF4hOsghk5x54epz0r1b/0yqYEwNZDJHbhyUQAW7bA\nEz+d/i9c096Cv7ylR/dkc6itCyVis+CB69r7inF+7N63HLkm53mkWOTvr8To\n3tdg\r\n=XH7w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID8Fh+QBkhB1W7LfxyIWujZ+XU6X/o4dWPeWoQoduPmjAiEAoA4mlEEGqoymE0vllmQ69Hk76bFXjv4HgyuJzTcMrSk="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.5-next-1641201537-c1cdb4568.0_1641201905152_0.7912184376831786"},"_hasShrinkwrap":false},"2.53.5-next-1641210071-2f979ef07.0":{"name":"@xdn/prefetch","version":"2.53.5-next-1641210071-2f979ef07.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.5-next-1641210071-2f979ef07.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.5-next-1641210071-2f979ef07.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-vgYznr1jD0iuNCNTuOqERZSJBJcfUF8CqZwhTVUbmFgWqMw2z6tjTLxnmHtHEIANL4PJFXiZ7PEwMLn+Sb2cFQ==","shasum":"e5099ea7b32fd82f78948f19e9d3384a27cf0957","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.5-next-1641210071-2f979ef07.0.tgz","fileCount":56,"unpackedSize":140209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0uJiCRA9TVsSAnZWagAAiQoP/ig43Huh8THVCE9w0M+j\n+lSBSagG30oBncqvujF32MoWjjk00iBCdRg0R5ol/6uIesqo+ab+owlFRrK/\nX59n2Trj81zl7/DCvbITZTg/2tRazge1ptgOzJA8j/Zp/QrEXDrOH1dYKkQw\nK2Kx7Lz77jt2vJLxW+437rq5FoTJf8ZzRkWsug7w3cXex90l5HcwYW6J6eh4\ncPKxFG69skCyjfrCdp/bDs4FgY9JQtFcJ/7xqETL0nW49GdJQGcqM9BuoP0N\nvcEZ0GQMC0Hvi/Z3JpuOLdE24DF8f1qC4Ixs6JAKwCF0ATyGf4Z4RvMsGQyT\nib7AVom0i4gGm1cNCrJwZd9Q/mvKcCXRbF5gCipMwMSLkw49TxXh+Y/I1Qm7\nwppP5Q/BtODKELE16ELQn05vYglahtBTN1n21Z6gawVjeHsfdKcx2Ra4kU7E\nfXNEX1+FKhAxCbHX7jc2t7CZcWGdgJjEcg8aZr7VNY3dX4psDTHsVqMzhY02\n5ZdCEN+oYrcdLPf7UaDoSY6jlvl6x7XhMeyvWT4/DSHlBvAkVaH9wPhNWZ1N\nEUnHtVMRx6qtxHdxgKm8WTqzkjCbeaLrZCpya65UW9pefJfRbRnT68GQRPfe\np6YKBNGpV49Jof69frKzbLIRJcwUzxvgilYIRzq2XQUC3TYovWjlRHW8+2hG\nF2NE\r\n=ugKn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgsYs8aUlfqjWiXSKWHWP85GrrulEGcR07cF+gpr2tcQIgTCQht+wYRzMtPoCrLVSnJFcd/KfAL0HSjAxpgEGd+4o="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.5-next-1641210071-2f979ef07.0_1641210466180_0.3751486736046956"},"_hasShrinkwrap":false},"2.53.5-next-1641219106-ff2936ac0.0":{"name":"@xdn/prefetch","version":"2.53.5-next-1641219106-ff2936ac0.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.5-next-1641219106-ff2936ac0.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.5-next-1641219106-ff2936ac0.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-kOE/aNEQMYaEVvUj8+yqW9uKQreTBYdDHJB0X/pamNP8mahPgBfHY7dOLi0T1D1xoO2uAJIzcQLBrp7LqA4hrw==","shasum":"1cbd33e1abe7ec862714992588be148adc0e13d3","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.5-next-1641219106-ff2936ac0.0.tgz","fileCount":56,"unpackedSize":140209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0wXgCRA9TVsSAnZWagAASH4P/izfsvG/BIpr9dAxE1Rm\n/JYuH9HDZJUcI8wWRYD8CGHju/Hvkeymdxp4tTu0lM0njTL7Tnr4kFp0siAv\n3Fib1jzrH3QX9SLpsSPdKy2G+n7J6XHdVo+vXc36HiIYJkzdhA/wSAuzmUMV\n3KgDQEEwsa8c52vVRaBuFfJ8zu9zg0lNDrerKTB0El3hB9wvJokjku8S8gxO\nKafEHZjNxvTlxdF9qfFbSvYlHG1yqs7dxXFcOPsfJ0weiUhiCmZ7siz8CAbQ\nkHWupUXv0WYS7ZPpfMlmUC1eCzssSI44nvGcsNy40QG8PdxwL4oQS2EAA2hp\nglLOQsAwYmIsp2Ct5UuqJT/X276Exm7S90nWUo7EsfF3IKTJQnsPITxI5xVZ\n4ESi8bdl4RmQNq15/wqw5Dd5ERJX0hBmBf5XyNysclF6UmTFqkpNvQOYFILz\nO4ane+YxWwcHmtZiacIyPIKB1Gakac0J+c10ILI377ssSf7oAjIsCc6/U7sA\nnsJh3URu7SJCUoPLU/zuK0M6NwHDvR/iGPDyKeCVGRRRywrQ09wLY7iEHEy1\nXfZkRwAbNnvjBHbDA9BaY0Se/czzqf188FNxVrAp/RGLXpTWYHtXqKAjZU5h\nCgQtiMVCoiVNQldfgsJVWefWW6lmNhwRdv8l9vFfwvzwdZdUxESvrT694Tqu\nzyq1\r\n=tm6X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEug9oCGxFyLyfAVvkMxvZvTHfs52hYpJt7el3iYCWTgAiBdKRnAj9SC31meJguM67NfW783j7ek3zXSjw7d8ukP1Q=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.5-next-1641219106-ff2936ac0.0_1641219552458_0.6763549213978333"},"_hasShrinkwrap":false},"2.53.5":{"name":"@xdn/prefetch","version":"2.53.5","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.5","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.53.5","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-K6xQCNjNwdqjVKnanH44IozLVAnrdja7iJUnc0JhRaCfJVNoZoTF2oTwqTPQfBcyij/Qq662hHSyWZTzE/jUUQ==","shasum":"006e57773ba932e8b173a6f6440a1bb1060b814b","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.5.tgz","fileCount":56,"unpackedSize":140153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1cEmCRA9TVsSAnZWagAAAo0P/2YcYZQIsv2dn2nEyIt/\nNE8mQWDnmoFk9gHdL+o1Y60u5VFGbtm/Jjw8k8EO7HHIpqg2P5d8s93zLzRk\n1XAvEHf+Aj+dAWu2ytk9QRN684/5WLmzvBLwM37u1kUsvkNME8+DrBonfFaf\nsyF1MBFnFvX3kG5JWz+dVsMQBV7xJD+1Z62GA6ORTuxrx+og9TupdQRraBrV\nUsw7IWjTJ+cFfAwPIRbe9u9nwc4CkFLyYqS6eBDvPyO2hDOuLGnCjkkc7kQw\nvIIUzNX4ldxH5cFR8l8Mxh891oH88aDVUG21zYqGSj5xhirl+qIIS/+EE3zH\n/pMJ75Jq+I8K6UEj4X7PZX8QKZj0f4IOqh1ekRg0GyX6Y/y8l9w1o/6lCAfK\nNrj9zzCLllWCgoYqZz8bjjSUaFcZn0o5sdbgQnVzp+ipLeWuPx9eNhmq4uno\n0vkoRmJSZzxkpXFfQ3pBKnyMD3PX/2T96OJaFL7jsImphSsqXKE6Wn1jrt+5\nZwI0/shVOEeJIAwzNQ1pJVPpSHEriqjdACVJEv/wch/HOzhWntLmZyDaN9qm\nm1dXzOvDK4C50nqn+6Qs22pG0UroA5H33hTzkaKdXVPMEYRxrJwUtJiCm3Oa\nELsXDnoLDTpYaT55YxYpxkmCgofFIfGaC/YA9S4+4gXBpHm0wCm2wH0ZUTIV\nUjAe\r\n=pR0x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDpP45visGF28tSBHIE4JzAdlL8Vq4yHAPTN13zfqqXOAiAJ4m1N05ZU9aITkdfJfK5H/0CqYGO0N5Qx+kI+mcyrSQ=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.5_1641398566042_0.20119501461074307"},"_hasShrinkwrap":false},"2.53.6-next-1641398325-01bf686c4.0":{"name":"@xdn/prefetch","version":"2.53.6-next-1641398325-01bf686c4.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.6-next-1641398325-01bf686c4.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.6-next-1641398325-01bf686c4.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xXbXXL66yOgpVHlFBlA46quFJi3YmoVR3tzBjTPyM66jF/1L947L9BGZU+ebQcy21OqTmU/woC96E2lpxcGrFw==","shasum":"4c0f93fb832652cf3ae4c375a0579a710e944830","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.6-next-1641398325-01bf686c4.0.tgz","fileCount":56,"unpackedSize":140209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1cGCCRA9TVsSAnZWagAA60AP/3okSFPkQcHV6g+nYMAc\nOm0kQbeUAc5bxaDqFxQH7NoN0ZTAHD7h6mo1u/Xq6CwtszU48sOei7PSdEbe\nUWjpKl6M104xCuqM5HeFDwl8zKQrAy5GaagMgJY0JSZN4o+64uOCBiq8c1vn\n/uZufVGSRG1Wq7U+lIUFQmTA6NpXQSPeFL6w8kHG3OzxJLPt+oI4qndGSMHh\nXtIitYQO3loeMKdiutdoslIXl0y2Fkk7l0Bq7KQkuiktn6WFZzelse+s4nSS\n6KkDdSwDDmDOyM/ezaWtwhASBi6RRjpq3SAI88nmGJA5fz97kZTwB1+FAIrr\n0obLoZ2xAunKoTZ+LE9AONXlDddXJqMlLAiDSuDMc74FMkJP4mm22+v4nPGz\nD1K/jKhC/tDphO+Ci6v/rMocQLJVR1lHnBcyfWtTaB/EpGTEvuxO+cG6PVR0\nFjtPQOZ1IXUoCqVRF/efx+2dH/j89iD2cHyHMR1XQtj/H4ycxmpNl3nvS3RO\nck3EzcccLO+a9RvHJCGPNx1dR4toh88u2zq9oRytYj2Pl9IJ7vl4LpXAen8f\n+06b//vSTXAxdMDYUL/dVAeAJzWl+USEuU3WBlgq/m8NKX7rJzashqaVyVWB\nYIqVGikx1p8oCCe99NEjd+eIyWSDDL/aPuxZ+mh//Gvm82NzpGe8rzIBI67w\nn7Q2\r\n=549W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFPqlvzwGo8fcfaNIuAoGneGfJAYY/mlp5PN1Tt0dYquAiB3lF4pyYEMsDQddXn5sO3aeGqhxikZT6Y6knjjm3OEew=="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.6-next-1641398325-01bf686c4.0_1641398657908_0.8208529607291304"},"_hasShrinkwrap":false},"2.53.6-next-1641892929-f436f56da.0":{"name":"@xdn/prefetch","version":"2.53.6-next-1641892929-f436f56da.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.6-next-1641892929-f436f56da.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.6-next-1641892929-f436f56da.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-lqh9W6MXT1FC4WQokq8eGlv1C4MeYpKb+RMUUgSQmdMHh4efcZK7V0rv754sdalS6Zrr15/nNigFqX9A9lsX0g==","shasum":"c2e54466d297524d0755d0418fa186e565ca2b76","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.6-next-1641892929-f436f56da.0.tgz","fileCount":56,"unpackedSize":140209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3U2nCRA9TVsSAnZWagAAKJ0P/0rqHFs6ZO82KAwu4Bv/\n0WULj1qizI5MzNrmhcUEAPl0DuxnjJ7lMoPKW5oRqN/PlsGWWpJQ797L7Ak2\nNGNxx7cCFCF1/cJwdqZC1P1nO20j9vErVrjlXxLESsxyZZbYLITqGU1zRPJ0\nD6RrA+znN7Ag6TMF9ttlLshV2jE+Rimxu8THrsX64zX6Z2nSqNJ4/B0VUL35\n3c1ipXjDf5SLsaRXFqVrCGq5IdfVlS3aNfQ+Xyw6A2v7giq13bD0fa5fumF+\nJz7DD/HI/PvVOQUc3rycyKg/koFtW5Oz31Taj/bfSATDFV3eTblz638ItKsA\nb8pmbgWbkAphvRB59WwSL4H0XUOpMkwaDVdaVSHCBV36XjpbCEiTKZ/1pkbN\ni3+mcBhnrh7t+wYSUVWzQJih707zOaSYLY9iQTYQBnxB1sOfMrk4erqK5h8t\nhQVzICatr+Do1UH9nHlrE/5D/69xQi9W/epbz2pswKiXn7PBZLqmSmE1vAzJ\nUfc4NPiXws5Jm0kFg5KLp9vZbpZ5TPmZnftfZYd/yZpIX5LOtkGxp4OmXeEO\nBHLQjAxYButaRlAZvTMrvwThd2h4ZdexkjmyRVV+ZD7RFaOXPlk29x4w3Jbf\nrbyeSuhCWmTNze+dXggXTBxLnECTBK++MFfc7YEItYzBshnt21wqHWdD2QPi\nt1sf\r\n=g30a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnp1KBZjMBGkSysWCUMQreCFHYpBNJl/p5vukcAx+UqgIgX5WLt9FBk6yuvZe9Vj778u4VfyeeQSm5b6bShHK+x68="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.6-next-1641892929-f436f56da.0_1641893287225_0.7814031318881063"},"_hasShrinkwrap":false},"2.53.7-next-1641893132-22be18a83.0":{"name":"@xdn/prefetch","version":"2.53.7-next-1641893132-22be18a83.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.7-next-1641893132-22be18a83.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.7-next-1641893132-22be18a83.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-P8GLyCXfnxVVxkFuy1yGn+WfT/I77MF9gL4Ty+fLkxMS7ueU2ytJG5EpMwNjf66XFaGQZ6/7cYhxNPwk3xiNJQ==","shasum":"70b708038c88b8d74e9c960c85fb4f04af388bf9","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.7-next-1641893132-22be18a83.0.tgz","fileCount":56,"unpackedSize":140209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3U6VCRA9TVsSAnZWagAAt9wP/RJA7auKOcsAkA2JIAzO\nWjxBAHzrrTSMBlzX2O3QJRyvX4SxILfkP8iOErNd2WuPelCn6ZoPMgaMVJ6L\nbexY0XbZJNP7qULt0jDX7wV2UejPH9iLY4vugBzR2j/nKHmmJ7etqqbKH+22\nOZTrW3+Fo27I83hYp82U0O+qu+LaNwdeQQXYZiwJtvhdvbp4xkR4OXFEzCRj\nFHSxUvTyXDop4JsO4MbCh7uBq71NTEaYxhLQVulogY65ZrGiHNqX7G8W7xPa\nr1qKbbC+Pja1BP0dZMEiidGvz5l+eiOzlEt7KBugX/12UqKN8T/QXpXpktfk\nG/G5dfaa4Q7TAQHCh7LzXzAnaj+XT+ZifClsolRkWUtvKWsFs7ZDNx/Xn4lC\nTjdVum5LllBEVUW8mIesAsk8k+hvEDLx/dHbwSJytCANcBJ8lkF3U1hlYnys\ndiFIoKTK6VRx+nvaMEX9YrRmhmwXysGFb2NQ5fpsES4ZW8DFbEUaGEMpx3rI\n+bsXIckD62oIWqtRNx1IIMB/9YeiIVrGKVVITYV013Qz+pGNKcquscTkwSzW\n6nhZGDmgMZeiHCkBn3b0oyNR03xiK2hnRQxQCC9OfC2xTKlLVSVDQEvovC5d\np2ubNpZJfv/sthKWd6Yo5XZO74jLaJh7Ypn7c5UXrYgkFw82r7HgC4Akps9a\nj3us\r\n=qwt+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlmT8GIQxlCyF9+Q4B7kdXUnlMlEGsFxxkvWrGZIVfvwIhALs1RXkRTbdqJVk1VWM3SwN5MDJrcH8lz/uQ+R0TfvMZ"}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.7-next-1641893132-22be18a83.0_1641893525198_0.38242559102465634"},"_hasShrinkwrap":false},"2.53.6":{"name":"@xdn/prefetch","version":"2.53.6","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.6","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"_id":"@xdn/prefetch@2.53.6","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-icgxuf22vpZVuNGx3JjmkeWlSthNaUQvpP+NO5rFsUh5Lt7K7By57AGZ8H3qcR3xqu7Ef++nXvazcr0Hzge1Sg==","shasum":"27a4ef5019c9806e6213556de0706f41a4557cb7","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.6.tgz","fileCount":56,"unpackedSize":140153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3VeOCRA9TVsSAnZWagAAnDoP/03yU6nMMx2Old9yg2/Q\nhc/6EpchOhUpKaB/WSBgKj4zUnQLHDMz+TPHsckp1bK2NZHwGHcm3yE35Gfi\n2Hg4PdF9EsKFiiMLq9hm6OqL5wdQQfQGHoCZd32Jt6osnKMpFU+8UUyd3trV\n8bW4VxFxqx2EnNRF5tjtEV15UNSucY5MLkVXWodHbiJA/UUiItXQiiVZcS4E\nbU6gCe94KQlm998DeXgLN3MoySJl1KBfrUCjTMR3nGqMJWJjdps50f4emCDG\n04/WT+XsXIMQ/CDLSNfpdr0bubP+4PcV3d0dBOryobMbWOjHp4rHYP+zKL+F\naFU2eP+Cavo9maiJ1vVy43VXFglQ7ZsoXjssdkoGxb72hA9tmNANuNt5hiq7\nADb3tNRyS5FyIZzfl74TNhJxCt3LcLMgG/2gHSZ4E3Bw7RWOaan4yLILOIXB\nrsUEeRjvLzKcw9CZSP/RlaVy6Kdm7Qb9HoXj+soFfiiR7YLnejEoHp/5inQx\nPI6QW6K/FdeUTFMunxX809v+ETCWObh76vqKRekL5sxz9MHMGxTvPrnw/s1V\nXiQocXIE675V0YDuq523unuxbp1qaP/tEvHWRZhKR8Xt2ou7mT9jmIopf4Wm\nOsWdOaDy0JIS46VBt9pMv5WHrttALJP7esdALREdkMbBuAsPpRimHv8s+9T+\nEsR2\r\n=azLK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1Ee8Dp6f+lfRXPHcpCrskPZi4QgexzMX6IMLCnP6eZQIgdXHAm+Ny5C9Swv+5tVSR1dXMX2bHgRxte5KQGAWjTnc="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.6_1641895822302_0.5461216481537561"},"_hasShrinkwrap":false},"2.53.7-next-1641895574-4891585a6.0":{"name":"@xdn/prefetch","version":"2.53.7-next-1641895574-4891585a6.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.7-next-1641895574-4891585a6.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.7-next-1641895574-4891585a6.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Vx2gb+/obeBz3i8+EEyXbb88Bfgf9Mma5UyFJ8AE4oPI0P7MP4rFKJ+cuLF8ksSvLfRXo0+ED5IOoJ8N5MZeCQ==","shasum":"5ffff8a56b9c9c162b99af5cb7b3dfd0937c1449","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.7-next-1641895574-4891585a6.0.tgz","fileCount":56,"unpackedSize":140209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3VgJCRA9TVsSAnZWagAAC3cP/1BzMJxsOm8tpYQ5dXpe\nnU5+VAIbbqPBwFNVMWnPNEzbZz2v1wTZ3VSo2BmOEMtsFHay7cKxkTwQyyol\n2LQxUjuHzKra2T+RDl1pQfWeeWfj1720/yOQcR3JkPkNFYUdLBMMFFsciMnx\nv/8xUeBVAndEpG1gWLFF6reeEvFGbjU+8z/4X5FCkpSXS8t8Ta+ZKgE/oIul\nvP8swX0PITGBXR49Ov8X2vIYujZiGuUs2e4WO7vM3/pIM0fyFQwWtnovB5Am\npwjNDbAXGvjPusTQRSTs+eNUbyVyMgYPDP/aW/2FC68zvC/lpt9SBjrhOMTH\nWIJXxRgxFz2rZYxndEEl3rrO3rAnG2z8SDJ9maIlpcvxPjr05oDIdZEmN86+\nn9owFm/jY87fMI/dZRY/a1ivRacP5Z6cuaNXAZ/xyZKmtZd52mimjfSmxJ1L\ngiYiiNoxrkRSVyUe1OFcH0zKUIQAqnDMpsGD26Ea2I47xLDHBGq/OGekPBeZ\nSdkk+MH6UziVg4T38q363fXlMIQ2Jh2s6xc8oW5WRlauVs8Fb79cyepVNtrS\nTvqt+ZdQwlFkJTDL8gCcAPOs+fRsVp+fPpDsPXH2h16qDuvLs8I7ITVU6hhY\nKL5NXPHQ2j4si2LgkkjI78Xv5woMRCQXeg/FaeXnfKdj+4Gc0SvDSqb1NElM\n+MgJ\r\n=iYDT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF00yStDWLorHL8TDVkDyXsJ1Gu5av2wbD36k1wHLTEAIgWeMc8EOWFLiJ5xXhIRkoZcOHNtb9hJxEU/mVyxGRLqE="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.7-next-1641895574-4891585a6.0_1641895945697_0.4718249013381399"},"_hasShrinkwrap":false},"2.53.6-next-1641895591-f1d5f1649.0":{"name":"@xdn/prefetch","version":"2.53.6-next-1641895591-f1d5f1649.0","description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","main":"index.js","directories":{"test":"test"},"publishConfig":{"directory":"dist"},"dependencies":{"@types/cheerio":"^0.22.18","cheerio":"^1.0.0-rc.3","json-query":"^2.2.2","workbox-cacheable-response":"^5.1.2","workbox-core":"^5.1.2","workbox-expiration":"^5.1.2","workbox-precaching":"^5.1.2","workbox-routing":"^5.1.2","workbox-strategies":"^5.1.2"},"devDependencies":{"@types/jest":"^25.2.1","@types/json-query":"^2.2.0","@types/node":"^13.11.1","@xdn/core":"^2.53.6-next-1641895591-f1d5f1649.0","node-fetch":"^2.6.0"},"peerDependencies":{"@xdn/devtools":"^2.21.0"},"scripts":{"docs":"typedoc","build":"rm -rf ./dist; mkdir ./dist; tsc; cp -r package.json README.md stage/prefetch/src/* dist","watch":"npm-watch","ts:watch":"tsc --watch","push-build":"npm run build && cd dist && yalc push && cd ..","release":"cd ./dist; npm publish --access public","release:next":"npm run release -- --tag next","test":"jest --watchAll=false"},"keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","watch":{"push-build":{"patterns":["src","package.json"],"extensions":["js","ts"],"quiet":false}},"jest":{"clearMocks":true,"collectCoverage":true,"setupFiles":["./test/setup.js"],"transform":{"^.+\\.ts$":"ts-jest","^.+\\.js$":"babel-jest"},"transformIgnorePatterns":["/node_modules/(?!workbox).+\\.js$"],"moduleFileExtensions":["js","ts"],"collectCoverageFrom":["./src/**/*.{ts,js}","!**/index.ts","!**/test/**","!**/getHostName.ts"]},"readme":"# XDN Prefetch\n\nPrefetching library for the [Moovweb XDN](https://developer.moovweb.com), infrastructure to run your big, dynamic website frontend and make it load in less than one second.\n\nThe `@xdn/prefetch` package makes it easy to prefetch dynamic content cached at the network edge and store it in the browser's service worker cache. \n\nYou can read more about it in our [prefetching guide](https://developer.moovweb.com/guides/prefetching)\n","readmeFilename":"README.md","_id":"@xdn/prefetch@2.53.6-next-1641895591-f1d5f1649.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-jd47nkXZ5RIcABm94bhtKZBDU0oD/mxvOpKpS0YqfaILz5OyAZ33gQaZby05LyXAdLdeSeAowMbnntdCS8S6nA==","shasum":"a4c76ef9898da8f805c0fd0d8e17d05d35ad28ba","tarball":"https://registry.npmjs.org/@xdn/prefetch/-/prefetch-2.53.6-next-1641895591-f1d5f1649.0.tgz","fileCount":56,"unpackedSize":140209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3VguCRA9TVsSAnZWagAA0k4P/0MkHC+AcEs9HqQ6YirH\nNBKj4Qi59f9iVcKrCd9dZIIyo4cquy17V7J5NSsjmEsO646WazoeA2zdcar4\njqyyX8tMiat79RDqqnQpV9R9jcDnBbjRcVjPkIGhDTAPn8V9WBEV6JJ0nz3m\nXnrvg9fTNzdNwHXqBrOAaKwKi1a6zdtOSxoOEQqM/vfWFAePH8Gdzd+pnp17\nGXPx3bUJ/L1nnnNKdqXL/gJRvNq5QkXMirtv0hzhRW1mtwQb/61V+Oabk2r1\niPUlrOxz1wzahdiO/KXlCcXPACEFH+AtIMd1Gc7fD40P0EN9fBFTOn+IK1US\nUd+36lx1c7IJpkeX03YhdD9AIWwT7usT0ovVYLYL2xLM/Ad0zM4uM5yeY9x9\nKQ5DPWaXIHmYLxd+0FtEdL1BpTLrtVTxoFPIetnE19oSxalJG8i1VvrfD0S1\nQyw4mhhhCjdZK2DY4gtxjrLGpJ0vjtQ5MlJ6DCK3+oMryyjUjrdvQ7zQdz8u\no+a+d31j2gK1Qj1fSpyNkuzle8dB0pdOgbq1mpT1ea0CNoqpFUwEw/zU3MFP\nc4Rm/ge3aTQkyRj61FycB9/BhChPTnkaFnkenAO9lMS7Zf0e1zVUd5Sa+NpI\nl6fGPQXgDX5RXwnAox1x79sLgMCr+3V+XdSbh0nCVY9YJdh+V4TLnH7vLVGY\n0oWN\r\n=SrG2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEeUpALUMfs5L0pl0mJYLi9g8rMlDhf+yNUmPXH4MjlkAiEAgAlt6a4KOdrv0hlgZsrMOH9QVvymo7FEdKEjSkT8eNA="}]},"_npmUser":{"name":"moovweb-admin","email":"ops@moovweb.com"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/prefetch_2.53.6-next-1641895591-f1d5f1649.0_1641895982496_0.43217163323351215"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-22T12:21:03.924Z","1.15.0-alpha.1":"2020-04-22T12:21:06.292Z","modified":"2022-04-11T10:30:23.903Z","1.15.0-alpha.2":"2020-04-22T13:05:05.708Z","1.15.1-alpha.0":"2020-04-22T18:25:25.819Z","1.15.1-next-1587590168-dac37a32.0":"2020-04-22T21:17:05.331Z","1.15.0":"2020-04-22T21:19:39.905Z","1.15.2-next-1587646706-e2a18f10.0":"2020-04-23T12:59:20.290Z","1.15.1":"2020-04-23T13:03:35.755Z","1.15.3-next-1587652580-cfb5090e.0":"2020-04-23T14:37:16.903Z","1.15.2":"2020-04-23T15:59:37.362Z","1.15.3-alpha.0":"2020-04-23T16:11:42.941Z","1.15.4-next-1587663083-08c99ea3.0":"2020-04-23T17:32:16.562Z","1.15.3-alpha.1":"2020-04-23T20:34:46.108Z","1.15.4-next-1588004033-f4ebeda1.0":"2020-04-27T16:14:51.773Z","1.16.0-alpha.0":"2020-04-28T00:43:41.768Z","1.15.5-next-1588089497-4078ed54.0":"2020-04-28T15:59:18.360Z","1.15.4":"2020-04-28T16:00:51.449Z","1.16.0-alpha.1":"2020-04-28T21:34:32.069Z","1.16.0-alpha.2":"2020-04-29T21:19:31.515Z","1.16.0-next-1588248560-a5ae7aba.0":"2020-04-30T12:10:19.603Z","1.15.1-next-1588257704-e505d92b.0":"2020-04-30T14:42:45.512Z","1.15.1-next-1588260046-fd645561.0":"2020-04-30T15:21:40.013Z","1.16.0-next-1588260694-b903a29c.0":"2020-04-30T15:32:26.839Z","1.15.5-next-1588272954-641dd84a.0":"2020-04-30T18:56:46.733Z","1.16.1-next-1588273241-075e41aa.0":"2020-04-30T19:01:39.031Z","1.16.0":"2020-04-30T19:06:42.156Z","1.16.2-next-1588354229-ed743abe.0":"2020-05-01T17:31:32.914Z","1.16.1":"2020-05-01T17:32:41.480Z","1.16.3-next-1588356827-cf7323c9.0":"2020-05-01T18:14:47.002Z","1.16.2":"2020-05-01T18:21:22.902Z","1.16.4-next-1588589908-9c567ddf.0":"2020-05-04T10:59:20.346Z","1.16.3":"2020-05-04T11:23:15.091Z","1.16.4-next-1588592046-bc6a9bbc.0":"2020-05-04T11:34:55.331Z","1.16.4-next-1588593653-106e99c7.0":"2020-05-04T12:01:44.209Z","1.16.4-next-1588593807-3e0cf026.0":"2020-05-04T12:04:25.646Z","1.16.4-next-1588594276-c5d635f2.0":"2020-05-04T12:12:18.360Z","1.16.5-next-1588598770-fdbba1d7.0":"2020-05-04T13:27:06.094Z","1.16.4":"2020-05-04T14:22:06.718Z","1.17.1-next-1588602342-9eead474.0":"2020-05-04T14:26:40.982Z","1.17.0":"2020-05-04T14:33:45.099Z","1.17.1-next-1588620657-edccecc6.0":"2020-05-04T19:31:49.484Z","1.17.1-next-1588670928-da808cf3.0":"2020-05-05T09:29:46.909Z","1.17.2-next-1588676577-415ef4c7.0":"2020-05-05T11:03:48.657Z","1.18.1-next-1588677172-e7f92424.0":"2020-05-05T11:13:55.927Z","1.18.1-next-1588678598-df36a043.0":"2020-05-05T11:37:35.566Z","1.18.0":"2020-05-05T11:41:47.551Z","1.18.1-next-1588689440-43307b75.0":"2020-05-05T14:38:17.359Z","1.18.1-next-1588762242-59d91334.0":"2020-05-06T10:51:37.232Z","1.18.1-next-1588765756-2ff6c5a9.0":"2020-05-06T11:50:10.606Z","1.18.1-next-1588772496-66e5946d.0":"2020-05-06T13:42:34.977Z","1.19.0":"2020-05-06T13:59:20.540Z","1.19.1-next-1588774338-5d34acf2.0":"2020-05-06T14:13:13.849Z","1.19.1-next-1588945279-52bc97f4.0":"2020-05-08T13:42:20.535Z","1.19.1-next-1588945346-7d3df1de.0":"2020-05-08T13:43:25.740Z","1.19.1-next-1588945363-9ee32214.0":"2020-05-08T13:43:40.155Z","1.20.0":"2020-05-08T13:52:28.642Z","1.20.1-next-1588945919-afaf5e24.0":"2020-05-08T13:53:00.678Z","1.20.2-next-1589117911-a22f6e9a.0":"2020-05-10T13:39:34.782Z","1.20.1":"2020-05-10T13:43:21.851Z","1.21.0-alpha.0":"2020-05-11T11:48:02.560Z","1.20.3-next-1589201494-1c832d4a.0":"2020-05-11T12:52:31.289Z","1.20.3-next-1589201539-0a882432.0":"2020-05-11T12:53:26.133Z","1.20.2":"2020-05-11T12:55:22.633Z","1.20.3-next-1589218968-7f515349.0":"2020-05-11T17:43:41.972Z","1.20.3-next-1589291190-b110455e.0":"2020-05-12T13:47:49.724Z","1.20.3-next-1589293140-d294d59f.0":"2020-05-12T14:20:01.672Z","1.20.3-next-1589293209-099c3cf3.0":"2020-05-12T14:21:07.195Z","1.21.0":"2020-05-12T14:24:46.230Z","1.21.1-next-1589293456-ade91ab0.0":"2020-05-12T14:25:21.094Z","1.22.0-alpha.0":"2020-05-12T20:55:21.286Z","1.22.0-alpha.1":"2020-05-12T23:24:06.951Z","1.22.0-alpha.2":"2020-05-13T00:03:19.513Z","1.22.1-next-1589385187-faa6c034.0":"2020-05-13T15:54:04.732Z","1.22.1-next-1589389614-bcc4482b.0":"2020-05-13T17:07:56.330Z","1.22.1-next-1589389698-9ba6d576.0":"2020-05-13T17:09:19.282Z","1.22.1-next-1589389733-13fc30cf.0":"2020-05-13T17:09:50.544Z","1.22.1-next-1589389859-c943ebbf.0":"2020-05-13T17:12:00.483Z","1.22.1-next-1589389897-1088a822.0":"2020-05-13T17:12:47.207Z","1.22.1-next-1589389946-3e06b0b0.0":"2020-05-13T17:13:28.057Z","1.22.1-next-1589390100-e1baccad.0":"2020-05-13T17:16:08.522Z","1.22.1-next-1589392925-6273f4ea.0":"2020-05-13T18:03:07.595Z","1.22.0":"2020-05-13T18:11:22.062Z","1.22.1-next-1589462065-a8608e8a.0":"2020-05-14T13:15:28.896Z","1.23.1-next-1589462132-2bb55742.0":"2020-05-14T13:16:26.021Z","1.23.0":"2020-05-14T13:19:20.548Z","1.23.1-next-1589481036-0bc69bbd.0":"2020-05-14T18:31:33.803Z","1.24.0-alpha.0":"2020-05-14T19:37:54.758Z","1.24.0-alpha.2":"2020-05-14T22:44:56.119Z","1.23.1-next-1589524507-c42b588e.0":"2020-05-15T06:36:06.712Z","1.23.2-next-1589524553-bb0b9b7f.0":"2020-05-15T06:36:48.314Z","1.23.1":"2020-05-15T06:37:37.248Z","1.24.0-alpha.3":"2020-05-15T17:22:45.073Z","1.23.3-next-1589570475-f51dc910.0":"2020-05-15T19:22:19.111Z","1.23.2":"2020-05-15T20:08:17.444Z","1.23.3-next-1589578847-0d14d106.0":"2020-05-15T21:42:02.099Z","1.23.3-next-1589578947-85d4b5b7.0":"2020-05-15T21:43:21.075Z","1.24.1-next-1589579330-558c1799.0":"2020-05-15T21:49:49.183Z","1.24.0":"2020-05-15T21:50:10.082Z","1.25.0-alpha.0":"2020-05-15T21:53:09.466Z","1.23.1-next-1589792715-8029d547.0":"2020-05-18T09:06:21.741Z","1.23.1-next-1589793637-a10510a7.0":"2020-05-18T09:21:31.755Z","1.23.1-next-1589798825-92958328.0":"2020-05-18T10:47:59.505Z","1.23.1-next-1589803777-2427c085.0":"2020-05-18T12:10:35.134Z","1.25.0-next-1589811012-89e82182.0":"2020-05-18T14:11:18.676Z","1.25.1-next-1589811313-bbec18d0.0":"2020-05-18T14:16:10.409Z","1.25.0":"2020-05-18T14:17:25.616Z","1.23.1-next-1589878001-633ac722.0":"2020-05-19T08:47:52.516Z","1.25.1-next-1589880716-0dbde70a.0":"2020-05-19T09:32:48.804Z","1.26.1-next-1589880919-c6d2bee4.0":"2020-05-19T09:36:21.357Z","1.26.0":"2020-05-19T09:39:08.221Z","1.26.1-next-1589883839-2e2c9df3.0":"2020-05-19T10:25:01.725Z","1.26.1-next-1589886107-b1758c8e.0":"2020-05-19T11:02:42.484Z","1.26.2-next-1589886254-26f56d36.0":"2020-05-19T11:05:13.924Z","1.26.2-next-1589888388-7d1a70f9.0":"2020-05-19T11:40:47.917Z","1.26.1":"2020-05-19T11:42:55.014Z","1.26.3-next-1589890489-c84cac0a.0":"2020-05-19T12:15:47.307Z","1.26.2":"2020-05-19T12:17:36.588Z","1.26.3-next-1589890819-a83e32fe.0":"2020-05-19T12:21:20.526Z","1.26.3-next-1589891344-da6ef43b.0":"2020-05-19T12:30:08.897Z","1.26.3-next-1589921783-6c6160f9.0":"2020-05-19T20:57:24.660Z","1.26.3-next-1589966072-5a827f9f.0":"2020-05-20T09:15:30.356Z","1.26.4-next-1589966477-7bfd5b31.0":"2020-05-20T09:22:13.997Z","1.26.3":"2020-05-20T10:45:46.700Z","1.26.4-next-1589978275-ff82b99b.0":"2020-05-20T12:38:52.359Z","1.26.4-next-1589979034-aca67ae9.0":"2020-05-20T12:51:34.610Z","1.26.4-next-1589985804-757ff339.0":"2020-05-20T14:44:23.967Z","1.26.4-next-1589988492-4b2f4f3b.0":"2020-05-20T15:29:08.734Z","1.26.4-next-1590002479-505efef0.0":"2020-05-20T19:22:16.111Z","1.26.4-next-1590005800-9e59a3df.0":"2020-05-20T20:17:33.026Z","1.26.4-next-1590018961-f5311033.0":"2020-05-20T23:56:59.946Z","1.26.4-next-1590045563-e831796e.0":"2020-05-21T07:20:21.105Z","1.26.4-next-1590045758-3ddecc8d.0":"2020-05-21T07:23:34.055Z","1.26.4-next-1590058605-2c1b89cd.0":"2020-05-21T10:57:45.398Z","1.27.1-next-1590059385-7692bf45.0":"2020-05-21T11:10:54.012Z","1.27.1-next-1590064035-da1f640c.0":"2020-05-21T12:28:06.899Z","1.27.0":"2020-05-21T12:34:28.561Z","1.27.1-next-1590077635-08d067b6.0":"2020-05-21T16:15:01.488Z","1.27.1-next-1590077877-848f8e4e.0":"2020-05-21T16:18:55.089Z","1.27.2-next-1590077984-844e6fcc.0":"2020-05-21T16:20:42.053Z","1.27.1":"2020-05-21T16:23:17.865Z","1.27.2-next-1590081909-aeaed87d.0":"2020-05-21T17:26:10.918Z","1.27.3-next-1590082002-28f676a4.0":"2020-05-21T17:27:40.612Z","1.27.2":"2020-05-21T17:27:54.586Z","1.27.4-next-1590087390-1c468893.0":"2020-05-21T18:57:24.593Z","1.27.3":"2020-05-21T19:01:04.891Z","1.27.4":"2020-05-22T12:31:05.360Z","1.27.5-next-1590157290-6f474bee.0":"2020-05-22T14:22:23.129Z","1.27.5-next-1590160837-01d1da34.0":"2020-05-22T15:21:36.453Z","1.27.6-next-1590161219-ff3615f3.0":"2020-05-22T15:28:00.126Z","1.27.5":"2020-05-22T15:29:10.958Z","1.27.6-next-1590415848-8205dcaf.0":"2020-05-25T14:11:45.919Z","1.27.6-next-1590428158-f3675a8b.0":"2020-05-25T17:36:53.943Z","1.27.6-next-1590437485-46f258a0.0":"2020-05-25T20:12:24.221Z","1.27.6-next-1590441025-3e80e0f3.0":"2020-05-25T21:11:21.037Z","1.27.6-next-1590441134-b822c2d3.0":"2020-05-25T21:13:12.240Z","1.28.0-next-1590448226-1ae089b3.0":"2020-05-25T23:11:14.310Z","1.28.0-next-1590449006-2b6f9305.0":"2020-05-25T23:24:19.405Z","1.28.0-next-1590449071-86e37db1.0":"2020-05-25T23:25:20.857Z","1.28.0-next-1590449481-04cf5664.0":"2020-05-25T23:32:15.668Z","1.28.0-next-1590449949-895e7338.0":"2020-05-25T23:40:03.537Z","1.28.0-next-1590450972-a672aa2f.0":"2020-05-25T23:57:04.147Z","1.27.6-next-1590492763-7bd63ac9.0":"2020-05-26T11:33:48.541Z","1.27.6-next-1590493206-7896d0ae.0":"2020-05-26T11:41:02.464Z","1.27.6-next-1590498104-a5483cf0.0":"2020-05-26T13:02:43.775Z","1.27.6-next-1590508839-da525856.0":"2020-05-26T16:01:42.342Z","1.27.7-next-1590508927-36f5b9fb.0":"2020-05-26T16:03:04.147Z","1.28.1-next-1590509032-6ba1c4a1.0":"2020-05-26T16:04:50.943Z","1.28.0":"2020-05-26T16:10:22.169Z","1.28.1-next-1590511415-ea9f7e13.0":"2020-05-26T16:44:29.944Z","1.28.1-next-1590514632-ac064b8d.0":"2020-05-26T17:38:15.390Z","1.28.1-next-1590517398-ffad5d29.0":"2020-05-26T18:24:16.345Z","1.28.1-next-1590517451-70eda305.0":"2020-05-26T18:25:11.250Z","1.29.0-next-1590530036-0a284992.0":"2020-05-26T21:54:50.995Z","1.29.0-next-1590532441-70a3b072.0":"2020-05-26T22:35:01.163Z","1.28.2-next-1590579745-33aeb253.0":"2020-05-27T11:43:30.793Z","1.28.1":"2020-05-27T11:48:33.220Z","1.28.2-next-1590597417-c9023c63.0":"2020-05-27T16:37:56.876Z","1.28.3-next-1590597421-ce388866.0":"2020-05-27T16:38:18.285Z","1.28.2":"2020-05-27T16:42:42.898Z","1.29.0-next-1590600687-db417949.0":"2020-05-27T17:32:23.024Z","1.29.0-next-1590606876-385dca94.0":"2020-05-27T19:15:40.743Z","1.29.0-next-1590613190-2c3e1e10.0":"2020-05-27T21:00:41.472Z","1.29.0-next-1590641329-5c9e58bc.0":"2020-05-28T04:50:12.320Z","1.28.3-next-1590642401-5950c000.0":"2020-05-28T05:07:34.635Z","1.28.3-next-1590663854-6033b96f.0":"2020-05-28T11:05:10.085Z","1.28.3-next-1590663861-1758f911.0":"2020-05-28T11:05:14.778Z","1.28.3-next-1590664692-3d77f6cd.0":"2020-05-28T11:19:06.554Z","1.28.3-next-1590675419-db473b15.0":"2020-05-28T14:17:51.020Z","1.29.0-next-1590688452-314d2cdd.0":"2020-05-28T17:55:08.074Z","1.28.3-next-1590704463-5359c1c5.0":"2020-05-28T22:22:02.030Z","1.28.3-next-1590756444-f050cca6.0":"2020-05-29T12:48:26.886Z","1.28.3-next-1590756692-46e13d75.0":"2020-05-29T12:52:29.268Z","1.29.1-next-1590759925-ddbfefbb.0":"2020-05-29T13:46:25.347Z","1.29.1-next-1590765685-e5eb9caf.0":"2020-05-29T15:22:27.452Z","1.29.0":"2020-05-29T15:26:40.180Z","1.29.1-next-1590770489-d78d36dd.0":"2020-05-29T16:42:30.122Z","1.29.2-next-1590770536-04047cfc.0":"2020-05-29T16:43:19.417Z","1.29.1":"2020-05-29T16:47:40.098Z","1.30.0-alpha.0":"2020-05-30T21:07:28.112Z","1.29.2-next-1591044917-93126d54.0":"2020-06-01T20:56:12.733Z","1.29.2-next-1591044990-d74e8653.0":"2020-06-01T20:57:33.074Z","1.29.3-next-1591045435-55b9958b.0":"2020-06-01T21:04:53.146Z","1.29.3-next-1591046165-cdd6f1cb.0":"2020-06-01T21:17:10.694Z","1.29.2":"2020-06-01T21:18:42.539Z","1.29.3-next-1591100487-18281a77.0":"2020-06-02T12:22:35.039Z","1.29.3-next-1591111600-fbb740aa.0":"2020-06-02T15:27:36.224Z","1.29.3-next-1591113492-9f6a12ba.0":"2020-06-02T15:59:10.971Z","1.29.4-next-1591113534-9b6909f6.0":"2020-06-02T15:59:59.224Z","1.29.3":"2020-06-02T16:06:40.441Z","1.29.4-next-1591114215-1efef392.0":"2020-06-02T16:11:09.433Z","1.30.1-next-1591114463-c3a3f4ce.0":"2020-06-02T16:15:18.387Z","1.30.0":"2020-06-02T16:20:13.049Z","1.30.1-next-1591123259-bc695512.0":"2020-06-02T18:41:55.639Z","1.30.1-next-1591123469-9f0ca633.0":"2020-06-02T18:45:22.757Z","1.30.1-next-1591194650-d93ce825.0":"2020-06-03T14:31:50.684Z","1.30.1-next-1591195356-f90a9ce6.0":"2020-06-03T14:43:32.784Z","1.30.3-next-1591196000-1d9fe5fd.0":"2020-06-03T14:54:22.352Z","1.30.2":"2020-06-03T14:59:49.693Z","1.30.3-next-1591269758-7bbf765f.0":"2020-06-04T11:23:31.015Z","1.30.3-next-1591269972-f47e3a29.0":"2020-06-04T11:27:10.339Z","1.31.1-next-1591270216-d49d051d.0":"2020-06-04T11:31:11.929Z","1.31.1-next-1591271175-b78bc971.0":"2020-06-04T11:47:13.720Z","1.31.1-next-1591273893-3e905f3e.0":"2020-06-04T12:32:29.446Z","1.31.1-next-1591274461-8468c460.0":"2020-06-04T12:41:57.154Z","1.30.3-next-1591274725-6465e8df.0":"2020-06-04T12:46:36.663Z","1.31.1-next-1591275371-c99481f4.0":"2020-06-04T12:57:09.460Z","1.31.1-next-1591276545-755bf3a2.0":"2020-06-04T13:16:40.628Z","1.30.3-next-1591277622-d6c14e49.0":"2020-06-04T13:34:33.840Z","1.30.4-next-1591278945-a98191ce.0":"2020-06-04T13:56:47.239Z","1.30.3":"2020-06-04T14:17:04.810Z","1.31.1-next-1591280492-cba2eb54.0":"2020-06-04T14:22:21.154Z","1.31.1-next-1591281064-cf89689f.0":"2020-06-04T14:32:14.867Z","1.31.0":"2020-06-04T14:38:17.114Z","1.31.1-next-1591344635-6c092169.0":"2020-06-05T08:11:42.336Z","1.31.1-next-1591351320-1fdc5205.0":"2020-06-05T10:03:00.562Z","1.31.1-next-1591356427-150ae696.0":"2020-06-05T11:28:24.604Z","1.31.1-next-1591356454-10b61648.0":"2020-06-05T11:28:38.309Z","1.31.1-next-1591357570-40a48007.0":"2020-06-05T11:47:19.208Z","1.32.1-next-1591357781-8f136de9.0":"2020-06-05T11:50:48.033Z","1.32.0":"2020-06-05T11:53:47.418Z","1.32.1-next-1591362528-372d9914.0":"2020-06-05T13:09:57.399Z","1.32.2-next-1591362632-ea5c8d75.0":"2020-06-05T13:11:41.638Z","1.32.1":"2020-06-05T13:31:16.062Z","1.32.2-next-1591365315-aa6e26f7.0":"2020-06-05T13:56:23.346Z","1.32.3-next-1591365909-4545c691.0":"2020-06-05T14:06:18.749Z","1.32.2":"2020-06-05T14:15:24.950Z","1.32.3-next-1591384132-b7f29ade.0":"2020-06-05T19:10:08.433Z","1.32.4-next-1591384237-2e40e89b.0":"2020-06-05T19:11:41.112Z","1.32.3":"2020-06-05T19:12:33.469Z","1.32.4-next-1591604924-0c44f6b1.0":"2020-06-08T08:29:53.476Z","1.30.3-next-1591615549-03794b94.0":"2020-06-08T11:26:43.123Z","1.30.3-next-1591616664-dbbaaf44.0":"2020-06-08T11:45:26.691Z","1.32.4-next-1591617441-66aafce1.0":"2020-06-08T11:58:32.877Z","1.32.4-next-1591617746-af2a6a42.0":"2020-06-08T12:03:30.331Z","1.32.5-next-1591617841-57ead78d.0":"2020-06-08T12:05:05.049Z","1.32.4":"2020-06-08T12:14:36.836Z","1.32.5-next-1591620669-d62f2e70.0":"2020-06-08T12:52:13.123Z","1.32.5-next-1591627086-47750462.0":"2020-06-08T14:39:20.308Z","1.32.5-next-1591629014-b4ad35a6.0":"2020-06-08T15:11:25.314Z","1.32.5-next-1591702415-542797cd.0":"2020-06-09T11:34:44.377Z","1.33.1-next-1591703336-2f6fc8a1.0":"2020-06-09T11:50:00.335Z","1.33.0":"2020-06-09T16:06:07.397Z","1.33.1-alpha.0":"2020-06-09T19:35:52.659Z","1.33.1-next-1591791327-80d95168.0":"2020-06-10T12:16:39.782Z","1.33.2-alpha.0":"2020-06-10T13:49:27.701Z","1.33.1-next-1591797511-e17e8d73.0":"2020-06-10T13:59:42.072Z","1.33.1-next-1591798373-9eda5fdf.0":"2020-06-10T14:13:58.768Z","1.33.1-next-1591798472-ce0f7e29.0":"2020-06-10T14:15:46.610Z","1.33.2-next-1591804159-9bd526b5.0":"2020-06-10T15:50:32.656Z","1.33.1":"2020-06-10T15:55:30.004Z","1.33.2-next-1591818633-b0caea5a.0":"2020-06-10T19:51:45.912Z","1.33.3-next-1591820164-cc7e19c7.0":"2020-06-10T20:17:11.974Z","1.33.2":"2020-06-10T20:23:22.324Z","1.33.1-next-1591951804-3b4ace33.0":"2020-06-12T08:51:14.681Z","1.33.1-next-1591954589-e953b4c5.0":"2020-06-12T09:37:39.015Z","1.33.3-next-1591961052-03ed3950.0":"2020-06-12T11:25:21.995Z","1.33.1-next-1591961380-33c74c42.0":"2020-06-12T11:30:49.879Z","1.33.3-next-1591963237-a7993127.0":"2020-06-12T12:01:43.780Z","1.34.1-next-1591963247-44817e7a.0":"2020-06-12T12:01:55.322Z","1.34.0":"2020-06-12T12:10:22.581Z","1.33.1-next-1591967872-6714c2a2.0":"2020-06-12T13:19:09.003Z","1.33.1-next-1591967888-8f086b96.0":"2020-06-12T13:19:16.260Z","1.33.1-next-1591967915-55cc7765.0":"2020-06-12T13:19:41.803Z","1.33.1-next-1591967919-af90a447.0":"2020-06-12T13:19:52.249Z","1.33.1-next-1591967907-c86d39f8.0":"2020-06-12T13:19:57.195Z","1.34.1-next-1591972972-e628a5b7.0":"2020-06-12T14:43:57.486Z","1.34.2-next-1591973147-3bab3afb.0":"2020-06-12T14:46:55.113Z","1.34.1":"2020-06-12T14:59:24.996Z","1.33.1-next-1591974637-a2f64d24.0":"2020-06-12T15:11:53.261Z","1.33.1-next-1591974983-9f88a9f2.0":"2020-06-12T15:17:33.544Z","1.33.1-next-1591979403-bb779dd4.0":"2020-06-12T16:31:16.597Z","1.33.1-next-1591979774-e0ec5d31.0":"2020-06-12T16:37:19.790Z","1.33.1-next-1591980112-1b8504e1.0":"2020-06-12T16:43:01.255Z","1.34.2-next-1591980763-ee2eff93.0":"2020-06-12T16:54:01.546Z","1.34.3-next-1591980852-f46b52c3.0":"2020-06-12T16:55:33.140Z","1.34.3-next-1591981842-7f06c136.0":"2020-06-12T17:11:49.857Z","1.34.2":"2020-06-12T19:07:05.677Z","1.34.3-next-1592225481-7fe7f490.0":"2020-06-15T12:52:24.661Z","1.34.4-next-1592228297-29715c4e.0":"2020-06-15T13:39:32.323Z","1.34.3":"2020-06-15T13:39:47.786Z","1.34.4-next-1592237100-c90c0f9e.0":"2020-06-15T16:06:09.477Z","1.34.4-next-1592237121-c1b532c3.0":"2020-06-15T16:06:33.213Z","1.34.5-next-1592237203-db7d8d7e.0":"2020-06-15T16:07:55.793Z","1.34.4":"2020-06-15T16:19:41.447Z","1.34.5-next-1592249749-82f3e3ad.0":"2020-06-15T19:36:50.991Z","1.34.5-next-1592256951-45cde524.0":"2020-06-15T21:37:03.760Z","1.34.5-next-1592257149-8d27b08e.0":"2020-06-15T21:40:16.159Z","1.34.5-next-1592296946-b1cc37e3.0":"2020-06-16T08:43:38.815Z","1.34.5-next-1592297488-3817044b.0":"2020-06-16T08:52:38.577Z","1.34.5-next-1592307461-e564d981.0":"2020-06-16T11:38:48.710Z","1.34.5-next-1592309606-0e35e72d.0":"2020-06-16T12:14:35.383Z","1.34.6-next-1592309691-c5e5b11d.0":"2020-06-16T12:15:55.923Z","1.34.6-next-1592310367-a3cfa8f5.0":"2020-06-16T12:27:21.577Z","1.34.5":"2020-06-16T12:27:46.319Z","1.34.6-next-1592311845-d7d4041f.0":"2020-06-16T12:51:53.252Z","1.34.6-next-1592312588-87822b57.0":"2020-06-16T13:04:22.124Z","1.34.7-next-1592312672-1df663a8.0":"2020-06-16T13:05:47.635Z","1.34.7-next-1592312705-2b105632.0":"2020-06-16T13:06:06.994Z","1.34.7-next-1592313144-1f253e41.0":"2020-06-16T13:13:32.171Z","1.34.7-next-1592314772-89869084.0":"2020-06-16T13:40:35.630Z","1.34.6":"2020-06-16T13:45:49.147Z","1.34.7-next-1592315768-d1b40077.0":"2020-06-16T13:57:21.817Z","1.34.7-next-1592317014-c857295c.0":"2020-06-16T14:18:13.324Z","1.34.7-next-1592318936-b9045aec.0":"2020-06-16T14:50:18.209Z","1.34.8-next-1592318977-fe0422f0.0":"2020-06-16T14:50:48.747Z","1.34.7":"2020-06-16T14:57:16.591Z","1.34.8-next-1592320383-bfb04986.0":"2020-06-16T15:14:11.380Z","1.34.9-next-1592320476-e5788115.0":"2020-06-16T15:15:43.327Z","1.34.8":"2020-06-16T15:27:56.481Z","1.34.9-next-1592323262-472d13c7.0":"2020-06-16T16:02:14.645Z","1.34.10-next-1592323271-b9c2ae6d.0":"2020-06-16T16:02:23.138Z","1.34.9":"2020-06-16T16:10:01.540Z","1.34.10-next-1592323825-367c6528.0":"2020-06-16T16:11:36.377Z","1.34.10-next-1592325881-76268dd8.0":"2020-06-16T16:45:39.732Z","1.34.11-next-1592327309-198dc88c.0":"2020-06-16T17:09:39.691Z","1.34.10":"2020-06-16T17:18:57.451Z","1.34.11-next-1592329819-f0f1d007.0":"2020-06-16T17:51:26.245Z","1.34.11-next-1592386147-bae79f47.0":"2020-06-17T09:30:14.427Z","1.34.11-next-1592426534-c82358d9.0":"2020-06-17T20:43:18.505Z","1.34.12-next-1592426609-500e177f.0":"2020-06-17T20:44:37.014Z","1.34.11":"2020-06-17T20:49:25.986Z","1.34.12-next-1592483956-4c1616e6.0":"2020-06-18T12:40:33.683Z","1.35.1-next-1592483976-87888543.0":"2020-06-18T12:40:51.902Z","1.35.0":"2020-06-18T12:49:36.920Z","1.35.1-next-1592485157-c11d4ec9.0":"2020-06-18T13:00:21.444Z","1.35.2-next-1592487094-eda51d10.0":"2020-06-18T13:32:36.012Z","1.35.1":"2020-06-18T13:33:01.875Z","1.35.2-next-1592577984-bf61b231.0":"2020-06-19T14:47:26.269Z","1.35.2-next-1592579281-878b8fe2.0":"2020-06-19T15:09:32.444Z","1.35.2-next-1592847960-b1f4455b.0":"2020-06-22T17:47:07.325Z","1.35.2-next-1593034822-7be62321.0":"2020-06-24T21:43:14.820Z","1.35.2-next-1593051570-6a0e3ec5.0":"2020-06-25T02:22:08.508Z","1.35.2-next-1593052063-3ff2dc97.0":"2020-06-25T02:30:36.545Z","1.35.2-next-1593053597-087fad45.0":"2020-06-25T02:54:16.079Z","1.35.2-next-1593053845-702afaac.0":"2020-06-25T02:58:33.679Z","1.35.3-next-1593055253-0c4dc1da.0":"2020-06-25T03:22:02.185Z","1.35.2":"2020-06-25T03:25:47.249Z","1.35.3-next-1593086359-6ad88faf.0":"2020-06-25T12:00:30.343Z","1.35.3-next-1593088664-326f25c4.0":"2020-06-25T12:38:51.013Z","1.35.3-next-1593120365-67018c4c.0":"2020-06-25T21:27:09.602Z","1.35.3-next-1593170082-5d285290.0":"2020-06-26T11:15:55.122Z","1.35.4-next-1593170336-82741007.0":"2020-06-26T11:19:57.191Z","1.35.5-next-1593171431-5063cfd0.0":"2020-06-26T11:38:12.692Z","1.35.4":"2020-06-26T11:43:35.689Z","1.35.5-next-1593172009-2bf4674d.0":"2020-06-26T11:47:57.168Z","1.36.1-next-1593172030-a801d848.0":"2020-06-26T11:48:15.650Z","1.36.0":"2020-06-26T12:11:01.969Z","1.36.1-next-1593184843-51b37031.0":"2020-06-26T15:23:21.101Z","1.36.1-next-1593196174-f7ba2714.0":"2020-06-26T18:32:30.436Z","1.36.1-next-1593197890-f1d237ef.0":"2020-06-26T19:00:56.095Z","1.36.1-next-1593228055-005c0619.0":"2020-06-27T03:23:37.222Z","1.36.1-next-1593235437-a888e8d6.0":"2020-06-27T05:26:52.222Z","1.36.1-next-1593236429-51a1dc55.0":"2020-06-27T05:43:17.502Z","1.36.1-next-1593431998-aaaa9322.0":"2020-06-29T12:02:41.196Z","1.36.1-next-1593433296-6c43e818.0":"2020-06-29T12:24:37.004Z","1.36.1-next-1593441245-06d0ffe1.0":"2020-06-29T14:37:34.976Z","1.36.1-next-1593441744-b471c351.0":"2020-06-29T14:45:02.994Z","1.36.1-next-1593443432-deedac67.0":"2020-06-29T15:13:17.289Z","1.36.1-next-1593444146-e57c9734.0":"2020-06-29T15:25:35.151Z","1.37.1-next-1593444160-67f3495a.0":"2020-06-29T15:26:03.233Z","1.37.0":"2020-06-29T15:33:21.432Z","1.37.1-next-1593527079-fd512ae5.0":"2020-06-30T14:27:31.488Z","1.37.1-next-1594032190-b01bdd5a.0":"2020-07-06T10:46:08.650Z","2.0.0-alpha.0":"2020-07-06T11:44:16.393Z","1.37.1-next-1594042055-f7fb2c43.0":"2020-07-06T13:30:25.175Z","1.37.1-next-1594042844-211acf27.0":"2020-07-06T13:43:31.212Z","1.37.2-next-1594042958-931b56e8.0":"2020-07-06T13:45:40.733Z","1.37.1":"2020-07-06T13:47:46.926Z","1.37.1-next-1594111137-d6339112.0":"2020-07-07T08:41:44.948Z","2.0.0-alpha.1":"2020-07-08T11:04:59.371Z","1.37.2-next-1594231465-f4cbb7fb.0":"2020-07-08T18:07:28.118Z","1.37.2-next-1594232161-8a51cbd6.0":"2020-07-08T18:18:54.283Z","1.37.2-next-1594232564-8a51cbd6.0":"2020-07-08T18:26:12.892Z","1.37.2-next-1594282725-6cbe6484.0":"2020-07-09T08:21:39.514Z","1.37.2-next-1594283073-8a557557.0":"2020-07-09T08:27:25.785Z","1.37.2-next-1594293976-19cc07b1.0":"2020-07-09T11:29:46.126Z","1.37.2-next-1594294015-b2927c66.0":"2020-07-09T11:30:21.098Z","1.37.2-next-1594294994-a97cd941.0":"2020-07-09T11:46:21.491Z","1.38.1-next-1594295189-8b103c1f.0":"2020-07-09T11:49:30.230Z","1.38.0":"2020-07-09T11:51:16.848Z","1.38.1-next-1594312222-cf1fd3f3.0":"2020-07-09T16:33:29.103Z","1.38.1-next-1594328729-bc58f996.0":"2020-07-09T21:08:43.918Z","1.38.1-next-1594330997-c93aa09e.0":"2020-07-09T21:46:24.359Z","1.38.1-next-1594332443-8a00c5b5.0":"2020-07-09T22:10:16.872Z","1.38.1-next-1594369970-663419e3.0":"2020-07-10T08:35:40.478Z","1.38.1-next-1594376555-664a3d11.0":"2020-07-10T10:25:08.547Z","1.38.1-next-1594378057-f713e94a.0":"2020-07-10T10:50:22.163Z","1.38.2-next-1594378252-f5cfe71d.0":"2020-07-10T10:53:35.942Z","1.38.1":"2020-07-10T10:54:15.574Z","1.38.3-next-1594384746-32ea3f02.0":"2020-07-10T12:41:51.420Z","1.38.2":"2020-07-10T12:43:31.607Z","1.38.3-next-1594385777-433e3ace.0":"2020-07-10T12:59:06.643Z","2.0.0-alpha.5":"2020-07-10T13:06:05.701Z","1.38.3-next-1594642501-8d89315d.0":"2020-07-13T12:18:01.730Z","1.38.3-next-1594643568-b7f9a6e2.0":"2020-07-13T12:35:43.679Z","1.38.3-next-1594650335-45c13633.0":"2020-07-13T14:28:23.831Z","1.39.2-next-1594654403-5d690c94.0":"2020-07-13T15:36:18.422Z","1.39.1":"2020-07-13T15:37:22.996Z","1.38.3-next-1594737036-936a2d93.0":"2020-07-14T14:34:12.877Z","1.39.3-next-1594740572-0e08636c.0":"2020-07-14T15:32:26.955Z","1.39.3-next-1594754486-3f4c8d9c.0":"2020-07-14T19:24:10.464Z","1.39.2":"2020-07-14T19:25:28.690Z","1.39.3-next-1594809539-bfceb7fe.0":"2020-07-15T10:41:45.372Z","1.40.1-next-1594809654-8761826e.0":"2020-07-15T10:43:40.841Z","1.40.0":"2020-07-15T10:44:23.262Z","1.39.3-next-1594810237-e5337606.0":"2020-07-15T10:53:29.640Z","1.39.3-next-1594813468-60d8396b.0":"2020-07-15T11:47:22.971Z","1.39.3-next-1594814447-a26e270e.0":"2020-07-15T12:03:57.229Z","1.39.3-next-1594832011-d4751dd8.0":"2020-07-15T16:56:25.380Z","1.39.3-next-1594832446-cac48aa9.0":"2020-07-15T17:03:43.778Z","1.39.3-next-1594833698-9129eb91.0":"2020-07-15T17:24:37.537Z","1.39.3-next-1594834400-b4212cd3.0":"2020-07-15T17:36:35.399Z","1.40.1-next-1594864906-2a16764c.0":"2020-07-16T02:05:54.385Z","1.40.1-next-1594868183-2f3f4e56.0":"2020-07-16T03:00:19.964Z","1.40.1-next-1594870573-e49491f7.0":"2020-07-16T03:40:09.369Z","1.40.1-next-1594898063-817e9867.0":"2020-07-16T11:18:00.534Z","1.41.1-next-1594899124-f8e682ca.0":"2020-07-16T11:35:54.036Z","1.41.1-next-1594904480-c3421ffc.0":"2020-07-16T13:05:16.373Z","1.41.1-next-1594905040-3733a603.0":"2020-07-16T13:15:00.888Z","1.41.2-next-1594911210-60d938fb.0":"2020-07-16T14:57:33.566Z","1.41.2-next-1594913330-b864e920.0":"2020-07-16T15:32:49.901Z","1.41.3-next-1594913470-2e2c5d18.0":"2020-07-16T15:35:00.132Z","1.41.2":"2020-07-16T16:36:28.632Z","1.41.3-next-1594917390-6046d6fd.0":"2020-07-16T16:40:44.136Z","1.41.3-next-1594926395-70ffccb0.0":"2020-07-16T19:10:31.083Z","1.41.3-next-1595005637-f8a8f5c3.0":"2020-07-17T17:11:24.979Z","1.41.3-next-1595008005-e0ee1f4e.0":"2020-07-17T17:50:25.568Z","1.41.3-next-1595008382-836a4804.0":"2020-07-17T17:56:48.307Z","1.41.3-next-1595010640-9d9a9ea1.0":"2020-07-17T18:35:04.054Z","1.41.3-next-1595268075-a3522449.0":"2020-07-20T18:05:41.425Z","1.41.2-next-1595282226-92693a43.0":"2020-07-20T22:00:31.722Z","1.41.2-next-1595294706-11805640.0":"2020-07-21T01:29:21.012Z","1.41.2-next-1595298686-48d5c565.0":"2020-07-21T02:35:14.698Z","1.41.3-next-1595300412-0bb5e5e3.0":"2020-07-21T03:04:19.348Z","1.41.3-next-1595327631-2b147e8c.0":"2020-07-21T10:37:48.015Z","1.41.4-next-1595328202-2351e36f.0":"2020-07-21T10:46:56.580Z","1.41.3":"2020-07-21T10:56:34.292Z","1.41.4-next-1595333985-ef318f78.0":"2020-07-21T12:24:11.675Z","1.41.4-next-1595334862-85cda14a.0":"2020-07-21T12:38:31.820Z","1.42.0":"2020-07-21T12:40:32.466Z","1.42.1-next-1595351340-3babebc5.0":"2020-07-21T17:13:15.785Z","1.42.1-next-1595357119-a3799158.0":"2020-07-21T18:49:44.865Z","1.42.1-next-1595358007-a285e756.0":"2020-07-21T19:04:29.196Z","1.42.2-next-1595358304-9ae40bc4.0":"2020-07-21T19:09:43.714Z","1.42.1":"2020-07-21T19:20:54.590Z","1.43.1-next-1595417423-bf3e63a7.0":"2020-07-22T11:35:19.518Z","1.43.0":"2020-07-22T11:41:02.637Z","1.43.1-next-1595432835-5e9d44f8.0":"2020-07-22T15:51:54.146Z","1.43.2-next-1595432988-9577659b.0":"2020-07-22T15:54:48.532Z","1.43.4-next-1595436809-1db87882.0":"2020-07-22T16:57:58.699Z","1.43.3":"2020-07-22T17:15:48.503Z","2.0.0-alpha.7":"2020-07-23T09:56:15.808Z","1.43.4-next-1595552590-48ce13aa.0":"2020-07-24T01:07:34.348Z","1.43.4-next-1595553515-81b33b65.0":"2020-07-24T01:23:12.632Z","1.43.5-next-1595554793-085b61e6.0":"2020-07-24T01:44:14.862Z","1.43.4":"2020-07-24T01:51:42.201Z","1.43.6-next-1595609316-2326a724.0":"2020-07-24T16:52:59.918Z","1.43.5":"2020-07-24T16:54:46.325Z","1.43.5-next-1595612787-b88d515f.0":"2020-07-24T17:51:04.325Z","1.43.6-next-1595720614-cacc6182.0":"2020-07-25T23:48:05.516Z","1.43.5-next-1595725185-860ebcb0.0":"2020-07-26T01:04:02.828Z","1.43.5-next-1595726573-6ab7a20c.0":"2020-07-26T01:27:04.181Z","1.43.6-next-1595848332-32fad928.0":"2020-07-27T11:16:43.539Z","1.43.7-next-1595848459-adcfd257.0":"2020-07-27T11:18:55.696Z","1.43.6":"2020-07-27T11:25:43.783Z","1.43.5-next-1595854815-cb58089e.0":"2020-07-27T13:04:56.141Z","1.43.7-next-1595963318-b2229295.0":"2020-07-28T19:13:39.554Z","1.43.7-next-1595964224-f1c7702d.0":"2020-07-28T19:29:13.842Z","1.43.7-next-1595964785-6312033f.0":"2020-07-28T19:37:59.556Z","1.43.7-next-1595964985-5bb00b39.0":"2020-07-28T19:41:36.898Z","1.43.7-next-1595965464-50de5295.0":"2020-07-28T19:49:14.772Z","1.43.7-next-1596042368-a87782f8.0":"2020-07-29T17:10:30.201Z","1.43.7-next-1596051671-32c819e6.0":"2020-07-29T19:42:29.659Z","1.43.7-next-1596053055-f01ecd48.0":"2020-07-29T20:05:34.803Z","1.43.7-next-1596056362-bce8356e.0":"2020-07-29T21:05:50.018Z","1.43.7-next-1596058289-1ce5aba3.0":"2020-07-29T21:32:53.514Z","1.44.1-next-1596063927-4812ee41.0":"2020-07-29T23:11:41.705Z","1.44.0":"2020-07-29T23:24:05.757Z","1.44.1-next-1596122797-252bda56.0":"2020-07-30T15:33:45.404Z","1.44.1-next-1596124738-091d8aaa.0":"2020-07-30T16:06:04.345Z","1.44.1-next-1596126560-b3ef1c69.0":"2020-07-30T16:38:33.637Z","1.44.1-next-1596131312-87c56632.0":"2020-07-30T17:58:03.336Z","1.44.1-next-1596134140-b6040981.0":"2020-07-30T18:46:20.029Z","1.44.2-next-1596141686-3444b9e7.0":"2020-07-30T20:52:07.426Z","1.43.7-next-1596142580-316d8f24.0":"2020-07-30T20:57:52.415Z","1.44.2-next-1596146994-607ba953.0":"2020-07-30T22:21:34.613Z","1.44.2-next-1596169244-e640738d.0":"2020-07-31T04:31:14.859Z","1.44.2-next-1596170076-4aa832d1.0":"2020-07-31T04:46:11.868Z","1.44.2-next-1596217722-c51db5f3.0":"2020-07-31T17:51:13.637Z","1.44.2-next-1596219609-d8c6f904.0":"2020-07-31T18:22:54.097Z","1.44.2-next-1596220109-18de1ce5.0":"2020-07-31T18:38:06.797Z","1.44.2-next-1596221461-45aa9c9d.0":"2020-07-31T18:53:32.149Z","1.44.2-next-1596222428-298ce5e2.0":"2020-07-31T19:09:33.734Z","1.44.2-next-1596411906-eb40c053.0":"2020-08-02T23:54:06.355Z","1.44.1":"2020-08-03T12:05:05.621Z","1.44.3-next-1596460637-eda6dd32.0":"2020-08-03T13:26:29.068Z","1.44.3-next-1596468860-99c97c9f.0":"2020-08-03T15:43:36.353Z","1.44.3-next-1596474634-7d70c2a5.0":"2020-08-03T17:20:14.214Z","1.44.3-next-1596488022-9427eeab.0":"2020-08-03T21:02:44.604Z","1.45.1":"2020-08-04T12:59:10.010Z","1.45.2-next-1596563413-5a5ebb15.0":"2020-08-04T17:59:28.061Z","1.45.2-next-1596578728-3928707d.0":"2020-08-04T22:14:48.592Z","1.45.3":"2020-08-04T22:53:30.647Z","1.45.4-next-1596701713-cdb4dbac.0":"2020-08-06T08:16:37.504Z","1.45.4-next-1596704983-7408682d.0":"2020-08-06T09:11:00.433Z","1.45.4-next-1596713300-529d7a6e.0":"2020-08-06T11:29:39.343Z","1.45.4-next-1596714259-44b326b6.0":"2020-08-06T11:45:36.403Z","1.45.4-next-1596715786-1423273f.0":"2020-08-06T12:11:15.779Z","1.45.4-next-1596723283-44ad01aa.0":"2020-08-06T14:21:26.012Z","1.45.5-next-1596724691-d5b4f1b4.0":"2020-08-06T14:45:20.767Z","1.45.6-next-1596725783-033db1aa.0":"2020-08-06T15:03:27.696Z","1.45.6-next-1596743099-62c8478e.0":"2020-08-06T19:54:20.817Z","2.0.1-next-1596745561-e221242d.0":"2020-08-06T20:27:18.165Z","1.45.6-next-1596752649-5a32328f.0":"2020-08-06T22:33:32.827Z","1.45.6-next-1596766432-a38c1cb8.0":"2020-08-07T02:21:09.948Z","1.45.6-next-1596767211-1e9105eb.0":"2020-08-07T02:36:16.246Z","1.45.7-next-1596768253-00276882.0":"2020-08-07T02:53:46.908Z","1.45.8-next-1596771421-46f425a3.0":"2020-08-07T03:46:35.102Z","1.45.10":"2020-08-07T04:31:49.359Z","1.46.0":"2020-08-07T13:23:12.385Z","2.0.1-next-1596814201-63a1d1b8.0":"2020-08-07T15:31:47.881Z","1.46.1-next-1597063734-6516962f.0":"2020-08-10T12:58:42.265Z","2.0.1-next-1597144623-0347f39c.0":"2020-08-11T11:19:48.700Z","2.0.1-next-1597146304-a4725a77.0":"2020-08-11T11:47:47.509Z","2.0.1-next-1597155073-2ea4a7fa.0":"2020-08-11T14:13:55.401Z","1.46.1-next-1597168996-f927fbc5.0":"2020-08-11T18:12:56.415Z","1.46.1-next-1597171954-a18e0f15.0":"2020-08-11T19:01:59.652Z","1.46.2-next-1597199939-9dfc4335.0":"2020-08-12T02:48:33.280Z","1.46.1":"2020-08-12T03:06:40.450Z","2.0.1-next-1597201691-4d17dedc.0":"2020-08-12T03:10:29.717Z","2.0.1-next-1597223939-7c1ae720.0":"2020-08-12T09:21:16.653Z","2.0.1-next-1597229103-6312c2e4.0":"2020-08-12T10:47:19.083Z","2.0.1-next-1597231755-f760a25e.0":"2020-08-12T11:31:53.933Z","2.0.1-next-1597232841-aa09393a.0":"2020-08-12T11:49:48.033Z","2.0.1-next-1597232911-ea9d2963.0":"2020-08-12T11:50:47.033Z","2.0.1-next-1597235074-ea9d2963.0":"2020-08-12T12:27:12.827Z","2.0.1-next-1597235917-23b1e88d.0":"2020-08-12T12:40:46.187Z","2.0.1-next-1597237166-8bba95b0.0":"2020-08-12T13:02:06.290Z","2.0.1-next-1597238010-37a6ff5a.0":"2020-08-12T13:15:50.750Z","2.0.0":"2020-08-12T13:32:31.312Z","2.0.1-next-1597239313-af45265a.0":"2020-08-12T13:37:40.357Z","2.0.1-next-1597239670-339bfd09.0":"2020-08-12T13:43:44.325Z","2.0.1-next-1597240037-339bfd09.0":"2020-08-12T13:49:27.596Z","2.0.1-next-1597246522-49e14675.0":"2020-08-12T15:37:48.626Z","2.0.1-next-1597246937-49e14675.0":"2020-08-12T15:44:54.557Z","2.0.1-next-1597248813-b2d73efa.0":"2020-08-12T16:16:06.753Z","2.0.1-next-1597250776-5a7997dc.0":"2020-08-12T16:48:46.416Z","2.0.1-next-1597251397-5a7997dc.0":"2020-08-12T16:58:59.716Z","2.0.1-next-1597262026-2e1c371d.0":"2020-08-12T19:55:38.204Z","2.0.1-next-1597262161-ec425d79.0":"2020-08-12T19:58:25.910Z","2.0.1-next-1597283887-ec425d79.0":"2020-08-13T02:00:45.423Z","2.0.1-next-1597316587-ec425d79.0":"2020-08-13T11:05:38.538Z","2.0.1-next-1597318746-239b9e83.0":"2020-08-13T11:41:36.675Z","2.0.1-next-1597322600-fa827fb5.0":"2020-08-13T12:45:38.060Z","2.0.1-next-1597324298-c52fcf64.0":"2020-08-13T13:14:31.564Z","2.0.1-next-1597325045-e4854fc2.0":"2020-08-13T13:26:35.008Z","2.0.1-next-1597325193-beecbbd0.0":"2020-08-13T13:29:03.929Z","2.0.1-next-1597326203-e4854fc2.0":"2020-08-13T13:45:36.338Z","2.0.1-next-1597327104-d9f8adba.0":"2020-08-13T14:01:05.178Z","2.0.1-next-1597330862-9edbb1e2.0":"2020-08-13T15:03:48.707Z","2.0.1-next-1597332243-f211c7eb.0":"2020-08-13T15:26:28.536Z","2.0.1-next-1597332303-7096cba0.0":"2020-08-13T15:27:11.308Z","2.0.1-next-1597333863-f211c7eb.0":"2020-08-13T15:53:54.334Z","2.0.1-next-1597335167-7096cba0.0":"2020-08-13T16:14:53.525Z","2.0.1-next-1597336578-7096cba0.0":"2020-08-13T16:38:49.451Z","2.0.1-next-1597344508-3e7f53cc.0":"2020-08-13T18:50:48.144Z","2.0.1-next-1597344989-3e7f53cc.0":"2020-08-13T18:58:51.569Z","2.0.1-next-1597345437-bd0d34c0.0":"2020-08-13T19:06:22.042Z","2.0.1-next-1597345983-759f44f4.0":"2020-08-13T19:15:26.830Z","2.0.1-next-1597346104-13163c5b.0":"2020-08-13T19:17:24.281Z","2.0.1-next-1597347302-13163c5b.0":"2020-08-13T19:37:51.182Z","2.0.1-next-1597348775-4100afc8.0":"2020-08-13T20:02:16.070Z","2.0.1":"2020-08-13T20:21:59.990Z","2.0.2-next-1597349994-566495b6.0":"2020-08-13T20:22:30.727Z","2.0.2-next-1597353011-cdf8d0f8.0":"2020-08-13T21:12:43.723Z","2.0.2-next-1597354003-32c76c10.0":"2020-08-13T21:29:09.615Z","2.0.2-next-1597368267-af8f77b9.0":"2020-08-14T01:26:31.907Z","2.0.2-next-1597407428-5889206a.0":"2020-08-14T12:19:27.618Z","2.0.2-next-1597408349-9e87af75.0":"2020-08-14T12:34:39.770Z","2.0.2-next-1597411199-381a2087.0":"2020-08-14T13:22:43.633Z","2.0.2-next-1597411881-828819f9.0":"2020-08-14T13:34:13.086Z","2.0.2-next-1597417313-e1f6b2e9.0":"2020-08-14T15:04:29.298Z","2.0.2-next-1597426437-bd242fea.0":"2020-08-14T17:36:19.845Z","2.0.2-next-1597426949-8ae0b5bb.0":"2020-08-14T17:44:57.920Z","2.0.3-next-1597426991-5cdf9518.0":"2020-08-14T17:45:32.435Z","2.0.2":"2020-08-14T18:00:11.231Z","2.0.3-next-1597429581-5cdf9518.0":"2020-08-14T18:28:56.874Z","2.0.3-next-1597430496-5cdf9518.0":"2020-08-14T18:43:59.067Z","2.0.3-next-1597445678-e66bd347.0":"2020-08-14T22:57:09.661Z","2.0.3-next-1597487181-dac72715.0":"2020-08-15T10:28:39.984Z","2.0.4-next-1597487304-25d12892.0":"2020-08-15T10:30:34.366Z","2.0.3":"2020-08-15T10:46:06.103Z","2.0.4-next-1597658152-e16d86f2.0":"2020-08-17T09:58:02.023Z","2.0.4-next-1597659092-da85a29b.0":"2020-08-17T10:13:56.260Z","2.0.5-next-1597665704-0d768433.0":"2020-08-17T12:04:09.926Z","2.0.5-next-1597668308-b2f79f7f.0":"2020-08-17T12:47:45.276Z","2.0.5-next-1597669219-449650c8.0":"2020-08-17T13:02:43.570Z","2.0.5-next-1597670827-1e01ff9e.0":"2020-08-17T13:29:47.379Z","2.0.5-next-1597671877-6f632d36.0":"2020-08-17T13:46:56.108Z","2.0.5-next-1597672217-3bea9935.0":"2020-08-17T13:52:19.023Z","2.0.4":"2020-08-17T14:01:14.236Z","2.0.5-next-1597683914-21b721c0.0":"2020-08-17T17:07:38.030Z","2.0.5-next-1597685497-9337fa89.0":"2020-08-17T17:33:55.697Z","2.0.5-next-1597694193-3a02ab41.0":"2020-08-17T19:59:04.070Z","2.0.5-next-1597697358-04fa30bd.0":"2020-08-17T20:51:53.642Z","2.0.5-next-1597735223-6721102c.0":"2020-08-18T07:23:19.672Z","2.0.5-next-1597756969-d0ca5c03.0":"2020-08-18T13:24:43.845Z","2.0.5-next-1597757551-81dfc75e.0":"2020-08-18T13:35:07.428Z","2.0.5-next-1597757648-338577b6.0":"2020-08-18T13:36:28.303Z","2.0.5-next-1597757794-a960d622.0":"2020-08-18T13:39:04.945Z","2.0.5-next-1597758353-8063dfa8.0":"2020-08-18T13:48:37.337Z","2.0.5-next-1597760047-8063dfa8.0":"2020-08-18T14:16:36.389Z","2.0.5-next-1597760858-2f20f81e.0":"2020-08-18T14:30:11.854Z","2.0.5-next-1597762572-abb5b88e.0":"2020-08-18T14:58:43.064Z","2.0.5-next-1597764745-0f7c65ef.0":"2020-08-18T15:34:56.864Z","2.0.5-next-1597766574-ef9446f3.0":"2020-08-18T16:05:24.691Z","2.0.5-next-1597773550-c63ebf1d.0":"2020-08-18T18:01:39.957Z","2.0.5-next-1597773572-f601925c.0":"2020-08-18T18:01:59.917Z","2.0.5-next-1597773628-7cf4c771.0":"2020-08-18T18:03:04.982Z","2.0.5-next-1597774464-dd1542bb.0":"2020-08-18T18:16:40.198Z","2.0.5-next-1597775108-bfa19fce.0":"2020-08-18T18:27:47.874Z","2.0.5-next-1597780246-7cf4c771.0":"2020-08-18T19:53:05.315Z","2.0.5-next-1597783670-d5c167bd.0":"2020-08-18T20:49:55.100Z","2.0.5-next-1597786246-eae4aa26.0":"2020-08-18T21:33:24.393Z","2.0.5-next-1597787058-33e8b7c6.0":"2020-08-18T21:47:00.362Z","2.0.5-next-1597789402-11528e29.0":"2020-08-18T22:25:54.505Z","2.1.1-next-1597790800-c5397a15.0":"2020-08-18T22:48:54.819Z","2.1.0":"2020-08-18T23:03:32.935Z","2.1.1-next-1597840297-29b52ffd.0":"2020-08-19T12:34:06.490Z","2.1.1-next-1597853580-3045583d.0":"2020-08-19T16:15:12.347Z","2.1.1-next-1597855175-a3ec42ca.0":"2020-08-19T16:42:04.822Z","2.1.1-next-1597855677-8e6d9df4.0":"2020-08-19T16:50:21.798Z","2.1.1-next-1597859455-8e6d9df4.0":"2020-08-19T17:53:23.343Z","2.1.1-next-1597860467-2bc72678.0":"2020-08-19T18:10:19.641Z","2.1.1-next-1597863537-8aee349a.0":"2020-08-19T19:01:13.397Z","2.1.1-next-1597864689-8aee349a.0":"2020-08-19T19:20:43.423Z","2.1.1-next-1597869772-04a5120e.0":"2020-08-19T20:44:57.772Z","2.1.1-next-1597870219-06c97be2.0":"2020-08-19T20:52:48.525Z","2.1.1-next-1597871105-88c801cc.0":"2020-08-19T21:07:32.052Z","2.1.1-next-1597871191-672b03ed.0":"2020-08-19T21:08:54.486Z","2.1.1-next-1597875608-4f4335aa.0":"2020-08-19T22:22:34.028Z","2.1.1-next-1597875693-29faf328.0":"2020-08-19T22:23:50.885Z","2.1.1-next-1597878575-8f338472.0":"2020-08-19T23:12:03.384Z","2.1.1-next-1597881583-831266a1.0":"2020-08-20T00:02:29.647Z","2.2.1-next-1597889287-a9772ec8.0":"2020-08-20T02:10:57.544Z","2.2.0":"2020-08-20T02:35:20.254Z","2.2.1-next-1597929665-aeaa2cb1.0":"2020-08-20T13:23:57.527Z","2.2.1-next-1597931828-a06bc161.0":"2020-08-20T13:59:50.695Z","2.2.1-next-1597932138-30cff415.0":"2020-08-20T14:04:37.153Z","2.2.1-next-1597933592-30cff415.0":"2020-08-20T14:28:49.475Z","2.2.1-next-1597934334-a06bc161.0":"2020-08-20T14:41:24.740Z","2.2.1-next-1597937730-e7114708.0":"2020-08-20T15:37:34.268Z","2.2.1-next-1597938784-eed5ece5.0":"2020-08-20T15:55:17.962Z","2.2.1-next-1597939783-eed5ece5.0":"2020-08-20T16:12:01.555Z","2.2.1-next-1597941363-30cff415.0":"2020-08-20T16:38:54.647Z","2.2.1-next-1597952587-30cff415.0":"2020-08-20T19:45:20.499Z","2.2.1-next-1597959456-f524f830.0":"2020-08-20T21:40:02.054Z","2.2.1-next-1597962156-063f6baa.0":"2020-08-20T22:25:10.104Z","1.47.1-next-1598011024-6051392b.0":"2020-08-21T12:06:27.013Z","1.47.0":"2020-08-21T12:28:13.956Z","2.2.1-next-1598018145-063f6baa.0":"2020-08-21T13:57:41.047Z","2.2.2-next-1598026898-9caf050d.0":"2020-08-21T16:24:02.707Z","2.2.2-next-1598027588-9caf050d.0":"2020-08-21T16:35:42.809Z","2.2.2-next-1598029281-d07b6b5b.0":"2020-08-21T17:03:59.535Z","2.2.2-next-1598066805-9caf050d.0":"2020-08-22T03:29:01.143Z","2.2.2-next-1598078104-ab598e0d.0":"2020-08-22T06:37:44.364Z","2.2.2-next-1598078717-13d1c8e2.0":"2020-08-22T06:47:42.426Z","2.2.2-next-1598079919-7917afbe.0":"2020-08-22T07:07:58.618Z","2.2.2-next-1598105364-87d59521.0":"2020-08-22T14:11:53.432Z","2.2.1":"2020-08-22T19:56:18.363Z","2.3.1-next-1598129360-966fa6fe.0":"2020-08-22T20:51:34.435Z","2.3.2-next-1598130821-4470b23c.0":"2020-08-22T21:15:47.798Z","2.3.2-next-1598133017-4470b23c.0":"2020-08-22T21:52:24.484Z","2.3.1":"2020-08-23T01:59:00.326Z","2.3.2-next-1598265120-42473c34.0":"2020-08-24T10:34:23.074Z","1.47.1-next-1598265422-bb0cb955.0":"2020-08-24T10:46:33.548Z","1.47.1-next-1598265868-5aebadbd.0":"2020-08-24T10:54:13.763Z","2.3.2-next-1598267391-fbcb9df5.0":"2020-08-24T11:12:22.766Z","1.48.1-next-1598268302-46367a13.0":"2020-08-24T11:35:06.017Z","1.48.0":"2020-08-24T11:45:12.725Z","2.3.2-next-1598288525-7d6db5a3.0":"2020-08-24T17:04:53.465Z","2.3.2-next-1598311032-8d656c42.0":"2020-08-24T23:19:34.584Z","2.3.2-next-1598347523-ed4bfd8a.0":"2020-08-25T09:27:27.159Z","2.3.2-next-1598347551-c7779255.0":"2020-08-25T09:27:58.986Z","2.3.2-next-1598358062-87ce1c52.0":"2020-08-25T12:23:34.546Z","2.3.2-next-1598359015-c9522060.0":"2020-08-25T12:39:13.647Z","2.3.2-next-1598359080-3d61264d.0":"2020-08-25T12:40:31.587Z","2.3.2-next-1598362190-9b823fd8.0":"2020-08-25T13:32:31.436Z","2.3.2-next-1598362665-bd191f24.0":"2020-08-25T13:40:18.771Z","2.3.2-next-1598372021-9e2f344c.0":"2020-08-25T16:16:02.352Z","2.3.2-next-1598384617-8d05b97f.0":"2020-08-25T19:46:07.844Z","2.3.2-next-1598386779-66e41eb5.0":"2020-08-25T20:22:15.702Z","2.3.2-next-1598389767-cf60ff98.0":"2020-08-25T21:11:41.025Z","2.3.2-next-1598389805-cf60ff98.0":"2020-08-25T21:12:44.031Z","2.3.2-next-1598393403-99d3eb55.0":"2020-08-25T22:12:35.092Z","2.3.2-next-1598395965-8c63aa9e.0":"2020-08-25T22:55:24.532Z","2.3.2-next-1598439065-c0278e9f.0":"2020-08-26T10:53:13.288Z","2.3.2-next-1598439616-0cd0e631.0":"2020-08-26T11:02:37.560Z","2.3.2-next-1598440694-f9cfb551.0":"2020-08-26T11:20:45.441Z","2.3.2-next-1598441720-981dc1bd.0":"2020-08-26T11:38:00.596Z","2.3.3-next-1598441814-eb3fe2b3.0":"2020-08-26T11:39:11.540Z","2.3.3-next-1598441850-f49a2d9a.0":"2020-08-26T11:39:51.746Z","2.3.3-next-1598442966-f49a2d9a.0":"2020-08-26T11:58:37.552Z","2.3.3-next-1598444882-96009724.0":"2020-08-26T12:30:18.340Z","2.4.1-next-1598445276-fe8e8d4b.0":"2020-08-26T12:36:53.410Z","2.4.1-next-1598448503-fe8e8d4b.0":"2020-08-26T13:30:56.684Z","2.4.0":"2020-08-26T13:49:46.506Z","2.4.1-next-1598453444-a9c7bea9.0":"2020-08-26T14:53:06.513Z","2.4.1-next-1598454233-8d6006e3.0":"2020-08-26T15:06:26.519Z","2.4.1-next-1598454437-af4a7e21.0":"2020-08-26T15:09:53.604Z","2.4.1-next-1598455420-5a4574b7.0":"2020-08-26T15:26:00.068Z","2.4.1-next-1598455785-da2ca773.0":"2020-08-26T15:31:17.606Z","2.4.1-next-1598456749-d61719c0.0":"2020-08-26T15:47:23.345Z","2.4.1-next-1598457160-54af56d6.0":"2020-08-26T15:53:56.940Z","2.4.1-next-1598458310-d5007e4f.0":"2020-08-26T16:14:30.111Z","2.4.1-next-1598459582-d5007e4f.0":"2020-08-26T16:35:24.446Z","2.4.1-next-1598460571-5866de05.0":"2020-08-26T16:51:50.150Z","2.4.1-next-1598461028-5866de05.0":"2020-08-26T17:00:08.836Z","1.48.1":"2020-08-26T18:04:08.240Z","1.48.2-next-1598464963-9ccf21d9.0":"2020-08-26T18:13:13.313Z","2.4.2-next-1598466571-6412a60a.0":"2020-08-26T18:31:52.850Z","2.4.2-next-1598468870-2c6fa743.0":"2020-08-26T19:10:29.832Z","2.4.2-next-1598470440-3868a808.0":"2020-08-26T19:36:00.044Z","2.4.2-next-1598470866-3868a808.0":"2020-08-26T19:43:36.035Z","2.4.1":"2020-08-26T20:01:30.169Z","2.4.2-next-1598472235-0252eb44.0":"2020-08-26T20:06:29.513Z","2.4.2-next-1598473779-b4730947.0":"2020-08-26T20:32:13.184Z","2.4.3-next-1598477257-f4f93890.0":"2020-08-26T21:29:58.954Z","2.4.3-next-1598478068-f4f93890.0":"2020-08-26T21:43:21.332Z","2.4.2":"2020-08-26T22:43:10.876Z","2.4.1-next-1598513578-54af56d6.0":"2020-08-27T07:34:32.152Z","2.4.3-next-1598517629-b5f1f466.0":"2020-08-27T08:43:03.759Z","2.4.3-next-1598519508-3c25dad5.0":"2020-08-27T09:14:09.480Z","2.4.3-next-1598519803-2b4f860a.0":"2020-08-27T09:19:04.267Z","2.4.3-next-1598519988-9b78c838.0":"2020-08-27T09:21:08.407Z","2.4.3-next-1598521092-55cfff36.0":"2020-08-27T09:40:49.715Z","2.4.3-next-1598521775-9b75a122.0":"2020-08-27T09:51:09.642Z","2.4.3-next-1598522979-044d0629.0":"2020-08-27T10:11:08.558Z","2.4.3-next-1598523658-d16826a7.0":"2020-08-27T10:22:33.869Z","2.4.3-next-1598528582-b8920e19.0":"2020-08-27T11:45:25.254Z","2.4.3-next-1598534513-ac4dcf53.0":"2020-08-27T13:24:06.383Z","2.4.3-next-1598535744-ac4dcf53.0":"2020-08-27T13:44:38.031Z","2.4.3-next-1598537527-601d3a6a.0":"2020-08-27T14:14:39.416Z","2.4.3-next-1598540824-ca543081.0":"2020-08-27T15:09:40.013Z","2.4.3-next-1598543671-a3ef15d9.0":"2020-08-27T15:56:59.571Z","2.4.3-next-1598544100-a2029533.0":"2020-08-27T16:04:14.829Z","2.4.3-next-1598545650-3b025dd7.0":"2020-08-27T16:29:59.643Z","2.4.3-next-1598546155-46ac3d6b.0":"2020-08-27T16:38:16.611Z","2.4.3-next-1598546250-8b41ec87.0":"2020-08-27T16:39:02.358Z","2.4.3-next-1598546215-7c2469c5.0":"2020-08-27T16:39:22.592Z","2.4.3-next-1598548037-33a36284.0":"2020-08-27T17:08:52.123Z","2.4.3-next-1598548814-33a36284.0":"2020-08-27T17:21:46.306Z","2.4.3-next-1598548795-f0b8b5cb.0":"2020-08-27T17:22:13.774Z","2.4.3-next-1598549515-f0558f9e.0":"2020-08-27T17:33:29.302Z","2.4.3-next-1598554585-2ac2a31e.0":"2020-08-27T18:59:08.265Z","2.4.3-next-1598554932-b511dd3c.0":"2020-08-27T19:04:40.758Z","2.4.3-next-1598555067-6558e1a7.0":"2020-08-27T19:07:01.118Z","2.4.3-next-1598555146-4da9acd2.0":"2020-08-27T19:08:23.819Z","2.4.3-next-1598556966-058c93a6.0":"2020-08-27T19:38:46.636Z","2.4.3-next-1598558125-f6830a3a.0":"2020-08-27T19:57:42.395Z","2.4.3-next-1598560387-9fcd2760.0":"2020-08-27T20:35:26.223Z","2.4.3-next-1598561912-3e1360c7.0":"2020-08-27T21:01:03.080Z","2.4.3-next-1598566293-3e1360c7.0":"2020-08-27T22:14:19.356Z","2.4.3-next-1598567697-222031c7.0":"2020-08-27T22:37:30.943Z","2.4.3-next-1598568575-f3b0eb02.0":"2020-08-27T22:52:03.627Z","2.4.3-next-1598572600-a22d3ddc.0":"2020-08-27T23:58:49.315Z","2.4.3-next-1598573430-42f9a86c.0":"2020-08-28T00:13:11.867Z","2.4.3-next-1598573779-0fa5c842.0":"2020-08-28T00:18:43.104Z","2.4.3-next-1598608146-7b73d029.0":"2020-08-28T09:50:34.428Z","2.4.3-next-1598608868-551f063b.0":"2020-08-28T10:02:34.200Z","2.4.3-next-1598609981-9fcd2760.0":"2020-08-28T10:22:13.955Z","2.4.3-next-1598612606-c7898967.0":"2020-08-28T11:04:58.926Z","2.4.3-next-1598613220-91315f00.0":"2020-08-28T11:15:08.987Z","2.4.3-next-1598614099-09d72ec1.0":"2020-08-28T11:29:47.062Z","2.4.3-next-1598615169-b6ec5841.0":"2020-08-28T11:47:38.065Z","2.4.3-next-1598615532-3a82be52.0":"2020-08-28T11:53:39.799Z","2.4.3-next-1598616568-3a82be52.0":"2020-08-28T12:10:53.218Z","2.4.3-next-1598617177-66fd3be5.0":"2020-08-28T12:22:20.921Z","2.4.3-next-1598621638-67ab13eb.0":"2020-08-28T13:36:08.976Z","2.4.3-next-1598622549-bb0a29ec.0":"2020-08-28T13:50:39.358Z","2.4.3-next-1598623112-93ff9d41.0":"2020-08-28T14:00:07.928Z","2.4.3-next-1598623893-93ff9d41.0":"2020-08-28T14:12:49.546Z","2.4.3-next-1598624769-69f53a58.0":"2020-08-28T14:27:40.963Z","2.4.3-next-1598625267-41a57fd0.0":"2020-08-28T14:35:47.335Z","2.4.3-next-1598625809-41a57fd0.0":"2020-08-28T14:44:55.753Z","2.4.3-next-1598628127-ce2842a1.0":"2020-08-28T15:23:42.697Z","2.4.3-next-1598628978-7016e66e.0":"2020-08-28T15:38:07.207Z","2.4.3-next-1598629607-afd4c9d2.0":"2020-08-28T15:48:22.684Z","2.4.3-next-1598630170-eabf81ed.0":"2020-08-28T15:58:34.227Z","2.4.3-next-1598630167-3ff6aa2e.0":"2020-08-28T15:58:44.808Z","2.4.3-next-1598630198-92c3de02.0":"2020-08-28T15:59:04.617Z","2.4.3-next-1598630496-5dbeaccd.0":"2020-08-28T16:04:09.823Z","2.4.3-next-1598630804-5f79c07a.0":"2020-08-28T16:08:15.657Z","2.4.3-next-1598631930-737631d5.0":"2020-08-28T16:27:07.330Z","2.4.3-next-1598632731-737631d5.0":"2020-08-28T16:40:07.230Z","2.4.3-next-1598633438-68eb42a4.0":"2020-08-28T16:52:11.072Z","2.4.3-next-1598634043-16ed1897.0":"2020-08-28T17:02:23.999Z","2.4.3-next-1598634910-9fc2e963.0":"2020-08-28T17:16:36.618Z","2.4.3-next-1598635598-5f7e5783.0":"2020-08-28T17:28:10.958Z","2.4.3-next-1598636475-cfc463bc.0":"2020-08-28T17:42:47.492Z","2.4.3-next-1598637698-a0aa8736.0":"2020-08-28T18:04:06.880Z","2.4.3-next-1598637947-ec14d0d8.0":"2020-08-28T18:07:15.010Z","2.4.3-next-1598639595-5c6e7b6d.0":"2020-08-28T18:34:48.437Z","2.4.3-next-1598640501-5c6e7b6d.0":"2020-08-28T18:49:49.214Z","2.4.3-next-1598644967-a0aa8736.0":"2020-08-28T20:05:30.351Z","2.5.0":"2020-08-28T20:27:21.758Z","2.5.1-next-1598646333-1a9d6b6a.0":"2020-08-28T20:27:51.113Z","2.5.1-next-1598866946-6fff5e1d.0":"2020-08-31T09:44:07.630Z","2.5.1-next-1598879987-1e0d4f4b.0":"2020-08-31T13:22:14.471Z","2.5.1-next-1598880323-b5e6fd78.0":"2020-08-31T13:27:53.836Z","2.5.1-next-1598880768-caa27f5f.0":"2020-08-31T13:35:28.225Z","2.5.1-next-1598880865-c8738529.0":"2020-08-31T13:37:08.257Z","2.5.1-next-1598881901-48308422.0":"2020-08-31T13:54:14.694Z","2.5.1-next-1598882524-efeb276b.0":"2020-08-31T14:04:16.245Z","2.5.1-next-1598883665-efeb276b.0":"2020-08-31T14:23:36.046Z","2.5.1-next-1598889853-8cef67d2.0":"2020-08-31T16:06:33.923Z","2.5.1-next-1598896929-74dbe2f1.0":"2020-08-31T18:05:18.976Z","2.5.1-next-1598925757-dbe26300.0":"2020-09-01T02:04:09.070Z","2.5.1-next-1598926910-7875ca78.0":"2020-09-01T02:23:22.184Z","2.5.1-next-1598927667-ecd72f4d.0":"2020-09-01T02:35:56.319Z","2.5.1-next-1598947834-ece2b92e.0":"2020-09-01T08:11:53.910Z","2.5.1-next-1598948014-8a30f003.0":"2020-09-01T08:14:58.369Z","2.5.1-next-1598948189-00887b7e.0":"2020-09-01T08:18:18.262Z","2.4.1-next-1598954387-16c3d796.0":"2020-09-01T10:02:11.874Z","2.5.1-next-1598955562-394267bd.0":"2020-09-01T10:20:49.752Z","2.5.1-next-1598956014-af1e10cf.0":"2020-09-01T10:28:21.042Z","2.6.1-next-1598956099-2a9135fb.0":"2020-09-01T10:30:00.627Z","2.6.1-next-1598956178-76cd98dc.0":"2020-09-01T10:31:12.126Z","2.6.1-next-1598956609-2a9135fb.0":"2020-09-01T10:38:10.873Z","2.6.1-next-1598957852-da6125e5.0":"2020-09-01T10:59:07.374Z","2.6.1-next-1598958794-c027c825.0":"2020-09-01T11:14:41.726Z","2.6.1-next-1598959835-75dd94c2.0":"2020-09-01T11:32:01.387Z","2.6.0":"2020-09-01T12:00:31.757Z","2.6.1-next-1598962053-f36361e6.0":"2020-09-01T12:08:59.530Z","2.6.1-next-1598963255-18e69564.0":"2020-09-01T12:29:06.618Z","2.6.1-next-1598965142-7f2f4f80.0":"2020-09-01T13:00:28.690Z","2.6.1-next-1598966571-b77eba58.0":"2020-09-01T13:24:17.522Z","2.6.1-next-1598971739-3e3910fe.0":"2020-09-01T14:50:34.712Z","2.6.1-next-1598975124-88e50e25.0":"2020-09-01T15:47:00.885Z","2.6.1-next-1598978302-e688ecd3.0":"2020-09-01T16:39:58.265Z","2.6.1-next-1598979218-c12859e8.0":"2020-09-01T16:55:19.982Z","2.6.1-next-1598979574-da2c3632.0":"2020-09-01T17:01:03.682Z","2.6.1-next-1598981075-3b382d17.0":"2020-09-01T17:26:05.386Z","2.6.1-next-1598995425-104e2d5b.0":"2020-09-01T21:25:08.583Z","2.6.1-next-1598996938-4e9cb076.0":"2020-09-01T21:50:27.138Z","2.6.1-next-1599010181-da8543e6.0":"2020-09-02T01:31:09.370Z","2.6.2-next-1599010382-097b999c.0":"2020-09-02T01:34:36.606Z","2.6.1":"2020-09-02T02:00:07.585Z","2.6.2-next-1599032623-9fb16d53.0":"2020-09-02T07:45:13.862Z","2.6.2-next-1599035817-2e06d6d1.0":"2020-09-02T08:38:35.784Z","2.6.2-next-1599040744-bf04fd8c.0":"2020-09-02T10:00:34.624Z","2.6.2-next-1599041396-1f5e1c71.0":"2020-09-02T10:11:23.081Z","2.6.2-next-1599057186-728dc0f0.0":"2020-09-02T14:34:53.288Z","2.6.2-next-1599077045-93c1ea14.0":"2020-09-02T20:05:44.262Z","2.6.2-next-1599079072-3819ddce.0":"2020-09-02T20:39:29.704Z","2.6.2-next-1599079153-25b0a795.0":"2020-09-02T20:40:43.483Z","2.6.2-next-1599082228-6d80027c.0":"2020-09-02T21:31:57.691Z","2.6.2-next-1599083111-80b1bff9.0":"2020-09-02T21:46:40.878Z","2.6.2-next-1599083972-6813d45f.0":"2020-09-02T22:01:01.814Z","2.6.2-next-1599084114-e806677c.0":"2020-09-02T22:03:23.190Z","2.6.2-next-1599084155-b4667752.0":"2020-09-02T22:04:13.109Z","2.6.2-next-1599084319-a3b77f10.0":"2020-09-02T22:06:56.494Z","2.6.3-next-1599084411-bdc1c3c8.0":"2020-09-02T22:08:23.019Z","2.6.2":"2020-09-02T22:09:38.725Z","2.6.3-next-1599085061-a84d77ab.0":"2020-09-02T22:19:02.410Z","2.6.3-next-1599127595-9d8b47b4.0":"2020-09-03T10:08:07.460Z","2.6.3-next-1599131915-3000f686.0":"2020-09-03T11:20:08.252Z","2.6.3-next-1599132181-85aa4e60.0":"2020-09-03T11:24:22.336Z","2.6.3-next-1599132204-ebe46836.0":"2020-09-03T11:24:41.391Z","2.6.3-next-1599132332-cb518e91.0":"2020-09-03T11:26:49.298Z","2.6.3-next-1599132504-184e263a.0":"2020-09-03T11:29:59.170Z","2.6.3-next-1599133491-eff9adfb.0":"2020-09-03T11:46:13.309Z","2.6.3-next-1599133837-f62fcc9a.0":"2020-09-03T11:51:59.208Z","2.6.3-next-1599135144-7f86ca5f.0":"2020-09-03T12:13:59.908Z","2.6.3-next-1599135218-50d7a180.0":"2020-09-03T12:15:13.144Z","2.6.3-next-1599138733-90d3a7b8.0":"2020-09-03T13:13:55.133Z","2.6.4-next-1599139174-7d549962.0":"2020-09-03T13:21:01.920Z","2.6.4-next-1599139273-d01ff34b.0":"2020-09-03T13:22:43.393Z","2.6.3":"2020-09-03T13:23:50.604Z","2.6.4-next-1599149468-786b16bc.0":"2020-09-03T16:12:41.822Z","2.6.4-next-1599153988-9a02d408.0":"2020-09-03T17:28:12.278Z","2.6.4-next-1599154085-5f50f7ce.0":"2020-09-03T17:29:34.845Z","2.6.4-next-1599154088-5f50f7ce.0":"2020-09-03T17:29:53.501Z","2.6.4-next-1599154082-c09234b0.0":"2020-09-03T17:31:01.242Z","2.6.4-next-1599156300-d9a65406.0":"2020-09-03T18:06:49.852Z","2.6.4-next-1599157276-786b16bc.0":"2020-09-03T18:22:56.384Z","2.6.4-next-1599157823-bfc603a7.0":"2020-09-03T18:31:58.919Z","2.6.4-next-1599158958-d6044d99.0":"2020-09-03T18:50:49.928Z","2.6.4-next-1599161692-29d66b19.0":"2020-09-03T19:36:34.732Z","2.6.4-next-1599162124-569bb7df.0":"2020-09-03T19:43:57.907Z","2.6.4-next-1599162938-d11940f9.0":"2020-09-03T19:57:16.652Z","2.6.4-next-1599167216-29d66b19.0":"2020-09-03T21:08:24.240Z","2.6.4-next-1599170503-810a4a06.0":"2020-09-03T22:03:11.890Z","2.6.4-next-1599171872-7a66299e.0":"2020-09-03T22:25:57.283Z","2.6.4-next-1599172236-a7e264c6.0":"2020-09-03T22:32:11.518Z","2.6.4-next-1599172942-bcef090d.0":"2020-09-03T22:43:51.811Z","2.6.4-next-1599173355-64f73b10.0":"2020-09-03T22:50:39.948Z","2.6.4-next-1599173847-294da3eb.0":"2020-09-03T22:58:54.135Z","2.6.4-next-1599210627-5f98cb36.0":"2020-09-04T09:12:18.303Z","2.6.4-next-1599213496-eaaded84.0":"2020-09-04T09:59:54.101Z","2.6.4-next-1599214118-c6126407.0":"2020-09-04T10:10:03.130Z","2.6.4-next-1599215641-38283c2b.0":"2020-09-04T10:35:25.987Z","2.6.5-next-1599215918-0ab97d84.0":"2020-09-04T10:40:06.126Z","2.6.4":"2020-09-04T10:57:52.175Z","2.6.5-next-1599223222-bf684521.0":"2020-09-04T12:42:04.004Z","2.6.5-next-1599223545-e76ec169.0":"2020-09-04T12:47:23.800Z","2.6.5-next-1599225516-738ebf35.0":"2020-09-04T13:20:23.221Z","2.6.5-next-1599225518-b5c68e83.0":"2020-09-04T13:20:34.236Z","2.6.5-next-1599226323-763d53ce.0":"2020-09-04T13:33:33.117Z","2.6.5-next-1599227097-48c01851.0":"2020-09-04T13:46:19.904Z","2.6.5-next-1599227690-ea53a6f4.0":"2020-09-04T13:56:10.539Z","2.6.5-next-1599227891-168af27b.0":"2020-09-04T13:59:33.786Z","2.6.5-next-1599233467-5d7a71c8.0":"2020-09-04T15:32:45.756Z","2.6.5-next-1599234290-37f52736.0":"2020-09-04T15:46:20.820Z","2.6.5-next-1599234706-640d6db7.0":"2020-09-04T15:53:16.234Z","2.6.5-next-1599234966-843376bf.0":"2020-09-04T15:57:37.349Z","2.6.5-next-1599242871-d295efc1.0":"2020-09-04T18:09:35.026Z","2.6.5-next-1599243514-7b250b81.0":"2020-09-04T18:20:04.601Z","2.6.5-next-1599286424-ea0ff094.0":"2020-09-05T06:15:17.635Z","2.6.5-next-1599288099-2797b89b.0":"2020-09-05T06:42:56.037Z","2.6.5-next-1599289186-f13ba232.0":"2020-09-05T07:01:15.306Z","2.6.5-next-1599312826-edfff426.0":"2020-09-05T13:35:04.140Z","2.6.5-next-1599317533-b71812bf.0":"2020-09-05T14:53:32.842Z","2.6.5-next-1599469495-90406ff3.0":"2020-09-07T09:06:25.502Z","2.6.5-next-1599469586-56835928.0":"2020-09-07T09:08:00.527Z","2.6.5-next-1599472221-90406ff3.0":"2020-09-07T09:51:48.504Z","2.6.5-next-1599473037-f966c51d.0":"2020-09-07T10:05:30.078Z","2.6.5-next-1599473340-7c69e6c8.0":"2020-09-07T10:10:37.538Z","2.6.5-next-1599474040-ca9791ea.0":"2020-09-07T10:22:04.101Z","2.6.5-next-1599480676-3acc3469.0":"2020-09-07T12:12:47.513Z","2.6.5-next-1599485337-5c7ce214.0":"2020-09-07T13:30:15.827Z","2.6.5-next-1599487957-0204c3a1.0":"2020-09-07T14:14:08.698Z","2.6.5-next-1599488258-d146c84b.0":"2020-09-07T14:19:10.388Z","2.7.1-next-1599489124-32ecd24a.0":"2020-09-07T14:33:42.500Z","2.7.0":"2020-09-07T14:51:34.348Z","2.7.1-next-1599490635-c6d5c370.0":"2020-09-07T14:59:10.628Z","2.7.1-next-1599493824-5a123140.0":"2020-09-07T15:52:06.314Z","2.7.1-next-1599494785-4955142a.0":"2020-09-07T16:08:00.498Z","2.7.1-next-1599495893-75949ce8.0":"2020-09-07T16:26:17.218Z","2.7.1-next-1599509252-dd0ca2a5.0":"2020-09-07T20:08:57.355Z","2.7.1-next-1599550548-fa8e9415.0":"2020-09-08T07:37:28.172Z","2.7.1-next-1599553515-252cdea3.0":"2020-09-08T08:26:40.598Z","2.7.1-next-1599555777-9debbb1d.0":"2020-09-08T09:04:44.296Z","2.7.1-next-1599560077-14c948c4.0":"2020-09-08T10:16:25.842Z","2.7.1-next-1599562443-837c44cf.0":"2020-09-08T10:55:39.722Z","2.7.1-next-1599562946-6ff82613.0":"2020-09-08T11:04:11.380Z","2.7.1-next-1599563902-8d964c81.0":"2020-09-08T11:20:15.439Z","2.7.1-next-1599563991-2a11886f.0":"2020-09-08T11:21:30.273Z","2.7.1-next-1599564840-8d964c81.0":"2020-09-08T11:35:46.662Z","2.7.1-next-1599564998-0a8dadb7.0":"2020-09-08T11:38:06.055Z","2.7.1-next-1599567460-8d964c81.0":"2020-09-08T12:19:18.121Z","2.7.1-next-1599567484-1eb03d35.0":"2020-09-08T12:19:35.029Z","2.7.1-next-1599569283-8d964c81.0":"2020-09-08T12:49:47.369Z","2.7.1-next-1599570496-c0bb9a8e.0":"2020-09-08T13:09:47.724Z","2.7.1-next-1599570875-42544f1f.0":"2020-09-08T13:16:14.713Z","2.8.1-next-1599571314-828e2006.0":"2020-09-08T13:23:36.525Z","2.8.1-next-1599572150-828e2006.0":"2020-09-08T13:37:45.400Z","2.8.1-next-1599572715-6f9587e2.0":"2020-09-08T13:47:01.116Z","2.8.0":"2020-09-08T13:55:17.332Z","2.8.1-next-1599573991-0aa0566f.0":"2020-09-08T14:08:27.234Z","2.8.1-next-1599574925-1f9b3cfd.0":"2020-09-08T14:23:48.206Z","2.8.1-next-1599579377-76f91452.0":"2020-09-08T15:38:10.576Z","2.8.1-next-1599583796-e0f26fdb.0":"2020-09-08T16:51:36.777Z","2.8.1-next-1599583958-bb12166e.0":"2020-09-08T16:54:49.183Z","2.8.1-next-1599585714-bb12166e.0":"2020-09-08T17:23:34.171Z","2.8.1-next-1599586431-11d14d03.0":"2020-09-08T17:35:44.460Z","2.8.1-next-1599589991-9d6a1b49.0":"2020-09-08T18:35:02.010Z","2.8.1-next-1599594538-34381c35.0":"2020-09-08T19:50:47.716Z","2.8.1-next-1599598701-c31613a6.0":"2020-09-08T21:00:05.295Z","2.8.1-next-1599600008-85b43a11.0":"2020-09-08T21:21:57.837Z","2.8.1-next-1599601377-a988e7aa.0":"2020-09-08T21:44:42.692Z","2.8.1-next-1599602262-b263a8ed.0":"2020-09-08T21:59:32.713Z","2.8.1-next-1599648414-09ddff50.0":"2020-09-09T10:48:34.059Z","2.8.1-next-1599649332-3d79f674.0":"2020-09-09T11:03:57.617Z","2.8.1-next-1599651272-34bbaf73.0":"2020-09-09T11:36:12.170Z","2.8.1-next-1599651663-97b41d07.0":"2020-09-09T11:42:53.105Z","2.8.1-next-1599653218-de5d0620.0":"2020-09-09T12:08:41.080Z","2.9.1-next-1599653312-5f5ef398.0":"2020-09-09T12:10:22.893Z","2.9.1-next-1599654614-b98a36b3.0":"2020-09-09T12:32:08.595Z","2.9.1-next-1599654914-ad3757e8.0":"2020-09-09T12:37:06.112Z","2.9.1-next-1599655283-33092613.0":"2020-09-09T12:43:12.439Z","2.9.0":"2020-09-09T12:45:04.809Z","2.9.1-next-1599655436-11d4ee6a.0":"2020-09-09T12:45:38.466Z","2.9.1-next-1599656513-4a7dacca.0":"2020-09-09T13:03:31.910Z","2.9.1-next-1599658987-9a38884f.0":"2020-09-09T13:45:11.585Z","2.9.1-next-1599662897-0a4fd79a.0":"2020-09-09T14:50:11.317Z","2.9.1-next-1599664957-33cc07c0.0":"2020-09-09T15:24:44.863Z","2.9.1-next-1599668222-3cddf85e.0":"2020-09-09T16:18:50.501Z","2.9.1-next-1599669161-30af407a.0":"2020-09-09T16:34:45.425Z","2.9.1-next-1599669599-6ebda3ab.0":"2020-09-09T16:41:41.702Z","2.9.1-next-1599669727-df087a7f.0":"2020-09-09T16:43:58.280Z","2.9.1-next-1599674592-c5a3870c.0":"2020-09-09T18:05:01.379Z","2.9.1-next-1599674981-f8546866.0":"2020-09-09T18:11:34.388Z","2.9.1-next-1599730094-e41c980c.0":"2020-09-10T09:30:11.680Z","2.9.1-next-1599741182-4ed8514c.0":"2020-09-10T12:34:44.213Z","2.9.1-next-1599741852-3675eeeb.0":"2020-09-10T12:45:53.377Z","2.9.1-next-1599741887-6d1e4700.0":"2020-09-10T12:46:41.624Z","2.9.1-next-1599743914-66698bd0.0":"2020-09-10T13:20:24.417Z","2.9.1-next-1599744079-e5c57189.0":"2020-09-10T13:22:59.489Z","2.9.1-next-1599745763-ae769e0a.0":"2020-09-10T13:51:01.788Z","2.9.1-next-1599748944-618d50b4.0":"2020-09-10T14:44:44.704Z","2.9.1-next-1599815550-52437bd9.0":"2020-09-11T09:14:11.261Z","2.9.1-next-1599816206-01cc0acc.0":"2020-09-11T09:25:13.276Z","2.9.1-next-1599816807-0ba017f1.0":"2020-09-11T09:35:19.068Z","2.9.1-next-1599817774-60d05f04.0":"2020-09-11T09:51:26.040Z","2.9.1-next-1599826000-3b0831b3.0":"2020-09-11T12:08:46.420Z","2.9.1-next-1599836388-604a2bea.0":"2020-09-11T15:01:41.680Z","2.9.1-next-1599847353-a249efd1.0":"2020-09-11T18:04:07.012Z","2.9.1-next-1599847387-d90a61c7.0":"2020-09-11T18:04:46.753Z","2.9.1-next-1599849737-1eb6a3f0.0":"2020-09-11T18:44:04.626Z","2.9.1-next-1599850085-86d7f300.0":"2020-09-11T18:49:56.284Z","2.9.1-next-1599850506-e93ad9f4.0":"2020-09-11T18:56:48.414Z","2.9.1-next-1599850677-5cea23db.0":"2020-09-11T18:59:42.968Z","2.9.1-next-1599856041-fd977716.0":"2020-09-11T20:29:07.611Z","2.9.1-next-1599856337-3759161c.0":"2020-09-11T20:34:07.245Z","2.9.1-next-1599857932-8037b565.0":"2020-09-11T21:00:42.771Z","2.9.1-next-1599858843-4449b454.0":"2020-09-11T21:15:53.849Z","2.9.1-next-1599928650-70e34b66.0":"2020-09-12T16:39:15.713Z","2.9.1-next-1599931291-eb521ddd.0":"2020-09-12T17:23:27.817Z","2.9.1-next-1599971596-3de2b5ee.0":"2020-09-13T04:34:50.303Z","2.9.1-next-1600073223-ffa596bd.0":"2020-09-14T08:48:45.072Z","2.9.1-next-1600073265-0bcf7629.0":"2020-09-14T08:49:48.527Z","2.9.1-next-1600073373-483dee3f.0":"2020-09-14T08:51:18.582Z","2.9.1-next-1600073579-4853ee2b.0":"2020-09-14T08:54:51.495Z","2.9.1-next-1600074265-b02ca882.0":"2020-09-14T09:06:06.536Z","2.9.1-next-1600075391-b8b3edb4.0":"2020-09-14T09:25:11.304Z","2.9.1-next-1600076233-5a75e0f5.0":"2020-09-14T09:38:50.908Z","2.9.1-next-1600076275-9a99c13e.0":"2020-09-14T09:39:36.260Z","2.9.1-next-1600078156-5a75e0f5.0":"2020-09-14T10:11:02.392Z","2.9.1-next-1600080315-975ae28e.0":"2020-09-14T10:46:57.239Z","2.9.1-next-1600080385-e996c20f.0":"2020-09-14T10:48:08.348Z","2.9.1-next-1600080519-95eeca29.0":"2020-09-14T10:50:37.602Z","2.9.1-next-1600080580-46209834.0":"2020-09-14T10:51:47.720Z","2.9.1-next-1600080607-f7546fb5.0":"2020-09-14T10:52:01.579Z","2.9.1-next-1600080929-1f640129.0":"2020-09-14T10:57:16.693Z","2.9.1-next-1600081620-0e9c6d2d.0":"2020-09-14T11:08:53.717Z","2.9.1-next-1600081932-21814d75.0":"2020-09-14T11:14:17.772Z","2.9.1-next-1600082194-3d9e7931.0":"2020-09-14T11:19:00.934Z","2.9.1-next-1600083156-0e9c6d2d.0":"2020-09-14T11:34:39.996Z","2.10.1-next-1600084438-449e7fa0.0":"2020-09-14T11:55:54.414Z","2.10.0":"2020-09-14T11:57:37.117Z","2.10.1-next-1600087699-9ec9c534.0":"2020-09-14T12:50:10.830Z","2.10.1-next-1600088600-9ec9c534.0":"2020-09-14T13:05:13.407Z","2.10.2-next-1600089639-baa26ec7.0":"2020-09-14T13:22:31.346Z","2.10.1":"2020-09-14T13:24:02.881Z","2.10.2-next-1600094004-a6cb5ea0.0":"2020-09-14T14:35:46.029Z","2.10.2-next-1600102746-b1ab38ee.0":"2020-09-14T17:01:00.830Z","2.10.2-next-1600107614-9cd3b3c4.0":"2020-09-14T18:22:18.373Z","2.10.2-next-1600157946-d342b075.0":"2020-09-15T08:20:52.288Z","2.10.2-next-1600157983-b221159f.0":"2020-09-15T08:21:24.141Z","2.10.2-next-1600160933-3c3444d2.0":"2020-09-15T09:10:48.664Z","2.10.2-next-1600163724-46defc31.0":"2020-09-15T09:57:22.880Z","2.10.2-next-1600165323-9b11b3d7.0":"2020-09-15T10:24:08.821Z","2.10.2-next-1600169926-1ee6c708.0":"2020-09-15T11:40:40.596Z","2.10.2-next-1600169974-baf756f0.0":"2020-09-15T11:41:45.879Z","2.10.2-next-1600174602-c58e66b9.0":"2020-09-15T12:58:48.222Z","2.10.2-next-1600175634-c58e66b9.0":"2020-09-15T13:15:55.278Z","2.10.2-next-1600176932-f11d6186.0":"2020-09-15T13:37:57.473Z","2.10.2-next-1600180055-890969e4.0":"2020-09-15T14:29:51.552Z","2.10.2-next-1600189214-8162bc0a.0":"2020-09-15T17:02:06.156Z","2.10.3-next-1600208976-0bfe4d9d.0":"2020-09-15T22:31:16.695Z","2.10.2":"2020-09-15T22:35:44.532Z","2.10.3-next-1600209409-1fddd2b0.0":"2020-09-15T22:38:42.998Z","2.10.3-next-1600209430-58538973.0":"2020-09-15T22:39:04.766Z","2.10.4-next-1600209476-13b92983.0":"2020-09-15T22:39:45.413Z","2.10.3":"2020-09-15T22:42:38.238Z","2.10.4-next-1600247712-5c135ac9.0":"2020-09-16T09:17:16.761Z","2.11.1-next-1600247788-35fe5a41.0":"2020-09-16T09:18:36.555Z","2.11.0":"2020-09-16T09:20:47.790Z","2.11.1-next-1600258759-784c8c55.0":"2020-09-16T12:21:24.104Z","2.11.1-next-1600262867-fab9c480.0":"2020-09-16T13:29:44.463Z","2.11.1-next-1600262916-71fe3bbb.0":"2020-09-16T13:30:43.692Z","2.11.1-next-1600263055-487c5991.0":"2020-09-16T13:33:00.451Z","2.11.1-next-1600269607-1a964b90.0":"2020-09-16T15:22:17.713Z","2.11.1-next-1600272491-08b82d6a.0":"2020-09-16T16:10:20.876Z","2.11.1-next-1600283671-16febc25.0":"2020-09-16T19:16:44.597Z","2.11.1-next-1600292073-b603bc0d.0":"2020-09-16T21:36:43.665Z","2.11.1-next-1600292107-18896506.0":"2020-09-16T21:37:35.653Z","2.11.2-next-1600292151-49224502.0":"2020-09-16T21:37:59.376Z","2.11.1":"2020-09-16T21:39:23.483Z","2.11.2-next-1600337990-e919519f.0":"2020-09-17T10:21:48.099Z","2.11.2-next-1600344712-82bda3d8.0":"2020-09-17T12:14:08.771Z","2.11.2-next-1600348988-8e9ad979.0":"2020-09-17T13:25:21.137Z","2.11.2-next-1600373979-a8abfc1d.0":"2020-09-17T20:21:50.435Z","2.11.2-next-1600374709-225ededa.0":"2020-09-17T20:33:49.010Z","2.11.2-next-1600376939-c4adfb37.0":"2020-09-17T21:11:01.408Z","2.11.2-next-1600422799-a01a39bd.0":"2020-09-18T09:55:32.141Z","2.11.2-next-1600589817-07052234.0":"2020-09-20T08:19:05.921Z","2.11.2-next-1600672312-197f97ea.0":"2020-09-21T07:13:55.638Z","2.11.2-next-1600672424-b3695674.0":"2020-09-21T07:15:54.747Z","2.11.2-next-1600672463-3c7996fd.0":"2020-09-21T07:16:26.310Z","2.11.2-next-1600672512-c5ddf166.0":"2020-09-21T07:17:25.089Z","2.11.3-next-1600673543-79069b0a.0":"2020-09-21T07:34:35.339Z","2.11.2":"2020-09-21T07:35:48.140Z","2.11.3-next-1600688580-b5e4301c.0":"2020-09-21T11:45:03.620Z","2.11.3-next-1600688934-94453ef7.0":"2020-09-21T11:50:59.176Z","2.11.3-next-1600688977-427157e3.0":"2020-09-21T11:51:52.935Z","2.11.3-next-1600688988-9bb8935d.0":"2020-09-21T11:52:07.431Z","2.11.3-next-1600689217-2f191909.0":"2020-09-21T11:55:46.212Z","2.11.3-next-1600690048-9e581636.0":"2020-09-21T12:09:43.081Z","2.11.3-next-1600690159-1fc0197a.0":"2020-09-21T12:11:33.887Z","2.9.1-next-1600691261-be75aaac.0":"2020-09-21T12:29:29.895Z","2.11.3-next-1600693352-b865aa9a.0":"2020-09-21T13:04:47.276Z","2.11.3-next-1600695386-2ae53215.0":"2020-09-21T13:38:30.661Z","2.11.3-next-1600698599-77ea5694.0":"2020-09-21T14:32:21.752Z","2.11.3-next-1600702842-4bc1b0de.0":"2020-09-21T15:42:50.052Z","2.12.1-next-1600705560-907c88c9.0":"2020-09-21T16:28:16.904Z","2.12.0":"2020-09-21T16:29:00.189Z","2.12.1-next-1600722094-08d43063.0":"2020-09-21T21:04:00.098Z","2.12.1-next-1600723587-ceb25f8e.0":"2020-09-21T21:28:51.233Z","2.12.1-next-1600764529-80f5fed8.0":"2020-09-22T08:51:14.154Z","2.12.1-next-1600764642-12849b1e.0":"2020-09-22T08:52:34.791Z","2.12.1-next-1600772189-208e9dce.0":"2020-09-22T10:58:59.614Z","2.12.1-next-1600772439-1f72ffc2.0":"2020-09-22T11:02:35.363Z","2.12.2-next-1600772740-3c7e77b7.0":"2020-09-22T11:08:03.955Z","2.12.2-next-1600773266-44c5cea9.0":"2020-09-22T11:16:29.418Z","2.12.2-next-1600773338-d65c7a20.0":"2020-09-22T11:17:47.261Z","2.12.2-next-1600775957-d63a6d49.0":"2020-09-22T12:01:25.040Z","2.12.2-next-1600776181-14c33f55.0":"2020-09-22T12:05:19.652Z","2.12.1":"2020-09-22T12:13:46.236Z","2.12.2-next-1600779089-3eeb0aff.0":"2020-09-22T12:53:20.872Z","2.12.2-next-1600779534-3f3d8664.0":"2020-09-22T13:01:11.380Z","2.12.2-next-1600785337-561a4382.0":"2020-09-22T14:37:46.265Z","2.12.2-next-1600802405-90d21ea6.0":"2020-09-22T19:22:14.150Z","2.12.2-next-1600802452-11d4f1a5.0":"2020-09-22T19:22:59.469Z","2.13.1-next-1600802664-a680cdf3.0":"2020-09-22T19:26:31.986Z","2.13.0":"2020-09-22T19:27:38.767Z","2.13.1-next-1600866013-2f2a3c23.0":"2020-09-23T13:02:29.490Z","2.13.1-next-1600872468-af254091.0":"2020-09-23T14:50:02.228Z","2.13.2-next-1600872827-7d5f227d.0":"2020-09-23T14:56:01.696Z","2.13.1":"2020-09-23T14:58:22.042Z","2.13.2-next-1600884005-4378587d.0":"2020-09-23T18:02:29.661Z","2.13.3-next-1600884046-27399383.0":"2020-09-23T18:02:47.287Z","2.13.2":"2020-09-23T18:05:12.865Z","2.13.3-next-1600892210-68bdee53.0":"2020-09-23T20:19:04.620Z","2.13.3-next-1600899972-8e088c74.0":"2020-09-23T22:28:07.233Z","2.9.1-next-1600937982-be75aaac.0":"2020-09-24T09:01:36.898Z","2.9.1-next-1600938754-2c26ef13.0":"2020-09-24T09:14:23.858Z","2.9.1-next-1600942081-39fc795f.0":"2020-09-24T10:09:52.523Z","2.13.3-next-1600945825-a78f1716.0":"2020-09-24T11:12:30.881Z","2.13.3-next-1600946214-8c76821c.0":"2020-09-24T11:19:03.745Z","2.13.3-next-1600946441-611e0d35.0":"2020-09-24T11:22:50.500Z","2.13.3-next-1600947693-fdfdca35.0":"2020-09-24T11:43:46.332Z","2.13.3-next-1600949680-d345363d.0":"2020-09-24T12:16:50.205Z","2.13.3-next-1600950896-36cbff30.0":"2020-09-24T12:36:53.743Z","2.13.3-next-1600951520-3e87b43d.0":"2020-09-24T12:47:08.578Z","2.13.4-next-1600951877-e7573e8b.0":"2020-09-24T12:53:40.244Z","2.13.3":"2020-09-24T12:55:25.058Z","2.13.4-next-1600955919-ae7ee66f.0":"2020-09-24T14:00:51.408Z","2.13.4-next-1600956816-97a7fa5e.0":"2020-09-24T14:15:51.472Z","2.13.4-next-1600956931-7efc3323.0":"2020-09-24T14:17:56.620Z","2.13.5-next-1600957052-377709b5.0":"2020-09-24T14:19:35.404Z","2.13.4":"2020-09-24T14:22:16.930Z","2.13.5-next-1600959960-6a78967f.0":"2020-09-24T15:08:03.731Z","2.13.5-next-1600965833-2c8245de.0":"2020-09-24T16:45:58.545Z","2.13.5-next-1600966410-6b1d640e.0":"2020-09-24T16:55:48.220Z","2.13.5-next-1600967683-8689a73a.0":"2020-09-24T17:16:46.272Z","2.13.5-next-1600972143-797c7dc4.0":"2020-09-24T18:30:57.772Z","2.13.5-next-1600972738-90373597.0":"2020-09-24T18:41:11.377Z","2.13.5-next-1600973916-7e9ef394.0":"2020-09-24T19:00:45.639Z","2.13.5-next-1600977565-3e3b3d8b.0":"2020-09-24T20:01:20.923Z","2.13.5-next-1600978282-edbfdeb6.0":"2020-09-24T20:13:38.755Z","2.14.1-next-1600978364-772c8621.0":"2020-09-24T20:15:02.090Z","2.14.1-next-1600978429-13563b3d.0":"2020-09-24T20:15:57.078Z","2.14.1-next-1600979121-49210b98.0":"2020-09-24T20:27:17.689Z","2.14.0":"2020-09-24T20:30:51.609Z","2.14.1-next-1600980161-043ee498.0":"2020-09-24T20:44:54.920Z","2.14.1-next-1600981401-bbefde40.0":"2020-09-24T21:05:05.259Z","2.14.1-next-1601022982-3ceeea47.0":"2020-09-25T08:38:37.685Z","2.14.1-next-1601028264-4dbe3bed.0":"2020-09-25T10:06:35.433Z","2.14.1-next-1601028494-24fc3cd0.0":"2020-09-25T10:10:35.833Z","2.14.1-next-1601029015-13563b3d.0":"2020-09-25T10:19:02.061Z","2.14.1-next-1601034400-769533c8.0":"2020-09-25T11:48:43.056Z","2.14.1-next-1601034822-f746dfa2.0":"2020-09-25T11:55:59.083Z","2.14.1-next-1601035001-08226901.0":"2020-09-25T11:58:47.976Z","2.14.1-next-1601036211-2319aaaf.0":"2020-09-25T12:18:44.976Z","2.14.1-next-1601036247-35a4899e.0":"2020-09-25T12:19:36.258Z","2.14.1-next-1601038002-6bbf5660.0":"2020-09-25T12:49:07.357Z","2.15.1-next-1601038027-fde1766c.0":"2020-09-25T12:49:28.122Z","2.15.1-next-1601038956-facc379a.0":"2020-09-25T13:04:28.538Z","2.15.1-next-1601040363-5b27dafa.0":"2020-09-25T13:28:04.179Z","2.15.0":"2020-09-25T13:36:17.000Z","2.15.1-next-1601042758-ea5de787.0":"2020-09-25T14:08:10.913Z","2.15.1-next-1601042960-372a5048.0":"2020-09-25T14:11:50.072Z","2.15.1-next-1601048377-cab695f8.0":"2020-09-25T15:41:54.469Z","2.15.1-next-1601049541-d28deeba.0":"2020-09-25T16:00:54.783Z","2.15.2-next-1601057031-bb62fac1.0":"2020-09-25T18:06:01.044Z","2.15.2-next-1601061210-08ceaf41.0":"2020-09-25T19:15:44.890Z","2.15.2-next-1601061352-631a92cb.0":"2020-09-25T19:18:10.723Z","2.15.2-next-1601062083-82d4e4ce.0":"2020-09-25T19:30:22.008Z","2.15.2-next-1601062208-4b550412.0":"2020-09-25T19:31:59.013Z","2.15.2-next-1601062477-266ab9a2.0":"2020-09-25T19:36:53.773Z","2.15.2-next-1601063911-e749cabd.0":"2020-09-25T20:00:56.058Z","2.15.2-next-1601118385-00797597.0":"2020-09-26T11:08:28.658Z","2.15.2-next-1601284228-7b83be54.0":"2020-09-28T09:12:31.608Z","2.15.2-next-1601293034-38774e59.0":"2020-09-28T11:39:36.911Z","2.15.2-next-1601293866-bebfd7bd.0":"2020-09-28T11:53:15.565Z","2.15.2-next-1601294455-3908232e.0":"2020-09-28T12:02:56.747Z","2.15.3-next-1601294661-c4ce5956.0":"2020-09-28T12:06:51.532Z","2.15.3-next-1601294712-c63181ab.0":"2020-09-28T12:07:21.930Z","2.16.1-next-1601294821-998f6094.0":"2020-09-28T12:09:32.569Z","2.16.0":"2020-09-28T12:11:04.506Z","2.16.1-next-1601308488-517e8c7a.0":"2020-09-28T15:57:01.967Z","2.16.1-next-1601312859-96023407.0":"2020-09-28T17:09:54.555Z","2.16.1-next-1601313093-fb8b7b42.0":"2020-09-28T17:13:36.576Z","2.9.1-next-1601313922-ec8776ac.0":"2020-09-28T17:27:15.679Z","2.9.1-next-1601316133-ac7841a4.0":"2020-09-28T18:04:03.692Z","2.9.1-next-1601316407-1b786e00.0":"2020-09-28T18:08:47.312Z","2.16.1-next-1601316813-fff2bde7.0":"2020-09-28T18:15:45.509Z","2.9.1-next-1601317779-507e3786.0":"2020-09-28T18:31:22.110Z","2.16.1-next-1601380450-e61638f1.0":"2020-09-29T11:56:09.832Z","2.16.1-next-1601381873-e61638f1.0":"2020-09-29T12:20:06.537Z","2.16.1-next-1601388310-50f56386.0":"2020-09-29T14:07:23.870Z","2.16.1-next-1601389644-391a8974.0":"2020-09-29T14:29:29.231Z","2.16.1-next-1601389898-234c8dfd.0":"2020-09-29T14:33:58.842Z","2.16.1-next-1601390836-d227e703.0":"2020-09-29T14:49:20.001Z","2.16.1-next-1601390946-a93e6976.0":"2020-09-29T14:51:05.906Z","2.16.1-next-1601398946-b9c0a712.0":"2020-09-29T17:04:52.424Z","2.16.1-next-1601398989-d37be773.0":"2020-09-29T17:05:21.167Z","2.16.1-next-1601399009-cf63866d.0":"2020-09-29T17:05:42.159Z","2.16.1-next-1601402231-69ec0d32.0":"2020-09-29T17:59:24.644Z","2.16.1-next-1601403575-d37be773.0":"2020-09-29T18:21:23.116Z","2.16.1-next-1601404887-4f794537.0":"2020-09-29T18:43:32.275Z","2.16.1-next-1601427429-cae0c4f5.0":"2020-09-30T00:59:16.879Z","2.16.1-next-1601427532-e5e45590.0":"2020-09-30T01:01:04.044Z","2.16.1-next-1601453130-4d26bb32.0":"2020-09-30T08:07:36.557Z","2.16.1-next-1601453363-51973e5b.0":"2020-09-30T08:11:45.496Z","2.16.1-next-1601453604-aa0c86eb.0":"2020-09-30T08:15:38.516Z","2.16.1-next-1601463258-f6c34b11.0":"2020-09-30T10:56:29.053Z","2.16.1-next-1601463771-413678fb.0":"2020-09-30T11:05:03.797Z","2.16.1-next-1601464013-35e42348.0":"2020-09-30T11:09:04.897Z","2.16.1-next-1601467889-5d12799d.0":"2020-09-30T12:13:26.556Z","2.16.1-next-1601468686-f6b33d3e.0":"2020-09-30T12:27:19.118Z","2.16.2-next-1601468817-63c2db85.0":"2020-09-30T12:29:08.610Z","2.9.1-next-1601469175-158b08ea.0":"2020-09-30T12:35:03.352Z","2.16.2-next-1601471321-ed67b029.0":"2020-09-30T13:10:59.807Z","2.16.2-next-1601471394-1c809fcf.0":"2020-09-30T13:12:10.453Z","2.16.2-next-1601471671-29588c35.0":"2020-09-30T13:16:34.671Z","2.16.1":"2020-09-30T13:43:42.485Z","2.16.2-next-1601479195-0ff4124b.0":"2020-09-30T15:22:50.071Z","2.16.2-next-1601489696-2b2f2951.0":"2020-09-30T18:17:11.822Z","2.16.2-next-1601490286-2434c70a.0":"2020-09-30T18:27:19.027Z","2.16.2-next-1601494314-ba9b1f05.0":"2020-09-30T19:33:59.356Z","2.16.2-next-1601503009-4c6f3a64.0":"2020-09-30T21:58:54.592Z","2.16.2-next-1601544381-b52bb042.0":"2020-10-01T09:28:44.853Z","2.16.2-next-1601545212-4c4feb2b.0":"2020-10-01T09:42:33.872Z","2.16.2-next-1601547521-8d7ede56.0":"2020-10-01T10:20:59.533Z","2.16.2-next-1601548524-f707ee2d.0":"2020-10-01T10:37:30.731Z","2.16.2-next-1601548817-4787a41d.0":"2020-10-01T10:42:27.265Z","2.16.2-next-1601551504-61074577.0":"2020-10-01T11:27:42.516Z","2.16.2-next-1601551522-25f498aa.0":"2020-10-01T11:27:53.773Z","2.16.2-next-1601553290-ab24846c.0":"2020-10-01T11:56:51.757Z","2.16.2-next-1601556447-10a8393b.0":"2020-10-01T12:49:38.147Z","2.16.2-next-1601559888-773b1b88.0":"2020-10-01T13:46:47.591Z","2.16.2-next-1601561015-bbdcf76d.0":"2020-10-01T14:05:51.272Z","2.16.2-next-1601561426-5bb06db8.0":"2020-10-01T14:12:37.217Z","2.17.1-next-1601562480-c2960086.0":"2020-10-01T14:30:13.256Z","2.17.0":"2020-10-01T14:31:37.510Z","2.17.1-next-1601568621-303af41c.0":"2020-10-01T16:12:20.588Z","2.17.1-next-1601569930-ad9d35b8.0":"2020-10-01T16:34:18.757Z","2.17.1-next-1601570971-ccc86704.0":"2020-10-01T16:51:54.041Z","2.17.1-next-1601582318-d05af1d7.0":"2020-10-01T20:00:36.404Z","2.17.1-next-1601584943-e7c564ef.0":"2020-10-01T20:44:34.400Z","2.17.1-next-1601593993-8715d591.0":"2020-10-01T23:15:08.719Z","2.17.1-next-1601595126-7ca0f45f.0":"2020-10-01T23:34:00.939Z","2.17.1-next-1601599497-556c15fb.0":"2020-10-02T00:46:58.544Z","2.17.1-next-1601604448-287de422.0":"2020-10-02T02:09:34.703Z","2.17.1-next-1601605820-fe5651b4.0":"2020-10-02T02:32:24.505Z","2.17.1-next-1601605964-4780440d.0":"2020-10-02T02:35:18.100Z","2.17.1-next-1601629464-e280d7c5.0":"2020-10-02T09:06:18.866Z","2.17.1-next-1601630989-4fa52c12.0":"2020-10-02T09:31:53.547Z","2.17.1-next-1601631233-7999e51a.0":"2020-10-02T09:35:52.326Z","2.17.1-next-1601631827-8a994923.0":"2020-10-02T09:46:01.111Z","2.17.1-next-1601632810-4fa52c12.0":"2020-10-02T10:02:36.834Z","2.17.1-next-1601632853-d9fabe9a.0":"2020-10-02T10:03:02.393Z","2.17.1-next-1601633715-fcf487a3.0":"2020-10-02T10:17:31.079Z","2.17.1-next-1601634215-d03c78d1.0":"2020-10-02T10:25:40.762Z","2.17.1-next-1601634250-7dc033b5.0":"2020-10-02T10:26:19.760Z","2.17.1-next-1601635923-8c6c7d13.0":"2020-10-02T10:54:22.710Z","2.17.1-next-1601637594-42c1f22b.0":"2020-10-02T11:22:03.154Z","2.17.1-next-1601638172-bf8156c2.0":"2020-10-02T11:31:35.146Z","2.17.1-next-1601638332-5a28803d.0":"2020-10-02T11:34:16.143Z","2.17.1-next-1601638352-8018c917.0":"2020-10-02T11:34:50.258Z","2.17.1-next-1601638685-fcdb2fdc.0":"2020-10-02T11:40:25.538Z","2.18.1-next-1601639054-115a8012.0":"2020-10-02T11:46:07.257Z","2.18.0":"2020-10-02T11:48:20.751Z","2.18.1-next-1601641375-d459de0e.0":"2020-10-02T12:25:14.169Z","2.18.1-next-1601643050-c94f69bf.0":"2020-10-02T12:53:04.146Z","2.18.1-next-1601645389-ec176b0d.0":"2020-10-02T13:32:01.123Z","2.18.1-next-1601646017-b1b61b6c.0":"2020-10-02T13:42:23.061Z","2.18.1-next-1601646872-1be968ac.0":"2020-10-02T13:56:53.090Z","2.18.1-next-1601647582-a1724a97.0":"2020-10-02T14:08:29.679Z","2.18.1-next-1601651422-20119658.0":"2020-10-02T15:12:33.288Z","2.18.1-next-1601652297-115a8012.0":"2020-10-02T15:27:14.318Z","2.18.1-next-1601656824-20119658.0":"2020-10-02T16:42:47.067Z","2.18.1-next-1601661116-c3e70925.0":"2020-10-02T17:53:49.126Z","2.18.1-next-1601662319-80d99d46.0":"2020-10-02T18:13:50.832Z","2.18.1-next-1601662726-554644f7.0":"2020-10-02T18:20:56.517Z","2.18.1-next-1601663326-aca715be.0":"2020-10-02T18:31:12.347Z","2.18.1-next-1601663910-72ef8b7e.0":"2020-10-02T18:40:44.023Z","2.18.1-next-1601665777-6f7cea47.0":"2020-10-02T19:11:49.621Z","2.18.1-next-1601667162-9f881693.0":"2020-10-02T19:34:33.559Z","2.18.1-next-1601668899-9f881693.0":"2020-10-02T20:03:40.122Z","2.18.1-next-1601669306-48085889.0":"2020-10-02T20:10:50.851Z","2.18.1-next-1601670845-55aafffe.0":"2020-10-02T20:36:11.159Z","2.18.1-next-1601672502-6f7cea47.0":"2020-10-02T21:03:38.971Z","2.18.1-next-1601694360-55aafffe.0":"2020-10-03T03:08:11.058Z","2.18.1-next-1601696343-6732389b.0":"2020-10-03T03:41:16.510Z","2.18.1-next-1601697320-aa0f239b.0":"2020-10-03T03:57:10.861Z","2.18.1-next-1601698113-509cbbcd.0":"2020-10-03T04:10:36.214Z","2.18.1-next-1601733211-1d8a762c.0":"2020-10-03T13:55:37.704Z","2.18.1-next-1601734520-4d6d088a.0":"2020-10-03T14:17:21.623Z","2.9.1-next-1601834737-18927b20.0":"2020-10-04T18:07:28.930Z","2.9.1-next-1601844261-e859fd2e.0":"2020-10-04T20:46:01.874Z","2.9.1-next-1601844921-2a2b8725.0":"2020-10-04T20:57:36.635Z","2.9.1-next-1601847260-f8565755.0":"2020-10-04T21:36:07.444Z","2.18.1-next-1601873589-5484dbe2.0":"2020-10-05T04:55:17.783Z","2.18.1-next-1601877390-6fd7cd38.0":"2020-10-05T05:58:45.312Z","2.18.1-next-1601877903-47f7bf1c.0":"2020-10-05T06:07:14.767Z","2.18.1-next-1601878624-d4ab9aff.0":"2020-10-05T06:19:08.928Z","2.18.1-next-1601880566-61573a29.0":"2020-10-05T06:51:42.791Z","2.18.1-next-1601881541-61573a29.0":"2020-10-05T07:07:55.981Z","2.18.1-next-1601884057-158ac27d.0":"2020-10-05T07:49:53.959Z","2.18.2-next-1601884114-f6d1406c.0":"2020-10-05T07:50:44.057Z","2.18.1":"2020-10-05T07:51:41.449Z","2.18.2-next-1601884727-4f5634cd.0":"2020-10-05T08:00:56.698Z","2.18.2-next-1601884733-4f5634cd.0":"2020-10-05T08:01:11.319Z","2.9.1-next-1601890789-b0064ea7.0":"2020-10-05T09:41:41.209Z","2.18.2-next-1601891185-c1b20eac.0":"2020-10-05T09:48:35.328Z","2.18.2-next-1601895844-87ac5ae6.0":"2020-10-05T11:06:12.433Z","2.18.2-next-1601896565-c1b20eac.0":"2020-10-05T11:18:11.718Z","2.18.2-next-1601897472-9547bfec.0":"2020-10-05T11:33:23.178Z","2.19.1-next-1601897561-86b9bf2e.0":"2020-10-05T11:34:55.583Z","2.19.1-next-1601897691-f1491ea2.0":"2020-10-05T11:36:45.476Z","2.19.0":"2020-10-05T11:37:41.988Z","2.9.1-next-1601899240-077b98df.0":"2020-10-05T12:02:37.833Z","2.19.1-next-1601900047-53310c0b.0":"2020-10-05T12:16:06.147Z","2.9.1-next-1601901620-07a3c74e.0":"2020-10-05T12:42:03.001Z","2.19.1-next-1601902303-35009b18.0":"2020-10-05T12:53:52.646Z","2.19.1-next-1601902621-f7dc6ec5.0":"2020-10-05T12:59:23.778Z","2.19.1-next-1601907413-e2c35323.0":"2020-10-05T14:18:49.039Z","2.19.1-next-1601909321-352a72e2.0":"2020-10-05T14:50:54.272Z","2.19.1-next-1601910519-352a72e2.0":"2020-10-05T15:10:51.790Z","2.19.1-next-1601912246-f69bf6e6.0":"2020-10-05T15:39:52.303Z","2.19.1-next-1601912793-019d0713.0":"2020-10-05T15:48:47.829Z","2.19.1-next-1601918002-3bbb985b.0":"2020-10-05T17:15:27.142Z","2.19.1-next-1601918263-aa071856.0":"2020-10-05T17:19:44.327Z","2.19.1-next-1601921056-2df17476.0":"2020-10-05T18:06:28.525Z","2.19.1-next-1601921074-00815d02.0":"2020-10-05T18:06:47.690Z","2.19.1-next-1601921808-ecd88171.0":"2020-10-05T18:19:05.682Z","2.19.1-next-1601935729-de821597.0":"2020-10-05T22:11:06.937Z","2.19.1-next-1601940838-bb5907ac.0":"2020-10-05T23:36:16.798Z","2.19.1-next-1601946383-bb5907ac.0":"2020-10-06T01:08:32.496Z","2.19.1-next-1601946950-44b0ca5d.0":"2020-10-06T01:17:59.350Z","2.19.1-next-1601948413-44b0ca5d.0":"2020-10-06T01:42:20.843Z","2.19.1-next-1601982851-4a7f23c0.0":"2020-10-06T11:16:22.167Z","2.19.1-next-1601983459-5507edb4.0":"2020-10-06T11:26:56.699Z","2.9.1-next-1601983659-55890db0.0":"2020-10-06T11:29:24.364Z","2.19.1-next-1601985536-06dd7f78.0":"2020-10-06T12:01:04.278Z","2.19.1-next-1601986007-7a705d6d.0":"2020-10-06T12:09:00.558Z","2.19.1-next-1601986850-7a705d6d.0":"2020-10-06T12:23:11.192Z","2.19.1-next-1601988344-7a705d6d.0":"2020-10-06T12:47:56.369Z","2.19.1-next-1601989075-ffc456b5.0":"2020-10-06T13:00:10.188Z","2.19.1-next-1601989128-bc4f73e6.0":"2020-10-06T13:00:52.382Z","2.19.1-next-1601989497-57cb079f.0":"2020-10-06T13:07:11.490Z","2.19.1-next-1601989496-46fa8fe0.0":"2020-10-06T13:07:37.489Z","2.19.1-next-1601989899-a77eee75.0":"2020-10-06T13:13:50.099Z","2.19.1-next-1601990261-c880378f.0":"2020-10-06T13:19:38.596Z","2.20.1-next-1601992202-a2ad1594.0":"2020-10-06T13:52:03.510Z","2.20.1-next-1601992481-0ee48b0f.0":"2020-10-06T13:56:55.191Z","2.20.1-next-1601992902-a2ad1594.0":"2020-10-06T14:03:43.070Z","2.9.1-next-1601993567-76db0ec0.0":"2020-10-06T14:14:20.475Z","2.20.1-next-1601994267-a2ad1594.0":"2020-10-06T14:26:21.276Z","2.20.1-next-1601995058-a2ad1594.0":"2020-10-06T14:39:40.517Z","2.20.0":"2020-10-06T14:55:15.677Z","2.20.1-next-1602002623-b8e599de.0":"2020-10-06T16:46:12.843Z","2.20.1-next-1602006806-5e61f93e.0":"2020-10-06T17:55:38.792Z","2.20.2-next-1602007890-9e39bb0c.0":"2020-10-06T18:13:47.000Z","2.20.1":"2020-10-06T18:32:53.731Z","2.20.2-next-1602060391-ea8e21b1.0":"2020-10-07T08:48:34.824Z","2.9.1-next-1602066146-7c0bc041.0":"2020-10-07T10:24:25.089Z","2.20.2-next-1602066213-8a7748aa.0":"2020-10-07T10:25:48.927Z","2.9.1-next-1602066832-ba1a1477.0":"2020-10-07T10:35:38.601Z","2.20.2-next-1602066979-ee3bf978.0":"2020-10-07T10:38:37.354Z","2.20.2-next-1602067028-37139631.0":"2020-10-07T10:39:34.040Z","2.20.2-next-1602067959-dcda121a.0":"2020-10-07T10:54:43.088Z","2.20.2-next-1602069505-f2b2abf9.0":"2020-10-07T11:20:49.002Z","2.20.2-next-1602069545-52021445.0":"2020-10-07T11:21:35.230Z","2.20.2-next-1602069621-dcda121a.0":"2020-10-07T11:22:31.602Z","2.20.2-next-1602069864-f453a767.0":"2020-10-07T11:26:46.573Z","2.20.2-next-1602070157-580e2d65.0":"2020-10-07T11:31:43.081Z","2.9.1-next-1602071188-1bb77e00.0":"2020-10-07T11:48:14.523Z","2.20.2-next-1602071363-f793fad8.0":"2020-10-07T11:52:23.302Z","2.20.2-next-1602072578-8321d0cb.0":"2020-10-07T12:11:54.986Z","2.20.2-next-1602072663-ee8684c1.0":"2020-10-07T12:13:20.649Z","2.20.2-next-1602072970-3ee471ee.0":"2020-10-07T12:18:29.678Z","2.9.1-next-1602073190-b2c916cc.0":"2020-10-07T12:21:44.175Z","2.20.2-next-1602073617-9c626442.0":"2020-10-07T12:29:17.566Z","2.20.2-next-1602073656-544de218.0":"2020-10-07T12:29:58.645Z","2.20.2-next-1602073725-6756deaa.0":"2020-10-07T12:31:02.441Z","2.20.2-next-1602074258-40944e56.0":"2020-10-07T12:40:09.854Z","2.9.1-next-1602074303-31255479.0":"2020-10-07T12:40:19.855Z","2.20.2-next-1602074627-544de218.0":"2020-10-07T12:46:11.376Z","2.20.2-next-1602074636-d8e7e752.0":"2020-10-07T12:46:36.406Z","2.20.2-next-1602075706-544de218.0":"2020-10-07T13:03:58.680Z","2.20.2-next-1602076465-e649494b.0":"2020-10-07T13:16:13.884Z","2.20.2-next-1602077083-c7565caf.0":"2020-10-07T13:27:04.403Z","2.9.1-next-1602079646-022decfc.0":"2020-10-07T14:09:15.028Z","2.20.2-next-1602081730-40da9c55.0":"2020-10-07T14:44:31.323Z","2.20.2-next-1602083221-72b8d339.0":"2020-10-07T15:09:16.614Z","2.20.2-next-1602087350-7de52fbd.0":"2020-10-07T16:17:50.855Z","2.20.2-next-1602087719-04c7fc3a.0":"2020-10-07T16:24:17.659Z","2.20.2-next-1602087805-d745c793.0":"2020-10-07T16:25:43.287Z","2.20.2-next-1602089423-d745c793.0":"2020-10-07T16:52:14.795Z","2.20.2-next-1602090428-d745c793.0":"2020-10-07T17:09:01.753Z","2.20.2-next-1602090603-496b9260.0":"2020-10-07T17:12:35.790Z","2.20.2-next-1602091462-a626330f.0":"2020-10-07T17:26:14.424Z","2.20.2-next-1602091521-b28b8cf8.0":"2020-10-07T17:27:17.698Z","2.20.3-next-1602091571-6a2cbcf0.0":"2020-10-07T17:28:26.534Z","2.20.2":"2020-10-07T18:37:04.611Z","2.20.3-next-1602150961-1dd3a88f.0":"2020-10-08T09:58:24.667Z","2.20.3-next-1602152731-76bc75a0.0":"2020-10-08T10:28:05.392Z","2.20.3-next-1602155331-c0f38077.0":"2020-10-08T11:11:06.756Z","2.20.3-next-1602157989-3ceb34bb.0":"2020-10-08T11:55:29.946Z","2.20.3-next-1602158077-742c24f1.0":"2020-10-08T11:56:52.733Z","2.9.1-next-1602160156-d53125f0.0":"2020-10-08T12:31:04.989Z","2.9.1-next-1602162330-d53125f0.0":"2020-10-08T13:07:05.253Z","2.20.3-next-1602163360-27e89180.0":"2020-10-08T13:25:16.507Z","2.9.1-next-1602163410-69827c14.0":"2020-10-08T13:25:45.538Z","2.20.3-next-1602163430-7967f1a4.0":"2020-10-08T13:26:15.880Z","2.9.1-next-1602164060-855d4c59.0":"2020-10-08T13:36:12.628Z","2.9.1-next-1602164824-11e82beb.0":"2020-10-08T13:48:43.173Z","2.9.1-next-1602165598-855d4c59.0":"2020-10-08T14:01:49.699Z","2.9.1-next-1602166251-11e82beb.0":"2020-10-08T14:12:52.996Z","2.9.1-next-1602166940-5fab8349.0":"2020-10-08T14:24:12.944Z","2.9.1-next-1602167403-69f36a1e.0":"2020-10-08T14:31:49.869Z","2.9.1-next-1602168778-9b132b3c.0":"2020-10-08T14:54:51.008Z","2.20.3-next-1602170355-27e89180.0":"2020-10-08T15:21:24.984Z","2.20.3-next-1602171505-27e89180.0":"2020-10-08T15:40:38.936Z","2.20.3-next-1602172668-27e89180.0":"2020-10-08T15:59:54.023Z","2.20.3-next-1602173654-27e89180.0":"2020-10-08T16:16:30.065Z","2.20.3-next-1602184590-f19a2d85.0":"2020-10-08T19:18:58.674Z","2.9.1-next-1602240727-48b951d4.0":"2020-10-09T10:53:56.755Z","2.9.1-next-1602242108-c2932274.0":"2020-10-09T11:16:54.009Z","2.20.3-next-1602245005-742c24f1.0":"2020-10-09T12:05:43.895Z","2.9.1-next-1602246224-eb9b952b.0":"2020-10-09T12:25:26.059Z","2.20.3-next-1602246726-742c24f1.0":"2020-10-09T12:34:10.312Z","2.9.1-next-1602247409-20a54b6f.0":"2020-10-09T12:45:24.607Z","2.9.1-next-1602248916-bfb401d9.0":"2020-10-09T13:10:23.258Z","2.9.1-next-1602249993-b1d2adf5.0":"2020-10-09T13:28:23.832Z","2.9.1-next-1602251201-9ad14890.0":"2020-10-09T13:48:24.332Z","2.9.1-next-1602251874-f1723825.0":"2020-10-09T13:59:45.809Z","2.9.1-next-1602252148-e2915605.0":"2020-10-09T14:04:03.493Z","2.9.1-next-1602253079-bd36a59b.0":"2020-10-09T14:19:55.367Z","2.20.3-next-1602256394-e8fd1e4d.0":"2020-10-09T15:16:24.280Z","2.20.3-next-1602271341-894ca2ca.0":"2020-10-09T19:24:41.670Z","2.20.3-next-1602272382-b5fe5d96.0":"2020-10-09T19:41:55.591Z","2.20.3-next-1602272398-72b55bfd.0":"2020-10-09T19:42:07.108Z","2.20.3-next-1602273925-72b55bfd.0":"2020-10-09T20:07:27.326Z","2.20.3-next-1602501471-57929e68.0":"2020-10-12T11:20:19.792Z","2.20.3-next-1602504191-1935fab6.0":"2020-10-12T12:05:19.808Z","2.20.3-next-1602505609-1935fab6.0":"2020-10-12T12:29:23.214Z","2.20.3-next-1602510733-3daf134e.0":"2020-10-12T13:54:21.208Z","2.20.3-next-1602513191-b3f69c66.0":"2020-10-12T14:35:34.252Z","2.20.3-next-1602524969-742c24f1.0":"2020-10-12T17:51:38.457Z","2.20.3-next-1602529551-6cf1cdb2.0":"2020-10-12T19:08:01.031Z","2.20.3-next-1602530461-47aa7059.0":"2020-10-12T19:23:09.044Z","2.20.3-next-1602531488-1653d967.0":"2020-10-12T19:40:40.685Z","2.20.3-next-1602534871-fc772f43.0":"2020-10-12T20:36:39.381Z","2.20.3-next-1602535798-045f94b2.0":"2020-10-12T20:52:11.790Z","2.20.3-next-1602582904-a4b55c1a.0":"2020-10-13T09:57:03.768Z","2.20.3-next-1602584403-632e63ec.0":"2020-10-13T10:22:22.247Z","2.20.3-next-1602586168-92ea982d.0":"2020-10-13T10:51:51.859Z","2.20.3-next-1602586384-b070917a.0":"2020-10-13T10:54:58.274Z","2.20.3-next-1602586790-3a46674e.0":"2020-10-13T11:02:00.368Z","2.20.3-next-1602587414-d967de3c.0":"2020-10-13T11:12:24.401Z","2.20.3-next-1602587744-6abeac6b.0":"2020-10-13T11:17:54.377Z","2.20.3-next-1602590122-60628172.0":"2020-10-13T11:57:26.021Z","2.20.3-next-1602590750-41806c88.0":"2020-10-13T12:07:36.616Z","2.20.3-next-1602590735-523f8fa6.0":"2020-10-13T12:08:01.043Z","2.20.3-next-1602590836-a4b68389.0":"2020-10-13T12:09:32.560Z","2.20.3-next-1602590884-cde45fa2.0":"2020-10-13T12:10:32.415Z","2.20.3-next-1602592175-f1b25646.0":"2020-10-13T12:31:45.429Z","2.20.3-next-1602592609-b2ea22fb.0":"2020-10-13T12:39:09.243Z","2.20.3-next-1602593715-b2ea22fb.0":"2020-10-13T12:57:28.502Z","2.20.3-next-1602594840-b2ea22fb.0":"2020-10-13T13:16:18.843Z","2.20.3-next-1602596144-bb69cfc9.0":"2020-10-13T13:37:49.514Z","2.20.3-next-1602596161-bb69cfc9.0":"2020-10-13T13:38:03.403Z","2.20.3-next-1602596826-30bdc55e.0":"2020-10-13T13:49:32.300Z","2.20.3-next-1602596970-c094c5a9.0":"2020-10-13T13:51:42.100Z","2.20.3-next-1602597330-85a418ee.0":"2020-10-13T13:57:42.148Z","2.20.4-next-1602597361-dd9af860.0":"2020-10-13T13:58:17.718Z","2.20.3":"2020-10-13T14:26:19.713Z","2.20.4-next-1602599284-6ff2aaaf.0":"2020-10-13T14:30:25.547Z","2.20.4-next-1602599315-51d3275a.0":"2020-10-13T14:31:00.643Z","2.20.4-next-1602605240-32ab6921.0":"2020-10-13T16:09:37.417Z","2.20.4-next-1602609929-6ff2aaaf.0":"2020-10-13T17:27:45.132Z","2.20.4-next-1602610832-6ff2aaaf.0":"2020-10-13T17:42:43.972Z","2.20.4-next-1602622680-a43c3d0d.0":"2020-10-13T21:00:12.492Z","2.20.4-next-1602661539-e72e3635.0":"2020-10-14T07:48:31.459Z","2.20.4-next-1602661871-9587d627.0":"2020-10-14T07:53:37.195Z","2.20.4-next-1602665620-e14be171.0":"2020-10-14T08:56:07.534Z","2.20.4-next-1602674471-04b38d59.0":"2020-10-14T11:23:37.443Z","2.20.4-next-1602674471-4c119cb8.0":"2020-10-14T11:24:08.287Z","2.20.4-next-1602674817-9e6cb78e.0":"2020-10-14T11:29:08.161Z","2.20.4-next-1602674825-77b89da9.0":"2020-10-14T11:29:21.895Z","2.20.4-next-1602677094-4b6bcbc9.0":"2020-10-14T12:06:54.081Z","2.20.4-next-1602677082-21bbfc35.0":"2020-10-14T12:07:18.334Z","2.20.4-next-1602677809-6ff2aaaf.0":"2020-10-14T12:19:02.322Z","2.20.4-next-1602678193-c5f76981.0":"2020-10-14T12:25:23.147Z","2.20.4-next-1602678392-21bbfc35.0":"2020-10-14T12:29:05.928Z","2.20.4-next-1602679228-4b6bcbc9.0":"2020-10-14T12:42:44.889Z","2.20.4-next-1602679976-c5f76981.0":"2020-10-14T12:54:54.096Z","2.20.4-next-1602680245-99620aec.0":"2020-10-14T12:59:31.557Z","2.20.4-next-1602680656-21bbfc35.0":"2020-10-14T13:06:31.493Z","2.20.4-next-1602680784-0f25d3d6.0":"2020-10-14T13:08:30.477Z","2.20.4-next-1602681610-21bbfc35.0":"2020-10-14T13:22:19.062Z","2.21.1-next-1602682467-ed563445.0":"2020-10-14T13:36:51.845Z","2.21.1-next-1602682681-67ec788e.0":"2020-10-14T13:40:15.210Z","2.21.1-next-1602683380-779ecceb.0":"2020-10-14T13:51:37.695Z","2.21.1-next-1602683578-31aa321f.0":"2020-10-14T13:55:24.797Z","2.21.1-next-1602683709-ed563445.0":"2020-10-14T13:57:30.429Z","2.21.0":"2020-10-14T13:58:41.870Z","2.21.1-next-1602684216-67ec788e.0":"2020-10-14T14:05:55.035Z","2.21.1-next-1602685091-ead71e26.0":"2020-10-14T14:20:31.093Z","2.21.1-next-1602688109-b496b1ba.0":"2020-10-14T15:10:40.532Z","2.21.1-next-1602690685-ead71e26.0":"2020-10-14T15:53:43.046Z","2.21.1-next-1602705044-e7a28f6b.0":"2020-10-14T19:52:58.243Z","2.21.1-next-1602725475-326862c4.0":"2020-10-15T01:33:19.324Z","2.21.1-next-1602729949-f2d00f21.0":"2020-10-15T02:48:01.264Z","2.21.1-next-1602730542-54dfad5f.0":"2020-10-15T02:57:52.898Z","2.21.1-next-1602730582-c3286239.0":"2020-10-15T02:58:30.608Z","2.21.1-next-1602760091-9dff029d.0":"2020-10-15T11:10:30.555Z","2.21.1-next-1602762356-9c47bf03.0":"2020-10-15T11:48:02.104Z","2.21.1-next-1602763542-9c47bf03.0":"2020-10-15T12:08:04.582Z","2.21.1-next-1602764732-9c47bf03.0":"2020-10-15T12:27:43.646Z","2.21.1-next-1602767287-9c47bf03.0":"2020-10-15T13:10:25.521Z","2.21.1-next-1602769664-9c47bf03.0":"2020-10-15T13:49:54.392Z","2.21.1-next-1602776559-bfd7427b.0":"2020-10-15T15:44:47.014Z","2.21.1-next-1602777435-bfd7427b.0":"2020-10-15T15:59:09.507Z","2.21.1-next-1602804497-9088a61d.0":"2020-10-15T23:30:53.290Z","2.21.1-next-1602836642-9d327e4b.0":"2020-10-16T08:26:21.130Z","2.21.1-next-1602838800-68410b50.0":"2020-10-16T09:02:09.023Z","2.21.1-next-1602840811-5a73d611.0":"2020-10-16T09:35:43.518Z","2.21.1-next-1602840950-da967db9.0":"2020-10-16T09:38:02.936Z","2.21.1-next-1602841108-63099227.0":"2020-10-16T09:40:34.046Z","2.21.1-next-1602841630-e2e3a5e2.0":"2020-10-16T09:49:29.651Z","2.21.1-next-1602845598-45b50e24.0":"2020-10-16T10:55:32.022Z","2.21.1-next-1602845759-c00dc71b.0":"2020-10-16T10:58:19.482Z","2.21.1-next-1602846239-9730deff.0":"2020-10-16T11:06:11.631Z","2.21.1-next-1602846286-15e3907c.0":"2020-10-16T11:06:50.745Z","2.21.1-next-1602846633-c78dd35b.0":"2020-10-16T11:13:14.576Z","2.21.1-next-1602846895-6d2bb271.0":"2020-10-16T11:16:58.006Z","2.21.1-next-1602846989-49e633c4.0":"2020-10-16T11:19:19.058Z","2.21.1-next-1602849089-fc690603.0":"2020-10-16T11:53:32.296Z","2.21.1-next-1602851585-37eff8c5.0":"2020-10-16T12:35:40.928Z","2.21.1-next-1602851661-80f72e62.0":"2020-10-16T12:36:31.684Z","2.21.1-next-1602851750-c2b1afa1.0":"2020-10-16T12:37:44.016Z","2.21.1-next-1602855409-d5919591.0":"2020-10-16T13:39:02.053Z","2.21.1-next-1602855743-9140fa3c.0":"2020-10-16T13:44:38.792Z","2.21.1-next-1602860399-46c2ba7e.0":"2020-10-16T15:02:16.744Z","2.21.1-next-1602860607-e751eeaf.0":"2020-10-16T15:05:40.130Z","2.21.1-next-1602861398-46c2ba7e.0":"2020-10-16T15:19:01.619Z","2.21.1-next-1602862052-4c1f11ad.0":"2020-10-16T15:29:40.359Z","2.21.1-next-1602862681-bec2722a.0":"2020-10-16T15:40:17.210Z","2.21.1-next-1602862900-d03bc1e1.0":"2020-10-16T15:43:44.962Z","2.21.1-next-1602863792-f97b8ea9.0":"2020-10-16T15:58:46.772Z","2.21.1-next-1602863921-53768ec1.0":"2020-10-16T16:01:26.489Z","2.21.1-next-1602864030-4c1f11ad.0":"2020-10-16T16:02:48.286Z","2.21.1-next-1602870118-f97b8ea9.0":"2020-10-16T17:44:17.341Z","2.21.1-next-1602870438-80f72e62.0":"2020-10-16T17:49:34.343Z","2.21.1-next-1602871143-9b195101.0":"2020-10-16T18:01:42.672Z","2.21.1-next-1602871201-7f53dc34.0":"2020-10-16T18:02:28.315Z","2.21.1-next-1602878817-96f51397.0":"2020-10-16T20:09:16.853Z","2.21.1-next-1603096398-19e6693a.0":"2020-10-19T08:35:40.302Z","2.21.1-next-1603100701-545add88.0":"2020-10-19T09:47:39.009Z","2.21.1-next-1603102087-a375e296.0":"2020-10-19T10:10:17.788Z","2.21.1-next-1603103237-9766692d.0":"2020-10-19T10:29:32.822Z","2.21.1-next-1603104774-264e2f87.0":"2020-10-19T10:55:05.376Z","2.21.1-next-1603105056-24799d83.0":"2020-10-19T10:59:46.873Z","2.21.1-next-1603105206-31de407c.0":"2020-10-19T11:02:20.569Z","2.22.1-next-1603107408-9fee9faf.0":"2020-10-19T11:39:04.234Z","2.22.1-next-1603108262-8eca63ac.0":"2020-10-19T11:53:19.528Z","2.22.0":"2020-10-19T11:54:45.064Z","2.22.1-next-1603108459-aad057ba.0":"2020-10-19T11:56:37.296Z","2.22.1-next-1603108833-ce4c3702.0":"2020-10-19T12:02:47.481Z","2.22.1-next-1603108864-bf3e9bbe.0":"2020-10-19T12:03:24.674Z","2.22.1-next-1603109151-b3fab68c.0":"2020-10-19T12:08:06.633Z","2.22.1-next-1603109189-1e349db4.0":"2020-10-19T12:08:59.379Z","2.23.1-next-1603109414-26ec2be1.0":"2020-10-19T12:12:30.811Z","2.23.1-next-1603110088-7625de11.0":"2020-10-19T12:23:33.754Z","2.23.1-next-1603110575-b4192b02.0":"2020-10-19T12:31:45.916Z","2.23.1-next-1603112374-51c9ef20.0":"2020-10-19T13:01:52.617Z","2.23.1-next-1603113615-c889fed8.0":"2020-10-19T13:22:21.867Z","2.23.1-next-1603113737-30cba65f.0":"2020-10-19T13:24:28.492Z","2.23.1-next-1603114924-cf426329.0":"2020-10-19T13:44:21.300Z","2.23.1-next-1603115829-94d067fe.0":"2020-10-19T13:59:23.536Z","2.23.1-next-1603116115-8dbd7f97.0":"2020-10-19T14:04:12.120Z","2.23.2-next-1603116373-6a3fd75a.0":"2020-10-19T14:08:38.240Z","2.23.2-next-1603116389-6a3fd75a.0":"2020-10-19T14:08:58.140Z","2.23.2-next-1603116606-0e4ecf7f.0":"2020-10-19T14:12:27.659Z","2.23.1":"2020-10-19T14:14:36.549Z","2.23.2-next-1603119884-798df11f.0":"2020-10-19T15:06:59.613Z","2.23.2-next-1603121750-798df11f.0":"2020-10-19T15:38:13.834Z","2.23.2-next-1603126442-58bc3490.0":"2020-10-19T16:56:18.750Z","2.23.2-next-1603135274-58bc3490.0":"2020-10-19T19:23:35.655Z","2.23.2-next-1603180994-03d6fd0d.0":"2020-10-20T08:05:43.387Z","2.23.2-next-1603181219-89fad313.0":"2020-10-20T08:09:07.090Z","2.23.2-next-1603181260-2ad12a8f.0":"2020-10-20T08:09:45.104Z","2.23.2-next-1603185946-a4fceab6.0":"2020-10-20T09:28:02.544Z","2.23.2-next-1603188235-9a0289e2.0":"2020-10-20T10:06:09.027Z","2.23.2-next-1603193636-6ef423de.0":"2020-10-20T11:36:10.062Z","2.23.2-next-1603194126-4894918e.0":"2020-10-20T11:44:25.274Z","2.23.2-next-1603194613-3baa53a4.0":"2020-10-20T11:52:26.839Z","2.23.2-next-1603195885-d990dcd8.0":"2020-10-20T12:13:39.167Z","2.23.2-next-1603196927-4a5d2930.0":"2020-10-20T12:31:02.474Z","2.23.2-next-1603197008-57d7850e.0":"2020-10-20T12:32:20.906Z","2.23.2-next-1603197067-7063d34f.0":"2020-10-20T12:33:19.623Z","2.23.2-next-1603197231-06a60c29.0":"2020-10-20T12:36:09.339Z","2.23.2-next-1603197248-8b5a7603.0":"2020-10-20T12:36:21.409Z","2.23.2-next-1603197253-8b5a7603.0":"2020-10-20T12:36:40.080Z","2.23.2-next-1603197984-dbfb2c04.0":"2020-10-20T12:48:52.293Z","2.23.2-next-1603199962-10e74efa.0":"2020-10-20T13:21:42.310Z","2.23.2-next-1603200262-60825cca.0":"2020-10-20T13:26:49.154Z","2.23.2-next-1603200684-e7488148.0":"2020-10-20T13:33:39.729Z","2.23.2-next-1603201378-ccb9f60f.0":"2020-10-20T13:45:15.695Z","2.23.2-next-1603201718-321145ca.0":"2020-10-20T13:50:51.499Z","2.23.2-next-1603203972-88a6b0d4.0":"2020-10-20T14:28:42.902Z","2.23.2-next-1603205767-d3fe6488.0":"2020-10-20T14:58:30.506Z","2.23.2-next-1603207426-86a1fb65.0":"2020-10-20T15:25:50.266Z","2.23.2-next-1603214775-cf159f37.0":"2020-10-20T17:28:31.700Z","2.23.2-next-1603217761-3fb27c98.0":"2020-10-20T18:18:29.735Z","2.23.2-next-1603218947-d06b7486.0":"2020-10-20T18:38:03.020Z","2.23.2-next-1603219176-a1d77680.0":"2020-10-20T18:41:54.388Z","2.23.2-next-1603220841-5594b74e.0":"2020-10-20T19:09:50.839Z","2.23.2-next-1603222060-64be487c.0":"2020-10-20T19:29:59.442Z","2.22.1-next-1603223784-e4a14208.0":"2020-10-20T19:58:39.886Z","2.23.2-next-1603224008-d2b969b4.0":"2020-10-20T20:02:31.327Z","2.23.2-next-1603225734-4925af00.0":"2020-10-20T20:31:05.545Z","2.23.2-next-1603225869-3a8b90e9.0":"2020-10-20T20:33:13.153Z","2.23.2-next-1603226704-3a8b90e9.0":"2020-10-20T20:47:13.384Z","2.23.2-next-1603226945-d13bd839.0":"2020-10-20T20:51:34.039Z","2.23.2-next-1603229104-d13bd839.0":"2020-10-20T21:27:17.796Z","2.23.2-next-1603232708-0e1c1f51.0":"2020-10-20T22:27:33.620Z","2.23.2-next-1603233694-e1b05968.0":"2020-10-20T22:43:58.896Z","2.23.2-next-1603234621-976d2c5e.0":"2020-10-20T22:59:07.398Z","2.23.2-next-1603268092-c3d62bfb.0":"2020-10-21T08:17:30.254Z","2.23.2-next-1603268669-f01638a1.0":"2020-10-21T08:26:50.163Z","2.23.2-next-1603268746-36cbafcb.0":"2020-10-21T08:28:15.488Z","2.23.2-next-1603270116-a12e86f4.0":"2020-10-21T08:50:36.997Z","2.23.2-next-1603270659-83667af4.0":"2020-10-21T08:59:39.026Z","2.23.2-next-1603273858-d53ef9f7.0":"2020-10-21T09:53:22.260Z","2.23.3-next-1603273986-9856d47e.0":"2020-10-21T09:55:25.255Z","2.24.1-next-1603275471-329df333.0":"2020-10-21T10:20:09.954Z","2.24.1-next-1603277042-cad2926f.0":"2020-10-21T10:46:24.102Z","2.24.1-next-1603277528-d6eb3909.0":"2020-10-21T10:54:18.612Z","2.24.1-next-1603278283-f85daa8f.0":"2020-10-21T11:06:41.527Z","2.24.1-next-1603278802-d6eb3909.0":"2020-10-21T11:15:23.295Z","2.24.1-next-1603279073-ab2a77ac.0":"2020-10-21T11:20:08.317Z","2.24.1-next-1603279440-d7a6d29e.0":"2020-10-21T11:26:23.602Z","2.24.0":"2020-10-21T11:43:16.898Z","2.24.1-next-1603280612-fc1a2375.0":"2020-10-21T11:45:49.061Z","2.24.1-next-1603282050-74c7502b.0":"2020-10-21T12:09:49.181Z","2.24.1-next-1603282945-3adc73a0.0":"2020-10-21T12:24:48.548Z","2.24.2-next-1603283112-0f1ef146.0":"2020-10-21T12:27:24.667Z","2.24.1":"2020-10-21T12:28:39.747Z","2.24.2-next-1603283329-28699d74.0":"2020-10-21T12:31:04.282Z","2.24.2-next-1603284038-b4c37cab.0":"2020-10-21T12:43:01.151Z","2.24.2-next-1603284449-71333485.0":"2020-10-21T12:49:43.750Z","2.24.2-next-1603286057-71333485.0":"2020-10-21T13:16:37.635Z","2.24.2-next-1603287393-4254c3b0.0":"2020-10-21T13:38:56.856Z","2.24.2-next-1603287503-71333485.0":"2020-10-21T13:40:34.258Z","2.24.2-next-1603289969-31b650db.0":"2020-10-21T14:21:52.657Z","2.24.2-next-1603290728-31b650db.0":"2020-10-21T14:34:23.505Z","2.24.2-next-1603295610-dc4c4f7f.0":"2020-10-21T15:55:54.524Z","2.24.2-next-1603296038-7e80c90d.0":"2020-10-21T16:03:02.661Z","2.24.2-next-1603359410-15ef4c7d.0":"2020-10-22T09:39:00.616Z","2.24.2-next-1603360478-5d6af2c3.0":"2020-10-22T09:57:01.542Z","2.24.2-next-1603360660-e02a39f1.0":"2020-10-22T09:59:49.641Z","2.24.2-next-1603360783-7bbaa571.0":"2020-10-22T10:01:45.736Z","2.24.2-next-1603364436-7bbaa571.0":"2020-10-22T11:02:36.805Z","2.24.2-next-1603365548-7bbaa571.0":"2020-10-22T11:21:20.158Z","2.24.2-next-1603366373-f9d8b020.0":"2020-10-22T11:35:04.204Z","2.24.2-next-1603366564-ac9acdb8.0":"2020-10-22T11:38:22.770Z","2.24.2-next-1603366688-f42fff92.0":"2020-10-22T11:40:33.975Z","2.24.2-next-1603367483-5b2fc941.0":"2020-10-22T11:53:47.771Z","2.24.2-next-1603368242-5b2fc941.0":"2020-10-22T12:06:19.004Z","2.24.2-next-1603371880-5b2fc941.0":"2020-10-22T13:06:58.122Z","2.24.2-next-1603376759-04644c94.0":"2020-10-22T14:28:12.465Z","2.24.2-next-1603377549-04644c94.0":"2020-10-22T14:41:27.843Z","2.24.2-next-1603379490-d73055e2.0":"2020-10-22T15:13:47.192Z","2.24.2-next-1603379760-7e2473c2.0":"2020-10-22T15:18:16.630Z","2.24.2-next-1603381230-7e2473c2.0":"2020-10-22T15:42:39.374Z","2.24.2-next-1603397701-62abe542.0":"2020-10-22T20:17:21.185Z","2.24.2-next-1603397978-43430d9c.0":"2020-10-22T20:22:06.681Z","2.24.2-next-1603399613-f42fff92.0":"2020-10-22T20:49:15.573Z","2.24.2-next-1603399836-62abe542.0":"2020-10-22T20:52:53.246Z","2.24.2-next-1603401241-62abe542.0":"2020-10-22T21:16:17.352Z","2.24.2-next-1603402937-8f92e6f3.0":"2020-10-22T21:44:29.210Z","2.24.2-next-1603404151-f42fff92.0":"2020-10-22T22:04:40.440Z","2.24.2-next-1603406443-6511996b.0":"2020-10-22T22:42:55.799Z","2.24.2-next-1603407492-0ad9a0a3.0":"2020-10-22T23:00:20.543Z","2.24.2-next-1603432798-7e2473c2.0":"2020-10-23T06:02:36.369Z","2.24.2-next-1603432892-04644c94.0":"2020-10-23T06:03:40.369Z","2.24.2-next-1603436647-3ff70880.0":"2020-10-23T07:06:31.728Z","2.24.2-next-1603442742-c1fa42c5.0":"2020-10-23T08:47:49.831Z","2.24.2-next-1603443919-49a6562e.0":"2020-10-23T09:07:35.415Z","2.24.2-next-1603446803-bbf9a11a.0":"2020-10-23T09:55:35.515Z","2.24.2-next-1603448066-a4ce91ab.0":"2020-10-23T10:16:40.065Z","2.24.2-next-1603448956-ad2375aa.0":"2020-10-23T10:31:43.804Z","2.24.2-next-1603450039-4fd7d9ab.0":"2020-10-23T10:49:48.629Z","2.24.2-next-1603450496-d73055e2.0":"2020-10-23T10:57:11.577Z","2.24.2-next-1603452949-5b2fc941.0":"2020-10-23T11:38:04.642Z","2.24.2-next-1603454500-d6f5ed75.0":"2020-10-23T12:04:07.683Z","2.24.2-next-1603454821-69491ea8.0":"2020-10-23T12:09:18.443Z","2.24.2-next-1603454933-4587494f.0":"2020-10-23T12:11:13.563Z","2.24.2-next-1603455061-5a757eb5.0":"2020-10-23T12:13:11.064Z","2.24.2-next-1603455826-f279999f.0":"2020-10-23T12:26:07.611Z","2.24.2-next-1603457149-4b4c966f.0":"2020-10-23T12:48:15.889Z","2.24.2-next-1603457879-b94eaa0e.0":"2020-10-23T13:00:20.345Z","2.24.2-next-1603457954-f5109fa6.0":"2020-10-23T13:01:37.519Z","2.24.3-next-1603458209-2e145443.0":"2020-10-23T13:05:53.607Z","2.24.2":"2020-10-23T13:11:06.179Z","2.24.3-next-1603459068-1e927a3b.0":"2020-10-23T13:20:12.174Z","2.24.3-next-1603460752-e18c47a4.0":"2020-10-23T13:48:14.830Z","2.24.3-next-1603461838-cbdab423.0":"2020-10-23T14:06:21.243Z","2.24.3-next-1603462683-8a8dd4f4.0":"2020-10-23T14:20:44.369Z","2.24.3-next-1603465195-34727386.0":"2020-10-23T15:02:25.642Z","2.25.1-next-1603465313-c539ad40.0":"2020-10-23T15:04:09.463Z","2.25.0":"2020-10-23T15:35:41.452Z","2.25.1-next-1603467477-9b01f0d1.0":"2020-10-23T15:40:18.343Z","2.25.1-next-1603468527-084728fb.0":"2020-10-23T15:58:01.856Z","2.25.1-next-1603469448-ee7e0177.0":"2020-10-23T16:13:03.511Z","2.25.1-next-1603471075-509d2d87.0":"2020-10-23T16:40:11.652Z","2.25.1-next-1603472478-400993e1.0":"2020-10-23T17:03:38.176Z","2.25.1-next-1603473470-400993e1.0":"2020-10-23T17:20:12.808Z","2.25.1-next-1603475709-7fba193f.0":"2020-10-23T17:57:12.735Z","2.25.1-next-1603476486-6df528de.0":"2020-10-23T18:10:30.832Z","1.48.2-next-1603584777-a5c272fd.0":"2020-10-25T00:24:01.583Z","2.25.1-next-1603701274-c5241f2c.0":"2020-10-26T08:37:01.295Z","2.25.1-next-1603711941-fc9576d8.0":"2020-10-26T11:34:33.704Z","2.25.1-next-1603712548-08bd3151.0":"2020-10-26T11:44:39.499Z","2.25.1-next-1603713415-8dfbf25c.0":"2020-10-26T11:59:17.519Z","2.25.1-next-1603713823-33143942.0":"2020-10-26T12:06:04.775Z","2.25.1-next-1603715429-fbe7bd1a.0":"2020-10-26T12:32:47.062Z","2.25.1-next-1603715484-cab97fe3.0":"2020-10-26T12:33:47.413Z","2.26.1-next-1603715568-ed7a2830.0":"2020-10-26T12:35:03.769Z","2.26.0":"2020-10-26T12:59:09.906Z","2.26.1-next-1603726492-95f3a5c4.0":"2020-10-26T15:37:13.239Z","2.26.1-next-1603741405-95f3a5c4.0":"2020-10-26T19:45:55.241Z","2.26.1-next-1603790871-95f3a5c4.0":"2020-10-27T09:30:21.419Z","2.26.1-next-1603800530-f7c598d8.0":"2020-10-27T12:11:14.568Z","2.26.1-next-1603800708-7f87ba04.0":"2020-10-27T12:14:02.965Z","1.48.2-next-1603803932-4526ebb2.0":"2020-10-27T13:15:59.732Z","2.26.1-next-1603804549-d7c0bc22.0":"2020-10-27T13:18:12.050Z","2.26.1-next-1603806604-a0b4eb5b.0":"2020-10-27T13:52:22.881Z","2.26.1-next-1603807670-742397dc.0":"2020-10-27T14:10:06.885Z","1.48.3-next-1603807879-44a5e9dd.0":"2020-10-27T14:21:48.749Z","1.48.2":"2020-10-27T14:28:22.675Z","2.26.1-next-1603809474-6b2d18e4.0":"2020-10-27T14:40:32.183Z","2.26.1-next-1603810682-99696a29.0":"2020-10-27T15:00:25.945Z","2.26.2-next-1603810836-02e6366d.0":"2020-10-27T15:03:12.480Z","2.26.1":"2020-10-27T15:04:45.817Z","2.26.2-next-1603815010-02e6366d.0":"2020-10-27T16:12:35.337Z","2.26.2-next-1603816325-02e6366d.0":"2020-10-27T16:34:38.341Z","2.26.2-next-1603829901-01bf666c.0":"2020-10-27T20:20:51.664Z","2.26.2-next-1603833319-ce9d1498.0":"2020-10-27T21:17:28.761Z","2.26.2-next-1603890257-b068ddc8.0":"2020-10-28T13:07:00.760Z","2.26.2-next-1603895970-aaf802be.0":"2020-10-28T14:41:53.719Z","2.26.2-next-1603897208-58b02ffe.0":"2020-10-28T15:02:17.309Z","2.26.3-next-1603897870-f24a5990.0":"2020-10-28T15:13:45.935Z","2.26.2":"2020-10-28T15:17:59.159Z","2.26.3-next-1603898958-660bed6d.0":"2020-10-28T15:31:30.720Z","2.26.4-next-1603899243-78634374.0":"2020-10-28T15:36:25.912Z","2.26.4-next-1603907303-78634374.0":"2020-10-28T17:50:43.832Z","2.26.3":"2020-10-28T18:38:07.202Z","2.26.4-next-1603944429-a071b41c.0":"2020-10-29T04:09:23.704Z","2.26.4-next-1603971763-ce47b194.0":"2020-10-29T11:45:13.834Z","2.26.4-next-1603979624-a62581e1.0":"2020-10-29T13:55:48.233Z","2.26.4-next-1603980399-1ae329b4.0":"2020-10-29T14:09:08.536Z","2.26.4-next-1603980601-133e2906.0":"2020-10-29T14:12:26.825Z","2.26.4-next-1603981179-36aa76eb.0":"2020-10-29T14:21:58.059Z","2.26.4-next-1603982372-8a2d5a78.0":"2020-10-29T14:41:40.268Z","2.26.4-next-1603982541-36aa76eb.0":"2020-10-29T14:45:00.723Z","2.26.4-next-1603984411-c2aad9d4.0":"2020-10-29T15:15:58.881Z","2.26.4-next-1603986779-56071728.0":"2020-10-29T15:55:25.078Z","2.26.4-next-1603987997-acf1fa16.0":"2020-10-29T16:15:37.029Z","2.26.4-next-1603996074-ce47b194.0":"2020-10-29T18:30:36.192Z","2.26.4-next-1603997705-c6495cff.0":"2020-10-29T18:57:21.839Z","2.26.4-next-1603998701-3c75928d.0":"2020-10-29T19:13:56.810Z","2.26.4-next-1603999183-27d35075.0":"2020-10-29T19:22:04.682Z","2.26.4-next-1604000158-27d35075.0":"2020-10-29T19:38:29.525Z","2.26.4-next-1604002649-14ea883b.0":"2020-10-29T20:19:42.448Z","2.26.4-next-1604004239-9cdc3775.0":"2020-10-29T20:46:23.259Z","2.26.4-next-1604004945-b6d0afd3.0":"2020-10-29T20:58:10.640Z","2.26.4-next-1604006886-44d32181.0":"2020-10-29T21:30:29.391Z","2.26.4-next-1604056954-879fd75f.0":"2020-10-30T11:24:47.769Z","2.26.4-next-1604056996-33a03a6a.0":"2020-10-30T11:25:36.694Z","2.26.4-next-1604060477-9c8a6052.0":"2020-10-30T12:23:29.862Z","2.26.4-next-1604060503-0608a3f6.0":"2020-10-30T12:24:10.922Z","2.26.4-next-1604064531-0aa4787e.0":"2020-10-30T13:31:04.352Z","2.26.4-next-1604065372-0aa4787e.0":"2020-10-30T13:45:17.993Z","2.26.4-next-1604066134-f6f5ffd0.0":"2020-10-30T13:58:07.044Z","2.26.4-next-1604066992-951501e3.0":"2020-10-30T14:12:19.946Z","2.26.4-next-1604072759-984cf357.0":"2020-10-30T15:48:27.500Z","2.26.4-next-1604096243-bcd1b3bb.0":"2020-10-30T22:19:59.147Z","2.26.4-next-1604315905-03db59c9.0":"2020-11-02T11:20:55.790Z","2.26.4-next-1604315997-d25d55a0.0":"2020-11-02T11:22:24.401Z","2.26.4-next-1604316277-14f51239.0":"2020-11-02T11:26:30.787Z","2.26.4-next-1604320876-188c1848.0":"2020-11-02T12:43:38.415Z","2.26.4-next-1604323244-382b3fdf.0":"2020-11-02T13:23:11.458Z","2.26.4-next-1604323405-53ce8ed9.0":"2020-11-02T13:25:42.761Z","2.26.4-next-1604326514-29836483.0":"2020-11-02T14:17:49.867Z","2.26.4-next-1604327444-5c840f15.0":"2020-11-02T14:33:10.561Z","2.26.4-next-1604329623-192bbccf.0":"2020-11-02T15:09:28.453Z","2.26.4-next-1604332523-a8bac763.0":"2020-11-02T15:57:46.034Z","2.26.4-next-1604338068-bc6c8ef0.0":"2020-11-02T17:30:14.074Z","2.26.4-next-1604339843-0222f29f.0":"2020-11-02T17:59:50.663Z","2.26.4-next-1604343360-d9e622d5.0":"2020-11-02T18:58:11.060Z","2.26.4-next-1604344862-d9e622d5.0":"2020-11-02T19:23:10.050Z","2.26.4-next-1604350721-971177e1.0":"2020-11-02T21:01:02.931Z","2.26.4-next-1604354425-c05324ba.0":"2020-11-02T22:02:40.183Z","2.26.4-next-1604354719-b55344b1.0":"2020-11-02T22:07:46.560Z","2.26.4-next-1604399637-9e2d8ac4.0":"2020-11-03T10:36:33.769Z","2.26.4-next-1604408298-dd1d3e16.0":"2020-11-03T13:00:53.181Z","2.26.4-next-1604408797-97ab878b.0":"2020-11-03T13:08:54.281Z","2.26.4-next-1604412070-34441dbf.0":"2020-11-03T14:03:37.709Z","2.26.4-next-1604413177-5d6d1e8b.0":"2020-11-03T14:21:55.975Z","2.26.4-next-1604413178-5d6d1e8b.0":"2020-11-03T14:22:19.667Z","2.26.4-next-1604413641-8ac0b15b.0":"2020-11-03T14:29:42.854Z","2.26.4-next-1604413700-3e4514ae.0":"2020-11-03T14:30:42.946Z","2.26.4-next-1604413998-d5dc1c62.0":"2020-11-03T14:35:32.948Z","2.27.1-next-1604414967-7227dd71.0":"2020-11-03T14:51:42.844Z","2.27.0":"2020-11-03T14:53:59.821Z","2.27.1-next-1604425416-4a53aeb7.0":"2020-11-03T17:46:00.982Z","2.27.1-next-1604428707-ccdfc873.0":"2020-11-03T18:40:54.090Z","2.27.1-next-1604436700-9235d996.0":"2020-11-03T20:54:13.778Z","2.27.1-next-1604445922-a2613b1c.0":"2020-11-03T23:27:33.355Z","2.27.1-next-1604446333-a1f7bce3.0":"2020-11-03T23:34:44.456Z","2.27.1-next-1604478197-95ff28f3.0":"2020-11-04T08:25:41.259Z","2.27.1-next-1604482505-704474a9.0":"2020-11-04T09:37:39.916Z","2.27.1-next-1604487185-95ff28f3.0":"2020-11-04T10:55:36.526Z","2.27.1-next-1604487287-3750cc8a.0":"2020-11-04T10:57:04.219Z","2.27.1-next-1604487504-bdf447e4.0":"2020-11-04T11:00:48.111Z","2.27.2-next-1604487530-baf27c1a.0":"2020-11-04T11:01:12.665Z","2.27.2-next-1604488934-2681ebec.0":"2020-11-04T11:24:41.113Z","2.27.1":"2020-11-04T11:28:28.330Z","2.27.2-next-1604489592-859547f2.0":"2020-11-04T11:35:35.077Z","2.27.3-next-1604489652-399b23ed.0":"2020-11-04T11:36:32.767Z","2.27.3-next-1604491510-399b23ed.0":"2020-11-04T12:07:41.984Z","2.27.2":"2020-11-04T12:08:37.368Z","2.27.3-next-1604492797-48071952.0":"2020-11-04T12:29:03.265Z","2.27.3-next-1604495174-ce8b86e6.0":"2020-11-04T13:08:38.703Z","2.27.3-next-1604495297-78a7ffd2.0":"2020-11-04T13:10:40.640Z","2.27.3-next-1604496074-4c1b21fa.0":"2020-11-04T13:23:32.718Z","2.27.3-next-1604496189-27e3c069.0":"2020-11-04T13:25:17.591Z","2.27.3-next-1604496624-b977716a.0":"2020-11-04T13:32:46.531Z","2.27.3-next-1604500213-42d2fd9e.0":"2020-11-04T14:32:31.149Z","2.27.3-next-1604500946-a0411080.0":"2020-11-04T14:45:42.103Z","2.27.3-next-1604500957-4ec0bfc3.0":"2020-11-04T14:46:12.418Z","2.27.4-next-1604501017-a1693d38.0":"2020-11-04T14:46:40.888Z","2.27.4-next-1604502546-019e4372.0":"2020-11-04T15:11:22.049Z","2.27.3":"2020-11-04T15:13:58.919Z","2.27.4-next-1604502811-a89df8cc.0":"2020-11-04T15:15:50.904Z","2.27.4-next-1604505184-e6e3cf20.0":"2020-11-04T15:55:36.242Z","2.27.5-next-1604505240-6f27eedc.0":"2020-11-04T15:56:34.941Z","2.27.5-next-1604511416-6f27eedc.0":"2020-11-04T17:39:16.172Z","2.27.5-next-1604512997-23dd580c.0":"2020-11-04T18:05:42.016Z","2.27.5-next-1604513033-0b239f25.0":"2020-11-04T18:06:18.614Z","2.27.4":"2020-11-04T19:42:47.747Z","2.27.5-next-1604532455-3a53c30d.0":"2020-11-04T23:29:56.881Z","2.27.5-next-1604582059-eaf05773.0":"2020-11-05T13:17:06.099Z","2.27.5-next-1604583159-b381e915.0":"2020-11-05T13:35:11.819Z","2.27.5-next-1604585342-dbc100c1.0":"2020-11-05T14:11:40.666Z","2.27.5-next-1604585398-bbab79f5.0":"2020-11-05T14:12:27.506Z","2.27.5-next-1604587080-03db8caa.0":"2020-11-05T14:40:16.589Z","2.27.5-next-1604607141-6f09598d.0":"2020-11-05T20:14:52.793Z","2.27.5-next-1604653440-7651dd3e.0":"2020-11-06T09:06:49.513Z","2.27.5-next-1604653738-d0d506d3.0":"2020-11-06T09:11:24.985Z","2.27.5-next-1604664558-bb420715.0":"2020-11-06T12:11:37.319Z","2.27.5-next-1604669143-008e69aa.0":"2020-11-06T13:28:20.353Z","2.27.5-next-1604670370-26f94330.0":"2020-11-06T13:48:12.960Z","2.27.5-next-1604671887-5cdbda57.0":"2020-11-06T14:14:09.205Z","2.28.1-next-1604679244-29fd0c32.0":"2020-11-06T16:16:46.946Z","2.28.0":"2020-11-06T16:35:33.711Z","2.27.5-next-1604687061-7651dd3e.0":"2020-11-06T18:26:53.691Z","2.28.1-next-1604687141-bb46b543.0":"2020-11-06T18:28:05.386Z","2.28.1-next-1604687303-f3511557.0":"2020-11-06T18:30:28.100Z","2.27.5-next-1604688530-7651dd3e.0":"2020-11-06T18:51:41.330Z","2.28.1-next-1604689469-f3511557.0":"2020-11-06T19:06:44.108Z","2.27.5-next-1604689659-7651dd3e.0":"2020-11-06T19:10:19.587Z","2.28.1-next-1604691740-d7238ecd.0":"2020-11-06T19:44:36.517Z","2.28.1-next-1604692852-d7238ecd.0":"2020-11-06T20:02:44.980Z","2.28.1-next-1604693922-9faaa6b2.0":"2020-11-06T20:21:00.371Z","2.28.1-next-1604695862-8fcf46b6.0":"2020-11-06T20:53:06.738Z","2.28.1-next-1604796421-d647383b.0":"2020-11-08T00:49:30.879Z","2.28.1-next-1604806140-d647383b.0":"2020-11-08T03:31:10.223Z","2.28.1-next-1604806739-e6fa4017.0":"2020-11-08T03:41:19.725Z","2.28.1-next-1604810153-ce9e66d0.0":"2020-11-08T04:37:54.348Z","2.28.1-next-1604814318-af966061.0":"2020-11-08T05:47:40.382Z","2.28.1-next-1604845683-af966061.0":"2020-11-08T14:30:12.585Z","2.28.1-next-1604852554-f803135c.0":"2020-11-08T16:25:04.981Z","2.28.1-next-1604924391-db51e663.0":"2020-11-09T12:21:59.663Z","2.28.1-next-1604926653-94071823.0":"2020-11-09T13:00:04.766Z","2.28.1-next-1604927316-19869793.0":"2020-11-09T13:10:50.989Z","2.28.1-next-1604927756-45d59a53.0":"2020-11-09T13:18:12.076Z","2.28.1-next-1604927821-eb204837.0":"2020-11-09T13:19:20.748Z","2.28.1-next-1604928384-45d59a53.0":"2020-11-09T13:28:42.396Z","2.28.1-next-1604929600-6cc9592a.0":"2020-11-09T13:49:13.975Z","2.28.1-next-1604930281-f70c5165.0":"2020-11-09T14:00:24.708Z","2.28.1-next-1604930388-d57a0973.0":"2020-11-09T14:02:07.640Z","2.28.1-next-1604932831-0769ffbe.0":"2020-11-09T14:42:57.808Z","2.28.1-next-1604934988-9a50f1ed.0":"2020-11-09T15:19:05.194Z","2.28.1-next-1604937150-08106f6a.0":"2020-11-09T15:55:07.760Z","2.28.1-next-1604937724-4b8cd78b.0":"2020-11-09T16:04:33.116Z","2.28.1-next-1604938866-bcb4b149.0":"2020-11-09T16:23:26.659Z","2.28.1-next-1604940284-f9f37fe5.0":"2020-11-09T16:47:06.755Z","2.28.1-next-1604946758-ce089a98.0":"2020-11-09T18:34:56.046Z","2.28.1-next-1604949351-c9aae640.0":"2020-11-09T19:19:02.308Z","2.28.1-next-1604953397-b65d053c.0":"2020-11-09T20:25:44.932Z","2.28.1-next-1604962055-7b95cb27.0":"2020-11-09T22:49:42.686Z","2.28.1-next-1604971648-7b95cb27.0":"2020-11-10T01:29:55.873Z","2.28.1-next-1604972587-7b95cb27.0":"2020-11-10T01:45:33.694Z","2.28.1-next-1605000150-48b52a3a.0":"2020-11-10T09:24:46.122Z","2.28.1-next-1605001485-ae20af71.0":"2020-11-10T09:47:17.731Z","2.28.1-next-1605001726-73129584.0":"2020-11-10T09:51:14.046Z","2.28.1-next-1605006749-55a9abbb.0":"2020-11-10T11:15:07.758Z","2.28.1-next-1605006864-9d21c28e.0":"2020-11-10T11:16:28.325Z","2.28.1-next-1605010898-f5f9af84.0":"2020-11-10T12:24:28.123Z","2.28.1-next-1605011253-b79f16e2.0":"2020-11-10T12:29:51.009Z","2.28.1-next-1605011277-86e32daf.0":"2020-11-10T12:30:18.965Z","2.28.1-next-1605013419-f5f9af84.0":"2020-11-10T13:06:10.456Z","2.28.1-next-1605016658-a7263dd1.0":"2020-11-10T14:00:15.049Z","2.28.1-next-1605016878-1d17d256.0":"2020-11-10T14:04:03.808Z","2.28.1-next-1605016886-53055129.0":"2020-11-10T14:04:43.290Z","2.28.1-next-1605017531-33fadf9d.0":"2020-11-10T14:14:39.265Z","2.28.1-next-1605017637-8fb5f06c.0":"2020-11-10T14:16:25.563Z","2.28.1-next-1605017821-a23c5c5a.0":"2020-11-10T14:19:56.866Z","2.28.1-next-1605018224-4da28a64.0":"2020-11-10T14:26:07.922Z","2.28.1-next-1605018398-b629b82b.0":"2020-11-10T14:29:04.291Z","2.29.0":"2020-11-10T14:32:32.599Z","2.29.1-next-1605018774-351cce5d.0":"2020-11-10T14:35:14.525Z","2.29.1-next-1605033137-41b6b15f.0":"2020-11-10T18:35:05.578Z","2.29.1-next-1605033164-9855f233.0":"2020-11-10T18:35:25.462Z","2.29.1-next-1605034874-303cb02c.0":"2020-11-10T19:03:44.748Z","2.29.1-next-1605035022-41b6b15f.0":"2020-11-10T19:06:05.144Z","2.29.1-next-1605036955-33751c2d.0":"2020-11-10T19:37:53.284Z","2.29.1-next-1605045509-ff97b182.0":"2020-11-10T22:00:44.257Z","2.29.1-next-1605048693-3728717e.0":"2020-11-10T22:54:11.867Z","2.29.1-next-1605052397-a809a73e.0":"2020-11-10T23:55:55.980Z","2.29.1-next-1605081972-7000f34f.0":"2020-11-11T08:08:49.412Z","2.29.1-next-1605106241-a080185a.0":"2020-11-11T14:53:29.295Z","2.29.1-next-1605107367-2dd91c42.0":"2020-11-11T15:12:07.855Z","2.29.1-next-1605108291-9f478187.0":"2020-11-11T15:27:47.118Z","2.29.1-next-1605108462-d7290acb.0":"2020-11-11T15:30:28.368Z","2.29.1-next-1605140739-4c9006f5.0":"2020-11-12T00:28:11.569Z","2.29.1-next-1605164537-544c7aba.0":"2020-11-12T07:04:32.564Z","2.29.1-next-1605169328-f71334ce.0":"2020-11-12T08:24:33.794Z","2.29.1-next-1605176928-f71334ce.0":"2020-11-12T10:31:07.995Z","2.29.1-next-1605179025-2b120fa8.0":"2020-11-12T11:06:31.520Z","2.29.1-next-1605182499-ab088f59.0":"2020-11-12T12:04:02.785Z","2.29.1-next-1605187801-a3c601f4.0":"2020-11-12T13:32:48.970Z","2.29.1-next-1605195130-e170cb3e.0":"2020-11-12T15:34:39.972Z","2.29.1-next-1605198090-431dfc79.0":"2020-11-12T16:24:03.270Z","2.29.1-next-1605204536-6aeb6380.0":"2020-11-12T18:11:05.461Z","2.29.1-next-1605207991-0bdb2a36.0":"2020-11-12T19:09:38.727Z","2.29.1-next-1605210842-6aeb6380.0":"2020-11-12T19:56:38.989Z","2.29.1-next-1605211089-c44ee8a2.0":"2020-11-12T20:00:56.111Z","2.29.1-next-1605213064-d0f5ce4a.0":"2020-11-12T20:33:27.146Z","2.29.1-next-1605213089-7182131e.0":"2020-11-12T20:33:53.707Z","2.29.1-next-1605219941-fca701b6.0":"2020-11-12T22:28:16.380Z","2.29.1-next-1605220611-2da01368.0":"2020-11-12T22:39:44.083Z","2.29.1-next-1605231317-ddd37edc.0":"2020-11-13T01:37:41.896Z","2.29.1-next-1605232431-5422a9ba.0":"2020-11-13T01:56:11.394Z","2.29.1-next-1605233226-21cc1f35.0":"2020-11-13T02:09:31.328Z","2.29.1-next-1605267316-97bdd9ec.0":"2020-11-13T11:37:35.478Z","2.29.1-next-1605267337-97bdd9ec.0":"2020-11-13T11:37:55.226Z","2.29.1-next-1605270854-04ff8082.0":"2020-11-13T12:36:43.844Z","2.29.1-next-1605271306-f8207329.0":"2020-11-13T12:43:52.842Z","2.29.1-next-1605271871-51a83a20.0":"2020-11-13T12:53:29.690Z","2.29.1-next-1605271896-d38f9eff.0":"2020-11-13T12:54:03.982Z","2.29.1-next-1605277241-6b12751f.0":"2020-11-13T14:23:07.651Z","2.29.1-next-1605277396-19922c4d.0":"2020-11-13T14:26:11.595Z","2.29.1-next-1605277718-8e877540.0":"2020-11-13T14:31:05.399Z","2.29.1-next-1605279440-c2386709.0":"2020-11-13T14:59:45.626Z","2.29.1-next-1605284689-cba07659.0":"2020-11-13T16:27:12.972Z","2.29.1-next-1605289435-6edce4c9.0":"2020-11-13T17:46:24.808Z","2.29.1-next-1605292246-763c6626.0":"2020-11-13T18:33:25.988Z","2.29.1-next-1605297932-01d5bdb0.0":"2020-11-13T20:08:27.742Z","2.29.1-next-1605394195-ae77ae1b.0":"2020-11-14T22:52:15.944Z","2.29.1-next-1605396541-248ed8ae.0":"2020-11-14T23:31:23.489Z","2.29.1-next-1605413653-9b3e6665.0":"2020-11-15T04:16:18.056Z","2.29.1-next-1605445864-be8f7381.0":"2020-11-15T13:13:20.964Z","2.29.1-next-1605458632-2af203f7.0":"2020-11-15T16:46:33.262Z","2.29.1-next-1605528730-70d379c8.0":"2020-11-16T12:14:29.416Z","2.29.1-next-1605529600-d2c565b6.0":"2020-11-16T12:29:05.176Z","2.29.1-next-1605530576-c1e20fc1.0":"2020-11-16T12:45:16.955Z","2.29.1-next-1605531016-e41c43a3.0":"2020-11-16T12:52:42.088Z","2.30.1-next-1605533135-98af3341.0":"2020-11-16T13:27:55.955Z","2.30.0":"2020-11-16T13:28:36.234Z","2.30.1-next-1605533608-246600be.0":"2020-11-16T13:35:54.483Z","2.30.1-next-1605533779-91d25b8e.0":"2020-11-16T13:38:44.322Z","2.30.1-next-1605535186-52c00531.0":"2020-11-16T14:02:18.400Z","2.30.1-next-1605535853-122cbab6.0":"2020-11-16T14:13:11.490Z","2.30.1-next-1605537420-122cbab6.0":"2020-11-16T14:40:15.885Z","2.30.1-next-1605538549-880e0fd6.0":"2020-11-16T14:58:11.520Z","2.30.1-next-1605540555-00386573.0":"2020-11-16T15:32:56.650Z","2.30.2-next-1605540836-75e11a77.0":"2020-11-16T15:36:43.347Z","2.30.2-next-1605541039-67697d90.0":"2020-11-16T15:39:39.790Z","2.30.2-next-1605541258-a8a761be.0":"2020-11-16T15:43:39.319Z","2.30.2-next-1605541801-91ec3a94.0":"2020-11-16T15:52:24.911Z","2.30.2-next-1605541843-67697d90.0":"2020-11-16T15:53:16.233Z","2.30.1":"2020-11-16T16:04:51.359Z","2.30.2-next-1605554612-1894efeb.0":"2020-11-16T19:26:13.395Z","2.30.2-next-1605570951-07f53782.0":"2020-11-16T23:58:17.660Z","2.30.2-next-1605600878-b2e914e6.0":"2020-11-17T08:17:04.316Z","2.30.2-next-1605602353-b2e914e6.0":"2020-11-17T08:41:35.413Z","2.30.2-next-1605604141-67697d90.0":"2020-11-17T09:11:43.351Z","2.30.2-next-1605607058-67697d90.0":"2020-11-17T10:00:07.619Z","2.30.2-next-1605608261-2472e6c9.0":"2020-11-17T10:20:11.720Z","2.30.2-next-1605610237-07f53782.0":"2020-11-17T10:53:09.140Z","2.30.2-next-1605615693-16c71828.0":"2020-11-17T12:23:29.090Z","2.30.2-next-1605621812-3186ddbb.0":"2020-11-17T14:07:17.589Z","2.30.2-next-1605624535-74a081a6.0":"2020-11-17T14:51:27.550Z","2.30.2-next-1605635698-d80c3689.0":"2020-11-17T17:57:22.398Z","2.30.2-next-1605646890-e41d3320.0":"2020-11-17T21:04:01.217Z","2.30.2-next-1605649215-f69850eb.0":"2020-11-17T21:42:54.954Z","2.30.2-next-1605651993-ef19da1e.0":"2020-11-17T22:28:49.059Z","2.30.2-next-1605653534-34a486bb.0":"2020-11-17T22:54:51.049Z","2.30.2-next-1605654781-e5459f72.0":"2020-11-17T23:15:24.340Z","2.30.2-next-1605694712-e712c697.0":"2020-11-18T10:21:00.208Z","2.30.2-next-1605697098-78bb4d3c.0":"2020-11-18T11:00:26.040Z","2.30.2-next-1605699483-b86e2919.0":"2020-11-18T11:40:23.540Z","2.30.2-next-1605709976-2472e6c9.0":"2020-11-18T14:35:22.963Z","2.30.2-next-1605713228-1c5ba599.0":"2020-11-18T15:29:47.256Z","2.30.2-next-1605713859-2ba902fb.0":"2020-11-18T15:40:01.160Z","2.30.2-next-1605717606-9f8763bf.0":"2020-11-18T16:42:51.022Z","2.30.2-next-1605721468-1b3e103a.0":"2020-11-18T17:47:16.910Z","2.30.2-next-1605723797-4fba3662.0":"2020-11-18T18:25:31.219Z","2.30.2-next-1605725386-3e9324ec.0":"2020-11-18T18:52:19.836Z","2.30.2-next-1605727991-3e9324ec.0":"2020-11-18T19:35:51.306Z","2.30.2-next-1605730357-284519e2.0":"2020-11-18T20:15:05.222Z","2.30.2-next-1605780744-0ec75768.0":"2020-11-19T10:14:57.427Z","2.30.2-next-1605785618-5c882bf8.0":"2020-11-19T11:36:25.672Z","2.30.2-next-1605791444-8cbe65e5.0":"2020-11-19T13:13:16.448Z","2.30.2-next-1605791955-8170003f.0":"2020-11-19T13:21:46.611Z","2.30.2-next-1605792036-14bc234d.0":"2020-11-19T13:23:05.172Z","2.30.2-next-1605792189-8bd0e477.0":"2020-11-19T13:25:34.512Z","2.30.2-next-1605794146-4a420e62.0":"2020-11-19T13:58:18.621Z","2.30.2-next-1605795567-3fcddaaa.0":"2020-11-19T14:21:42.299Z","2.30.2-next-1605795657-8bd0e477.0":"2020-11-19T14:23:35.125Z","2.30.2-next-1605795737-050798c9.0":"2020-11-19T14:25:07.291Z","2.30.2-next-1605796230-01562cc7.0":"2020-11-19T14:33:34.905Z","2.30.2-next-1605796576-cf610ece.0":"2020-11-19T14:39:03.059Z","2.30.2-next-1605798346-8bd0e477.0":"2020-11-19T15:08:07.395Z","2.30.2-next-1605801235-c6e7a5a4.0":"2020-11-19T15:56:19.885Z","2.30.2-next-1605802915-603cedd4.0":"2020-11-19T16:24:42.695Z","2.30.2-next-1605804099-6bb1c40e.0":"2020-11-19T16:44:06.925Z","2.30.2-next-1605858578-8bd0e477.0":"2020-11-20T07:52:16.043Z","2.30.2-next-1605861140-8bd0e477.0":"2020-11-20T08:34:49.277Z","2.30.2-next-1605863956-7310574e.0":"2020-11-20T09:21:42.183Z","2.30.2-next-1605865330-2ba2251a.0":"2020-11-20T09:44:18.751Z","2.30.2-next-1605870406-cf610ece.0":"2020-11-20T11:09:36.978Z","2.30.2-next-1605871510-f0e3ae03.0":"2020-11-20T11:27:28.796Z","2.30.2-next-1605872430-e9660af3.0":"2020-11-20T11:43:00.197Z","2.30.2-next-1605874991-8b4c9407.0":"2020-11-20T12:25:18.782Z","2.30.2-next-1605875567-67179b44.0":"2020-11-20T12:35:38.947Z","2.30.2-next-1605882380-9c409b6e.0":"2020-11-20T14:28:22.961Z","2.30.2-next-1605884572-9c409b6e.0":"2020-11-20T15:05:21.817Z","2.30.2-next-1605889537-3fcddaaa.0":"2020-11-20T16:28:34.054Z","2.30.2-next-1605902721-7625b8d2.0":"2020-11-20T20:07:48.917Z","2.30.2-next-1606073615-e6a86cda.0":"2020-11-22T19:35:53.853Z","2.30.2-next-1606073657-89aff8dc.0":"2020-11-22T19:36:33.783Z","2.30.2-next-1606074318-6ee4b79e.0":"2020-11-22T19:47:41.437Z","2.30.2-next-1606075571-a5558aa3.0":"2020-11-22T20:08:44.198Z","2.30.2-next-1606134594-e5978488.0":"2020-11-23T12:32:26.391Z","2.30.2-next-1606137054-3325033f.0":"2020-11-23T13:13:23.625Z","2.30.2-next-1606139724-01635fb5.0":"2020-11-23T13:57:38.771Z","2.30.2-next-1606141571-c2c6a30a.0":"2020-11-23T14:28:50.923Z","2.30.2-next-1606145453-8d03fcdf.0":"2020-11-23T15:33:15.758Z","2.30.2-next-1606146957-ddcd4af9.0":"2020-11-23T15:58:13.829Z","2.30.2-next-1606151267-a35c0e8c.0":"2020-11-23T17:10:03.961Z","2.30.2-next-1606157020-d0c4594f.0":"2020-11-23T18:46:06.837Z","2.30.2-next-1606157993-6b474060.0":"2020-11-23T19:02:32.449Z","2.30.2-next-1606161755-878cfe15.0":"2020-11-23T20:05:12.951Z","2.30.2-next-1606162829-0c72f9dc.0":"2020-11-23T20:23:04.370Z","2.30.2-next-1606166242-a6eab454.0":"2020-11-23T21:19:56.949Z","2.30.2-next-1606207176-4b9ac393.0":"2020-11-24T08:42:20.561Z","2.30.2-next-1606214059-d51524bc.0":"2020-11-24T10:37:13.424Z","2.30.2-next-1606215144-2d50feb0.0":"2020-11-24T10:54:42.932Z","2.30.2-next-1606215320-6d188fca.0":"2020-11-24T10:57:46.166Z","2.30.2-next-1606216332-219c5d18.0":"2020-11-24T11:14:50.884Z","2.30.2-next-1606216492-d0a5c1b1.0":"2020-11-24T11:17:15.208Z","2.30.2-next-1606217123-8b4e0328.0":"2020-11-24T11:27:55.197Z","2.30.2-next-1606217678-3d1d5313.0":"2020-11-24T11:37:15.114Z","2.30.2-next-1606218183-73124394.0":"2020-11-24T11:45:21.823Z","2.30.2-next-1606223112-13466560.0":"2020-11-24T13:07:33.418Z","2.30.2-next-1606223136-9b227de3.0":"2020-11-24T13:08:16.776Z","2.30.2-next-1606224031-ef5356d8.0":"2020-11-24T13:23:12.625Z","2.30.2-next-1606224249-d521d4f3.0":"2020-11-24T13:26:46.236Z","2.30.2-next-1606224768-89cfdaa8.0":"2020-11-24T13:35:18.218Z","2.30.2-next-1606225391-5d0a4332.0":"2020-11-24T13:46:14.878Z","2.30.2-next-1606225470-ba9c82f3.0":"2020-11-24T13:47:31.468Z","2.30.2-next-1606226191-19c7a931.0":"2020-11-24T13:59:14.239Z","2.30.2-next-1606226688-2d86a8ee.0":"2020-11-24T14:07:24.342Z","2.30.2-next-1606227314-88cf26c9.0":"2020-11-24T14:17:56.721Z","2.30.2-next-1606227549-f3c639a7.0":"2020-11-24T14:22:01.234Z","2.30.2-next-1606227827-fe745ac1.0":"2020-11-24T14:26:44.792Z","2.30.2-next-1606228974-7212c53c.0":"2020-11-24T14:45:31.932Z","2.30.2-next-1606230404-e15b9d67.0":"2020-11-24T15:09:32.161Z","2.30.2-next-1606231466-7709a008.0":"2020-11-24T15:26:55.963Z","2.30.2-next-1606233309-62661675.0":"2020-11-24T15:57:48.642Z","2.30.2-next-1606233395-45577a83.0":"2020-11-24T15:59:04.222Z","2.30.2-next-1606234396-f30874d0.0":"2020-11-24T16:15:55.366Z","2.30.2-next-1606236477-f3d2d170.0":"2020-11-24T16:50:55.363Z","2.30.2-next-1606236551-0e89d97a.0":"2020-11-24T16:51:54.048Z","2.30.2-next-1606244582-7b1b52ab.0":"2020-11-24T19:05:17.803Z","2.30.2-next-1606246534-cb480be2.0":"2020-11-24T19:38:20.906Z","2.30.2-next-1606247254-b82f0794.0":"2020-11-24T19:50:22.558Z","2.30.2-next-1606248610-046dbf69.0":"2020-11-24T20:12:43.648Z","2.30.2-next-1606249017-eda2bd26.0":"2020-11-24T20:19:35.631Z","2.30.2-next-1606249491-9c81bc09.0":"2020-11-24T20:27:32.132Z","2.30.2-next-1606253356-e4d6e32e.0":"2020-11-24T21:31:45.633Z","2.30.2-next-1606260042-9af95bf1.0":"2020-11-24T23:23:16.855Z","2.30.2-next-1606260406-b025e99a.0":"2020-11-24T23:29:19.515Z","2.30.2-next-1606265886-6d5f2f2c.0":"2020-11-25T01:00:47.622Z","2.30.2-next-1606296469-8907e3a4.0":"2020-11-25T09:30:31.966Z","2.30.2-next-1606301175-8907e3a4.0":"2020-11-25T10:49:06.317Z","2.30.2-next-1606306866-d3fddf39.0":"2020-11-25T12:23:44.577Z","2.30.2-next-1606326547-10f8a5c8.0":"2020-11-25T17:51:43.441Z","2.30.2-next-1606339979-0474781a.0":"2020-11-25T21:35:31.098Z","2.30.2-next-1606340374-0474781a.0":"2020-11-25T21:42:28.915Z","2.30.2-next-1606364487-ea656f0f.0":"2020-11-26T04:24:09.168Z","2.30.2-next-1606387651-39487564.0":"2020-11-26T10:50:09.351Z","2.30.2-next-1606388291-53a438d6.0":"2020-11-26T11:00:53.766Z","2.30.2-next-1606395226-34bed290.0":"2020-11-26T12:56:05.596Z","2.30.2-next-1606396363-8acdc68a.0":"2020-11-26T13:15:11.305Z","2.30.2-next-1606396924-f730bd33.0":"2020-11-26T13:24:45.256Z","2.30.2-next-1606399729-18325b21.0":"2020-11-26T14:11:35.422Z","2.30.2-next-1606399875-f9e02808.0":"2020-11-26T14:13:52.597Z","2.30.2-next-1606424091-9fd744b6.0":"2020-11-26T20:57:32.759Z","2.30.2-next-1606427045-9fd744b6.0":"2020-11-26T21:46:20.802Z","2.30.2-next-1606454535-f70a05df.0":"2020-11-27T05:24:52.220Z","2.30.2-next-1606478305-6ef1f197.0":"2020-11-27T12:01:13.784Z","2.30.2-next-1606478981-809e6a7c.0":"2020-11-27T12:12:33.486Z","2.30.2-next-1606483902-d38a4241.0":"2020-11-27T13:34:17.417Z","2.30.2-next-1606734800-1abe4fd6.0":"2020-11-30T11:15:51.753Z","2.30.2-next-1606742433-9ca77ac3.0":"2020-11-30T13:23:29.446Z","2.30.2-next-1606743633-330fd6bc.0":"2020-11-30T13:43:23.369Z","2.30.2-next-1606743954-0dcc7c52.0":"2020-11-30T13:48:44.842Z","2.30.2-next-1606745667-3f1ead38.0":"2020-11-30T14:17:18.480Z","2.30.2-next-1606745888-33383319.0":"2020-11-30T14:20:57.662Z","2.30.2-next-1606746127-e4bf5cf1.0":"2020-11-30T14:25:21.068Z","2.30.2-next-1606751273-1ecf83e3.0":"2020-11-30T15:50:20.650Z","2.30.2-next-1606753936-e4bf5cf1.0":"2020-11-30T16:35:27.884Z","2.30.2-next-1606765206-e4bf5cf1.0":"2020-11-30T19:42:56.905Z","2.30.2-next-1606766473-74222e95.0":"2020-11-30T20:03:58.115Z","2.30.2-next-1606774038-43304624.0":"2020-11-30T22:09:41.634Z","2.30.2-next-1606784626-8786b7ed.0":"2020-12-01T01:06:20.376Z","2.30.2-next-1606785666-0e59d9b1.0":"2020-12-01T01:23:45.557Z","2.30.2-next-1606808801-21a5b275.0":"2020-12-01T07:49:35.589Z","2.30.2-next-1606809318-2b001a73.0":"2020-12-01T07:57:59.002Z","2.30.2-next-1606829607-e018547a.0":"2020-12-01T13:36:01.882Z","2.30.2-next-1606856307-6fdb1559.0":"2020-12-01T21:00:42.575Z","2.30.2-next-1606856317-6fdb1559.0":"2020-12-01T21:01:27.987Z","2.30.2-next-1606862059-fcc04a63.0":"2020-12-01T22:37:01.663Z","2.30.2-next-1606904248-57018b3a.0":"2020-12-02T10:20:14.187Z","2.30.2-next-1606907426-523b0643.0":"2020-12-02T11:13:07.814Z","2.30.2-next-1606908709-9f09a702.0":"2020-12-02T11:34:27.673Z","2.30.2-next-1606909561-6166d705.0":"2020-12-02T11:48:47.000Z","2.30.2-next-1606910350-bd473414.0":"2020-12-02T12:01:46.112Z","2.30.2-next-1606919948-bd473414.0":"2020-12-02T14:41:50.789Z","2.30.2-next-1606920193-de66504d.0":"2020-12-02T14:45:40.588Z","2.30.2-next-1606920224-de66504d.0":"2020-12-02T14:46:37.659Z","2.30.2-next-1606920279-05eeb452.0":"2020-12-02T14:47:11.316Z","2.30.2-next-1606921099-05eeb452.0":"2020-12-02T15:00:55.535Z","2.30.2-next-1606927527-05eeb452.0":"2020-12-02T16:48:05.546Z","2.30.2-next-1606935782-d79f3129.0":"2020-12-02T19:05:45.538Z","2.30.3-next-1606940707-9bd954b0.0":"2020-12-02T20:27:58.212Z","2.30.2-next-1606940726-b77263b9.0":"2020-12-02T20:28:20.199Z","2.30.3-next-1606941435-580de42f.0":"2020-12-02T20:40:00.345Z","2.30.2":"2020-12-02T20:51:38.398Z","2.30.3-next-1606943566-00430898.0":"2020-12-02T21:15:20.063Z","2.30.3-next-1606995022-98023332.0":"2020-12-03T11:32:50.830Z","2.30.3-next-1606995211-d9560aa5.0":"2020-12-03T11:36:04.207Z","2.30.2-next-1606996603-05eeb452.0":"2020-12-03T11:59:32.169Z","2.30.3-next-1607029718-e2da972c.0":"2020-12-03T21:11:11.460Z","2.30.3-next-1607032074-49dfddd9.0":"2020-12-03T21:50:35.859Z","2.30.3-next-1607036154-d0efc3b0.0":"2020-12-03T22:58:33.466Z","2.30.3-next-1607060525-a61922cb.0":"2020-12-04T05:45:00.776Z","2.30.3-next-1607060891-dff31a88.0":"2020-12-04T05:50:42.651Z","2.30.3-next-1607063086-6a4f7824.0":"2020-12-04T06:27:40.264Z","2.30.3-next-1607065296-d55ec1e5.0":"2020-12-04T07:04:15.693Z","2.30.3-next-1607090686-aba2ab9e.0":"2020-12-04T14:07:22.762Z","2.30.3-next-1607091445-721559f8.0":"2020-12-04T14:20:06.269Z","2.30.3-next-1607091887-579ac520.0":"2020-12-04T14:27:24.569Z","2.30.3-next-1607093069-559cca3e.0":"2020-12-04T14:47:05.246Z","2.30.3-next-1607093345-579ac520.0":"2020-12-04T14:51:25.830Z","2.30.2-next-1607101969-d9826209.0":"2020-12-04T17:15:37.196Z","2.30.3-next-1607111481-cf5d1333.0":"2020-12-04T19:53:52.704Z","2.30.3-next-1607339118-47482c77.0":"2020-12-07T11:07:58.711Z","2.30.3-next-1607341377-db21a60e.0":"2020-12-07T11:45:24.360Z","2.30.3-next-1607349437-49cca36c.0":"2020-12-07T14:00:11.280Z","2.30.3-next-1607357734-579ac520.0":"2020-12-07T16:18:20.240Z","2.30.3-next-1607359484-579ac520.0":"2020-12-07T16:47:13.868Z","2.30.3-next-1607361800-a7da6be3.0":"2020-12-07T17:25:53.834Z","2.30.2-next-1607367706-04a7387e.0":"2020-12-07T19:05:13.402Z","2.30.2-next-1607373864-1d1b8d2c.0":"2020-12-07T20:47:03.044Z","2.30.2-next-1607377641-34dbca27.0":"2020-12-07T21:50:04.839Z","2.30.3-next-1607433508-72cc812c.0":"2020-12-08T13:20:57.196Z","2.30.3-next-1607435329-8dc01657.0":"2020-12-08T13:51:28.406Z","2.30.3-next-1607449081-c24ce069.0":"2020-12-08T17:41:02.367Z","2.30.2-next-1607463092-1162d135.0":"2020-12-08T21:34:09.786Z","2.30.3-next-1607512886-d05bcd38.0":"2020-12-09T11:24:09.700Z","2.30.3-next-1607513272-e9539c34.0":"2020-12-09T11:30:49.405Z","2.30.3-next-1607515523-9ff8e5ee.0":"2020-12-09T12:08:01.851Z","2.30.3-next-1607516970-e40fe00a.0":"2020-12-09T12:32:11.105Z","2.30.4-next-1607517102-836b4d74.0":"2020-12-09T12:34:22.098Z","2.30.3":"2020-12-09T13:09:17.037Z","2.30.4-next-1607523716-7c077106.0":"2020-12-09T14:24:50.786Z","2.30.4-next-1607524587-e12d6f5e.0":"2020-12-09T14:39:00.857Z","2.30.4-next-1607550472-2cf4049f.0":"2020-12-09T21:50:23.874Z","2.30.4-next-1607552312-fba7ba12.0":"2020-12-09T22:21:06.251Z","2.30.4-next-1607553436-bfe76dd6.0":"2020-12-09T22:39:50.164Z","2.30.4-next-1607555016-f51a073a.0":"2020-12-09T23:06:05.882Z","2.30.4-next-1607556592-2f08e9be.0":"2020-12-09T23:32:49.942Z","2.30.4-next-1607600861-4620c21c.0":"2020-12-10T11:50:34.310Z","2.30.4-next-1607608791-86d4d0ed.0":"2020-12-10T14:02:54.591Z","2.30.2-next-1607614386-50f42e25.0":"2020-12-10T15:35:58.490Z","2.30.4-next-1607617432-7d64068c.0":"2020-12-10T16:26:42.374Z","2.30.4-next-1607618169-7493a449.0":"2020-12-10T16:38:51.639Z","2.30.4-next-1607622444-7493a449.0":"2020-12-10T17:50:10.576Z","2.30.4-next-1607625268-8308b630.0":"2020-12-10T18:36:52.609Z","2.30.4-next-1607626288-31a80cc0.0":"2020-12-10T18:53:56.210Z","2.31.1-next-1607628041-0fadc1d3.0":"2020-12-10T19:23:18.382Z","2.30.4-next-1607628828-7e78e7a7.0":"2020-12-10T19:36:16.114Z","2.31.1-next-1607633034-ed60cc16.0":"2020-12-10T20:46:19.561Z","2.31.1-next-1607635372-9730ab60.0":"2020-12-10T21:25:16.873Z","2.30.2-next-1607636416-cd801e00.0":"2020-12-10T21:42:57.879Z","2.31.1-next-1607636756-bacb6c25.0":"2020-12-10T21:48:41.609Z","2.31.0":"2020-12-10T22:12:17.948Z","2.31.1-next-1607687730-e330ff72.0":"2020-12-11T11:58:26.057Z","2.31.1-next-1607688185-c86bc913.0":"2020-12-11T12:05:24.292Z","2.31.1-next-1607689275-e084f4d3.0":"2020-12-11T12:23:31.055Z","2.31.1-next-1607690195-8c68b079.0":"2020-12-11T12:39:34.293Z","2.31.1-next-1607690667-7a391e85.0":"2020-12-11T12:47:07.040Z","2.31.1-next-1607691240-24a96a90.0":"2020-12-11T12:56:19.847Z","2.31.1-next-1607691858-07af2548.0":"2020-12-11T13:06:39.069Z","2.31.1-next-1607696063-9f0ee0e0.0":"2020-12-11T14:16:44.217Z","2.31.1-next-1607696325-8e0e88b4.0":"2020-12-11T14:21:10.504Z","2.31.1-next-1607696470-f71f3b54.0":"2020-12-11T14:23:38.515Z","2.31.1-next-1607697018-fada1fb8.0":"2020-12-11T14:32:35.728Z","2.31.1-next-1607697051-9c6d7e71.0":"2020-12-11T14:33:32.003Z","2.31.1-next-1607698811-41ff6fb3.0":"2020-12-11T15:02:32.873Z","2.32.1-next-1607698887-456c7271.0":"2020-12-11T15:03:49.819Z","2.32.1-next-1607701421-53f9e9a6.0":"2020-12-11T15:46:38.171Z","2.32.0":"2020-12-11T16:20:35.969Z","2.32.1-next-1607704971-f29917df.0":"2020-12-11T16:45:11.151Z","2.32.1-next-1607705333-488a3532.0":"2020-12-11T16:51:31.647Z","2.32.1-next-1607705763-3e196b21.0":"2020-12-11T16:58:32.183Z","2.32.1-next-1607712516-6956b4c1.0":"2020-12-11T18:51:16.781Z","2.32.1-next-1607714702-434290d6.0":"2020-12-11T19:27:26.015Z","2.32.1-next-1607715878-061ec874.0":"2020-12-11T19:47:11.799Z","2.32.1-next-1607717334-4165be9c.0":"2020-12-11T20:11:21.316Z","2.32.1-next-1607719277-4165be9c.0":"2020-12-11T20:43:38.173Z","2.32.1-next-1607720585-71aca485.0":"2020-12-11T21:05:56.478Z","2.32.2-next-1607720658-d946f598.0":"2020-12-11T21:06:42.886Z","2.32.1":"2020-12-11T21:46:02.341Z","2.32.2-next-1607936112-dbf5842f.0":"2020-12-14T08:57:41.433Z","2.32.2-next-1607940357-a1de5a51.0":"2020-12-14T10:08:19.428Z","2.32.2-next-1607941267-c1faf96e.0":"2020-12-14T10:23:41.664Z","2.32.2-next-1607944586-973d7b0f.0":"2020-12-14T11:18:58.971Z","2.32.2-next-1607944802-6397f7a4.0":"2020-12-14T11:22:23.983Z","2.32.2-next-1607951952-15540a8c.0":"2020-12-14T13:22:06.181Z","2.32.2-next-1607952037-358f7e06.0":"2020-12-14T13:23:13.229Z","2.32.2-next-1607952972-6f121a94.0":"2020-12-14T13:38:34.559Z","2.31.1-next-1607957576-e48e52eb.0":"2020-12-14T14:55:59.610Z","2.32.2-next-1607958276-b7f6fcc7.0":"2020-12-14T15:07:20.868Z","2.31.1-next-1607958315-6f557338.0":"2020-12-14T15:08:07.251Z","2.31.1-next-1607959352-6f557338.0":"2020-12-14T15:26:04.447Z","2.32.2-next-1607960134-24b0d71c.0":"2020-12-14T15:37:53.826Z","2.32.2-next-1607961083-852bc561.0":"2020-12-14T15:53:52.341Z","2.31.1-next-1607962569-26d8e4d2.0":"2020-12-14T16:19:08.625Z","2.32.2-next-1607962772-c59ba19b.0":"2020-12-14T16:22:03.866Z","2.31.1-next-1607963703-40c18b89.0":"2020-12-14T16:37:51.097Z","2.31.1-next-1607975140-0c1c69ce.0":"2020-12-14T19:48:26.401Z","2.32.2-next-1607982223-6c0079ef.0":"2020-12-14T21:46:23.921Z","2.32.2-next-1607982888-4957c5ed.0":"2020-12-14T21:57:25.041Z","2.32.2-next-1607985622-4957c5ed.0":"2020-12-14T22:43:02.067Z","2.31.1-next-1607986904-d0d62e43.0":"2020-12-14T23:04:25.182Z","2.32.2-next-1607993767-ad0d322d.0":"2020-12-15T00:58:27.976Z","2.32.3-next-1607996913-308e4320.0":"2020-12-15T01:50:58.531Z","2.32.2-next-1608029931-07fa1aee.0":"2020-12-15T11:01:19.010Z","2.32.2-next-1608035029-2b53c85c.0":"2020-12-15T12:26:18.924Z","2.32.3-next-1608036288-c85ac393.0":"2020-12-15T12:47:26.510Z","2.32.3-next-1608036987-a4571c62.0":"2020-12-15T12:59:12.756Z","2.32.2":"2020-12-15T13:08:23.144Z","2.32.3-next-1608039440-6efd4c02.0":"2020-12-15T13:39:47.000Z","2.32.3-next-1608041026-b2847b01.0":"2020-12-15T14:06:23.742Z","2.32.3-next-1608041346-a7577626.0":"2020-12-15T14:12:01.779Z","2.32.3-next-1608042160-2ec6cb3a.0":"2020-12-15T14:25:34.107Z","2.32.3-next-1608042765-7e7a0b1c.0":"2020-12-15T14:35:23.990Z","2.32.3-next-1608042792-5ad1aad6.0":"2020-12-15T14:36:13.856Z","2.32.3-next-1608043836-1f712470.0":"2020-12-15T14:53:08.998Z","2.32.3-next-1608043916-6ffcd0e0.0":"2020-12-15T14:54:21.673Z","2.32.3-next-1608044120-8a10bb60.0":"2020-12-15T14:57:55.228Z","2.32.3-next-1608047089-c66cb524.0":"2020-12-15T15:47:30.522Z","2.32.3-next-1608047166-921e0330.0":"2020-12-15T15:48:54.871Z","2.32.3-next-1608047341-5347fa9c.0":"2020-12-15T15:51:41.495Z","2.32.3-next-1608048083-7cbe2792.0":"2020-12-15T16:04:16.938Z","2.32.3-next-1608048285-8a10bb60.0":"2020-12-15T16:08:47.383Z","2.32.3-next-1608050790-8a10bb60.0":"2020-12-15T16:49:37.109Z","2.32.3-next-1608052491-32097b1b.0":"2020-12-15T17:17:19.746Z","2.32.3-next-1608055281-cee788b4.0":"2020-12-15T18:04:00.988Z","2.32.3-next-1608057783-ccce23fa.0":"2020-12-15T18:45:49.840Z","2.33.1-next-1608061455-ddb1f2d8.0":"2020-12-15T19:46:33.392Z","2.33.1-next-1608112092-f8b6fea7.0":"2020-12-16T09:50:40.748Z","2.33.1-next-1608112638-345034cc.0":"2020-12-16T10:00:23.697Z","2.33.1-next-1608115772-3c88132b.0":"2020-12-16T10:51:55.990Z","2.33.0":"2020-12-16T11:57:56.149Z","2.33.1-next-1608120558-3c88132b.0":"2020-12-16T12:12:10.631Z","2.33.1-next-1608121221-6d09bfe4.0":"2020-12-16T12:22:40.232Z","2.33.1-next-1608125131-59df05ff.0":"2020-12-16T13:28:13.886Z","2.33.1-next-1608126216-ea30c7c2.0":"2020-12-16T13:46:06.508Z","2.33.1-next-1608126527-1c76dccb.0":"2020-12-16T13:51:09.999Z","2.33.2-next-1608128839-8f6fd916.0":"2020-12-16T14:29:47.845Z","2.33.2-next-1608130256-8f6fd916.0":"2020-12-16T14:53:59.535Z","2.33.1":"2020-12-16T15:22:36.555Z","2.33.2-next-1608135242-f0696638.0":"2020-12-16T16:16:57.592Z","2.33.2-next-1608138916-d5e9477d.0":"2020-12-16T17:18:03.061Z","2.33.2-next-1608140836-4c6a5a27.0":"2020-12-16T17:50:18.138Z","2.33.2-next-1608175365-501ce721.0":"2020-12-17T03:25:18.564Z","2.33.2-next-1608176934-e9719e27.0":"2020-12-17T03:51:14.201Z","2.33.2-next-1608200469-e61d7e58.0":"2020-12-17T10:23:42.418Z","2.33.2-next-1608201574-e61d7e58.0":"2020-12-17T10:42:23.835Z","2.33.2-next-1608203172-1031d9e1.0":"2020-12-17T11:08:55.693Z","2.33.3-next-1608204470-9f2b3b55.0":"2020-12-17T11:30:22.954Z","2.33.3-next-1608206118-be25a311.0":"2020-12-17T11:58:13.195Z","2.33.3-next-1608210925-6c0dfada.0":"2020-12-17T13:17:55.064Z","2.33.2":"2020-12-17T13:35:59.383Z","2.33.3-next-1608214108-f2be469e.0":"2020-12-17T14:11:10.330Z","2.33.3-next-1608215550-f2be469e.0":"2020-12-17T14:35:27.683Z","2.33.3-next-1608222257-f9260e66.0":"2020-12-17T16:27:04.867Z","2.33.3-next-1608222666-2c1f1b94.0":"2020-12-17T16:33:31.688Z","2.32.3-next-1608223390-4a64ae60.0":"2020-12-17T16:45:29.064Z","2.33.3-next-1608224061-8507e4b0.0":"2020-12-17T16:56:46.771Z","2.33.4-next-1608224200-7531f6ac.0":"2020-12-17T16:59:27.901Z","2.33.3":"2020-12-17T17:19:40.354Z","2.33.4-next-1608252872-8d3b9435.0":"2020-12-18T00:56:58.431Z","2.33.4-next-1608289305-33ace1f2.0":"2020-12-18T11:04:05.531Z","2.33.5-next-1608295665-a0eabebb.0":"2020-12-18T12:50:18.166Z","2.33.5-next-1608296907-a0eabebb.0":"2020-12-18T13:11:04.242Z","2.33.5-next-1608299095-45a1f58e.0":"2020-12-18T13:47:35.680Z","2.33.4":"2020-12-18T13:48:27.370Z","2.33.5-next-1608302141-80c04811.0":"2020-12-18T14:38:26.136Z","2.33.5-next-1608303377-0201f9c0.0":"2020-12-18T14:58:57.108Z","2.33.5-next-1608303515-812f4081.0":"2020-12-18T15:01:10.119Z","2.33.5-next-1608305824-f89e5e37.0":"2020-12-18T15:39:50.609Z","2.33.5-next-1608309114-d5e5c6f2.0":"2020-12-18T16:34:19.965Z","2.33.5-next-1608309537-d6372d54.0":"2020-12-18T16:41:25.218Z","2.33.5-next-1608311618-bb1bc7ae.0":"2020-12-18T17:16:36.312Z","2.33.5-next-1608316295-e478ce95.0":"2020-12-18T18:34:03.844Z","2.33.5-next-1608319923-e478ce95.0":"2020-12-18T19:34:42.370Z","2.33.5-next-1608320425-0431d01c.0":"2020-12-18T19:43:09.731Z","2.33.5-next-1608323882-4c66a640.0":"2020-12-18T20:40:53.379Z","2.33.5-next-1608324861-3156623d.0":"2020-12-18T20:56:41.436Z","2.33.5-next-1608327686-05e2ed67.0":"2020-12-18T21:44:21.705Z","2.33.5-next-1608521678-583ce108.0":"2020-12-21T03:37:27.411Z","2.33.5-next-1608545000-e716a252.0":"2020-12-21T10:06:02.675Z","2.33.5-next-1608549179-a4a9fc0a.0":"2020-12-21T11:15:24.213Z","2.33.5-next-1608551757-488574eb.0":"2020-12-21T11:58:59.692Z","2.33.5-next-1608553542-f0652012.0":"2020-12-21T12:28:15.601Z","2.33.5-next-1608554053-c16a8c82.0":"2020-12-21T12:36:33.947Z","2.33.5-next-1608556530-1e98b508.0":"2020-12-21T13:17:53.312Z","2.33.5-next-1608556692-5426d52e.0":"2020-12-21T13:20:40.475Z","2.33.5-next-1608556727-0ed5e217.0":"2020-12-21T13:21:33.497Z","2.33.5-next-1608556768-3c5ab2c2.0":"2020-12-21T13:22:23.453Z","2.34.1-next-1608557236-7eb01b4b.0":"2020-12-21T13:29:46.933Z","2.34.1-next-1608557252-604a0597.0":"2020-12-21T13:30:20.734Z","2.34.0":"2020-12-21T13:33:01.104Z","2.34.1-next-1608567275-604a0597.0":"2020-12-21T16:17:11.812Z","2.34.1-next-1608567983-da91d7bd.0":"2020-12-21T16:29:22.669Z","2.34.1-next-1608574672-96b6a2d1.0":"2020-12-21T18:20:18.507Z","2.34.1-next-1608574978-80b9a077.0":"2020-12-21T18:25:47.262Z","2.34.2-next-1608577558-7f068e8c.0":"2020-12-21T19:08:44.604Z","2.34.2-next-1608579093-7f068e8c.0":"2020-12-21T19:34:23.265Z","2.34.1":"2020-12-21T20:03:36.903Z","2.34.2-next-1608582524-c27fec12.0":"2020-12-21T20:31:12.272Z","2.34.2-next-1608638583-2e360a24.0":"2020-12-22T12:05:55.200Z","2.34.1-next-1608638845-b33724ec.0":"2020-12-22T12:09:47.679Z","2.34.2-next-1608640758-0adb248b.0":"2020-12-22T12:41:43.562Z","2.34.1-next-1608641834-2d3670a2.0":"2020-12-22T12:59:37.522Z","2.34.2-next-1608646576-df6ca815.0":"2020-12-22T14:18:56.300Z","2.34.1-next-1608646688-e14b894e.0":"2020-12-22T14:21:24.113Z","2.34.2-next-1608647696-c605d79d.0":"2020-12-22T14:37:46.665Z","2.34.3-next-1608655236-63597e3f.0":"2020-12-22T16:43:03.666Z","2.34.2":"2020-12-22T17:03:52.563Z","2.34.3-next-1608657055-e827a337.0":"2020-12-22T17:13:49.058Z","2.34.3-next-1608660816-a74c132b.0":"2020-12-22T18:16:19.500Z","2.34.3-next-1608660895-67834941.0":"2020-12-22T18:17:26.600Z","2.34.3-next-1608661233-7d1655c6.0":"2020-12-22T18:23:24.142Z","2.34.3-next-1608661416-4b69d8a0.0":"2020-12-22T18:26:35.726Z","2.34.3-next-1608661567-22de7542.0":"2020-12-22T18:29:02.911Z","2.34.3-next-1608664432-25bdc688.0":"2020-12-22T19:16:30.063Z","2.34.3-next-1608664547-786beb6a.0":"2020-12-22T19:18:36.293Z","2.35.1-next-1608668211-5516a971.0":"2020-12-22T20:19:24.403Z","2.35.0":"2020-12-22T20:24:09.989Z","2.35.1-next-1608713168-5de4c05c.0":"2020-12-23T08:48:37.065Z","2.35.1-next-1608721052-c42cf456.0":"2020-12-23T11:00:00.291Z","2.35.1-next-1608721086-64201d55.0":"2020-12-23T11:01:06.093Z","2.35.1-next-1608722547-b43f53c6.0":"2020-12-23T11:25:09.261Z","2.35.1-next-1608731993-cd4a9f2d.0":"2020-12-23T14:02:37.003Z","2.35.1-next-1608732307-51481f4e.0":"2020-12-23T14:07:47.513Z","2.35.1-next-1608735581-3412b538.0":"2020-12-23T15:02:47.158Z","2.35.1-next-1608736187-23834867.0":"2020-12-23T15:12:36.160Z","2.35.2-next-1608736652-721b7046.0":"2020-12-23T15:19:52.008Z","2.35.1":"2020-12-23T15:50:28.655Z","2.35.2-next-1608752410-87b4c6b1.0":"2020-12-23T19:42:47.575Z","2.35.2-next-1608753253-a5a49b6c.0":"2020-12-23T19:56:36.289Z","2.35.3-next-1608775333-cbef40b0.0":"2020-12-24T02:04:48.371Z","2.35.3-next-1608777077-cbef40b0.0":"2020-12-24T02:33:52.931Z","2.35.2":"2020-12-24T02:57:01.865Z","2.35.3-next-1609168353-5d1a8c8b.0":"2020-12-28T15:15:29.709Z","2.35.3-next-1609179863-5d1a8c8b.0":"2020-12-28T18:27:05.364Z","2.35.3-next-1609182300-5d1a8c8b.0":"2020-12-28T19:07:53.501Z","2.35.3-next-1609184825-5d1a8c8b.0":"2020-12-28T19:49:20.206Z","2.35.3-next-1609184855-54158853.0":"2020-12-28T19:50:26.382Z","2.35.3-next-1609186613-f8c91d9d.0":"2020-12-28T20:19:36.558Z","2.35.3-next-1609188692-ea33ead2.0":"2020-12-28T20:54:09.966Z","2.35.3-next-1609260701-f8c91d9d.0":"2020-12-29T16:54:23.610Z","2.36.1-next-1609339912-45a9c94d.0":"2020-12-30T14:54:33.738Z","2.36.1-next-1609341706-45a9c94d.0":"2020-12-30T15:24:30.360Z","2.36.1-next-1609341954-12f562d3.0":"2020-12-30T15:28:52.005Z","2.36.1-next-1609343079-45a9c94d.0":"2020-12-30T15:47:07.945Z","2.36.0":"2020-12-30T16:14:47.204Z","2.36.1-next-1609353465-35c2ae73.0":"2020-12-30T18:40:30.444Z","2.36.1-next-1609354696-db6c193e.0":"2020-12-30T19:00:38.259Z","2.36.2-next-1609355383-2f939fa3.0":"2020-12-30T19:12:24.551Z","2.36.2-next-1609356608-2f939fa3.0":"2020-12-30T19:32:44.513Z","2.36.1":"2020-12-30T22:02:42.792Z","2.36.2-next-1609758263-8f588ac8.0":"2021-01-04T11:07:03.235Z","2.36.2-next-1609759946-5a922564.0":"2021-01-04T11:35:26.799Z","2.36.2-next-1609764320-34b1906e.0":"2021-01-04T12:48:08.603Z","2.36.2-next-1609764928-377de9aa.0":"2021-01-04T12:58:18.899Z","2.36.2-next-1609765560-85002dc7.0":"2021-01-04T13:08:50.231Z","2.36.2-next-1609766562-c1bcf807.0":"2021-01-04T13:25:04.489Z","2.36.2-next-1609767036-34b1906e.0":"2021-01-04T13:33:26.011Z","2.36.2-next-1609767142-b07777bb.0":"2021-01-04T13:35:10.156Z","2.36.2-next-1609768294-4e0810db.0":"2021-01-04T13:54:12.399Z","2.36.2-next-1609772224-d27530b1.0":"2021-01-04T15:00:02.920Z","2.36.2-next-1609776562-649ff1a6.0":"2021-01-04T16:12:13.863Z","2.36.2-next-1609778310-35779472.0":"2021-01-04T16:41:23.514Z","2.36.2-next-1609779472-2110381f.0":"2021-01-04T17:00:55.264Z","2.36.2-next-1609780332-173bc48c.0":"2021-01-04T17:14:48.152Z","2.36.2-next-1609782322-d27530b1.0":"2021-01-04T17:48:42.460Z","2.36.2-next-1609785170-be6a6494.0":"2021-01-04T18:35:23.000Z","2.36.2-next-1609786762-f49c471b.0":"2021-01-04T19:01:52.894Z","2.36.2-next-1609786819-e88a7e2b.0":"2021-01-04T19:03:09.288Z","2.36.2-next-1609788058-22ecbc9a.0":"2021-01-04T19:23:26.701Z","2.36.2-next-1609788567-7af451ee.0":"2021-01-04T19:32:17.471Z","2.36.2-next-1609788611-dbbc4217.0":"2021-01-04T19:32:35.036Z","2.36.2-next-1609788700-c3f154de.0":"2021-01-04T19:34:56.127Z","2.36.2-next-1609807904-be1239fa.0":"2021-01-05T00:54:43.855Z","2.36.2-next-1609837080-490e20ee.0":"2021-01-05T09:00:46.065Z","2.36.2-next-1609841654-ff67b460.0":"2021-01-05T10:16:39.696Z","2.36.2-next-1609845820-70f0ee96.0":"2021-01-05T11:26:27.777Z","2.36.2-next-1609846275-490e20ee.0":"2021-01-05T11:34:09.671Z","2.36.2-next-1609847117-5352652a.0":"2021-01-05T11:48:00.808Z","2.36.2-next-1609847217-9d91e49a.0":"2021-01-05T11:49:54.492Z","2.36.2-next-1609847271-c447dd68.0":"2021-01-05T11:50:38.536Z","2.36.2-next-1609848771-e9e63405.0":"2021-01-05T12:15:12.076Z","2.36.2-next-1609851992-8e3ce2a6.0":"2021-01-05T13:09:05.608Z","2.36.2-next-1609852368-d37eaac4.0":"2021-01-05T13:15:26.395Z","2.36.2-next-1609853584-45c51d9b.0":"2021-01-05T13:35:29.925Z","2.36.2-next-1609853649-41782c04.0":"2021-01-05T13:36:52.595Z","2.36.2-next-1609854293-8e3ce2a6.0":"2021-01-05T13:47:34.160Z","2.36.2-next-1609855613-b9796a4c.0":"2021-01-05T14:09:37.570Z","2.36.2-next-1609855697-6dfcc08a.0":"2021-01-05T14:10:46.447Z","2.36.2-next-1609856853-c74ae068.0":"2021-01-05T14:31:05.166Z","2.36.2-next-1609857536-8ed169aa.0":"2021-01-05T14:41:20.054Z","2.36.2-next-1609857826-8e3157b6.0":"2021-01-05T14:46:50.654Z","2.36.2-next-1609858005-106be636.0":"2021-01-05T14:49:20.265Z","2.36.2-next-1609859719-07fa94ab.0":"2021-01-05T15:18:30.431Z","2.36.2-next-1609860132-de7da4a4.0":"2021-01-05T15:24:53.887Z","2.36.2-next-1609860205-729190e5.0":"2021-01-05T15:25:52.828Z","2.36.2-next-1609860209-7570eb1c.0":"2021-01-05T15:26:28.650Z","2.36.2-next-1609860971-acc34b9c.0":"2021-01-05T15:39:00.386Z","2.36.2-next-1609865823-1db5c4f4.0":"2021-01-05T16:59:47.178Z","2.36.2-next-1609871980-48c894c0.0":"2021-01-05T18:42:12.048Z","2.36.2-next-1609872133-13d2cbae.0":"2021-01-05T18:45:02.876Z","2.36.2-next-1609872963-e3b05a7b.0":"2021-01-05T18:58:48.149Z","2.36.2-next-1609872994-a5d5fc32.0":"2021-01-05T18:59:19.357Z","2.36.2-next-1609873075-0d49a037.0":"2021-01-05T19:00:27.076Z","2.36.2-next-1609873233-0915300b.0":"2021-01-05T19:03:05.901Z","2.36.2-next-1609873237-5d6cf7b4.0":"2021-01-05T19:03:38.692Z","2.36.2-next-1609879788-e1f2cfc4.0":"2021-01-05T20:52:49.829Z","2.37.1-next-1609923256-54216903.0":"2021-01-06T08:57:01.075Z","2.37.0":"2021-01-06T09:00:24.375Z","2.37.1-next-1609928096-8b395e64.0":"2021-01-06T10:17:50.523Z","2.37.1-next-1609928261-a5d5aa64.0":"2021-01-06T10:20:23.964Z","2.37.1-next-1609929467-1a33f113.0":"2021-01-06T10:40:53.465Z","2.37.1-next-1609931011-18cb286e.0":"2021-01-06T11:06:23.848Z","2.37.1-next-1609933315-09e01ee7.0":"2021-01-06T11:44:22.560Z","2.37.1-next-1609933978-932ebc06.0":"2021-01-06T11:55:49.193Z","2.37.1-next-1609936179-d65f6b9f.0":"2021-01-06T12:32:15.757Z","2.37.2-next-1609936396-59417961.0":"2021-01-06T12:36:02.658Z","2.37.1":"2021-01-06T13:21:15.827Z","2.37.2-next-1609939303-947b656b.0":"2021-01-06T13:24:00.031Z","2.37.2-next-1609940770-d567574f.0":"2021-01-06T13:49:01.406Z","2.37.2-next-1609943014-03296cee.0":"2021-01-06T14:26:01.904Z","2.37.2-next-1609943714-4f1f2b2a.0":"2021-01-06T14:37:40.742Z","2.37.2-next-1609944019-83616c40.0":"2021-01-06T14:43:00.737Z","2.37.2-next-1609952817-9c95008a.0":"2021-01-06T17:09:40.603Z","2.37.2-next-1609953814-5a75e404.0":"2021-01-06T17:25:52.189Z","2.37.2-next-1609955030-a5844b51.0":"2021-01-06T17:46:27.761Z","2.37.2-next-1609955304-9170f396.0":"2021-01-06T17:51:06.992Z","2.37.2-next-1609956119-5d9480eb.0":"2021-01-06T18:04:31.197Z","2.37.2-next-1609961856-44607629.0":"2021-01-06T19:40:00.663Z","2.37.2-next-1609963301-4f1f2b2a.0":"2021-01-06T20:04:36.447Z","2.37.2-next-1609966044-f3935d08.0":"2021-01-06T20:49:47.409Z","2.37.2-next-1609969301-1f04b787.0":"2021-01-06T21:44:33.623Z","2.37.2-next-1609972133-91236735.0":"2021-01-06T22:31:20.902Z","2.37.2-next-1610016235-e374141c.0":"2021-01-07T10:46:45.503Z","2.37.2-next-1610016633-dd69919f.0":"2021-01-07T10:53:16.139Z","2.37.2-next-1610017546-cb4d18a8.0":"2021-01-07T11:09:05.077Z","2.37.2-next-1610019842-743f4a14.0":"2021-01-07T11:46:47.951Z","2.37.2-next-1610020705-ebd8272c.0":"2021-01-07T12:01:11.712Z","2.37.3-next-1610023337-59e72c19.0":"2021-01-07T12:44:48.634Z","2.37.2":"2021-01-07T12:50:48.913Z","2.37.3-next-1610026220-12874458.0":"2021-01-07T13:33:03.939Z","2.37.3-next-1610028043-5b690215.0":"2021-01-07T14:03:31.191Z","2.37.3-next-1610028210-894a1eba.0":"2021-01-07T14:06:01.007Z","2.37.3-next-1610029354-a9cfb447.0":"2021-01-07T14:25:18.937Z","2.37.3-next-1610038994-8d640126.0":"2021-01-07T17:06:00.418Z","2.37.3-next-1610042634-545f8fa7.0":"2021-01-07T18:06:21.501Z","2.37.3-next-1610042728-22ce179a.0":"2021-01-07T18:08:19.006Z","2.37.3-next-1610043956-ffd00afd.0":"2021-01-07T18:28:26.378Z","2.37.3-next-1610044087-6759e43f.0":"2021-01-07T18:30:32.560Z","2.37.3-next-1610044204-545f8fa7.0":"2021-01-07T18:33:03.715Z","2.37.3-next-1610046738-ffd00afd.0":"2021-01-07T19:14:58.671Z","2.37.3-next-1610047463-ccbfacbd.0":"2021-01-07T19:26:57.771Z","2.37.3-next-1610049298-d6ed1e81.0":"2021-01-07T19:57:48.296Z","2.37.3-next-1610049394-72bf35f9.0":"2021-01-07T19:58:53.137Z","2.37.3-next-1610054495-1a29e48a.0":"2021-01-07T21:24:09.819Z","2.37.3-next-1610054618-72bf35f9.0":"2021-01-07T21:26:25.620Z","2.37.3-next-1610097679-7e177d32.0":"2021-01-08T09:24:19.961Z","2.37.3-next-1610101938-92f5851e.0":"2021-01-08T10:34:34.596Z","2.37.3-next-1610103239-5063b792.0":"2021-01-08T10:56:50.235Z","2.37.3-next-1610106325-345f8c0a.0":"2021-01-08T11:48:07.595Z","2.37.3-next-1610108509-17db7ec5.0":"2021-01-08T12:24:33.343Z","2.37.3-next-1610110107-b8b3c2e6.0":"2021-01-08T12:51:20.150Z","2.37.3-next-1610110295-602dda2d.0":"2021-01-08T12:54:25.210Z","2.37.3-next-1610111677-114dd3b1.0":"2021-01-08T13:17:41.457Z","2.37.3-next-1610111788-7b69e5a7.0":"2021-01-08T13:19:17.137Z","2.38.1-next-1610114597-4a7664a7.0":"2021-01-08T14:06:09.237Z","2.38.1-next-1610115336-83f84839.0":"2021-01-08T14:18:30.743Z","2.38.1-next-1610115776-abbe1397.0":"2021-01-08T14:25:36.948Z","2.38.0":"2021-01-08T14:35:18.901Z","2.38.2-next-1610116516-6aa33fa8.0":"2021-01-08T14:38:11.221Z","2.38.2-next-1610117076-2d98ad2a.0":"2021-01-08T14:47:04.465Z","2.38.1":"2021-01-08T14:58:34.555Z","2.38.2-next-1610118532-8be4ae4b.0":"2021-01-08T15:11:32.728Z","2.38.2-next-1610120295-1bbe5725.0":"2021-01-08T15:40:49.436Z","2.38.2-next-1610121100-0a999978.0":"2021-01-08T15:54:23.367Z","2.38.2-next-1610121307-9e46fe6a.0":"2021-01-08T15:57:50.958Z","2.38.2-next-1610122542-a4a1292a.0":"2021-01-08T16:18:39.118Z","2.38.2-next-1610124430-6b3d570d.0":"2021-01-08T16:49:53.161Z","2.38.2-next-1610127424-a449f5a3.0":"2021-01-08T17:39:29.136Z","2.38.2-next-1610129843-a449f5a3.0":"2021-01-08T18:20:04.948Z","2.38.2-next-1610132867-037bb31c.0":"2021-01-08T19:10:18.598Z","2.39.1-next-1610132984-05f88d31.0":"2021-01-08T19:12:06.855Z","2.39.0":"2021-01-08T19:17:12.353Z","2.39.1-next-1610357692-716cc09b.0":"2021-01-11T09:37:22.346Z","2.39.1-next-1610365307-a8ee896b.0":"2021-01-11T11:44:14.240Z","2.39.2-next-1610366040-85a1a6c6.0":"2021-01-11T11:56:20.624Z","2.39.1":"2021-01-11T12:00:58.252Z","2.39.2-next-1610367601-eb228fd6.0":"2021-01-11T12:22:29.577Z","2.39.2-next-1610368698-f25e1d08.0":"2021-01-11T12:41:02.885Z","2.39.2-next-1610369344-08a510ec.0":"2021-01-11T12:51:40.384Z","2.39.2-next-1610369583-1af7f612.0":"2021-01-11T12:55:55.639Z","2.39.2-next-1610369634-d80c51ab.0":"2021-01-11T12:56:21.684Z","2.39.2-next-1610372310-9d74c31e.0":"2021-01-11T13:41:37.356Z","2.39.3-next-1610372389-f2a20d9f.0":"2021-01-11T13:42:29.605Z","2.39.2":"2021-01-11T13:57:24.092Z","2.39.3-next-1610373773-67de61b5.0":"2021-01-11T14:05:29.413Z","2.39.3-next-1610375533-e2371fe0.0":"2021-01-11T14:34:58.706Z","2.39.3-next-1610376118-702f5aaf.0":"2021-01-11T14:44:23.471Z","2.39.4-next-1610376834-75a39ea7.0":"2021-01-11T14:56:52.706Z","2.39.4-next-1610377425-3d4ed63a.0":"2021-01-11T15:06:24.701Z","2.39.3":"2021-01-11T15:11:36.867Z","2.39.4-next-1610381328-f32db9ad.0":"2021-01-11T16:11:17.639Z","2.39.4-next-1610387919-d96b22fa.0":"2021-01-11T18:01:14.121Z","2.39.4-next-1610398806-cc080287.0":"2021-01-11T21:02:46.832Z","2.39.4-next-1610445230-0bac9898.0":"2021-01-12T09:56:30.193Z","2.39.4-next-1610446358-0bac9898.0":"2021-01-12T10:15:04.968Z","2.39.4-next-1610454348-0bac9898.0":"2021-01-12T12:28:33.026Z","2.39.4-next-1610458048-35730d9f.0":"2021-01-12T13:30:20.309Z","2.39.4-next-1610461943-ceff7603.0":"2021-01-12T14:35:07.483Z","2.39.4-next-1610462423-4268d45c.0":"2021-01-12T14:42:50.608Z","2.39.4-next-1610539074-999d50e0.0":"2021-01-13T12:00:20.012Z","2.39.4-next-1610540266-024b9151.0":"2021-01-13T12:20:14.256Z","2.39.4-next-1610540359-5a18d3bc.0":"2021-01-13T12:22:04.475Z","2.39.4-next-1610540589-72385396.0":"2021-01-13T12:25:31.850Z","2.39.4-next-1610541051-49dd6b9c.0":"2021-01-13T12:33:47.165Z","2.39.4-next-1610541612-1a90c150.0":"2021-01-13T12:43:00.343Z","2.39.4-next-1610542475-49dd6b9c.0":"2021-01-13T12:57:05.238Z","2.40.1-next-1610542522-7fe21e49.0":"2021-01-13T12:57:56.968Z","2.40.0":"2021-01-13T13:01:50.061Z","2.40.1-next-1610543905-304a3166.0":"2021-01-13T13:20:59.122Z","2.40.1-next-1610543937-89887a95.0":"2021-01-13T13:21:37.530Z","2.40.1-next-1610548543-89887a95.0":"2021-01-13T14:38:56.180Z","2.40.1-next-1610552674-304a3166.0":"2021-01-13T15:47:44.214Z","2.40.1-next-1610644713-9618ddfc.0":"2021-01-14T17:21:06.108Z","2.40.1-next-1610715401-7357d98e.0":"2021-01-15T12:59:37.889Z","2.40.1-next-1610716855-7357d98e.0":"2021-01-15T13:24:09.730Z","2.40.1-next-1610718521-6b49f4e5.0":"2021-01-15T13:51:21.800Z","2.40.1-next-1610720143-6b49f4e5.0":"2021-01-15T14:18:13.992Z","2.40.1-next-1610724444-6b49f4e5.0":"2021-01-15T15:29:52.588Z","2.40.1-next-1610725487-f09db761.0":"2021-01-15T15:47:12.210Z","2.40.1-next-1610726420-f09db761.0":"2021-01-15T16:02:48.914Z","2.40.1-next-1610969850-4e588064.0":"2021-01-18T11:39:56.459Z","2.40.1-next-1610974394-4ddf6baa.0":"2021-01-18T12:56:11.699Z","2.40.1-next-1610974608-8234820c.0":"2021-01-18T12:59:23.758Z","2.40.1-next-1610980521-28d48dae.0":"2021-01-18T14:38:01.431Z","2.40.1-next-1610980568-4e588064.0":"2021-01-18T14:38:37.765Z","2.40.1-next-1610981719-d6c11efc.0":"2021-01-18T14:58:13.852Z","2.40.1-next-1610983103-1e81b81b.0":"2021-01-18T15:21:11.505Z","2.40.1-next-1610983877-ecef63e8.0":"2021-01-18T15:33:55.456Z","2.40.1-next-1610984479-7f05b466.0":"2021-01-18T15:43:54.416Z","2.40.2-next-1610985752-243dfbfb.0":"2021-01-18T16:04:59.049Z","2.40.1":"2021-01-18T17:32:30.251Z","2.40.2-next-1611061883-632a8662.0":"2021-01-19T13:14:02.884Z","2.40.2-next-1611064902-632a8662.0":"2021-01-19T14:04:13.054Z","2.40.2-next-1611066255-8dc0e884.0":"2021-01-19T14:27:27.455Z","2.40.1-next-1611144510-f09db761.0":"2021-01-20T12:11:06.618Z","2.40.2-next-1611146337-5f2c3b54.0":"2021-01-20T12:41:28.420Z","2.40.2-next-1611146576-7e313222.0":"2021-01-20T12:45:20.663Z","2.40.2-next-1611146603-34453e00.0":"2021-01-20T12:46:12.118Z","2.40.2-next-1611146947-fdf3916b.0":"2021-01-20T12:51:53.236Z","2.40.1-next-1611147700-f09db761.0":"2021-01-20T13:04:09.021Z","2.40.1-next-1611148807-f09db761.0":"2021-01-20T13:22:45.071Z","2.40.2-next-1611149840-20639dac.0":"2021-01-20T13:39:55.343Z","2.40.2-next-1611150078-7e313222.0":"2021-01-20T13:44:04.779Z","2.40.2-next-1611152142-20639dac.0":"2021-01-20T14:18:40.357Z","2.40.2-next-1611154267-7a34a45c.0":"2021-01-20T14:53:45.687Z","2.40.2-next-1611154703-20639dac.0":"2021-01-20T15:00:53.070Z","2.40.2-next-1611158294-c45d3039.0":"2021-01-20T16:00:45.715Z","2.40.2-next-1611159195-f52a71ce.0":"2021-01-20T16:16:14.441Z","2.40.2-next-1611162369-d4c92ee4.0":"2021-01-20T17:08:53.884Z","2.40.2-next-1611174352-d4c92ee4.0":"2021-01-20T20:28:34.730Z","2.40.2-next-1611175950-5e654544.0":"2021-01-20T20:55:16.551Z","2.40.2-next-1611177481-fa11de7c.0":"2021-01-20T21:20:51.767Z","2.40.2-next-1611227928-fa11de7c.0":"2021-01-21T11:21:44.168Z","2.40.2-next-1611231566-68356b1b.0":"2021-01-21T12:22:00.368Z","2.40.2-next-1611232803-7160b394.0":"2021-01-21T12:42:28.710Z","2.40.2-next-1611240510-9baa9c6c.0":"2021-01-21T14:51:08.592Z","2.40.3-next-1611240591-9f1f9596.0":"2021-01-21T14:52:40.439Z","2.40.2":"2021-01-21T14:57:17.848Z","2.40.3-next-1611320177-b8db6c58.0":"2021-01-22T12:58:45.279Z","2.40.3-next-1611320473-ca01cbc0.0":"2021-01-22T13:03:55.091Z","2.40.3-next-1611323008-819f5cc7.0":"2021-01-22T13:46:03.958Z","2.40.3-next-1611343469-8ae5672b.0":"2021-01-22T19:26:55.145Z","2.40.3-next-1611345209-8ae5672b.0":"2021-01-22T19:56:03.793Z","2.40.3-next-1611576532-2bdc4227.0":"2021-01-25T12:11:40.893Z","2.40.3-next-1611576922-b8b34a3e.0":"2021-01-25T12:18:03.178Z","2.40.3-next-1611581069-38f31a92.0":"2021-01-25T13:27:21.642Z","2.41.1-next-1611583271-16c9273d.0":"2021-01-25T14:03:51.463Z","2.41.0":"2021-01-25T14:42:34.976Z","2.41.1-next-1611657751-e6b92987.0":"2021-01-26T10:45:22.335Z","2.41.1-next-1611750444-e6b92987.0":"2021-01-27T12:30:02.420Z","2.41.1-next-1611755596-87b809b2.0":"2021-01-27T13:55:50.679Z","2.41.1-next-1611757088-9943cab3.0":"2021-01-27T14:20:56.155Z","2.41.1-next-1611783054-0c4f0e03.0":"2021-01-27T21:33:45.000Z","2.41.1-next-1611787262-fb6ec9b9.0":"2021-01-27T22:43:29.357Z","2.41.1-next-1611789678-5b248d7e.0":"2021-01-27T23:23:47.742Z","2.41.1-next-1611790562-a40852b9.0":"2021-01-27T23:38:30.962Z","2.41.1-next-1611794089-34cb79ca.0":"2021-01-28T00:37:21.541Z","2.41.1-next-1611829606-fb6ec9b9.0":"2021-01-28T10:29:09.420Z","2.41.1-next-1611843432-13e74421.0":"2021-01-28T14:20:07.695Z","2.41.1-next-1611845563-d86e5de9.0":"2021-01-28T14:55:30.943Z","2.41.1-next-1611848320-129049b1.0":"2021-01-28T15:41:48.475Z","2.41.1-next-1611848480-2d556237.0":"2021-01-28T15:44:16.150Z","2.41.1-next-1611848860-346d6daf.0":"2021-01-28T15:50:50.073Z","2.41.1-next-1611854398-4aea7e11.0":"2021-01-28T17:22:29.385Z","2.41.1-next-1611862709-29a6519a.0":"2021-01-28T19:41:21.131Z","2.41.1-next-1611911942-39183f2a.0":"2021-01-29T09:22:02.718Z","2.41.1-next-1611919529-5dc24d81.0":"2021-01-29T11:28:12.955Z","2.41.1-next-1611927661-23a8bfd0.0":"2021-01-29T13:43:55.276Z","2.41.1-next-1611928258-a7ec2bed.0":"2021-01-29T13:53:55.871Z","2.41.2-next-1611928539-648c6030.0":"2021-01-29T13:58:24.909Z","2.41.2-next-1611930008-fc8ab03d.0":"2021-01-29T14:22:48.039Z","2.41.1":"2021-01-29T14:46:14.968Z","2.41.2-next-1611932601-ff67f74f.0":"2021-01-29T15:05:47.444Z","2.41.2-next-1611933701-ff67f74f.0":"2021-01-29T15:24:14.124Z","2.41.2-next-1611934904-b01ac067.0":"2021-01-29T15:44:24.164Z","2.41.1-next-1611935169-4a9be922.0":"2021-01-29T15:48:36.027Z","2.41.1-next-1611936603-c826a871.0":"2021-01-29T16:12:45.852Z","2.41.1-next-1611938712-ce2accc7.0":"2021-01-29T16:48:09.977Z","2.41.1-next-1611941496-dfc95ffb.0":"2021-01-29T17:34:36.644Z","2.41.2-next-1612173624-263ecdec.0":"2021-02-01T10:02:55.935Z","2.41.2-next-1612179540-0b25a8b2.0":"2021-02-01T11:41:27.191Z","2.41.2-next-1612179635-85b3932b.0":"2021-02-01T11:43:20.036Z","2.41.2-next-1612231460-025bc5f8.0":"2021-02-02T02:07:17.375Z","2.41.2-next-1612267894-025bc5f8.0":"2021-02-02T12:14:23.856Z","2.41.2-next-1612268805-85b3932b.0":"2021-02-02T12:29:33.371Z","2.41.2-next-1612270071-9d683d24.0":"2021-02-02T12:51:11.738Z","2.41.2-next-1612270317-50f72cbd.0":"2021-02-02T12:54:39.564Z","2.41.2-next-1612273953-0cef40a8.0":"2021-02-02T13:55:24.376Z","2.41.2-next-1612276423-a82ca504.0":"2021-02-02T14:36:31.723Z","2.41.2-next-1612277875-ef40374a.0":"2021-02-02T15:00:48.127Z","2.41.2-next-1612286102-bff19572.0":"2021-02-02T17:18:07.091Z","2.41.2-next-1612289218-28ceaf36.0":"2021-02-02T18:09:39.225Z","2.41.2-next-1612290377-28ceaf36.0":"2021-02-02T18:28:41.508Z","2.41.2-next-1612290457-f327860c.0":"2021-02-02T18:30:06.394Z","2.41.2-next-1612290604-8ef9162d.0":"2021-02-02T18:32:53.406Z","2.41.2-next-1612291569-8776ec30.0":"2021-02-02T18:49:03.678Z","2.41.2-next-1612351532-0ee4dd00.0":"2021-02-03T11:28:26.967Z","2.41.2-next-1612351607-64b27ba5.0":"2021-02-03T11:29:26.359Z","2.41.2-next-1612354766-23faeba8.0":"2021-02-03T12:22:21.010Z","2.41.2-next-1612356339-9a9b1b23.0":"2021-02-03T12:48:25.146Z","2.41.2-next-1612356417-70d102fb.0":"2021-02-03T12:49:56.756Z","2.41.2-next-1612359260-a3c6e28c.0":"2021-02-03T13:37:22.713Z","2.41.2-next-1612359443-27fa1a57.0":"2021-02-03T13:39:57.588Z","2.41.2-next-1612361322-a3c6e28c.0":"2021-02-03T14:11:33.185Z","2.41.2-next-1612363251-80de88fc.0":"2021-02-03T14:43:49.308Z","2.42.1-next-1612364611-e263ef8d.0":"2021-02-03T15:06:28.109Z","2.42.1-next-1612364768-cc897ed9.0":"2021-02-03T15:09:00.117Z","2.42.1-next-1612374953-cc897ed9.0":"2021-02-03T17:58:54.024Z","2.42.1-next-1612375734-9e6f1b0d.0":"2021-02-03T18:11:51.478Z","2.42.1-next-1612375968-5ac963f0.0":"2021-02-03T18:15:21.289Z","2.42.0":"2021-02-03T18:51:43.231Z","2.42.1-next-1612394810-d380b62c.0":"2021-02-03T23:30:00.292Z","2.42.1-next-1612437293-5ac963f0.0":"2021-02-04T11:17:53.991Z","2.42.1-next-1612437819-8fd5f5a3.0":"2021-02-04T11:27:08.077Z","2.42.1-next-1612438697-23541602.0":"2021-02-04T11:41:18.226Z","2.42.1-next-1612441950-e0f0fc1c.0":"2021-02-04T12:35:04.523Z","2.42.1-next-1612444959-92f162f7.0":"2021-02-04T13:25:09.113Z","2.42.1-next-1612445371-e5cbb15e.0":"2021-02-04T13:32:24.230Z","2.42.1-next-1612445648-1fc3b936.0":"2021-02-04T13:37:11.255Z","2.42.1-next-1612446878-5a7562c7.0":"2021-02-04T13:57:25.633Z","2.42.2-next-1612447260-a2ba8aa2.0":"2021-02-04T14:03:56.644Z","2.42.1":"2021-02-04T14:07:47.747Z","2.42.2-next-1612447843-e0354e82.0":"2021-02-04T14:13:43.790Z","2.42.2-next-1612462405-e13b7e97.0":"2021-02-04T18:16:16.933Z","2.42.2-next-1612520980-6d1dd81d.0":"2021-02-05T10:32:21.794Z","2.42.2-next-1612522696-9d0b610f.0":"2021-02-05T11:00:54.234Z","2.42.2-next-1612524895-c9d3d2e2.0":"2021-02-05T11:37:42.092Z","2.42.2-next-1612525547-63b8049f.0":"2021-02-05T11:48:24.055Z","2.42.2-next-1612526159-fad91765.0":"2021-02-05T11:58:39.392Z","2.42.2-next-1612528078-02cc36ae.0":"2021-02-05T12:30:36.800Z","2.42.2-next-1612531092-91442273.0":"2021-02-05T13:20:42.234Z","2.42.2-next-1612542066-c79b6c97.0":"2021-02-05T16:23:50.285Z","2.42.2-next-1612546129-c79b6c97.0":"2021-02-05T17:31:32.818Z","2.43.1-next-1612547925-3537e3b3.0":"2021-02-05T18:01:02.953Z","2.43.0":"2021-02-05T18:29:16.749Z","2.43.1-next-1612792570-6d12ac9a.0":"2021-02-08T14:01:20.840Z","2.43.1-next-1612793310-5c370ae6.0":"2021-02-08T14:13:25.786Z","2.43.1-next-1612809227-e3305425.0":"2021-02-08T18:38:12.649Z","2.43.1-next-1612813218-711acd5c.0":"2021-02-08T19:45:57.931Z","2.43.1-next-1612815592-805d2d41.0":"2021-02-08T20:25:06.569Z","2.44.1-next-1612815628-a277571f.0":"2021-02-08T20:25:41.290Z","2.44.0":"2021-02-08T21:14:31.871Z","2.44.1-next-1612875287-515a915b.0":"2021-02-09T12:59:49.750Z","2.44.1-next-1612881360-87a0c00d.0":"2021-02-09T14:40:35.808Z","2.44.1-next-1612881814-d5dd2e0c.0":"2021-02-09T14:48:04.442Z","2.44.1-next-1612895131-4361e71d.0":"2021-02-09T18:30:18.399Z","2.44.1-next-1612898947-7a0a2a47.0":"2021-02-09T19:33:14.031Z","2.44.1-next-1612901435-07e59e1b.0":"2021-02-09T20:15:04.486Z","2.44.1":"2021-02-09T20:15:35.194Z","2.44.2-next-1612901535-ab64c39d.0":"2021-02-09T20:17:20.507Z","2.44.2-next-1612903048-f77b7138.0":"2021-02-09T20:41:30.786Z","2.44.2-next-1612905654-a921d501.0":"2021-02-09T21:25:55.480Z","2.44.2-next-1612907156-be16a678.0":"2021-02-09T21:50:35.825Z","2.44.3-next-1612907227-4c9be7bd.0":"2021-02-09T21:51:43.940Z","2.44.2":"2021-02-09T21:54:13.631Z","2.44.3-next-1612916720-f7c12971.0":"2021-02-10T00:30:20.198Z","2.44.3-next-1612924869-1b9499db.0":"2021-02-10T02:45:43.813Z","2.44.3-next-1612958717-c9c30dbc.0":"2021-02-10T12:10:17.445Z","2.44.3-next-1612964528-20c04862.0":"2021-02-10T13:46:57.847Z","2.44.3-next-1612967921-9a80b78c.0":"2021-02-10T14:44:12.266Z","2.44.3-next-1612984049-554f2cf5.0":"2021-02-10T19:11:48.135Z","2.44.3-next-1612985799-fb4cef45.0":"2021-02-10T19:41:54.955Z","2.44.3-next-1613052238-fa2d1e58.0":"2021-02-11T14:08:51.635Z","2.44.3-next-1613055429-6a8ff165.0":"2021-02-11T15:02:29.036Z","2.44.3-next-1613057150-08014fda.0":"2021-02-11T15:30:17.779Z","2.44.3-next-1613057192-bb30ef56.0":"2021-02-11T15:31:43.281Z","2.44.3-next-1613064038-08014fda.0":"2021-02-11T17:25:24.654Z","2.44.3-next-1613066991-b0df6b52.0":"2021-02-11T18:14:24.205Z","2.44.3-next-1613067087-ff2dc9e5.0":"2021-02-11T18:16:02.523Z","2.44.3-next-1613067142-06cb6d53.0":"2021-02-11T18:17:22.348Z","2.44.3-next-1613078877-3a886cd0.0":"2021-02-11T21:33:03.455Z","2.44.3-next-1613081613-6b553f39.0":"2021-02-11T22:19:05.825Z","2.44.3-next-1613081745-5c8b4e67.0":"2021-02-11T22:20:37.585Z","2.45.1-next-1613085564-b8188f71.0":"2021-02-11T23:24:23.143Z","2.45.0":"2021-02-11T23:47:59.529Z","2.45.1-next-1613129416-327325b1.0":"2021-02-12T11:35:29.599Z","2.45.1-next-1613130108-f576c2dc.0":"2021-02-12T11:46:26.638Z","2.45.1-next-1613131797-23e16f46.0":"2021-02-12T12:14:12.971Z","2.45.1-next-1613131853-50ba0438.0":"2021-02-12T12:15:54.643Z","2.45.1-next-1613132676-78ddbd7d.0":"2021-02-12T12:29:46.378Z","2.45.1-next-1613132850-bb59023a.0":"2021-02-12T12:31:40.257Z","2.45.1-next-1613136284-bf45f952.0":"2021-02-12T13:29:47.986Z","2.45.1-next-1613140344-096c11c2.0":"2021-02-12T14:37:43.730Z","2.45.1-next-1613153741-ee225705.0":"2021-02-12T18:20:34.078Z","2.45.1-next-1613159387-57e31741.0":"2021-02-12T19:54:40.159Z","2.45.1-next-1613164441-3bef0dee.0":"2021-02-12T21:18:46.153Z","2.45.1-next-1613164562-c3da7def.0":"2021-02-12T21:21:14.147Z","2.45.2-next-1613385527-02cdbd15.0":"2021-02-15T10:43:53.766Z","2.45.2-next-1613387061-d69a83e4.0":"2021-02-15T11:09:45.877Z","2.45.1-next-1613402185-af936873.0":"2021-02-15T15:21:54.541Z","2.45.2-next-1613467763-b282e2e6.0":"2021-02-16T09:33:27.073Z","2.45.2-next-1613467730-1cd50a04.0":"2021-02-16T09:33:51.320Z","2.45.2-next-1613467867-7700b787.0":"2021-02-16T09:36:05.984Z","2.45.2-next-1613470044-4d9a689d.0":"2021-02-16T10:12:28.130Z","2.45.2-next-1613470717-77c0509d.0":"2021-02-16T10:23:11.622Z","2.45.2-next-1613472288-82892ed3.0":"2021-02-16T10:50:16.821Z","2.46.0":"2021-02-16T10:51:02.661Z","2.46.1-next-1613472397-454a94d2.0":"2021-02-16T10:51:48.335Z","2.46.1-next-1613475842-0623136a.0":"2021-02-16T11:49:03.874Z","2.46.1-next-1613476294-f7be9b0b.0":"2021-02-16T11:56:35.059Z","2.46.1-next-1613476613-81172a7d.0":"2021-02-16T12:01:57.513Z","2.46.1-next-1613477308-a4091daf.0":"2021-02-16T12:13:54.848Z","2.46.1-next-1613478956-dd392162.0":"2021-02-16T12:41:38.531Z","2.46.1-next-1613480292-fc16df83.0":"2021-02-16T13:03:52.658Z","2.46.1-next-1613482488-10d65dfb.0":"2021-02-16T13:39:14.452Z","2.46.1-next-1613484858-66a1b714.0":"2021-02-16T14:19:34.703Z","2.46.1-next-1613502013-3a8591bb.0":"2021-02-16T19:05:35.970Z","2.46.1-next-1613502365-d8742f9f.0":"2021-02-16T19:11:47.779Z","2.46.1-next-1613503630-e51a1984.0":"2021-02-16T19:32:24.960Z","2.46.1-next-1613506597-099e089e.0":"2021-02-16T20:21:40.361Z","2.46.1":"2021-02-16T20:28:33.904Z","2.46.2-next-1613507121-2f83578b.0":"2021-02-16T20:30:27.739Z","2.46.1-next-1613548642-d8742f9f.0":"2021-02-17T08:02:28.019Z","2.46.2-next-1613555470-5000ac99.0":"2021-02-17T09:56:16.675Z","2.46.2-next-1613555722-1d542a18.0":"2021-02-17T10:00:29.695Z","2.46.2-next-1613556851-49b4f1f1.0":"2021-02-17T10:19:05.537Z","2.46.2-next-1613558736-7caf1ada.0":"2021-02-17T10:51:07.869Z","2.46.2-next-1613561160-1071c8d7.0":"2021-02-17T11:30:43.647Z","2.46.2-next-1613563334-a5cc700f.0":"2021-02-17T12:07:31.114Z","2.46.2-next-1613563536-db2e3509.0":"2021-02-17T12:11:10.313Z","2.46.2-next-1613566082-30ea955e.0":"2021-02-17T12:53:47.536Z","2.46.2-next-1613566256-660ccc31.0":"2021-02-17T12:55:31.379Z","2.46.2":"2021-02-17T12:56:08.458Z","2.46.3-next-1613566400-b355a0bc.0":"2021-02-17T12:58:37.397Z","2.46.3-next-1613568896-2b8d9669.0":"2021-02-17T13:39:58.686Z","2.46.3":"2021-02-17T14:40:54.782Z","2.46.3-next-1613572600-e6c71766.0":"2021-02-17T14:41:48.980Z","2.46.4-next-1613572650-e7b6bed0.0":"2021-02-17T14:42:49.827Z","2.46.4-next-1613654729-eccb2566.0":"2021-02-18T13:30:06.346Z","2.46.4-next-1613669643-89b4938a.0":"2021-02-18T17:39:28.018Z","2.46.4-next-1613669820-e5b15ba1.0":"2021-02-18T17:42:10.488Z","2.46.5-next-1613669881-da0c0f17.0":"2021-02-18T17:43:13.340Z","2.46.5-next-1614018774-722e2a45.0":"2021-02-22T18:38:57.983Z","2.46.5-next-1614026590-ba7dba01.0":"2021-02-22T20:47:49.245Z","2.46.5":"2021-02-22T21:20:55.002Z","2.46.5-next-1614028558-f8e16b13.0":"2021-02-22T21:21:50.795Z","2.46.6-next-1614028653-5941cd80.0":"2021-02-22T21:23:22.827Z","2.46.6-next-1614031670-9fd59586.0":"2021-02-22T22:13:16.444Z","2.46.6-next-1614032371-d14b3c69.0":"2021-02-22T22:25:14.720Z","2.46.6-next-1614076076-a9ab6fee.0":"2021-02-23T10:33:30.150Z","2.46.7-next-1614076339-5c6ee841.0":"2021-02-23T10:37:52.854Z","2.46.6":"2021-02-23T10:39:12.774Z","2.46.6-next-1614076455-fdd66fdc.0":"2021-02-23T10:40:38.604Z","2.46.7-next-1614076524-db4cc33f.0":"2021-02-23T10:41:01.441Z","2.46.7":"2021-02-23T14:00:04.181Z","2.46.8-next-1614088593-496f8302.0":"2021-02-23T14:01:49.497Z","2.46.8-next-1614117045-7ae3b848.0":"2021-02-23T21:56:24.466Z","2.46.8-next-1614178072-21b025f4.0":"2021-02-24T14:54:01.773Z","2.46.9-next-1614178754-c864231f.0":"2021-02-24T15:05:00.824Z","2.46.9-next-1614278090-bbadf7bb.0":"2021-02-25T18:40:38.817Z","2.46.9-next-1614341798-e8bc2e64.0":"2021-02-26T12:22:43.502Z","2.46.9":"2021-02-26T14:16:28.594Z","2.46.9-next-1614348692-61056b85.0":"2021-02-26T14:17:37.710Z","2.46.10-next-1614348751-5e207739.0":"2021-02-26T14:18:06.128Z","2.46.10-next-1614636547-5a6a51a5.0":"2021-03-01T22:12:28.909Z","2.46.10-next-1614656181-0845175c.0":"2021-03-02T03:40:57.532Z","2.46.10-next-1614656223-c940d937.0":"2021-03-02T03:42:14.362Z","2.46.10-next-1614656234-e6a0b95e.0":"2021-03-02T03:42:57.038Z","2.46.10-next-1614693156-b489ddff.0":"2021-03-02T13:58:31.894Z","2.46.10-next-1614693598-4a8d44b2.0":"2021-03-02T14:05:33.160Z","2.46.10-next-1614708710-a27b20e5.0":"2021-03-02T18:17:20.259Z","2.46.10-next-1614717241-b863f691.0":"2021-03-02T20:39:25.812Z","2.46.10-next-1614773176-fb27856d.0":"2021-03-03T12:12:10.647Z","2.46.10-next-1614791421-d0f30452.0":"2021-03-03T17:16:43.588Z","2.46.10-next-1614800290-5b3fd33d.0":"2021-03-03T19:44:24.403Z","2.46.10-next-1614806068-4e5bf77c.0":"2021-03-03T21:20:20.071Z","2.46.10":"2021-03-03T21:21:25.082Z","2.46.11-next-1614806292-f0954ba3.0":"2021-03-03T21:24:11.613Z","2.46.11-next-1614973222-ce1e9fcb.0":"2021-03-05T19:45:08.021Z","2.46.11-next-1615185688-abcf8712.0":"2021-03-08T06:46:45.388Z","2.46.11-next-1615200283-dc588c31.0":"2021-03-08T10:50:49.973Z","2.46.11-next-1615202297-2fcaf0e9.0":"2021-03-08T11:24:00.523Z","2.46.11-next-1615213999-5fea2eb3.0":"2021-03-08T14:39:23.457Z","2.46.11-next-1615214503-c6c3790c.0":"2021-03-08T14:47:04.735Z","2.46.11-next-1615215326-e0d18c13.0":"2021-03-08T15:02:10.377Z","2.46.11-next-1615218182-126444c6.0":"2021-03-08T15:48:33.902Z","2.46.11-next-1615238363-1ab42f35.0":"2021-03-08T21:25:00.937Z","2.46.11-next-1615283163-2eeebdb1.0":"2021-03-09T09:52:20.395Z","2.46.11-next-1615289713-c3066788.0":"2021-03-09T11:41:12.782Z","2.46.11-next-1615289956-204785e8.0":"2021-03-09T11:45:16.483Z","2.46.11-next-1615289989-c7ea9f0c.0":"2021-03-09T11:46:07.733Z","2.46.11-next-1615293517-f69327d4.0":"2021-03-09T12:44:29.560Z","2.46.11-next-1615297515-104c2b2e.0":"2021-03-09T13:49:55.349Z","2.46.11-next-1615300148-4b9152fa.0":"2021-03-09T14:35:14.326Z","2.46.12-next-1615300678-59561aa3.0":"2021-03-09T14:43:59.704Z","2.46.11":"2021-03-09T18:00:22.061Z","2.46.12-next-1615364884-288b98d5.0":"2021-03-10T08:33:52.934Z","2.46.12-next-1615376785-cd4a02a4.0":"2021-03-10T11:51:45.815Z","2.46.12-next-1615464801-44ed9090.0":"2021-03-11T12:19:08.264Z","2.46.12-next-1615469960-17dcfbc9.0":"2021-03-11T13:44:17.121Z","2.46.12-next-1615470034-557f5436.0":"2021-03-11T13:46:21.489Z","2.46.12-next-1615471647-557f5436.0":"2021-03-11T14:13:28.431Z","2.46.12-next-1615551720-557f5436.0":"2021-03-12T12:28:03.632Z","2.46.12-next-1615784806-7b51d87e.0":"2021-03-15T05:11:07.578Z","2.46.12-next-1615790460-121a84f3.0":"2021-03-15T06:45:41.582Z","2.46.12-next-1615894322-3b82dea0.0":"2021-03-16T11:36:53.658Z","2.46.12-next-1615894458-9120dc72.0":"2021-03-16T11:40:37.391Z","2.46.12-next-1615894578-203ef237.0":"2021-03-16T11:42:17.220Z","2.46.12-next-1615894721-a4289e0e.0":"2021-03-16T11:45:00.077Z","2.46.12-next-1615940773-a83de87c.0":"2021-03-17T00:31:24.250Z","2.46.12-next-1615940772-a448394d.0":"2021-03-17T00:31:47.556Z","2.46.12-next-1615947584-3e4346c6.0":"2021-03-17T02:25:02.391Z","2.46.12-next-1615948732-62026afd.0":"2021-03-17T02:44:20.503Z","2.46.12-next-1615951852-dbce5a80.0":"2021-03-17T03:36:16.393Z","2.46.12-next-1615952198-60c38060.0":"2021-03-17T03:41:53.935Z","2.46.12-next-1615952220-42e38b49.0":"2021-03-17T03:42:46.567Z","2.46.12-next-1615976369-4310800e.0":"2021-03-17T10:24:49.982Z","2.46.12-next-1615988966-43a6bba8.0":"2021-03-17T13:54:52.226Z","2.46.12-next-1615992140-ed20fe49.0":"2021-03-17T14:48:25.846Z","2.46.12-next-1615992373-4310800e.0":"2021-03-17T14:52:16.210Z","2.46.12-next-1615992489-a4289e0e.0":"2021-03-17T14:54:33.788Z","2.46.12-next-1615998285-a9156483.0":"2021-03-17T16:30:33.635Z","2.46.12-next-1615998301-a4289e0e.0":"2021-03-17T16:31:54.545Z","2.46.12-next-1616000880-62985ef5.0":"2021-03-17T17:13:59.550Z","2.46.12-next-1616003176-6dc36d3d.0":"2021-03-17T17:51:26.012Z","2.46.12-next-1616005425-5feb1d3a.0":"2021-03-17T18:29:37.526Z","2.46.12-next-1616005524-f587b5bb.0":"2021-03-17T18:31:37.364Z","2.46.12-next-1616005510-60c9f43f.0":"2021-03-17T18:32:36.975Z","2.46.12-next-1616008443-60c9f43f.0":"2021-03-17T19:19:52.255Z","2.46.12-next-1616013047-3ffcf665.0":"2021-03-17T20:36:46.002Z","2.47.0":"2021-03-17T21:01:07.621Z","2.47.1-next-1616014595-de8db8d7.0":"2021-03-17T21:02:54.869Z","2.47.1-next-1616039246-0aea3f04.0":"2021-03-18T03:52:38.609Z","2.47.1-next-1616039242-bef311b3.0":"2021-03-18T03:53:12.008Z","2.47.1-next-1616056579-410ddfa6.0":"2021-03-18T08:42:17.062Z","2.47.1-next-1616069517-6e3e0aa5.0":"2021-03-18T12:18:00.479Z","2.47.1-next-1616069757-cffe4207.0":"2021-03-18T12:21:06.651Z","2.47.1-next-1616069789-ab5ea778.0":"2021-03-18T12:22:09.313Z","2.47.1-next-1616075386-898eb30a.0":"2021-03-18T13:54:51.743Z","2.47.1-next-1616075866-19bda89d.0":"2021-03-18T14:03:21.798Z","2.47.1-next-1616094204-720ebdaa.0":"2021-03-18T19:08:16.610Z","2.47.1-next-1616096371-67d963ea.0":"2021-03-18T19:45:42.479Z","2.47.1-next-1616097757-826115f5.0":"2021-03-18T20:08:04.899Z","2.47.1-next-1616097983-be28c9b7.0":"2021-03-18T20:12:35.476Z","2.47.1-next-1616099330-826115f5.0":"2021-03-18T20:35:04.991Z","2.47.1-next-1616101160-2bceadbb.0":"2021-03-18T21:04:55.833Z","2.47.1-next-1616106252-f3442a52.0":"2021-03-18T22:30:05.210Z","2.47.1-next-1616118775-2bceadbb.0":"2021-03-19T01:58:09.665Z","2.47.1-next-1616119482-ef906b13.0":"2021-03-19T02:09:53.724Z","2.47.1":"2021-03-19T03:02:46.211Z","2.47.2-next-1616122740-4c07c985.0":"2021-03-19T03:03:45.605Z","2.47.1-next-1616122745-cbf93019.0":"2021-03-19T03:05:10.221Z","2.47.3-next-1616123429-d4dee75d.0":"2021-03-19T03:16:26.249Z","2.47.3-next-1616125139-98c6cf5c.0":"2021-03-19T03:44:45.499Z","2.47.3-next-1616125747-fda2689f.0":"2021-03-19T03:54:08.961Z","2.47.2":"2021-03-19T04:04:22.929Z","2.47.3-next-1616155958-b913b614.0":"2021-03-19T12:19:33.073Z","2.47.3-next-1616157658-3797314d.0":"2021-03-19T12:46:18.078Z","2.47.3-next-1616158067-f080a7dc.0":"2021-03-19T12:54:09.592Z","2.48.1-next-1616159048-3eedb503.0":"2021-03-19T13:10:41.333Z","2.48.0":"2021-03-19T14:48:30.716Z","2.48.1-next-1616183581-7712eadb.0":"2021-03-19T19:59:35.930Z","2.48.1-next-1616184254-1f5c9227.0":"2021-03-19T20:10:44.545Z","2.48.1":"2021-03-19T20:52:29.105Z","2.48.1-next-1616186777-37a605e8.0":"2021-03-19T20:53:19.983Z","2.48.2-next-1616186902-fe84bb15.0":"2021-03-19T20:54:09.210Z","2.48.2-next-1616417535-15243a45.0":"2021-03-22T12:57:53.951Z","2.48.2-next-1616446742-921da2eb.0":"2021-03-22T21:05:19.022Z","2.48.2-next-1616447270-8042db79.0":"2021-03-22T21:14:21.039Z","2.48.2-next-1616447856-e63a95d7.0":"2021-03-22T21:24:09.354Z","2.48.2-next-1616499348-7a8e8470.0":"2021-03-23T11:41:59.998Z","2.48.2-next-1616499509-6c2abf82.0":"2021-03-23T11:45:14.782Z","2.48.2-next-1616499718-c9dd6c08.0":"2021-03-23T11:48:11.999Z","2.48.2-next-1616499724-e8b6336f.0":"2021-03-23T11:48:55.624Z","2.48.3-next-1616545702-117fc3b5.0":"2021-03-24T00:34:38.095Z","2.48.2":"2021-03-24T00:59:26.665Z","2.48.3-next-1616558303-577c3cb2.0":"2021-03-24T04:03:37.102Z","2.48.3-next-1616558335-7d1766d8.0":"2021-03-24T04:05:00.239Z","2.48.3-next-1616559231-e84cc609.0":"2021-03-24T04:19:51.558Z","2.48.3-next-1616559258-607bda4e.0":"2021-03-24T04:20:58.857Z","2.48.3-next-1616583490-09b87ec4.0":"2021-03-24T11:05:24.811Z","2.48.3-next-1616585208-09b87ec4.0":"2021-03-24T11:33:04.029Z","2.48.3-next-1616589791-1e0b0818.0":"2021-03-24T12:50:34.386Z","2.48.3-next-1616590481-cd8836e0.0":"2021-03-24T13:00:26.473Z","2.48.3-next-1616612286-c528b585.0":"2021-03-24T19:05:12.256Z","2.48.3-next-1616612830-cb2f0a52.0":"2021-03-24T19:13:06.443Z","2.48.3-next-1616674161-97579ce4.0":"2021-03-25T12:15:04.426Z","2.48.3-next-1616676832-d64b4818.0":"2021-03-25T13:00:18.779Z","2.48.3-next-1616682369-6a05080e.0":"2021-03-25T14:32:53.587Z","2.48.3-next-1616684911-faca1f4f.0":"2021-03-25T15:14:11.430Z","2.48.4-next-1616691063-820c9b56.0":"2021-03-25T16:57:00.020Z","2.48.3":"2021-03-25T17:30:35.546Z","2.48.4-next-1616701812-32e6bb55.0":"2021-03-25T19:56:17.847Z","2.48.5-next-1616703664-ab292fc3.0":"2021-03-25T20:26:46.092Z","2.48.4":"2021-03-25T20:28:25.990Z","2.48.5-next-1617068534-d4a6718e.0":"2021-03-30T01:48:34.598Z","2.48.5-next-1617105656-95482989.0":"2021-03-30T12:07:13.757Z","2.48.5-next-1617128819-585cdc01.0":"2021-03-30T18:32:50.142Z","2.48.5-next-1617129668-96c087ca.0":"2021-03-30T18:46:15.883Z","2.48.5-next-1617134589-443d3523.0":"2021-03-30T20:09:06.364Z","2.48.5-next-1617189233-8ff49114.0":"2021-03-31T11:20:07.460Z","2.48.5-next-1617190581-bbc7876a.0":"2021-03-31T11:42:48.318Z","2.48.5-next-1617191032-266592eb.0":"2021-03-31T11:49:47.743Z","2.48.5-next-1617192134-1a33ecd5.0":"2021-03-31T12:08:38.720Z","2.49.0":"2021-03-31T12:22:36.440Z","2.48.5-next-1617193056-40e3051a.0":"2021-03-31T12:23:57.212Z","2.49.1-next-1617193132-0596cd28.0":"2021-03-31T12:25:03.422Z","2.49.1-next-1617195749-017219f6.0":"2021-03-31T13:08:17.226Z","2.49.1-next-1617196474-ac6087eb.0":"2021-03-31T13:21:12.456Z","2.49.1-next-1617197145-0e16bea2.0":"2021-03-31T13:32:41.127Z","2.49.1-next-1617202781-e4cdc40b.0":"2021-03-31T15:04:57.614Z","2.49.2-next-1617203089-913471a0.0":"2021-03-31T15:11:53.227Z","2.49.2-next-1617204453-dac2f6ac.0":"2021-03-31T15:33:39.717Z","2.49.1":"2021-03-31T15:46:02.789Z","2.49.3-next-1617219745-6534da20.0":"2021-03-31T19:48:23.972Z","2.49.2":"2021-03-31T22:51:34.278Z","2.49.3-next-1617234085-699fabe6.0":"2021-03-31T23:48:19.297Z","2.49.3-next-1617236816-f232f058.0":"2021-04-01T00:33:29.510Z","2.49.3-next-1617243586-83fa4dea.0":"2021-04-01T02:25:55.050Z","2.49.3-next-1617247905-c35eb306.0":"2021-04-01T03:38:12.489Z","2.49.3-next-1617278888-99f744d8.0":"2021-04-01T12:13:35.852Z","2.49.3-next-1617283027-821b95af.0":"2021-04-01T13:23:00.868Z","2.49.3-next-1617288986-1639cce9.0":"2021-04-01T15:02:07.599Z","2.49.3-next-1617290912-197ef286.0":"2021-04-01T15:34:47.395Z","2.49.3-next-1617297771-1d444ca1.0":"2021-04-01T17:28:42.516Z","2.49.3-next-1617297959-1a5a5afa.0":"2021-04-01T17:32:36.402Z","2.49.3":"2021-04-01T18:45:49.633Z","2.49.3-next-1617302441-3d0d5e3b.0":"2021-04-01T18:46:50.598Z","2.49.4-next-1617302497-329f2fc1.0":"2021-04-01T18:47:15.309Z","2.49.4-next-1617351652-a7b8b78c.0":"2021-04-02T08:27:03.830Z","2.49.4-next-1617355356-a824b631.0":"2021-04-02T09:28:50.089Z","2.49.4":"2021-04-02T13:22:10.836Z","2.49.4-next-1617369446-7d53e914.0":"2021-04-02T13:23:06.636Z","2.49.5-next-1617369544-b8054af3.0":"2021-04-02T13:25:07.658Z","2.49.5-next-1617617643-6c94e122.0":"2021-04-05T10:18:54.532Z","2.49.5-next-1617620492-657ee70e.0":"2021-04-05T11:07:28.709Z","2.49.5-next-1617623437-b8054af3.0":"2021-04-05T11:57:07.190Z","2.49.5-next-1617705395-690a316f.0":"2021-04-06T10:42:15.792Z","2.49.5-next-1617735686-22d077f9.0":"2021-04-06T19:06:48.880Z","2.49.5-next-1617735676-8e406ba0.0":"2021-04-06T19:07:15.820Z","2.49.5-next-1617735716-3cb7f48a.0":"2021-04-06T19:07:51.378Z","2.49.5-next-1617735699-5ab49a9d.0":"2021-04-06T19:08:15.403Z","2.49.5-next-1617736046-da082c15.0":"2021-04-06T19:13:33.294Z","2.49.5-next-1617736092-da082c15.0":"2021-04-06T19:15:06.780Z","2.49.5-next-1617736156-673ca60e.0":"2021-04-06T19:15:58.341Z","2.49.5-next-1617761949-9676f0af.0":"2021-04-07T02:24:56.701Z","2.49.5-next-1617766588-cb4b75b6.0":"2021-04-07T03:42:16.835Z","2.49.5-next-1617766594-b9f01faf.0":"2021-04-07T03:42:33.509Z","2.49.5-next-1617766642-f8ab3680.0":"2021-04-07T03:44:16.051Z","2.49.5-next-1617776930-df6c0b0a.0":"2021-04-07T06:35:05.687Z","2.49.5-next-1617790600-6e8e03b8.0":"2021-04-07T10:22:17.112Z","2.49.5-next-1617795140-d7abad33.0":"2021-04-07T11:39:08.211Z","2.49.5-next-1617799221-0f914b7a.0":"2021-04-07T12:46:14.131Z","2.49.5-next-1617804986-0fafbe4f.0":"2021-04-07T14:21:40.008Z","2.50.0":"2021-04-07T14:49:38.491Z","2.49.5-next-1617806707-a59f59fb.0":"2021-04-07T14:52:08.393Z","2.50.1-next-1617806801-b9045c18.0":"2021-04-07T14:53:18.041Z","2.50.1-next-1617809320-5d4bc0d9.0":"2021-04-07T15:35:23.069Z","2.50.1-next-1617897231-14863e7a.0":"2021-04-08T15:59:43.864Z","2.50.1-next-1617897486-2d2fc9d2.0":"2021-04-08T16:04:58.803Z","2.50.1-next-1617903480-49805758.0":"2021-04-08T17:45:44.701Z","2.50.1-next-1617906973-2a48f35d.0":"2021-04-08T18:43:08.392Z","2.50.1-next-1617907979-ef368dd2.0":"2021-04-08T18:58:56.665Z","2.50.1-next-1617907995-bc8bea11.0":"2021-04-08T18:59:48.453Z","2.50.1-next-1617907981-ccefa852.0":"2021-04-08T19:00:12.867Z","2.50.1-next-1617908060-faf7f94b.0":"2021-04-08T19:01:14.513Z","2.50.1-next-1617911006-2a48f35d.0":"2021-04-08T19:49:23.141Z","2.50.1-next-1617938034-2a48f35d.0":"2021-04-09T03:20:22.856Z","2.50.1-next-1617939400-ce56b50c.0":"2021-04-09T03:42:16.314Z","2.50.1-next-1617939413-835ad4af.0":"2021-04-09T03:43:02.808Z","2.50.1-next-1617939428-2f7639c5.0":"2021-04-09T03:43:44.736Z","2.50.1-next-1617941549-9cfa5360.0":"2021-04-09T04:17:55.665Z","2.50.1-next-1617964359-8f212976.0":"2021-04-09T10:38:17.057Z","2.50.1-next-1617967120-f0831f07.0":"2021-04-09T11:25:39.716Z","2.50.1-next-1617968402-44ff8e48.0":"2021-04-09T11:46:34.084Z","2.50.1-next-1617970277-0d132c83.0":"2021-04-09T12:17:10.813Z","2.50.1-next-1617970409-c6a5e655.0":"2021-04-09T12:20:05.271Z","2.50.1-next-1617970460-93847529.0":"2021-04-09T12:21:16.117Z","2.50.1-next-1617970746-12d66235.0":"2021-04-09T12:25:24.126Z","2.50.1-next-1617972884-145374e6.0":"2021-04-09T13:00:27.972Z","2.50.1-next-1617978913-fecbffeb.0":"2021-04-09T14:41:58.845Z","2.51.1-next-1617981088-6c626f81.0":"2021-04-09T15:18:10.105Z","2.50.1-next-1617982261-954c308c.0":"2021-04-09T15:37:31.996Z","2.51.0":"2021-04-09T16:21:47.611Z","2.50.1-next-1617985606-33a80696.0":"2021-04-09T16:32:04.864Z","2.50.1-next-1617986021-3e6ad425.0":"2021-04-09T16:40:13.019Z","2.51.1-next-1617993256-842b76e1.0":"2021-04-09T18:40:22.783Z","2.51.1-next-1617993723-3597223b.0":"2021-04-09T18:48:16.170Z","2.51.1-next-1617995699-853d78cd.0":"2021-04-09T19:21:35.453Z","2.52.0":"2021-04-09T19:25:40.910Z","2.52.1-next-1618265595-d6fec356.0":"2021-04-12T22:19:24.759Z","2.52.2-next-1618318667-99b4b1e3.0":"2021-04-13T13:04:33.577Z","2.52.2-next-1618321097-c6e888b0.0":"2021-04-13T13:44:38.827Z","2.52.2-next-1618323417-454fc51c.0":"2021-04-13T14:23:16.578Z","2.52.2-next-1618325175-822bdc4b.0":"2021-04-13T14:51:29.089Z","2.52.1":"2021-04-13T18:52:35.024Z","2.52.2-next-1618850702-9d69cb4f.0":"2021-04-19T16:51:23.216Z","2.52.2-next-1619105866-24c93b60.0":"2021-04-22T15:43:32.577Z","2.53.1-next-1619106141-0d6fc28e.0":"2021-04-22T15:49:19.142Z","2.53.0":"2021-04-22T18:40:19.860Z","2.53.1-next-1619464206-faf15ae3.0":"2021-04-26T19:16:38.238Z","2.53.1-next-1619540720-3d071adc.0":"2021-04-27T16:31:54.397Z","2.53.1-next-1619542274-3d071adc.0":"2021-04-27T16:57:16.154Z","2.53.1-next-1619542806-88e8b9e7.0":"2021-04-27T17:06:28.291Z","2.53.1-next-1619542820-88e8b9e7.0":"2021-04-27T17:06:52.859Z","2.53.1-next-1619617676-4c97bfbe.0":"2021-04-28T13:54:15.602Z","2.53.1-next-1619623418-f6d00416.0":"2021-04-28T15:30:04.568Z","2.53.2-next-1619623598-3c4e1679.0":"2021-04-28T15:33:12.495Z","2.53.2-next-1619624498-dae4ff11.0":"2021-04-28T15:48:17.892Z","2.53.1":"2021-04-28T15:49:42.084Z","2.53.2-next-1619705672-24a3a19a.0":"2021-04-29T14:20:58.551Z","2.53.2-next-1620132361-2fba7526.0":"2021-05-04T12:52:42.758Z","2.53.2-next-1620855510-f3286a4f.0":"2021-05-12T21:45:30.474Z","2.53.2-next-1621351277-d5810a41.0":"2021-05-18T15:28:32.254Z","2.53.2-next-1621351811-799dd11c.0":"2021-05-18T15:36:20.280Z","2.53.2-next-1621354332-7167b821.0":"2021-05-18T16:18:38.363Z","2.53.2-next-1621354385-bd6852c3.0":"2021-05-18T16:19:10.507Z","2.53.2-next-1621355238-dbfeccb2.0":"2021-05-18T16:32:52.402Z","2.53.3-next-1621357960-a977e461.0":"2021-05-18T17:19:15.277Z","2.53.2":"2021-05-18T17:21:47.372Z","2.53.3-next-1622643955-ef88dadf.0":"2021-06-02T14:32:56.160Z","2.53.3-next-1622645710-3100daaa.0":"2021-06-02T15:01:05.343Z","2.53.4-next-1622645785-8c316968.0":"2021-06-02T15:01:55.212Z","2.53.3":"2021-06-02T15:13:47.596Z","2.53.5-next-1640891080-513b105dc.0":"2021-12-30T19:10:46.517Z","2.53.4":"2022-01-01T18:14:01.360Z","2.53.5-next-1641060563-3bc9c3b88.0":"2022-01-01T18:14:48.420Z","2.53.5-next-1641201434-873aac607.0":"2022-01-03T09:24:16.721Z","2.53.5-next-1641201537-c1cdb4568.0":"2022-01-03T09:25:05.309Z","2.53.5-next-1641210071-2f979ef07.0":"2022-01-03T11:47:46.594Z","2.53.5-next-1641219106-ff2936ac0.0":"2022-01-03T14:19:12.642Z","2.53.5":"2022-01-05T16:02:46.295Z","2.53.6-next-1641398325-01bf686c4.0":"2022-01-05T16:04:18.103Z","2.53.6-next-1641892929-f436f56da.0":"2022-01-11T09:28:07.357Z","2.53.7-next-1641893132-22be18a83.0":"2022-01-11T09:32:05.338Z","2.53.6":"2022-01-11T10:10:22.731Z","2.53.7-next-1641895574-4891585a6.0":"2022-01-11T10:12:25.904Z","2.53.6-next-1641895591-f1d5f1649.0":"2022-01-11T10:13:02.679Z"},"maintainers":[{"name":"moovweb-admin","email":"ops@moovweb.com"}],"description":"Enables prefetching and caching of pages using the Moovweb XDN and Workbox.","keywords":[],"author":{"name":"Moovweb"},"license":"Apache-2.0","readme":"","readmeFilename":""}